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

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

%"class.juce::Rectangle" = type { %"class.juce::Point", i32, i32 }
%"class.juce::Point" = type { i32, i32 }
%"class.juce::Colour" = type { %"class.juce::PixelARGB" }
%"class.juce::PixelARGB" = type { %union.anon.77 }
%union.anon.77 = type { i32 }
%"class.juce::TextEditor::Iterator" = type { i32, float, float, float, float, float, ptr, ptr, ptr, i32, i32, float, i32, %"struct.juce::TextAtom" }
%"struct.juce::TextAtom" = type { %"class.juce::String", float, i32 }
%"class.juce::String" = type { %"class.juce::CharPointer_UTF8" }
%"class.juce::CharPointer_UTF8" = type { ptr }
%"class.juce::RectangleList.506" = type { %"class.juce::Array.507" }
%"class.juce::Array.507" = type { %"class.juce::ArrayAllocationBase.508", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.508" = type <{ %"class.juce::HeapBlock.509", i32, [4 x i8] }>
%"class.juce::HeapBlock.509" = type { ptr }
%"class.juce::Range" = type { i32, i32 }
%"class.juce::TextEditor" = type { %"class.juce::Component.base", %"class.juce::TextInputTarget", %"class.juce::SettableTooltipClient", %"class.juce::ScopedPointer.251", ptr, %"class.juce::BorderSize", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, %"class.juce::UndoManager", %"class.juce::ScopedPointer.257", %"class.juce::Range", i32, i32, i32, %"class.juce::Font", i32, i32, %"class.juce::OwnedArray.258", %"class.juce::String", %"class.juce::Colour", i32, %"class.juce::OptionalScopedPointer", %"class.juce::Value", i32, i32, %"class.juce::ListenerList.264", %"class.juce::Array.270" }
%"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::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::TextInputTarget" = type { ptr }
%"class.juce::SettableTooltipClient" = type { %"class.juce::TooltipClient", %"class.juce::String" }
%"class.juce::TooltipClient" = type { ptr }
%"class.juce::ScopedPointer.251" = type { ptr }
%"class.juce::BorderSize" = type { i32, i32, i32, i32 }
%"class.juce::UndoManager" = type <{ %"class.juce::ChangeBroadcaster", %"class.juce::OwnedArray.252", %"class.juce::OwnedArray.252", %"class.juce::String", i32, i32, i32, i32, i8, i8, [6 x i8] }>
%"class.juce::ChangeBroadcaster" = type { ptr, %"class.juce::ChangeBroadcaster::ChangeBroadcasterCallback", %"class.juce::ListenerList.39" }
%"class.juce::ChangeBroadcaster::ChangeBroadcasterCallback" = type { %"class.juce::AsyncUpdater", ptr }
%"class.juce::AsyncUpdater" = type { ptr, %"class.juce::ReferenceCountedObjectPtr.15" }
%"class.juce::ReferenceCountedObjectPtr.15" = type { ptr }
%"class.juce::ListenerList.39" = type { %"class.juce::Array.40" }
%"class.juce::Array.40" = type { %"class.juce::ArrayAllocationBase.41", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.41" = type <{ %"class.juce::HeapBlock.42", i32, [4 x i8] }>
%"class.juce::HeapBlock.42" = type { ptr }
%"class.juce::OwnedArray.252" = type { %"class.juce::ArrayAllocationBase.253", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.253" = type <{ %"class.juce::HeapBlock.254", i32, [4 x i8] }>
%"class.juce::HeapBlock.254" = type { ptr }
%"class.juce::ScopedPointer.257" = type { ptr }
%"class.juce::Font" = type { %"class.juce::ReferenceCountedObjectPtr.158" }
%"class.juce::ReferenceCountedObjectPtr.158" = type { ptr }
%"class.juce::OwnedArray.258" = type { %"class.juce::ArrayAllocationBase.259", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.259" = type <{ %"class.juce::HeapBlock.260", i32, [4 x i8] }>
%"class.juce::HeapBlock.260" = type { ptr }
%"class.juce::OptionalScopedPointer" = type <{ %"class.juce::ScopedPointer.263", i8, [7 x i8] }>
%"class.juce::ScopedPointer.263" = type { ptr }
%"class.juce::Value" = type { %"class.juce::ReferenceCountedObjectPtr.116", %"class.juce::ListenerList.117" }
%"class.juce::ReferenceCountedObjectPtr.116" = type { ptr }
%"class.juce::ListenerList.117" = type { %"class.juce::Array.118" }
%"class.juce::Array.118" = type { %"class.juce::ArrayAllocationBase.119", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.119" = type <{ %"class.juce::HeapBlock.120", i32, [4 x i8] }>
%"class.juce::HeapBlock.120" = type { ptr }
%"class.juce::ListenerList.264" = type { %"class.juce::Array.265" }
%"class.juce::Array.265" = type { %"class.juce::ArrayAllocationBase.266", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.266" = type <{ %"class.juce::HeapBlock.267", i32, [4 x i8] }>
%"class.juce::HeapBlock.267" = type { ptr }
%"class.juce::Array.270" = type { %"class.juce::ArrayAllocationBase.271", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.271" = type <{ %"class.juce::HeapBlock.272", i32, [4 x i8] }>
%"class.juce::HeapBlock.272" = type { ptr }

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK4juce9Component16hasKeyboardFocusEb(ptr noundef nonnull align 8 dereferenceable(197), i1 noundef zeroext) #0 align 2

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

declare void @_ZNK4juce8Graphics13getClipBoundsEv(ptr dead_on_unwind writable sret(%"class.juce::Rectangle") align 4, ptr noundef nonnull align 8 dereferenceable(17)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind noalias writable sret(%"class.juce::Colour") align 1, ptr noundef nonnull align 8 dereferenceable(197), i32 noundef, i1 noundef zeroext) #4 align 2

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

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

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

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

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

; Function Attrs: nounwind
declare noundef nonnull align 1 dereferenceable(4) ptr @_ZN4juce6ColouraSERKS0_(ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) #5

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

declare void @_ZN4juce8Graphics9setOriginEii(ptr noundef nonnull align 8 dereferenceable(17), i32 noundef, i32 noundef) #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK4juce5RangeIiE7isEmptyEv(ptr noundef nonnull align 4 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK4juce10TextEditor16getWordWrapWidthEv(ptr noundef nonnull align 8 dereferenceable(600)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4juce10TextEditor8IteratorC2ERKNS_10OwnedArrayINS0_18UniformTextSectionENS_20DummyCriticalSectionEEEfw(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(20), float noundef, i32 noundef signext) unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4juce10TextEditor8Iterator4nextEv(ptr noundef nonnull align 8 dereferenceable(80)) #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4juce10TextEditor11drawContentERNS_8GraphicsE(ptr noundef nonnull align 8 dereferenceable(600) %0, ptr noundef nonnull align 8 dereferenceable(17) %1) #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca float, align 4
  %6 = alloca %"class.juce::Rectangle", align 4
  %7 = alloca %"class.juce::Colour", align 1
  %8 = alloca %"class.juce::TextEditor::Iterator", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.juce::TextEditor::Iterator", align 8
  %12 = alloca %"class.juce::RectangleList.506", align 8
  %13 = alloca %"class.juce::Range", align 4
  %14 = alloca %"class.juce::Range", align 4
  %15 = alloca %"class.juce::Colour", align 1
  %16 = alloca %"class.juce::Colour", align 1
  %17 = alloca %"class.juce::Colour", align 1
  %18 = alloca ptr, align 8
  %19 = alloca %"class.juce::Range", align 4
  %20 = alloca %"class.juce::Range", align 4
  %21 = alloca %"class.juce::Colour", align 1
  %22 = alloca i32, align 4
  %23 = alloca %"class.juce::Range", align 4
  %24 = alloca %"class.juce::TextEditor::Iterator", align 8
  %25 = alloca %"class.juce::Range", align 4
  %26 = alloca %"class.juce::Range", align 4
  %27 = alloca %"class.juce::Colour", align 1
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %28 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  %29 = call noundef float @_ZNK4juce10TextEditor16getWordWrapWidthEv(ptr noundef nonnull align 8 dereferenceable(600) %28)
  store float %29, ptr %5, align 4, !tbaa !9
  %30 = load float, ptr %5, align 4, !tbaa !9
  %31 = fcmp ogt float %30, 0.000000e+00
  br i1 %31, label %32, label %244

32:                                               ; preds = %2
  %33 = load ptr, ptr %4, align 8, !tbaa !5
  %34 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 25
  %35 = load i32, ptr %34, align 8, !tbaa !11
  %36 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 26
  %37 = load i32, ptr %36, align 4, !tbaa !84
  call void @_ZN4juce8Graphics9setOriginEii(ptr noundef nonnull align 8 dereferenceable(17) %33, i32 noundef %35, i32 noundef %37)
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #6
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNK4juce8Graphics13getClipBoundsEv(ptr dead_on_unwind writable sret(%"class.juce::Rectangle") align 4 %6, ptr noundef nonnull align 8 dereferenceable(17) %38)
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  call void @_ZN4juce6ColourC1Ev(ptr noundef nonnull align 1 dereferenceable(4) %7) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %8) #6
  %39 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 31
  %40 = load float, ptr %5, align 4, !tbaa !9
  %41 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 34
  %42 = load i32, ptr %41, align 4, !tbaa !85
  invoke void @_ZN4juce10TextEditor8IteratorC2ERKNS_10OwnedArrayINS0_18UniformTextSectionENS_20DummyCriticalSectionEEEfw(ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef nonnull align 8 dereferenceable(20) %39, float noundef %40, i32 noundef signext %42)
          to label %43 unwind label %83

43:                                               ; preds = %32
  %44 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 24
  %45 = call noundef zeroext i1 @_ZNK4juce5RangeIiE7isEmptyEv(ptr noundef nonnull align 4 dereferenceable(8) %44) #6
  br i1 %45, label %122, label %46

46:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 80, ptr %11) #6
  invoke void @_ZN4juce10TextEditor8IteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %11, ptr noundef nonnull align 8 dereferenceable(80) %8)
          to label %47 unwind label %87

47:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #6
  call void @_ZN4juce13RectangleListIfEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  br label %48

48:                                               ; preds = %95, %47
  %49 = invoke noundef zeroext i1 @_ZN4juce10TextEditor8Iterator4nextEv(ptr noundef nonnull align 8 dereferenceable(80) %11)
          to label %50 unwind label %91

50:                                               ; preds = %48
  br i1 %49, label %51, label %57

51:                                               ; preds = %50
  %52 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %11, i32 0, i32 1
  %53 = load float, ptr %52, align 4, !tbaa !86
  %54 = call noundef i32 @_ZNK4juce9RectangleIiE9getBottomEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %55 = sitofp i32 %54 to float
  %56 = fcmp olt float %53, %55
  br label %57

57:                                               ; preds = %51, %50
  %58 = phi i1 [ false, %50 ], [ %56, %51 ]
  br i1 %58, label %59, label %96

59:                                               ; preds = %57
  %60 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %11, i32 0, i32 1
  %61 = load float, ptr %60, align 4, !tbaa !86
  %62 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %11, i32 0, i32 2
  %63 = load float, ptr %62, align 8, !tbaa !89
  %64 = fadd float %61, %63
  %65 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %66 = sitofp i32 %65 to float
  %67 = fcmp oge float %64, %66
  br i1 %67, label %68, label %95

68:                                               ; preds = %59
  %69 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 24
  %70 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %11, i32 0, i32 0
  %71 = load i32, ptr %70, align 8, !tbaa !90
  %72 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %11, i32 0, i32 0
  %73 = load i32, ptr %72, align 8, !tbaa !90
  %74 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %11, i32 0, i32 6
  %75 = load ptr, ptr %74, align 8, !tbaa !91
  %76 = getelementptr inbounds %"struct.juce::TextAtom", ptr %75, i32 0, i32 2
  %77 = load i32, ptr %76, align 4, !tbaa !92
  %78 = add nsw i32 %73, %77
  call void @_ZN4juce5RangeIiEC2Eii(ptr noundef nonnull align 4 dereferenceable(8) %13, i32 noundef %71, i32 noundef %78) #6
  %79 = call noundef zeroext i1 @_ZNK4juce5RangeIiE10intersectsES1_(ptr noundef nonnull align 4 dereferenceable(8) %69, ptr noundef %13) #6
  br i1 %79, label %80, label %95

80:                                               ; preds = %68
  %81 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 24
  call void @_ZN4juce5RangeIiEC2ERKS1_(ptr noundef nonnull align 4 dereferenceable(8) %14, ptr noundef nonnull align 4 dereferenceable(8) %81) #6
  invoke void @_ZNK4juce10TextEditor8Iterator12addSelectionERNS_13RectangleListIfEENS_5RangeIiEE(ptr noundef nonnull align 8 dereferenceable(80) %11, ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef %14)
          to label %82 unwind label %91

82:                                               ; preds = %80
  br label %95

83:                                               ; preds = %32
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %9, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %10, align 4
  br label %243

87:                                               ; preds = %46
  %88 = landingpad { ptr, i32 }
          cleanup
  %89 = extractvalue { ptr, i32 } %88, 0
  store ptr %89, ptr %9, align 8
  %90 = extractvalue { ptr, i32 } %88, 1
  store i32 %90, ptr %10, align 4
  br label %121

91:                                               ; preds = %102, %80, %48
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %9, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %10, align 4
  br label %120

95:                                               ; preds = %82, %68, %59
  br label %48, !llvm.loop !93

96:                                               ; preds = %57
  %97 = load ptr, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %16, ptr noundef nonnull align 8 dereferenceable(197) %28, i32 noundef 16777730, i1 noundef zeroext false)
          to label %98 unwind label %107

98:                                               ; preds = %96
  %99 = call noundef zeroext i1 @_ZNK4juce9Component16hasKeyboardFocusEb(ptr noundef nonnull align 8 dereferenceable(197) %28, i1 noundef zeroext true)
  %100 = zext i1 %99 to i64
  %101 = select i1 %99, float 1.000000e+00, float 5.000000e-01
  call void @_ZNK4juce6Colour19withMultipliedAlphaEf(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %15, ptr noundef nonnull align 1 dereferenceable(4) %16, float noundef %101) #6
  invoke void @_ZN4juce8Graphics9setColourENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17) %97, ptr noundef %15)
          to label %102 unwind label %111

102:                                              ; preds = %98
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %15) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  %103 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNK4juce8Graphics12fillRectListERKNS_13RectangleListIfEE(ptr noundef nonnull align 8 dereferenceable(17) %103, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %104 unwind label %91

104:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %17, ptr noundef nonnull align 8 dereferenceable(197) %28, i32 noundef 16777731, i1 noundef zeroext false)
          to label %105 unwind label %116

