; LLVM IR from Overload-Technologies/Overload :: Dependencies/soloud/src/audiosource/sfxr (soloud_sfxr)

; 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.SoLoud::SfxrInstance" = type { %"class.SoLoud::AudioSourceInstance", ptr, %"class.SoLoud::Misc::Prg", %"struct.SoLoud::SfxrParams", i8, i32, double, double, double, double, i32, float, float, i32, i32, [3 x i32], float, float, float, i32, [1024 x float], i32, [32 x float], float, float, float, float, float, float, float, float, float, float, float, i32, i32, i32, i32, double }
%"class.SoLoud::AudioSourceInstance" = type { ptr, i32, i32, i32, float, [8 x float], float, float, float, float, i32, float, float, double, double, %"class.SoLoud::Fader", %"class.SoLoud::Fader", %"class.SoLoud::Fader", %"class.SoLoud::Fader", %"class.SoLoud::Fader", i32, [8 x float], i32, i32, [8 x ptr], [2 x ptr], i32, i32, i32, double }
%"class.SoLoud::Fader" = type { float, float, float, double, double, double, float, i32 }
%"class.SoLoud::Misc::Prg" = type { [16 x i32], i32 }
%"struct.SoLoud::SfxrParams" = type { i32, float, float, float, float, float, float, float, float, float, float, float, float, float, i8, float, float, float, float, float, float, float, float, float, float, float, float }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6SoLoud12SfxrInstance11resetSampleEb(ptr noundef nonnull align 8 dereferenceable(5064) %0, i1 noundef zeroext %1) #0 align 2 {
  %3 = alloca ptr, align 8
  %4 = alloca i8, align 1
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  %7 = zext i1 %1 to i8
  store i8 %7, ptr %4, align 1, !tbaa !9
  %8 = load ptr, ptr %3, align 8
  %9 = load i8, ptr %4, align 1, !tbaa !9, !range !11, !noundef !12
  %10 = trunc i8 %9 to i1
  br i1 %10, label %13, label %11

11:                                               ; preds = %2
  %12 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 5
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %13

13:                                               ; preds = %11, %2
  %14 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %15 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %14, i32 0, i32 1
  %16 = load float, ptr %15, align 4, !tbaa !22
  %17 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %18 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %17, i32 0, i32 1
  %19 = load float, ptr %18, align 4, !tbaa !22
  %20 = fmul float %16, %19
  %21 = fpext float %20 to double
  %22 = fadd double %21, 1.000000e-03
  %23 = fdiv double 1.000000e+02, %22
  %24 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 6
  store double %23, ptr %24, align 8, !tbaa !23
  %25 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 6
  %26 = load double, ptr %25, align 8, !tbaa !23
  %27 = fptosi double %26 to i32
  %28 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 10
  store i32 %27, ptr %28, align 8, !tbaa !24
  %29 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %30 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %29, i32 0, i32 2
  %31 = load float, ptr %30, align 4, !tbaa !25
  %32 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %33 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %32, i32 0, i32 2
  %34 = load float, ptr %33, align 4, !tbaa !25
  %35 = fmul float %31, %34
  %36 = fpext float %35 to double
  %37 = fadd double %36, 1.000000e-03
  %38 = fdiv double 1.000000e+02, %37
  %39 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 7
  store double %38, ptr %39, align 8, !tbaa !26
  %40 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %41 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %40, i32 0, i32 3
  %42 = load float, ptr %41, align 4, !tbaa !27
  %43 = fpext float %42 to double
  %44 = call double @pow(double noundef %43, double noundef 3.000000e+00) #6
  %45 = fneg double %44
  %46 = call double @llvm.fmuladd.f64(double %45, double 1.000000e-02, double 1.000000e+00)
  %47 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 8
  store double %46, ptr %47, align 8, !tbaa !28
  %48 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %49 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %48, i32 0, i32 4
  %50 = load float, ptr %49, align 4, !tbaa !29
  %51 = fpext float %50 to double
  %52 = call double @pow(double noundef %51, double noundef 3.000000e+00) #6
  %53 = fneg double %52
  %54 = fmul double %53, 0x3EB0C6F7A0B5ED8D
  %55 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 9
  store double %54, ptr %55, align 8, !tbaa !30
  %56 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %57 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %56, i32 0, i32 5
  %58 = load float, ptr %57, align 4, !tbaa !31
  %59 = fneg float %58
  %60 = call float @llvm.fmuladd.f32(float %59, float 5.000000e-01, float 5.000000e-01)
  %61 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 11
  store float %60, ptr %61, align 4, !tbaa !32
  %62 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %63 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %62, i32 0, i32 6
  %64 = load float, ptr %63, align 4, !tbaa !33
  %65 = fneg float %64
  %66 = fmul float %65, 0x3F0A36E2E0000000
  %67 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 12
  store float %66, ptr %67, align 8, !tbaa !34
  %68 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %69 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %68, i32 0, i32 24
  %70 = load float, ptr %69, align 4, !tbaa !35
  %71 = fcmp oge float %70, 0.000000e+00
  br i1 %71, label %72, label %81

72:                                               ; preds = %13
  %73 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %74 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %73, i32 0, i32 24
  %75 = load float, ptr %74, align 4, !tbaa !35
  %76 = fpext float %75 to double
  %77 = call double @pow(double noundef %76, double noundef 2.000000e+00) #6
  %78 = fneg double %77
  %79 = call double @llvm.fmuladd.f64(double %78, double 9.000000e-01, double 1.000000e+00)
  %80 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 38
  store double %79, ptr %80, align 8, !tbaa !36
  br label %89

81:                                               ; preds = %13
  %82 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %83 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %82, i32 0, i32 24
  %84 = load float, ptr %83, align 4, !tbaa !35
  %85 = fpext float %84 to double
  %86 = call double @pow(double noundef %85, double noundef 2.000000e+00) #6
  %87 = call double @llvm.fmuladd.f64(double %86, double 1.000000e+01, double 1.000000e+00)
  %88 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 38
  store double %87, ptr %88, align 8, !tbaa !36
  br label %89

89:                                               ; preds = %81, %72
  %90 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 36
  store i32 0, ptr %90, align 8, !tbaa !37
  %91 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %92 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %91, i32 0, i32 23
  %93 = load float, ptr %92, align 4, !tbaa !38
  %94 = fsub float 1.000000e+00, %93
  %95 = call noundef float @_ZSt3powff(float noundef %94, float noundef 2.000000e+00)
  %96 = call float @llvm.fmuladd.f32(float %95, float 2.000000e+04, float 3.200000e+01)
  %97 = fptosi float %96 to i32
  %98 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 37
  store i32 %97, ptr %98, align 4, !tbaa !39
  %99 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %100 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %99, i32 0, i32 23
  %101 = load float, ptr %100, align 4, !tbaa !38
  %102 = fcmp oeq float %101, 1.000000e+00
  br i1 %102, label %103, label %105

103:                                              ; preds = %89
  %104 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 37
  store i32 0, ptr %104, align 4, !tbaa !39
  br label %105

105:                                              ; preds = %103, %89
  %106 = load i8, ptr %4, align 1, !tbaa !9, !range !11, !noundef !12
  %107 = trunc i8 %106 to i1
  br i1 %107, label %288, label %108

108:                                              ; preds = %105
  %109 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 23
  store float 0.000000e+00, ptr %109, align 4, !tbaa !40
  %110 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 24
  store float 0.000000e+00, ptr %110, align 8, !tbaa !41
  %111 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %112 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %111, i32 0, i32 16
  %113 = load float, ptr %112, align 4, !tbaa !42
  %114 = call noundef float @_ZSt3powff(float noundef %113, float noundef 3.000000e+00)
  %115 = fmul float %114, 0x3FB99999A0000000
  %116 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 25
  store float %115, ptr %116, align 4, !tbaa !43
  %117 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %118 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %117, i32 0, i32 17
  %119 = load float, ptr %118, align 4, !tbaa !44
  %120 = call float @llvm.fmuladd.f32(float %119, float 0x3F1A36E2E0000000, float 1.000000e+00)
  %121 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 26
  store float %120, ptr %121, align 8, !tbaa !45
  %122 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %123 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %122, i32 0, i32 15
  %124 = load float, ptr %123, align 4, !tbaa !46
  %125 = call noundef float @_ZSt3powff(float noundef %124, float noundef 2.000000e+00)
  %126 = call float @llvm.fmuladd.f32(float %125, float 2.000000e+01, float 1.000000e+00)
  %127 = fdiv float 5.000000e+00, %126
  %128 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 25
  %129 = load float, ptr %128, align 4, !tbaa !43
  %130 = fadd float 0x3F847AE140000000, %129
  %131 = fmul float %127, %130
  %132 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 27
  store float %131, ptr %132, align 4, !tbaa !47
  %133 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 27
  %134 = load float, ptr %133, align 4, !tbaa !47
  %135 = fcmp ogt float %134, 0x3FE99999A0000000
  br i1 %135, label %136, label %138

136:                                              ; preds = %108
  %137 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 27
  store float 0x3FE99999A0000000, ptr %137, align 4, !tbaa !47
  br label %138

138:                                              ; preds = %136, %108
  %139 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 28
  store float 0.000000e+00, ptr %139, align 8, !tbaa !48
  %140 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %141 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %140, i32 0, i32 18
  %142 = load float, ptr %141, align 4, !tbaa !49
  %143 = call noundef float @_ZSt3powff(float noundef %142, float noundef 2.000000e+00)
  %144 = fmul float %143, 0x3FB99999A0000000
  %145 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 29
  store float %144, ptr %145, align 4, !tbaa !50
  %146 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %147 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %146, i32 0, i32 19
  %148 = load float, ptr %147, align 4, !tbaa !51
  %149 = fmul float %148, 0x3F33A92A40000000
  %150 = fpext float %149 to double
  %151 = fadd double 1.000000e+00, %150
  %152 = fptrunc double %151 to float
  %153 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 30
  store float %152, ptr %153, align 8, !tbaa !52
  %154 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 31
  store float 0.000000e+00, ptr %154, align 4, !tbaa !53
  %155 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %156 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %155, i32 0, i32 8
  %157 = load float, ptr %156, align 4, !tbaa !54
  %158 = call noundef float @_ZSt3powff(float noundef %157, float noundef 2.000000e+00)
  %159 = fmul float %158, 0x3F847AE140000000
  %160 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 32
  store float %159, ptr %160, align 8, !tbaa !55
  %161 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %162 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %161, i32 0, i32 7
  %163 = load float, ptr %162, align 4, !tbaa !56
  %164 = fmul float %163, 5.000000e-01
  %165 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 33
  store float %164, ptr %165, align 4, !tbaa !57
  %166 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 16
  store float 0.000000e+00, ptr %166, align 8, !tbaa !58
  %167 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 13
  store i32 0, ptr %167, align 4, !tbaa !59
  %168 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 14
  store i32 0, ptr %168, align 8, !tbaa !60
  %169 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %170 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %169, i32 0, i32 10
  %171 = load float, ptr %170, align 4, !tbaa !61
  %172 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %173 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %172, i32 0, i32 10
  %174 = load float, ptr %173, align 4, !tbaa !61
  %175 = fmul float %171, %174
  %176 = fmul float %175, 1.000000e+05
  %177 = fptosi float %176 to i32
  %178 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 15
  %179 = getelementptr inbounds [3 x i32], ptr %178, i64 0, i64 0
  store i32 %177, ptr %179, align 4, !tbaa !62
  %180 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %181 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %180, i32 0, i32 11
  %182 = load float, ptr %181, align 4, !tbaa !63
  %183 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %184 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %183, i32 0, i32 11
  %185 = load float, ptr %184, align 4, !tbaa !63
  %186 = fmul float %182, %185
  %187 = fmul float %186, 1.000000e+05
  %188 = fptosi float %187 to i32
  %189 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 15
  %190 = getelementptr inbounds [3 x i32], ptr %189, i64 0, i64 1
  store i32 %188, ptr %190, align 4, !tbaa !62
  %191 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %192 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %191, i32 0, i32 12
  %193 = load float, ptr %192, align 4, !tbaa !64
  %194 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %195 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %194, i32 0, i32 12
  %196 = load float, ptr %195, align 4, !tbaa !64
  %197 = fmul float %193, %196
  %198 = fmul float %197, 1.000000e+05
  %199 = fptosi float %198 to i32
  %200 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 15
  %201 = getelementptr inbounds [3 x i32], ptr %200, i64 0, i64 2
  store i32 %199, ptr %201, align 4, !tbaa !62
  %202 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %203 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %202, i32 0, i32 20
  %204 = load float, ptr %203, align 4, !tbaa !65
  %205 = call noundef float @_ZSt3powff(float noundef %204, float noundef 2.000000e+00)
  %206 = fmul float %205, 1.020000e+03
  %207 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 17
  store float %206, ptr %207, align 4, !tbaa !66
  %208 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %209 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %208, i32 0, i32 20
  %210 = load float, ptr %209, align 4, !tbaa !65
  %211 = fcmp olt float %210, 0.000000e+00
  br i1 %211, label %212, label %217

212:                                              ; preds = %138
  %213 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 17
  %214 = load float, ptr %213, align 4, !tbaa !66
  %215 = fneg float %214
  %216 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 17
  store float %215, ptr %216, align 4, !tbaa !66
  br label %217

217:                                              ; preds = %212, %138
  %218 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %219 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %218, i32 0, i32 21
  %220 = load float, ptr %219, align 4, !tbaa !67
  %221 = call noundef float @_ZSt3powff(float noundef %220, float noundef 2.000000e+00)
  %222 = fmul float %221, 1.000000e+00
  %223 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 18
  store float %222, ptr %223, align 8, !tbaa !68
  %224 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %225 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %224, i32 0, i32 21
  %226 = load float, ptr %225, align 4, !tbaa !67
  %227 = fcmp olt float %226, 0.000000e+00
  br i1 %227, label %228, label %233

228:                                              ; preds = %217
  %229 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 18
  %230 = load float, ptr %229, align 8, !tbaa !68
  %231 = fneg float %230
  %232 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 18
  store float %231, ptr %232, align 8, !tbaa !68
  br label %233

233:                                              ; preds = %228, %217
  %234 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 17
  %235 = load float, ptr %234, align 4, !tbaa !66
  %236 = fptosi float %235 to i32
  %237 = call i32 @llvm.abs.i32(i32 %236, i1 true)
  %238 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 19
  store i32 %237, ptr %238, align 4, !tbaa !69
  %239 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 21
  store i32 0, ptr %239, align 8, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  store i32 0, ptr %5, align 4, !tbaa !62
  br label %240

240:                                              ; preds = %249, %233
  %241 = load i32, ptr %5, align 4, !tbaa !62
  %242 = icmp slt i32 %241, 1024
  br i1 %242, label %244, label %243

243:                                              ; preds = %240
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  br label %252

244:                                              ; preds = %240
  %245 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 20
  %246 = load i32, ptr %5, align 4, !tbaa !62
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds [1024 x float], ptr %245, i64 0, i64 %247
  store float 0.000000e+00, ptr %248, align 4, !tbaa !71
  br label %249

249:                                              ; preds = %244
  %250 = load i32, ptr %5, align 4, !tbaa !62
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %5, align 4, !tbaa !62
  br label %240, !llvm.loop !72

252:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, ptr %6, align 4, !tbaa !62
  br label %253

253:                                              ; preds = %268, %252
  %254 = load i32, ptr %6, align 4, !tbaa !62
  %255 = icmp slt i32 %254, 32
  br i1 %255, label %257, label %256

256:                                              ; preds = %253
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  br label %271

257:                                              ; preds = %253
  %258 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 2
  %259 = call noundef i32 @_ZN6SoLoud4Misc3Prg4randEv(ptr noundef nonnull align 4 dereferenceable(68) %258)
  %260 = urem i32 %259, 10001
  %261 = uitofp i32 %260 to float
  %262 = fdiv float %261, 1.000000e+04
  %263 = call float @llvm.fmuladd.f32(float %262, float 2.000000e+00, float -1.000000e+00)
  %264 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 22
  %265 = load i32, ptr %6, align 4, !tbaa !62
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds [32 x float], ptr %264, i64 0, i64 %266
  store float %263, ptr %267, align 4, !tbaa !71
  br label %268

268:                                              ; preds = %257
  %269 = load i32, ptr %6, align 4, !tbaa !62
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr %6, align 4, !tbaa !62
  br label %253, !llvm.loop !74

271:                                              ; preds = %256
  %272 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 34
  store i32 0, ptr %272, align 8, !tbaa !75
  %273 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %274 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %273, i32 0, i32 22
  %275 = load float, ptr %274, align 4, !tbaa !76
  %276 = fsub float 1.000000e+00, %275
  %277 = call noundef float @_ZSt3powff(float noundef %276, float noundef 2.000000e+00)
  %278 = call float @llvm.fmuladd.f32(float %277, float 2.000000e+04, float 3.200000e+01)
  %279 = fptosi float %278 to i32
  %280 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 35
  store i32 %279, ptr %280, align 4, !tbaa !77
  %281 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 3
  %282 = getelementptr inbounds %"struct.SoLoud::SfxrParams", ptr %281, i32 0, i32 22
  %283 = load float, ptr %282, align 4, !tbaa !76
  %284 = fcmp oeq float %283, 0.000000e+00
  br i1 %284, label %285, label %287

285:                                              ; preds = %271
  %286 = getelementptr inbounds %"class.SoLoud::SfxrInstance", ptr %8, i32 0, i32 35
  store i32 0, ptr %286, align 4, !tbaa !77
  br label %287

287:                                              ; preds = %285, %271
  br label %288

288:                                              ; preds = %287, %105
  ret void
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt3powff(float noundef, float noundef) #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #3

declare noundef i32 @_ZN6SoLoud4Misc3Prg4randEv(ptr noundef nonnull align 4 dereferenceable(68)) #4

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

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !16, i64 684}
!14 = !{!"_ZTSN6SoLoud12SfxrInstanceE", !15, i64 0, !6, i64 496, !20, i64 504, !21, i64 572, !10, i64 680, !16, i64 684, !18, i64 688, !18, i64 696, !18, i64 704, !18, i64 712, !16, i64 720, !17, i64 724, !17, i64 728, !16, i64 732, !16, i64 736, !7, i64 740, !17, i64 752, !17, i64 756, !17, i64 760, !16, i64 764, !7, i64 768, !16, i64 4864, !7, i64 4868, !17, i64 4996, !17, i64 5000, !17, i64 5004, !17, i64 5008, !17, i64 5012, !17, i64 5016, !17, i64 5020, !17, i64 5024, !17, i64 5028, !17, i64 5032, !17, i64 5036, !16, i64 5040, !16, i64 5044, !16, i64 5048, !16, i64 5052, !18, i64 5056}
!15 = !{!"_ZTSN6SoLoud19AudioSourceInstanceE", !16, i64 8, !16, i64 12, !16, i64 16, !17, i64 20, !7, i64 24, !17, i64 56, !17, i64 60, !17, i64 64, !17, i64 68, !16, i64 72, !17, i64 76, !17, i64 80, !18, i64 88, !18, i64 96, !19, i64 104, !19, i64 152, !19, i64 200, !19, i64 248, !19, i64 296, !16, i64 344, !7, i64 348, !16, i64 380, !16, i64 384, !7, i64 392, !7, i64 456, !16, i64 472, !16, i64 476, !16, i64 480, !18, i64 488}
!16 = !{!"int", !7, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = !{!"double", !7, i64 0}
!19 = !{!"_ZTSN6SoLoud5FaderE", !17, i64 0, !17, i64 4, !17, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !17, i64 40, !16, i64 44}
!20 = !{!"_ZTSN6SoLoud4Misc3PrgE", !7, i64 0, !16, i64 64}
!21 = !{!"_ZTSN6SoLoud10SfxrParamsE", !16, i64 0, !17, i64 4, !17, i64 8, !17, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !17, i64 32, !17, i64 36, !17, i64 40, !17, i64 44, !17, i64 48, !17, i64 52, !10, i64 56, !17, i64 60, !17, i64 64, !17, i64 68, !17, i64 72, !17, i64 76, !17, i64 80, !17, i64 84, !17, i64 88, !17, i64 92, !17, i64 96, !17, i64 100, !17, i64 104}
!22 = !{!14, !17, i64 576}
!23 = !{!14, !18, i64 688}
!24 = !{!14, !16, i64 720}
!25 = !{!14, !17, i64 580}
!26 = !{!14, !18, i64 696}
!27 = !{!14, !17, i64 584}
!28 = !{!14, !18, i64 704}
!29 = !{!14, !17, i64 588}
!30 = !{!14, !18, i64 712}
!31 = !{!14, !17, i64 592}
!32 = !{!14, !17, i64 724}
!33 = !{!14, !17, i64 596}
!34 = !{!14, !17, i64 728}
!35 = !{!14, !17, i64 668}
!36 = !{!14, !18, i64 5056}
!37 = !{!14, !16, i64 5048}
!38 = !{!14, !17, i64 664}
!39 = !{!14, !16, i64 5052}
!40 = !{!14, !17, i64 4996}
!41 = !{!14, !17, i64 5000}
!42 = !{!14, !17, i64 636}
!43 = !{!14, !17, i64 5004}
!44 = !{!14, !17, i64 640}
!45 = !{!14, !17, i64 5008}
!46 = !{!14, !17, i64 632}
!47 = !{!14, !17, i64 5012}
!48 = !{!14, !17, i64 5016}
!49 = !{!14, !17, i64 644}
!50 = !{!14, !17, i64 5020}
!51 = !{!14, !17, i64 648}
!52 = !{!14, !17, i64 5024}
!53 = !{!14, !17, i64 5028}
!54 = !{!14, !17, i64 604}
!55 = !{!14, !17, i64 5032}
!56 = !{!14, !17, i64 600}
!57 = !{!14, !17, i64 5036}
!58 = !{!14, !17, i64 752}
!59 = !{!14, !16, i64 732}
!60 = !{!14, !16, i64 736}
!61 = !{!14, !17, i64 612}
!62 = !{!16, !16, i64 0}
!63 = !{!14, !17, i64 616}
!64 = !{!14, !17, i64 620}
!65 = !{!14, !17, i64 652}
!66 = !{!14, !17, i64 756}
!67 = !{!14, !17, i64 656}
!68 = !{!14, !17, i64 760}
!69 = !{!14, !16, i64 764}
!70 = !{!14, !16, i64 4864}
!71 = !{!17, !17, i64 0}
!72 = distinct !{!72, !73}
!73 = !{!"llvm.loop.mustprogress"}
!74 = distinct !{!74, !73}
!75 = !{!14, !16, i64 5040}
!76 = !{!14, !17, i64 660}
!77 = !{!14, !16, i64 5044}


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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6SoLoud12SfxrInstance11resetSampleEb(ptr noundef nonnull align 8 dereferenceable(5064) %0, i1 noundef zeroext %1) local_unnamed_addr #0 align 2 {
  br i1 %1, label %5, label %3

3:                                                ; preds = %2
  %4 = getelementptr inbounds i8, ptr %0, i64 684
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %5

5:                                                ; preds = %3, %2
  %6 = getelementptr inbounds i8, ptr %0, i64 576
  %7 = getelementptr inbounds i8, ptr %0, i64 688
  %8 = getelementptr inbounds i8, ptr %0, i64 720
  %9 = load <2 x float>, ptr %6, align 8, !tbaa !18
  %10 = fmul <2 x float> %9, %9
  %11 = fpext <2 x float> %10 to <2 x double>
  %12 = fadd <2 x double> %11, <double 1.000000e-03, double 1.000000e-03>
  %13 = fdiv <2 x double> <double 1.000000e+02, double 1.000000e+02>, %12
  %14 = extractelement <2 x double> %13, i64 0
  %15 = fptosi double %14 to i32
  store i32 %15, ptr %8, align 8, !tbaa !19
  store <2 x double> %13, ptr %7, align 8, !tbaa !20
  %16 = getelementptr inbounds i8, ptr %0, i64 584
  %17 = load float, ptr %16, align 8, !tbaa !21
  %18 = fpext float %17 to double
  %19 = tail call double @pow(double noundef %18, double noundef 3.000000e+00) #6
  %20 = fneg double %19
  %21 = tail call double @llvm.fmuladd.f64(double %20, double 1.000000e-02, double 1.000000e+00)
  %22 = getelementptr inbounds i8, ptr %0, i64 704
  store double %21, ptr %22, align 8, !tbaa !22
  %23 = getelementptr inbounds i8, ptr %0, i64 588
  %24 = load float, ptr %23, align 4, !tbaa !23
  %25 = fpext float %24 to double
  %26 = tail call double @pow(double noundef %25, double noundef 3.000000e+00) #6
  %27 = fmul double %26, 0xBEB0C6F7A0B5ED8D
  %28 = getelementptr inbounds i8, ptr %0, i64 712
  store double %27, ptr %28, align 8, !tbaa !24
  %29 = getelementptr inbounds i8, ptr %0, i64 592
  %30 = load float, ptr %29, align 8, !tbaa !25
  %31 = fneg float %30
  %32 = tail call float @llvm.fmuladd.f32(float %31, float 5.000000e-01, float 5.000000e-01)
  %33 = getelementptr inbounds i8, ptr %0, i64 724
  store float %32, ptr %33, align 4, !tbaa !26
  %34 = getelementptr inbounds i8, ptr %0, i64 596
  %35 = load float, ptr %34, align 4, !tbaa !27
  %36 = fmul float %35, 0xBF0A36E2E0000000
  %37 = getelementptr inbounds i8, ptr %0, i64 728
  store float %36, ptr %37, align 8, !tbaa !28
  %38 = getelementptr inbounds i8, ptr %0, i64 668
  %39 = load float, ptr %38, align 4, !tbaa !29
  %40 = fcmp ult float %39, 0.000000e+00
  %41 = fpext float %39 to double
  br i1 %40, label %46, label %42

42:                                               ; preds = %5
  %43 = fneg double %41
  %44 = fmul double %43, %41
  %45 = tail call double @llvm.fmuladd.f64(double %44, double 9.000000e-01, double 1.000000e+00)
  br label %48

46:                                               ; preds = %5
  %square = fmul double %41, %41
  %47 = tail call double @llvm.fmuladd.f64(double %square, double 1.000000e+01, double 1.000000e+00)
  br label %48

48:                                               ; preds = %46, %42
  %.sink = phi double [ %47, %46 ], [ %45, %42 ]
  %49 = getelementptr inbounds i8, ptr %0, i64 5056
  store double %.sink, ptr %49, align 8
  %50 = getelementptr inbounds i8, ptr %0, i64 5048
  store i32 0, ptr %50, align 8, !tbaa !30
  %51 = getelementptr inbounds i8, ptr %0, i64 664
  %52 = load float, ptr %51, align 8, !tbaa !31
  %53 = fsub float 1.000000e+00, %52
  %54 = tail call noundef float @_ZSt3powff(float noundef %53, float noundef 2.000000e+00)
  %55 = tail call float @llvm.fmuladd.f32(float %54, float 2.000000e+04, float 3.200000e+01)
  %56 = fptosi float %55 to i32
  %57 = getelementptr inbounds i8, ptr %0, i64 5052
  store i32 %56, ptr %57, align 4, !tbaa !32
  %58 = load float, ptr %51, align 8, !tbaa !31
  %59 = fcmp oeq float %58, 1.000000e+00
  br i1 %59, label %60, label %61

60:                                               ; preds = %48
  store i32 0, ptr %57, align 4, !tbaa !32
  br label %61

61:                                               ; preds = %60, %48
  br i1 %1, label %163, label %62

62:                                               ; preds = %61
  %63 = getelementptr inbounds i8, ptr %0, i64 4996
  store <2 x float> zeroinitializer, ptr %63, align 4, !tbaa !18
  %64 = getelementptr inbounds i8, ptr %0, i64 636
  %65 = load float, ptr %64, align 4, !tbaa !33
  %66 = tail call noundef float @_ZSt3powff(float noundef %65, float noundef 3.000000e+00)
  %67 = fmul float %66, 0x3FB99999A0000000
  %68 = getelementptr inbounds i8, ptr %0, i64 5004
  store float %67, ptr %68, align 4, !tbaa !34
  %69 = getelementptr inbounds i8, ptr %0, i64 640
  %70 = load float, ptr %69, align 8, !tbaa !35
  %71 = tail call float @llvm.fmuladd.f32(float %70, float 0x3F1A36E2E0000000, float 1.000000e+00)
  %72 = getelementptr inbounds i8, ptr %0, i64 5008
  store float %71, ptr %72, align 8, !tbaa !36
  %73 = getelementptr inbounds i8, ptr %0, i64 632
  %74 = load float, ptr %73, align 8, !tbaa !37
  %75 = tail call noundef float @_ZSt3powff(float noundef %74, float noundef 2.000000e+00)
  %76 = tail call float @llvm.fmuladd.f32(float %75, float 2.000000e+01, float 1.000000e+00)
  %77 = fdiv float 5.000000e+00, %76
  %78 = load float, ptr %68, align 4, !tbaa !34
  %79 = fadd float %78, 0x3F847AE140000000
  %80 = fmul float %77, %79
  %81 = getelementptr inbounds i8, ptr %0, i64 5012
  %82 = fcmp ogt float %80, 0x3FE99999A0000000
  %storemerge = select i1 %82, float 0x3FE99999A0000000, float %80
  store float %storemerge, ptr %81, align 4, !tbaa !38
  %83 = getelementptr inbounds i8, ptr %0, i64 5016
  store float 0.000000e+00, ptr %83, align 8, !tbaa !39
  %84 = getelementptr inbounds i8, ptr %0, i64 644
  %85 = load float, ptr %84, align 4, !tbaa !40
  %86 = tail call noundef float @_ZSt3powff(float noundef %85, float noundef 2.000000e+00)
  %87 = fmul float %86, 0x3FB99999A0000000
  %88 = getelementptr inbounds i8, ptr %0, i64 5020
  store float %87, ptr %88, align 4, !tbaa !41
  %89 = getelementptr inbounds i8, ptr %0, i64 648
  %90 = load float, ptr %89, align 8, !tbaa !42
  %91 = fmul float %90, 0x3F33A92A40000000
  %92 = fadd float %91, 1.000000e+00
  %93 = getelementptr inbounds i8, ptr %0, i64 5024
  store float %92, ptr %93, align 8, !tbaa !43
  %94 = getelementptr inbounds i8, ptr %0, i64 5028
  store float 0.000000e+00, ptr %94, align 4, !tbaa !44
  %95 = getelementptr inbounds i8, ptr %0, i64 604
  %96 = load float, ptr %95, align 4, !tbaa !45
  %97 = tail call noundef float @_ZSt3powff(float noundef %96, float noundef 2.000000e+00)
  %98 = getelementptr inbounds i8, ptr %0, i64 5032
  %99 = getelementptr inbounds i8, ptr %0, i64 600
  %100 = load float, ptr %99, align 8, !tbaa !46
  %101 = insertelement <2 x float> poison, float %97, i64 0
  %102 = insertelement <2 x float> %101, float %100, i64 1
  %103 = fmul <2 x float> %102, <float 0x3F847AE140000000, float 5.000000e-01>
  store <2 x float> %103, ptr %98, align 8, !tbaa !18
  %104 = getelementptr inbounds i8, ptr %0, i64 752
  store float 0.000000e+00, ptr %104, align 8, !tbaa !47
  %105 = getelementptr inbounds i8, ptr %0, i64 732
  store i32 0, ptr %105, align 4, !tbaa !48
  %106 = getelementptr inbounds i8, ptr %0, i64 736
  store i32 0, ptr %106, align 8, !tbaa !49
  %107 = getelementptr inbounds i8, ptr %0, i64 612
  %108 = getelementptr inbounds i8, ptr %0, i64 740
  %109 = load <2 x float>, ptr %107, align 4, !tbaa !18
  %110 = fmul <2 x float> %109, %109
  %111 = fmul <2 x float> %110, <float 1.000000e+05, float 1.000000e+05>
  %112 = fptosi <2 x float> %111 to <2 x i32>
  store <2 x i32> %112, ptr %108, align 4, !tbaa !50
  %113 = getelementptr inbounds i8, ptr %0, i64 620
  %114 = load float, ptr %113, align 4, !tbaa !51
  %115 = fmul float %114, %114
  %116 = fmul float %115, 1.000000e+05
  %117 = fptosi float %116 to i32
  %118 = getelementptr inbounds i8, ptr %0, i64 748
  store i32 %117, ptr %118, align 4, !tbaa !50
  %119 = getelementptr inbounds i8, ptr %0, i64 652
  %120 = load float, ptr %119, align 4, !tbaa !52
  %121 = tail call noundef float @_ZSt3powff(float noundef %120, float noundef 2.000000e+00)
  %122 = fmul float %121, 1.020000e+03
  %123 = getelementptr inbounds i8, ptr %0, i64 756
  store float %122, ptr %123, align 4, !tbaa !53
  %124 = load float, ptr %119, align 4, !tbaa !52
  %125 = fcmp olt float %124, 0.000000e+00
  br i1 %125, label %126, label %128

126:                                              ; preds = %62
  %127 = fneg float %122
  store float %127, ptr %123, align 4, !tbaa !53
  br label %128

128:                                              ; preds = %126, %62
  %129 = getelementptr inbounds i8, ptr %0, i64 656
  %130 = load float, ptr %129, align 8, !tbaa !54
  %131 = tail call noundef float @_ZSt3powff(float noundef %130, float noundef 2.000000e+00)
  %132 = getelementptr inbounds i8, ptr %0, i64 760
  store float %131, ptr %132, align 8, !tbaa !55
  %133 = load float, ptr %129, align 8, !tbaa !54
  %134 = fcmp olt float %133, 0.000000e+00
  br i1 %134, label %135, label %.preheader

135:                                              ; preds = %128
  %136 = fneg float %131
  store float %136, ptr %132, align 8, !tbaa !55
  br label %.preheader

.preheader:                                       ; preds = %135, %128
  %137 = load float, ptr %123, align 4, !tbaa !53
  %138 = fptosi float %137 to i32
  %139 = tail call i32 @llvm.abs.i32(i32 %138, i1 true)
  %140 = getelementptr inbounds i8, ptr %0, i64 764
  store i32 %139, ptr %140, align 4, !tbaa !56
  %141 = getelementptr inbounds i8, ptr %0, i64 768
  %142 = getelementptr inbounds i8, ptr %0, i64 504
  %143 = getelementptr inbounds i8, ptr %0, i64 4868
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(4100) %141, i8 0, i64 4100, i1 false)
  br label %155

144:                                              ; preds = %155
  %145 = getelementptr inbounds i8, ptr %0, i64 5040
  store i32 0, ptr %145, align 8, !tbaa !57
  %146 = getelementptr inbounds i8, ptr %0, i64 660
  %147 = load float, ptr %146, align 4, !tbaa !58
  %148 = fsub float 1.000000e+00, %147
  %149 = tail call noundef float @_ZSt3powff(float noundef %148, float noundef 2.000000e+00)
  %150 = tail call float @llvm.fmuladd.f32(float %149, float 2.000000e+04, float 3.200000e+01)
  %151 = fptosi float %150 to i32
  %152 = getelementptr inbounds i8, ptr %0, i64 5044
  store i32 %151, ptr %152, align 4, !tbaa !59
  %153 = load float, ptr %146, align 4, !tbaa !58
  %154 = fcmp oeq float %153, 0.000000e+00
  br i1 %154, label %162, label %163

155:                                              ; preds = %.preheader, %155
  %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %155 ]
  %156 = tail call noundef i32 @_ZN6SoLoud4Misc3Prg4randEv(ptr noundef nonnull align 4 dereferenceable(68) %142)
  %157 = urem i32 %156, 10001
  %158 = uitofp nneg i32 %157 to float
  %159 = fdiv float %158, 1.000000e+04
  %160 = tail call float @llvm.fmuladd.f32(float %159, float 2.000000e+00, float -1.000000e+00)
  %161 = getelementptr inbounds [32 x float], ptr %143, i64 0, i64 %indvars.iv
  store float %160, ptr %161, align 4, !tbaa !18
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 32
  br i1 %exitcond.not, label %144, label %155, !llvm.loop !60

162:                                              ; preds = %144
  store i32 0, ptr %152, align 4, !tbaa !59
  br label %163

163:                                              ; preds = %144, %162, %61
  ret void
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt3powff(float noundef, float 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: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #2

declare noundef i32 @_ZN6SoLoud4Misc3Prg4randEv(ptr noundef nonnull align 4 dereferenceable(68)) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #4

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "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 nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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, !8, i64 684}
!6 = !{!"_ZTSN6SoLoud12SfxrInstanceE", !7, i64 0, !14, i64 496, !15, i64 504, !16, i64 572, !17, i64 680, !8, i64 684, !12, i64 688, !12, i64 696, !12, i64 704, !12, i64 712, !8, i64 720, !11, i64 724, !11, i64 728, !8, i64 732, !8, i64 736, !9, i64 740, !11, i64 752, !11, i64 756, !11, i64 760, !8, i64 764, !9, i64 768, !8, i64 4864, !9, i64 4868, !11, i64 4996, !11, i64 5000, !11, i64 5004, !11, i64 5008, !11, i64 5012, !11, i64 5016, !11, i64 5020, !11, i64 5024, !11, i64 5028, !11, i64 5032, !11, i64 5036, !8, i64 5040, !8, i64 5044, !8, i64 5048, !8, i64 5052, !12, i64 5056}
!7 = !{!"_ZTSN6SoLoud19AudioSourceInstanceE", !8, i64 8, !8, i64 12, !8, i64 16, !11, i64 20, !9, i64 24, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !8, i64 72, !11, i64 76, !11, i64 80, !12, i64 88, !12, i64 96, !13, i64 104, !13, i64 152, !13, i64 200, !13, i64 248, !13, i64 296, !8, i64 344, !9, i64 348, !8, i64 380, !8, i64 384, !9, i64 392, !9, i64 456, !8, i64 472, !8, i64 476, !8, i64 480, !12, i64 488}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"float", !9, i64 0}
!12 = !{!"double", !9, i64 0}
!13 = !{!"_ZTSN6SoLoud5FaderE", !11, i64 0, !11, i64 4, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !11, i64 40, !8, i64 44}
!14 = !{!"any pointer", !9, i64 0}
!15 = !{!"_ZTSN6SoLoud4Misc3PrgE", !9, i64 0, !8, i64 64}
!16 = !{!"_ZTSN6SoLoud10SfxrParamsE", !8, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !17, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104}
!17 = !{!"bool", !9, i64 0}
!18 = !{!11, !11, i64 0}
!19 = !{!6, !8, i64 720}
!20 = !{!12, !12, i64 0}
!21 = !{!6, !11, i64 584}
!22 = !{!6, !12, i64 704}
!23 = !{!6, !11, i64 588}
!24 = !{!6, !12, i64 712}
!25 = !{!6, !11, i64 592}
!26 = !{!6, !11, i64 724}
!27 = !{!6, !11, i64 596}
!28 = !{!6, !11, i64 728}
!29 = !{!6, !11, i64 668}
!30 = !{!6, !8, i64 5048}
!31 = !{!6, !11, i64 664}
!32 = !{!6, !8, i64 5052}
!33 = !{!6, !11, i64 636}
!34 = !{!6, !11, i64 5004}
!35 = !{!6, !11, i64 640}
!36 = !{!6, !11, i64 5008}
!37 = !{!6, !11, i64 632}
!38 = !{!6, !11, i64 5012}
!39 = !{!6, !11, i64 5016}
!40 = !{!6, !11, i64 644}
!41 = !{!6, !11, i64 5020}
!42 = !{!6, !11, i64 648}
!43 = !{!6, !11, i64 5024}
!44 = !{!6, !11, i64 5028}
!45 = !{!6, !11, i64 604}
!46 = !{!6, !11, i64 600}
!47 = !{!6, !11, i64 752}
!48 = !{!6, !8, i64 732}
!49 = !{!6, !8, i64 736}
!50 = !{!8, !8, i64 0}
!51 = !{!6, !11, i64 620}
!52 = !{!6, !11, i64 652}
!53 = !{!6, !11, i64 756}
!54 = !{!6, !11, i64 656}
!55 = !{!6, !11, i64 760}
!56 = !{!6, !8, i64 764}
!57 = !{!6, !8, i64 5040}
!58 = !{!6, !11, i64 660}
!59 = !{!6, !8, i64 5044}
!60 = distinct !{!60, !61}
!61 = !{!"llvm.loop.mustprogress"}


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