; LLVM IR from DarrenSweeney/3D-Physics-Engine :: Physics Engine/Imgui/imgui.ll (ZN5ImGui16CollapsingHeaderEPKcS1_bb)

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

%struct.ImVec2 = type { float, float }
%struct.ImGuiAabb = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiWindow = type { ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, i8, i8, i8, i32, i8, i32, i32, i32, %struct.ImGuiDrawContext, %class.ImVector.11, %class.ImVector.12, %struct.ImGuiAabb, i32, float, %struct.ImGuiStorage, float, ptr, ptr, i32, i32, i32, i32, i32, i32 }
%struct.ImGuiDrawContext = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, i32, i32, %struct.ImGuiAabb, i8, %class.ImVector.1, %class.ImVector.9, %class.ImVector.10, %class.ImVector.10, i32, ptr, float, float, i32, i32, %struct.ImVec2, float, float, i8, i32, %class.ImVector.10 }
%class.ImVector.1 = type { i64, i64, ptr }
%class.ImVector.9 = type { i64, i64, ptr }
%class.ImVector.10 = type { i64, i64, ptr }
%class.ImVector.11 = type { i64, i64, ptr }
%class.ImVector.12 = type { i64, i64, ptr }
%struct.ImGuiStorage = type { %class.ImVector.6 }
%class.ImVector.6 = type { i64, i64, ptr }
%struct.ImGuiState = type { i8, [7 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, %struct.ImVec2, float, i32, i32, %class.ImVector.1, ptr, %class.ImVector.1, ptr, ptr, ptr, i32, i32, i32, i8, i8, ptr, float, %class.ImVector.2, %class.ImVector.3, %class.ImVector.4, %class.ImVector, %struct.ImVec2, i32, %struct.ImVec2, i32, i8, i32, i8, i8, i32, %class.ImVector.5, %class.ImVector.1, %struct.ImGuiTextEditState, i32, %struct.ImGuiStorage, i32, [1024 x i8], ptr, i8, ptr, ptr, i32, i32, [120 x float], i32, float }
%struct.ImGuiIO = type <{ %struct.ImVec2, float, float, ptr, ptr, float, float, [17 x i32], [4 x i8], ptr, ptr, float, i8, [3 x i8], %struct.ImVec2, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], [3 x i8], float, i8, i8, i8, [512 x i8], i8, [17 x i16], i8, i8, float, %struct.ImVec2, %struct.ImVec2, [5 x i8], [3 x i8], [5 x %struct.ImVec2], [5 x float], [5 x i8], [5 x i8], [2 x i8], [5 x float], [512 x float], [4 x i8] }>
%struct.ImGuiStyle = type { float, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, [39 x %struct.ImVec4] }
%struct.ImVec4 = type { float, float, float, float }
%class.ImVector.2 = type { i64, i64, ptr }
%class.ImVector.3 = type { i64, i64, ptr }
%class.ImVector.4 = type { i64, i64, ptr }
%class.ImVector = type { i64, i64, ptr }
%class.ImVector.5 = type { i64, i64, ptr }
%struct.ImGuiTextEditState = type <{ i32, [1024 x i16], [3073 x i8], [3 x i8], i64, float, float, %struct.STB_TexteditState, float, %struct.ImVec2, i8, [7 x i8], ptr, float, [4 x i8] }>
%struct.STB_TexteditState = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %struct.StbUndoState }
%struct.StbUndoState = type { [99 x %struct.StbUndoRecord], [999 x i16], i16, i16, i16, i16 }
%struct.StbUndoRecord = type { i32, i16, i16, i16 }

@_ZL6GImGui = external hidden global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [36 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui16CollapsingHeaderEPKcS1_bb = external hidden unnamed_addr constant [69 x i8], align 1
@__const._ZN5ImGui16CollapsingHeaderEPKcS1_bb.log_prefix = external hidden unnamed_addr constant [4 x i8], align 1
@__const._ZN5ImGui16CollapsingHeaderEPKcS1_bb.log_suffix = external hidden unnamed_addr constant [3 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480), ptr noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL16GetCurrentWindowv() #5

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #7

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui19GetContentRegionMaxEv() #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8ItemSize6ImVec2PS_(<2 x float>, ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL7ItemAddRK9ImGuiAabbPKj(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK9ImGuiAabb7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480), i32 noundef, float noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) #4

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480)) #8 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float>, i1 noundef zeroext, float noundef, i1 noundef zeroext) #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float>, ptr noundef, ptr noundef, i1 noundef zeroext) #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) #8

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui16CollapsingHeaderEPKcS1_bb(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %2, i1 noundef zeroext %3) #8 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i8, align 1
  %17 = alloca i32, align 4
  %18 = alloca %struct.ImVec2, align 4
  %19 = alloca %struct.ImVec2, align 4
  %20 = alloca %struct.ImVec2, align 4
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 4
  %23 = alloca %struct.ImGuiAabb, align 4
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca %struct.ImGuiAabb, align 4
  %26 = alloca %struct.ImVec2, align 4
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca %struct.ImVec2, align 4
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  %35 = alloca i32, align 4
  %36 = alloca %struct.ImVec2, align 4
  %37 = alloca %struct.ImVec2, align 4
  %38 = alloca %struct.ImVec2, align 4
  %39 = alloca [4 x i8], align 1
  %40 = alloca %struct.ImVec2, align 4
  %41 = alloca %struct.ImVec2, align 4
  %42 = alloca %struct.ImVec2, align 4
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca [3 x i8], align 1
  %45 = alloca %struct.ImVec2, align 4
  %46 = alloca %struct.ImVec2, align 4
  %47 = alloca %struct.ImVec2, align 4
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca %struct.ImVec2, align 4
  %50 = alloca %struct.ImVec2, align 4
  %51 = alloca %struct.ImVec2, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  %52 = zext i1 %2 to i8
  store i8 %52, ptr %8, align 1, !tbaa !9
  %53 = zext i1 %3 to i8
  store i8 %53, ptr %9, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %54 = load ptr, ptr @_ZL6GImGui, align 8, !tbaa !5
  store ptr %54, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  %55 = call noundef ptr @_ZL16GetCurrentWindowv()
  store ptr %55, ptr %11, align 8, !tbaa !5
  %56 = load ptr, ptr %11, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.ImGuiWindow, ptr %56, i32 0, i32 14
  %58 = load i8, ptr %57, align 4, !tbaa !11, !range !26, !noundef !27
  %59 = trunc i8 %58 to i1
  br i1 %59, label %60, label %61

60:                                               ; preds = %4
  store i1 false, ptr %5, align 1
  store i32 1, ptr %12, align 4
  br label %378

61:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  %62 = load ptr, ptr %10, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.ImGuiState, ptr %62, i32 0, i32 3
  store ptr %63, ptr %13, align 8, !tbaa !5
  %64 = load ptr, ptr %7, align 8, !tbaa !5
  %65 = icmp ne ptr %64, null
  br i1 %65, label %69, label %66

66:                                               ; preds = %61
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = icmp ne ptr %67, null
  br label %69

69:                                               ; preds = %66, %61
  %70 = phi i1 [ true, %61 ], [ %68, %66 ]
  br i1 %70, label %71, label %72

71:                                               ; preds = %69
  br label %74

72:                                               ; preds = %69
  call void @__assert_fail(ptr noundef @.str.88, ptr noundef @.str.10, i32 noundef 4279, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui16CollapsingHeaderEPKcS1_bb) #10
  unreachable