105:                                              ; preds = %104
  %106 = call noundef nonnull align 1 dereferenceable(4) ptr @_ZN4juce6ColouraSERKS0_(ptr noundef nonnull align 1 dereferenceable(4) %7, ptr noundef nonnull align 1 dereferenceable(4) %17) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @_ZN4juce13RectangleListIfED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #6
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %11) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %11) #6
  br label %122

107:                                              ; preds = %96
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %9, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %10, align 4
  br label %115

111:                                              ; preds = %98
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %9, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %10, align 4
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %15) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %16) #6
  br label %115

115:                                              ; preds = %111, %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %120

116:                                              ; preds = %104
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %9, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  br label %120

120:                                              ; preds = %116, %115, %91
  call void @_ZN4juce13RectangleListIfED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #6
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %11) #6
  br label %121

121:                                              ; preds = %120, %87
  call void @llvm.lifetime.end.p0(i64 80, ptr %11) #6
  br label %242

122:                                              ; preds = %105, %43
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  store ptr null, ptr %18, align 8, !tbaa !5
  br label %123

123:                                              ; preds = %171, %122
  %124 = invoke noundef zeroext i1 @_ZN4juce10TextEditor8Iterator4nextEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
          to label %125 unwind label %159

125:                                              ; preds = %123
  br i1 %124, label %126, label %132

126:                                              ; preds = %125
  %127 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %8, i32 0, i32 1
  %128 = load float, ptr %127, align 4, !tbaa !86
  %129 = call noundef i32 @_ZNK4juce9RectangleIiE9getBottomEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %130 = sitofp i32 %129 to float
  %131 = fcmp olt float %128, %130
  br label %132

132:                                              ; preds = %126, %125
  %133 = phi i1 [ false, %125 ], [ %131, %126 ]
  br i1 %133, label %134, label %172

134:                                              ; preds = %132
  %135 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %8, i32 0, i32 1
  %136 = load float, ptr %135, align 4, !tbaa !86
  %137 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %8, i32 0, i32 2
  %138 = load float, ptr %137, align 8, !tbaa !89
  %139 = fadd float %136, %138
  %140 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %141 = sitofp i32 %140 to float
  %142 = fcmp oge float %139, %141
  br i1 %142, label %143, label %171

143:                                              ; preds = %134
  %144 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 24
  %145 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %8, i32 0, i32 0
  %146 = load i32, ptr %145, align 8, !tbaa !90
  %147 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %8, i32 0, i32 0
  %148 = load i32, ptr %147, align 8, !tbaa !90
  %149 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %8, i32 0, i32 6
  %150 = load ptr, ptr %149, align 8, !tbaa !91
  %151 = getelementptr inbounds %"struct.juce::TextAtom", ptr %150, i32 0, i32 2
  %152 = load i32, ptr %151, align 4, !tbaa !92
  %153 = add nsw i32 %148, %152
  call void @_ZN4juce5RangeIiEC2Eii(ptr noundef nonnull align 4 dereferenceable(8) %19, i32 noundef %146, i32 noundef %153) #6
  %154 = call noundef zeroext i1 @_ZNK4juce5RangeIiE10intersectsES1_(ptr noundef nonnull align 4 dereferenceable(8) %144, ptr noundef %19) #6
  br i1 %154, label %155, label %167

155:                                              ; preds = %143
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 24
  call void @_ZN4juce5RangeIiEC2ERKS1_(ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %157) #6
  call void @_ZN4juce6ColourC1ERKS0_(ptr noundef nonnull align 1 dereferenceable(4) %21, ptr noundef nonnull align 1 dereferenceable(4) %7) #6
  invoke void @_ZNK4juce10TextEditor8Iterator16drawSelectedTextERNS_8GraphicsENS_5RangeIiEENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef nonnull align 8 dereferenceable(17) %156, ptr noundef %20, ptr noundef %21)
          to label %158 unwind label %163

158:                                              ; preds = %155
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %21) #6
  store ptr null, ptr %18, align 8, !tbaa !5
  br label %170

159:                                              ; preds = %167, %123
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %9, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %10, align 4
  br label %241

163:                                              ; preds = %155
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %9, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %10, align 4
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %21) #6
  br label %241

167:                                              ; preds = %143
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNK4juce10TextEditor8Iterator4drawERNS_8GraphicsERPKNS0_18UniformTextSectionE(ptr noundef nonnull align 8 dereferenceable(80) %8, ptr noundef nonnull align 8 dereferenceable(17) %168, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %169 unwind label %159

169:                                              ; preds = %167
  br label %170

170:                                              ; preds = %169, %158
  br label %171

171:                                              ; preds = %170, %134
  br label %123, !llvm.loop !95

172:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %173 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 40
  %174 = call noundef i32 @_ZNK4juce5ArrayINS_5RangeIiEENS_20DummyCriticalSectionELi0EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %173) #6
  store i32 %174, ptr %22, align 4, !tbaa !96
  br label %175

175:                                              ; preds = %237, %172
  %176 = load i32, ptr %22, align 4, !tbaa !96
  %177 = add nsw i32 %176, -1
  store i32 %177, ptr %22, align 4, !tbaa !96
  %178 = icmp sge i32 %177, 0
  br i1 %178, label %180, label %179

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

180:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  %181 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 40
  %182 = load i32, ptr %22, align 4, !tbaa !96
  %183 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK4juce5ArrayINS_5RangeIiEENS_20DummyCriticalSectionELi0EE12getReferenceEi(ptr noundef nonnull align 8 dereferenceable(20) %181, i32 noundef %182) #6
  call void @_ZN4juce5RangeIiEC2ERKS1_(ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef nonnull align 4 dereferenceable(8) %183) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %24) #6
  %184 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 31
  %185 = load float, ptr %5, align 4, !tbaa !9
  %186 = getelementptr inbounds %"class.juce::TextEditor", ptr %28, i32 0, i32 34
  %187 = load i32, ptr %186, align 4, !tbaa !85
  invoke void @_ZN4juce10TextEditor8IteratorC2ERKNS_10OwnedArrayINS0_18UniformTextSectionENS_20DummyCriticalSectionEEEfw(ptr noundef nonnull align 8 dereferenceable(80) %24, ptr noundef nonnull align 8 dereferenceable(20) %184, float noundef %185, i32 noundef signext %187)
          to label %188 unwind label %224

188:                                              ; preds = %180
  br label %189

189:                                              ; preds = %236, %188
  %190 = invoke noundef zeroext i1 @_ZN4juce10TextEditor8Iterator4nextEv(ptr noundef nonnull align 8 dereferenceable(80) %24)
          to label %191 unwind label %228

191:                                              ; preds = %189
  br i1 %190, label %192, label %198

192:                                              ; preds = %191
  %193 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %24, i32 0, i32 1
  %194 = load float, ptr %193, align 4, !tbaa !86
  %195 = call noundef i32 @_ZNK4juce9RectangleIiE9getBottomEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %196 = sitofp i32 %195 to float
  %197 = fcmp olt float %194, %196
  br label %198

198:                                              ; preds = %192, %191
  %199 = phi i1 [ false, %191 ], [ %197, %192 ]
  br i1 %199, label %200, label %237

200:                                              ; preds = %198
  %201 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %24, i32 0, i32 1
  %202 = load float, ptr %201, align 4, !tbaa !86
  %203 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %24, i32 0, i32 2
  %204 = load float, ptr %203, align 8, !tbaa !89
  %205 = fadd float %202, %204
  %206 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  %207 = sitofp i32 %206 to float
  %208 = fcmp oge float %205, %207
  br i1 %208, label %209, label %236

209:                                              ; preds = %200
  %210 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %24, i32 0, i32 0
  %211 = load i32, ptr %210, align 8, !tbaa !90
  %212 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %24, i32 0, i32 0
  %213 = load i32, ptr %212, align 8, !tbaa !90
  %214 = getelementptr inbounds %"class.juce::TextEditor::Iterator", ptr %24, i32 0, i32 6
  %215 = load ptr, ptr %214, align 8, !tbaa !91
  %216 = getelementptr inbounds %"struct.juce::TextAtom", ptr %215, i32 0, i32 2
  %217 = load i32, ptr %216, align 4, !tbaa !92
  %218 = add nsw i32 %213, %217
  call void @_ZN4juce5RangeIiEC2Eii(ptr noundef nonnull align 4 dereferenceable(8) %25, i32 noundef %211, i32 noundef %218) #6
  %219 = call noundef zeroext i1 @_ZNK4juce5RangeIiE10intersectsES1_(ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef %25) #6
  br i1 %219, label %220, label %236

220:                                              ; preds = %209
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN4juce5RangeIiEC2ERKS1_(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %23) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind writable sret(%"class.juce::Colour") align 1 %27, ptr noundef nonnull align 8 dereferenceable(197) %28, i32 noundef 16777729, i1 noundef zeroext false)
          to label %222 unwind label %228

222:                                              ; preds = %220
  invoke void @_ZNK4juce10TextEditor8Iterator13drawUnderlineERNS_8GraphicsENS_5RangeIiEENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(80) %24, ptr noundef nonnull align 8 dereferenceable(17) %221, ptr noundef %26, ptr noundef %27)
          to label %223 unwind label %232

223:                                              ; preds = %222
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %27) #6
  br label %236

224:                                              ; preds = %180
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %9, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %10, align 4
  br label %239

228:                                              ; preds = %220, %189
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %9, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %10, align 4
  br label %238

232:                                              ; preds = %222
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %9, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %10, align 4
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %27) #6
  br label %238

236:                                              ; preds = %223, %209, %200
  br label %189, !llvm.loop !97

237:                                              ; preds = %198
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %24) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %175, !llvm.loop !98

238:                                              ; preds = %232, %228
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %24) #6
  br label %239

239:                                              ; preds = %238, %224
  call void @llvm.lifetime.end.p0(i64 80, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %241

240:                                              ; preds = %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %8) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %8) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #6
  br label %244

241:                                              ; preds = %239, %163, %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  br label %242

242:                                              ; preds = %241, %121
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %8) #6
  br label %243

243:                                              ; preds = %242, %83
  call void @llvm.lifetime.end.p0(i64 80, ptr %8) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %6) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  br label %245

244:                                              ; preds = %240, %2
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  ret void

245:                                              ; preds = %243
  %246 = load ptr, ptr %9, align 8
  %247 = load i32, ptr %10, align 4
  %248 = insertvalue { ptr, i32 } poison, ptr %246, 0
  %249 = insertvalue { ptr, i32 } %248, i32 %247, 1
  resume { ptr, i32 } %249
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4juce10TextEditor8IteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4juce13RectangleListIfEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK4juce5RangeIiE10intersectsES1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce10TextEditor8Iterator12addSelectionERNS_13RectangleListIfEENS_5RangeIiEE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #4 align 2

declare void @_ZNK4juce8Graphics12fillRectListERKNS_13RectangleListIfEE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(24)) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce10TextEditor8Iterator16drawSelectedTextERNS_8GraphicsENS_5RangeIiEENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(17), ptr noundef, ptr noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce10TextEditor8Iterator4drawERNS_8GraphicsERPKNS0_18UniformTextSectionE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce10TextEditor8Iterator13drawUnderlineERNS_8GraphicsENS_5RangeIiEENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(17), ptr noundef, ptr noundef) #4 align 2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "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 = !{!"float", !7, i64 0}
!11 = !{!12, !19, i64 424}
!12 = !{!"_ZTSN4juce10TextEditorE", !13, i64 0, !39, i64 200, !40, i64 208, !42, i64 224, !6, i64 232, !43, i64 240, !44, i64 256, !44, i64 257, !44, i64 258, !44, i64 259, !44, i64 260, !44, i64 261, !44, i64 262, !44, i64 263, !44, i64 264, !44, i64 265, !44, i64 266, !44, i64 267, !44, i64 268, !44, i64 269, !44, i64 270, !45, i64 272, !57, i64 408, !58, i64 416, !19, i64 424, !19, i64 428, !19, i64 432, !59, i64 440, !19, i64 448, !19, i64 452, !61, i64 456, !15, i64 480, !64, i64 488, !66, i64 492, !67, i64 496, !69, i64 512, !75, i64 544, !76, i64 548, !77, i64 552, !81, i64 576}
!13 = !{!"_ZTSN4juce9ComponentE", !14, i64 0, !15, i64 8, !15, i64 16, !6, i64 24, !17, 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}
!14 = !{!"_ZTSN4juce13MouseListenerE"}
!15 = !{!"_ZTSN4juce6StringE", !16, i64 0}
!16 = !{!"_ZTSN4juce16CharPointer_UTF8E", !6, i64 0}
!17 = !{!"_ZTSN4juce9RectangleIiEE", !18, i64 0, !19, i64 8, !19, i64 12}
!18 = !{!"_ZTSN4juce5PointIiEE", !19, i64 0, !19, i64 4}
!19 = !{!"int", !7, i64 0}
!20 = !{!"_ZTSN4juce13ScopedPointerINS_9Component10PositionerEEE", !6, i64 0}
!21 = !{!"_ZTSN4juce13ScopedPointerINS_15AffineTransformEEE", !6, i64 0}
!22 = !{!"_ZTSN4juce5ArrayIPNS_9ComponentENS_20DummyCriticalSectionELi0EEE", !23, i64 0, !19, i64 16}
!23 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_9ComponentENS_20DummyCriticalSectionEEE", !24, i64 0, !19, 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, !19, i64 16}
!31 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_17ComponentListenerENS_20DummyCriticalSectionEEE", !32, i64 0, !19, i64 8}
!32 = !{!"_ZTSN4juce9HeapBlockIPNS_17ComponentListenerELb0EEE", !6, i64 0}
!33 = !{!"_ZTSN4juce13NamedValueSetE", !34, i64 0}
!34 = !{!"_ZTSN4juce5ArrayINS_13NamedValueSet10NamedValueENS_20DummyCriticalSectionELi0EEE", !35, i64 0, !19, i64 16}
!35 = !{!"_ZTSN4juce19ArrayAllocationBaseINS_13NamedValueSet10NamedValueENS_20DummyCriticalSectionEEE", !36, i64 0, !19, i64 8}
!36 = !{!"_ZTSN4juce9HeapBlockINS_13NamedValueSet10NamedValueELb0EEE", !6, i64 0}
!37 = !{!"_ZTSN4juce13WeakReferenceINS_9ComponentENS_22ReferenceCountedObjectEE6MasterE", !38, i64 0}
!38 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_13WeakReferenceINS_9ComponentENS_22ReferenceCountedObjectEE13SharedPointerEEE", !6, i64 0}
!39 = !{!"_ZTSN4juce15TextInputTargetE"}
!40 = !{!"_ZTSN4juce21SettableTooltipClientE", !41, i64 0, !15, i64 8}
!41 = !{!"_ZTSN4juce13TooltipClientE"}
!42 = !{!"_ZTSN4juce13ScopedPointerINS_8ViewportEEE", !6, i64 0}
!43 = !{!"_ZTSN4juce10BorderSizeIiEE", !19, i64 0, !19, i64 4, !19, i64 8, !19, i64 12}
!44 = !{!"bool", !7, i64 0}
!45 = !{!"_ZTSN4juce11UndoManagerE", !46, i64 0, !54, i64 56, !54, i64 80, !15, i64 104, !19, i64 112, !19, i64 116, !19, i64 120, !19, i64 124, !44, i64 128, !44, i64 129}
!46 = !{!"_ZTSN4juce17ChangeBroadcasterE", !47, i64 8, !50, i64 32}
!47 = !{!"_ZTSN4juce17ChangeBroadcaster25ChangeBroadcasterCallbackE", !48, i64 0, !6, i64 16}
!48 = !{!"_ZTSN4juce12AsyncUpdaterE", !49, i64 8}
!49 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_12AsyncUpdater19AsyncUpdaterMessageEEE", !6, i64 0}
!50 = !{!"_ZTSN4juce12ListenerListINS_14ChangeListenerENS_5ArrayIPS1_NS_20DummyCriticalSectionELi0EEEEE", !51, i64 0}
!51 = !{!"_ZTSN4juce5ArrayIPNS_14ChangeListenerENS_20DummyCriticalSectionELi0EEE", !52, i64 0, !19, i64 16}
!52 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_14ChangeListenerENS_20DummyCriticalSectionEEE", !53, i64 0, !19, i64 8}
!53 = !{!"_ZTSN4juce9HeapBlockIPNS_14ChangeListenerELb0EEE", !6, i64 0}
!54 = !{!"_ZTSN4juce10OwnedArrayINS_11UndoManager9ActionSetENS_20DummyCriticalSectionEEE", !55, i64 0, !19, i64 16}
!55 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_11UndoManager9ActionSetENS_20DummyCriticalSectionEEE", !56, i64 0, !19, i64 8}
!56 = !{!"_ZTSN4juce9HeapBlockIPNS_11UndoManager9ActionSetELb0EEE", !6, i64 0}
!57 = !{!"_ZTSN4juce13ScopedPointerINS_14CaretComponentEEE", !6, i64 0}
!58 = !{!"_ZTSN4juce5RangeIiEE", !19, i64 0, !19, i64 4}
!59 = !{!"_ZTSN4juce4FontE", !60, i64 0}
!60 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_4Font18SharedFontInternalEEE", !6, i64 0}
!61 = !{!"_ZTSN4juce10OwnedArrayINS_10TextEditor18UniformTextSectionENS_20DummyCriticalSectionEEE", !62, i64 0, !19, i64 16}
!62 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_10TextEditor18UniformTextSectionENS_20DummyCriticalSectionEEE", !63, i64 0, !19, i64 8}
!63 = !{!"_ZTSN4juce9HeapBlockIPNS_10TextEditor18UniformTextSectionELb0EEE", !6, i64 0}
!64 = !{!"_ZTSN4juce6ColourE", !65, i64 0}
!65 = !{!"_ZTSN4juce9PixelARGBE", !7, i64 0}
!66 = !{!"wchar_t", !7, i64 0}
!67 = !{!"_ZTSN4juce21OptionalScopedPointerINS_10TextEditor11InputFilterEEE", !68, i64 0, !44, i64 8}
!68 = !{!"_ZTSN4juce13ScopedPointerINS_10TextEditor11InputFilterEEE", !6, i64 0}
!69 = !{!"_ZTSN4juce5ValueE", !70, i64 0, !71, i64 8}
!70 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_5Value11ValueSourceEEE", !6, i64 0}
!71 = !{!"_ZTSN4juce12ListenerListINS_5Value8ListenerENS_5ArrayIPS2_NS_20DummyCriticalSectionELi0EEEEE", !72, i64 0}
!72 = !{!"_ZTSN4juce5ArrayIPNS_5Value8ListenerENS_20DummyCriticalSectionELi0EEE", !73, i64 0, !19, i64 16}
!73 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_5Value8ListenerENS_20DummyCriticalSectionEEE", !74, i64 0, !19, i64 8}
!74 = !{!"_ZTSN4juce9HeapBlockIPNS_5Value8ListenerELb0EEE", !6, i64 0}
!75 = !{!"_ZTSN4juce15TextInputTarget19VirtualKeyboardTypeE", !7, i64 0}
!76 = !{!"_ZTSN4juce10TextEditorUt_E", !7, i64 0}
!77 = !{!"_ZTSN4juce12ListenerListINS_10TextEditor8ListenerENS_5ArrayIPS2_NS_20DummyCriticalSectionELi0EEEEE", !78, i64 0}
!78 = !{!"_ZTSN4juce5ArrayIPNS_10TextEditor8ListenerENS_20DummyCriticalSectionELi0EEE", !79, i64 0, !19, i64 16}
!79 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_10TextEditor8ListenerENS_20DummyCriticalSectionEEE", !80, i64 0, !19, i64 8}
!80 = !{!"_ZTSN4juce9HeapBlockIPNS_10TextEditor8ListenerELb0EEE", !6, i64 0}
!81 = !{!"_ZTSN4juce5ArrayINS_5RangeIiEENS_20DummyCriticalSectionELi0EEE", !82, i64 0, !19, i64 16}
!82 = !{!"_ZTSN4juce19ArrayAllocationBaseINS_5RangeIiEENS_20DummyCriticalSectionEEE", !83, i64 0, !19, i64 8}
!83 = !{!"_ZTSN4juce9HeapBlockINS_5RangeIiEELb0EEE", !6, i64 0}
!84 = !{!12, !19, i64 428}
!85 = !{!12, !66, i64 492}
!86 = !{!87, !10, i64 4}
!87 = !{!"_ZTSN4juce10TextEditor8IteratorE", !19, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !19, i64 48, !19, i64 52, !10, i64 56, !66, i64 60, !88, i64 64}
!88 = !{!"_ZTSN4juce8TextAtomE", !15, i64 0, !10, i64 8, !19, i64 12}
!89 = !{!87, !10, i64 8}
!90 = !{!87, !19, i64 0}
!91 = !{!87, !6, i64 24}
!92 = !{!88, !19, i64 12}
!93 = distinct !{!93, !94}
!94 = !{!"llvm.loop.mustprogress"}
!95 = distinct !{!95, !94}
!96 = !{!19, !19, i64 0}
!97 = distinct !{!97, !94}
!98 = distinct !{!98, !94}


; 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::Rectangle" = type { %"class.juce::Point", i32, i32 }
%"class.juce::Point" = type { i32, i32 }
%"class.juce::Colour" = type { %"class.juce::PixelARGB" }
%"class.juce::PixelARGB" = type { %union.anon.77 }
%union.anon.77 = type { i32 }
%"class.juce::TextEditor::Iterator" = type { i32, float, float, float, float, float, ptr, ptr, ptr, i32, i32, float, i32, %"struct.juce::TextAtom" }
%"struct.juce::TextAtom" = type { %"class.juce::String", float, i32 }
%"class.juce::String" = type { %"class.juce::CharPointer_UTF8" }
%"class.juce::CharPointer_UTF8" = type { ptr }
%"class.juce::RectangleList.506" = type { %"class.juce::Array.507" }
%"class.juce::Array.507" = type { %"class.juce::ArrayAllocationBase.508", i32, [4 x i8] }
%"class.juce::ArrayAllocationBase.508" = type <{ %"class.juce::HeapBlock.509", i32, [4 x i8] }>
%"class.juce::HeapBlock.509" = type { ptr }
%"class.juce::Range" = type { i32, i32 }

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK4juce9Component16hasKeyboardFocusEb(ptr noundef nonnull align 8 dereferenceable(197), i1 noundef zeroext) local_unnamed_addr #0 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

declare void @_ZNK4juce8Graphics13getClipBoundsEv(ptr dead_on_unwind writable sret(%"class.juce::Rectangle") align 4, ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind noalias writable sret(%"class.juce::Colour") align 1, ptr noundef nonnull align 8 dereferenceable(197), i32 noundef, i1 noundef zeroext) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: nounwind
declare noundef nonnull align 1 dereferenceable(4) ptr @_ZN4juce6ColouraSERKS0_(ptr noundef nonnull align 1 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #5

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK4juce5RangeIiE7isEmptyEv(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK4juce10TextEditor16getWordWrapWidthEv(ptr noundef nonnull align 8 dereferenceable(600)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4juce10TextEditor8IteratorC2ERKNS_10OwnedArrayINS0_18UniformTextSectionENS_20DummyCriticalSectionEEEfw(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(20), float noundef, i32 noundef signext) unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN4juce10TextEditor8Iterator4nextEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4juce10TextEditor11drawContentERNS_8GraphicsE(ptr noundef nonnull align 8 dereferenceable(600) %0, ptr noundef nonnull align 8 dereferenceable(17) %1) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.juce::Rectangle", align 4
  %4 = alloca %"class.juce::Colour", align 1
  %5 = alloca %"class.juce::TextEditor::Iterator", align 8
  %6 = alloca %"class.juce::TextEditor::Iterator", align 8
  %7 = alloca %"class.juce::RectangleList.506", align 8
  %8 = alloca %"class.juce::Range", align 4
  %9 = alloca %"class.juce::Range", align 4
  %10 = alloca %"class.juce::Colour", align 1
  %11 = alloca %"class.juce::Colour", align 1
  %12 = alloca %"class.juce::Colour", align 1
  %13 = alloca ptr, align 8
  %14 = alloca %"class.juce::Range", align 4
  %15 = alloca %"class.juce::Range", align 4
  %16 = alloca %"class.juce::Colour", align 1
  %17 = alloca %"class.juce::Range", align 4
  %18 = alloca %"class.juce::TextEditor::Iterator", align 8
  %19 = alloca %"class.juce::Range", align 4
  %20 = alloca %"class.juce::Range", align 4
  %21 = alloca %"class.juce::Colour", align 1
  %22 = tail call noundef float @_ZNK4juce10TextEditor16getWordWrapWidthEv(ptr noundef nonnull align 8 dereferenceable(600) %0)
  %23 = fcmp ogt float %22, 0.000000e+00
  br i1 %23, label %24, label %158

24:                                               ; preds = %2
  %25 = getelementptr inbounds i8, ptr %0, i64 424
  %26 = load i32, ptr %25, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %0, i64 428
  %28 = load i32, ptr %27, align 4, !tbaa !81
  tail call void @_ZN4juce8Graphics9setOriginEii(ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %26, i32 noundef %28)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #6
  call void @_ZNK4juce8Graphics13getClipBoundsEv(ptr dead_on_unwind nonnull writable sret(%"class.juce::Rectangle") align 4 %3, ptr noundef nonnull align 8 dereferenceable(17) %1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  call void @_ZN4juce6ColourC1Ev(ptr noundef nonnull align 1 dereferenceable(4) %4) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %5) #6
  %29 = getelementptr inbounds i8, ptr %0, i64 456
  %30 = getelementptr inbounds i8, ptr %0, i64 492
  %31 = load i32, ptr %30, align 4, !tbaa !82
  invoke void @_ZN4juce10TextEditor8IteratorC2ERKNS_10OwnedArrayINS0_18UniformTextSectionENS_20DummyCriticalSectionEEEfw(ptr noundef nonnull align 8 dereferenceable(80) %5, ptr noundef nonnull align 8 dereferenceable(20) %29, float noundef %22, i32 noundef signext %31)
          to label %32 unwind label %62

32:                                               ; preds = %24
  %33 = getelementptr inbounds i8, ptr %0, i64 416
  %34 = call noundef zeroext i1 @_ZNK4juce5RangeIiE7isEmptyEv(ptr noundef nonnull align 4 dereferenceable(8) %33) #6
  br i1 %34, label %79, label %35

35:                                               ; preds = %32
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %6) #6
  call void @_ZN4juce10TextEditor8IteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %6, ptr noundef nonnull align 8 dereferenceable(80) %5)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #6
  call void @_ZN4juce13RectangleListIfEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  %36 = getelementptr inbounds i8, ptr %6, i64 4
  %37 = getelementptr inbounds i8, ptr %6, i64 8
  %38 = getelementptr inbounds i8, ptr %6, i64 24
  br label %39

39:                                               ; preds = %.backedge38, %35
  %40 = invoke noundef zeroext i1 @_ZN4juce10TextEditor8Iterator4nextEv(ptr noundef nonnull align 8 dereferenceable(80) %6)
          to label %41 unwind label %.loopexit

41:                                               ; preds = %39
  br i1 %40, label %42, label %.critedge

42:                                               ; preds = %41
  %43 = load float, ptr %36, align 4, !tbaa !83
  %44 = call noundef i32 @_ZNK4juce9RectangleIiE9getBottomEv(ptr noundef nonnull align 4 dereferenceable(16) %3) #6
  %45 = sitofp i32 %44 to float
  %46 = fcmp olt float %43, %45
  br i1 %46, label %47, label %.critedge

47:                                               ; preds = %42
  %48 = load float, ptr %36, align 4, !tbaa !83
  %49 = load float, ptr %37, align 8, !tbaa !87
  %50 = fadd float %48, %49
  %51 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %3) #6
  %52 = sitofp i32 %51 to float
  %53 = fcmp ult float %50, %52
  br i1 %53, label %.backedge38, label %54

54:                                               ; preds = %47
  %55 = load i32, ptr %6, align 8, !tbaa !88
  %56 = load ptr, ptr %38, align 8, !tbaa !89
  %57 = getelementptr inbounds i8, ptr %56, i64 12
  %58 = load i32, ptr %57, align 4, !tbaa !90
  %59 = add nsw i32 %58, %55
  call void @_ZN4juce5RangeIiEC2Eii(ptr noundef nonnull align 4 dereferenceable(8) %8, i32 noundef %55, i32 noundef %59) #6
  %60 = call noundef zeroext i1 @_ZNK4juce5RangeIiE10intersectsES1_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull %8) #6
  br i1 %60, label %61, label %.backedge38

61:                                               ; preds = %54
  call void @_ZN4juce5RangeIiEC2ERKS1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %33) #6
  invoke void @_ZNK4juce10TextEditor8Iterator12addSelectionERNS_13RectangleListIfEENS_5RangeIiEE(ptr noundef nonnull align 8 dereferenceable(80) %6, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull %9)
          to label %.backedge38 unwind label %.loopexit

.backedge38:                                      ; preds = %61, %54, %47
  br label %39, !llvm.loop !91

62:                                               ; preds = %24
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %157

.loopexit:                                        ; preds = %39, %61
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %78

.loopexit.split-lp:                               ; preds = %67
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %78

.critedge:                                        ; preds = %41, %42
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %11, ptr noundef nonnull align 8 dereferenceable(197) %0, i32 noundef 16777730, i1 noundef zeroext false)
          to label %64 unwind label %71

64:                                               ; preds = %.critedge
  %65 = call noundef zeroext i1 @_ZNK4juce9Component16hasKeyboardFocusEb(ptr noundef nonnull align 8 dereferenceable(197) %0, i1 noundef zeroext true)
  %66 = select i1 %65, float 1.000000e+00, float 5.000000e-01
  call void @_ZNK4juce6Colour19withMultipliedAlphaEf(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %10, ptr noundef nonnull align 1 dereferenceable(4) %11, float noundef %66) #6
  invoke void @_ZN4juce8Graphics9setColourENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull %10)
          to label %67 unwind label %73

67:                                               ; preds = %64
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %10) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  invoke void @_ZNK4juce8Graphics12fillRectListERKNS_13RectangleListIfEE(ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %68 unwind label %.loopexit.split-lp

68:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %12, ptr noundef nonnull align 8 dereferenceable(197) %0, i32 noundef 16777731, i1 noundef zeroext false)
          to label %69 unwind label %76

69:                                               ; preds = %68
  %70 = call noundef nonnull align 1 dereferenceable(4) ptr @_ZN4juce6ColouraSERKS0_(ptr noundef nonnull align 1 dereferenceable(4) %4, ptr noundef nonnull align 1 dereferenceable(4) %12) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @_ZN4juce13RectangleListIfED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %6) #6
  br label %79

71:                                               ; preds = %.critedge
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %75

73:                                               ; preds = %64
  %74 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %10) #6
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %11) #6
  br label %75

75:                                               ; preds = %73, %71
  %.pn = phi { ptr, i32 } [ %74, %73 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  br label %78

76:                                               ; preds = %68
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  br label %78

78:                                               ; preds = %.loopexit, %.loopexit.split-lp, %76, %75
  %.pn29 = phi { ptr, i32 } [ %77, %76 ], [ %.pn, %75 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN4juce13RectangleListIfED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #6
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %6) #6
  br label %156

79:                                               ; preds = %69, %32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  store ptr null, ptr %13, align 8, !tbaa !93
  %80 = getelementptr inbounds i8, ptr %5, i64 4
  %81 = getelementptr inbounds i8, ptr %5, i64 8
  %82 = getelementptr inbounds i8, ptr %5, i64 24
  br label %83

83:                                               ; preds = %.backedge, %79
  %84 = invoke noundef zeroext i1 @_ZN4juce10TextEditor8Iterator4nextEv(ptr noundef nonnull align 8 dereferenceable(80) %5)
          to label %85 unwind label %107

85:                                               ; preds = %83
  br i1 %84, label %86, label %.critedge2

86:                                               ; preds = %85
  %87 = load float, ptr %80, align 4, !tbaa !83
  %88 = call noundef i32 @_ZNK4juce9RectangleIiE9getBottomEv(ptr noundef nonnull align 4 dereferenceable(16) %3) #6
  %89 = sitofp i32 %88 to float
  %90 = fcmp olt float %87, %89
  br i1 %90, label %91, label %.critedge2

91:                                               ; preds = %86
  %92 = load float, ptr %80, align 4, !tbaa !83
  %93 = load float, ptr %81, align 8, !tbaa !87
  %94 = fadd float %92, %93
  %95 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %3) #6
  %96 = sitofp i32 %95 to float
  %97 = fcmp ult float %94, %96
  br i1 %97, label %.backedge, label %98

98:                                               ; preds = %91
  %99 = load i32, ptr %5, align 8, !tbaa !88
  %100 = load ptr, ptr %82, align 8, !tbaa !89
  %101 = getelementptr inbounds i8, ptr %100, i64 12
  %102 = load i32, ptr %101, align 4, !tbaa !90
  %103 = add nsw i32 %102, %99
  call void @_ZN4juce5RangeIiEC2Eii(ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef %99, i32 noundef %103) #6
  %104 = call noundef zeroext i1 @_ZNK4juce5RangeIiE10intersectsES1_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull %14) #6
  br i1 %104, label %105, label %111

105:                                              ; preds = %98
  call void @_ZN4juce5RangeIiEC2ERKS1_(ptr noundef nonnull align 4 dereferenceable(8) %15, ptr noundef nonnull align 4 dereferenceable(8) %33) #6
  call void @_ZN4juce6ColourC1ERKS0_(ptr noundef nonnull align 1 dereferenceable(4) %16, ptr noundef nonnull align 1 dereferenceable(4) %4) #6
  invoke void @_ZNK4juce10TextEditor8Iterator16drawSelectedTextERNS_8GraphicsENS_5RangeIiEENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(80) %5, ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull %15, ptr noundef nonnull %16)
          to label %106 unwind label %109

106:                                              ; preds = %105
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %16) #6
  store ptr null, ptr %13, align 8, !tbaa !93
  br label %.backedge

.backedge:                                        ; preds = %106, %111, %91
  br label %83, !llvm.loop !94

107:                                              ; preds = %111, %83
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %155

109:                                              ; preds = %105
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %16) #6
  br label %155

111:                                              ; preds = %98
  invoke void @_ZNK4juce10TextEditor8Iterator4drawERNS_8GraphicsERPKNS0_18UniformTextSectionE(ptr noundef nonnull align 8 dereferenceable(80) %5, ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %.backedge unwind label %107

.critedge2:                                       ; preds = %85, %86
  %112 = getelementptr inbounds i8, ptr %0, i64 576
  %113 = call noundef i32 @_ZNK4juce5ArrayINS_5RangeIiEENS_20DummyCriticalSectionELi0EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(20) %112) #6
  %114 = icmp sgt i32 %113, 0
  br i1 %114, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.critedge2
  %115 = getelementptr inbounds i8, ptr %18, i64 4
  %116 = getelementptr inbounds i8, ptr %18, i64 8
  %117 = getelementptr inbounds i8, ptr %18, i64 24
  br label %118

._crit_edge:                                      ; preds = %.critedge4, %.critedge2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %5) #6
  call void @llvm.lifetime.end.p0(i64 80, 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
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %3) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #6
  br label %158

118:                                              ; preds = %.lr.ph, %.critedge4
  %.in = phi i32 [ %113, %.lr.ph ], [ %119, %.critedge4 ]
  %119 = add nsw i32 %.in, -1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %120 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK4juce5ArrayINS_5RangeIiEENS_20DummyCriticalSectionELi0EE12getReferenceEi(ptr noundef nonnull align 8 dereferenceable(20) %112, i32 noundef %119) #6
  call void @_ZN4juce5RangeIiEC2ERKS1_(ptr noundef nonnull align 4 dereferenceable(8) %17, ptr noundef nonnull align 4 dereferenceable(8) %120) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %18) #6
  %121 = load i32, ptr %30, align 4, !tbaa !82
  invoke void @_ZN4juce10TextEditor8IteratorC2ERKNS_10OwnedArrayINS0_18UniformTextSectionENS_20DummyCriticalSectionEEEfw(ptr noundef nonnull align 8 dereferenceable(80) %18, ptr noundef nonnull align 8 dereferenceable(20) %29, float noundef %22, i32 noundef signext %121)
          to label %.preheader unwind label %146

.preheader:                                       ; preds = %118, %.preheader.backedge
  %122 = invoke noundef zeroext i1 @_ZN4juce10TextEditor8Iterator4nextEv(ptr noundef nonnull align 8 dereferenceable(80) %18)
          to label %123 unwind label %148

123:                                              ; preds = %.preheader
  br i1 %122, label %124, label %.critedge4

124:                                              ; preds = %123
  %125 = load float, ptr %115, align 4, !tbaa !83
  %126 = call noundef i32 @_ZNK4juce9RectangleIiE9getBottomEv(ptr noundef nonnull align 4 dereferenceable(16) %3) #6
  %127 = sitofp i32 %126 to float
  %128 = fcmp olt float %125, %127
  br i1 %128, label %129, label %.critedge4

129:                                              ; preds = %124
  %130 = load float, ptr %115, align 4, !tbaa !83
  %131 = load float, ptr %116, align 8, !tbaa !87
  %132 = fadd float %130, %131
  %133 = call noundef i32 @_ZNK4juce9RectangleIiE4getYEv(ptr noundef nonnull align 4 dereferenceable(16) %3) #6
  %134 = sitofp i32 %133 to float
  %135 = fcmp ult float %132, %134
  br i1 %135, label %.preheader.backedge, label %136

136:                                              ; preds = %129
  %137 = load i32, ptr %18, align 8, !tbaa !88
  %138 = load ptr, ptr %117, align 8, !tbaa !89
  %139 = getelementptr inbounds i8, ptr %138, i64 12
  %140 = load i32, ptr %139, align 4, !tbaa !90
  %141 = add nsw i32 %140, %137
  call void @_ZN4juce5RangeIiEC2Eii(ptr noundef nonnull align 4 dereferenceable(8) %19, i32 noundef %137, i32 noundef %141) #6
  %142 = call noundef zeroext i1 @_ZNK4juce5RangeIiE10intersectsES1_(ptr noundef nonnull align 4 dereferenceable(8) %17, ptr noundef nonnull %19) #6
  br i1 %142, label %143, label %.preheader.backedge

143:                                              ; preds = %136
  call void @_ZN4juce5RangeIiEC2ERKS1_(ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %17) #6
  invoke void @_ZNK4juce9Component10findColourEib(ptr dead_on_unwind nonnull writable sret(%"class.juce::Colour") align 1 %21, ptr noundef nonnull align 8 dereferenceable(197) %0, i32 noundef 16777729, i1 noundef zeroext false)
          to label %144 unwind label %148

144:                                              ; preds = %143
  invoke void @_ZNK4juce10TextEditor8Iterator13drawUnderlineERNS_8GraphicsENS_5RangeIiEENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(80) %18, ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull %20, ptr noundef nonnull %21)
          to label %145 unwind label %150

145:                                              ; preds = %144
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %21) #6
  br label %.preheader.backedge

.preheader.backedge:                              ; preds = %145, %136, %129
  br label %.preheader, !llvm.loop !95

146:                                              ; preds = %118
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %154

148:                                              ; preds = %143, %.preheader
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %153

150:                                              ; preds = %144
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4juce6ColourD1Ev(ptr noundef nonnull align 1 dereferenceable(4) %21) #6
  br label %153

.critedge4:                                       ; preds = %123, %124
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %18) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  %152 = icmp sgt i32 %.in, 1
  br i1 %152, label %118, label %._crit_edge, !llvm.loop !96

153:                                              ; preds = %150, %148
  %.pn31 = phi { ptr, i32 } [ %151, %150 ], [ %149, %148 ]
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %18) #6
  br label %154

154:                                              ; preds = %153, %146
  %.pn31.pn = phi { ptr, i32 } [ %.pn31, %153 ], [ %147, %146 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  br label %155

155:                                              ; preds = %154, %109, %107
  %.pn34 = phi { ptr, i32 } [ %110, %109 ], [ %108, %107 ], [ %.pn31.pn, %154 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %156

156:                                              ; preds = %155, %78
  %.pn34.pn = phi { ptr, i32 } [ %.pn34, %155 ], [ %.pn29, %78 ]
  call void @_ZN4juce10TextEditor8IteratorD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %5) #6
  br label %157

157:                                              ; preds = %156, %62
  %.pn34.pn.pn = phi { ptr, i32 } [ %.pn34.pn, %156 ], [ %63, %62 ]
  call void @llvm.lifetime.end.p0(i64 80, 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
  call void @_ZN4juce9RectangleIiED2Ev(ptr noundef nonnull align 4 dereferenceable(16) %3) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #6
  resume { ptr, i32 } %.pn34.pn.pn

158:                                              ; preds = %._crit_edge, %2
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4juce10TextEditor8IteratorC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4juce13RectangleListIfEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK4juce5RangeIiE10intersectsES1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce10TextEditor8Iterator12addSelectionERNS_13RectangleListIfEENS_5RangeIiEE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #4 align 2

declare void @_ZNK4juce8Graphics12fillRectListERKNS_13RectangleListIfEE(ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce10TextEditor8Iterator16drawSelectedTextERNS_8GraphicsENS_5RangeIiEENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(17), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce10TextEditor8Iterator4drawERNS_8GraphicsERPKNS0_18UniformTextSectionE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(17), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK4juce10TextEditor8Iterator13drawUnderlineERNS_8GraphicsENS_5RangeIiEENS_6ColourE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(17), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "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, !16, i64 424}
!6 = !{!"_ZTSN4juce10TextEditorE", !7, i64 0, !36, i64 200, !37, i64 208, !39, i64 224, !11, i64 232, !40, i64 240, !41, i64 256, !41, i64 257, !41, i64 258, !41, i64 259, !41, i64 260, !41, i64 261, !41, i64 262, !41, i64 263, !41, i64 264, !41, i64 265, !41, i64 266, !41, i64 267, !41, i64 268, !41, i64 269, !41, i64 270, !42, i64 272, !54, i64 408, !55, i64 416, !16, i64 424, !16, i64 428, !16, i64 432, !56, i64 440, !16, i64 448, !16, i64 452, !58, i64 456, !9, i64 480, !61, i64 488, !63, i64 492, !64, i64 496, !66, i64 512, !72, i64 544, !73, i64 548, !74, i64 552, !78, i64 576}
!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 = !{!"_ZTSN4juce15TextInputTargetE"}
!37 = !{!"_ZTSN4juce21SettableTooltipClientE", !38, i64 0, !9, i64 8}
!38 = !{!"_ZTSN4juce13TooltipClientE"}
!39 = !{!"_ZTSN4juce13ScopedPointerINS_8ViewportEEE", !11, i64 0}
!40 = !{!"_ZTSN4juce10BorderSizeIiEE", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!41 = !{!"bool", !12, i64 0}
!42 = !{!"_ZTSN4juce11UndoManagerE", !43, i64 0, !51, i64 56, !51, i64 80, !9, i64 104, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !41, i64 128, !41, i64 129}
!43 = !{!"_ZTSN4juce17ChangeBroadcasterE", !44, i64 8, !47, i64 32}
!44 = !{!"_ZTSN4juce17ChangeBroadcaster25ChangeBroadcasterCallbackE", !45, i64 0, !11, i64 16}
!45 = !{!"_ZTSN4juce12AsyncUpdaterE", !46, i64 8}
!46 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_12AsyncUpdater19AsyncUpdaterMessageEEE", !11, i64 0}
!47 = !{!"_ZTSN4juce12ListenerListINS_14ChangeListenerENS_5ArrayIPS1_NS_20DummyCriticalSectionELi0EEEEE", !48, i64 0}
!48 = !{!"_ZTSN4juce5ArrayIPNS_14ChangeListenerENS_20DummyCriticalSectionELi0EEE", !49, i64 0, !16, i64 16}
!49 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_14ChangeListenerENS_20DummyCriticalSectionEEE", !50, i64 0, !16, i64 8}
!50 = !{!"_ZTSN4juce9HeapBlockIPNS_14ChangeListenerELb0EEE", !11, i64 0}
!51 = !{!"_ZTSN4juce10OwnedArrayINS_11UndoManager9ActionSetENS_20DummyCriticalSectionEEE", !52, i64 0, !16, i64 16}
!52 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_11UndoManager9ActionSetENS_20DummyCriticalSectionEEE", !53, i64 0, !16, i64 8}
!53 = !{!"_ZTSN4juce9HeapBlockIPNS_11UndoManager9ActionSetELb0EEE", !11, i64 0}
!54 = !{!"_ZTSN4juce13ScopedPointerINS_14CaretComponentEEE", !11, i64 0}
!55 = !{!"_ZTSN4juce5RangeIiEE", !16, i64 0, !16, i64 4}
!56 = !{!"_ZTSN4juce4FontE", !57, i64 0}
!57 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_4Font18SharedFontInternalEEE", !11, i64 0}
!58 = !{!"_ZTSN4juce10OwnedArrayINS_10TextEditor18UniformTextSectionENS_20DummyCriticalSectionEEE", !59, i64 0, !16, i64 16}
!59 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_10TextEditor18UniformTextSectionENS_20DummyCriticalSectionEEE", !60, i64 0, !16, i64 8}
!60 = !{!"_ZTSN4juce9HeapBlockIPNS_10TextEditor18UniformTextSectionELb0EEE", !11, i64 0}
!61 = !{!"_ZTSN4juce6ColourE", !62, i64 0}
!62 = !{!"_ZTSN4juce9PixelARGBE", !12, i64 0}
!63 = !{!"wchar_t", !12, i64 0}
!64 = !{!"_ZTSN4juce21OptionalScopedPointerINS_10TextEditor11InputFilterEEE", !65, i64 0, !41, i64 8}
!65 = !{!"_ZTSN4juce13ScopedPointerINS_10TextEditor11InputFilterEEE", !11, i64 0}
!66 = !{!"_ZTSN4juce5ValueE", !67, i64 0, !68, i64 8}
!67 = !{!"_ZTSN4juce25ReferenceCountedObjectPtrINS_5Value11ValueSourceEEE", !11, i64 0}
!68 = !{!"_ZTSN4juce12ListenerListINS_5Value8ListenerENS_5ArrayIPS2_NS_20DummyCriticalSectionELi0EEEEE", !69, i64 0}
!69 = !{!"_ZTSN4juce5ArrayIPNS_5Value8ListenerENS_20DummyCriticalSectionELi0EEE", !70, i64 0, !16, i64 16}
!70 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_5Value8ListenerENS_20DummyCriticalSectionEEE", !71, i64 0, !16, i64 8}
!71 = !{!"_ZTSN4juce9HeapBlockIPNS_5Value8ListenerELb0EEE", !11, i64 0}
!72 = !{!"_ZTSN4juce15TextInputTarget19VirtualKeyboardTypeE", !12, i64 0}
!73 = !{!"_ZTSN4juce10TextEditorUt_E", !12, i64 0}
!74 = !{!"_ZTSN4juce12ListenerListINS_10TextEditor8ListenerENS_5ArrayIPS2_NS_20DummyCriticalSectionELi0EEEEE", !75, i64 0}
!75 = !{!"_ZTSN4juce5ArrayIPNS_10TextEditor8ListenerENS_20DummyCriticalSectionELi0EEE", !76, i64 0, !16, i64 16}
!76 = !{!"_ZTSN4juce19ArrayAllocationBaseIPNS_10TextEditor8ListenerENS_20DummyCriticalSectionEEE", !77, i64 0, !16, i64 8}
!77 = !{!"_ZTSN4juce9HeapBlockIPNS_10TextEditor8ListenerELb0EEE", !11, i64 0}
!78 = !{!"_ZTSN4juce5ArrayINS_5RangeIiEENS_20DummyCriticalSectionELi0EEE", !79, i64 0, !16, i64 16}
!79 = !{!"_ZTSN4juce19ArrayAllocationBaseINS_5RangeIiEENS_20DummyCriticalSectionEEE", !80, i64 0, !16, i64 8}
!80 = !{!"_ZTSN4juce9HeapBlockINS_5RangeIiEELb0EEE", !11, i64 0}
!81 = !{!6, !16, i64 428}
!82 = !{!6, !63, i64 492}
!83 = !{!84, !85, i64 4}
!84 = !{!"_ZTSN4juce10TextEditor8IteratorE", !16, i64 0, !85, i64 4, !85, i64 8, !85, i64 12, !85, i64 16, !85, i64 20, !11, i64 24, !11, i64 32, !11, i64 40, !16, i64 48, !16, i64 52, !85, i64 56, !63, i64 60, !86, i64 64}
!85 = !{!"float", !12, i64 0}
!86 = !{!"_ZTSN4juce8TextAtomE", !9, i64 0, !85, i64 8, !16, i64 12}
!87 = !{!84, !85, i64 8}
!88 = !{!84, !16, i64 0}
!89 = !{!84, !11, i64 24}
!90 = !{!86, !16, i64 12}
!91 = distinct !{!91, !92}
!92 = !{!"llvm.loop.mustprogress"}
!93 = !{!11, !11, i64 0}
!94 = distinct !{!94, !92}
!95 = distinct !{!95, !92}
!96 = distinct !{!96, !92}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass