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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.juce::Colour" = type { %"class.juce::PixelARGB" }
%"class.juce::PixelARGB" = type { %union.anon.153 }
%union.anon.153 = type { i32 }
%"class.juce::Rectangle" = type { %"class.juce::Point", i32, i32 }
%"class.juce::Point" = type { i32, i32 }
%"class.juce::ColourGradient" = type { %"class.juce::Point.160", %"class.juce::Point.160", i8, [7 x i8], %"class.juce::Array.175" }
%"class.juce::Point.160" = type { float, float }
%"class.juce::Array.175" = type { %"class.juce::ArrayAllocationBase.176", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.176" = type <{ %"class.juce::HeapBlock.177", i32, [4 x i8] }>
%"class.juce::HeapBlock.177" = type { ptr }
%"class.juce::MidiKeyboardComponent" = type { %"class.juce::Component.base", %"class.juce::MidiKeyboardStateListener", %"class.juce::ChangeBroadcaster", %"class.juce::Timer", ptr, float, i32, float, i32, i32, i32, float, [4 x i8], %"class.juce::Array.97", %"class.juce::Array.97", %"class.juce::BigInteger", %"class.juce::BigInteger", i8, i32, i32, float, i8, i8, i8, %"class.juce::ScopedPointer.164", %"class.juce::ScopedPointer.164", %"class.juce::Array.102", %"class.juce::Array.97", i32, i32 }
%"class.juce::Component.base" = type <{ %"class.juce::MouseListener", %"class.juce::String", %"class.juce::String", ptr, %"class.juce::Rectangle", %"class.juce::ScopedPointer", %"class.juce::ScopedPointer.0", %"class.juce::Array", ptr, %"class.juce::MouseCursor", ptr, %"class.juce::ScopedPointer.1", %"class.juce::ScopedPointer.2", %"class.juce::ScopedPointer.3", %"class.juce::ListenerList", %"class.juce::NamedValueSet", %"class.juce::WeakReference<juce::Component>::Master", %union.anon, i8 }>
%"class.juce::MouseListener" = type { ptr }
%"class.juce::String" = type { %"class.juce::CharPointer_UTF8" }
%"class.juce::CharPointer_UTF8" = type { ptr }
%"class.juce::ScopedPointer" = type { ptr }
%"class.juce::ScopedPointer.0" = type { ptr }
%"class.juce::Array" = type { %"class.juce::ArrayAllocationBase", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase" = type <{ %"class.juce::HeapBlock", i32, [4 x i8] }>
%"class.juce::HeapBlock" = type { ptr }
%"class.juce::MouseCursor" = type { ptr }
%"class.juce::ScopedPointer.1" = type { ptr }
%"class.juce::ScopedPointer.2" = type { ptr }
%"class.juce::ScopedPointer.3" = type { ptr }
%"class.juce::ListenerList" = type { %"class.juce::Array.4" }
%"class.juce::Array.4" = type { %"class.juce::ArrayAllocationBase.5", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.5" = type <{ %"class.juce::HeapBlock.6", i32, [4 x i8] }>
%"class.juce::HeapBlock.6" = type { ptr }
%"class.juce::NamedValueSet" = type { %"class.juce::Array.9" }
%"class.juce::Array.9" = type { %"class.juce::ArrayAllocationBase.10", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.10" = type <{ %"class.juce::HeapBlock.11", i32, [4 x i8] }>
%"class.juce::HeapBlock.11" = type { ptr }
%"class.juce::WeakReference<juce::Component>::Master" = type { %"class.juce::ReferenceCountedObjectPtr" }
%"class.juce::ReferenceCountedObjectPtr" = type { ptr }
%union.anon = type { i32 }
%"class.juce::MidiKeyboardStateListener" = type { ptr }
%"class.juce::ChangeBroadcaster" = type { ptr, %"class.juce::ChangeBroadcaster::ChangeBroadcasterCallback", %"class.juce::ListenerList.20" }
%"class.juce::ChangeBroadcaster::ChangeBroadcasterCallback" = type { %"class.juce::AsyncUpdater", ptr }
%"class.juce::AsyncUpdater" = type { ptr, %"class.juce::ReferenceCountedObjectPtr.19" }
%"class.juce::ReferenceCountedObjectPtr.19" = type { ptr }
%"class.juce::ListenerList.20" = type { %"class.juce::Array.21" }
%"class.juce::Array.21" = type { %"class.juce::ArrayAllocationBase.22", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.22" = type <{ %"class.juce::HeapBlock.23", i32, [4 x i8] }>
%"class.juce::HeapBlock.23" = type { ptr }
%"class.juce::Timer" = type { ptr, i32, i32, ptr, ptr }
%"class.juce::BigInteger" = type <{ %"class.juce::HeapBlock.34", [4 x i32], i64, i32, i8, [3 x i8] }>
%"class.juce::HeapBlock.34" = type { ptr }
%"class.juce::ScopedPointer.164" = type { ptr }
%"class.juce::Array.102" = type { %"class.juce::ArrayAllocationBase.103", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.103" = type <{ %"class.juce::HeapBlock.104", i32, [4 x i8] }>
%"class.juce::HeapBlock.104" = type { ptr }
%"class.juce::Array.97" = type { %"class.juce::ArrayAllocationBase.98", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.98" = type <{ %"class.juce::HeapBlock.99", i32, [4 x i8] }>
%"class.juce::HeapBlock.99" = type { ptr }

@_ZN4juce21MidiKeyboardComponent10whiteNotesE = external dso_local constant [7 x i8], align 1
@_ZN4juce21MidiKeyboardComponent10blackNotesE = external dso_local constant [5 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16)) #2 align 2

; Function Attrs: nounwind
declare void @_ZN4juce6ColourC1ERKS0_(ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4)) unnamed_addr #3

declare void @_ZNK4juce8Graphics7fillAllENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef) #4

declare void @_ZN4juce8Graphics9setColourENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef) #4

declare void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1, ptr noundef nonnull align 8 dereferenceable(197), i32 noundef, i1 noundef zeroext) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce21MidiKeyboardComponent9getKeyPosEiRiS1_(ptr noundef nonnull align 8 dereferenceable(560), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind noalias writable sret(%"class.juce::Rectangle") align 4, ptr noundef nonnull align 8 dereferenceable(560), i32 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4juce21MidiKeyboardComponent5paintERNS_8GraphicsE(ptr noundef nonnull align 8 dereferenceable(560) %0, ptr noundef nonnull align 8 dereferenceable(17) %1) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.juce::Colour", align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.juce::Colour", align 1
  %9 = alloca %"class.juce::Colour", align 1
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.juce::Rectangle", align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %"class.juce::Colour", align 1
  %24 = alloca %"class.juce::ColourGradient", align 8
  %25 = alloca %"class.juce::Colour", align 1
  %26 = alloca %"class.juce::Colour", align 1
  %27 = alloca %"class.juce::Colour", align 1
  %28 = alloca %"class.juce::Colour", align 1
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %"class.juce::Rectangle", align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %33 = load ptr, ptr %3, align 8
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %5, ptr noundef nonnull align 8 dereferenceable(197) %33, i32 noundef 16797696, i1 noundef zeroext false)
  invoke void @_ZNK4juce8Graphics7fillAllENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17) %34, ptr noundef %5)
          to label %35 unwind label %41

35:                                               ; preds = %2
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %5) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %8, ptr noundef nonnull align 8 dereferenceable(197) %33, i32 noundef 16797698, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %9, ptr noundef nonnull align 8 dereferenceable(197) %33, i32 noundef 16797701, i1 noundef zeroext false)
          to label %36 unwind label %45

36:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %37

37:                                               ; preds = %108, %36
  %38 = load i32, ptr %10, align 4, !tbaa !9
  %39 = icmp slt i32 %38, 128
  br i1 %39, label %49, label %40

40:                                               ; preds = %37
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  br label %111

41:                                               ; preds = %2
  %42 = landingpad { ptr, i32 }
          cleanup
  %43 = extractvalue { ptr, i32 } %42, 0
  store ptr %43, ptr %6, align 8
  %44 = extractvalue { ptr, i32 } %42, 1
  store i32 %44, ptr %7, align 4
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %5) #6
  br label %295

45:                                               ; preds = %35
  %46 = landingpad { ptr, i32 }
          cleanup
  %47 = extractvalue { ptr, i32 } %46, 0
  store ptr %47, ptr %6, align 8
  %48 = extractvalue { ptr, i32 } %46, 1
  store i32 %48, ptr %7, align 4
  br label %294

49:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %50

50:                                               ; preds = %104, %49
  %51 = load i32, ptr %12, align 4, !tbaa !9
  %52 = icmp slt i32 %51, 7
  br i1 %52, label %54, label %53

53:                                               ; preds = %50
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %107

54:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %55 = load i32, ptr %10, align 4, !tbaa !9
  %56 = load i32, ptr %12, align 4, !tbaa !9
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds [7 x i8], ptr @_ZN4juce21MidiKeyboardComponent10whiteNotesE, i64 0, i64 %57
  %59 = load i8, ptr %58, align 1, !tbaa !11
  %60 = zext i8 %59 to i32
  %61 = add nsw i32 %55, %60
  store i32 %61, ptr %13, align 4, !tbaa !9
  %62 = load i32, ptr %13, align 4, !tbaa !9
  %63 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 18
  %64 = load i32, ptr %63, align 4, !tbaa !12
  %65 = icmp sge i32 %62, %64
  br i1 %65, label %66, label %103

66:                                               ; preds = %54
  %67 = load i32, ptr %13, align 4, !tbaa !9
  %68 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 19
  %69 = load i32, ptr %68, align 8, !tbaa !62
  %70 = icmp sle i32 %67, %69
  br i1 %70, label %71, label %103

71:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #6
  %72 = load i32, ptr %13, align 4, !tbaa !9
  invoke void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind writable sret(%"class.juce::Rectangle") align 4 %14, ptr noundef nonnull align 8 dereferenceable(560) %33, i32 noundef %72)
          to label %73 unwind label %94

73:                                               ; preds = %71
  %74 = load i32, ptr %13, align 4, !tbaa !9
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = call noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16) %14) #6
  %77 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %14) #6
  %78 = call noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %14) #6
  %79 = call noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %14) #6
  %80 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 4
  %81 = load ptr, ptr %80, align 8, !tbaa !63
  %82 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 10
  %83 = load i32, ptr %82, align 4, !tbaa !64
  %84 = load i32, ptr %13, align 4, !tbaa !9
  %85 = call noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344) %81, i32 noundef %83, i32 noundef %84) #6
  %86 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 13
  %87 = load i32, ptr %13, align 4, !tbaa !9
  %88 = invoke noundef zeroext i1 @_ZNK4juce5ArrayIiNS_20DummyCriticalSectionELi0EE8containsEi(ptr noundef nonnull align 8 dereferenceable(20) %86, i32 noundef %87)
          to label %89 unwind label %98

89:                                               ; preds = %73
  %90 = load ptr, ptr %33, align 8, !tbaa !65
  %91 = getelementptr inbounds ptr, ptr %90, i64 48
  %92 = load ptr, ptr %91, align 8
  invoke void %92(ptr noundef nonnull align 8 dereferenceable(560) %33, i32 noundef %74, ptr noundef nonnull align 8 dereferenceable(17) %75, i32 noundef %76, i32 noundef %77, i32 noundef %78, i32 noundef %79, i1 noundef zeroext %85, i1 noundef zeroext %88, ptr noundef nonnull align 1 dereferenceable(4) %8, ptr noundef nonnull align 1 dereferenceable(4) %9)
          to label %93 unwind label %98

93:                                               ; preds = %89
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #6
  br label %103

94:                                               ; preds = %71
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %6, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %7, align 4
  br label %102

98:                                               ; preds = %89, %73
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %6, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %7, align 4
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %14) #6
  br label %102

102:                                              ; preds = %98, %94
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  br label %293

103:                                              ; preds = %93, %66, %54
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  br label %104

104:                                              ; preds = %103
  %105 = load i32, ptr %12, align 4, !tbaa !9
  %106 = add nsw i32 %105, 1
  store i32 %106, ptr %12, align 4, !tbaa !9
  br label %50, !llvm.loop !67

107:                                              ; preds = %53
  br label %108

108:                                              ; preds = %107
  %109 = load i32, ptr %10, align 4, !tbaa !9
  %110 = add nsw i32 %109, 12
  store i32 %110, ptr %10, align 4, !tbaa !9
  br label %37, !llvm.loop !69

111:                                              ; preds = %40
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store float 0.000000e+00, ptr %15, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store float 0.000000e+00, ptr %16, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store float 0.000000e+00, ptr %17, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store float 0.000000e+00, ptr %18, align 4, !tbaa !70
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %112 = call noundef i32 @_ZNK4juce9Component8getWidthEv(ptr noundef nonnull align 8 dereferenceable(197) %33) #6
  store i32 %112, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %113 = call noundef i32 @_ZNK4juce9Component9getHeightEv(ptr noundef nonnull align 8 dereferenceable(197) %33) #6
  store i32 %113, ptr %20, align 4, !tbaa !9
  %114 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 8
  %115 = load i32, ptr %114, align 4, !tbaa !71
  %116 = icmp eq i32 %115, 1
  br i1 %116, label %117, label %124

117:                                              ; preds = %111
  %118 = load i32, ptr %19, align 4, !tbaa !9
  %119 = sitofp i32 %118 to float
  %120 = fsub float %119, 1.000000e+00
  store float %120, ptr %15, align 4, !tbaa !70
  %121 = load i32, ptr %19, align 4, !tbaa !9
  %122 = sitofp i32 %121 to float
  %123 = fsub float %122, 5.000000e+00
  store float %123, ptr %17, align 4, !tbaa !70
  br label %131

124:                                              ; preds = %111
  %125 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 8
  %126 = load i32, ptr %125, align 4, !tbaa !71
  %127 = icmp eq i32 %126, 2
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  store float 5.000000e+00, ptr %17, align 4, !tbaa !70
  br label %130

129:                                              ; preds = %124
  store float 5.000000e+00, ptr %18, align 4, !tbaa !70
  br label %130

130:                                              ; preds = %129, %128
  br label %131

131:                                              ; preds = %130, %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %132 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 19
  %133 = load i32, ptr %132, align 8, !tbaa !62
  invoke void @_ZNK4juce21MidiKeyboardComponent9getKeyPosEiRiS1_(ptr noundef nonnull align 8 dereferenceable(560) %33, i32 noundef %133, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %134 unwind label %150

134:                                              ; preds = %131
  %135 = load i32, ptr %22, align 4, !tbaa !9
  %136 = load i32, ptr %21, align 4, !tbaa !9
  %137 = add nsw i32 %136, %135
  store i32 %137, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %23, ptr noundef nonnull align 8 dereferenceable(197) %33, i32 noundef 16797704, i1 noundef zeroext false)
          to label %138 unwind label %154

138:                                              ; preds = %134
  %139 = call noundef zeroext i1 @_ZNK4juce6Colour13isTransparentEv(ptr noundef nonnull align 1 dereferenceable(4) %23) #6
  br i1 %139, label %187, label %140

140:                                              ; preds = %138
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %24) #6
  call void @_ZN4juce6ColourC1ERKS0_(ptr noundef nonnull align 1 dereferenceable(4) %25, ptr noundef nonnull align 1 dereferenceable(4) %23) #6
  %142 = load float, ptr %15, align 4, !tbaa !70
  %143 = load float, ptr %16, align 4, !tbaa !70
  call void @_ZNK4juce6Colour9withAlphaEf(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %26, ptr noundef nonnull align 1 dereferenceable(4) %23, float noundef 0.000000e+00) #6
  %144 = load float, ptr %17, align 4, !tbaa !70
  %145 = load float, ptr %18, align 4, !tbaa !70
  invoke void @_ZN4juce14ColourGradientC1ENS_6ColourEffS1_ffb(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef %25, float noundef %142, float noundef %143, ptr noundef %26, float noundef %144, float noundef %145, i1 noundef zeroext false)
          to label %146 unwind label %158

146:                                              ; preds = %140
  invoke void @_ZN4juce8Graphics15setGradientFillERKNS_14ColourGradientE(ptr noundef nonnull align 8 dereferenceable(17) %141, ptr noundef nonnull align 8 dereferenceable(48) %24)
          to label %147 unwind label %162

147:                                              ; preds = %146
  call void @_ZN4juce14ColourGradientD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %26) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %25) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %24) #6
  %148 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 8
  %149 = load i32, ptr %148, align 4, !tbaa !71
  switch i32 %149, label %185 [
    i32 0, label %167
    i32 1, label %175
    i32 2, label %181
  ]

150:                                              ; preds = %131
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %6, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %7, align 4
  br label %292

154:                                              ; preds = %134
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %6, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %7, align 4
  br label %291

158:                                              ; preds = %140
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %6, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %7, align 4
  br label %166

162:                                              ; preds = %146
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %6, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %7, align 4
  call void @_ZN4juce14ColourGradientD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #6
  br label %166

166:                                              ; preds = %162, %158
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %26) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %25) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %24) #6
  br label %290

167:                                              ; preds = %147
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = load i32, ptr %21, align 4, !tbaa !9
  invoke void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17) %168, i32 noundef 0, i32 noundef 0, i32 noundef %169, i32 noundef 5)
          to label %170 unwind label %171

170:                                              ; preds = %167
  br label %186

171:                                              ; preds = %208, %204, %198, %181, %175, %167
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %6, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %7, align 4
  br label %290

175:                                              ; preds = %147
  %176 = load ptr, ptr %4, align 8, !tbaa !5
  %177 = load i32, ptr %19, align 4, !tbaa !9
  %178 = sub nsw i32 %177, 5
  %179 = load i32, ptr %21, align 4, !tbaa !9
  invoke void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17) %176, i32 noundef %178, i32 noundef 0, i32 noundef 5, i32 noundef %179)
          to label %180 unwind label %171

180:                                              ; preds = %175
  br label %186

181:                                              ; preds = %147
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = load i32, ptr %21, align 4, !tbaa !9
  invoke void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17) %182, i32 noundef 0, i32 noundef 0, i32 noundef 5, i32 noundef %183)
          to label %184 unwind label %171

184:                                              ; preds = %181
  br label %186

185:                                              ; preds = %147
  br label %186

186:                                              ; preds = %185, %184, %180, %170
  br label %187

187:                                              ; preds = %186, %138
  %188 = call noundef zeroext i1 @_ZNK4juce6Colour13isTransparentEv(ptr noundef nonnull align 1 dereferenceable(4) %8) #6
  br i1 %188, label %216, label %189

189:                                              ; preds = %187
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN4juce6ColourC1ERKS0_(ptr noundef nonnull align 1 dereferenceable(4) %27, ptr noundef nonnull align 1 dereferenceable(4) %8) #6
  invoke void @_ZN4juce8Graphics9setColourENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17) %190, ptr noundef %27)
          to label %191 unwind label %194

191:                                              ; preds = %189
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %27) #6
  %192 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 8
  %193 = load i32, ptr %192, align 4, !tbaa !71
  switch i32 %193, label %214 [
    i32 0, label %198
    i32 1, label %204
    i32 2, label %208
  ]

194:                                              ; preds = %189
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %6, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %7, align 4
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %27) #6
  br label %290

198:                                              ; preds = %191
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = load i32, ptr %20, align 4, !tbaa !9
  %201 = sub nsw i32 %200, 1
  %202 = load i32, ptr %21, align 4, !tbaa !9
  invoke void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17) %199, i32 noundef 0, i32 noundef %201, i32 noundef %202, i32 noundef 1)
          to label %203 unwind label %171

203:                                              ; preds = %198
  br label %215

204:                                              ; preds = %191
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = load i32, ptr %21, align 4, !tbaa !9
  invoke void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17) %205, i32 noundef 0, i32 noundef 0, i32 noundef 1, i32 noundef %206)
          to label %207 unwind label %171

207:                                              ; preds = %204
  br label %215

208:                                              ; preds = %191
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = load i32, ptr %19, align 4, !tbaa !9
  %211 = sub nsw i32 %210, 1
  %212 = load i32, ptr %21, align 4, !tbaa !9
  invoke void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17) %209, i32 noundef %211, i32 noundef 0, i32 noundef 1, i32 noundef %212)
          to label %213 unwind label %171

213:                                              ; preds = %208
  br label %215

214:                                              ; preds = %191
  br label %215

215:                                              ; preds = %214, %213, %207, %203
  br label %216

216:                                              ; preds = %215, %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %28, ptr noundef nonnull align 8 dereferenceable(197) %33, i32 noundef 16797697, i1 noundef zeroext false)
          to label %217 unwind label %222

217:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %218

218:                                              ; preds = %285, %217
  %219 = load i32, ptr %29, align 4, !tbaa !9
  %220 = icmp slt i32 %219, 128
  br i1 %220, label %226, label %221

221:                                              ; preds = %218
  store i32 10, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %288

222:                                              ; preds = %216
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %6, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %7, align 4
  br label %289

226:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %281, %226
  %228 = load i32, ptr %30, align 4, !tbaa !9
  %229 = icmp slt i32 %228, 5
  br i1 %229, label %231, label %230

230:                                              ; preds = %227
  store i32 13, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %284

231:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  %232 = load i32, ptr %29, align 4, !tbaa !9
  %233 = load i32, ptr %30, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [5 x i8], ptr @_ZN4juce21MidiKeyboardComponent10blackNotesE, i64 0, i64 %234
  %236 = load i8, ptr %235, align 1, !tbaa !11
  %237 = zext i8 %236 to i32
  %238 = add nsw i32 %232, %237
  store i32 %238, ptr %31, align 4, !tbaa !9
  %239 = load i32, ptr %31, align 4, !tbaa !9
  %240 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 18
  %241 = load i32, ptr %240, align 4, !tbaa !12
  %242 = icmp sge i32 %239, %241
  br i1 %242, label %243, label %280

243:                                              ; preds = %231
  %244 = load i32, ptr %31, align 4, !tbaa !9
  %245 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 19
  %246 = load i32, ptr %245, align 8, !tbaa !62
  %247 = icmp sle i32 %244, %246
  br i1 %247, label %248, label %280

248:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #6
  %249 = load i32, ptr %31, align 4, !tbaa !9
  invoke void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind writable sret(%"class.juce::Rectangle") align 4 %32, ptr noundef nonnull align 8 dereferenceable(560) %33, i32 noundef %249)
          to label %250 unwind label %271

250:                                              ; preds = %248
  %251 = load i32, ptr %31, align 4, !tbaa !9
  %252 = load ptr, ptr %4, align 8, !tbaa !5
  %253 = call noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16) %32) #6
  %254 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %32) #6
  %255 = call noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %32) #6
  %256 = call noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %32) #6
  %257 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 4
  %258 = load ptr, ptr %257, align 8, !tbaa !63
  %259 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 10
  %260 = load i32, ptr %259, align 4, !tbaa !64
  %261 = load i32, ptr %31, align 4, !tbaa !9
  %262 = call noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344) %258, i32 noundef %260, i32 noundef %261) #6
  %263 = getelementptr inbounds %"class.juce::MidiKeyboardComponent", ptr %33, i32 0, i32 13
  %264 = load i32, ptr %31, align 4, !tbaa !9
  %265 = invoke noundef zeroext i1 @_ZNK4juce5ArrayIiNS_20DummyCriticalSectionELi0EE8containsEi(ptr noundef nonnull align 8 dereferenceable(20) %263, i32 noundef %264)
          to label %266 unwind label %275

266:                                              ; preds = %250
  %267 = load ptr, ptr %33, align 8, !tbaa !65
  %268 = getelementptr inbounds ptr, ptr %267, i64 49
  %269 = load ptr, ptr %268, align 8
  invoke void %269(ptr noundef nonnull align 8 dereferenceable(560) %33, i32 noundef %251, ptr noundef nonnull align 8 dereferenceable(17) %252, i32 noundef %253, i32 noundef %254, i32 noundef %255, i32 noundef %256, i1 noundef zeroext %262, i1 noundef zeroext %265, ptr noundef nonnull align 1 dereferenceable(4) %28)
          to label %270 unwind label %275

270:                                              ; preds = %266
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #6
  br label %280

271:                                              ; preds = %248
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %6, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %7, align 4
  br label %279

275:                                              ; preds = %266, %250
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %6, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %7, align 4
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %32) #6
  br label %279

279:                                              ; preds = %275, %271
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %28) #6
  br label %289

280:                                              ; preds = %270, %243, %231
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %281

281:                                              ; preds = %280
  %282 = load i32, ptr %30, align 4, !tbaa !9
  %283 = add nsw i32 %282, 1
  store i32 %283, ptr %30, align 4, !tbaa !9
  br label %227, !llvm.loop !72

284:                                              ; preds = %230
  br label %285

285:                                              ; preds = %284
  %286 = load i32, ptr %29, align 4, !tbaa !9
  %287 = add nsw i32 %286, 12
  store i32 %287, ptr %29, align 4, !tbaa !9
  br label %218, !llvm.loop !73

288:                                              ; preds = %221
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  ret void

289:                                              ; preds = %279, %222
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %290

290:                                              ; preds = %289, %194, %171, %166
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %23) #6
  br label %291

291:                                              ; preds = %290, %154
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %292

292:                                              ; preds = %291, %150
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %293

293:                                              ; preds = %292, %102
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %9) #6
  br label %294

294:                                              ; preds = %293, %45
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  br label %295

295:                                              ; preds = %294, %41
  %296 = load ptr, ptr %6, align 8
  %297 = load i32, ptr %7, align 4
  %298 = insertvalue { ptr, i32 } poison, ptr %296, 0
  %299 = insertvalue { ptr, i32 } %298, i32 %297, 1
  resume { ptr, i32 } %299
}

; Function Attrs: nounwind
declare noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344), i32 noundef, i32 noundef) #3

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

; Function Attrs: nounwind
declare noundef zeroext i1 @_ZNK4juce6Colour13isTransparentEv(ptr noundef nonnull align 1 dereferenceable(4)) #3

declare void @_ZN4juce8Graphics15setGradientFillERKNS_14ColourGradientE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(48)) #4

; Function Attrs: nounwind
declare void @_ZNK4juce6Colour9withAlphaEf(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1, ptr noundef nonnull align 1 dereferenceable(4), float noundef) #3

declare void @_ZN4juce14ColourGradientC1ENS_6ColourEffS1_ffb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, float noundef, float noundef, ptr noundef, float noundef, float noundef, i1 noundef zeroext) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN4juce14ColourGradientD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #3

declare void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17), i32 noundef, i32 noundef, i32 noundef, i32 noundef) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = !{!7, !7, i64 0}
!12 = !{!13, !10, i64 468}
!13 = !{!"_ZTSN4juce21MidiKeyboardComponentE", !14, i64 0, !39, i64 200, !40, i64 208, !48, i64 264, !6, i64 296, !49, i64 304, !10, i64 308, !49, i64 312, !50, i64 316, !10, i64 320, !10, i64 324, !49, i64 328, !51, i64 336, !51, i64 360, !54, i64 384, !54, i64 424, !57, i64 464, !10, i64 468, !10, i64 472, !49, i64 476, !57, i64 480, !57, i64 481, !57, i64 482, !58, i64 488, !58, i64 496, !59, i64 504, !51, i64 528, !10, i64 552, !10, i64 556}
!14 = !{!"_ZTSN4juce9ComponentE", !15, i64 0, !16, i64 8, !16, i64 16, !6, i64 24, !18, i64 32, !20, i64 48, !21, i64 56, !22, i64 64, !6, i64 88, !25, i64 96, !6, i64 104, !26, i64 112, !27, i64 120, !28, i64 128, !29, i64 136, !33, i64 160, !37, i64 184, !7, i64 192, !7, i64 196}
!15 = !{!"_ZTSN4juce13MouseListenerE"}
!16 = !{!"_ZTSN4juce6StringE", !17, i64 0}
!17 = !{!"_ZTSN4juce16CharPointer_UTF8E", !6, i64 0}
!18 = !{!"_ZTSN4juce9RectangleIiEE", !19, i64 0, !10, i64 8, !10, i64 12}
!19 = !{!"_ZTSN4juce5PointIiEE", !10, i64 0, !10, i64 4}
!20 = !{!"_ZTSN4juce13ScopedPointerINS_9Component10PositionerEEE", !6, i64 0}
!21 = !{!"_ZTSN4juce13ScopedPointerINS_15AffineTransformEEE", !6, i64 0}
!22 = !{!"_ZTSN4juce5ArrayIPNS_9ComponentENS_20DummyCriticalSectionELi0EEE", !23, i64 0, !10, i64 16}
!23 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_9ComponentENS_20DummyCriticalSectionEEE", !24, i64 0, !10, i64 8}
!24 = !{!"_ZTSN4juce9HeapBlockIPNS_9ComponentELb0EEE", !6, i64 0}
!25 = !{!"_ZTSN4juce11MouseCursorE", !6, i64 0}
!26 = !{!"_ZTSN4juce13ScopedPointerINS_20CachedComponentImageEEE", !6, i64 0}
!27 = !{!"_ZTSN4juce13ScopedPointerINS_9Component17MouseListenerListEEE", !6, i64 0}
!28 = !{!"_ZTSN4juce13ScopedPointerINS_5ArrayIPNS_11KeyListenerENS_20DummyCriticalSectionELi0EEEEE", !6, i64 0}
!29 = !{!"_ZTSN4juce12ListenerListINS_17ComponentListenerENS_5ArrayIPS1_NS_20DummyCriticalSectionELi0EEEEE", !30, i64 0}
!30 = !{!"_ZTSN4juce5ArrayIPNS_17ComponentListenerENS_20DummyCriticalSectionELi0EEE", !31, i64 0, !10, i64 16}
!31 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_17ComponentListenerENS_20DummyCriticalSectionEEE", !32, i64 0, !10, i64 8}
!32 = !{!"_ZTSN4juce9HeapBlockIPNS_17ComponentListenerELb0EEE", !6, i64 0}
!33 = !{!"_ZTSN4juce13NamedValueSetE", !34, i64 0}
!34 = !{!"_ZTSN4juce5ArrayINS_13NamedValueSet10NamedValueENS_20DummyCriticalSectionELi0EEE", !35, i64 0, !10, i64 16}
!35 = !{!"_ZTSN4juce19ArrayAllocationBaseINS_13NamedValueSet10NamedValueENS_20DummyCriticalSectionEEE", !36, i64 0, !10, i64 8}
!36 = !{!"_ZTSN4juce9HeapBlockINS_13NamedValueSet10NamedValueELb0EEE", !6, i64 0}
!37 = !{!"_ZTSN4juce13WeakReferenceINS_9ComponentENS_22ReferenceCountedObjectEE6MasterE", !38, i64 0}
!38 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_13WeakReferenceINS_9ComponentENS_22ReferenceCountedObjectEE13SharedPointerEEE", !6, i64 0}
!39 = !{!"_ZTSN4juce25MidiKeyboardStateListenerE"}
!40 = !{!"_ZTSN4juce17ChangeBroadcasterE", !41, i64 8, !44, i64 32}
!41 = !{!"_ZTSN4juce17ChangeBroadcaster25ChangeBroadcasterCallbackE", !42, i64 0, !6, i64 16}
!42 = !{!"_ZTSN4juce12AsyncUpdaterE", !43, i64 8}
!43 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_12AsyncUpdater19AsyncUpdaterMessageEEE", !6, i64 0}
!44 = !{!"_ZTSN4juce12ListenerListINS_14ChangeListenerENS_5ArrayIPS1_NS_20DummyCriticalSectionELi0EEEEE", !45, i64 0}
!45 = !{!"_ZTSN4juce5ArrayIPNS_14ChangeListenerENS_20DummyCriticalSectionELi0EEE", !46, i64 0, !10, i64 16}
!46 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_14ChangeListenerENS_20DummyCriticalSectionEEE", !47, i64 0, !10, i64 8}
!47 = !{!"_ZTSN4juce9HeapBlockIPNS_14ChangeListenerELb0EEE", !6, i64 0}
!48 = !{!"_ZTSN4juce5TimerE", !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24}
!49 = !{!"float", !7, i64 0}
!50 = !{!"_ZTSN4juce21MidiKeyboardComponent11OrientationE", !7, i64 0}
!51 = !{!"_ZTSN4juce5ArrayIiNS_20DummyCriticalSectionELi0EEE", !52, i64 0, !10, i64 16}
!52 = !{!"_ZTSN4juce19ArrayAllocationBaseIiNS_20DummyCriticalSectionEEE", !53, i64 0, !10, i64 8}
!53 = !{!"_ZTSN4juce9HeapBlockIiLb0EEE", !6, i64 0}
!54 = !{!"_ZTSN4juce10BigIntegerE", !55, i64 0, !7, i64 8, !56, i64 24, !10, i64 32, !57, i64 36}
!55 = !{!"_ZTSN4juce9HeapBlockIjLb0EEE", !6, i64 0}
!56 = !{!"long", !7, i64 0}
!57 = !{!"bool", !7, i64 0}
!58 = !{!"_ZTSN4juce13ScopedPointerINS_6ButtonEEE", !6, i64 0}
!59 = !{!"_ZTSN4juce5ArrayINS_8KeyPressENS_20DummyCriticalSectionELi0EEE", !60, i64 0, !10, i64 16}
!60 = !{!"_ZTSN4juce19ArrayAllocationBaseINS_8KeyPressENS_20DummyCriticalSectionEEE", !61, i64 0, !10, i64 8}
!61 = !{!"_ZTSN4juce9HeapBlockINS_8KeyPressELb0EEE", !6, i64 0}
!62 = !{!13, !10, i64 472}
!63 = !{!13, !6, i64 296}
!64 = !{!13, !10, i64 324}
!65 = !{!66, !66, i64 0}
!66 = !{!"vtable pointer", !8, i64 0}
!67 = distinct !{!67, !68}
!68 = !{!"llvm.loop.mustprogress"}
!69 = distinct !{!69, !68}
!70 = !{!49, !49, i64 0}
!71 = !{!13, !50, i64 316}
!72 = distinct !{!72, !68}
!73 = distinct !{!73, !68}


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

%"class.juce::Colour" = type { %"class.juce::PixelARGB" }
%"class.juce::PixelARGB" = type { %union.anon.153 }
%union.anon.153 = type { i32 }
%"class.juce::Rectangle" = type { %"class.juce::Point", i32, i32 }
%"class.juce::Point" = type { i32, i32 }
%"class.juce::ColourGradient" = type { %"class.juce::Point.160", %"class.juce::Point.160", i8, [7 x i8], %"class.juce::Array.175" }
%"class.juce::Point.160" = type { float, float }
%"class.juce::Array.175" = type { %"class.juce::ArrayAllocationBase.176", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.176" = type <{ %"class.juce::HeapBlock.177", i32, [4 x i8] }>
%"class.juce::HeapBlock.177" = type { ptr }

@_ZN4juce21MidiKeyboardComponent10whiteNotesE = external dso_local local_unnamed_addr constant [7 x i8], align 1
@_ZN4juce21MidiKeyboardComponent10blackNotesE = external dso_local local_unnamed_addr constant [5 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: nounwind
declare void @_ZN4juce6ColourC1ERKS0_(ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4)) unnamed_addr #3

declare void @_ZNK4juce8Graphics7fillAllENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef) local_unnamed_addr #4

declare void @_ZN4juce8Graphics9setColourENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef) local_unnamed_addr #4

declare void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1, ptr noundef nonnull align 8 dereferenceable(197), i32 noundef, i1 noundef zeroext) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce21MidiKeyboardComponent9getKeyPosEiRiS1_(ptr noundef nonnull align 8 dereferenceable(560), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind noalias writable sret(%"class.juce::Rectangle") align 4, ptr noundef nonnull align 8 dereferenceable(560), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4juce21MidiKeyboardComponent5paintERNS_8GraphicsE(ptr noundef nonnull align 8 dereferenceable(560) %0, ptr noundef nonnull align 8 dereferenceable(17) %1) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.juce::Colour", align 1
  %4 = alloca %"class.juce::Colour", align 1
  %5 = alloca %"class.juce::Colour", align 1
  %6 = alloca %"class.juce::Rectangle", align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.juce::Colour", align 1
  %10 = alloca %"class.juce::ColourGradient", align 8
  %11 = alloca %"class.juce::Colour", align 1
  %12 = alloca %"class.juce::Colour", align 1
  %13 = alloca %"class.juce::Colour", align 1
  %14 = alloca %"class.juce::Colour", align 1
  %15 = alloca %"class.juce::Rectangle", align 4
  call void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %3, ptr noundef nonnull align 8 dereferenceable(197) %0, i32 noundef 16797696, i1 noundef zeroext false)
  invoke void @_ZNK4juce8Graphics7fillAllENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull %3)
          to label %16 unwind label %27

16:                                               ; preds = %2
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %3) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  call void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %4, ptr noundef nonnull align 8 dereferenceable(197) %0, i32 noundef 16797698, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %5, ptr noundef nonnull align 8 dereferenceable(197) %0, i32 noundef 16797701, i1 noundef zeroext false)
          to label %.preheader85 unwind label %29

.preheader85:                                     ; preds = %16
  %17 = getelementptr inbounds i8, ptr %0, i64 468
  %18 = getelementptr inbounds i8, ptr %0, i64 472
  %19 = getelementptr inbounds i8, ptr %0, i64 296
  %20 = getelementptr inbounds i8, ptr %0, i64 324
  %21 = getelementptr inbounds i8, ptr %0, i64 336
  br label %.preheader84

.preheader84:                                     ; preds = %.preheader85, %31
  %.05887 = phi i32 [ 0, %.preheader85 ], [ %32, %31 ]
  br label %34

22:                                               ; preds = %31
  %23 = call noundef i32 @_ZNK4juce9Component8getWidthEv(ptr noundef nonnull align 8 dereferenceable(197) %0) #6
  %24 = call noundef i32 @_ZNK4juce9Component9getHeightEv(ptr noundef nonnull align 8 dereferenceable(197) %0) #6
  %25 = getelementptr inbounds i8, ptr %0, i64 316
  %26 = load i32, ptr %25, align 4, !tbaa !5
  switch i32 %26, label %65 [
    i32 1, label %61
    i32 2, label %66
  ]

27:                                               ; preds = %2
  %28 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %3) #6
  br label %234

29:                                               ; preds = %16
  %30 = landingpad { ptr, i32 }
          cleanup
  br label %233

31:                                               ; preds = %60
  %32 = add nuw nsw i32 %.05887, 12
  %33 = icmp ult i32 %.05887, 116
  br i1 %33, label %.preheader84, label %22, !llvm.loop !59

34:                                               ; preds = %.preheader84, %60
  %indvars.iv = phi i64 [ 0, %.preheader84 ], [ %indvars.iv.next, %60 ]
  %35 = getelementptr inbounds [7 x i8], ptr @_ZN4juce21MidiKeyboardComponent10whiteNotesE, i64 0, i64 %indvars.iv
  %36 = load i8, ptr %35, align 1, !tbaa !61
  %37 = zext i8 %36 to i32
  %38 = add nuw nsw i32 %.05887, %37
  %39 = load i32, ptr %17, align 4, !tbaa !62
  %.not74 = icmp slt i32 %38, %39
  %40 = load i32, ptr %18, align 8
  %.not75 = icmp sgt i32 %38, %40
  %or.cond = select i1 %.not74, i1 true, i1 %.not75
  br i1 %or.cond, label %60, label %41

41:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #6
  invoke void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind nonnull writable sret(%"class.juce::Rectangle") align 4 %6, ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %38)
          to label %42 unwind label %55

42:                                               ; preds = %41
  %43 = call noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %44 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %45 = call noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %46 = call noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %47 = load ptr, ptr %19, align 8, !tbaa !63
  %48 = load i32, ptr %20, align 4, !tbaa !64
  %49 = call noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344) %47, i32 noundef %48, i32 noundef %38) #6
  %50 = call noundef zeroext i1 @_ZNK4juce5ArrayIiNS_20DummyCriticalSectionELi0EE8containsEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %38)
  %51 = load ptr, ptr %0, align 8, !tbaa !65
  %52 = getelementptr inbounds i8, ptr %51, i64 384
  %53 = load ptr, ptr %52, align 8
  invoke void %53(ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %38, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %43, i32 noundef %44, i32 noundef %45, i32 noundef %46, i1 noundef zeroext %49, i1 noundef zeroext %50, ptr noundef nonnull align 1 dereferenceable(4) %4, ptr noundef nonnull align 1 dereferenceable(4) %5)
          to label %54 unwind label %57

54:                                               ; preds = %42
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %60

55:                                               ; preds = %41
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %59

57:                                               ; preds = %42
  %58 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  br label %59

59:                                               ; preds = %57, %55
  %.pn76 = phi { ptr, i32 } [ %58, %57 ], [ %56, %55 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  br label %232

60:                                               ; preds = %54, %34
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 7
  br i1 %exitcond.not, label %31, label %34, !llvm.loop !67

61:                                               ; preds = %22
  %62 = sitofp i32 %23 to float
  %63 = fadd float %62, -1.000000e+00
  %64 = fadd float %62, -5.000000e+00
  br label %66

65:                                               ; preds = %22
  br label %66

66:                                               ; preds = %22, %65, %61
  %.061 = phi float [ %63, %61 ], [ 0.000000e+00, %65 ], [ 0.000000e+00, %22 ]
  %.060 = phi float [ %64, %61 ], [ 0.000000e+00, %65 ], [ 5.000000e+00, %22 ]
  %.059 = phi float [ 0.000000e+00, %61 ], [ 5.000000e+00, %65 ], [ 0.000000e+00, %22 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  %67 = load i32, ptr %18, align 8, !tbaa !68
  invoke void @_ZNK4juce21MidiKeyboardComponent9getKeyPosEiRiS1_(ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %67, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %68 unwind label %78

68:                                               ; preds = %66
  %69 = load i32, ptr %8, align 4, !tbaa !69
  %70 = load i32, ptr %7, align 4, !tbaa !69
  %71 = add nsw i32 %70, %69
  store i32 %71, ptr %7, align 4, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %9, ptr noundef nonnull align 8 dereferenceable(197) %0, i32 noundef 16797704, i1 noundef zeroext false)
          to label %72 unwind label %80

72:                                               ; preds = %68
  %73 = call noundef zeroext i1 @_ZNK4juce6Colour13isTransparentEv(ptr noundef nonnull align 1 dereferenceable(4) %9) #6
  br i1 %73, label %99, label %74

74:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10) #6
  call void @_ZN4juce6ColourC1ERKS0_(ptr noundef nonnull align 1 dereferenceable(4) %11, ptr noundef nonnull align 1 dereferenceable(4) %9) #6
  call void @_ZNK4juce6Colour9withAlphaEf(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %12, ptr noundef nonnull align 1 dereferenceable(4) %9, float noundef 0.000000e+00) #6
  invoke void @_ZN4juce14ColourGradientC1ENS_6ColourEffS1_ffb(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull %11, float noundef %.061, float noundef 0.000000e+00, ptr noundef nonnull %12, float noundef %.060, float noundef %.059, i1 noundef zeroext false)
          to label %75 unwind label %82

75:                                               ; preds = %74
  invoke void @_ZN4juce8Graphics15setGradientFillERKNS_14ColourGradientE(ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull align 8 dereferenceable(48) %10)
          to label %76 unwind label %84

76:                                               ; preds = %75
  call void @_ZN4juce14ColourGradientD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %12) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %11) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #6
  %77 = load i32, ptr %25, align 4, !tbaa !5
  switch i32 %77, label %99 [
    i32 0, label %87
    i32 1, label %91
    i32 2, label %94
  ]

78:                                               ; preds = %66
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %231

80:                                               ; preds = %68
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %230

82:                                               ; preds = %74
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %86

84:                                               ; preds = %75
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4juce14ColourGradientD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #6
  br label %86

86:                                               ; preds = %84, %82
  %.pn = phi { ptr, i32 } [ %85, %84 ], [ %83, %82 ]
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %12) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %11) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #6
  br label %229

87:                                               ; preds = %76
  %88 = load i32, ptr %7, align 4, !tbaa !69
  br label %.invoke103

89:                                               ; preds = %.invoke103, %.invoke
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %229

91:                                               ; preds = %76
  %92 = add nsw i32 %23, -5
  %93 = load i32, ptr %7, align 4, !tbaa !69
  br label %.invoke103

94:                                               ; preds = %76
  %95 = load i32, ptr %7, align 4, !tbaa !69
  br label %.invoke103

.invoke103:                                       ; preds = %87, %91, %94
  %96 = phi i32 [ 0, %94 ], [ %92, %91 ], [ 0, %87 ]
  %97 = phi i32 [ 5, %94 ], [ 5, %91 ], [ %88, %87 ]
  %98 = phi i32 [ %95, %94 ], [ %93, %91 ], [ 5, %87 ]
  invoke void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %96, i32 noundef 0, i32 noundef %97, i32 noundef %98)
          to label %99 unwind label %89

99:                                               ; preds = %.invoke103, %76, %72
  %100 = call noundef zeroext i1 @_ZNK4juce6Colour13isTransparentEv(ptr noundef nonnull align 1 dereferenceable(4) %4) #6
  br i1 %100, label %118, label %101

101:                                              ; preds = %99
  call void @_ZN4juce6ColourC1ERKS0_(ptr noundef nonnull align 1 dereferenceable(4) %13, ptr noundef nonnull align 1 dereferenceable(4) %4) #6
  invoke void @_ZN4juce8Graphics9setColourENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull %13)
          to label %102 unwind label %104

102:                                              ; preds = %101
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %13) #6
  %103 = load i32, ptr %25, align 4, !tbaa !5
  switch i32 %103, label %118 [
    i32 0, label %106
    i32 1, label %109
    i32 2, label %111
  ]

104:                                              ; preds = %101
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %13) #6
  br label %229

106:                                              ; preds = %102
  %107 = add nsw i32 %24, -1
  %108 = load i32, ptr %7, align 4, !tbaa !69
  br label %.invoke

109:                                              ; preds = %102
  %110 = load i32, ptr %7, align 4, !tbaa !69
  br label %.invoke

111:                                              ; preds = %102
  %112 = add nsw i32 %23, -1
  %113 = load i32, ptr %7, align 4, !tbaa !69
  br label %.invoke

.invoke:                                          ; preds = %106, %109, %111
  %114 = phi i32 [ %112, %111 ], [ 0, %109 ], [ 0, %106 ]
  %115 = phi i32 [ 0, %111 ], [ 0, %109 ], [ %107, %106 ]
  %116 = phi i32 [ 1, %111 ], [ 1, %109 ], [ %108, %106 ]
  %117 = phi i32 [ %113, %111 ], [ %110, %109 ], [ 1, %106 ]
  invoke void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117)
          to label %118 unwind label %89

118:                                              ; preds = %.invoke, %102, %99
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %14, ptr noundef nonnull align 8 dereferenceable(197) %0, i32 noundef 16797697, i1 noundef zeroext false)
          to label %.preheader83 unwind label %132

.preheader83:                                     ; preds = %118
  %.pre = load i8, ptr @_ZN4juce21MidiKeyboardComponent10blackNotesE, align 1, !tbaa !61
  %119 = zext i8 %.pre to i32
  %120 = load i8, ptr getelementptr inbounds (i8, ptr @_ZN4juce21MidiKeyboardComponent10blackNotesE, i64 1), align 1
  %121 = zext i8 %120 to i32
  %122 = load i8, ptr getelementptr inbounds (i8, ptr @_ZN4juce21MidiKeyboardComponent10blackNotesE, i64 2), align 1
  %123 = zext i8 %122 to i32
  %124 = load i8, ptr getelementptr inbounds (i8, ptr @_ZN4juce21MidiKeyboardComponent10blackNotesE, i64 3), align 1
  %125 = zext i8 %124 to i32
  %126 = load i8, ptr getelementptr inbounds (i8, ptr @_ZN4juce21MidiKeyboardComponent10blackNotesE, i64 4), align 1
  %127 = zext i8 %126 to i32
  br label %.preheader

.preheader:                                       ; preds = %.preheader83, %225
  %.04789 = phi i32 [ 0, %.preheader83 ], [ %226, %225 ]
  %128 = add nuw nsw i32 %.04789, %119
  %129 = load i32, ptr %17, align 4, !tbaa !62
  %.not = icmp slt i32 %128, %129
  %130 = load i32, ptr %18, align 8
  %.not67 = icmp sgt i32 %128, %130
  %or.cond82 = select i1 %.not, i1 true, i1 %.not67
  br i1 %or.cond82, label %153, label %134

131:                                              ; preds = %225
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  ret void

132:                                              ; preds = %118
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %228

134:                                              ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  invoke void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind nonnull writable sret(%"class.juce::Rectangle") align 4 %15, ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %128)
          to label %135 unwind label %148

135:                                              ; preds = %134
  %136 = call noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %137 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %138 = call noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %139 = call noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %140 = load ptr, ptr %19, align 8, !tbaa !63
  %141 = load i32, ptr %20, align 4, !tbaa !64
  %142 = call noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344) %140, i32 noundef %141, i32 noundef %128) #6
  %143 = call noundef zeroext i1 @_ZNK4juce5ArrayIiNS_20DummyCriticalSectionELi0EE8containsEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %128)
  %144 = load ptr, ptr %0, align 8, !tbaa !65
  %145 = getelementptr inbounds i8, ptr %144, i64 392
  %146 = load ptr, ptr %145, align 8
  invoke void %146(ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %128, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %136, i32 noundef %137, i32 noundef %138, i32 noundef %139, i1 noundef zeroext %142, i1 noundef zeroext %143, ptr noundef nonnull align 1 dereferenceable(4) %14)
          to label %147 unwind label %150

147:                                              ; preds = %135
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  %.pre95 = load i32, ptr %17, align 4, !tbaa !62
  %.pre96 = load i32, ptr %18, align 8
  br label %153

148:                                              ; preds = %211, %193, %175, %157, %134
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %152

150:                                              ; preds = %212, %194, %176, %158, %135
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  br label %152

152:                                              ; preds = %150, %148
  %.pn68 = phi { ptr, i32 } [ %151, %150 ], [ %149, %148 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %14) #6
  br label %228

153:                                              ; preds = %147, %.preheader
  %154 = phi i32 [ %.pre96, %147 ], [ %130, %.preheader ]
  %155 = phi i32 [ %.pre95, %147 ], [ %129, %.preheader ]
  %156 = add nuw nsw i32 %.04789, %121
  %.not.1 = icmp slt i32 %156, %155
  %.not67.1 = icmp sgt i32 %156, %154
  %or.cond82.1 = select i1 %.not.1, i1 true, i1 %.not67.1
  br i1 %or.cond82.1, label %171, label %157

157:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  invoke void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind nonnull writable sret(%"class.juce::Rectangle") align 4 %15, ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %156)
          to label %158 unwind label %148

158:                                              ; preds = %157
  %159 = call noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %160 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %161 = call noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %162 = call noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %163 = load ptr, ptr %19, align 8, !tbaa !63
  %164 = load i32, ptr %20, align 4, !tbaa !64
  %165 = call noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344) %163, i32 noundef %164, i32 noundef %156) #6
  %166 = call noundef zeroext i1 @_ZNK4juce5ArrayIiNS_20DummyCriticalSectionELi0EE8containsEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %156)
  %167 = load ptr, ptr %0, align 8, !tbaa !65
  %168 = getelementptr inbounds i8, ptr %167, i64 392
  %169 = load ptr, ptr %168, align 8
  invoke void %169(ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %156, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %159, i32 noundef %160, i32 noundef %161, i32 noundef %162, i1 noundef zeroext %165, i1 noundef zeroext %166, ptr noundef nonnull align 1 dereferenceable(4) %14)
          to label %170 unwind label %150

170:                                              ; preds = %158
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  %.pre97 = load i32, ptr %17, align 4, !tbaa !62
  %.pre98 = load i32, ptr %18, align 8
  br label %171

171:                                              ; preds = %170, %153
  %172 = phi i32 [ %.pre98, %170 ], [ %154, %153 ]
  %173 = phi i32 [ %.pre97, %170 ], [ %155, %153 ]
  %174 = add nuw nsw i32 %.04789, %123
  %.not.2 = icmp slt i32 %174, %173
  %.not67.2 = icmp sgt i32 %174, %172
  %or.cond82.2 = select i1 %.not.2, i1 true, i1 %.not67.2
  br i1 %or.cond82.2, label %189, label %175

175:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  invoke void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind nonnull writable sret(%"class.juce::Rectangle") align 4 %15, ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %174)
          to label %176 unwind label %148

176:                                              ; preds = %175
  %177 = call noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %178 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %179 = call noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %180 = call noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %181 = load ptr, ptr %19, align 8, !tbaa !63
  %182 = load i32, ptr %20, align 4, !tbaa !64
  %183 = call noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344) %181, i32 noundef %182, i32 noundef %174) #6
  %184 = call noundef zeroext i1 @_ZNK4juce5ArrayIiNS_20DummyCriticalSectionELi0EE8containsEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %174)
  %185 = load ptr, ptr %0, align 8, !tbaa !65
  %186 = getelementptr inbounds i8, ptr %185, i64 392
  %187 = load ptr, ptr %186, align 8
  invoke void %187(ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %174, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %177, i32 noundef %178, i32 noundef %179, i32 noundef %180, i1 noundef zeroext %183, i1 noundef zeroext %184, ptr noundef nonnull align 1 dereferenceable(4) %14)
          to label %188 unwind label %150

188:                                              ; preds = %176
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  %.pre99 = load i32, ptr %17, align 4, !tbaa !62
  %.pre100 = load i32, ptr %18, align 8
  br label %189

189:                                              ; preds = %188, %171
  %190 = phi i32 [ %.pre100, %188 ], [ %172, %171 ]
  %191 = phi i32 [ %.pre99, %188 ], [ %173, %171 ]
  %192 = add nuw nsw i32 %.04789, %125
  %.not.3 = icmp slt i32 %192, %191
  %.not67.3 = icmp sgt i32 %192, %190
  %or.cond82.3 = select i1 %.not.3, i1 true, i1 %.not67.3
  br i1 %or.cond82.3, label %207, label %193

193:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  invoke void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind nonnull writable sret(%"class.juce::Rectangle") align 4 %15, ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %192)
          to label %194 unwind label %148

194:                                              ; preds = %193
  %195 = call noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %196 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %197 = call noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %198 = call noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %199 = load ptr, ptr %19, align 8, !tbaa !63
  %200 = load i32, ptr %20, align 4, !tbaa !64
  %201 = call noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344) %199, i32 noundef %200, i32 noundef %192) #6
  %202 = call noundef zeroext i1 @_ZNK4juce5ArrayIiNS_20DummyCriticalSectionELi0EE8containsEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %192)
  %203 = load ptr, ptr %0, align 8, !tbaa !65
  %204 = getelementptr inbounds i8, ptr %203, i64 392
  %205 = load ptr, ptr %204, align 8
  invoke void %205(ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %192, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %195, i32 noundef %196, i32 noundef %197, i32 noundef %198, i1 noundef zeroext %201, i1 noundef zeroext %202, ptr noundef nonnull align 1 dereferenceable(4) %14)
          to label %206 unwind label %150

206:                                              ; preds = %194
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  %.pre101 = load i32, ptr %17, align 4, !tbaa !62
  %.pre102 = load i32, ptr %18, align 8
  br label %207

207:                                              ; preds = %206, %189
  %208 = phi i32 [ %.pre102, %206 ], [ %190, %189 ]
  %209 = phi i32 [ %.pre101, %206 ], [ %191, %189 ]
  %210 = add nuw nsw i32 %.04789, %127
  %.not.4 = icmp slt i32 %210, %209
  %.not67.4 = icmp sgt i32 %210, %208
  %or.cond82.4 = select i1 %.not.4, i1 true, i1 %.not67.4
  br i1 %or.cond82.4, label %225, label %211

211:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  invoke void @_ZNK4juce21MidiKeyboardComponent18getRectangleForKeyEi(ptr dead_on_unwind nonnull writable sret(%"class.juce::Rectangle") align 4 %15, ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %210)
          to label %212 unwind label %148

212:                                              ; preds = %211
  %213 = call noundef i32 @_ZNK4juce9RectangleIiE4getXEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %214 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %215 = call noundef i32 @_ZNK4juce9RectangleIiE8getWidthEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %216 = call noundef i32 @_ZNK4juce9RectangleIiE9getHeightEv(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  %217 = load ptr, ptr %19, align 8, !tbaa !63
  %218 = load i32, ptr %20, align 4, !tbaa !64
  %219 = call noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344) %217, i32 noundef %218, i32 noundef %210) #6
  %220 = call noundef zeroext i1 @_ZNK4juce5ArrayIiNS_20DummyCriticalSectionELi0EE8containsEi(ptr noundef nonnull align 8 dereferenceable(20) %21, i32 noundef %210)
  %221 = load ptr, ptr %0, align 8, !tbaa !65
  %222 = getelementptr inbounds i8, ptr %221, i64 392
  %223 = load ptr, ptr %222, align 8
  invoke void %223(ptr noundef nonnull align 8 dereferenceable(560) %0, i32 noundef %210, ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %213, i32 noundef %214, i32 noundef %215, i32 noundef %216, i1 noundef zeroext %219, i1 noundef zeroext %220, ptr noundef nonnull align 1 dereferenceable(4) %14)
          to label %224 unwind label %150

224:                                              ; preds = %212
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  br label %225

225:                                              ; preds = %224, %207
  %226 = add nuw nsw i32 %.04789, 12
  %227 = icmp ult i32 %.04789, 116
  br i1 %227, label %.preheader, label %131, !llvm.loop !70

228:                                              ; preds = %152, %132
  %.pn68.pn = phi { ptr, i32 } [ %.pn68, %152 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  br label %229

229:                                              ; preds = %228, %104, %89, %86
  %.pn68.pn.pn = phi { ptr, i32 } [ %.pn68.pn, %228 ], [ %90, %89 ], [ %105, %104 ], [ %.pn, %86 ]
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %9) #6
  br label %230

230:                                              ; preds = %229, %80
  %.pn68.pn.pn.pn = phi { ptr, i32 } [ %.pn68.pn.pn, %229 ], [ %81, %80 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br label %231

231:                                              ; preds = %230, %78
  %.pn68.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn68.pn.pn.pn, %230 ], [ %79, %78 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  br label %232

232:                                              ; preds = %231, %59
  %.pn76.pn = phi { ptr, i32 } [ %.pn76, %59 ], [ %.pn68.pn.pn.pn.pn, %231 ]
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %5) #6
  br label %233

233:                                              ; preds = %232, %29
  %.pn76.pn.pn = phi { ptr, i32 } [ %.pn76.pn, %232 ], [ %30, %29 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  br label %234

234:                                              ; preds = %233, %27
  %.pn76.pn.pn.pn = phi { ptr, i32 } [ %.pn76.pn.pn, %233 ], [ %28, %27 ]
  resume { ptr, i32 } %.pn76.pn.pn.pn
}

; Function Attrs: nounwind
declare noundef zeroext i1 @_ZNK4juce17MidiKeyboardState19isNoteOnForChannelsEii(ptr noundef nonnull align 8 dereferenceable(344), i32 noundef, i32 noundef) local_unnamed_addr #3

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

; Function Attrs: nounwind
declare noundef zeroext i1 @_ZNK4juce6Colour13isTransparentEv(ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #3

declare void @_ZN4juce8Graphics15setGradientFillERKNS_14ColourGradientE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZNK4juce6Colour9withAlphaEf(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1, ptr noundef nonnull align 1 dereferenceable(4), float noundef) local_unnamed_addr #3

declare void @_ZN4juce14ColourGradientC1ENS_6ColourEffS1_ffb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef, float noundef, float noundef, ptr noundef, float noundef, float noundef, i1 noundef zeroext) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN4juce14ColourGradientD1Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #3

declare void @_ZNK4juce8Graphics8fillRectEiiii(ptr noundef nonnull align 8 dereferenceable(17), i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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, !47, i64 316}
!6 = !{!"_ZTSN4juce21MidiKeyboardComponentE", !7, i64 0, !36, i64 200, !37, i64 208, !45, i64 264, !11, i64 296, !46, i64 304, !16, i64 308, !46, i64 312, !47, i64 316, !16, i64 320, !16, i64 324, !46, i64 328, !48, i64 336, !48, i64 360, !51, i64 384, !51, i64 424, !54, i64 464, !16, i64 468, !16, i64 472, !46, i64 476, !54, i64 480, !54, i64 481, !54, i64 482, !55, i64 488, !55, i64 496, !56, i64 504, !48, i64 528, !16, i64 552, !16, i64 556}
!7 = !{!"_ZTSN4juce9ComponentE", !8, i64 0, !9, i64 8, !9, i64 16, !11, i64 24, !14, i64 32, !17, i64 48, !18, i64 56, !19, i64 64, !11, i64 88, !22, i64 96, !11, i64 104, !23, i64 112, !24, i64 120, !25, i64 128, !26, i64 136, !30, i64 160, !34, i64 184, !12, i64 192, !12, i64 196}
!8 = !{!"_ZTSN4juce13MouseListenerE"}
!9 = !{!"_ZTSN4juce6StringE", !10, i64 0}
!10 = !{!"_ZTSN4juce16CharPointer_UTF8E", !11, i64 0}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTSN4juce9RectangleIiEE", !15, i64 0, !16, i64 8, !16, i64 12}
!15 = !{!"_ZTSN4juce5PointIiEE", !16, i64 0, !16, i64 4}
!16 = !{!"int", !12, i64 0}
!17 = !{!"_ZTSN4juce13ScopedPointerINS_9Component10PositionerEEE", !11, i64 0}
!18 = !{!"_ZTSN4juce13ScopedPointerINS_15AffineTransformEEE", !11, i64 0}
!19 = !{!"_ZTSN4juce5ArrayIPNS_9ComponentENS_20DummyCriticalSectionELi0EEE", !20, i64 0, !16, i64 16}
!20 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_9ComponentENS_20DummyCriticalSectionEEE", !21, i64 0, !16, i64 8}
!21 = !{!"_ZTSN4juce9HeapBlockIPNS_9ComponentELb0EEE", !11, i64 0}
!22 = !{!"_ZTSN4juce11MouseCursorE", !11, i64 0}
!23 = !{!"_ZTSN4juce13ScopedPointerINS_20CachedComponentImageEEE", !11, i64 0}
!24 = !{!"_ZTSN4juce13ScopedPointerINS_9Component17MouseListenerListEEE", !11, i64 0}
!25 = !{!"_ZTSN4juce13ScopedPointerINS_5ArrayIPNS_11KeyListenerENS_20DummyCriticalSectionELi0EEEEE", !11, i64 0}
!26 = !{!"_ZTSN4juce12ListenerListINS_17ComponentListenerENS_5ArrayIPS1_NS_20DummyCriticalSectionELi0EEEEE", !27, i64 0}
!27 = !{!"_ZTSN4juce5ArrayIPNS_17ComponentListenerENS_20DummyCriticalSectionELi0EEE", !28, i64 0, !16, i64 16}
!28 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_17ComponentListenerENS_20DummyCriticalSectionEEE", !29, i64 0, !16, i64 8}
!29 = !{!"_ZTSN4juce9HeapBlockIPNS_17ComponentListenerELb0EEE", !11, i64 0}
!30 = !{!"_ZTSN4juce13NamedValueSetE", !31, i64 0}
!31 = !{!"_ZTSN4juce5ArrayINS_13NamedValueSet10NamedValueENS_20DummyCriticalSectionELi0EEE", !32, i64 0, !16, i64 16}
!32 = !{!"_ZTSN4juce19ArrayAllocationBaseINS_13NamedValueSet10NamedValueENS_20DummyCriticalSectionEEE", !33, i64 0, !16, i64 8}
!33 = !{!"_ZTSN4juce9HeapBlockINS_13NamedValueSet10NamedValueELb0EEE", !11, i64 0}
!34 = !{!"_ZTSN4juce13WeakReferenceINS_9ComponentENS_22ReferenceCountedObjectEE6MasterE", !35, i64 0}
!35 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_13WeakReferenceINS_9ComponentENS_22ReferenceCountedObjectEE13SharedPointerEEE", !11, i64 0}
!36 = !{!"_ZTSN4juce25MidiKeyboardStateListenerE"}
!37 = !{!"_ZTSN4juce17ChangeBroadcasterE", !38, i64 8, !41, i64 32}
!38 = !{!"_ZTSN4juce17ChangeBroadcaster25ChangeBroadcasterCallbackE", !39, i64 0, !11, i64 16}
!39 = !{!"_ZTSN4juce12AsyncUpdaterE", !40, i64 8}
!40 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_12AsyncUpdater19AsyncUpdaterMessageEEE", !11, i64 0}
!41 = !{!"_ZTSN4juce12ListenerListINS_14ChangeListenerENS_5ArrayIPS1_NS_20DummyCriticalSectionELi0EEEEE", !42, i64 0}
!42 = !{!"_ZTSN4juce5ArrayIPNS_14ChangeListenerENS_20DummyCriticalSectionELi0EEE", !43, i64 0, !16, i64 16}
!43 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_14ChangeListenerENS_20DummyCriticalSectionEEE", !44, i64 0, !16, i64 8}
!44 = !{!"_ZTSN4juce9HeapBlockIPNS_14ChangeListenerELb0EEE", !11, i64 0}
!45 = !{!"_ZTSN4juce5TimerE", !16, i64 8, !16, i64 12, !11, i64 16, !11, i64 24}
!46 = !{!"float", !12, i64 0}
!47 = !{!"_ZTSN4juce21MidiKeyboardComponent11OrientationE", !12, i64 0}
!48 = !{!"_ZTSN4juce5ArrayIiNS_20DummyCriticalSectionELi0EEE", !49, i64 0, !16, i64 16}
!49 = !{!"_ZTSN4juce19ArrayAllocationBaseIiNS_20DummyCriticalSectionEEE", !50, i64 0, !16, i64 8}
!50 = !{!"_ZTSN4juce9HeapBlockIiLb0EEE", !11, i64 0}
!51 = !{!"_ZTSN4juce10BigIntegerE", !52, i64 0, !12, i64 8, !53, i64 24, !16, i64 32, !54, i64 36}
!52 = !{!"_ZTSN4juce9HeapBlockIjLb0EEE", !11, i64 0}
!53 = !{!"long", !12, i64 0}
!54 = !{!"bool", !12, i64 0}
!55 = !{!"_ZTSN4juce13ScopedPointerINS_6ButtonEEE", !11, i64 0}
!56 = !{!"_ZTSN4juce5ArrayINS_8KeyPressENS_20DummyCriticalSectionELi0EEE", !57, i64 0, !16, i64 16}
!57 = !{!"_ZTSN4juce19ArrayAllocationBaseINS_8KeyPressENS_20DummyCriticalSectionEEE", !58, i64 0, !16, i64 8}
!58 = !{!"_ZTSN4juce9HeapBlockINS_8KeyPressELb0EEE", !11, i64 0}
!59 = distinct !{!59, !60}
!60 = !{!"llvm.loop.mustprogress"}
!61 = !{!12, !12, i64 0}
!62 = !{!6, !16, i64 468}
!63 = !{!6, !11, i64 296}
!64 = !{!6, !16, i64 324}
!65 = !{!66, !66, i64 0}
!66 = !{!"vtable pointer", !13, i64 0}
!67 = distinct !{!67, !60}
!68 = !{!6, !16, i64 472}
!69 = !{!16, !16, i64 0}
!70 = distinct !{!70, !60}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,LoopSimplifyPass,ReassociatePass,SROAPass,SimplifyCFGPass