; LLVM IR from modlfo/AudioEngine :: AudioEngine/JuceLibraryCode (juce_audio_basics)

; 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.juce::GenericScopedLock.26" = type { ptr }
%"struct.juce::AudioSourceChannelInfo" = type { ptr, i32, i32 }
%"class.juce::ResamplingAudioSource" = type { %"class.juce::AudioSource", %"class.juce::OptionalScopedPointer.85", double, double, %"class.juce::AudioBuffer", i32, i32, double, [6 x double], %"class.juce::SpinLock", i32, %"class.juce::HeapBlock.106", %"class.juce::HeapBlock.107", %"class.juce::HeapBlock.108" }
%"class.juce::AudioSource" = type { ptr }
%"class.juce::OptionalScopedPointer.85" = type <{ %"class.juce::ScopedPointer.86", i8, [7 x i8] }>
%"class.juce::ScopedPointer.86" = type { ptr }
%"class.juce::AudioBuffer" = type <{ i32, i32, i64, ptr, %"class.juce::HeapBlock.0", [32 x ptr], i8, [7 x i8] }>
%"class.juce::HeapBlock.0" = type { ptr }
%"class.juce::SpinLock" = type { %"class.juce::Atomic" }
%"class.juce::Atomic" = type { i32, [4 x i8] }
%"class.juce::HeapBlock.106" = type { ptr }
%"class.juce::HeapBlock.107" = type { ptr }
%"class.juce::HeapBlock.108" = type { ptr }
%"struct.juce::ResamplingAudioSource::FilterState" = type { double, double, double, double }

; 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 noundef i32 @_ZNK4juce11AudioBufferIfE14getNumChannelsEv(ptr noundef nonnull align 8 dereferenceable(289)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4juce10roundToIntIdEEiT_(double noundef) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4juce4jminIiEET_S1_S1_(i32 noundef, i32 noundef) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4juce11AudioBufferIfE7setSizeEiibbb(ptr noundef nonnull align 8 dereferenceable(289), i32 noundef, i32 noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4juce21ResamplingAudioSource13createLowPassEd(ptr noundef nonnull align 8 dereferenceable(440), double noundef) #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4juce21ResamplingAudioSource17getNextAudioBlockERKNS_22AudioSourceChannelInfoE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(16) %1) unnamed_addr #4 align 2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca double, align 8
  %6 = alloca %"class.juce::GenericScopedLock.26", align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"struct.juce::AudioSourceChannelInfo", align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca float, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %24 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  %25 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 9
  call void @_ZN4juce17GenericScopedLockINS_8SpinLockEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %25) #5
  %26 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 2
  %27 = load double, ptr %26, align 8, !tbaa !9
  store double %27, ptr %5, align 8, !tbaa !25
  call void @_ZN4juce17GenericScopedLockINS_8SpinLockEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  %28 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 3
  %29 = load double, ptr %28, align 8, !tbaa !26
  %30 = load double, ptr %5, align 8, !tbaa !25
  %31 = fcmp une double %29, %30
  br i1 %31, label %32, label %36

32:                                               ; preds = %2
  %33 = load double, ptr %5, align 8, !tbaa !25
  call void @_ZN4juce21ResamplingAudioSource13createLowPassEd(ptr noundef nonnull align 8 dereferenceable(440) %24, double noundef %33)
  %34 = load double, ptr %5, align 8, !tbaa !25
  %35 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 3
  store double %34, ptr %35, align 8, !tbaa !26
  br label %36

36:                                               ; preds = %32, %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %37, i32 0, i32 2
  %39 = load i32, ptr %38, align 4, !tbaa !27
  %40 = sitofp i32 %39 to double
  %41 = load double, ptr %5, align 8, !tbaa !25
  %42 = fmul double %40, %41
  %43 = call noundef i32 @_ZN4juce10roundToIntIdEEiT_(double noundef %42) #5
  %44 = add nsw i32 %43, 3
  store i32 %44, ptr %7, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  %45 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 4
  %46 = call noundef i32 @_ZNK4juce11AudioBufferIfE13getNumSamplesEv(ptr noundef nonnull align 8 dereferenceable(289) %45) #5
  store i32 %46, ptr %8, align 4, !tbaa !29
  %47 = load i32, ptr %8, align 4, !tbaa !29
  %48 = load i32, ptr %7, align 4, !tbaa !29
  %49 = add nsw i32 %48, 8
  %50 = icmp slt i32 %47, %49
  br i1 %50, label %51, label %62

51:                                               ; preds = %36
  %52 = load i32, ptr %8, align 4, !tbaa !29
  %53 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  %54 = load i32, ptr %53, align 8, !tbaa !30
  %55 = srem i32 %54, %52
  store i32 %55, ptr %53, align 8, !tbaa !30
  %56 = load i32, ptr %7, align 4, !tbaa !29
  %57 = add nsw i32 %56, 32
  store i32 %57, ptr %8, align 4, !tbaa !29
  %58 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 4
  %59 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 4
  %60 = call noundef i32 @_ZNK4juce11AudioBufferIfE14getNumChannelsEv(ptr noundef nonnull align 8 dereferenceable(289) %59) #5
  %61 = load i32, ptr %8, align 4, !tbaa !29
  call void @_ZN4juce11AudioBufferIfE7setSizeEiibbb(ptr noundef nonnull align 8 dereferenceable(289) %58, i32 noundef %60, i32 noundef %61, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext false) #5
  br label %62

62:                                               ; preds = %51, %36
  %63 = load i32, ptr %8, align 4, !tbaa !29
  %64 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  %65 = load i32, ptr %64, align 8, !tbaa !30
  %66 = srem i32 %65, %63
  store i32 %66, ptr %64, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %67 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  %68 = load i32, ptr %67, align 8, !tbaa !30
  %69 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 6
  %70 = load i32, ptr %69, align 4, !tbaa !31
  %71 = add nsw i32 %68, %70
  store i32 %71, ptr %9, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %72 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 10
  %73 = load i32, ptr %72, align 8, !tbaa !32
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %74, i32 0, i32 0
  %76 = load ptr, ptr %75, align 8, !tbaa !33
  %77 = call noundef i32 @_ZNK4juce11AudioBufferIfE14getNumChannelsEv(ptr noundef nonnull align 8 dereferenceable(289) %76) #5
  %78 = call noundef i32 @_ZN4juce4jminIiEET_S1_S1_(i32 noundef %73, i32 noundef %77)
  store i32 %78, ptr %10, align 4, !tbaa !29
  br label %79

79:                                               ; preds = %123, %62
  %80 = load i32, ptr %7, align 4, !tbaa !29
  %81 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 6
  %82 = load i32, ptr %81, align 4, !tbaa !31
  %83 = icmp sgt i32 %80, %82
  br i1 %83, label %84, label %131

84:                                               ; preds = %79
  %85 = load i32, ptr %8, align 4, !tbaa !29
  %86 = load i32, ptr %9, align 4, !tbaa !29
  %87 = srem i32 %86, %85
  store i32 %87, ptr %9, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %88 = load i32, ptr %7, align 4, !tbaa !29
  %89 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 6
  %90 = load i32, ptr %89, align 4, !tbaa !31
  %91 = sub nsw i32 %88, %90
  %92 = load i32, ptr %8, align 4, !tbaa !29
  %93 = load i32, ptr %9, align 4, !tbaa !29
  %94 = sub nsw i32 %92, %93
  %95 = call noundef i32 @_ZN4juce4jminIiEET_S1_S1_(i32 noundef %91, i32 noundef %94)
  store i32 %95, ptr %11, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #5
  %96 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 4
  %97 = load i32, ptr %9, align 4, !tbaa !29
  %98 = load i32, ptr %11, align 4, !tbaa !29
  call void @_ZN4juce22AudioSourceChannelInfoC2EPNS_11AudioBufferIfEEii(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef %96, i32 noundef %97, i32 noundef %98) #5
  %99 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 1
  %100 = call noundef ptr @_ZNK4juce21OptionalScopedPointerINS_11AudioSourceEEptEv(ptr noundef nonnull align 8 dereferenceable(9) %99) #5
  %101 = load ptr, ptr %100, align 8, !tbaa !34
  %102 = getelementptr inbounds ptr, ptr %101, i64 4
  %103 = load ptr, ptr %102, align 8
  call void %103(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(16) %12)
  %104 = load double, ptr %5, align 8, !tbaa !25
  %105 = fcmp ogt double %104, 1.000100e+00
  br i1 %105, label %106, label %123

106:                                              ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %107 = load i32, ptr %10, align 4, !tbaa !29
  store i32 %107, ptr %13, align 4, !tbaa !29
  br label %108

108:                                              ; preds = %113, %106
  %109 = load i32, ptr %13, align 4, !tbaa !29
  %110 = add nsw i32 %109, -1
  store i32 %110, ptr %13, align 4, !tbaa !29
  %111 = icmp sge i32 %110, 0
  br i1 %111, label %113, label %112

112:                                              ; preds = %108
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %122

113:                                              ; preds = %108
  %114 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 4
  %115 = load i32, ptr %13, align 4, !tbaa !29
  %116 = load i32, ptr %9, align 4, !tbaa !29
  %117 = call noundef ptr @_ZN4juce11AudioBufferIfE15getWritePointerEii(ptr noundef nonnull align 8 dereferenceable(289) %114, i32 noundef %115, i32 noundef %116) #5
  %118 = load i32, ptr %11, align 4, !tbaa !29
  %119 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 13
  %120 = load i32, ptr %13, align 4, !tbaa !29
  %121 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4juce9HeapBlockINS_21ResamplingAudioSource11FilterStateELb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %119, i32 noundef %120) #5
  call void @_ZN4juce21ResamplingAudioSource11applyFilterEPfiRNS0_11FilterStateE(ptr noundef nonnull align 8 dereferenceable(440) %24, ptr noundef %117, i32 noundef %118, ptr noundef nonnull align 8 dereferenceable(32) %121)
  br label %108, !llvm.loop !36

122:                                              ; preds = %112
  br label %123

123:                                              ; preds = %122, %84
  %124 = load i32, ptr %11, align 4, !tbaa !29
  %125 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 6
  %126 = load i32, ptr %125, align 4, !tbaa !31
  %127 = add nsw i32 %126, %124
  store i32 %127, ptr %125, align 4, !tbaa !31
  %128 = load i32, ptr %11, align 4, !tbaa !29
  %129 = load i32, ptr %9, align 4, !tbaa !29
  %130 = add nsw i32 %129, %128
  store i32 %130, ptr %9, align 4, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %79, !llvm.loop !38

131:                                              ; preds = %79
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  store i32 0, ptr %14, align 4, !tbaa !29
  br label %132

132:                                              ; preds = %155, %131
  %133 = load i32, ptr %14, align 4, !tbaa !29
  %134 = load i32, ptr %10, align 4, !tbaa !29
  %135 = icmp slt i32 %133, %134
  br i1 %135, label %137, label %136

136:                                              ; preds = %132
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %158

137:                                              ; preds = %132
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %138, i32 0, i32 0
  %140 = load ptr, ptr %139, align 8, !tbaa !33
  %141 = load i32, ptr %14, align 4, !tbaa !29
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %142, i32 0, i32 1
  %144 = load i32, ptr %143, align 8, !tbaa !39
  %145 = call noundef ptr @_ZN4juce11AudioBufferIfE15getWritePointerEii(ptr noundef nonnull align 8 dereferenceable(289) %140, i32 noundef %141, i32 noundef %144) #5
  %146 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 11
  %147 = load i32, ptr %14, align 4, !tbaa !29
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPfLb0EEixIiEERS1_T_(ptr noundef nonnull align 8 dereferenceable(8) %146, i32 noundef %147) #5
  store ptr %145, ptr %148, align 8, !tbaa !5
  %149 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 4
  %150 = load i32, ptr %14, align 4, !tbaa !29
  %151 = call noundef ptr @_ZNK4juce11AudioBufferIfE14getReadPointerEi(ptr noundef nonnull align 8 dereferenceable(289) %149, i32 noundef %150) #5
  %152 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 12
  %153 = load i32, ptr %14, align 4, !tbaa !29
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPKfLb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %152, i32 noundef %153) #5
  store ptr %151, ptr %154, align 8, !tbaa !5
  br label %155

155:                                              ; preds = %137
  %156 = load i32, ptr %14, align 4, !tbaa !29
  %157 = add nsw i32 %156, 1
  store i32 %157, ptr %14, align 4, !tbaa !29
  br label %132, !llvm.loop !40

158:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %159 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  %160 = load i32, ptr %159, align 8, !tbaa !30
  %161 = add nsw i32 %160, 1
  %162 = load i32, ptr %8, align 4, !tbaa !29
  %163 = srem i32 %161, %162
  store i32 %163, ptr %15, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %164, i32 0, i32 2
  %166 = load i32, ptr %165, align 4, !tbaa !27
  store i32 %166, ptr %16, align 4, !tbaa !29
  br label %167

167:                                              ; preds = %251, %158
  %168 = load i32, ptr %16, align 4, !tbaa !29
  %169 = add nsw i32 %168, -1
  store i32 %169, ptr %16, align 4, !tbaa !29
  %170 = icmp sge i32 %169, 0
  br i1 %170, label %172, label %171

171:                                              ; preds = %167
  store i32 9, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %252

172:                                              ; preds = %167
  br label %173

173:                                              ; preds = %172
  br label %174

174:                                              ; preds = %173
  br label %175

175:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %176 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 7
  %177 = load double, ptr %176, align 8, !tbaa !41
  %178 = fptrunc double %177 to float
  store float %178, ptr %18, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  store i32 0, ptr %19, align 4, !tbaa !29
  br label %179

179:                                              ; preds = %219, %175
  %180 = load i32, ptr %19, align 4, !tbaa !29
  %181 = load i32, ptr %10, align 4, !tbaa !29
  %182 = icmp slt i32 %180, %181
  br i1 %182, label %184, label %183

183:                                              ; preds = %179
  store i32 13, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %222

184:                                              ; preds = %179
  %185 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 12
  %186 = load i32, ptr %19, align 4, !tbaa !29
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPKfLb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %185, i32 noundef %186) #5
  %188 = load ptr, ptr %187, align 8, !tbaa !5
  %189 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  %190 = load i32, ptr %189, align 8, !tbaa !30
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds float, ptr %188, i64 %191
  %193 = load float, ptr %192, align 4, !tbaa !42
  %194 = load float, ptr %18, align 4, !tbaa !42
  %195 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 12
  %196 = load i32, ptr %19, align 4, !tbaa !29
  %197 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPKfLb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %195, i32 noundef %196) #5
  %198 = load ptr, ptr %197, align 8, !tbaa !5
  %199 = load i32, ptr %15, align 4, !tbaa !29
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds float, ptr %198, i64 %200
  %202 = load float, ptr %201, align 4, !tbaa !42
  %203 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 12
  %204 = load i32, ptr %19, align 4, !tbaa !29
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPKfLb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %203, i32 noundef %204) #5
  %206 = load ptr, ptr %205, align 8, !tbaa !5
  %207 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  %208 = load i32, ptr %207, align 8, !tbaa !30
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds float, ptr %206, i64 %209
  %211 = load float, ptr %210, align 4, !tbaa !42
  %212 = fsub float %202, %211
  %213 = call float @llvm.fmuladd.f32(float %194, float %212, float %193)
  %214 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 11
  %215 = load i32, ptr %19, align 4, !tbaa !29
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPfLb0EEixIiEERS1_T_(ptr noundef nonnull align 8 dereferenceable(8) %214, i32 noundef %215) #5
  %217 = load ptr, ptr %216, align 8, !tbaa !5
  %218 = getelementptr inbounds float, ptr %217, i32 1
  store ptr %218, ptr %216, align 8, !tbaa !5
  store float %213, ptr %217, align 4, !tbaa !42
  br label %219

219:                                              ; preds = %184
  %220 = load i32, ptr %19, align 4, !tbaa !29
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr %19, align 4, !tbaa !29
  br label %179, !llvm.loop !44

222:                                              ; preds = %183
  %223 = load double, ptr %5, align 8, !tbaa !25
  %224 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 7
  %225 = load double, ptr %224, align 8, !tbaa !41
  %226 = fadd double %225, %223
  store double %226, ptr %224, align 8, !tbaa !41
  br label %227

227:                                              ; preds = %239, %222
  %228 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 7
  %229 = load double, ptr %228, align 8, !tbaa !41
  %230 = fcmp oge double %229, 1.000000e+00
  br i1 %230, label %231, label %251

231:                                              ; preds = %227
  %232 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  %233 = load i32, ptr %232, align 8, !tbaa !30
  %234 = add nsw i32 %233, 1
  store i32 %234, ptr %232, align 8, !tbaa !30
  %235 = load i32, ptr %8, align 4, !tbaa !29
  %236 = icmp sge i32 %234, %235
  br i1 %236, label %237, label %239

237:                                              ; preds = %231
  %238 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  store i32 0, ptr %238, align 8, !tbaa !30
  br label %239

239:                                              ; preds = %237, %231
  %240 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 6
  %241 = load i32, ptr %240, align 4, !tbaa !31
  %242 = add nsw i32 %241, -1
  store i32 %242, ptr %240, align 4, !tbaa !31
  %243 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 5
  %244 = load i32, ptr %243, align 8, !tbaa !30
  %245 = add nsw i32 %244, 1
  %246 = load i32, ptr %8, align 4, !tbaa !29
  %247 = srem i32 %245, %246
  store i32 %247, ptr %15, align 4, !tbaa !29
  %248 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 7
  %249 = load double, ptr %248, align 8, !tbaa !41
  %250 = fsub double %249, 1.000000e+00
  store double %250, ptr %248, align 8, !tbaa !41
  br label %227, !llvm.loop !45

251:                                              ; preds = %227
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %167, !llvm.loop !46

252:                                              ; preds = %171
  %253 = load double, ptr %5, align 8, !tbaa !25
  %254 = fcmp olt double %253, 9.999000e-01
  br i1 %254, label %255, label %278

255:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %256 = load i32, ptr %10, align 4, !tbaa !29
  store i32 %256, ptr %20, align 4, !tbaa !29
  br label %257

257:                                              ; preds = %262, %255
  %258 = load i32, ptr %20, align 4, !tbaa !29
  %259 = add nsw i32 %258, -1
  store i32 %259, ptr %20, align 4, !tbaa !29
  %260 = icmp sge i32 %259, 0
  br i1 %260, label %262, label %261

261:                                              ; preds = %257
  store i32 18, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  br label %277

262:                                              ; preds = %257
  %263 = load ptr, ptr %4, align 8, !tbaa !5
  %264 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %263, i32 0, i32 0
  %265 = load ptr, ptr %264, align 8, !tbaa !33
  %266 = load i32, ptr %20, align 4, !tbaa !29
  %267 = load ptr, ptr %4, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %267, i32 0, i32 1
  %269 = load i32, ptr %268, align 8, !tbaa !39
  %270 = call noundef ptr @_ZN4juce11AudioBufferIfE15getWritePointerEii(ptr noundef nonnull align 8 dereferenceable(289) %265, i32 noundef %266, i32 noundef %269) #5
  %271 = load ptr, ptr %4, align 8, !tbaa !5
  %272 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %271, i32 0, i32 2
  %273 = load i32, ptr %272, align 4, !tbaa !27
  %274 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 13
  %275 = load i32, ptr %20, align 4, !tbaa !29
  %276 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4juce9HeapBlockINS_21ResamplingAudioSource11FilterStateELb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %274, i32 noundef %275) #5
  call void @_ZN4juce21ResamplingAudioSource11applyFilterEPfiRNS0_11FilterStateE(ptr noundef nonnull align 8 dereferenceable(440) %24, ptr noundef %270, i32 noundef %273, ptr noundef nonnull align 8 dereferenceable(32) %276)
  br label %257, !llvm.loop !47

277:                                              ; preds = %261
  br label %344

278:                                              ; preds = %252
  %279 = load double, ptr %5, align 8, !tbaa !25
  %280 = fcmp ole double %279, 1.000100e+00
  br i1 %280, label %281, label %343

281:                                              ; preds = %278
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %282, i32 0, i32 2
  %284 = load i32, ptr %283, align 4, !tbaa !27
  %285 = icmp sgt i32 %284, 0
  br i1 %285, label %286, label %343

286:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %287 = load i32, ptr %10, align 4, !tbaa !29
  store i32 %287, ptr %21, align 4, !tbaa !29
  br label %288

288:                                              ; preds = %334, %286
  %289 = load i32, ptr %21, align 4, !tbaa !29
  %290 = add nsw i32 %289, -1
  store i32 %290, ptr %21, align 4, !tbaa !29
  %291 = icmp sge i32 %290, 0
  br i1 %291, label %293, label %292

292:                                              ; preds = %288
  store i32 20, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  br label %342

293:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %294, i32 0, i32 0
  %296 = load ptr, ptr %295, align 8, !tbaa !33
  %297 = load i32, ptr %21, align 4, !tbaa !29
  %298 = load ptr, ptr %4, align 8, !tbaa !5
  %299 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %298, i32 0, i32 1
  %300 = load i32, ptr %299, align 8, !tbaa !39
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %301, i32 0, i32 2
  %303 = load i32, ptr %302, align 4, !tbaa !27
  %304 = add nsw i32 %300, %303
  %305 = sub nsw i32 %304, 1
  %306 = call noundef ptr @_ZNK4juce11AudioBufferIfE14getReadPointerEii(ptr noundef nonnull align 8 dereferenceable(289) %296, i32 noundef %297, i32 noundef %305) #5
  store ptr %306, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %307 = getelementptr inbounds %"class.juce::ResamplingAudioSource", ptr %24, i32 0, i32 13
  %308 = load i32, ptr %21, align 4, !tbaa !29
  %309 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4juce9HeapBlockINS_21ResamplingAudioSource11FilterStateELb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %307, i32 noundef %308) #5
  store ptr %309, ptr %23, align 8, !tbaa !5
  %310 = load ptr, ptr %4, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.juce::AudioSourceChannelInfo", ptr %310, i32 0, i32 2
  %312 = load i32, ptr %311, align 4, !tbaa !27
  %313 = icmp sgt i32 %312, 1
  br i1 %313, label %314, label %323

314:                                              ; preds = %293
  %315 = load ptr, ptr %22, align 8, !tbaa !5
  %316 = getelementptr inbounds float, ptr %315, i64 -1
  %317 = load float, ptr %316, align 4, !tbaa !42
  %318 = fpext float %317 to double
  %319 = load ptr, ptr %23, align 8, !tbaa !5
  %320 = getelementptr inbounds %"struct.juce::ResamplingAudioSource::FilterState", ptr %319, i32 0, i32 1
  store double %318, ptr %320, align 8, !tbaa !48
  %321 = load ptr, ptr %23, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.juce::ResamplingAudioSource::FilterState", ptr %321, i32 0, i32 3
  store double %318, ptr %322, align 8, !tbaa !50
  br label %334

323:                                              ; preds = %293
  %324 = load ptr, ptr %23, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.juce::ResamplingAudioSource::FilterState", ptr %324, i32 0, i32 2
  %326 = load double, ptr %325, align 8, !tbaa !51
  %327 = load ptr, ptr %23, align 8, !tbaa !5
  %328 = getelementptr inbounds %"struct.juce::ResamplingAudioSource::FilterState", ptr %327, i32 0, i32 3
  store double %326, ptr %328, align 8, !tbaa !50
  %329 = load ptr, ptr %23, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.juce::ResamplingAudioSource::FilterState", ptr %329, i32 0, i32 0
  %331 = load double, ptr %330, align 8, !tbaa !52
  %332 = load ptr, ptr %23, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.juce::ResamplingAudioSource::FilterState", ptr %332, i32 0, i32 1
  store double %331, ptr %333, align 8, !tbaa !48
  br label %334

334:                                              ; preds = %323, %314
  %335 = load ptr, ptr %22, align 8, !tbaa !5
  %336 = load float, ptr %335, align 4, !tbaa !42
  %337 = fpext float %336 to double
  %338 = load ptr, ptr %23, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.juce::ResamplingAudioSource::FilterState", ptr %338, i32 0, i32 0
  store double %337, ptr %339, align 8, !tbaa !52
  %340 = load ptr, ptr %23, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.juce::ResamplingAudioSource::FilterState", ptr %340, i32 0, i32 2
  store double %337, ptr %341, align 8, !tbaa !51
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  br label %288, !llvm.loop !53

342:                                              ; preds = %292
  br label %343

343:                                              ; preds = %342, %281, %278
  br label %344

344:                                              ; preds = %343, %277
  br label %345

345:                                              ; preds = %344
  br label %346

346:                                              ; preds = %345
  br label %347

347:                                              ; preds = %346
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4juce21ResamplingAudioSource11applyFilterEPfiRNS0_11FilterStateE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK4juce11AudioBufferIfE14getReadPointerEii(ptr noundef nonnull align 8 dereferenceable(289), i32 noundef, i32 noundef) #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !15, i64 24}
!10 = !{!"_ZTSN4juce21ResamplingAudioSourceE", !11, i64 0, !12, i64 8, !15, i64 24, !15, i64 32, !16, i64 40, !17, i64 336, !17, i64 340, !15, i64 344, !7, i64 352, !20, i64 400, !17, i64 408, !22, i64 416, !23, i64 424, !24, i64 432}
!11 = !{!"_ZTSN4juce11AudioSourceE"}
!12 = !{!"_ZTSN4juce21OptionalScopedPointerINS_11AudioSourceEEE", !13, i64 0, !14, i64 8}
!13 = !{!"_ZTSN4juce13ScopedPointerINS_11AudioSourceEEE", !6, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = !{!"_ZTSN4juce11AudioBufferIfEE", !17, i64 0, !17, i64 4, !18, i64 8, !6, i64 16, !19, i64 24, !7, i64 32, !14, i64 288}
!17 = !{!"int", !7, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTSN4juce9HeapBlockIcLb1EEE", !6, i64 0}
!20 = !{!"_ZTSN4juce8SpinLockE", !21, i64 0}
!21 = !{!"_ZTSN4juce6AtomicIiEE", !17, i64 0}
!22 = !{!"_ZTSN4juce9HeapBlockIPfLb0EEE", !6, i64 0}
!23 = !{!"_ZTSN4juce9HeapBlockIPKfLb0EEE", !6, i64 0}
!24 = !{!"_ZTSN4juce9HeapBlockINS_21ResamplingAudioSource11FilterStateELb0EEE", !6, i64 0}
!25 = !{!15, !15, i64 0}
!26 = !{!10, !15, i64 32}
!27 = !{!28, !17, i64 12}
!28 = !{!"_ZTSN4juce22AudioSourceChannelInfoE", !6, i64 0, !17, i64 8, !17, i64 12}
!29 = !{!17, !17, i64 0}
!30 = !{!10, !17, i64 336}
!31 = !{!10, !17, i64 340}
!32 = !{!10, !17, i64 408}
!33 = !{!28, !6, i64 0}
!34 = !{!35, !35, i64 0}
!35 = !{!"vtable pointer", !8, i64 0}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = distinct !{!38, !37}
!39 = !{!28, !17, i64 8}
!40 = distinct !{!40, !37}
!41 = !{!10, !15, i64 344}
!42 = !{!43, !43, i64 0}
!43 = !{!"float", !7, i64 0}
!44 = distinct !{!44, !37}
!45 = distinct !{!45, !37}
!46 = distinct !{!46, !37}
!47 = distinct !{!47, !37}
!48 = !{!49, !15, i64 8}
!49 = !{!"_ZTSN4juce21ResamplingAudioSource11FilterStateE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!50 = !{!49, !15, i64 24}
!51 = !{!49, !15, i64 16}
!52 = !{!49, !15, i64 0}
!53 = distinct !{!53, !37}


; 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.juce::GenericScopedLock.26" = type { ptr }
%"struct.juce::AudioSourceChannelInfo" = type { ptr, i32, i32 }

; 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 noundef i32 @_ZNK4juce11AudioBufferIfE14getNumChannelsEv(ptr noundef nonnull align 8 dereferenceable(289)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4juce10roundToIntIdEEiT_(double noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN4juce4jminIiEET_S1_S1_(i32 noundef, i32 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4juce11AudioBufferIfE7setSizeEiibbb(ptr noundef nonnull align 8 dereferenceable(289), i32 noundef, i32 noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4juce21ResamplingAudioSource13createLowPassEd(ptr noundef nonnull align 8 dereferenceable(440), double noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4juce21ResamplingAudioSource17getNextAudioBlockERKNS_22AudioSourceChannelInfoE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr nocapture noundef nonnull readonly align 8 dereferenceable(16) %1) unnamed_addr #4 align 2 {
  %3 = alloca %"class.juce::GenericScopedLock.26", align 8
  %4 = alloca %"struct.juce::AudioSourceChannelInfo", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #5
  %5 = getelementptr inbounds i8, ptr %0, i64 400
  call void @_ZN4juce17GenericScopedLockINS_8SpinLockEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %5) #5
  %6 = getelementptr inbounds i8, ptr %0, i64 24
  %7 = load double, ptr %6, align 8, !tbaa !5
  call void @_ZN4juce17GenericScopedLockINS_8SpinLockEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #5
  %8 = getelementptr inbounds i8, ptr %0, i64 32
  %9 = load double, ptr %8, align 8, !tbaa !24
  %10 = fcmp une double %9, %7
  br i1 %10, label %11, label %12

11:                                               ; preds = %2
  call void @_ZN4juce21ResamplingAudioSource13createLowPassEd(ptr noundef nonnull align 8 dereferenceable(440) %0, double noundef %7)
  store double %7, ptr %8, align 8, !tbaa !24
  br label %12

12:                                               ; preds = %11, %2
  %13 = getelementptr inbounds i8, ptr %1, i64 12
  %14 = load i32, ptr %13, align 4, !tbaa !25
  %15 = sitofp i32 %14 to double
  %16 = fmul double %7, %15
  %17 = call noundef i32 @_ZN4juce10roundToIntIdEEiT_(double noundef %16) #5
  %18 = add nsw i32 %17, 3
  %19 = getelementptr inbounds i8, ptr %0, i64 40
  %20 = call noundef i32 @_ZNK4juce11AudioBufferIfE13getNumSamplesEv(ptr noundef nonnull align 8 dereferenceable(289) %19) #5
  %21 = add nsw i32 %17, 11
  %22 = icmp slt i32 %20, %21
  br i1 %22, label %23, label %29

23:                                               ; preds = %12
  %24 = getelementptr inbounds i8, ptr %0, i64 336
  %25 = load i32, ptr %24, align 8, !tbaa !27
  %26 = srem i32 %25, %20
  store i32 %26, ptr %24, align 8, !tbaa !27
  %27 = add nsw i32 %17, 35
  %28 = call noundef i32 @_ZNK4juce11AudioBufferIfE14getNumChannelsEv(ptr noundef nonnull align 8 dereferenceable(289) %19) #5
  call void @_ZN4juce11AudioBufferIfE7setSizeEiibbb(ptr noundef nonnull align 8 dereferenceable(289) %19, i32 noundef %28, i32 noundef %27, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext false) #5
  br label %29

29:                                               ; preds = %23, %12
  %.0 = phi i32 [ %27, %23 ], [ %20, %12 ]
  %30 = getelementptr inbounds i8, ptr %0, i64 336
  %31 = load i32, ptr %30, align 8, !tbaa !27
  %32 = srem i32 %31, %.0
  store i32 %32, ptr %30, align 8, !tbaa !27
  %33 = getelementptr inbounds i8, ptr %0, i64 340
  %34 = load i32, ptr %33, align 4, !tbaa !28
  %35 = getelementptr inbounds i8, ptr %0, i64 408
  %36 = load i32, ptr %35, align 8, !tbaa !29
  %37 = load ptr, ptr %1, align 8, !tbaa !30
  %38 = call noundef i32 @_ZNK4juce11AudioBufferIfE14getNumChannelsEv(ptr noundef nonnull align 8 dereferenceable(289) %37) #5
  %39 = call noundef i32 @_ZN4juce4jminIiEET_S1_S1_(i32 noundef %36, i32 noundef %38)
  %40 = load i32, ptr %33, align 4, !tbaa !28
  %41 = icmp sgt i32 %18, %40
  br i1 %41, label %.lr.ph111, label %.preheader106

.lr.ph111:                                        ; preds = %29
  %42 = add nsw i32 %34, %32
  %43 = getelementptr inbounds i8, ptr %0, i64 8
  %44 = fcmp ule double %7, 1.000100e+00
  %45 = icmp slt i32 %39, 1
  %46 = getelementptr inbounds i8, ptr %0, i64 432
  %brmerge = or i1 %44, %45
  br label %51

.preheader106:                                    ; preds = %.loopexit108, %29
  %47 = icmp slt i32 %39, 1
  br i1 %47, label %._crit_edge, label %.lr.ph113

.lr.ph113:                                        ; preds = %.preheader106
  %48 = getelementptr inbounds i8, ptr %1, i64 8
  %49 = getelementptr inbounds i8, ptr %0, i64 416
  %50 = getelementptr inbounds i8, ptr %0, i64 424
  br label %77

51:                                               ; preds = %.lr.ph111, %.loopexit108
  %52 = phi i32 [ %40, %.lr.ph111 ], [ %66, %.loopexit108 ]
  %.082110 = phi i32 [ %42, %.lr.ph111 ], [ %67, %.loopexit108 ]
  %53 = srem i32 %.082110, %.0
  %54 = sub nsw i32 %18, %52
  %55 = sub nsw i32 %.0, %53
  %56 = call noundef i32 @_ZN4juce4jminIiEET_S1_S1_(i32 noundef %54, i32 noundef %55)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #5
  call void @_ZN4juce22AudioSourceChannelInfoC2EPNS_11AudioBufferIfEEii(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull %19, i32 noundef %53, i32 noundef %56) #5
  %57 = call noundef ptr @_ZNK4juce21OptionalScopedPointerINS_11AudioSourceEEptEv(ptr noundef nonnull align 8 dereferenceable(9) %43) #5
  %58 = load ptr, ptr %57, align 8, !tbaa !31
  %59 = getelementptr inbounds i8, ptr %58, i64 32
  %60 = load ptr, ptr %59, align 8
  call void %60(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(16) %4)
  br i1 %brmerge, label %.loopexit108, label %.lr.ph

.lr.ph:                                           ; preds = %51, %.lr.ph
  %.086109 = phi i32 [ %61, %.lr.ph ], [ %39, %51 ]
  %61 = add nsw i32 %.086109, -1
  %62 = call noundef ptr @_ZN4juce11AudioBufferIfE15getWritePointerEii(ptr noundef nonnull align 8 dereferenceable(289) %19, i32 noundef %61, i32 noundef %53) #5
  %63 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4juce9HeapBlockINS_21ResamplingAudioSource11FilterStateELb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %46, i32 noundef %61) #5
  call void @_ZN4juce21ResamplingAudioSource11applyFilterEPfiRNS0_11FilterStateE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef %62, i32 noundef %56, ptr noundef nonnull align 8 dereferenceable(32) %63)
  %64 = icmp ugt i32 %.086109, 1
  br i1 %64, label %.lr.ph, label %.loopexit108, !llvm.loop !33

.loopexit108:                                     ; preds = %.lr.ph, %51
  %65 = load i32, ptr %33, align 4, !tbaa !28
  %66 = add nsw i32 %65, %56
  store i32 %66, ptr %33, align 4, !tbaa !28
  %67 = add nsw i32 %56, %53
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  %68 = icmp sgt i32 %18, %66
  br i1 %68, label %51, label %.preheader106, !llvm.loop !35

._crit_edge:                                      ; preds = %77, %.preheader106
  %69 = load i32, ptr %13, align 4, !tbaa !25
  %70 = icmp sgt i32 %69, 0
  br i1 %70, label %.lr.ph128, label %._crit_edge129

.lr.ph128:                                        ; preds = %._crit_edge
  %71 = load i32, ptr %30, align 8, !tbaa !27
  %72 = add nsw i32 %71, 1
  %73 = srem i32 %72, %.0
  %74 = getelementptr inbounds i8, ptr %0, i64 344
  %75 = getelementptr inbounds i8, ptr %0, i64 424
  %76 = getelementptr inbounds i8, ptr %0, i64 416
  %.pre = load double, ptr %74, align 8, !tbaa !36
  br label %91

77:                                               ; preds = %.lr.ph113, %77
  %.089112 = phi i32 [ 0, %.lr.ph113 ], [ %84, %77 ]
  %78 = load ptr, ptr %1, align 8, !tbaa !30
  %79 = load i32, ptr %48, align 8, !tbaa !37
  %80 = call noundef ptr @_ZN4juce11AudioBufferIfE15getWritePointerEii(ptr noundef nonnull align 8 dereferenceable(289) %78, i32 noundef %.089112, i32 noundef %79) #5
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPfLb0EEixIiEERS1_T_(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef %.089112) #5
  store ptr %80, ptr %81, align 8, !tbaa !38
  %82 = call noundef ptr @_ZNK4juce11AudioBufferIfE14getReadPointerEi(ptr noundef nonnull align 8 dereferenceable(289) %19, i32 noundef %.089112) #5
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPKfLb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %50, i32 noundef %.089112) #5
  store ptr %82, ptr %83, align 8, !tbaa !38
  %84 = add nuw nsw i32 %.089112, 1
  %exitcond.not = icmp eq i32 %84, %39
  br i1 %exitcond.not, label %._crit_edge, label %77, !llvm.loop !39

..loopexit105_crit_edge:                          ; preds = %.lr.ph123
  store i32 %spec.select, ptr %30, align 8, !tbaa !27
  store i32 %124, ptr %33, align 4, !tbaa !28
  %85 = add nsw i32 %spec.select, 1
  %86 = srem i32 %85, %.0
  br label %.loopexit105

.loopexit105:                                     ; preds = %..loopexit105_crit_edge, %._crit_edge117
  %.promoted142 = phi i32 [ %spec.select, %..loopexit105_crit_edge ], [ %.promoted, %._crit_edge117 ]
  %storemerge.lcssa = phi double [ %125, %..loopexit105_crit_edge ], [ %97, %._crit_edge117 ]
  %.1.lcssa = phi i32 [ %86, %..loopexit105_crit_edge ], [ %.088126, %._crit_edge117 ]
  store double %storemerge.lcssa, ptr %74, align 8, !tbaa !36
  %87 = icmp sgt i32 %.in, 1
  br i1 %87, label %91, label %._crit_edge129, !llvm.loop !40

._crit_edge129:                                   ; preds = %.loopexit105, %._crit_edge
  %88 = fcmp olt double %7, 9.999000e-01
  br i1 %88, label %.preheader, label %135

.preheader:                                       ; preds = %._crit_edge129
  br i1 %47, label %.loopexit, label %.lr.ph132

.lr.ph132:                                        ; preds = %.preheader
  %89 = getelementptr inbounds i8, ptr %1, i64 8
  %90 = getelementptr inbounds i8, ptr %0, i64 432
  br label %127

91:                                               ; preds = %.lr.ph128, %.loopexit105
  %.promoted141 = phi i32 [ %71, %.lr.ph128 ], [ %.promoted142, %.loopexit105 ]
  %92 = phi double [ %.pre, %.lr.ph128 ], [ %storemerge.lcssa, %.loopexit105 ]
  %.in = phi i32 [ %69, %.lr.ph128 ], [ %93, %.loopexit105 ]
  %.088126 = phi i32 [ %73, %.lr.ph128 ], [ %.1.lcssa, %.loopexit105 ]
  %93 = add nsw i32 %.in, -1
  %94 = fptrunc double %92 to float
  br i1 %47, label %._crit_edge117, label %.lr.ph116

.lr.ph116:                                        ; preds = %91
  %95 = sext i32 %.088126 to i64
  br label %99

._crit_edge117.loopexit:                          ; preds = %99
  %.pre140 = load double, ptr %74, align 8, !tbaa !36
  %.promoted.pre = load i32, ptr %30, align 8, !tbaa !27
  br label %._crit_edge117

._crit_edge117:                                   ; preds = %._crit_edge117.loopexit, %91
  %.promoted = phi i32 [ %.promoted.pre, %._crit_edge117.loopexit ], [ %.promoted141, %91 ]
  %96 = phi double [ %.pre140, %._crit_edge117.loopexit ], [ %92, %91 ]
  %97 = fadd double %7, %96
  %98 = fcmp ult double %97, 1.000000e+00
  br i1 %98, label %.loopexit105, label %.lr.ph123.preheader

.lr.ph123.preheader:                              ; preds = %._crit_edge117
  %.promoted119 = load i32, ptr %33, align 4, !tbaa !28
  br label %.lr.ph123

99:                                               ; preds = %.lr.ph116, %99
  %.085114 = phi i32 [ 0, %.lr.ph116 ], [ %121, %99 ]
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPKfLb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %75, i32 noundef %.085114) #5
  %101 = load ptr, ptr %100, align 8, !tbaa !38
  %102 = load i32, ptr %30, align 8, !tbaa !27
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds float, ptr %101, i64 %103
  %105 = load float, ptr %104, align 4, !tbaa !41
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPKfLb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %75, i32 noundef %.085114) #5
  %107 = load ptr, ptr %106, align 8, !tbaa !38
  %108 = getelementptr inbounds float, ptr %107, i64 %95
  %109 = load float, ptr %108, align 4, !tbaa !41
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPKfLb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %75, i32 noundef %.085114) #5
  %111 = load ptr, ptr %110, align 8, !tbaa !38
  %112 = load i32, ptr %30, align 8, !tbaa !27
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds float, ptr %111, i64 %113
  %115 = load float, ptr %114, align 4, !tbaa !41
  %116 = fsub float %109, %115
  %117 = call float @llvm.fmuladd.f32(float %94, float %116, float %105)
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK4juce9HeapBlockIPfLb0EEixIiEERS1_T_(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef %.085114) #5
  %119 = load ptr, ptr %118, align 8, !tbaa !38
  %120 = getelementptr inbounds i8, ptr %119, i64 4
  store ptr %120, ptr %118, align 8, !tbaa !38
  store float %117, ptr %119, align 4, !tbaa !41
  %121 = add nuw nsw i32 %.085114, 1
  %exitcond138.not = icmp eq i32 %121, %39
  br i1 %exitcond138.not, label %._crit_edge117.loopexit, label %99, !llvm.loop !43

.lr.ph123:                                        ; preds = %.lr.ph123.preheader, %.lr.ph123
  %storemerge121 = phi double [ %125, %.lr.ph123 ], [ %97, %.lr.ph123.preheader ]
  %spec.select118120 = phi i32 [ %spec.select, %.lr.ph123 ], [ %.promoted, %.lr.ph123.preheader ]
  %122 = phi i32 [ %124, %.lr.ph123 ], [ %.promoted119, %.lr.ph123.preheader ]
  %123 = add nsw i32 %spec.select118120, 1
  %.not = icmp slt i32 %123, %.0
  %spec.select = select i1 %.not, i32 %123, i32 0
  %124 = add nsw i32 %122, -1
  %125 = fadd double %storemerge121, -1.000000e+00
  %126 = fcmp ult double %125, 1.000000e+00
  br i1 %126, label %..loopexit105_crit_edge, label %.lr.ph123, !llvm.loop !44

127:                                              ; preds = %.lr.ph132, %127
  %.084131 = phi i32 [ %39, %.lr.ph132 ], [ %128, %127 ]
  %128 = add nsw i32 %.084131, -1
  %129 = load ptr, ptr %1, align 8, !tbaa !30
  %130 = load i32, ptr %89, align 8, !tbaa !37
  %131 = call noundef ptr @_ZN4juce11AudioBufferIfE15getWritePointerEii(ptr noundef nonnull align 8 dereferenceable(289) %129, i32 noundef %128, i32 noundef %130) #5
  %132 = load i32, ptr %13, align 4, !tbaa !25
  %133 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4juce9HeapBlockINS_21ResamplingAudioSource11FilterStateELb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %90, i32 noundef %128) #5
  call void @_ZN4juce21ResamplingAudioSource11applyFilterEPfiRNS0_11FilterStateE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef %131, i32 noundef %132, ptr noundef nonnull align 8 dereferenceable(32) %133)
  %134 = icmp ugt i32 %.084131, 1
  br i1 %134, label %127, label %.loopexit, !llvm.loop !45

135:                                              ; preds = %._crit_edge129
  %136 = fcmp ugt double %7, 1.000100e+00
  %137 = load i32, ptr %13, align 4
  %138 = icmp slt i32 %137, 1
  %or.cond.not150 = select i1 %136, i1 true, i1 %138
  %brmerge147 = or i1 %or.cond.not150, %47
  br i1 %brmerge147, label %.loopexit, label %.lr.ph130

.lr.ph130:                                        ; preds = %135
  %139 = getelementptr inbounds i8, ptr %1, i64 8
  %140 = getelementptr inbounds i8, ptr %0, i64 432
  br label %141

141:                                              ; preds = %.lr.ph130, %160
  %.in135 = phi i32 [ %39, %.lr.ph130 ], [ %142, %160 ]
  %142 = add nsw i32 %.in135, -1
  %143 = load ptr, ptr %1, align 8, !tbaa !30
  %144 = load i32, ptr %139, align 8, !tbaa !37
  %145 = load i32, ptr %13, align 4, !tbaa !25
  %146 = add i32 %144, -1
  %147 = add i32 %146, %145
  %148 = call noundef ptr @_ZNK4juce11AudioBufferIfE14getReadPointerEii(ptr noundef nonnull align 8 dereferenceable(289) %143, i32 noundef %142, i32 noundef %147) #5
  %149 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK4juce9HeapBlockINS_21ResamplingAudioSource11FilterStateELb0EEixIiEERS2_T_(ptr noundef nonnull align 8 dereferenceable(8) %140, i32 noundef %142) #5
  %150 = load i32, ptr %13, align 4, !tbaa !25
  %151 = icmp sgt i32 %150, 1
  br i1 %151, label %152, label %156

152:                                              ; preds = %141
  %153 = getelementptr inbounds i8, ptr %148, i64 -4
  %154 = load float, ptr %153, align 4, !tbaa !41
  %155 = fpext float %154 to double
  br label %160

156:                                              ; preds = %141
  %157 = getelementptr inbounds i8, ptr %149, i64 16
  %158 = load double, ptr %157, align 8, !tbaa !46
  %159 = load double, ptr %149, align 8, !tbaa !48
  br label %160

160:                                              ; preds = %156, %152
  %.sink139 = phi double [ %155, %152 ], [ %159, %156 ]
  %.sink = phi double [ %155, %152 ], [ %158, %156 ]
  %161 = getelementptr inbounds i8, ptr %149, i64 8
  store double %.sink139, ptr %161, align 8
  %162 = getelementptr inbounds i8, ptr %149, i64 24
  store double %.sink, ptr %162, align 8
  %163 = load float, ptr %148, align 4, !tbaa !41
  %164 = fpext float %163 to double
  store double %164, ptr %149, align 8, !tbaa !48
  %165 = getelementptr inbounds i8, ptr %149, i64 16
  store double %164, ptr %165, align 8, !tbaa !46
  %166 = icmp ugt i32 %.in135, 1
  br i1 %166, label %141, label %.loopexit, !llvm.loop !49

.loopexit:                                        ; preds = %160, %127, %135, %.preheader
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4juce21ResamplingAudioSource11applyFilterEPfiRNS0_11FilterStateE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK4juce11AudioBufferIfE14getReadPointerEii(ptr noundef nonnull align 8 dereferenceable(289), i32 noundef, i32 noundef) 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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !14, i64 24}
!6 = !{!"_ZTSN4juce21ResamplingAudioSourceE", !7, i64 0, !8, i64 8, !14, i64 24, !14, i64 32, !15, i64 40, !16, i64 336, !16, i64 340, !14, i64 344, !11, i64 352, !19, i64 400, !16, i64 408, !21, i64 416, !22, i64 424, !23, i64 432}
!7 = !{!"_ZTSN4juce11AudioSourceE"}
!8 = !{!"_ZTSN4juce21OptionalScopedPointerINS_11AudioSourceEEE", !9, i64 0, !13, i64 8}
!9 = !{!"_ZTSN4juce13ScopedPointerINS_11AudioSourceEEE", !10, i64 0}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"bool", !11, i64 0}
!14 = !{!"double", !11, i64 0}
!15 = !{!"_ZTSN4juce11AudioBufferIfEE", !16, i64 0, !16, i64 4, !17, i64 8, !10, i64 16, !18, i64 24, !11, i64 32, !13, i64 288}
!16 = !{!"int", !11, i64 0}
!17 = !{!"long", !11, i64 0}
!18 = !{!"_ZTSN4juce9HeapBlockIcLb1EEE", !10, i64 0}
!19 = !{!"_ZTSN4juce8SpinLockE", !20, i64 0}
!20 = !{!"_ZTSN4juce6AtomicIiEE", !16, i64 0}
!21 = !{!"_ZTSN4juce9HeapBlockIPfLb0EEE", !10, i64 0}
!22 = !{!"_ZTSN4juce9HeapBlockIPKfLb0EEE", !10, i64 0}
!23 = !{!"_ZTSN4juce9HeapBlockINS_21ResamplingAudioSource11FilterStateELb0EEE", !10, i64 0}
!24 = !{!6, !14, i64 32}
!25 = !{!26, !16, i64 12}
!26 = !{!"_ZTSN4juce22AudioSourceChannelInfoE", !10, i64 0, !16, i64 8, !16, i64 12}
!27 = !{!6, !16, i64 336}
!28 = !{!6, !16, i64 340}
!29 = !{!6, !16, i64 408}
!30 = !{!26, !10, i64 0}
!31 = !{!32, !32, i64 0}
!32 = !{!"vtable pointer", !12, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}
!36 = !{!6, !14, i64 344}
!37 = !{!26, !16, i64 8}
!38 = !{!10, !10, i64 0}
!39 = distinct !{!39, !34}
!40 = distinct !{!40, !34}
!41 = !{!42, !42, i64 0}
!42 = !{!"float", !11, i64 0}
!43 = distinct !{!43, !34}
!44 = distinct !{!44, !34}
!45 = distinct !{!45, !34}
!46 = !{!47, !14, i64 16}
!47 = !{!"_ZTSN4juce21ResamplingAudioSource11FilterStateE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!48 = !{!47, !14, i64 0}
!49 = distinct !{!49, !34}


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