; LLVM IR from Overload-Technologies/Overload :: Dependencies/soloud/src/audiosource/monotone (soloud_monotone)

; 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::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::MonotoneInstance" = type { %"class.SoLoud::AudioSourceInstance", ptr, [12 x %"struct.SoLoud::MonotoneChannel"], [12 x %"struct.SoLoud::MonotoneHardwareChannel"], i32, i32, i32, i32, i32, i32 }
%"struct.SoLoud::MonotoneChannel" = type { i32, i32, [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%"struct.SoLoud::MonotoneHardwareChannel" = type { i32, float, float }
%"class.SoLoud::Monotone" = type { %"class.SoLoud::AudioSource", [800 x i32], [32 x i32], i32, i32, %"struct.SoLoud::MonotoneSong" }
%"class.SoLoud::AudioSource" = type { ptr, i32, float, float, i32, i32, float, float, float, i32, float, [8 x ptr], ptr, ptr, ptr, i32, double }
%"struct.SoLoud::MonotoneSong" = type { ptr, ptr, i8, i8, i8, i8, [256 x i8], ptr }

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6SoLoud16MonotoneInstance8getAudioEPfjj(ptr noundef nonnull align 8 dereferenceable(1344) %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) unnamed_addr #1 align 2 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, 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 i32, align 4
  %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 i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca float, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !9
  %28 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %29 = getelementptr inbounds %"class.SoLoud::AudioSourceInstance", ptr %28, i32 0, i32 9
  %30 = load float, ptr %29, align 4, !tbaa !11
  %31 = fdiv float %30, 6.000000e+01
  %32 = call noundef float @_ZSt5floorf(float noundef %31)
  %33 = fptosi float %32 to i32
  store i32 %33, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %34

34:                                               ; preds = %61, %4
  %35 = load i32, ptr %10, align 4, !tbaa !9
  %36 = icmp ult i32 %35, 12
  br i1 %36, label %37, label %64

37:                                               ; preds = %34
  %38 = load i32, ptr %10, align 4, !tbaa !9
  %39 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %40 = load ptr, ptr %39, align 8, !tbaa !16
  %41 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %40, i32 0, i32 3
  %42 = load i32, ptr %41, align 8, !tbaa !18
  %43 = icmp ult i32 %38, %42
  br i1 %43, label %44, label %53

44:                                               ; preds = %37
  %45 = load i32, ptr %10, align 4, !tbaa !9
  %46 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %47 = load ptr, ptr %46, align 8, !tbaa !16
  %48 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %47, i32 0, i32 5
  %49 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %48, i32 0, i32 4
  %50 = load i8, ptr %49, align 2, !tbaa !22
  %51 = zext i8 %50 to i32
  %52 = icmp ult i32 %45, %51
  br label %53

53:                                               ; preds = %44, %37
  %54 = phi i1 [ false, %37 ], [ %52, %44 ]
  %55 = zext i1 %54 to i32
  %56 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %57 = load i32, ptr %10, align 4, !tbaa !9
  %58 = zext i32 %57 to i64
  %59 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %56, i64 0, i64 %58
  %60 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %59, i32 0, i32 0
  store i32 %55, ptr %60, align 4, !tbaa !23
  br label %61

61:                                               ; preds = %53
  %62 = load i32, ptr %10, align 4, !tbaa !9
  %63 = add i32 %62, 1
  store i32 %63, ptr %10, align 4, !tbaa !9
  br label %34, !llvm.loop !25

64:                                               ; preds = %34
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %65

65:                                               ; preds = %862, %64
  %66 = load i32, ptr %10, align 4, !tbaa !9
  %67 = load i32, ptr %7, align 4, !tbaa !9
  %68 = icmp ult i32 %66, %67
  br i1 %68, label %69, label %865

69:                                               ; preds = %65
  %70 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 8
  %71 = load i32, ptr %70, align 8, !tbaa !27
  %72 = load i32, ptr %9, align 4, !tbaa !9
  %73 = srem i32 %71, %72
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %75, label %797

75:                                               ; preds = %69
  %76 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 9
  %77 = load i32, ptr %76, align 4, !tbaa !28
  %78 = add nsw i32 %77, 1
  store i32 %78, ptr %76, align 4, !tbaa !28
  %79 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 9
  %80 = load i32, ptr %79, align 4, !tbaa !28
  %81 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 5
  %82 = load i32, ptr %81, align 4, !tbaa !29
  %83 = icmp sge i32 %80, %82
  br i1 %83, label %84, label %470

84:                                               ; preds = %75
  %85 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 9
  store i32 0, ptr %85, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %86 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 6
  %87 = load i32, ptr %86, align 8, !tbaa !30
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %89 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %90 = load ptr, ptr %89, align 8, !tbaa !16
  %91 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %90, i32 0, i32 5
  %92 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %91, i32 0, i32 6
  %93 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 6
  %94 = load i32, ptr %93, align 8, !tbaa !30
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [256 x i8], ptr %92, i64 0, i64 %95
  %97 = load i8, ptr %96, align 1, !tbaa !31
  %98 = zext i8 %97 to i32
  store i32 %98, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %99

99:                                               ; preds = %432, %84
  %100 = load i32, ptr %15, align 4, !tbaa !9
  %101 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %102 = load ptr, ptr %101, align 8, !tbaa !16
  %103 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %102, i32 0, i32 5
  %104 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %103, i32 0, i32 4
  %105 = load i8, ptr %104, align 2, !tbaa !22
  %106 = zext i8 %105 to i32
  %107 = icmp slt i32 %100, %106
  br i1 %107, label %108, label %435

108:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %109 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %110 = load ptr, ptr %109, align 8, !tbaa !16
  %111 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %110, i32 0, i32 5
  %112 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %111, i32 0, i32 7
  %113 = load ptr, ptr %112, align 8, !tbaa !32
  %114 = load i32, ptr %14, align 4, !tbaa !9
  %115 = mul nsw i32 %114, 64
  %116 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 7
  %117 = load i32, ptr %116, align 4, !tbaa !33
  %118 = add nsw i32 %115, %117
  %119 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %120 = load ptr, ptr %119, align 8, !tbaa !16
  %121 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %120, i32 0, i32 5
  %122 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %121, i32 0, i32 4
  %123 = load i8, ptr %122, align 2, !tbaa !22
  %124 = zext i8 %123 to i32
  %125 = mul nsw i32 %118, %124
  %126 = load i32, ptr %15, align 4, !tbaa !9
  %127 = add nsw i32 %125, %126
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds i32, ptr %113, i64 %128
  %130 = load i32, ptr %129, align 4, !tbaa !9
  store i32 %130, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %131 = load i32, ptr %16, align 4, !tbaa !9
  %132 = lshr i32 %131, 9
  %133 = and i32 %132, 127
  store i32 %133, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %134 = load i32, ptr %16, align 4, !tbaa !9
  %135 = lshr i32 %134, 6
  %136 = and i32 %135, 7
  store i32 %136, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %137 = load i32, ptr %16, align 4, !tbaa !9
  %138 = and i32 %137, 63
  store i32 %138, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %139 = load i32, ptr %16, align 4, !tbaa !9
  %140 = lshr i32 %139, 3
  %141 = and i32 %140, 7
  store i32 %141, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  %142 = load i32, ptr %16, align 4, !tbaa !9
  %143 = lshr i32 %142, 0
  %144 = and i32 %143, 7
  store i32 %144, ptr %21, align 4, !tbaa !9
  %145 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %146 = load i32, ptr %15, align 4, !tbaa !9
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %145, i64 0, i64 %147
  %149 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %148, i32 0, i32 3
  store i32 0, ptr %149, align 4, !tbaa !34
  %150 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %151 = load i32, ptr %15, align 4, !tbaa !9
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %150, i64 0, i64 %152
  %154 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %153, i32 0, i32 5
  store i32 0, ptr %154, align 4, !tbaa !36
  %155 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %156 = load i32, ptr %15, align 4, !tbaa !9
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %155, i64 0, i64 %157
  %159 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %158, i32 0, i32 8
  store i32 0, ptr %159, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  %160 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %161 = load i32, ptr %15, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %160, i64 0, i64 %162
  %164 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %163, i32 0, i32 2
  %165 = getelementptr inbounds [3 x i32], ptr %164, i64 0, i64 0
  %166 = load i32, ptr %165, align 8, !tbaa !9
  store i32 %166, ptr %22, align 4, !tbaa !9
  %167 = load i32, ptr %17, align 4, !tbaa !9
  %168 = icmp eq i32 %167, 127
  br i1 %168, label %169, label %203

169:                                              ; preds = %108
  %170 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %171 = load i32, ptr %15, align 4, !tbaa !9
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %170, i64 0, i64 %172
  %174 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %173, i32 0, i32 1
  store i32 0, ptr %174, align 4, !tbaa !38
  %175 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %176 = load i32, ptr %15, align 4, !tbaa !9
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %175, i64 0, i64 %177
  %179 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %178, i32 0, i32 2
  %180 = getelementptr inbounds [3 x i32], ptr %179, i64 0, i64 0
  store i32 0, ptr %180, align 8, !tbaa !9
  %181 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %182 = load i32, ptr %15, align 4, !tbaa !9
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %181, i64 0, i64 %183
  %185 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %184, i32 0, i32 2
  %186 = getelementptr inbounds [3 x i32], ptr %185, i64 0, i64 1
  store i32 0, ptr %186, align 4, !tbaa !9
  %187 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %188 = load i32, ptr %15, align 4, !tbaa !9
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %187, i64 0, i64 %189
  %191 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %190, i32 0, i32 2
  %192 = getelementptr inbounds [3 x i32], ptr %191, i64 0, i64 2
  store i32 0, ptr %192, align 8, !tbaa !9
  %193 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %194 = load i32, ptr %15, align 4, !tbaa !9
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %193, i64 0, i64 %195
  %197 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %196, i32 0, i32 3
  store i32 0, ptr %197, align 4, !tbaa !34
  %198 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %199 = load i32, ptr %15, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %198, i64 0, i64 %200
  %202 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %201, i32 0, i32 6
  store i32 0, ptr %202, align 8, !tbaa !39
  br label %276

203:                                              ; preds = %108
  %204 = load i32, ptr %17, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %268

206:                                              ; preds = %203
  %207 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %208 = load i32, ptr %15, align 4, !tbaa !9
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %207, i64 0, i64 %209
  %211 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %210, i32 0, i32 1
  store i32 1, ptr %211, align 4, !tbaa !38
  %212 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %213 = load ptr, ptr %212, align 8, !tbaa !16
  %214 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %213, i32 0, i32 1
  %215 = load i32, ptr %17, align 4, !tbaa !9
  %216 = mul i32 %215, 8
  %217 = zext i32 %216 to i64
  %218 = getelementptr inbounds [800 x i32], ptr %214, i64 0, i64 %217
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %221 = load i32, ptr %15, align 4, !tbaa !9
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %220, i64 0, i64 %222
  %224 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %223, i32 0, i32 2
  %225 = getelementptr inbounds [3 x i32], ptr %224, i64 0, i64 0
  store i32 %219, ptr %225, align 8, !tbaa !9
  %226 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %227 = load i32, ptr %15, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %226, i64 0, i64 %228
  %230 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %229, i32 0, i32 2
  %231 = getelementptr inbounds [3 x i32], ptr %230, i64 0, i64 0
  %232 = load i32, ptr %231, align 8, !tbaa !9
  %233 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %234 = load i32, ptr %15, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %233, i64 0, i64 %235
  %237 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %236, i32 0, i32 2
  %238 = getelementptr inbounds [3 x i32], ptr %237, i64 0, i64 1
  store i32 %232, ptr %238, align 4, !tbaa !9
  %239 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %240 = load i32, ptr %15, align 4, !tbaa !9
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %239, i64 0, i64 %241
  %243 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %242, i32 0, i32 2
  %244 = getelementptr inbounds [3 x i32], ptr %243, i64 0, i64 0
  %245 = load i32, ptr %244, align 8, !tbaa !9
  %246 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %247 = load i32, ptr %15, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %246, i64 0, i64 %248
  %250 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %249, i32 0, i32 2
  %251 = getelementptr inbounds [3 x i32], ptr %250, i64 0, i64 2
  store i32 %245, ptr %251, align 8, !tbaa !9
  %252 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %253 = load i32, ptr %15, align 4, !tbaa !9
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %252, i64 0, i64 %254
  %256 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %255, i32 0, i32 3
  store i32 0, ptr %256, align 4, !tbaa !34
  %257 = load i32, ptr %17, align 4, !tbaa !9
  %258 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %259 = load i32, ptr %15, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %258, i64 0, i64 %260
  %262 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %261, i32 0, i32 6
  store i32 %257, ptr %262, align 8, !tbaa !39
  %263 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %264 = load i32, ptr %15, align 4, !tbaa !9
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %263, i64 0, i64 %265
  %267 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %266, i32 0, i32 9
  store i32 0, ptr %267, align 4, !tbaa !40
  br label %275

268:                                              ; preds = %203
  %269 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %270 = load i32, ptr %15, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %269, i64 0, i64 %271
  %273 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %272, i32 0, i32 6
  %274 = load i32, ptr %273, align 8, !tbaa !39
  store i32 %274, ptr %17, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %268, %206
  br label %276

276:                                              ; preds = %275, %169
  %277 = load i32, ptr %18, align 4, !tbaa !9
  switch i32 %277, label %431 [
    i32 0, label %278
    i32 1, label %323
    i32 2, label %330
    i32 3, label %338
    i32 4, label %398
    i32 5, label %424
    i32 6, label %426
    i32 7, label %428
  ]

278:                                              ; preds = %276
  %279 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %280 = load ptr, ptr %279, align 8, !tbaa !16
  %281 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %280, i32 0, i32 1
  %282 = load i32, ptr %17, align 4, !tbaa !9
  %283 = load i32, ptr %20, align 4, !tbaa !9
  %284 = add i32 %282, %283
  %285 = mul i32 %284, 8
  %286 = zext i32 %285 to i64
  %287 = getelementptr inbounds [800 x i32], ptr %281, i64 0, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !9
  %289 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %290 = load i32, ptr %15, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %289, i64 0, i64 %291
  %293 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %292, i32 0, i32 2
  %294 = getelementptr inbounds [3 x i32], ptr %293, i64 0, i64 1
  store i32 %288, ptr %294, align 4, !tbaa !9
  %295 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %296 = load ptr, ptr %295, align 8, !tbaa !16
  %297 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %296, i32 0, i32 1
  %298 = load i32, ptr %17, align 4, !tbaa !9
  %299 = load i32, ptr %21, align 4, !tbaa !9
  %300 = add i32 %298, %299
  %301 = mul i32 %300, 8
  %302 = zext i32 %301 to i64
  %303 = getelementptr inbounds [800 x i32], ptr %297, i64 0, i64 %302
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %306 = load i32, ptr %15, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %305, i64 0, i64 %307
  %309 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %308, i32 0, i32 2
  %310 = getelementptr inbounds [3 x i32], ptr %309, i64 0, i64 2
  store i32 %304, ptr %310, align 8, !tbaa !9
  %311 = load i32, ptr %20, align 4, !tbaa !9
  %312 = icmp ne i32 %311, 0
  br i1 %312, label %316, label %313

313:                                              ; preds = %278
  %314 = load i32, ptr %21, align 4, !tbaa !9
  %315 = icmp ne i32 %314, 0
  br i1 %315, label %316, label %322

316:                                              ; preds = %313, %278
  %317 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %318 = load i32, ptr %15, align 4, !tbaa !9
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %317, i64 0, i64 %319
  %321 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %320, i32 0, i32 5
  store i32 1, ptr %321, align 4, !tbaa !36
  br label %322

322:                                              ; preds = %316, %313
  br label %431

323:                                              ; preds = %276
  %324 = load i32, ptr %19, align 4, !tbaa !9
  %325 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %326 = load i32, ptr %15, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %325, i64 0, i64 %327
  %329 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %328, i32 0, i32 3
  store i32 %324, ptr %329, align 4, !tbaa !34
  br label %431

330:                                              ; preds = %276
  %331 = load i32, ptr %19, align 4, !tbaa !9
  %332 = sub nsw i32 0, %331
  %333 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %334 = load i32, ptr %15, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %333, i64 0, i64 %335
  %337 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %336, i32 0, i32 3
  store i32 %332, ptr %337, align 4, !tbaa !34
  br label %431

338:                                              ; preds = %276
  %339 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %340 = load ptr, ptr %339, align 8, !tbaa !16
  %341 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %340, i32 0, i32 1
  %342 = load i32, ptr %17, align 4, !tbaa !9
  %343 = mul i32 %342, 8
  %344 = zext i32 %343 to i64
  %345 = getelementptr inbounds [800 x i32], ptr %341, i64 0, i64 %344
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %348 = load i32, ptr %15, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %347, i64 0, i64 %349
  %351 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %350, i32 0, i32 7
  store i32 %346, ptr %351, align 4, !tbaa !41
  %352 = load i32, ptr %22, align 4, !tbaa !9
  %353 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %354 = load i32, ptr %15, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %353, i64 0, i64 %355
  %357 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %356, i32 0, i32 7
  %358 = load i32, ptr %357, align 4, !tbaa !41
  %359 = icmp ne i32 %352, %358
  br i1 %359, label %360, label %391

360:                                              ; preds = %338
  %361 = load i32, ptr %22, align 4, !tbaa !9
  %362 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %363 = load i32, ptr %15, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %362, i64 0, i64 %364
  %366 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %365, i32 0, i32 2
  %367 = getelementptr inbounds [3 x i32], ptr %366, i64 0, i64 0
  store i32 %361, ptr %367, align 8, !tbaa !9
  %368 = load i32, ptr %19, align 4, !tbaa !9
  %369 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %370 = load i32, ptr %15, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %369, i64 0, i64 %371
  %373 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %372, i32 0, i32 3
  store i32 %368, ptr %373, align 4, !tbaa !34
  %374 = load i32, ptr %22, align 4, !tbaa !9
  %375 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %376 = load i32, ptr %15, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %375, i64 0, i64 %377
  %379 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %378, i32 0, i32 7
  %380 = load i32, ptr %379, align 4, !tbaa !41
  %381 = icmp sgt i32 %374, %380
  br i1 %381, label %382, label %390

382:                                              ; preds = %360
  %383 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %384 = load i32, ptr %15, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %383, i64 0, i64 %385
  %387 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %386, i32 0, i32 3
  %388 = load i32, ptr %387, align 4, !tbaa !34
  %389 = mul nsw i32 %388, -1
  store i32 %389, ptr %387, align 4, !tbaa !34
  br label %390

390:                                              ; preds = %382, %360
  br label %397

391:                                              ; preds = %338
  %392 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %393 = load i32, ptr %15, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %392, i64 0, i64 %394
  %396 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %395, i32 0, i32 7
  store i32 0, ptr %396, align 4, !tbaa !41
  br label %397

397:                                              ; preds = %391, %390
  br label %431

398:                                              ; preds = %276
  %399 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %400 = load i32, ptr %15, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %399, i64 0, i64 %401
  %403 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %402, i32 0, i32 8
  store i32 1, ptr %403, align 8, !tbaa !37
  %404 = load i32, ptr %21, align 4, !tbaa !9
  %405 = icmp ne i32 %404, 0
  br i1 %405, label %406, label %413

406:                                              ; preds = %398
  %407 = load i32, ptr %21, align 4, !tbaa !9
  %408 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %409 = load i32, ptr %15, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %408, i64 0, i64 %410
  %412 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %411, i32 0, i32 10
  store i32 %407, ptr %412, align 8, !tbaa !42
  br label %413

413:                                              ; preds = %406, %398
  %414 = load i32, ptr %20, align 4, !tbaa !9
  %415 = icmp ne i32 %414, 0
  br i1 %415, label %416, label %423

416:                                              ; preds = %413
  %417 = load i32, ptr %20, align 4, !tbaa !9
  %418 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %419 = load i32, ptr %15, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %418, i64 0, i64 %420
  %422 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %421, i32 0, i32 11
  store i32 %417, ptr %422, align 4, !tbaa !43
  br label %423

423:                                              ; preds = %416, %413
  br label %431

424:                                              ; preds = %276
  %425 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %425, ptr %11, align 4, !tbaa !9
  store i32 1, ptr %13, align 4, !tbaa !9
  br label %431

426:                                              ; preds = %276
  %427 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %427, ptr %12, align 4, !tbaa !9
  store i32 1, ptr %13, align 4, !tbaa !9
  br label %431

428:                                              ; preds = %276
  %429 = load i32, ptr %19, align 4, !tbaa !9
  %430 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 5
  store i32 %429, ptr %430, align 4, !tbaa !29
  br label %431

431:                                              ; preds = %428, %426, %424, %423, %397, %330, %323, %322, %276
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %432

432:                                              ; preds = %431
  %433 = load i32, ptr %15, align 4, !tbaa !9
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %15, align 4, !tbaa !9
  br label %99, !llvm.loop !44

435:                                              ; preds = %99
  %436 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 7
  %437 = load i32, ptr %436, align 4, !tbaa !33
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %436, align 4, !tbaa !33
  %439 = load i32, ptr %13, align 4, !tbaa !9
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %446

441:                                              ; preds = %435
  %442 = load i32, ptr %12, align 4, !tbaa !9
  %443 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 7
  store i32 %442, ptr %443, align 4, !tbaa !33
  %444 = load i32, ptr %11, align 4, !tbaa !9
  %445 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 6
  store i32 %444, ptr %445, align 8, !tbaa !30
  br label %446

446:                                              ; preds = %441, %435
  %447 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 7
  %448 = load i32, ptr %447, align 4, !tbaa !33
  %449 = icmp eq i32 %448, 64
  br i1 %449, label %450, label %469

450:                                              ; preds = %446
  %451 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 7
  store i32 0, ptr %451, align 4, !tbaa !33
  %452 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 6
  %453 = load i32, ptr %452, align 8, !tbaa !30
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %452, align 8, !tbaa !30
  %455 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %456 = load ptr, ptr %455, align 8, !tbaa !16
  %457 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %456, i32 0, i32 5
  %458 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %457, i32 0, i32 6
  %459 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 6
  %460 = load i32, ptr %459, align 8, !tbaa !30
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds [256 x i8], ptr %458, i64 0, i64 %461
  %463 = load i8, ptr %462, align 1, !tbaa !31
  %464 = zext i8 %463 to i32
  %465 = icmp eq i32 %464, 255
  br i1 %465, label %466, label %468

466:                                              ; preds = %450
  %467 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 6
  store i32 0, ptr %467, align 8, !tbaa !30
  br label %468

468:                                              ; preds = %466, %450
  br label %469

469:                                              ; preds = %468, %446
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %470

470:                                              ; preds = %469, %75
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %659, %470
  %472 = load i32, ptr %23, align 4, !tbaa !9
  %473 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %474 = load ptr, ptr %473, align 8, !tbaa !16
  %475 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %474, i32 0, i32 5
  %476 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %475, i32 0, i32 4
  %477 = load i8, ptr %476, align 2, !tbaa !22
  %478 = zext i8 %477 to i32
  %479 = icmp slt i32 %472, %478
  br i1 %479, label %480, label %662

480:                                              ; preds = %471
  %481 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %482 = load i32, ptr %23, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %481, i64 0, i64 %483
  %485 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %484, i32 0, i32 1
  %486 = load i32, ptr %485, align 4, !tbaa !38
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %488, label %658

488:                                              ; preds = %480
  %489 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %490 = load i32, ptr %23, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %489, i64 0, i64 %491
  %493 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %492, i32 0, i32 8
  %494 = load i32, ptr %493, align 8, !tbaa !37
  %495 = icmp ne i32 %494, 0
  br i1 %495, label %496, label %557

496:                                              ; preds = %488
  %497 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %498 = load ptr, ptr %497, align 8, !tbaa !16
  %499 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %498, i32 0, i32 1
  %500 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %501 = load i32, ptr %23, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %500, i64 0, i64 %502
  %504 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %503, i32 0, i32 6
  %505 = load i32, ptr %504, align 8, !tbaa !39
  %506 = mul nsw i32 %505, 8
  %507 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %508 = load ptr, ptr %507, align 8, !tbaa !16
  %509 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %508, i32 0, i32 2
  %510 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %511 = load i32, ptr %23, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %510, i64 0, i64 %512
  %514 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %513, i32 0, i32 9
  %515 = load i32, ptr %514, align 4, !tbaa !40
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds [32 x i32], ptr %509, i64 0, i64 %516
  %518 = load i32, ptr %517, align 4, !tbaa !9
  %519 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %520 = load i32, ptr %23, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %519, i64 0, i64 %521
  %523 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %522, i32 0, i32 10
  %524 = load i32, ptr %523, align 8, !tbaa !42
  %525 = mul nsw i32 %518, %524
  %526 = sdiv i32 %525, 64
  %527 = add nsw i32 %506, %526
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds [800 x i32], ptr %499, i64 0, i64 %528
  %530 = load i32, ptr %529, align 4, !tbaa !9
  %531 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %532 = load i32, ptr %23, align 4, !tbaa !9
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %531, i64 0, i64 %533
  %535 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %534, i32 0, i32 2
  %536 = getelementptr inbounds [3 x i32], ptr %535, i64 0, i64 0
  store i32 %530, ptr %536, align 8, !tbaa !9
  %537 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %538 = load i32, ptr %23, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %537, i64 0, i64 %539
  %541 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %540, i32 0, i32 11
  %542 = load i32, ptr %541, align 4, !tbaa !43
  %543 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %544 = load i32, ptr %23, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %543, i64 0, i64 %545
  %547 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %546, i32 0, i32 9
  %548 = load i32, ptr %547, align 4, !tbaa !40
  %549 = add nsw i32 %548, %542
  store i32 %549, ptr %547, align 4, !tbaa !40
  %550 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %551 = load i32, ptr %23, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %550, i64 0, i64 %552
  %554 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %553, i32 0, i32 9
  %555 = load i32, ptr %554, align 4, !tbaa !40
  %556 = srem i32 %555, 32
  store i32 %556, ptr %554, align 4, !tbaa !40
  br label %557

557:                                              ; preds = %496, %488
  %558 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %559 = load i32, ptr %23, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %558, i64 0, i64 %560
  %562 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %561, i32 0, i32 3
  %563 = load i32, ptr %562, align 4, !tbaa !34
  %564 = icmp ne i32 %563, 0
  br i1 %564, label %565, label %657

565:                                              ; preds = %557
  %566 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 9
  %567 = load i32, ptr %566, align 4, !tbaa !28
  %568 = icmp ne i32 %567, 0
  br i1 %568, label %569, label %657

569:                                              ; preds = %565
  %570 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %571 = load i32, ptr %23, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %570, i64 0, i64 %572
  %574 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %573, i32 0, i32 3
  %575 = load i32, ptr %574, align 4, !tbaa !34
  %576 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %577 = load i32, ptr %23, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %576, i64 0, i64 %578
  %580 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %579, i32 0, i32 2
  %581 = getelementptr inbounds [3 x i32], ptr %580, i64 0, i64 0
  %582 = load i32, ptr %581, align 8, !tbaa !9
  %583 = add nsw i32 %582, %575
  store i32 %583, ptr %581, align 8, !tbaa !9
  %584 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %585 = load i32, ptr %23, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %584, i64 0, i64 %586
  %588 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %587, i32 0, i32 7
  %589 = load i32, ptr %588, align 4, !tbaa !41
  %590 = icmp ne i32 %589, 0
  br i1 %590, label %591, label %656

591:                                              ; preds = %569
  %592 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %593 = load i32, ptr %23, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %592, i64 0, i64 %594
  %596 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %595, i32 0, i32 3
  %597 = load i32, ptr %596, align 4, !tbaa !34
  %598 = icmp sgt i32 %597, 0
  br i1 %598, label %599, label %614

599:                                              ; preds = %591
  %600 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %601 = load i32, ptr %23, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %600, i64 0, i64 %602
  %604 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %603, i32 0, i32 2
  %605 = getelementptr inbounds [3 x i32], ptr %604, i64 0, i64 0
  %606 = load i32, ptr %605, align 8, !tbaa !9
  %607 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %608 = load i32, ptr %23, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %607, i64 0, i64 %609
  %611 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %610, i32 0, i32 7
  %612 = load i32, ptr %611, align 4, !tbaa !41
  %613 = icmp sge i32 %606, %612
  br i1 %613, label %637, label %614

614:                                              ; preds = %599, %591
  %615 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %616 = load i32, ptr %23, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %615, i64 0, i64 %617
  %619 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %618, i32 0, i32 3
  %620 = load i32, ptr %619, align 4, !tbaa !34
  %621 = icmp slt i32 %620, 0
  br i1 %621, label %622, label %655

622:                                              ; preds = %614
  %623 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %624 = load i32, ptr %23, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %623, i64 0, i64 %625
  %627 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %626, i32 0, i32 2
  %628 = getelementptr inbounds [3 x i32], ptr %627, i64 0, i64 0
  %629 = load i32, ptr %628, align 8, !tbaa !9
  %630 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %631 = load i32, ptr %23, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %630, i64 0, i64 %632
  %634 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %633, i32 0, i32 7
  %635 = load i32, ptr %634, align 4, !tbaa !41
  %636 = icmp sle i32 %629, %635
  br i1 %636, label %637, label %655

637:                                              ; preds = %622, %599
  %638 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %639 = load i32, ptr %23, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %638, i64 0, i64 %640
  %642 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %641, i32 0, i32 7
  %643 = load i32, ptr %642, align 4, !tbaa !41
  %644 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %645 = load i32, ptr %23, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %644, i64 0, i64 %646
  %648 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %647, i32 0, i32 2
  %649 = getelementptr inbounds [3 x i32], ptr %648, i64 0, i64 0
  store i32 %643, ptr %649, align 8, !tbaa !9
  %650 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %651 = load i32, ptr %23, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %650, i64 0, i64 %652
  %654 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %653, i32 0, i32 7
  store i32 0, ptr %654, align 4, !tbaa !41
  br label %655

655:                                              ; preds = %637, %622, %614
  br label %656

656:                                              ; preds = %655, %569
  br label %657

657:                                              ; preds = %656, %565, %557
  br label %658

658:                                              ; preds = %657, %480
  br label %659

659:                                              ; preds = %658
  %660 = load i32, ptr %23, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %23, align 4, !tbaa !9
  br label %471, !llvm.loop !45

662:                                              ; preds = %471
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  store i32 0, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %676, %662
  %664 = load i32, ptr %23, align 4, !tbaa !9
  %665 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %666 = load ptr, ptr %665, align 8, !tbaa !16
  %667 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %666, i32 0, i32 3
  %668 = load i32, ptr %667, align 8, !tbaa !18
  %669 = icmp slt i32 %664, %668
  br i1 %669, label %670, label %679

670:                                              ; preds = %663
  %671 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %672 = load i32, ptr %23, align 4, !tbaa !9
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %671, i64 0, i64 %673
  %675 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %674, i32 0, i32 2
  store float 0.000000e+00, ptr %675, align 4, !tbaa !46
  br label %676

676:                                              ; preds = %670
  %677 = load i32, ptr %23, align 4, !tbaa !9
  %678 = add nsw i32 %677, 1
  store i32 %678, ptr %23, align 4, !tbaa !9
  br label %663, !llvm.loop !47

679:                                              ; preds = %663
  br label %680

680:                                              ; preds = %781, %679
  %681 = load i32, ptr %24, align 4, !tbaa !9
  %682 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %683 = load ptr, ptr %682, align 8, !tbaa !16
  %684 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %683, i32 0, i32 3
  %685 = load i32, ptr %684, align 8, !tbaa !18
  %686 = icmp slt i32 %681, %685
  br i1 %686, label %687, label %696

687:                                              ; preds = %680
  %688 = load i32, ptr %25, align 4, !tbaa !9
  %689 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %690 = load ptr, ptr %689, align 8, !tbaa !16
  %691 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %690, i32 0, i32 5
  %692 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %691, i32 0, i32 4
  %693 = load i8, ptr %692, align 2, !tbaa !22
  %694 = zext i8 %693 to i32
  %695 = icmp slt i32 %688, %694
  br label %696

696:                                              ; preds = %687, %680
  %697 = phi i1 [ false, %680 ], [ %695, %687 ]
  br i1 %697, label %698, label %796

698:                                              ; preds = %696
  %699 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %700 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %701 = load i32, ptr %700, align 8, !tbaa !48
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %699, i64 0, i64 %702
  %704 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %703, i32 0, i32 1
  %705 = load i32, ptr %704, align 4, !tbaa !38
  %706 = icmp ne i32 %705, 0
  br i1 %706, label %707, label %781

707:                                              ; preds = %698
  %708 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %709 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %710 = load i32, ptr %709, align 8, !tbaa !48
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %708, i64 0, i64 %711
  %713 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %712, i32 0, i32 5
  %714 = load i32, ptr %713, align 4, !tbaa !36
  %715 = icmp ne i32 %714, 0
  br i1 %715, label %716, label %759

716:                                              ; preds = %707
  %717 = getelementptr inbounds %"class.SoLoud::AudioSourceInstance", ptr %28, i32 0, i32 9
  %718 = load float, ptr %717, align 4, !tbaa !11
  %719 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %720 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %721 = load i32, ptr %720, align 8, !tbaa !48
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %719, i64 0, i64 %722
  %724 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %723, i32 0, i32 2
  %725 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %726 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %727 = load i32, ptr %726, align 8, !tbaa !48
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %725, i64 0, i64 %728
  %730 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %729, i32 0, i32 4
  %731 = load i32, ptr %730, align 8, !tbaa !49
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds [3 x i32], ptr %724, i64 0, i64 %732
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = sitofp i32 %734 to float
  %736 = fdiv float %718, %735
  %737 = fdiv float 1.000000e+00, %736
  %738 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %739 = load i32, ptr %24, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %738, i64 0, i64 %740
  %742 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %741, i32 0, i32 2
  store float %737, ptr %742, align 4, !tbaa !46
  %743 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %744 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %745 = load i32, ptr %744, align 8, !tbaa !48
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %743, i64 0, i64 %746
  %748 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %747, i32 0, i32 4
  %749 = load i32, ptr %748, align 8, !tbaa !49
  %750 = add nsw i32 %749, 1
  store i32 %750, ptr %748, align 8, !tbaa !49
  %751 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %752 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %753 = load i32, ptr %752, align 8, !tbaa !48
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %751, i64 0, i64 %754
  %756 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %755, i32 0, i32 4
  %757 = load i32, ptr %756, align 8, !tbaa !49
  %758 = srem i32 %757, 3
  store i32 %758, ptr %756, align 8, !tbaa !49
  br label %778

759:                                              ; preds = %707
  %760 = getelementptr inbounds %"class.SoLoud::AudioSourceInstance", ptr %28, i32 0, i32 9
  %761 = load float, ptr %760, align 4, !tbaa !11
  %762 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 2
  %763 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %764 = load i32, ptr %763, align 8, !tbaa !48
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %762, i64 0, i64 %765
  %767 = getelementptr inbounds %"struct.SoLoud::MonotoneChannel", ptr %766, i32 0, i32 2
  %768 = getelementptr inbounds [3 x i32], ptr %767, i64 0, i64 0
  %769 = load i32, ptr %768, align 8, !tbaa !9
  %770 = sitofp i32 %769 to float
  %771 = fdiv float %761, %770
  %772 = fdiv float 1.000000e+00, %771
  %773 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %774 = load i32, ptr %24, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %773, i64 0, i64 %775
  %777 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %776, i32 0, i32 2
  store float %772, ptr %777, align 4, !tbaa !46
  br label %778

778:                                              ; preds = %759, %716
  %779 = load i32, ptr %24, align 4, !tbaa !9
  %780 = add nsw i32 %779, 1
  store i32 %780, ptr %24, align 4, !tbaa !9
  br label %781

781:                                              ; preds = %778, %698
  %782 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %783 = load i32, ptr %782, align 8, !tbaa !48
  %784 = add nsw i32 %783, 1
  store i32 %784, ptr %782, align 8, !tbaa !48
  %785 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %786 = load ptr, ptr %785, align 8, !tbaa !16
  %787 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %786, i32 0, i32 5
  %788 = getelementptr inbounds %"struct.SoLoud::MonotoneSong", ptr %787, i32 0, i32 4
  %789 = load i8, ptr %788, align 2, !tbaa !22
  %790 = zext i8 %789 to i32
  %791 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 4
  %792 = load i32, ptr %791, align 8, !tbaa !48
  %793 = srem i32 %792, %790
  store i32 %793, ptr %791, align 8, !tbaa !48
  %794 = load i32, ptr %25, align 4, !tbaa !9
  %795 = add nsw i32 %794, 1
  store i32 %795, ptr %25, align 4, !tbaa !9
  br label %680, !llvm.loop !50

796:                                              ; preds = %696
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  br label %797

797:                                              ; preds = %796, %69
  %798 = load ptr, ptr %6, align 8, !tbaa !5
  %799 = load i32, ptr %10, align 4, !tbaa !9
  %800 = zext i32 %799 to i64
  %801 = getelementptr inbounds float, ptr %798, i64 %800
  store float 0.000000e+00, ptr %801, align 4, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %802

802:                                              ; preds = %855, %797
  %803 = load i32, ptr %26, align 4, !tbaa !9
  %804 = icmp slt i32 %803, 12
  br i1 %804, label %805, label %858

805:                                              ; preds = %802
  %806 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %807 = load i32, ptr %26, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %806, i64 0, i64 %808
  %810 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %809, i32 0, i32 0
  %811 = load i32, ptr %810, align 4, !tbaa !23
  %812 = icmp ne i32 %811, 0
  br i1 %812, label %813, label %854

813:                                              ; preds = %805
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  %814 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %815 = load i32, ptr %26, align 4, !tbaa !9
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %814, i64 0, i64 %816
  %818 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %817, i32 0, i32 1
  %819 = load float, ptr %818, align 4, !tbaa !52
  %820 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %821 = load i32, ptr %26, align 4, !tbaa !9
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %820, i64 0, i64 %822
  %824 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %823, i32 0, i32 2
  %825 = load float, ptr %824, align 4, !tbaa !46
  %826 = fadd float %819, %825
  store float %826, ptr %27, align 4, !tbaa !51
  %827 = load float, ptr %27, align 4, !tbaa !51
  %828 = load float, ptr %27, align 4, !tbaa !51
  %829 = fptosi float %828 to i64
  %830 = sitofp i64 %829 to float
  %831 = fsub float %827, %830
  %832 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %833 = load i32, ptr %26, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %832, i64 0, i64 %834
  %836 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %835, i32 0, i32 1
  store float %831, ptr %836, align 4, !tbaa !52
  %837 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 1
  %838 = load ptr, ptr %837, align 8, !tbaa !16
  %839 = getelementptr inbounds %"class.SoLoud::Monotone", ptr %838, i32 0, i32 4
  %840 = load i32, ptr %839, align 4, !tbaa !53
  %841 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 3
  %842 = load i32, ptr %26, align 4, !tbaa !9
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %841, i64 0, i64 %843
  %845 = getelementptr inbounds %"struct.SoLoud::MonotoneHardwareChannel", ptr %844, i32 0, i32 1
  %846 = load float, ptr %845, align 4, !tbaa !52
  %847 = call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %840, float noundef %846)
  %848 = load ptr, ptr %6, align 8, !tbaa !5
  %849 = load i32, ptr %10, align 4, !tbaa !9
  %850 = zext i32 %849 to i64
  %851 = getelementptr inbounds float, ptr %848, i64 %850
  %852 = load float, ptr %851, align 4, !tbaa !51
  %853 = call float @llvm.fmuladd.f32(float %847, float 5.000000e-01, float %852)
  store float %853, ptr %851, align 4, !tbaa !51
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  br label %854

854:                                              ; preds = %813, %805
  br label %855

855:                                              ; preds = %854
  %856 = load i32, ptr %26, align 4, !tbaa !9
  %857 = add nsw i32 %856, 1
  store i32 %857, ptr %26, align 4, !tbaa !9
  br label %802, !llvm.loop !54

858:                                              ; preds = %802
  %859 = getelementptr inbounds %"class.SoLoud::MonotoneInstance", ptr %28, i32 0, i32 8
  %860 = load i32, ptr %859, align 8, !tbaa !27
  %861 = add nsw i32 %860, 1
  store i32 %861, ptr %859, align 8, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  br label %862

862:                                              ; preds = %858
  %863 = load i32, ptr %10, align 4, !tbaa !9
  %864 = add i32 %863, 1
  store i32 %864, ptr %10, align 4, !tbaa !9
  br label %65, !llvm.loop !55

865:                                              ; preds = %65
  %866 = load i32, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  ret i32 %866
}

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

declare noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef, float noundef) #3

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 68}
!12 = !{!"_ZTSN6SoLoud19AudioSourceInstanceE", !10, i64 8, !10, i64 12, !10, i64 16, !13, i64 20, !7, i64 24, !13, i64 56, !13, i64 60, !13, i64 64, !13, i64 68, !10, i64 72, !13, i64 76, !13, i64 80, !14, i64 88, !14, i64 96, !15, i64 104, !15, i64 152, !15, i64 200, !15, i64 248, !15, i64 296, !10, i64 344, !7, i64 348, !10, i64 380, !10, i64 384, !7, i64 392, !7, i64 456, !10, i64 472, !10, i64 476, !10, i64 480, !14, i64 488}
!13 = !{!"float", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!"_ZTSN6SoLoud5FaderE", !13, i64 0, !13, i64 4, !13, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !13, i64 40, !10, i64 44}
!16 = !{!17, !6, i64 496}
!17 = !{!"_ZTSN6SoLoud16MonotoneInstanceE", !12, i64 0, !6, i64 496, !7, i64 504, !7, i64 1176, !10, i64 1320, !10, i64 1324, !10, i64 1328, !10, i64 1332, !10, i64 1336, !10, i64 1340}
!18 = !{!19, !10, i64 3480}
!19 = !{!"_ZTSN6SoLoud8MonotoneE", !20, i64 0, !7, i64 152, !7, i64 3352, !10, i64 3480, !10, i64 3484, !21, i64 3488}
!20 = !{!"_ZTSN6SoLoud11AudioSourceE", !10, i64 8, !13, i64 12, !13, i64 16, !10, i64 20, !10, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !10, i64 40, !13, i64 44, !7, i64 48, !6, i64 112, !6, i64 120, !6, i64 128, !10, i64 136, !14, i64 144}
!21 = !{!"_ZTSN6SoLoud12MonotoneSongE", !6, i64 0, !6, i64 8, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !7, i64 20, !6, i64 280}
!22 = !{!19, !7, i64 3506}
!23 = !{!24, !10, i64 0}
!24 = !{!"_ZTSN6SoLoud23MonotoneHardwareChannelE", !10, i64 0, !13, i64 4, !13, i64 8}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!17, !10, i64 1336}
!28 = !{!17, !10, i64 1340}
!29 = !{!17, !10, i64 1324}
!30 = !{!17, !10, i64 1328}
!31 = !{!7, !7, i64 0}
!32 = !{!19, !6, i64 3768}
!33 = !{!17, !10, i64 1332}
!34 = !{!35, !10, i64 20}
!35 = !{!"_ZTSN6SoLoud15MonotoneChannelE", !10, i64 0, !10, i64 4, !7, i64 8, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!36 = !{!35, !10, i64 28}
!37 = !{!35, !10, i64 40}
!38 = !{!35, !10, i64 4}
!39 = !{!35, !10, i64 32}
!40 = !{!35, !10, i64 44}
!41 = !{!35, !10, i64 36}
!42 = !{!35, !10, i64 48}
!43 = !{!35, !10, i64 52}
!44 = distinct !{!44, !26}
!45 = distinct !{!45, !26}
!46 = !{!24, !13, i64 8}
!47 = distinct !{!47, !26}
!48 = !{!17, !10, i64 1320}
!49 = !{!35, !10, i64 24}
!50 = distinct !{!50, !26}
!51 = !{!13, !13, i64 0}
!52 = !{!24, !13, i64 4}
!53 = !{!19, !10, i64 3484}
!54 = distinct !{!54, !26}
!55 = distinct !{!55, !26}


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

%"struct.SoLoud::MonotoneChannel" = type { i32, i32, [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%"struct.SoLoud::MonotoneHardwareChannel" = type { i32, float, float }

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6SoLoud16MonotoneInstance8getAudioEPfjj(ptr noundef nonnull align 8 dereferenceable(1344) %0, ptr nocapture noundef %1, i32 noundef returned %2, i32 noundef %3) unnamed_addr #0 align 2 {
  %5 = getelementptr inbounds i8, ptr %0, i64 68
  %6 = load float, ptr %5, align 4, !tbaa !5
  %7 = fdiv float %6, 6.000000e+01
  %8 = tail call noundef float @_ZSt5floorf(float noundef %7)
  %9 = getelementptr inbounds i8, ptr %0, i64 496
  %10 = load ptr, ptr %9, align 8, !tbaa !13
  %11 = getelementptr inbounds i8, ptr %10, i64 3480
  %12 = load i32, ptr %11, align 8, !tbaa !16
  %13 = getelementptr inbounds i8, ptr %0, i64 1176
  %14 = getelementptr inbounds i8, ptr %10, i64 3506
  %.not227 = icmp eq i32 %12, 0
  br i1 %.not227, label %.thread, label %46

.thread:                                          ; preds = %4
  store i32 0, ptr %13, align 8, !tbaa !20
  br label %.thread228

.lr.ph198:                                        ; preds = %.preheader171
  %15 = getelementptr inbounds i8, ptr %0, i64 1336
  %16 = getelementptr inbounds i8, ptr %0, i64 1340
  %17 = getelementptr inbounds i8, ptr %0, i64 1324
  %18 = getelementptr inbounds i8, ptr %0, i64 1328
  %19 = getelementptr inbounds i8, ptr %0, i64 1332
  %20 = getelementptr inbounds i8, ptr %0, i64 504
  %21 = getelementptr inbounds i8, ptr %0, i64 1320
  %wide.trip.count222 = zext i32 %2 to i64
  %.pre = load i32, ptr %15, align 8, !tbaa !22
  %22 = getelementptr inbounds i8, ptr %0, i64 1180
  %23 = getelementptr inbounds i8, ptr %0, i64 1184
  %24 = getelementptr inbounds i8, ptr %0, i64 1192
  %25 = getelementptr inbounds i8, ptr %0, i64 1196
  %26 = getelementptr inbounds i8, ptr %0, i64 1204
  %27 = getelementptr inbounds i8, ptr %0, i64 1208
  %28 = getelementptr inbounds i8, ptr %0, i64 1216
  %29 = getelementptr inbounds i8, ptr %0, i64 1220
  %30 = getelementptr inbounds i8, ptr %0, i64 1228
  %31 = getelementptr inbounds i8, ptr %0, i64 1232
  %32 = getelementptr inbounds i8, ptr %0, i64 1240
  %33 = getelementptr inbounds i8, ptr %0, i64 1244
  %34 = getelementptr inbounds i8, ptr %0, i64 1252
  %35 = getelementptr inbounds i8, ptr %0, i64 1256
  %36 = getelementptr inbounds i8, ptr %0, i64 1264
  %37 = getelementptr inbounds i8, ptr %0, i64 1268
  %38 = getelementptr inbounds i8, ptr %0, i64 1276
  %39 = getelementptr inbounds i8, ptr %0, i64 1280
  %40 = getelementptr inbounds i8, ptr %0, i64 1288
  %41 = getelementptr inbounds i8, ptr %0, i64 1292
  %42 = getelementptr inbounds i8, ptr %0, i64 1300
  %43 = getelementptr inbounds i8, ptr %0, i64 1304
  %44 = getelementptr inbounds i8, ptr %0, i64 1312
  %45 = getelementptr inbounds i8, ptr %0, i64 1316
  br label %132

46:                                               ; preds = %4
  %47 = load i8, ptr %14, align 2, !tbaa !23
  %48 = icmp ne i8 %47, 0
  %49 = zext i1 %48 to i32
  store i32 %49, ptr %13, align 8, !tbaa !20
  %.not296 = icmp eq i32 %12, 1
  br i1 %.not296, label %.thread228, label %51

.thread228:                                       ; preds = %.thread, %46
  %50 = getelementptr inbounds i8, ptr %0, i64 1188
  store i32 0, ptr %50, align 4, !tbaa !20
  br label %.thread230

51:                                               ; preds = %46
  %52 = load i8, ptr %14, align 2, !tbaa !23
  %53 = icmp ugt i8 %52, 1
  %54 = zext i1 %53 to i32
  %55 = getelementptr inbounds i8, ptr %0, i64 1188
  store i32 %54, ptr %55, align 4, !tbaa !20
  %56 = icmp ugt i32 %12, 2
  br i1 %56, label %58, label %.thread230

.thread230:                                       ; preds = %.thread228, %51
  %.ph = phi ptr [ %50, %.thread228 ], [ %55, %51 ]
  %57 = getelementptr inbounds i8, ptr %0, i64 1200
  store i32 0, ptr %57, align 8, !tbaa !20
  br label %.thread234

58:                                               ; preds = %51
  %59 = load i8, ptr %14, align 2, !tbaa !23
  %60 = icmp ugt i8 %59, 2
  %61 = zext i1 %60 to i32
  %62 = getelementptr inbounds i8, ptr %0, i64 1200
  store i32 %61, ptr %62, align 8, !tbaa !20
  %.not297 = icmp eq i32 %12, 3
  br i1 %.not297, label %.thread234, label %64

.thread234:                                       ; preds = %.thread230, %58
  %.ph232 = phi ptr [ %57, %.thread230 ], [ %62, %58 ]
  %.ph233 = phi ptr [ %.ph, %.thread230 ], [ %55, %58 ]
  %63 = getelementptr inbounds i8, ptr %0, i64 1212
  store i32 0, ptr %63, align 4, !tbaa !20
  br label %.thread239

64:                                               ; preds = %58
  %65 = load i8, ptr %14, align 2, !tbaa !23
  %66 = icmp ugt i8 %65, 3
  %67 = zext i1 %66 to i32
  %68 = getelementptr inbounds i8, ptr %0, i64 1212
  store i32 %67, ptr %68, align 4, !tbaa !20
  %69 = icmp ugt i32 %12, 4
  br i1 %69, label %71, label %.thread239

.thread239:                                       ; preds = %.thread234, %64
  %.ph236 = phi ptr [ %63, %.thread234 ], [ %68, %64 ]
  %.ph237 = phi ptr [ %.ph233, %.thread234 ], [ %55, %64 ]
  %.ph238 = phi ptr [ %.ph232, %.thread234 ], [ %62, %64 ]
  %70 = getelementptr inbounds i8, ptr %0, i64 1224
  store i32 0, ptr %70, align 8, !tbaa !20
  br label %.thread245

71:                                               ; preds = %64
  %72 = load i8, ptr %14, align 2, !tbaa !23
  %73 = icmp ugt i8 %72, 4
  %74 = zext i1 %73 to i32
  %75 = getelementptr inbounds i8, ptr %0, i64 1224
  store i32 %74, ptr %75, align 8, !tbaa !20
  %.not298 = icmp eq i32 %12, 5
  br i1 %.not298, label %.thread245, label %77

.thread245:                                       ; preds = %.thread239, %71
  %.ph241 = phi ptr [ %70, %.thread239 ], [ %75, %71 ]
  %.ph242 = phi ptr [ %.ph238, %.thread239 ], [ %62, %71 ]
  %.ph243 = phi ptr [ %.ph237, %.thread239 ], [ %55, %71 ]
  %.ph244 = phi ptr [ %.ph236, %.thread239 ], [ %68, %71 ]
  %76 = getelementptr inbounds i8, ptr %0, i64 1236
  store i32 0, ptr %76, align 4, !tbaa !20
  br label %.thread252

77:                                               ; preds = %71
  %78 = load i8, ptr %14, align 2, !tbaa !23
  %79 = icmp ugt i8 %78, 5
  %80 = zext i1 %79 to i32
  %81 = getelementptr inbounds i8, ptr %0, i64 1236
  store i32 %80, ptr %81, align 4, !tbaa !20
  %82 = icmp ugt i32 %12, 6
  br i1 %82, label %84, label %.thread252

.thread252:                                       ; preds = %.thread245, %77
  %.ph247 = phi ptr [ %76, %.thread245 ], [ %81, %77 ]
  %.ph248 = phi ptr [ %.ph244, %.thread245 ], [ %68, %77 ]
  %.ph249 = phi ptr [ %.ph243, %.thread245 ], [ %55, %77 ]
  %.ph250 = phi ptr [ %.ph242, %.thread245 ], [ %62, %77 ]
  %.ph251 = phi ptr [ %.ph241, %.thread245 ], [ %75, %77 ]
  %83 = getelementptr inbounds i8, ptr %0, i64 1248
  store i32 0, ptr %83, align 8, !tbaa !20
  br label %.thread260

84:                                               ; preds = %77
  %85 = load i8, ptr %14, align 2, !tbaa !23
  %86 = icmp ugt i8 %85, 6
  %87 = zext i1 %86 to i32
  %88 = getelementptr inbounds i8, ptr %0, i64 1248
  store i32 %87, ptr %88, align 8, !tbaa !20
  %.not299 = icmp eq i32 %12, 7
  br i1 %.not299, label %.thread260, label %90

.thread260:                                       ; preds = %.thread252, %84
  %.ph254 = phi ptr [ %83, %.thread252 ], [ %88, %84 ]
  %.ph255 = phi ptr [ %.ph251, %.thread252 ], [ %75, %84 ]
  %.ph256 = phi ptr [ %.ph250, %.thread252 ], [ %62, %84 ]
  %.ph257 = phi ptr [ %.ph249, %.thread252 ], [ %55, %84 ]
  %.ph258 = phi ptr [ %.ph248, %.thread252 ], [ %68, %84 ]
  %.ph259 = phi ptr [ %.ph247, %.thread252 ], [ %81, %84 ]
  %89 = getelementptr inbounds i8, ptr %0, i64 1260
  store i32 0, ptr %89, align 4, !tbaa !20
  br label %.thread269

90:                                               ; preds = %84
  %91 = load i8, ptr %14, align 2, !tbaa !23
  %92 = icmp ugt i8 %91, 7
  %93 = zext i1 %92 to i32
  %94 = getelementptr inbounds i8, ptr %0, i64 1260
  store i32 %93, ptr %94, align 4, !tbaa !20
  %95 = icmp ugt i32 %12, 8
  br i1 %95, label %97, label %.thread269

.thread269:                                       ; preds = %.thread260, %90
  %.ph262 = phi ptr [ %89, %.thread260 ], [ %94, %90 ]
  %.ph263 = phi ptr [ %.ph259, %.thread260 ], [ %81, %90 ]
  %.ph264 = phi ptr [ %.ph258, %.thread260 ], [ %68, %90 ]
  %.ph265 = phi ptr [ %.ph257, %.thread260 ], [ %55, %90 ]
  %.ph266 = phi ptr [ %.ph256, %.thread260 ], [ %62, %90 ]
  %.ph267 = phi ptr [ %.ph255, %.thread260 ], [ %75, %90 ]
  %.ph268 = phi ptr [ %.ph254, %.thread260 ], [ %88, %90 ]
  %96 = getelementptr inbounds i8, ptr %0, i64 1272
  store i32 0, ptr %96, align 8, !tbaa !20
  br label %.thread279

97:                                               ; preds = %90
  %98 = load i8, ptr %14, align 2, !tbaa !23
  %99 = icmp ugt i8 %98, 8
  %100 = zext i1 %99 to i32
  %101 = getelementptr inbounds i8, ptr %0, i64 1272
  store i32 %100, ptr %101, align 8, !tbaa !20
  %.not300 = icmp eq i32 %12, 9
  br i1 %.not300, label %.thread279, label %103

.thread279:                                       ; preds = %.thread269, %97
  %.ph271 = phi ptr [ %96, %.thread269 ], [ %101, %97 ]
  %.ph272 = phi ptr [ %.ph268, %.thread269 ], [ %88, %97 ]
  %.ph273 = phi ptr [ %.ph267, %.thread269 ], [ %75, %97 ]
  %.ph274 = phi ptr [ %.ph266, %.thread269 ], [ %62, %97 ]
  %.ph275 = phi ptr [ %.ph265, %.thread269 ], [ %55, %97 ]
  %.ph276 = phi ptr [ %.ph264, %.thread269 ], [ %68, %97 ]
  %.ph277 = phi ptr [ %.ph263, %.thread269 ], [ %81, %97 ]
  %.ph278 = phi ptr [ %.ph262, %.thread269 ], [ %94, %97 ]
  %102 = getelementptr inbounds i8, ptr %0, i64 1284
  store i32 0, ptr %102, align 4, !tbaa !20
  br label %.thread290

103:                                              ; preds = %97
  %104 = load i8, ptr %14, align 2, !tbaa !23
  %105 = icmp ugt i8 %104, 9
  %106 = zext i1 %105 to i32
  %107 = getelementptr inbounds i8, ptr %0, i64 1284
  store i32 %106, ptr %107, align 4, !tbaa !20
  %108 = icmp ugt i32 %12, 10
  br i1 %108, label %110, label %.thread290

.thread290:                                       ; preds = %.thread279, %103
  %.ph281 = phi ptr [ %102, %.thread279 ], [ %107, %103 ]
  %.ph282 = phi ptr [ %.ph278, %.thread279 ], [ %94, %103 ]
  %.ph283 = phi ptr [ %.ph277, %.thread279 ], [ %81, %103 ]
  %.ph284 = phi ptr [ %.ph276, %.thread279 ], [ %68, %103 ]
  %.ph285 = phi ptr [ %.ph275, %.thread279 ], [ %55, %103 ]
  %.ph286 = phi ptr [ %.ph274, %.thread279 ], [ %62, %103 ]
  %.ph287 = phi ptr [ %.ph273, %.thread279 ], [ %75, %103 ]
  %.ph288 = phi ptr [ %.ph272, %.thread279 ], [ %88, %103 ]
  %.ph289 = phi ptr [ %.ph271, %.thread279 ], [ %101, %103 ]
  %109 = getelementptr inbounds i8, ptr %0, i64 1296
  store i32 0, ptr %109, align 8, !tbaa !20
  br label %.preheader171

110:                                              ; preds = %103
  %111 = load i8, ptr %14, align 2, !tbaa !23
  %112 = icmp ugt i8 %111, 10
  %113 = zext i1 %112 to i32
  %114 = getelementptr inbounds i8, ptr %0, i64 1296
  store i32 %113, ptr %114, align 8, !tbaa !20
  %.not301 = icmp eq i32 %12, 11
  br i1 %.not301, label %.preheader171, label %115

115:                                              ; preds = %110
  %116 = load i8, ptr %14, align 2, !tbaa !23
  %117 = icmp ugt i8 %116, 11
  %118 = zext i1 %117 to i32
  br label %.preheader171

.preheader171:                                    ; preds = %.thread290, %115, %110
  %119 = phi ptr [ %114, %110 ], [ %114, %115 ], [ %109, %.thread290 ]
  %120 = phi ptr [ %101, %110 ], [ %101, %115 ], [ %.ph289, %.thread290 ]
  %121 = phi ptr [ %88, %110 ], [ %88, %115 ], [ %.ph288, %.thread290 ]
  %122 = phi ptr [ %75, %110 ], [ %75, %115 ], [ %.ph287, %.thread290 ]
  %123 = phi ptr [ %62, %110 ], [ %62, %115 ], [ %.ph286, %.thread290 ]
  %124 = phi ptr [ %55, %110 ], [ %55, %115 ], [ %.ph285, %.thread290 ]
  %125 = phi ptr [ %68, %110 ], [ %68, %115 ], [ %.ph284, %.thread290 ]
  %126 = phi ptr [ %81, %110 ], [ %81, %115 ], [ %.ph283, %.thread290 ]
  %127 = phi ptr [ %94, %110 ], [ %94, %115 ], [ %.ph282, %.thread290 ]
  %128 = phi ptr [ %107, %110 ], [ %107, %115 ], [ %.ph281, %.thread290 ]
  %129 = phi i32 [ 0, %110 ], [ %118, %115 ], [ 0, %.thread290 ]
  %130 = getelementptr inbounds i8, ptr %0, i64 1308
  store i32 %129, ptr %130, align 4, !tbaa !20
  %131 = fptosi float %8 to i32
  %.not200 = icmp eq i32 %2, 0
  br i1 %.not200, label %._crit_edge199, label %.lr.ph198

132:                                              ; preds = %.lr.ph198, %524
  %133 = phi i32 [ %.pre, %.lr.ph198 ], [ %526, %524 ]
  %indvars.iv219 = phi i64 [ 0, %.lr.ph198 ], [ %indvars.iv.next220, %524 ]
  %134 = srem i32 %133, %131
  %135 = icmp eq i32 %134, 0
  br i1 %135, label %136, label %.critedge

136:                                              ; preds = %132
  %137 = load i32, ptr %16, align 4, !tbaa !24
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr %16, align 4, !tbaa !24
  %139 = load i32, ptr %17, align 4, !tbaa !25
  %.not = icmp slt i32 %138, %139
  %.pre225 = load ptr, ptr %9, align 8, !tbaa !13
  br i1 %.not, label %243, label %140

140:                                              ; preds = %136
  store i32 0, ptr %16, align 4, !tbaa !24
  %141 = load i32, ptr %18, align 8, !tbaa !26
  %142 = getelementptr inbounds i8, ptr %.pre225, i64 3508
  %143 = getelementptr inbounds i8, ptr %.pre225, i64 3506
  %144 = load i8, ptr %143, align 2, !tbaa !23
  %.not201 = icmp eq i8 %144, 0
  %.pre224 = load i32, ptr %19, align 4, !tbaa !27
  br i1 %.not201, label %._crit_edge.thread, label %.lr.ph

._crit_edge.thread:                               ; preds = %140
  %145 = add nsw i32 %.pre224, 1
  store i32 %145, ptr %19, align 4, !tbaa !27
  br label %233

.lr.ph:                                           ; preds = %140
  %146 = add nsw i32 %141, 1
  %147 = zext i8 %144 to i32
  %148 = sext i32 %141 to i64
  %149 = getelementptr inbounds [256 x i8], ptr %142, i64 0, i64 %148
  %150 = load i8, ptr %149, align 1, !tbaa !28
  %151 = zext i8 %150 to i32
  %152 = getelementptr inbounds i8, ptr %.pre225, i64 3768
  %153 = load ptr, ptr %152, align 8, !tbaa !29
  %154 = shl nuw nsw i32 %151, 6
  %155 = add nsw i32 %.pre224, %154
  %156 = mul nsw i32 %155, %147
  %157 = getelementptr inbounds i8, ptr %.pre225, i64 152
  %158 = sext i32 %156 to i64
  %wide.trip.count = zext i8 %144 to i64
  %invariant.gep = getelementptr i32, ptr %153, i64 %158
  br label %159

159:                                              ; preds = %.lr.ph, %230
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %230 ]
  %.0135181 = phi i32 [ %146, %.lr.ph ], [ %.1136, %230 ]
  %.0137180 = phi i32 [ 0, %.lr.ph ], [ %.1138, %230 ]
  %.0139179 = phi i32 [ 0, %.lr.ph ], [ %.1140, %230 ]
  %gep = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv
  %160 = load i32, ptr %gep, align 4, !tbaa !30
  %161 = lshr i32 %160, 9
  %162 = and i32 %161, 127
  %163 = lshr i32 %160, 6
  %164 = and i32 %163, 7
  %165 = and i32 %160, 63
  %166 = lshr i32 %160, 3
  %167 = and i32 %166, 7
  %168 = and i32 %160, 7
  %169 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %20, i64 0, i64 %indvars.iv
  %170 = getelementptr inbounds i8, ptr %169, i64 20
  store i32 0, ptr %170, align 4, !tbaa !31
  %171 = getelementptr inbounds i8, ptr %169, i64 28
  store i32 0, ptr %171, align 4, !tbaa !33
  %172 = getelementptr inbounds i8, ptr %169, i64 40
  store i32 0, ptr %172, align 8, !tbaa !34
  %173 = getelementptr inbounds i8, ptr %169, i64 8
  %174 = load i32, ptr %173, align 8, !tbaa !30
  switch i32 %162, label %178 [
    i32 127, label %175
    i32 0, label %188
  ]

175:                                              ; preds = %159
  %176 = getelementptr inbounds i8, ptr %169, i64 4
  %177 = getelementptr inbounds i8, ptr %169, i64 32
  store i32 0, ptr %177, align 8, !tbaa !35
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %176, i8 0, i64 20, i1 false)
  br label %191

178:                                              ; preds = %159
  %179 = getelementptr inbounds i8, ptr %169, i64 4
  store i32 1, ptr %179, align 4, !tbaa !36
  %180 = shl nuw nsw i32 %162, 3
  %181 = zext nneg i32 %180 to i64
  %182 = getelementptr inbounds [800 x i32], ptr %157, i64 0, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !30
  store i32 %183, ptr %173, align 8, !tbaa !30
  %184 = getelementptr inbounds i8, ptr %169, i64 12
  store i32 %183, ptr %184, align 4, !tbaa !30
  %185 = getelementptr inbounds i8, ptr %169, i64 16
  store i32 %183, ptr %185, align 8, !tbaa !30
  store i32 0, ptr %170, align 4, !tbaa !31
  %186 = getelementptr inbounds i8, ptr %169, i64 32
  store i32 %162, ptr %186, align 8, !tbaa !35
  %187 = getelementptr inbounds i8, ptr %169, i64 44
  store i32 0, ptr %187, align 4, !tbaa !37
  br label %191

188:                                              ; preds = %159
  %189 = getelementptr inbounds i8, ptr %169, i64 32
  %190 = load i32, ptr %189, align 8, !tbaa !35
  br label %191

191:                                              ; preds = %178, %188, %175
  %.0142 = phi i32 [ 127, %175 ], [ %162, %178 ], [ %190, %188 ]
  switch i32 %164, label %default.unreachable226 [
    i32 0, label %192
    i32 1, label %208
    i32 2, label %209
    i32 3, label %211
    i32 4, label %222
    i32 5, label %230
    i32 6, label %228
    i32 7, label %229
  ]

192:                                              ; preds = %191
  %193 = add i32 %.0142, %167
  %194 = shl i32 %193, 3
  %195 = zext i32 %194 to i64
  %196 = getelementptr inbounds [800 x i32], ptr %157, i64 0, i64 %195
  %197 = load i32, ptr %196, align 4, !tbaa !30
  %198 = getelementptr inbounds i8, ptr %169, i64 12
  store i32 %197, ptr %198, align 4, !tbaa !30
  %199 = add i32 %.0142, %168
  %200 = shl i32 %199, 3
  %201 = zext i32 %200 to i64
  %202 = getelementptr inbounds [800 x i32], ptr %157, i64 0, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !30
  %204 = getelementptr inbounds i8, ptr %169, i64 16
  store i32 %203, ptr %204, align 8, !tbaa !30
  %205 = or i32 %166, %160
  %206 = and i32 %205, 7
  %or.cond.not = icmp eq i32 %206, 0
  br i1 %or.cond.not, label %230, label %207

207:                                              ; preds = %192
  store i32 1, ptr %171, align 4, !tbaa !33
  br label %230

208:                                              ; preds = %191
  store i32 %165, ptr %170, align 4, !tbaa !31
  br label %230

209:                                              ; preds = %191
  %210 = sub nsw i32 0, %165
  store i32 %210, ptr %170, align 4, !tbaa !31
  br label %230

211:                                              ; preds = %191
  %212 = shl i32 %.0142, 3
  %213 = zext i32 %212 to i64
  %214 = getelementptr inbounds [800 x i32], ptr %157, i64 0, i64 %213
  %215 = load i32, ptr %214, align 4, !tbaa !30
  %216 = getelementptr inbounds i8, ptr %169, i64 36
  store i32 %215, ptr %216, align 4, !tbaa !38
  %.not166 = icmp eq i32 %174, %215
  br i1 %.not166, label %221, label %217

217:                                              ; preds = %211
  store i32 %174, ptr %173, align 8, !tbaa !30
  store i32 %165, ptr %170, align 4, !tbaa !31
  %218 = icmp sgt i32 %174, %215
  br i1 %218, label %219, label %230

219:                                              ; preds = %217
  %220 = sub nsw i32 0, %165
  store i32 %220, ptr %170, align 4, !tbaa !31
  br label %230

221:                                              ; preds = %211
  store i32 0, ptr %216, align 4, !tbaa !38
  br label %230

222:                                              ; preds = %191
  store i32 1, ptr %172, align 8, !tbaa !34
  %.not164 = icmp eq i32 %168, 0
  br i1 %.not164, label %225, label %223

223:                                              ; preds = %222
  %224 = getelementptr inbounds i8, ptr %169, i64 48
  store i32 %168, ptr %224, align 8, !tbaa !39
  br label %225

225:                                              ; preds = %223, %222
  %.not165 = icmp eq i32 %167, 0
  br i1 %.not165, label %230, label %226

226:                                              ; preds = %225
  %227 = getelementptr inbounds i8, ptr %169, i64 52
  store i32 %167, ptr %227, align 4, !tbaa !40
  br label %230

228:                                              ; preds = %191
  br label %230

229:                                              ; preds = %191
  store i32 %165, ptr %17, align 4, !tbaa !25
  br label %230

default.unreachable226:                           ; preds = %191
  unreachable

230:                                              ; preds = %191, %225, %226, %221, %219, %217, %207, %192, %229, %228, %209, %208
  %.1140 = phi i32 [ %.0139179, %229 ], [ 1, %228 ], [ %.0139179, %226 ], [ %.0139179, %225 ], [ %.0139179, %219 ], [ %.0139179, %217 ], [ %.0139179, %221 ], [ %.0139179, %209 ], [ %.0139179, %208 ], [ %.0139179, %207 ], [ %.0139179, %192 ], [ 1, %191 ]
  %.1138 = phi i32 [ %.0137180, %229 ], [ %165, %228 ], [ %.0137180, %226 ], [ %.0137180, %225 ], [ %.0137180, %219 ], [ %.0137180, %217 ], [ %.0137180, %221 ], [ %.0137180, %209 ], [ %.0137180, %208 ], [ %.0137180, %207 ], [ %.0137180, %192 ], [ %.0137180, %191 ]
  %.1136 = phi i32 [ %.0135181, %229 ], [ %.0135181, %228 ], [ %.0135181, %226 ], [ %.0135181, %225 ], [ %.0135181, %219 ], [ %.0135181, %217 ], [ %.0135181, %221 ], [ %.0135181, %209 ], [ %.0135181, %208 ], [ %.0135181, %207 ], [ %.0135181, %192 ], [ %165, %191 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %159, !llvm.loop !41

._crit_edge:                                      ; preds = %230
  %231 = add nsw i32 %.pre224, 1
  store i32 %231, ptr %19, align 4, !tbaa !27
  %.not152 = icmp eq i32 %.1140, 0
  br i1 %.not152, label %233, label %232

232:                                              ; preds = %._crit_edge
  store i32 %.1138, ptr %19, align 4, !tbaa !27
  store i32 %.1136, ptr %18, align 8, !tbaa !26
  br label %233

233:                                              ; preds = %._crit_edge.thread, %232, %._crit_edge
  %234 = phi i32 [ %.1136, %232 ], [ %141, %._crit_edge ], [ %141, %._crit_edge.thread ]
  %235 = phi i32 [ %.1138, %232 ], [ %231, %._crit_edge ], [ %145, %._crit_edge.thread ]
  %236 = icmp eq i32 %235, 64
  br i1 %236, label %237, label %243

237:                                              ; preds = %233
  store i32 0, ptr %19, align 4, !tbaa !27
  %238 = add nsw i32 %234, 1
  store i32 %238, ptr %18, align 8, !tbaa !26
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [256 x i8], ptr %142, i64 0, i64 %239
  %241 = load i8, ptr %240, align 1, !tbaa !28
  %242 = icmp eq i8 %241, -1
  %spec.store.select = select i1 %242, i32 0, i32 %238
  store i32 %spec.store.select, ptr %18, align 8
  br label %243

243:                                              ; preds = %237, %233, %136
  %244 = getelementptr inbounds i8, ptr %.pre225, i64 3506
  %245 = load i8, ptr %244, align 2, !tbaa !23
  %246 = zext i8 %245 to i32
  %.not202 = icmp eq i8 %245, 0
  br i1 %.not202, label %.preheader170, label %.lr.ph186

.lr.ph186:                                        ; preds = %243
  %247 = getelementptr inbounds i8, ptr %.pre225, i64 152
  %248 = getelementptr inbounds i8, ptr %.pre225, i64 3352
  %249 = load i32, ptr %16, align 4
  %.not159 = icmp eq i32 %249, 0
  %wide.trip.count208 = zext i8 %245 to i64
  br label %254

.preheader170:                                    ; preds = %297, %243
  %250 = getelementptr inbounds i8, ptr %.pre225, i64 3480
  %251 = load i32, ptr %250, align 8, !tbaa !16
  %252 = icmp sgt i32 %251, 0
  br i1 %252, label %.lr.ph190.preheader, label %.critedge

.lr.ph190.preheader:                              ; preds = %.preheader170
  %wide.trip.count213 = zext nneg i32 %251 to i64
  %xtraiter = and i64 %wide.trip.count213, 3
  %253 = icmp ult i32 %251, 4
  br i1 %253, label %.preheader.unr-lcssa, label %.lr.ph190.preheader.new

.lr.ph190.preheader.new:                          ; preds = %.lr.ph190.preheader
  %unroll_iter = and i64 %wide.trip.count213, 2147483644
  br label %.lr.ph190

254:                                              ; preds = %.lr.ph186, %297
  %indvars.iv205 = phi i64 [ 0, %.lr.ph186 ], [ %indvars.iv.next206, %297 ]
  %255 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %20, i64 0, i64 %indvars.iv205
  %256 = getelementptr inbounds i8, ptr %255, i64 4
  %257 = load i32, ptr %256, align 4, !tbaa !36
  %.not156 = icmp eq i32 %257, 0
  br i1 %.not156, label %297, label %258

258:                                              ; preds = %254
  %259 = getelementptr inbounds i8, ptr %255, i64 40
  %260 = load i32, ptr %259, align 8, !tbaa !34
  %.not157 = icmp eq i32 %260, 0
  br i1 %.not157, label %283, label %261

261:                                              ; preds = %258
  %262 = getelementptr inbounds i8, ptr %255, i64 32
  %263 = load i32, ptr %262, align 8, !tbaa !35
  %264 = shl nsw i32 %263, 3
  %265 = getelementptr inbounds i8, ptr %255, i64 44
  %266 = load i32, ptr %265, align 4, !tbaa !37
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [32 x i32], ptr %248, i64 0, i64 %267
  %269 = load i32, ptr %268, align 4, !tbaa !30
  %270 = getelementptr inbounds i8, ptr %255, i64 48
  %271 = load i32, ptr %270, align 8, !tbaa !39
  %272 = mul nsw i32 %271, %269
  %273 = sdiv i32 %272, 64
  %274 = add nsw i32 %273, %264
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds [800 x i32], ptr %247, i64 0, i64 %275
  %277 = load i32, ptr %276, align 4, !tbaa !30
  %278 = getelementptr inbounds i8, ptr %255, i64 8
  store i32 %277, ptr %278, align 8, !tbaa !30
  %279 = getelementptr inbounds i8, ptr %255, i64 52
  %280 = load i32, ptr %279, align 4, !tbaa !40
  %281 = add nsw i32 %280, %266
  %282 = srem i32 %281, 32
  store i32 %282, ptr %265, align 4, !tbaa !37
  br label %283

283:                                              ; preds = %261, %258
  %284 = getelementptr inbounds i8, ptr %255, i64 20
  %285 = load i32, ptr %284, align 4, !tbaa !31
  %.not158 = icmp eq i32 %285, 0
  %or.cond = select i1 %.not158, i1 true, i1 %.not159
  br i1 %or.cond, label %297, label %286

286:                                              ; preds = %283
  %287 = getelementptr inbounds i8, ptr %255, i64 8
  %288 = load i32, ptr %287, align 8, !tbaa !30
  %289 = add nsw i32 %288, %285
  store i32 %289, ptr %287, align 8, !tbaa !30
  %290 = getelementptr inbounds i8, ptr %255, i64 36
  %291 = load i32, ptr %290, align 4, !tbaa !38
  %.not160 = icmp eq i32 %291, 0
  br i1 %.not160, label %297, label %292

292:                                              ; preds = %286
  %293 = icmp slt i32 %285, 1
  %.not161 = icmp slt i32 %289, %291
  %or.cond167 = select i1 %293, i1 true, i1 %.not161
  br i1 %or.cond167, label %294, label %296

294:                                              ; preds = %292
  %295 = icmp sgt i32 %285, -1
  %.not162 = icmp sgt i32 %289, %291
  %or.cond168 = select i1 %295, i1 true, i1 %.not162
  br i1 %or.cond168, label %297, label %296

296:                                              ; preds = %294, %292
  store i32 %291, ptr %287, align 8, !tbaa !30
  store i32 0, ptr %290, align 4, !tbaa !38
  br label %297

297:                                              ; preds = %254, %286, %296, %294, %283
  %indvars.iv.next206 = add nuw nsw i64 %indvars.iv205, 1
  %exitcond209.not = icmp eq i64 %indvars.iv.next206, %wide.trip.count208
  br i1 %exitcond209.not, label %.preheader170, label %254, !llvm.loop !43

.preheader.unr-lcssa:                             ; preds = %.lr.ph190, %.lr.ph190.preheader
  %indvars.iv210.unr = phi i64 [ 0, %.lr.ph190.preheader ], [ %indvars.iv.next211.3, %.lr.ph190 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader, label %.lr.ph190.epil

.lr.ph190.epil:                                   ; preds = %.preheader.unr-lcssa, %.lr.ph190.epil
  %indvars.iv210.epil = phi i64 [ %indvars.iv.next211.epil, %.lr.ph190.epil ], [ %indvars.iv210.unr, %.preheader.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph190.epil ], [ 0, %.preheader.unr-lcssa ]
  %298 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %13, i64 0, i64 %indvars.iv210.epil, i32 2
  store float 0.000000e+00, ptr %298, align 4, !tbaa !44
  %indvars.iv.next211.epil = add nuw nsw i64 %indvars.iv210.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader, label %.lr.ph190.epil, !llvm.loop !45

.preheader:                                       ; preds = %.lr.ph190.epil, %.preheader.unr-lcssa
  %299 = icmp ne i8 %245, 0
  %or.cond169192 = and i1 %252, %299
  br i1 %or.cond169192, label %.lr.ph195, label %.critedge

.lr.ph195:                                        ; preds = %.preheader
  %300 = load float, ptr %5, align 4
  %.promoted = load i32, ptr %21, align 8, !tbaa !47
  br label %305

.lr.ph190:                                        ; preds = %.lr.ph190, %.lr.ph190.preheader.new
  %indvars.iv210 = phi i64 [ 0, %.lr.ph190.preheader.new ], [ %indvars.iv.next211.3, %.lr.ph190 ]
  %niter = phi i64 [ 0, %.lr.ph190.preheader.new ], [ %niter.next.3, %.lr.ph190 ]
  %301 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %13, i64 0, i64 %indvars.iv210, i32 2
  store float 0.000000e+00, ptr %301, align 8, !tbaa !44
  %indvars.iv.next211 = or disjoint i64 %indvars.iv210, 1
  %302 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %13, i64 0, i64 %indvars.iv.next211, i32 2
  store float 0.000000e+00, ptr %302, align 4, !tbaa !44
  %indvars.iv.next211.1 = or disjoint i64 %indvars.iv210, 2
  %303 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %13, i64 0, i64 %indvars.iv.next211.1, i32 2
  store float 0.000000e+00, ptr %303, align 8, !tbaa !44
  %indvars.iv.next211.2 = or disjoint i64 %indvars.iv210, 3
  %304 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %13, i64 0, i64 %indvars.iv.next211.2, i32 2
  store float 0.000000e+00, ptr %304, align 4, !tbaa !44
  %indvars.iv.next211.3 = add nuw nsw i64 %indvars.iv210, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader.unr-lcssa, label %.lr.ph190, !llvm.loop !48

305:                                              ; preds = %.lr.ph195, %338
  %306 = phi i32 [ %.promoted, %.lr.ph195 ], [ %340, %338 ]
  %.0130194 = phi i32 [ 0, %.lr.ph195 ], [ %341, %338 ]
  %.0131193 = phi i32 [ 0, %.lr.ph195 ], [ %.1132, %338 ]
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %20, i64 0, i64 %307
  %309 = getelementptr inbounds i8, ptr %308, i64 4
  %310 = load i32, ptr %309, align 4, !tbaa !36
  %.not154 = icmp eq i32 %310, 0
  br i1 %.not154, label %338, label %311

311:                                              ; preds = %305
  %312 = getelementptr inbounds i8, ptr %308, i64 28
  %313 = load i32, ptr %312, align 4, !tbaa !33
  %.not155 = icmp eq i32 %313, 0
  %314 = getelementptr inbounds i8, ptr %308, i64 8
  br i1 %.not155, label %329, label %315

315:                                              ; preds = %311
  %316 = getelementptr inbounds i8, ptr %308, i64 24
  %317 = load i32, ptr %316, align 8, !tbaa !49
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds [3 x i32], ptr %314, i64 0, i64 %318
  %320 = load i32, ptr %319, align 4, !tbaa !30
  %321 = sitofp i32 %320 to float
  %322 = fdiv float %300, %321
  %323 = fdiv float 1.000000e+00, %322
  %324 = sext i32 %.0131193 to i64
  %325 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %13, i64 0, i64 %324, i32 2
  store float %323, ptr %325, align 4, !tbaa !44
  %326 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneChannel"], ptr %20, i64 0, i64 %307, i32 4
  %327 = add nsw i32 %317, 1
  %328 = srem i32 %327, 3
  store i32 %328, ptr %326, align 8, !tbaa !49
  br label %336

329:                                              ; preds = %311
  %330 = load i32, ptr %314, align 8, !tbaa !30
  %331 = sitofp i32 %330 to float
  %332 = fdiv float %300, %331
  %333 = fdiv float 1.000000e+00, %332
  %334 = sext i32 %.0131193 to i64
  %335 = getelementptr inbounds [12 x %"struct.SoLoud::MonotoneHardwareChannel"], ptr %13, i64 0, i64 %334, i32 2
  store float %333, ptr %335, align 4, !tbaa !44
  br label %336

336:                                              ; preds = %329, %315
  %337 = add nsw i32 %.0131193, 1
  br label %338

338:                                              ; preds = %336, %305
  %.1132 = phi i32 [ %337, %336 ], [ %.0131193, %305 ]
  %339 = add nsw i32 %306, 1
  %340 = srem i32 %339, %246
  store i32 %340, ptr %21, align 8, !tbaa !47
  %341 = add nuw nsw i32 %.0130194, 1
  %342 = icmp slt i32 %.1132, %251
  %343 = icmp ult i32 %341, %246
  %or.cond169 = select i1 %342, i1 %343, i1 false
  br i1 %or.cond169, label %305, label %.critedge, !llvm.loop !50

.critedge:                                        ; preds = %338, %.preheader170, %.preheader, %132
  %344 = getelementptr inbounds float, ptr %1, i64 %indvars.iv219
  store float 0.000000e+00, ptr %344, align 4, !tbaa !51
  %345 = load i32, ptr %13, align 8, !tbaa !20
  %.not153 = icmp eq i32 %345, 0
  br i1 %.not153, label %359, label %346

346:                                              ; preds = %.critedge
  %347 = load float, ptr %22, align 4, !tbaa !52
  %348 = load float, ptr %23, align 8, !tbaa !44
  %349 = fadd float %347, %348
  %350 = fptosi float %349 to i64
  %351 = sitofp i64 %350 to float
  %352 = fsub float %349, %351
  store float %352, ptr %22, align 4, !tbaa !52
  %353 = load ptr, ptr %9, align 8, !tbaa !13
  %354 = getelementptr inbounds i8, ptr %353, i64 3484
  %355 = load i32, ptr %354, align 4, !tbaa !53
  %356 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %355, float noundef %352)
  %357 = load float, ptr %344, align 4, !tbaa !51
  %358 = tail call float @llvm.fmuladd.f32(float %356, float 5.000000e-01, float %357)
  store float %358, ptr %344, align 4, !tbaa !51
  br label %359

359:                                              ; preds = %.critedge, %346
  %360 = load i32, ptr %124, align 4, !tbaa !20
  %.not153.1 = icmp eq i32 %360, 0
  br i1 %.not153.1, label %374, label %361

361:                                              ; preds = %359
  %362 = load float, ptr %24, align 8, !tbaa !52
  %363 = load float, ptr %25, align 4, !tbaa !44
  %364 = fadd float %362, %363
  %365 = fptosi float %364 to i64
  %366 = sitofp i64 %365 to float
  %367 = fsub float %364, %366
  store float %367, ptr %24, align 8, !tbaa !52
  %368 = load ptr, ptr %9, align 8, !tbaa !13
  %369 = getelementptr inbounds i8, ptr %368, i64 3484
  %370 = load i32, ptr %369, align 4, !tbaa !53
  %371 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %370, float noundef %367)
  %372 = load float, ptr %344, align 4, !tbaa !51
  %373 = tail call float @llvm.fmuladd.f32(float %371, float 5.000000e-01, float %372)
  store float %373, ptr %344, align 4, !tbaa !51
  br label %374

374:                                              ; preds = %361, %359
  %375 = load i32, ptr %123, align 4, !tbaa !20
  %.not153.2 = icmp eq i32 %375, 0
  br i1 %.not153.2, label %389, label %376

376:                                              ; preds = %374
  %377 = load float, ptr %26, align 4, !tbaa !52
  %378 = load float, ptr %27, align 8, !tbaa !44
  %379 = fadd float %377, %378
  %380 = fptosi float %379 to i64
  %381 = sitofp i64 %380 to float
  %382 = fsub float %379, %381
  store float %382, ptr %26, align 4, !tbaa !52
  %383 = load ptr, ptr %9, align 8, !tbaa !13
  %384 = getelementptr inbounds i8, ptr %383, i64 3484
  %385 = load i32, ptr %384, align 4, !tbaa !53
  %386 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %385, float noundef %382)
  %387 = load float, ptr %344, align 4, !tbaa !51
  %388 = tail call float @llvm.fmuladd.f32(float %386, float 5.000000e-01, float %387)
  store float %388, ptr %344, align 4, !tbaa !51
  br label %389

389:                                              ; preds = %376, %374
  %390 = load i32, ptr %125, align 4, !tbaa !20
  %.not153.3 = icmp eq i32 %390, 0
  br i1 %.not153.3, label %404, label %391

391:                                              ; preds = %389
  %392 = load float, ptr %28, align 8, !tbaa !52
  %393 = load float, ptr %29, align 4, !tbaa !44
  %394 = fadd float %392, %393
  %395 = fptosi float %394 to i64
  %396 = sitofp i64 %395 to float
  %397 = fsub float %394, %396
  store float %397, ptr %28, align 8, !tbaa !52
  %398 = load ptr, ptr %9, align 8, !tbaa !13
  %399 = getelementptr inbounds i8, ptr %398, i64 3484
  %400 = load i32, ptr %399, align 4, !tbaa !53
  %401 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %400, float noundef %397)
  %402 = load float, ptr %344, align 4, !tbaa !51
  %403 = tail call float @llvm.fmuladd.f32(float %401, float 5.000000e-01, float %402)
  store float %403, ptr %344, align 4, !tbaa !51
  br label %404

404:                                              ; preds = %391, %389
  %405 = load i32, ptr %122, align 4, !tbaa !20
  %.not153.4 = icmp eq i32 %405, 0
  br i1 %.not153.4, label %419, label %406

406:                                              ; preds = %404
  %407 = load float, ptr %30, align 4, !tbaa !52
  %408 = load float, ptr %31, align 8, !tbaa !44
  %409 = fadd float %407, %408
  %410 = fptosi float %409 to i64
  %411 = sitofp i64 %410 to float
  %412 = fsub float %409, %411
  store float %412, ptr %30, align 4, !tbaa !52
  %413 = load ptr, ptr %9, align 8, !tbaa !13
  %414 = getelementptr inbounds i8, ptr %413, i64 3484
  %415 = load i32, ptr %414, align 4, !tbaa !53
  %416 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %415, float noundef %412)
  %417 = load float, ptr %344, align 4, !tbaa !51
  %418 = tail call float @llvm.fmuladd.f32(float %416, float 5.000000e-01, float %417)
  store float %418, ptr %344, align 4, !tbaa !51
  br label %419

419:                                              ; preds = %406, %404
  %420 = load i32, ptr %126, align 4, !tbaa !20
  %.not153.5 = icmp eq i32 %420, 0
  br i1 %.not153.5, label %434, label %421

421:                                              ; preds = %419
  %422 = load float, ptr %32, align 8, !tbaa !52
  %423 = load float, ptr %33, align 4, !tbaa !44
  %424 = fadd float %422, %423
  %425 = fptosi float %424 to i64
  %426 = sitofp i64 %425 to float
  %427 = fsub float %424, %426
  store float %427, ptr %32, align 8, !tbaa !52
  %428 = load ptr, ptr %9, align 8, !tbaa !13
  %429 = getelementptr inbounds i8, ptr %428, i64 3484
  %430 = load i32, ptr %429, align 4, !tbaa !53
  %431 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %430, float noundef %427)
  %432 = load float, ptr %344, align 4, !tbaa !51
  %433 = tail call float @llvm.fmuladd.f32(float %431, float 5.000000e-01, float %432)
  store float %433, ptr %344, align 4, !tbaa !51
  br label %434

434:                                              ; preds = %421, %419
  %435 = load i32, ptr %121, align 4, !tbaa !20
  %.not153.6 = icmp eq i32 %435, 0
  br i1 %.not153.6, label %449, label %436

436:                                              ; preds = %434
  %437 = load float, ptr %34, align 4, !tbaa !52
  %438 = load float, ptr %35, align 8, !tbaa !44
  %439 = fadd float %437, %438
  %440 = fptosi float %439 to i64
  %441 = sitofp i64 %440 to float
  %442 = fsub float %439, %441
  store float %442, ptr %34, align 4, !tbaa !52
  %443 = load ptr, ptr %9, align 8, !tbaa !13
  %444 = getelementptr inbounds i8, ptr %443, i64 3484
  %445 = load i32, ptr %444, align 4, !tbaa !53
  %446 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %445, float noundef %442)
  %447 = load float, ptr %344, align 4, !tbaa !51
  %448 = tail call float @llvm.fmuladd.f32(float %446, float 5.000000e-01, float %447)
  store float %448, ptr %344, align 4, !tbaa !51
  br label %449

449:                                              ; preds = %436, %434
  %450 = load i32, ptr %127, align 4, !tbaa !20
  %.not153.7 = icmp eq i32 %450, 0
  br i1 %.not153.7, label %464, label %451

451:                                              ; preds = %449
  %452 = load float, ptr %36, align 8, !tbaa !52
  %453 = load float, ptr %37, align 4, !tbaa !44
  %454 = fadd float %452, %453
  %455 = fptosi float %454 to i64
  %456 = sitofp i64 %455 to float
  %457 = fsub float %454, %456
  store float %457, ptr %36, align 8, !tbaa !52
  %458 = load ptr, ptr %9, align 8, !tbaa !13
  %459 = getelementptr inbounds i8, ptr %458, i64 3484
  %460 = load i32, ptr %459, align 4, !tbaa !53
  %461 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %460, float noundef %457)
  %462 = load float, ptr %344, align 4, !tbaa !51
  %463 = tail call float @llvm.fmuladd.f32(float %461, float 5.000000e-01, float %462)
  store float %463, ptr %344, align 4, !tbaa !51
  br label %464

464:                                              ; preds = %451, %449
  %465 = load i32, ptr %120, align 4, !tbaa !20
  %.not153.8 = icmp eq i32 %465, 0
  br i1 %.not153.8, label %479, label %466

466:                                              ; preds = %464
  %467 = load float, ptr %38, align 4, !tbaa !52
  %468 = load float, ptr %39, align 8, !tbaa !44
  %469 = fadd float %467, %468
  %470 = fptosi float %469 to i64
  %471 = sitofp i64 %470 to float
  %472 = fsub float %469, %471
  store float %472, ptr %38, align 4, !tbaa !52
  %473 = load ptr, ptr %9, align 8, !tbaa !13
  %474 = getelementptr inbounds i8, ptr %473, i64 3484
  %475 = load i32, ptr %474, align 4, !tbaa !53
  %476 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %475, float noundef %472)
  %477 = load float, ptr %344, align 4, !tbaa !51
  %478 = tail call float @llvm.fmuladd.f32(float %476, float 5.000000e-01, float %477)
  store float %478, ptr %344, align 4, !tbaa !51
  br label %479

479:                                              ; preds = %466, %464
  %480 = load i32, ptr %128, align 4, !tbaa !20
  %.not153.9 = icmp eq i32 %480, 0
  br i1 %.not153.9, label %494, label %481

481:                                              ; preds = %479
  %482 = load float, ptr %40, align 8, !tbaa !52
  %483 = load float, ptr %41, align 4, !tbaa !44
  %484 = fadd float %482, %483
  %485 = fptosi float %484 to i64
  %486 = sitofp i64 %485 to float
  %487 = fsub float %484, %486
  store float %487, ptr %40, align 8, !tbaa !52
  %488 = load ptr, ptr %9, align 8, !tbaa !13
  %489 = getelementptr inbounds i8, ptr %488, i64 3484
  %490 = load i32, ptr %489, align 4, !tbaa !53
  %491 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %490, float noundef %487)
  %492 = load float, ptr %344, align 4, !tbaa !51
  %493 = tail call float @llvm.fmuladd.f32(float %491, float 5.000000e-01, float %492)
  store float %493, ptr %344, align 4, !tbaa !51
  br label %494

494:                                              ; preds = %481, %479
  %495 = load i32, ptr %119, align 4, !tbaa !20
  %.not153.10 = icmp eq i32 %495, 0
  br i1 %.not153.10, label %509, label %496

496:                                              ; preds = %494
  %497 = load float, ptr %42, align 4, !tbaa !52
  %498 = load float, ptr %43, align 8, !tbaa !44
  %499 = fadd float %497, %498
  %500 = fptosi float %499 to i64
  %501 = sitofp i64 %500 to float
  %502 = fsub float %499, %501
  store float %502, ptr %42, align 4, !tbaa !52
  %503 = load ptr, ptr %9, align 8, !tbaa !13
  %504 = getelementptr inbounds i8, ptr %503, i64 3484
  %505 = load i32, ptr %504, align 4, !tbaa !53
  %506 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %505, float noundef %502)
  %507 = load float, ptr %344, align 4, !tbaa !51
  %508 = tail call float @llvm.fmuladd.f32(float %506, float 5.000000e-01, float %507)
  store float %508, ptr %344, align 4, !tbaa !51
  br label %509

509:                                              ; preds = %496, %494
  %510 = load i32, ptr %130, align 4, !tbaa !20
  %.not153.11 = icmp eq i32 %510, 0
  br i1 %.not153.11, label %524, label %511

511:                                              ; preds = %509
  %512 = load float, ptr %44, align 8, !tbaa !52
  %513 = load float, ptr %45, align 4, !tbaa !44
  %514 = fadd float %512, %513
  %515 = fptosi float %514 to i64
  %516 = sitofp i64 %515 to float
  %517 = fsub float %514, %516
  store float %517, ptr %44, align 8, !tbaa !52
  %518 = load ptr, ptr %9, align 8, !tbaa !13
  %519 = getelementptr inbounds i8, ptr %518, i64 3484
  %520 = load i32, ptr %519, align 4, !tbaa !53
  %521 = tail call noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef %520, float noundef %517)
  %522 = load float, ptr %344, align 4, !tbaa !51
  %523 = tail call float @llvm.fmuladd.f32(float %521, float 5.000000e-01, float %522)
  store float %523, ptr %344, align 4, !tbaa !51
  br label %524

524:                                              ; preds = %511, %509
  %525 = load i32, ptr %15, align 8, !tbaa !22
  %526 = add nsw i32 %525, 1
  store i32 %526, ptr %15, align 8, !tbaa !22
  %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1
  %exitcond223.not = icmp eq i64 %indvars.iv.next220, %wide.trip.count222
  br i1 %exitcond223.not, label %._crit_edge199, label %132, !llvm.loop !54

._crit_edge199:                                   ; preds = %524, %.preheader171
  ret i32 %2
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5floorf(float noundef) local_unnamed_addr #1

declare noundef float @_ZN6SoLoud4Misc16generateWaveformEif(i32 noundef, float noundef) local_unnamed_addr #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 68}
!6 = !{!"_ZTSN6SoLoud19AudioSourceInstanceE", !7, i64 8, !7, i64 12, !7, i64 16, !10, i64 20, !8, i64 24, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !7, i64 72, !10, i64 76, !10, i64 80, !11, i64 88, !11, i64 96, !12, i64 104, !12, i64 152, !12, i64 200, !12, i64 248, !12, i64 296, !7, i64 344, !8, i64 348, !7, i64 380, !7, i64 384, !8, i64 392, !8, i64 456, !7, i64 472, !7, i64 476, !7, i64 480, !11, i64 488}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"float", !8, i64 0}
!11 = !{!"double", !8, i64 0}
!12 = !{!"_ZTSN6SoLoud5FaderE", !10, i64 0, !10, i64 4, !10, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !10, i64 40, !7, i64 44}
!13 = !{!14, !15, i64 496}
!14 = !{!"_ZTSN6SoLoud16MonotoneInstanceE", !6, i64 0, !15, i64 496, !8, i64 504, !8, i64 1176, !7, i64 1320, !7, i64 1324, !7, i64 1328, !7, i64 1332, !7, i64 1336, !7, i64 1340}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!17, !7, i64 3480}
!17 = !{!"_ZTSN6SoLoud8MonotoneE", !18, i64 0, !8, i64 152, !8, i64 3352, !7, i64 3480, !7, i64 3484, !19, i64 3488}
!18 = !{!"_ZTSN6SoLoud11AudioSourceE", !7, i64 8, !10, i64 12, !10, i64 16, !7, i64 20, !7, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !7, i64 40, !10, i64 44, !8, i64 48, !15, i64 112, !15, i64 120, !15, i64 128, !7, i64 136, !11, i64 144}
!19 = !{!"_ZTSN6SoLoud12MonotoneSongE", !15, i64 0, !15, i64 8, !8, i64 16, !8, i64 17, !8, i64 18, !8, i64 19, !8, i64 20, !15, i64 280}
!20 = !{!21, !7, i64 0}
!21 = !{!"_ZTSN6SoLoud23MonotoneHardwareChannelE", !7, i64 0, !10, i64 4, !10, i64 8}
!22 = !{!14, !7, i64 1336}
!23 = !{!17, !8, i64 3506}
!24 = !{!14, !7, i64 1340}
!25 = !{!14, !7, i64 1324}
!26 = !{!14, !7, i64 1328}
!27 = !{!14, !7, i64 1332}
!28 = !{!8, !8, i64 0}
!29 = !{!17, !15, i64 3768}
!30 = !{!7, !7, i64 0}
!31 = !{!32, !7, i64 20}
!32 = !{!"_ZTSN6SoLoud15MonotoneChannelE", !7, i64 0, !7, i64 4, !8, i64 8, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52}
!33 = !{!32, !7, i64 28}
!34 = !{!32, !7, i64 40}
!35 = !{!32, !7, i64 32}
!36 = !{!32, !7, i64 4}
!37 = !{!32, !7, i64 44}
!38 = !{!32, !7, i64 36}
!39 = !{!32, !7, i64 48}
!40 = !{!32, !7, i64 52}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}
!44 = !{!21, !10, i64 8}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.unroll.disable"}
!47 = !{!14, !7, i64 1320}
!48 = distinct !{!48, !42}
!49 = !{!32, !7, i64 24}
!50 = distinct !{!50, !42}
!51 = !{!10, !10, i64 0}
!52 = !{!21, !10, i64 4}
!53 = !{!17, !7, i64 3484}
!54 = distinct !{!54, !42}


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