73:                                               ; No predecessors!
  br label %74

74:                                               ; preds = %73, %71
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = icmp eq ptr %75, null
  br i1 %76, label %77, label %79

77:                                               ; preds = %74
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %78, ptr %7, align 8, !tbaa !5
  br label %79

79:                                               ; preds = %77, %74
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = icmp eq ptr %80, null
  br i1 %81, label %82, label %84

82:                                               ; preds = %79
  %83 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %83, ptr %6, align 8, !tbaa !5
  br label %84

84:                                               ; preds = %82, %79
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %85 = load ptr, ptr %11, align 8, !tbaa !5
  %86 = load ptr, ptr %7, align 8, !tbaa !5
  %87 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %85, ptr noundef %86)
  store i32 %87, ptr %14, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.ImGuiWindow, ptr %88, i32 0, i32 20
  %90 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %89, i32 0, i32 15
  %91 = load ptr, ptr %90, align 8, !tbaa !29
  store ptr %91, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #9
  %92 = load ptr, ptr %10, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.ImGuiState, ptr %92, i32 0, i32 35
  %94 = load i32, ptr %93, align 4, !tbaa !30
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %96, label %138

96:                                               ; preds = %84
  %97 = load ptr, ptr %10, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.ImGuiState, ptr %97, i32 0, i32 35
  %99 = load i32, ptr %98, align 4, !tbaa !30
  %100 = and i32 %99, 1
  %101 = icmp ne i32 %100, 0
  br i1 %101, label %102, label %113

102:                                              ; preds = %96
  %103 = load ptr, ptr %10, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.ImGuiState, ptr %103, i32 0, i32 34
  %105 = load i8, ptr %104, align 1, !tbaa !43, !range !26, !noundef !27
  %106 = trunc i8 %105 to i1
  %107 = zext i1 %106 to i8
  store i8 %107, ptr %16, align 1, !tbaa !9
  %108 = load ptr, ptr %15, align 8, !tbaa !5
  %109 = load i32, ptr %14, align 4, !tbaa !28
  %110 = load i8, ptr %16, align 1, !tbaa !9, !range !26, !noundef !27
  %111 = trunc i8 %110 to i1
  %112 = zext i1 %111 to i32
  call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %108, i32 noundef %109, i32 noundef %112)
  br label %135

113:                                              ; preds = %96
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %114 = load ptr, ptr %15, align 8, !tbaa !5
  %115 = load i32, ptr %14, align 4, !tbaa !28
  %116 = call noundef i32 @_ZNK12ImGuiStorage6GetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %114, i32 noundef %115, i32 noundef -1)
  store i32 %116, ptr %17, align 4, !tbaa !28
  %117 = load i32, ptr %17, align 4, !tbaa !28
  %118 = icmp eq i32 %117, -1
  br i1 %118, label %119, label %130

119:                                              ; preds = %113
  %120 = load ptr, ptr %10, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.ImGuiState, ptr %120, i32 0, i32 34
  %122 = load i8, ptr %121, align 1, !tbaa !43, !range !26, !noundef !27
  %123 = trunc i8 %122 to i1
  %124 = zext i1 %123 to i8
  store i8 %124, ptr %16, align 1, !tbaa !9
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = load i32, ptr %14, align 4, !tbaa !28
  %127 = load i8, ptr %16, align 1, !tbaa !9, !range !26, !noundef !27
  %128 = trunc i8 %127 to i1
  %129 = zext i1 %128 to i32
  call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %125, i32 noundef %126, i32 noundef %129)
  br label %134

130:                                              ; preds = %113
  %131 = load i32, ptr %17, align 4, !tbaa !28
  %132 = icmp ne i32 %131, 0
  %133 = zext i1 %132 to i8
  store i8 %133, ptr %16, align 1, !tbaa !9
  br label %134

134:                                              ; preds = %130, %119
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %135

135:                                              ; preds = %134, %102
  %136 = load ptr, ptr %10, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.ImGuiState, ptr %136, i32 0, i32 35
  store i32 0, ptr %137, align 4, !tbaa !30
  br label %147

138:                                              ; preds = %84
  %139 = load ptr, ptr %15, align 8, !tbaa !5
  %140 = load i32, ptr %14, align 4, !tbaa !28
  %141 = load i8, ptr %9, align 1, !tbaa !9, !range !26, !noundef !27
  %142 = trunc i8 %141 to i1
  %143 = zext i1 %142 to i32
  %144 = call noundef i32 @_ZNK12ImGuiStorage6GetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %139, i32 noundef %140, i32 noundef %143)
  %145 = icmp ne i32 %144, 0
  %146 = zext i1 %145 to i8
  store i8 %146, ptr %16, align 1, !tbaa !9
  br label %147

147:                                              ; preds = %138, %135
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %148 = load ptr, ptr %11, align 8, !tbaa !5
  %149 = call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %148)
  store <2 x float> %149, ptr %18, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %150 = load ptr, ptr %6, align 8, !tbaa !5
  %151 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %150, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %151, ptr %19, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %152 = load ptr, ptr %11, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ImGuiWindow, ptr %152, i32 0, i32 20
  %154 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %153, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %20, ptr align 8 %154, i64 8, i1 false), !tbaa.struct !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %155 = load ptr, ptr %11, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.ImGuiWindow, ptr %155, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %157 = call <2 x float> @_ZN5ImGui19GetContentRegionMaxEv()
  store <2 x float> %157, ptr %22, align 4
  %158 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %156, ptr noundef nonnull align 4 dereferenceable(8) %22)
  store <2 x float> %158, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %159 = getelementptr inbounds %struct.ImVec2, ptr %21, i32 0, i32 0
  %160 = load float, ptr %159, align 4, !tbaa !46
  %161 = getelementptr inbounds %struct.ImVec2, ptr %20, i32 0, i32 1
  %162 = load float, ptr %161, align 4, !tbaa !47
  %163 = getelementptr inbounds %struct.ImVec2, ptr %19, i32 0, i32 1
  %164 = load float, ptr %163, align 4, !tbaa !47
  %165 = fadd float %162, %164
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef %160, float noundef %165)
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %24)
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  %166 = load i8, ptr %8, align 1, !tbaa !9, !range !26, !noundef !27
  %167 = trunc i8 %166 to i1
  br i1 %167, label %168, label %191

168:                                              ; preds = %147
  %169 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 0
  %170 = load float, ptr %169, align 4, !tbaa !46
  %171 = call float @llvm.fmuladd.f32(float %170, float 5.000000e-01, float -1.000000e+00)
  %172 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  %173 = getelementptr inbounds %struct.ImVec2, ptr %172, i32 0, i32 0
  %174 = load float, ptr %173, align 4, !tbaa !48
  %175 = fsub float %174, %171
  store float %175, ptr %173, align 4, !tbaa !48
  %176 = getelementptr inbounds %struct.ImVec2, ptr %18, i32 0, i32 0
  %177 = load float, ptr %176, align 4, !tbaa !46
  %178 = call float @llvm.fmuladd.f32(float %177, float 5.000000e-01, float -1.000000e+00)
  %179 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 1
  %180 = getelementptr inbounds %struct.ImVec2, ptr %179, i32 0, i32 0
  %181 = load float, ptr %180, align 4, !tbaa !49
  %182 = fadd float %181, %178
  store float %182, ptr %180, align 4, !tbaa !49
  %183 = load ptr, ptr %13, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.ImGuiStyle, ptr %183, i32 0, i32 5
  %185 = getelementptr inbounds %struct.ImVec2, ptr %184, i32 0, i32 1
  %186 = load float, ptr %185, align 4, !tbaa !50
  %187 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 1
  %188 = getelementptr inbounds %struct.ImVec2, ptr %187, i32 0, i32 1
  %189 = load float, ptr %188, align 4, !tbaa !51
  %190 = call float @llvm.fmuladd.f32(float %186, float 2.000000e+00, float %189)
  store float %190, ptr %188, align 4, !tbaa !51
  br label %191

191:                                              ; preds = %168, %147
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #9
  %192 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %193 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %194 = load ptr, ptr %11, align 8, !tbaa !5
  %195 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %194)
  %196 = load ptr, ptr %13, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.ImGuiStyle, ptr %196, i32 0, i32 5
  %198 = getelementptr inbounds %struct.ImVec2, ptr %197, i32 0, i32 0
  %199 = load float, ptr %198, align 4, !tbaa !52
  %200 = fmul float %199, 2.000000e+00
  %201 = call float @llvm.fmuladd.f32(float %200, float 2.000000e+00, float %195)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef %201, float noundef 0.000000e+00)
  %202 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %193, ptr noundef nonnull align 4 dereferenceable(8) %28)
  store <2 x float> %202, ptr %27, align 4
  %203 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %19)
  store <2 x float> %203, ptr %26, align 4
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %25, ptr noundef nonnull align 4 dereferenceable(8) %192, ptr noundef nonnull align 4 dereferenceable(8) %26)
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %204 = call <2 x float> @_ZNK9ImGuiAabb7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %25)
  store <2 x float> %204, ptr %30, align 4
  %205 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %206 = load float, ptr %205, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %207 = call <2 x float> @_ZNK9ImGuiAabb7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %23)
  store <2 x float> %207, ptr %31, align 4
  %208 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %209 = load float, ptr %208, align 4, !tbaa !47
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef %206, float noundef %209)
  %210 = load <2 x float>, ptr %29, align 4
  call void @_ZL8ItemSize6ImVec2PS_(<2 x float> %210, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  %211 = load ptr, ptr %10, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.ImGuiState, ptr %211, i32 0, i32 44
  %213 = load i8, ptr %212, align 8, !tbaa !53, !range !26, !noundef !27
  %214 = trunc i8 %213 to i1
  br i1 %214, label %215, label %228

215:                                              ; preds = %191
  %216 = load i8, ptr %8, align 1, !tbaa !9, !range !26, !noundef !27
  %217 = trunc i8 %216 to i1
  br i1 %217, label %228, label %218

218:                                              ; preds = %215
  %219 = load ptr, ptr %11, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.ImGuiWindow, ptr %219, i32 0, i32 20
  %221 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %220, i32 0, i32 6
  %222 = load i32, ptr %221, align 4, !tbaa !54
  %223 = load ptr, ptr %10, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.ImGuiState, ptr %223, i32 0, i32 48
  %225 = load i32, ptr %224, align 4, !tbaa !55
  %226 = icmp slt i32 %222, %225
  br i1 %226, label %227, label %228

227:                                              ; preds = %218
  store i8 1, ptr %16, align 1, !tbaa !9
  br label %228

228:                                              ; preds = %227, %218, %215, %191
  %229 = call noundef zeroext i1 @_ZL7ItemAddRK9ImGuiAabbPKj(ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef %14)
  br i1 %229, label %233, label %230

230:                                              ; preds = %228
  %231 = load i8, ptr %16, align 1, !tbaa !9, !range !26, !noundef !27
  %232 = trunc i8 %231 to i1
  store i1 %232, ptr %5, align 1
  store i32 1, ptr %12, align 4
  br label %377

233:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #9
  %234 = load i8, ptr %8, align 1, !tbaa !9, !range !26, !noundef !27
  %235 = trunc i8 %234 to i1
  br i1 %235, label %236, label %237

236:                                              ; preds = %233
  br label %238

237:                                              ; preds = %233
  br label %238

238:                                              ; preds = %237, %236
  %239 = phi ptr [ %23, %236 ], [ %25, %237 ]
  %240 = call noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16) %239, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef %32, ptr noundef %33, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext false)
  %241 = zext i1 %240 to i8
  store i8 %241, ptr %34, align 1, !tbaa !9
  %242 = load i8, ptr %34, align 1, !tbaa !9, !range !26, !noundef !27
  %243 = trunc i8 %242 to i1
  br i1 %243, label %244, label %254

244:                                              ; preds = %238
  %245 = load i8, ptr %16, align 1, !tbaa !9, !range !26, !noundef !27
  %246 = trunc i8 %245 to i1
  %247 = xor i1 %246, true
  %248 = zext i1 %247 to i8
  store i8 %248, ptr %16, align 1, !tbaa !9
  %249 = load ptr, ptr %15, align 8, !tbaa !5
  %250 = load i32, ptr %14, align 4, !tbaa !28
  %251 = load i8, ptr %16, align 1, !tbaa !9, !range !26, !noundef !27
  %252 = trunc i8 %251 to i1
  %253 = zext i1 %252 to i32
  call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %249, i32 noundef %250, i32 noundef %253)
  br label %254

254:                                              ; preds = %244, %238
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #9
  %255 = load ptr, ptr %11, align 8, !tbaa !5
  %256 = load i8, ptr %33, align 1, !tbaa !9, !range !26, !noundef !27
  %257 = trunc i8 %256 to i1
  br i1 %257, label %258, label %262

258:                                              ; preds = %254
  %259 = load i8, ptr %32, align 1, !tbaa !9, !range !26, !noundef !27
  %260 = trunc i8 %259 to i1
  br i1 %260, label %261, label %262

261:                                              ; preds = %258
  br label %267

262:                                              ; preds = %258, %254
  %263 = load i8, ptr %32, align 1, !tbaa !9, !range !26, !noundef !27
  %264 = trunc i8 %263 to i1
  %265 = zext i1 %264 to i64
  %266 = select i1 %264, i32 22, i32 21
  br label %267

267:                                              ; preds = %262, %261
  %268 = phi i32 [ 23, %261 ], [ %266, %262 ]
  %269 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %255, i32 noundef %268, float noundef 1.000000e+00)
  store i32 %269, ptr %35, align 4, !tbaa !28
  %270 = load i8, ptr %8, align 1, !tbaa !9, !range !26, !noundef !27
  %271 = trunc i8 %270 to i1
  br i1 %271, label %272, label %328

272:                                              ; preds = %267
  %273 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 4 %273, i64 8, i1 false), !tbaa.struct !44
  %274 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %274, i64 8, i1 false), !tbaa.struct !44
  %275 = load i32, ptr %35, align 4, !tbaa !28
  %276 = load ptr, ptr %13, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.ImGuiStyle, ptr %276, i32 0, i32 6
  %278 = load float, ptr %277, align 4, !tbaa !56
  %279 = load <2 x float>, ptr %36, align 4
  %280 = load <2 x float>, ptr %37, align 4
  call void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float> %279, <2 x float> %280, i32 noundef %275, i1 noundef zeroext true, float noundef %278)
  %281 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  %282 = load ptr, ptr %13, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.ImGuiStyle, ptr %282, i32 0, i32 5
  %284 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %281, ptr noundef nonnull align 4 dereferenceable(8) %283)
  store <2 x float> %284, ptr %38, align 4
  %285 = load i8, ptr %16, align 1, !tbaa !9, !range !26, !noundef !27
  %286 = trunc i8 %285 to i1
  %287 = load <2 x float>, ptr %38, align 4
  call void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float> %287, i1 noundef zeroext %286, float noundef 1.000000e+00, i1 noundef zeroext true)
  %288 = load ptr, ptr %10, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.ImGuiState, ptr %288, i32 0, i32 44
  %290 = load i8, ptr %289, align 8, !tbaa !53, !range !26, !noundef !27
  %291 = trunc i8 %290 to i1
  br i1 %291, label %292, label %300

292:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %39, ptr align 1 @__const._ZN5ImGui16CollapsingHeaderEPKcS1_bb.log_prefix, i64 4, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  %293 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  %294 = load ptr, ptr %13, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.ImGuiStyle, ptr %294, i32 0, i32 5
  %296 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %293, ptr noundef nonnull align 4 dereferenceable(8) %295)
  store <2 x float> %296, ptr %40, align 4
  %297 = getelementptr inbounds [4 x i8], ptr %39, i64 0, i64 0
  %298 = getelementptr inbounds [4 x i8], ptr %39, i64 0, i64 0
  %299 = getelementptr inbounds i8, ptr %298, i64 3
  call void @_ZL7LogTextRK6ImVec2PKcS3_(ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef %297, ptr noundef %299)
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  br label %300

300:                                              ; preds = %292, %272
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %301 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  %302 = load ptr, ptr %13, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.ImGuiStyle, ptr %302, i32 0, i32 5
  %304 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %301, ptr noundef nonnull align 4 dereferenceable(8) %303)
  store <2 x float> %304, ptr %42, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %305 = load ptr, ptr %11, align 8, !tbaa !5
  %306 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %305)
  %307 = load ptr, ptr %13, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.ImGuiStyle, ptr %307, i32 0, i32 5
  %309 = getelementptr inbounds %struct.ImVec2, ptr %308, i32 0, i32 0
  %310 = load float, ptr %309, align 4, !tbaa !52
  %311 = call float @llvm.fmuladd.f32(float %310, float 2.000000e+00, float %306)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %311, float noundef 0.000000e+00)
  %312 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %312, ptr %41, align 4
  %313 = load ptr, ptr %6, align 8, !tbaa !5
  %314 = load <2 x float>, ptr %41, align 4
  call void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float> %314, ptr noundef %313, ptr noundef null, i1 noundef zeroext true)
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  %315 = load ptr, ptr %10, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.ImGuiState, ptr %315, i32 0, i32 44
  %317 = load i8, ptr %316, align 8, !tbaa !53, !range !26, !noundef !27
  %318 = trunc i8 %317 to i1
  br i1 %318, label %319, label %327

319:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 3, ptr %44) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %44, ptr align 1 @__const._ZN5ImGui16CollapsingHeaderEPKcS1_bb.log_suffix, i64 3, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %320 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  %321 = load ptr, ptr %13, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.ImGuiStyle, ptr %321, i32 0, i32 5
  %323 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %320, ptr noundef nonnull align 4 dereferenceable(8) %322)
  store <2 x float> %323, ptr %45, align 4
  %324 = getelementptr inbounds [3 x i8], ptr %44, i64 0, i64 0
  %325 = getelementptr inbounds [3 x i8], ptr %44, i64 0, i64 0
  %326 = getelementptr inbounds i8, ptr %325, i64 2
  call void @_ZL7LogTextRK6ImVec2PKcS3_(ptr noundef nonnull align 4 dereferenceable(8) %45, ptr noundef %324, ptr noundef %326)
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 3, ptr %44) #9
  br label %327

327:                                              ; preds = %319, %300
  br label %374

328:                                              ; preds = %267
  %329 = load i8, ptr %33, align 1, !tbaa !9, !range !26, !noundef !27
  %330 = trunc i8 %329 to i1
  br i1 %330, label %331, label %334

331:                                              ; preds = %328
  %332 = load i8, ptr %32, align 1, !tbaa !9, !range !26, !noundef !27
  %333 = trunc i8 %332 to i1
  br i1 %333, label %337, label %334

334:                                              ; preds = %331, %328
  %335 = load i8, ptr %32, align 1, !tbaa !9, !range !26, !noundef !27
  %336 = trunc i8 %335 to i1
  br i1 %336, label %337, label %343

337:                                              ; preds = %334, %331
  %338 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %46, ptr align 4 %338, i64 8, i1 false), !tbaa.struct !44
  %339 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %47, ptr align 4 %339, i64 8, i1 false), !tbaa.struct !44
  %340 = load i32, ptr %35, align 4, !tbaa !28
  %341 = load <2 x float>, ptr %46, align 4
  %342 = load <2 x float>, ptr %47, align 4
  call void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float> %341, <2 x float> %342, i32 noundef %340, i1 noundef zeroext false, float noundef 0.000000e+00)
  br label %343

343:                                              ; preds = %337, %334
  %344 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %345 = load ptr, ptr %13, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.ImGuiStyle, ptr %345, i32 0, i32 5
  %347 = getelementptr inbounds %struct.ImVec2, ptr %346, i32 0, i32 0
  %348 = load float, ptr %347, align 4, !tbaa !52
  %349 = load ptr, ptr %11, align 8, !tbaa !5
  %350 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %349)
  %351 = fmul float %350, 0x3FC3333340000000
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %348, float noundef %351)
  %352 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %344, ptr noundef nonnull align 4 dereferenceable(8) %49)
  store <2 x float> %352, ptr %48, align 4
  %353 = load i8, ptr %16, align 1, !tbaa !9, !range !26, !noundef !27
  %354 = trunc i8 %353 to i1
  %355 = load <2 x float>, ptr %48, align 4
  call void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float> %355, i1 noundef zeroext %354, float noundef 0x3FE6666660000000, i1 noundef zeroext false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  %356 = load ptr, ptr %10, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImGuiState, ptr %356, i32 0, i32 44
  %358 = load i8, ptr %357, align 8, !tbaa !53, !range !26, !noundef !27
  %359 = trunc i8 %358 to i1
  br i1 %359, label %360, label %362

360:                                              ; preds = %343
  %361 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  call void @_ZL7LogTextRK6ImVec2PKcS3_(ptr noundef nonnull align 4 dereferenceable(8) %361, ptr noundef @.str.89, ptr noundef null)
  br label %362

362:                                              ; preds = %360, %343
  %363 = getelementptr inbounds %struct.ImGuiAabb, ptr %23, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %364 = load ptr, ptr %11, align 8, !tbaa !5
  %365 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %364)
  %366 = load ptr, ptr %13, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.ImGuiStyle, ptr %366, i32 0, i32 5
  %368 = getelementptr inbounds %struct.ImVec2, ptr %367, i32 0, i32 0
  %369 = load float, ptr %368, align 4, !tbaa !52
  %370 = call float @llvm.fmuladd.f32(float %369, float 2.000000e+00, float %365)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %51, float noundef %370, float noundef 0.000000e+00)
  %371 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %363, ptr noundef nonnull align 4 dereferenceable(8) %51)
  store <2 x float> %371, ptr %50, align 4
  %372 = load ptr, ptr %6, align 8, !tbaa !5
  %373 = load <2 x float>, ptr %50, align 4
  call void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float> %373, ptr noundef %372, ptr noundef null, i1 noundef zeroext true)
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  br label %374

374:                                              ; preds = %362, %327
  %375 = load i8, ptr %16, align 1, !tbaa !9, !range !26, !noundef !27
  %376 = trunc i8 %375 to i1
  store i1 %376, ptr %5, align 1
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  br label %377

377:                                              ; preds = %374, %230
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  br label %378

378:                                              ; preds = %377, %60
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  %379 = load i1, ptr %5, align 1
  ret i1 %379
}

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL7LogTextRK6ImVec2PKcS3_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef, ptr noundef) #4

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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 #6 = { noreturn 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 #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "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 #8 = { mustprogress uwtable "min-legal-vector-width"="64" "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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !10, i64 68}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !13, i64 8, !13, i64 12, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !14, i64 48, !15, i64 56, !15, i64 60, !10, i64 64, !10, i64 65, !10, i64 66, !10, i64 67, !10, i64 68, !13, i64 72, !10, i64 76, !13, i64 80, !13, i64 84, !13, i64 88, !16, i64 96, !22, i64 336, !23, i64 360, !17, i64 384, !13, i64 400, !15, i64 404, !24, i64 408, !15, i64 432, !6, i64 440, !6, i64 448, !13, i64 456, !13, i64 460, !13, i64 464, !13, i64 468, !13, i64 472, !13, i64 476}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTS6ImVec2", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!"_ZTS16ImGuiDrawContext", !14, i64 0, !14, i64 8, !14, i64 16, !15, i64 24, !15, i64 28, !15, i64 32, !13, i64 36, !13, i64 40, !17, i64 44, !10, i64 60, !18, i64 64, !20, i64 88, !21, i64 112, !21, i64 136, !13, i64 160, !6, i64 168, !15, i64 176, !15, i64 180, !13, i64 184, !13, i64 188, !14, i64 192, !15, i64 200, !15, i64 204, !10, i64 208, !13, i64 212, !21, i64 216}
!17 = !{!"_ZTS9ImGuiAabb", !14, i64 0, !14, i64 8}
!18 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !19, i64 0, !19, i64 8, !6, i64 16}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTS8ImVectorIbE", !19, i64 0, !19, i64 8, !6, i64 16}
!21 = !{!"_ZTS8ImVectorIfE", !19, i64 0, !19, i64 8, !6, i64 16}
!22 = !{!"_ZTS8ImVectorIjE", !19, i64 0, !19, i64 8, !6, i64 16}
!23 = !{!"_ZTS8ImVectorI6ImVec4E", !19, i64 0, !19, i64 8, !6, i64 16}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !19, i64 0, !19, i64 8, !6, i64 16}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!13, !13, i64 0}
!29 = !{!12, !6, i64 264}
!30 = !{!31, !13, i64 3948}
!31 = !{!"_ZTS10ImGuiState", !10, i64 0, !32, i64 8, !33, i64 2960, !6, i64 3672, !15, i64 3680, !14, i64 3684, !15, i64 3692, !13, i64 3696, !13, i64 3700, !18, i64 3704, !6, i64 3728, !18, i64 3736, !6, i64 3760, !6, i64 3768, !6, i64 3776, !13, i64 3784, !13, i64 3788, !13, i64 3792, !10, i64 3796, !10, i64 3797, !6, i64 3800, !15, i64 3808, !34, i64 3816, !35, i64 3840, !36, i64 3864, !37, i64 3888, !14, i64 3912, !13, i64 3920, !14, i64 3924, !13, i64 3932, !10, i64 3936, !13, i64 3940, !10, i64 3944, !10, i64 3945, !13, i64 3948, !38, i64 3952, !18, i64 3976, !39, i64 4000, !13, i64 12400, !24, i64 12408, !13, i64 12432, !7, i64 12436, !6, i64 13464, !10, i64 13472, !6, i64 13480, !6, i64 13488, !13, i64 13496, !13, i64 13500, !7, i64 13504, !13, i64 13984, !15, i64 13988}
!32 = !{!"_ZTS7ImGuiIO", !14, i64 0, !15, i64 8, !15, i64 12, !6, i64 16, !6, i64 24, !15, i64 32, !15, i64 36, !7, i64 40, !6, i64 112, !6, i64 120, !15, i64 128, !10, i64 132, !14, i64 136, !14, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !14, i64 208, !7, i64 216, !15, i64 224, !10, i64 228, !10, i64 229, !10, i64 230, !7, i64 231, !7, i64 744, !10, i64 778, !10, i64 779, !15, i64 780, !14, i64 784, !14, i64 792, !7, i64 800, !7, i64 808, !7, i64 848, !7, i64 868, !7, i64 873, !7, i64 880, !7, i64 900}
!33 = !{!"_ZTS10ImGuiStyle", !15, i64 0, !14, i64 4, !14, i64 12, !15, i64 20, !15, i64 24, !14, i64 28, !15, i64 36, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !15, i64 72, !15, i64 76, !15, i64 80, !15, i64 84, !7, i64 88}
!34 = !{!"_ZTS8ImVectorIP12ImGuiIniDataE", !19, i64 0, !19, i64 8, !6, i64 16}
!35 = !{!"_ZTS8ImVectorI11ImGuiColModE", !19, i64 0, !19, i64 8, !6, i64 16}
!36 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !19, i64 0, !19, i64 8, !6, i64 16}
!37 = !{!"_ZTS8ImVectorIP6ImFontE", !19, i64 0, !19, i64 8, !6, i64 16}
!38 = !{!"_ZTS8ImVectorIP10ImDrawListE", !19, i64 0, !19, i64 8, !6, i64 16}
!39 = !{!"_ZTS18ImGuiTextEditState", !13, i64 0, !7, i64 4, !7, i64 2052, !19, i64 5128, !15, i64 5136, !15, i64 5140, !40, i64 5144, !15, i64 8364, !14, i64 8368, !10, i64 8376, !6, i64 8384, !15, i64 8392}
!40 = !{!"_ZTS17STB_TexteditState", !13, i64 0, !13, i64 4, !13, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !15, i64 20, !41, i64 24}
!41 = !{!"_ZTS12StbUndoState", !7, i64 0, !7, i64 1188, !42, i64 3186, !42, i64 3188, !42, i64 3190, !42, i64 3192}
!42 = !{!"short", !7, i64 0}
!43 = !{!31, !10, i64 3945}
!44 = !{i64 0, i64 4, !45, i64 4, i64 4, !45}
!45 = !{!15, !15, i64 0}
!46 = !{!14, !15, i64 0}
!47 = !{!14, !15, i64 4}
!48 = !{!17, !15, i64 0}
!49 = !{!17, !15, i64 8}
!50 = !{!33, !15, i64 32}
!51 = !{!17, !15, i64 12}
!52 = !{!33, !15, i64 28}
!53 = !{!31, !10, i64 13472}
!54 = !{!12, !13, i64 132}
!55 = !{!31, !13, i64 13500}
!56 = !{!33, !15, i64 36}


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

%struct.ImVec2 = type { float, float }
%struct.ImGuiAabb = type { %struct.ImVec2, %struct.ImVec2 }

@_ZL6GImGui = external hidden local_unnamed_addr global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [36 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui16CollapsingHeaderEPKcS1_bb = external hidden unnamed_addr constant [69 x i8], align 1
@__const._ZN5ImGui16CollapsingHeaderEPKcS1_bb.log_prefix = external hidden unnamed_addr constant [4 x i8], align 1
@__const._ZN5ImGui16CollapsingHeaderEPKcS1_bb.log_suffix = external hidden unnamed_addr constant [3 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; 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 nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480), ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL16GetCurrentWindowv() local_unnamed_addr #5

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui19GetContentRegionMaxEv() local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8ItemSize6ImVec2PS_(<2 x float>, ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL7ItemAddRK9ImGuiAabbPKj(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK9ImGuiAabb7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480), i32 noundef, float noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef, ptr noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float>, i1 noundef zeroext, float noundef, i1 noundef zeroext) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float>, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui16CollapsingHeaderEPKcS1_bb(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %2, i1 noundef zeroext %3) local_unnamed_addr #8 {
  %5 = alloca i32, align 4
  %6 = alloca %struct.ImVec2, align 8
  %7 = alloca %struct.ImVec2, align 8
  %8 = alloca %struct.ImVec2, align 8
  %9 = alloca %struct.ImGuiAabb, align 8
  %10 = alloca %struct.ImVec2, align 4
  %11 = alloca %struct.ImGuiAabb, align 4
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImVec2, align 8
  %14 = alloca %struct.ImVec2, align 4
  %15 = alloca %struct.ImVec2, align 8
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca [4 x i8], align 4
  %19 = alloca %struct.ImVec2, align 8
  %20 = alloca %struct.ImVec2, align 8
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca [3 x i8], align 1
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca %struct.ImVec2, align 4
  %26 = load ptr, ptr @_ZL6GImGui, align 8, !tbaa !5
  %27 = tail call noundef ptr @_ZL16GetCurrentWindowv()
  %28 = getelementptr inbounds i8, ptr %27, i64 68
  %29 = load i8, ptr %28, align 4, !tbaa !9, !range !25, !noundef !26
  %30 = trunc nuw i8 %29 to i1
  br i1 %30, label %171, label %31

31:                                               ; preds = %4
  %32 = icmp ne ptr %1, null
  %33 = icmp ne ptr %0, null
  %34 = or i1 %33, %32
  br i1 %34, label %36, label %35

35:                                               ; preds = %31
  tail call void @__assert_fail(ptr noundef nonnull @.str.88, ptr noundef nonnull @.str.10, i32 noundef 4279, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui16CollapsingHeaderEPKcS1_bb) #9
  unreachable

36:                                               ; preds = %31
  %37 = icmp eq ptr %1, null
  %spec.select = select i1 %37, ptr %0, ptr %1
  %38 = icmp eq ptr %0, null
  %.079 = select i1 %38, ptr %1, ptr %0
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #10
  %39 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %27, ptr noundef %spec.select)
  store i32 %39, ptr %5, align 4, !tbaa !27
  %40 = getelementptr inbounds i8, ptr %27, i64 96
  %41 = getelementptr inbounds i8, ptr %27, i64 264
  %42 = load ptr, ptr %41, align 8, !tbaa !28
  %43 = getelementptr inbounds i8, ptr %26, i64 3948
  %44 = load i32, ptr %43, align 4, !tbaa !29
  %.not = icmp eq i32 %44, 0
  br i1 %.not, label %62, label %45

45:                                               ; preds = %36
  %46 = and i32 %44, 1
  %.not87 = icmp eq i32 %46, 0
  br i1 %.not87, label %51, label %47

47:                                               ; preds = %45
  %48 = getelementptr inbounds i8, ptr %26, i64 3945
  %49 = load i8, ptr %48, align 1, !tbaa !42, !range !25, !noundef !26
  %50 = zext nneg i8 %49 to i32
  tail call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %42, i32 noundef %39, i32 noundef %50)
  br label %61

51:                                               ; preds = %45
  %52 = tail call noundef i32 @_ZNK12ImGuiStorage6GetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %42, i32 noundef %39, i32 noundef -1)
  %53 = icmp eq i32 %52, -1
  br i1 %53, label %54, label %58

54:                                               ; preds = %51
  %55 = getelementptr inbounds i8, ptr %26, i64 3945
  %56 = load i8, ptr %55, align 1, !tbaa !42, !range !25, !noundef !26
  %57 = zext nneg i8 %56 to i32
  tail call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %42, i32 noundef %39, i32 noundef %57)
  br label %61

58:                                               ; preds = %51
  %59 = icmp ne i32 %52, 0
  %60 = zext i1 %59 to i8
  br label %61

61:                                               ; preds = %54, %58, %47
  %.182 = phi i8 [ %49, %47 ], [ %56, %54 ], [ %60, %58 ]
  store i32 0, ptr %43, align 4, !tbaa !29
  br label %67

62:                                               ; preds = %36
  %63 = zext i1 %3 to i32
  %64 = tail call noundef i32 @_ZNK12ImGuiStorage6GetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %42, i32 noundef %39, i32 noundef %63)
  %65 = icmp ne i32 %64, 0
  %66 = zext i1 %65 to i8
  br label %67

67:                                               ; preds = %62, %61
  %.2 = phi i8 [ %.182, %61 ], [ %66, %62 ]
  %68 = tail call <2 x float> @_ZNK11ImGuiWindow13WindowPaddingEv(ptr noundef nonnull align 8 dereferenceable(480) %27)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %69 = tail call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %.079, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %69, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  %70 = load i64, ptr %40, align 8
  store i64 %70, ptr %7, align 8
  %71 = getelementptr inbounds i8, ptr %27, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  %72 = tail call <2 x float> @_ZN5ImGui19GetContentRegionMaxEv()
  store <2 x float> %72, ptr %8, align 8
  %73 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %71, ptr noundef nonnull align 4 dereferenceable(8) %8)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  %.sroa.012.0.vec.extract = extractelement <2 x float> %73, i64 0
  %74 = lshr i64 %70, 32
  %75 = trunc nuw i64 %74 to i32
  %76 = bitcast i32 %75 to float
  %77 = extractelement <2 x float> %69, i64 1
  %78 = fadd float %77, %76
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %.sroa.012.0.vec.extract, float noundef %78)
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %9, ptr noundef nonnull align 4 dereferenceable(8) %7, ptr noundef nonnull align 4 dereferenceable(8) %10)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  br i1 %2, label %79, label %91

79:                                               ; preds = %67
  %.sroa.013.0.vec.extract = extractelement <2 x float> %68, i64 0
  %80 = call float @llvm.fmuladd.f32(float %.sroa.013.0.vec.extract, float 5.000000e-01, float -1.000000e+00)
  %81 = load float, ptr %9, align 8, !tbaa !43
  %82 = fsub float %81, %80
  store float %82, ptr %9, align 8, !tbaa !43
  %83 = getelementptr inbounds i8, ptr %9, i64 8
  %84 = load float, ptr %83, align 8, !tbaa !44
  %85 = fadd float %80, %84
  store float %85, ptr %83, align 8, !tbaa !44
  %86 = getelementptr inbounds i8, ptr %26, i64 2992
  %87 = load float, ptr %86, align 4, !tbaa !45
  %88 = getelementptr inbounds i8, ptr %9, i64 12
  %89 = load float, ptr %88, align 4, !tbaa !46
  %90 = call float @llvm.fmuladd.f32(float %87, float 2.000000e+00, float %89)
  store float %90, ptr %88, align 4, !tbaa !46
  br label %91

91:                                               ; preds = %79, %67
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  %92 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %27)
  %93 = getelementptr inbounds i8, ptr %26, i64 2988
  %94 = load float, ptr %93, align 4, !tbaa !47
  %95 = fmul float %94, 2.000000e+00
  %96 = call float @llvm.fmuladd.f32(float %95, float 2.000000e+00, float %92)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %96, float noundef 0.000000e+00)
  %97 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %14)
  store <2 x float> %97, ptr %13, align 8
  %98 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %6)
  store <2 x float> %98, ptr %12, align 8
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  %99 = call <2 x float> @_ZNK9ImGuiAabb7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  %.sroa.011.0.vec.extract = extractelement <2 x float> %99, i64 0
  %100 = call <2 x float> @_ZNK9ImGuiAabb7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %9)
  %.sroa.010.4.vec.extract = extractelement <2 x float> %100, i64 1
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %.sroa.011.0.vec.extract, float noundef %.sroa.010.4.vec.extract)
  %101 = load <2 x float>, ptr %15, align 8
  call void @_ZL8ItemSize6ImVec2PS_(<2 x float> %101, ptr noundef null)
  %102 = getelementptr inbounds i8, ptr %26, i64 13472
  %103 = load i8, ptr %102, align 8, !tbaa !48, !range !25, !noundef !26
  %104 = trunc nuw i8 %103 to i1
  %.not88 = xor i1 %104, true
  %brmerge = or i1 %.not88, %2
  br i1 %brmerge, label %111, label %105

105:                                              ; preds = %91
  %106 = getelementptr inbounds i8, ptr %27, i64 132
  %107 = load i32, ptr %106, align 4, !tbaa !49
  %108 = getelementptr inbounds i8, ptr %26, i64 13500
  %109 = load i32, ptr %108, align 4, !tbaa !50
  %110 = icmp slt i32 %107, %109
  %spec.select89 = select i1 %110, i8 1, i8 %.2
  br label %111

111:                                              ; preds = %105, %91
  %.3 = phi i8 [ %.2, %91 ], [ %spec.select89, %105 ]
  %112 = call noundef zeroext i1 @_ZL7ItemAddRK9ImGuiAabbPKj(ptr noundef nonnull align 4 dereferenceable(16) %9, ptr noundef nonnull %5)
  br i1 %112, label %113, label %170

113:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #10
  %. = select i1 %2, ptr %9, ptr %11
  %114 = call noundef zeroext i1 @_ZL15ButtonBehaviourRK9ImGuiAabbRKjPbS4_bbb(ptr noundef nonnull align 4 dereferenceable(16) %., ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull %16, ptr noundef nonnull %17, i1 noundef zeroext false, i1 noundef zeroext false, i1 noundef zeroext false)
  br i1 %114, label %115, label %121

115:                                              ; preds = %113
  %116 = trunc nuw i8 %.3 to i1
  %117 = xor i1 %116, true
  %118 = zext i1 %117 to i8
  %119 = load i32, ptr %5, align 4, !tbaa !27
  %120 = zext i1 %117 to i32
  call void @_ZN12ImGuiStorage6SetIntEji(ptr noundef nonnull align 8 dereferenceable(24) %42, i32 noundef %119, i32 noundef %120)
  br label %121

121:                                              ; preds = %115, %113
  %.4 = phi i8 [ %118, %115 ], [ %.3, %113 ]
  %122 = load i8, ptr %17, align 1, !tbaa !51, !range !25, !noundef !26
  %123 = trunc nuw i8 %122 to i1
  %.pre = load i8, ptr %16, align 1, !tbaa !51, !range !25
  %124 = trunc nuw i8 %.pre to i1
  %.not97 = xor i1 %123, true
  %125 = select i1 %123, i1 %124, i1 false
  %.mux = select i1 %.not97, i1 %124, i1 false
  %126 = select i1 %.mux, i32 22, i32 21
  %127 = select i1 %125, i32 23, i32 %126
  %128 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %27, i32 noundef %127, float noundef 1.000000e+00)
  br i1 %2, label %129, label %152

129:                                              ; preds = %121
  %.sroa.07.0.copyload = load <2 x float>, ptr %9, align 8
  %130 = getelementptr inbounds i8, ptr %9, i64 8
  %.sroa.06.0.copyload = load <2 x float>, ptr %130, align 8
  %131 = getelementptr inbounds i8, ptr %26, i64 2996
  %132 = load float, ptr %131, align 4, !tbaa !52
  call void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float> %.sroa.07.0.copyload, <2 x float> %.sroa.06.0.copyload, i32 noundef %128, i1 noundef zeroext true, float noundef %132)
  %133 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %93)
  %134 = trunc nuw i8 %.4 to i1
  call void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float> %133, i1 noundef zeroext %134, float noundef 1.000000e+00, i1 noundef zeroext true)
  %135 = load i8, ptr %102, align 8, !tbaa !48, !range !25, !noundef !26
  %136 = trunc nuw i8 %135 to i1
  br i1 %136, label %137, label %141

137:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #10
  %138 = load i32, ptr @__const._ZN5ImGui16CollapsingHeaderEPKcS1_bb.log_prefix, align 1
  store i32 %138, ptr %18, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %139 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %93)
  store <2 x float> %139, ptr %19, align 8
  %140 = getelementptr inbounds i8, ptr %18, i64 3
  call void @_ZL7LogTextRK6ImVec2PKcS3_(ptr noundef nonnull align 4 dereferenceable(8) %19, ptr noundef nonnull %18, ptr noundef nonnull %140)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #10
  br label %141

141:                                              ; preds = %137, %129
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  %142 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %93)
  store <2 x float> %142, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  %143 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %27)
  %144 = load float, ptr %93, align 4, !tbaa !47
  %145 = call float @llvm.fmuladd.f32(float %144, float 2.000000e+00, float %143)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef %145, float noundef 0.000000e+00)
  %146 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %21)
  call void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float> %146, ptr noundef %.079, ptr noundef null, i1 noundef zeroext true)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  %147 = load i8, ptr %102, align 8, !tbaa !48, !range !25, !noundef !26
  %148 = trunc nuw i8 %147 to i1
  br i1 %148, label %149, label %169

149:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %22) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %22, ptr noundef nonnull align 1 dereferenceable(3) @__const._ZN5ImGui16CollapsingHeaderEPKcS1_bb.log_suffix, i64 3, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  %150 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %93)
  store <2 x float> %150, ptr %23, align 8
  %151 = getelementptr inbounds i8, ptr %22, i64 2
  call void @_ZL7LogTextRK6ImVec2PKcS3_(ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef nonnull %22, ptr noundef nonnull %151)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %22) #10
  br label %169

152:                                              ; preds = %121
  %.pre90 = load i8, ptr %16, align 1, !tbaa !51, !range !25
  %153 = trunc nuw i8 %.pre90 to i1
  br i1 %153, label %154, label %.thread

154:                                              ; preds = %152
  %.sroa.03.0.copyload = load <2 x float>, ptr %9, align 8
  %155 = getelementptr inbounds i8, ptr %9, i64 8
  %.sroa.02.0.copyload = load <2 x float>, ptr %155, align 8
  call void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float> %.sroa.03.0.copyload, <2 x float> %.sroa.02.0.copyload, i32 noundef %128, i1 noundef zeroext false, float noundef 0.000000e+00)
  br label %.thread

.thread:                                          ; preds = %152, %154
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  %156 = load float, ptr %93, align 4, !tbaa !47
  %157 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %27)
  %158 = fmul float %157, 0x3FC3333340000000
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef %156, float noundef %158)
  %159 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %24)
  %160 = trunc nuw i8 %.4 to i1
  call void @_ZL22RenderCollapseTriangle6ImVec2bfb(<2 x float> %159, i1 noundef zeroext %160, float noundef 0x3FE6666660000000, i1 noundef zeroext false)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  %161 = load i8, ptr %102, align 8, !tbaa !48, !range !25, !noundef !26
  %162 = trunc nuw i8 %161 to i1
  br i1 %162, label %163, label %164

163:                                              ; preds = %.thread
  call void @_ZL7LogTextRK6ImVec2PKcS3_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull @.str.89, ptr noundef null)
  br label %164

164:                                              ; preds = %163, %.thread
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  %165 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %27)
  %166 = load float, ptr %93, align 4, !tbaa !47
  %167 = call float @llvm.fmuladd.f32(float %166, float 2.000000e+00, float %165)
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef %167, float noundef 0.000000e+00)
  %168 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %25)
  call void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float> %168, ptr noundef %.079, ptr noundef null, i1 noundef zeroext true)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  br label %169

169:                                              ; preds = %141, %149, %164
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  br label %170

170:                                              ; preds = %111, %169
  %.0.in = phi i8 [ %.4, %169 ], [ %.3, %111 ]
  %.0 = trunc nuw i8 %.0.in to i1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10
  br label %171

171:                                              ; preds = %4, %170
  %.1 = phi i1 [ %.0, %170 ], [ false, %4 ]
  ret i1 %.1
}

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL7LogTextRK6ImVec2PKcS3_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef, ptr noundef) local_unnamed_addr #4

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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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 #6 = { noreturn 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 #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "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 #8 = { mustprogress uwtable "min-legal-vector-width"="64" "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 #9 = { noreturn nounwind }
attributes #10 = { 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, !14, i64 68}
!10 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !11, i64 8, !11, i64 12, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !13, i64 56, !13, i64 60, !14, i64 64, !14, i64 65, !14, i64 66, !14, i64 67, !14, i64 68, !11, i64 72, !14, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !15, i64 96, !21, i64 336, !22, i64 360, !16, i64 384, !11, i64 400, !13, i64 404, !23, i64 408, !13, i64 432, !6, i64 440, !6, i64 448, !11, i64 456, !11, i64 460, !11, i64 464, !11, i64 468, !11, i64 472, !11, i64 476}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS6ImVec2", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS16ImGuiDrawContext", !12, i64 0, !12, i64 8, !12, i64 16, !13, i64 24, !13, i64 28, !13, i64 32, !11, i64 36, !11, i64 40, !16, i64 44, !14, i64 60, !17, i64 64, !19, i64 88, !20, i64 112, !20, i64 136, !11, i64 160, !6, i64 168, !13, i64 176, !13, i64 180, !11, i64 184, !11, i64 188, !12, i64 192, !13, i64 200, !13, i64 204, !14, i64 208, !11, i64 212, !20, i64 216}
!16 = !{!"_ZTS9ImGuiAabb", !12, i64 0, !12, i64 8}
!17 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !18, i64 0, !18, i64 8, !6, i64 16}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTS8ImVectorIbE", !18, i64 0, !18, i64 8, !6, i64 16}
!20 = !{!"_ZTS8ImVectorIfE", !18, i64 0, !18, i64 8, !6, i64 16}
!21 = !{!"_ZTS8ImVectorIjE", !18, i64 0, !18, i64 8, !6, i64 16}
!22 = !{!"_ZTS8ImVectorI6ImVec4E", !18, i64 0, !18, i64 8, !6, i64 16}
!23 = !{!"_ZTS12ImGuiStorage", !24, i64 0}
!24 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !18, i64 0, !18, i64 8, !6, i64 16}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = !{!11, !11, i64 0}
!28 = !{!10, !6, i64 264}
!29 = !{!30, !11, i64 3948}
!30 = !{!"_ZTS10ImGuiState", !14, i64 0, !31, i64 8, !32, i64 2960, !6, i64 3672, !13, i64 3680, !12, i64 3684, !13, i64 3692, !11, i64 3696, !11, i64 3700, !17, i64 3704, !6, i64 3728, !17, i64 3736, !6, i64 3760, !6, i64 3768, !6, i64 3776, !11, i64 3784, !11, i64 3788, !11, i64 3792, !14, i64 3796, !14, i64 3797, !6, i64 3800, !13, i64 3808, !33, i64 3816, !34, i64 3840, !35, i64 3864, !36, i64 3888, !12, i64 3912, !11, i64 3920, !12, i64 3924, !11, i64 3932, !14, i64 3936, !11, i64 3940, !14, i64 3944, !14, i64 3945, !11, i64 3948, !37, i64 3952, !17, i64 3976, !38, i64 4000, !11, i64 12400, !23, i64 12408, !11, i64 12432, !7, i64 12436, !6, i64 13464, !14, i64 13472, !6, i64 13480, !6, i64 13488, !11, i64 13496, !11, i64 13500, !7, i64 13504, !11, i64 13984, !13, i64 13988}
!31 = !{!"_ZTS7ImGuiIO", !12, i64 0, !13, i64 8, !13, i64 12, !6, i64 16, !6, i64 24, !13, i64 32, !13, i64 36, !7, i64 40, !6, i64 112, !6, i64 120, !13, i64 128, !14, i64 132, !12, i64 136, !12, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !12, i64 208, !7, i64 216, !13, i64 224, !14, i64 228, !14, i64 229, !14, i64 230, !7, i64 231, !7, i64 744, !14, i64 778, !14, i64 779, !13, i64 780, !12, i64 784, !12, i64 792, !7, i64 800, !7, i64 808, !7, i64 848, !7, i64 868, !7, i64 873, !7, i64 880, !7, i64 900}
!32 = !{!"_ZTS10ImGuiStyle", !13, i64 0, !12, i64 4, !12, i64 12, !13, i64 20, !13, i64 24, !12, i64 28, !13, i64 36, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !7, i64 88}
!33 = !{!"_ZTS8ImVectorIP12ImGuiIniDataE", !18, i64 0, !18, i64 8, !6, i64 16}
!34 = !{!"_ZTS8ImVectorI11ImGuiColModE", !18, i64 0, !18, i64 8, !6, i64 16}
!35 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !18, i64 0, !18, i64 8, !6, i64 16}
!36 = !{!"_ZTS8ImVectorIP6ImFontE", !18, i64 0, !18, i64 8, !6, i64 16}
!37 = !{!"_ZTS8ImVectorIP10ImDrawListE", !18, i64 0, !18, i64 8, !6, i64 16}
!38 = !{!"_ZTS18ImGuiTextEditState", !11, i64 0, !7, i64 4, !7, i64 2052, !18, i64 5128, !13, i64 5136, !13, i64 5140, !39, i64 5144, !13, i64 8364, !12, i64 8368, !14, i64 8376, !6, i64 8384, !13, i64 8392}
!39 = !{!"_ZTS17STB_TexteditState", !11, i64 0, !11, i64 4, !11, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !13, i64 20, !40, i64 24}
!40 = !{!"_ZTS12StbUndoState", !7, i64 0, !7, i64 1188, !41, i64 3186, !41, i64 3188, !41, i64 3190, !41, i64 3192}
!41 = !{!"short", !7, i64 0}
!42 = !{!30, !14, i64 3945}
!43 = !{!16, !13, i64 0}
!44 = !{!16, !13, i64 8}
!45 = !{!32, !13, i64 32}
!46 = !{!16, !13, i64 12}
!47 = !{!32, !13, i64 28}
!48 = !{!30, !14, i64 13472}
!49 = !{!10, !11, i64 132}
!50 = !{!30, !11, i64 13500}
!51 = !{!14, !14, i64 0}
!52 = !{!32, !13, i64 36}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass