; LLVM IR from Eukky/TRender :: lib/imgui (imgui)

; 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.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiTextEditCallbackData = type { i32, i32, ptr, i8, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiWindow = type { ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImGuiWindowTempData, %class.ImVector.22, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32, float, %struct.ImGuiMenuColumns, %struct.ImGuiStorage, %class.ImVector.23, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i32, i32, i32, i32, i32, i32 }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i8, i8, i32, i32, i32, i32, i8, %struct.ImVec2, %class.ImVector, ptr, i32, i32, i32, float, float, %class.ImVector.20, %class.ImVector.16, %class.ImVector.16, %class.ImVector.21, [6 x i32], float, float, float, ptr }
%class.ImVector = type { i32, i32, ptr }
%class.ImVector.20 = type { i32, i32, ptr }
%class.ImVector.16 = type { i32, i32, ptr }
%class.ImVector.21 = type { i32, i32, ptr }
%class.ImVector.22 = type { i32, i32, ptr }
%struct.ImGuiMenuColumns = type { i32, float, float, float, [4 x float], [4 x float] }
%struct.ImGuiStorage = type { %class.ImVector.0 }
%class.ImVector.0 = type { i32, i32, ptr }
%class.ImVector.23 = type { i32, i32, ptr }
%struct.ImDrawList = type { %class.ImVector.6, %class.ImVector.7, %class.ImVector.8, i32, ptr, ptr, i32, ptr, ptr, %class.ImVector.9, %class.ImVector.10, %class.ImVector.11, i32, i32, %class.ImVector.12 }
%class.ImVector.6 = type { i32, i32, ptr }
%class.ImVector.7 = type { i32, i32, ptr }
%class.ImVector.8 = type { i32, i32, ptr }
%class.ImVector.9 = type { i32, i32, ptr }
%class.ImVector.10 = type { i32, i32, ptr }
%class.ImVector.11 = type { i32, i32, ptr }
%class.ImVector.12 = type { i32, i32, ptr }
%struct.ImGuiContext = type <{ i8, i8, [6 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, float, i32, i32, i32, %class.ImVector, %class.ImVector, %class.ImVector, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, i32, i8, [3 x i8], i32, float, i32, i32, float, i8, i8, i8, i8, i8, i8, [2 x i8], i32, %struct.ImVec2, ptr, ptr, i32, i32, float, [4 x i8], ptr, %class.ImVector.1, %class.ImVector.2, %class.ImVector.3, %class.ImVector.4, %class.ImVector.4, %struct.ImGuiNextWindowData, i8, [3 x i8], i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, ptr, float, float, i8, [3 x i8], i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, i32, i8, [3 x i8], i32, i32, %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, %class.ImVector.13, [8 x i8], %struct.ImGuiTextEditState, %struct.ImFont, i32, i32, %struct.ImVec4, i8, [3 x i8], float, float, %struct.ImVec2, i32, %class.ImVector.14, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, %struct.ImGuiTextBuffer, %class.ImVector.17, %class.ImVector.18, i8, [7 x i8], ptr, %struct.ImGuiTextBuffer, i32, i32, [120 x float], i32, float, i32, i32, i32, [3073 x i8], [3 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [21 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, i8, [512 x i8], [17 x i16], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [5 x %struct.ImVec2], [5 x float], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float] }
%struct.ImGuiStyle = type { float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, float, [42 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, %struct.ImVec4, [12 x %struct.ImVec2] }
%class.ImVector.1 = type { i32, i32, ptr }
%class.ImVector.2 = type { i32, i32, ptr }
%class.ImVector.3 = type { i32, i32, ptr }
%class.ImVector.4 = type { i32, i32, ptr }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiNavMoveResult = type <{ i32, [4 x i8], ptr, float, float, float, %struct.ImRect, [4 x i8] }>
%struct.ImDrawData = type <{ i8, [7 x i8], ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImDrawDataBuilder = type { [2 x %class.ImVector.5] }
%class.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%class.ImVector.13 = type { i32, i32, ptr }
%struct.ImGuiTextEditState = type <{ i32, [4 x i8], %class.ImVector.7, %class.ImVector.14, %class.ImVector.14, i32, i32, i32, float, %"struct.ImGuiStb::STB_TexteditState", float, i8, i8, [6 x i8] }>
%"struct.ImGuiStb::STB_TexteditState" = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImGuiStb::StbUndoState" }
%"struct.ImGuiStb::StbUndoState" = type { [99 x %"struct.ImGuiStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImGuiStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type { float, float, %struct.ImVec2, %class.ImVector.15, %class.ImVector.16, %class.ImVector.7, ptr, float, i16, i16, ptr, ptr, float, float, i8, i32 }
%class.ImVector.15 = type { i32, i32, ptr }
%class.ImVector.14 = type { i32, i32, ptr }
%class.ImVector.17 = type { i32, i32, ptr }
%class.ImVector.18 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %class.ImVector.14 }
%struct.ImFontGlyph = type { i16, float, float, float, float, float, float, float, float, float }

@GImGui = external dso_local global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv = external hidden unnamed_addr constant [119 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [59 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv.searches_result_line_number = external hidden unnamed_addr constant [2 x i32], align 4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8)) 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: 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 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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #0

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

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

; 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)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMinIfET_S0_S0_(float noundef, float noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z9ImStrncpyPcPKcm(ptr noundef, ptr noundef, i64 noundef) #0

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef, ptr noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef, float noundef) #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL6ImFmodff(float noundef, float noundef) #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui7MemFreeEPv(ptr noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #10 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef, float noundef) #6

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef, ptr noundef) #11

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui13ClearActiveIDEv() #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui20MarkItemValueChangedEj(i32 noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) #11

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowjb(ptr noundef, i32 noundef, i1 noundef zeroext) #8

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef, i1 noundef zeroext) #0

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float>, float noundef, float noundef) #11

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui16GetClipboardTextEv() #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #8

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) #8

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef, float noundef) #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN5ImGui16GetCurrentWindowEv() #6

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

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

declare void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) #12

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL15LogRenderedTextPK6ImVec2PKcS3_(ptr noundef, ptr noundef, ptr noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) #11

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #12

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef) #11

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13EndChildFrameEv() #8

declare void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef) #12

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13GetScrollMaxYEv() #8

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13CalcItemWidthEv() #11

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui7PopFontEv() #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN5ImGui17GetTextLineHeightEv() #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef nonnull align 4 dereferenceable(8) %3, i32 noundef %4, ptr noundef %5, ptr noundef %6) #11 {
  %8 = alloca i1, align 1
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca i32, align 4
  %26 = alloca %struct.ImVec2, align 4
  %27 = alloca %struct.ImVec2, align 4
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca %struct.ImRect, align 4
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImRect, align 4
  %32 = alloca %struct.ImVec2, align 4
  %33 = alloca %struct.ImVec2, align 4
  %34 = alloca ptr, align 8
  %35 = alloca %struct.ImVec2, align 4
  %36 = alloca i8, align 1
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i8, align 1
  %41 = alloca i8, align 1
  %42 = alloca i8, align 1
  %43 = alloca i8, align 1
  %44 = alloca i8, align 1
  %45 = alloca i8, align 1
  %46 = alloca i8, align 1
  %47 = alloca i8, align 1
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca i8, align 1
  %51 = alloca i8, align 1
  %52 = alloca i8, align 1
  %53 = alloca ptr, align 8
  %54 = alloca float, align 4
  %55 = alloca float, align 4
  %56 = alloca i8, align 1
  %57 = alloca i8, align 1
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i8, align 1
  %61 = alloca i32, align 4
  %62 = alloca i8, align 1
  %63 = alloca i8, align 1
  %64 = alloca i8, align 1
  %65 = alloca i8, align 1
  %66 = alloca i8, align 1
  %67 = alloca i8, align 1
  %68 = alloca i8, align 1
  %69 = alloca i8, align 1
  %70 = alloca i8, align 1
  %71 = alloca i8, align 1
  %72 = alloca i8, align 1
  %73 = alloca i8, align 1
  %74 = alloca i8, align 1
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca ptr, align 8
  %80 = alloca i32, align 4
  %81 = alloca ptr, align 8
  %82 = alloca i32, align 4
  %83 = alloca ptr, align 8
  %84 = alloca i32, align 4
  %85 = alloca i8, align 1
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca %struct.ImGuiTextEditCallbackData, align 8
  %89 = alloca ptr, align 8
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca ptr, align 8
  %94 = alloca %struct.ImVec2, align 4
  %95 = alloca %struct.ImVec2, align 4
  %96 = alloca %struct.ImVec4, align 4
  %97 = alloca %struct.ImVec2, align 4
  %98 = alloca %struct.ImVec2, align 4
  %99 = alloca i8, align 1
  %100 = alloca ptr, align 8
  %101 = alloca %struct.ImVec2, align 4
  %102 = alloca %struct.ImVec2, align 4
  %103 = alloca [2 x ptr], align 16
  %104 = alloca i32, align 4
  %105 = alloca [2 x i32], align 4
  %106 = alloca i32, align 4
  %107 = alloca ptr, align 8
  %108 = alloca %struct.ImVec2, align 4
  %109 = alloca %struct.ImVec2, align 4
  %110 = alloca %struct.ImVec2, align 4
  %111 = alloca float, align 4
  %112 = alloca float, align 4
  %113 = alloca %struct.ImVec2, align 4
  %114 = alloca ptr, align 8
  %115 = alloca ptr, align 8
  %116 = alloca float, align 4
  %117 = alloca float, align 4
  %118 = alloca i32, align 4
  %119 = alloca %struct.ImVec2, align 4
  %120 = alloca %struct.ImVec2, align 4
  %121 = alloca ptr, align 8
  %122 = alloca %struct.ImVec2, align 4
  %123 = alloca %struct.ImRect, align 4
  %124 = alloca %struct.ImVec2, align 4
  %125 = alloca %struct.ImVec2, align 4
  %126 = alloca %struct.ImVec2, align 4
  %127 = alloca %struct.ImVec2, align 4
  %128 = alloca %struct.ImRect, align 4
  %129 = alloca %struct.ImRect, align 4
  %130 = alloca %struct.ImVec2, align 4
  %131 = alloca i8, align 1
  %132 = alloca %struct.ImVec2, align 4
  %133 = alloca %struct.ImVec2, align 4
  %134 = alloca %struct.ImRect, align 4
  %135 = alloca %struct.ImRect, align 4
  %136 = alloca %struct.ImVec2, align 4
  %137 = alloca %struct.ImVec2, align 4
  %138 = alloca ptr, align 8
  %139 = alloca %struct.ImVec2, align 4
  %140 = alloca %struct.ImVec2, align 4
  %141 = alloca %struct.ImVec2, align 4
  %142 = alloca %struct.ImVec2, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store i32 %2, ptr %11, align 4, !tbaa !9
  store ptr %3, ptr %12, align 8, !tbaa !5
  store i32 %4, ptr %13, align 4, !tbaa !9
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #13
  %143 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %143, ptr %16, align 8, !tbaa !5
  %144 = load ptr, ptr %16, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.ImGuiWindow, ptr %144, i32 0, i32 25
  %146 = load i8, ptr %145, align 1, !tbaa !11, !range !35, !noundef !36
  %147 = trunc i8 %146 to i1
  br i1 %147, label %148, label %149

148:                                              ; preds = %7
  store i1 false, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2671

149:                                              ; preds = %7
  %150 = load i32, ptr %13, align 4, !tbaa !9
  %151 = and i32 %150, 128
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %153, label %157

153:                                              ; preds = %149
  %154 = load i32, ptr %13, align 4, !tbaa !9
  %155 = and i32 %154, 1048576
  %156 = icmp ne i32 %155, 0
  br label %157

157:                                              ; preds = %153, %149
  %158 = phi i1 [ false, %149 ], [ %156, %153 ]
  %159 = xor i1 %158, true
  br i1 %159, label %160, label %161

160:                                              ; preds = %157
  br label %163

161:                                              ; preds = %157
  call void @__assert_fail(ptr noundef @.str.167, ptr noundef @.str.3, i32 noundef 10426, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #14
  unreachable

162:                                              ; No predecessors!
  br label %163

163:                                              ; preds = %162, %160
  %164 = load i32, ptr %13, align 4, !tbaa !9
  %165 = and i32 %164, 64
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %167, label %171

167:                                              ; preds = %163
  %168 = load i32, ptr %13, align 4, !tbaa !9
  %169 = and i32 %168, 1024
  %170 = icmp ne i32 %169, 0
  br label %171

171:                                              ; preds = %167, %163
  %172 = phi i1 [ false, %163 ], [ %170, %167 ]
  %173 = xor i1 %172, true
  br i1 %173, label %174, label %175

174:                                              ; preds = %171
  br label %177

175:                                              ; preds = %171
  call void @__assert_fail(ptr noundef @.str.168, ptr noundef @.str.3, i32 noundef 10427, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #14
  unreachable

176:                                              ; No predecessors!
  br label %177

177:                                              ; preds = %176, %174
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  %178 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %178, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %179 = load ptr, ptr %18, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.ImGuiContext, ptr %179, i32 0, i32 3
  store ptr %180, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %181 = load ptr, ptr %18, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.ImGuiContext, ptr %181, i32 0, i32 4
  store ptr %182, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  %183 = load i32, ptr %13, align 4, !tbaa !9
  %184 = and i32 %183, 1048576
  %185 = icmp ne i32 %184, 0
  %186 = zext i1 %185 to i8
  store i8 %186, ptr %21, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  %187 = load i32, ptr %13, align 4, !tbaa !9
  %188 = and i32 %187, 16384
  %189 = icmp eq i32 %188, 0
  %190 = zext i1 %189 to i8
  store i8 %190, ptr %22, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  %191 = load i32, ptr %13, align 4, !tbaa !9
  %192 = and i32 %191, 32768
  %193 = icmp ne i32 %192, 0
  %194 = zext i1 %193 to i8
  store i8 %194, ptr %23, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #13
  %195 = load i32, ptr %13, align 4, !tbaa !9
  %196 = and i32 %195, 65536
  %197 = icmp eq i32 %196, 0
  %198 = zext i1 %197 to i8
  store i8 %198, ptr %24, align 1, !tbaa !37
  %199 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %200 = trunc i8 %199 to i1
  br i1 %200, label %201, label %202

201:                                              ; preds = %177
  call void @_ZN5ImGui10BeginGroupEv()
  br label %202

202:                                              ; preds = %201, %177
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #13
  %203 = load ptr, ptr %16, align 8, !tbaa !5
  %204 = load ptr, ptr %9, align 8, !tbaa !5
  %205 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %203, ptr noundef %204, ptr noundef null)
  store i32 %205, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #13
  %206 = load ptr, ptr %9, align 8, !tbaa !5
  %207 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %206, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %207, ptr %26, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #13
  %208 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %208, i64 8, i1 false), !tbaa.struct !38
  %209 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %210 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %211 = trunc i8 %210 to i1
  br i1 %211, label %212, label %215

212:                                              ; preds = %202
  %213 = call noundef float @_ZN5ImGui17GetTextLineHeightEv()
  %214 = fmul float %213, 8.000000e+00
  br label %218

215:                                              ; preds = %202
  %216 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 1
  %217 = load float, ptr %216, align 4, !tbaa !40
  br label %218

218:                                              ; preds = %215, %212
  %219 = phi float [ %214, %212 ], [ %217, %215 ]
  %220 = load ptr, ptr %20, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.ImGuiStyle, ptr %220, i32 0, i32 10
  %222 = getelementptr inbounds %struct.ImVec2, ptr %221, i32 0, i32 1
  %223 = load float, ptr %222, align 4, !tbaa !41
  %224 = call float @llvm.fmuladd.f32(float %223, float 2.000000e+00, float %219)
  %225 = load <2 x float>, ptr %28, align 4
  %226 = call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %225, float noundef %209, float noundef %224)
  store <2 x float> %226, ptr %27, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #13
  %227 = load ptr, ptr %16, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.ImGuiWindow, ptr %227, i32 0, i32 43
  %229 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %228, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #13
  %230 = load ptr, ptr %16, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.ImGuiWindow, ptr %230, i32 0, i32 43
  %232 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %231, i32 0, i32 0
  %233 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %232, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %233, ptr %30, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %29, ptr noundef nonnull align 4 dereferenceable(8) %229, ptr noundef nonnull align 4 dereferenceable(8) %30)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #13
  %234 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #13
  %235 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #13
  %236 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %237 = load float, ptr %236, align 4, !tbaa !43
  %238 = fcmp ogt float %237, 0.000000e+00
  br i1 %238, label %239, label %247

239:                                              ; preds = %218
  %240 = load ptr, ptr %20, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.ImGuiStyle, ptr %240, i32 0, i32 14
  %242 = getelementptr inbounds %struct.ImVec2, ptr %241, i32 0, i32 0
  %243 = load float, ptr %242, align 4, !tbaa !44
  %244 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %245 = load float, ptr %244, align 4, !tbaa !43
  %246 = fadd float %243, %245
  br label %248

247:                                              ; preds = %218
  br label %248

248:                                              ; preds = %247, %239
  %249 = phi float [ %246, %239 ], [ 0.000000e+00, %247 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %249, float noundef 0.000000e+00)
  %250 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %235, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %250, ptr %32, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %31, ptr noundef nonnull align 4 dereferenceable(8) %234, ptr noundef nonnull align 4 dereferenceable(8) %32)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %251 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %251, ptr %34, align 8, !tbaa !5
  %252 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %253 = trunc i8 %252 to i1
  br i1 %253, label %254, label %280

254:                                              ; preds = %248
  %255 = load i32, ptr %25, align 4, !tbaa !9
  %256 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %31, i32 noundef %255, ptr noundef %29)
  %257 = load i32, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #13
  %258 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %29)
  store <2 x float> %258, ptr %35, align 4
  %259 = call noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef %257, ptr noundef nonnull align 4 dereferenceable(8) %35, i32 noundef 0)
  %260 = xor i1 %259, true
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  br i1 %260, label %261, label %262

261:                                              ; preds = %254
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  store i1 false, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2670

262:                                              ; preds = %254
  %263 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %263, ptr %34, align 8, !tbaa !5
  %264 = load ptr, ptr %34, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.ImGuiWindow, ptr %264, i32 0, i32 43
  %266 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %265, i32 0, i32 18
  %267 = load i32, ptr %266, align 4, !tbaa !45
  %268 = load ptr, ptr %34, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.ImGuiWindow, ptr %268, i32 0, i32 43
  %270 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %269, i32 0, i32 20
  %271 = load i32, ptr %270, align 4, !tbaa !46
  %272 = or i32 %271, %267
  store i32 %272, ptr %270, align 4, !tbaa !46
  %273 = load ptr, ptr %34, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.ImGuiWindow, ptr %273, i32 0, i32 17
  %275 = getelementptr inbounds %struct.ImVec2, ptr %274, i32 0, i32 0
  %276 = load float, ptr %275, align 8, !tbaa !47
  %277 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %278 = load float, ptr %277, align 4, !tbaa !43
  %279 = fsub float %278, %276
  store float %279, ptr %277, align 4, !tbaa !43
  br label %289

280:                                              ; preds = %248
  %281 = load ptr, ptr %20, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.ImGuiStyle, ptr %281, i32 0, i32 10
  %283 = getelementptr inbounds %struct.ImVec2, ptr %282, i32 0, i32 1
  %284 = load float, ptr %283, align 4, !tbaa !41
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %31, float noundef %284)
  %285 = load i32, ptr %25, align 4, !tbaa !9
  %286 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %31, i32 noundef %285, ptr noundef %29)
  br i1 %286, label %288, label %287

287:                                              ; preds = %280
  store i1 false, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2670

288:                                              ; preds = %280
  br label %289

289:                                              ; preds = %288, %262
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #13
  %290 = load i32, ptr %25, align 4, !tbaa !9
  %291 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %29, i32 noundef %290)
  %292 = zext i1 %291 to i8
  store i8 %292, ptr %36, align 1, !tbaa !37
  %293 = load i8, ptr %36, align 1, !tbaa !37, !range !35, !noundef !36
  %294 = trunc i8 %293 to i1
  br i1 %294, label %295, label %298

295:                                              ; preds = %289
  %296 = load ptr, ptr %18, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.ImGuiContext, ptr %296, i32 0, i32 100
  store i32 1, ptr %297, align 8, !tbaa !48
  br label %298

298:                                              ; preds = %295, %289
  %299 = load i8, ptr %23, align 1, !tbaa !37, !range !35, !noundef !36
  %300 = trunc i8 %299 to i1
  br i1 %300, label %301, label %375

301:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %302 = load ptr, ptr %18, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.ImGuiContext, ptr %302, i32 0, i32 5
  %304 = load ptr, ptr %303, align 8, !tbaa !75
  %305 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(112) %304, i16 noundef zeroext 42)
  store ptr %305, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #13
  %306 = load ptr, ptr %18, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.ImGuiContext, ptr %306, i32 0, i32 116
  store ptr %307, ptr %38, align 8, !tbaa !5
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.ImGuiContext, ptr %308, i32 0, i32 5
  %310 = load ptr, ptr %309, align 8, !tbaa !75
  %311 = getelementptr inbounds %struct.ImFont, ptr %310, i32 0, i32 0
  %312 = load float, ptr %311, align 8, !tbaa !76
  %313 = load ptr, ptr %38, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.ImFont, ptr %313, i32 0, i32 0
  store float %312, ptr %314, align 8, !tbaa !76
  %315 = load ptr, ptr %18, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.ImGuiContext, ptr %315, i32 0, i32 5
  %317 = load ptr, ptr %316, align 8, !tbaa !75
  %318 = getelementptr inbounds %struct.ImFont, ptr %317, i32 0, i32 1
  %319 = load float, ptr %318, align 4, !tbaa !77
  %320 = load ptr, ptr %38, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.ImFont, ptr %320, i32 0, i32 1
  store float %319, ptr %321, align 4, !tbaa !77
  %322 = load ptr, ptr %18, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.ImGuiContext, ptr %322, i32 0, i32 5
  %324 = load ptr, ptr %323, align 8, !tbaa !75
  %325 = getelementptr inbounds %struct.ImFont, ptr %324, i32 0, i32 2
  %326 = load ptr, ptr %38, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.ImFont, ptr %326, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %327, ptr align 8 %325, i64 8, i1 false), !tbaa.struct !38
  %328 = load ptr, ptr %18, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.ImGuiContext, ptr %328, i32 0, i32 5
  %330 = load ptr, ptr %329, align 8, !tbaa !75
  %331 = getelementptr inbounds %struct.ImFont, ptr %330, i32 0, i32 12
  %332 = load float, ptr %331, align 8, !tbaa !78
  %333 = load ptr, ptr %38, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.ImFont, ptr %333, i32 0, i32 12
  store float %332, ptr %334, align 8, !tbaa !78
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImGuiContext, ptr %335, i32 0, i32 5
  %337 = load ptr, ptr %336, align 8, !tbaa !75
  %338 = getelementptr inbounds %struct.ImFont, ptr %337, i32 0, i32 13
  %339 = load float, ptr %338, align 4, !tbaa !79
  %340 = load ptr, ptr %38, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.ImFont, ptr %340, i32 0, i32 13
  store float %339, ptr %341, align 4, !tbaa !79
  %342 = load ptr, ptr %18, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ImGuiContext, ptr %342, i32 0, i32 5
  %344 = load ptr, ptr %343, align 8, !tbaa !75
  %345 = getelementptr inbounds %struct.ImFont, ptr %344, i32 0, i32 11
  %346 = load ptr, ptr %345, align 8, !tbaa !80
  %347 = load ptr, ptr %38, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.ImFont, ptr %347, i32 0, i32 11
  store ptr %346, ptr %348, align 8, !tbaa !80
  %349 = load ptr, ptr %37, align 8, !tbaa !5
  %350 = load ptr, ptr %38, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImFont, ptr %350, i32 0, i32 6
  store ptr %349, ptr %351, align 8, !tbaa !81
  %352 = load ptr, ptr %37, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ImFontGlyph, ptr %352, i32 0, i32 1
  %354 = load float, ptr %353, align 4, !tbaa !82
  %355 = load ptr, ptr %38, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.ImFont, ptr %355, i32 0, i32 7
  store float %354, ptr %356, align 8, !tbaa !84
  %357 = load ptr, ptr %38, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.ImFont, ptr %357, i32 0, i32 3
  %359 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %358)
  br i1 %359, label %360, label %368

360:                                              ; preds = %301
  %361 = load ptr, ptr %38, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ImFont, ptr %361, i32 0, i32 4
  %363 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %362)
  br i1 %363, label %364, label %368

364:                                              ; preds = %360
  %365 = load ptr, ptr %38, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.ImFont, ptr %365, i32 0, i32 5
  %367 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %366)
  br label %368

368:                                              ; preds = %364, %360, %301
  %369 = phi i1 [ false, %360 ], [ false, %301 ], [ %367, %364 ]
  br i1 %369, label %370, label %371

370:                                              ; preds = %368
  br label %373

371:                                              ; preds = %368
  call void @__assert_fail(ptr noundef @.str.169, ptr noundef @.str.3, i32 noundef 10483, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #14
  unreachable

372:                                              ; No predecessors!
  br label %373

373:                                              ; preds = %372, %370
  %374 = load ptr, ptr %38, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %374)
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  br label %375

375:                                              ; preds = %373, %298
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  %376 = load ptr, ptr %18, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.ImGuiContext, ptr %376, i32 0, i32 115
  store ptr %377, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #13
  %378 = load ptr, ptr %16, align 8, !tbaa !5
  %379 = load i32, ptr %25, align 4, !tbaa !9
  %380 = load i32, ptr %13, align 4, !tbaa !9
  %381 = and i32 %380, 1088
  %382 = icmp eq i32 %381, 0
  %383 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowjb(ptr noundef %378, i32 noundef %379, i1 noundef zeroext %382)
  %384 = zext i1 %383 to i8
  store i8 %384, ptr %40, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #13
  %385 = load i8, ptr %40, align 1, !tbaa !37, !range !35, !noundef !36
  %386 = trunc i8 %385 to i1
  br i1 %386, label %387, label %395

387:                                              ; preds = %375
  %388 = load ptr, ptr %16, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.ImGuiWindow, ptr %388, i32 0, i32 67
  %390 = load i32, ptr %389, align 8, !tbaa !85
  %391 = load ptr, ptr %16, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.ImGuiWindow, ptr %391, i32 0, i32 69
  %393 = load i32, ptr %392, align 8, !tbaa !86
  %394 = icmp eq i32 %390, %393
  br label %395

395:                                              ; preds = %387, %375
  %396 = phi i1 [ false, %375 ], [ %394, %387 ]
  %397 = zext i1 %396 to i8
  store i8 %397, ptr %41, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #13
  %398 = load i8, ptr %40, align 1, !tbaa !37, !range !35, !noundef !36
  %399 = trunc i8 %398 to i1
  br i1 %399, label %400, label %404

400:                                              ; preds = %395
  %401 = load i8, ptr %41, align 1, !tbaa !37, !range !35, !noundef !36
  %402 = trunc i8 %401 to i1
  %403 = xor i1 %402, true
  br label %404

404:                                              ; preds = %400, %395
  %405 = phi i1 [ false, %395 ], [ %403, %400 ]
  %406 = zext i1 %405 to i8
  store i8 %406, ptr %42, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #13
  %407 = load i8, ptr %36, align 1, !tbaa !37, !range !35, !noundef !36
  %408 = trunc i8 %407 to i1
  br i1 %408, label %409, label %415

409:                                              ; preds = %404
  %410 = load ptr, ptr %19, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.ImGuiIO, ptr %410, i32 0, i32 56
  %412 = getelementptr inbounds [5 x i8], ptr %411, i64 0, i64 0
  %413 = load i8, ptr %412, align 8, !tbaa !37, !range !35, !noundef !36
  %414 = trunc i8 %413 to i1
  br label %415

415:                                              ; preds = %409, %404
  %416 = phi i1 [ false, %404 ], [ %414, %409 ]
  %417 = zext i1 %416 to i8
  store i8 %417, ptr %43, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #13
  %418 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %419 = trunc i8 %418 to i1
  br i1 %419, label %420, label %438

420:                                              ; preds = %415
  %421 = load ptr, ptr %18, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiContext, ptr %421, i32 0, i32 27
  %423 = load i32, ptr %422, align 8, !tbaa !87
  %424 = icmp eq i32 %423, 0
  br i1 %424, label %425, label %438

425:                                              ; preds = %420
  %426 = load ptr, ptr %39, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %426, i32 0, i32 0
  %428 = load i32, ptr %427, align 8, !tbaa !88
  %429 = load i32, ptr %25, align 4, !tbaa !9
  %430 = icmp eq i32 %428, %429
  br i1 %430, label %431, label %438

431:                                              ; preds = %425
  %432 = load ptr, ptr %18, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.ImGuiContext, ptr %432, i32 0, i32 28
  %434 = load i32, ptr %433, align 4, !tbaa !89
  %435 = load ptr, ptr %34, align 8, !tbaa !5
  %436 = call noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %435, ptr noundef @.str.80, ptr noundef null)
  %437 = icmp eq i32 %434, %436
  br label %438

438:                                              ; preds = %431, %425, %420, %415
  %439 = phi i1 [ false, %425 ], [ false, %420 ], [ false, %415 ], [ %437, %431 ]
  %440 = zext i1 %439 to i8
  store i8 %440, ptr %44, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #13
  %441 = load ptr, ptr %18, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.ImGuiContext, ptr %441, i32 0, i32 27
  %443 = load i32, ptr %442, align 8, !tbaa !87
  %444 = load i32, ptr %25, align 4, !tbaa !9
  %445 = icmp ne i32 %443, %444
  br i1 %445, label %446, label %467

446:                                              ; preds = %438
  %447 = load ptr, ptr %18, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.ImGuiContext, ptr %447, i32 0, i32 60
  %449 = load i32, ptr %448, align 8, !tbaa !90
  %450 = load i32, ptr %25, align 4, !tbaa !9
  %451 = icmp eq i32 %449, %450
  br i1 %451, label %465, label %452

452:                                              ; preds = %446
  %453 = load ptr, ptr %18, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.ImGuiContext, ptr %453, i32 0, i32 57
  %455 = load i32, ptr %454, align 4, !tbaa !91
  %456 = load i32, ptr %25, align 4, !tbaa !9
  %457 = icmp eq i32 %455, %456
  br i1 %457, label %458, label %463

458:                                              ; preds = %452
  %459 = load ptr, ptr %18, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.ImGuiContext, ptr %459, i32 0, i32 64
  %461 = load i32, ptr %460, align 8, !tbaa !92
  %462 = icmp eq i32 %461, 3
  br label %463

463:                                              ; preds = %458, %452
  %464 = phi i1 [ false, %452 ], [ %462, %458 ]
  br label %465

465:                                              ; preds = %463, %446
  %466 = phi i1 [ true, %446 ], [ %464, %463 ]
  br label %467

467:                                              ; preds = %465, %438
  %468 = phi i1 [ false, %438 ], [ %466, %465 ]
  %469 = zext i1 %468 to i8
  store i8 %469, ptr %45, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #13
  store i8 0, ptr %46, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #13
  %470 = load ptr, ptr %18, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.ImGuiContext, ptr %470, i32 0, i32 27
  %472 = load i32, ptr %471, align 8, !tbaa !87
  %473 = load i32, ptr %25, align 4, !tbaa !9
  %474 = icmp ne i32 %472, %473
  br i1 %474, label %475, label %486

475:                                              ; preds = %467
  %476 = load i32, ptr %13, align 4, !tbaa !9
  %477 = and i32 %476, 16
  %478 = icmp ne i32 %477, 0
  br i1 %478, label %482, label %479

479:                                              ; preds = %475
  %480 = load i8, ptr %45, align 1, !tbaa !37, !range !35, !noundef !36
  %481 = trunc i8 %480 to i1
  br i1 %481, label %482, label %486

482:                                              ; preds = %479, %475
  %483 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %484 = trunc i8 %483 to i1
  %485 = xor i1 %484, true
  br label %486

486:                                              ; preds = %482, %479, %467
  %487 = phi i1 [ false, %479 ], [ false, %467 ], [ %485, %482 ]
  %488 = zext i1 %487 to i8
  store i8 %488, ptr %47, align 1, !tbaa !37
  %489 = load i8, ptr %40, align 1, !tbaa !37, !range !35, !noundef !36
  %490 = trunc i8 %489 to i1
  br i1 %490, label %500, label %491

491:                                              ; preds = %486
  %492 = load i8, ptr %43, align 1, !tbaa !37, !range !35, !noundef !36
  %493 = trunc i8 %492 to i1
  br i1 %493, label %500, label %494

494:                                              ; preds = %491
  %495 = load i8, ptr %44, align 1, !tbaa !37, !range !35, !noundef !36
  %496 = trunc i8 %495 to i1
  br i1 %496, label %500, label %497

497:                                              ; preds = %494
  %498 = load i8, ptr %45, align 1, !tbaa !37, !range !35, !noundef !36
  %499 = trunc i8 %498 to i1
  br i1 %499, label %500, label %628

500:                                              ; preds = %497, %494, %491, %486
  %501 = load ptr, ptr %18, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImGuiContext, ptr %501, i32 0, i32 27
  %503 = load i32, ptr %502, align 8, !tbaa !87
  %504 = load i32, ptr %25, align 4, !tbaa !9
  %505 = icmp ne i32 %503, %504
  br i1 %505, label %506, label %610

506:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #13
  %507 = load ptr, ptr %39, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %507, i32 0, i32 6
  %509 = load i32, ptr %508, align 4, !tbaa !93
  store i32 %509, ptr %48, align 4, !tbaa !9
  %510 = load ptr, ptr %39, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %510, i32 0, i32 2
  %512 = load i32, ptr %11, align 4, !tbaa !9
  %513 = add nsw i32 %512, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %511, i32 noundef %513)
  %514 = load ptr, ptr %39, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %514, i32 0, i32 3
  %516 = load i32, ptr %11, align 4, !tbaa !9
  %517 = add nsw i32 %516, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %515, i32 noundef %517)
  %518 = load ptr, ptr %39, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %518, i32 0, i32 3
  %520 = getelementptr inbounds %class.ImVector.14, ptr %519, i32 0, i32 2
  %521 = load ptr, ptr %520, align 8, !tbaa !94
  %522 = load ptr, ptr %10, align 8, !tbaa !5
  %523 = load ptr, ptr %39, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %523, i32 0, i32 3
  %525 = getelementptr inbounds %class.ImVector.14, ptr %524, i32 0, i32 0
  %526 = load i32, ptr %525, align 8, !tbaa !95
  %527 = sext i32 %526 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %521, ptr noundef %522, i64 noundef %527)
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #13
  store ptr null, ptr %49, align 8, !tbaa !5
  %528 = load ptr, ptr %39, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %528, i32 0, i32 2
  %530 = getelementptr inbounds %class.ImVector.7, ptr %529, i32 0, i32 2
  %531 = load ptr, ptr %530, align 8, !tbaa !96
  %532 = load ptr, ptr %39, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %532, i32 0, i32 2
  %534 = getelementptr inbounds %class.ImVector.7, ptr %533, i32 0, i32 0
  %535 = load i32, ptr %534, align 8, !tbaa !97
  %536 = load ptr, ptr %10, align 8, !tbaa !5
  %537 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %531, i32 noundef %535, ptr noundef %536, ptr noundef null, ptr noundef %49)
  %538 = load ptr, ptr %39, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %538, i32 0, i32 6
  store i32 %537, ptr %539, align 4, !tbaa !93
  %540 = load ptr, ptr %49, align 8, !tbaa !5
  %541 = load ptr, ptr %10, align 8, !tbaa !5
  %542 = ptrtoint ptr %540 to i64
  %543 = ptrtoint ptr %541 to i64
  %544 = sub i64 %542, %543
  %545 = trunc i64 %544 to i32
  %546 = load ptr, ptr %39, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %546, i32 0, i32 5
  store i32 %545, ptr %547, align 8, !tbaa !98
  %548 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698) %548)
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #13
  %549 = load ptr, ptr %39, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %549, i32 0, i32 0
  %551 = load i32, ptr %550, align 8, !tbaa !88
  %552 = load i32, ptr %25, align 4, !tbaa !9
  %553 = icmp eq i32 %551, %552
  br i1 %553, label %554, label %560

554:                                              ; preds = %506
  %555 = load i32, ptr %48, align 4, !tbaa !9
  %556 = load ptr, ptr %39, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %556, i32 0, i32 6
  %558 = load i32, ptr %557, align 4, !tbaa !93
  %559 = icmp eq i32 %555, %558
  br label %560

560:                                              ; preds = %554, %506
  %561 = phi i1 [ false, %506 ], [ %559, %554 ]
  %562 = zext i1 %561 to i8
  store i8 %562, ptr %50, align 1, !tbaa !37
  %563 = load i8, ptr %50, align 1, !tbaa !37, !range !35, !noundef !36
  %564 = trunc i8 %563 to i1
  br i1 %564, label %565, label %567

565:                                              ; preds = %560
  %566 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3698) %566)
  br label %586

567:                                              ; preds = %560
  %568 = load i32, ptr %25, align 4, !tbaa !9
  %569 = load ptr, ptr %39, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %569, i32 0, i32 0
  store i32 %568, ptr %570, align 8, !tbaa !88
  %571 = load ptr, ptr %39, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %571, i32 0, i32 8
  store float 0.000000e+00, ptr %572, align 4, !tbaa !99
  %573 = load ptr, ptr %39, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %573, i32 0, i32 9
  %575 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %576 = trunc i8 %575 to i1
  %577 = xor i1 %576, true
  %578 = zext i1 %577 to i32
  call void @_ZN8ImGuiStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %574, i32 noundef %578)
  %579 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %580 = trunc i8 %579 to i1
  br i1 %580, label %585, label %581

581:                                              ; preds = %567
  %582 = load i8, ptr %41, align 1, !tbaa !37, !range !35, !noundef !36
  %583 = trunc i8 %582 to i1
  br i1 %583, label %584, label %585

584:                                              ; preds = %581
  store i8 1, ptr %47, align 1, !tbaa !37
  br label %585

585:                                              ; preds = %584, %581, %567
  br label %586

586:                                              ; preds = %585, %565
  %587 = load i32, ptr %13, align 4, !tbaa !9
  %588 = and i32 %587, 8192
  %589 = icmp ne i32 %588, 0
  br i1 %589, label %590, label %594

590:                                              ; preds = %586
  %591 = load ptr, ptr %39, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %591, i32 0, i32 9
  %593 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %592, i32 0, i32 3
  store i8 1, ptr %593, align 4, !tbaa !100
  br label %594

594:                                              ; preds = %590, %586
  %595 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %596 = trunc i8 %595 to i1
  br i1 %596, label %609, label %597

597:                                              ; preds = %594
  %598 = load i8, ptr %42, align 1, !tbaa !37, !range !35, !noundef !36
  %599 = trunc i8 %598 to i1
  br i1 %599, label %608, label %600

600:                                              ; preds = %597
  %601 = load i8, ptr %43, align 1, !tbaa !37, !range !35, !noundef !36
  %602 = trunc i8 %601 to i1
  br i1 %602, label %603, label %609

603:                                              ; preds = %600
  %604 = load ptr, ptr %19, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.ImGuiIO, ptr %604, i32 0, i32 34
  %606 = load i8, ptr %605, align 1, !tbaa !101, !range !35, !noundef !36
  %607 = trunc i8 %606 to i1
  br i1 %607, label %608, label %609

608:                                              ; preds = %603, %597
  store i8 1, ptr %47, align 1, !tbaa !37
  br label %609

609:                                              ; preds = %608, %603, %600, %594
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #13
  br label %610

610:                                              ; preds = %609, %500
  %611 = load i32, ptr %25, align 4, !tbaa !9
  %612 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %611, ptr noundef %612)
  %613 = load i32, ptr %25, align 4, !tbaa !9
  %614 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %613, ptr noundef %614)
  %615 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %615)
  %616 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %617 = trunc i8 %616 to i1
  br i1 %617, label %627, label %618

618:                                              ; preds = %610
  %619 = load i32, ptr %13, align 4, !tbaa !9
  %620 = and i32 %619, 128
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %627, label %622

622:                                              ; preds = %618
  %623 = load ptr, ptr %18, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.ImGuiContext, ptr %623, i32 0, i32 37
  %625 = load i32, ptr %624, align 4, !tbaa !102
  %626 = or i32 %625, 12
  store i32 %626, ptr %624, align 4, !tbaa !102
  br label %627

627:                                              ; preds = %622, %618, %610
  br label %636

628:                                              ; preds = %497
  %629 = load ptr, ptr %19, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.ImGuiIO, ptr %629, i32 0, i32 56
  %631 = getelementptr inbounds [5 x i8], ptr %630, i64 0, i64 0
  %632 = load i8, ptr %631, align 8, !tbaa !37, !range !35, !noundef !36
  %633 = trunc i8 %632 to i1
  br i1 %633, label %634, label %635

634:                                              ; preds = %628
  store i8 1, ptr %46, align 1, !tbaa !37
  br label %635

635:                                              ; preds = %634, %628
  br label %636

636:                                              ; preds = %635, %627
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #13
  store i8 0, ptr %51, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #13
  store i8 0, ptr %52, align 1, !tbaa !37
  %637 = load ptr, ptr %18, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.ImGuiContext, ptr %637, i32 0, i32 27
  %639 = load i32, ptr %638, align 8, !tbaa !87
  %640 = load i32, ptr %25, align 4, !tbaa !9
  %641 = icmp eq i32 %639, %640
  br i1 %641, label %642, label %920

642:                                              ; preds = %636
  %643 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %644 = trunc i8 %643 to i1
  br i1 %644, label %676, label %645

645:                                              ; preds = %642
  %646 = load ptr, ptr %18, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.ImGuiContext, ptr %646, i32 0, i32 31
  %648 = load i8, ptr %647, align 1, !tbaa !103, !range !35, !noundef !36
  %649 = trunc i8 %648 to i1
  br i1 %649, label %676, label %650

650:                                              ; preds = %645
  %651 = load ptr, ptr %39, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %651, i32 0, i32 2
  %653 = load i32, ptr %11, align 4, !tbaa !9
  %654 = add nsw i32 %653, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %652, i32 noundef %654)
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #13
  store ptr null, ptr %53, align 8, !tbaa !5
  %655 = load ptr, ptr %39, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %655, i32 0, i32 2
  %657 = getelementptr inbounds %class.ImVector.7, ptr %656, i32 0, i32 2
  %658 = load ptr, ptr %657, align 8, !tbaa !96
  %659 = load ptr, ptr %39, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %659, i32 0, i32 2
  %661 = getelementptr inbounds %class.ImVector.7, ptr %660, i32 0, i32 0
  %662 = load i32, ptr %661, align 8, !tbaa !97
  %663 = load ptr, ptr %10, align 8, !tbaa !5
  %664 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %658, i32 noundef %662, ptr noundef %663, ptr noundef null, ptr noundef %53)
  %665 = load ptr, ptr %39, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %665, i32 0, i32 6
  store i32 %664, ptr %666, align 4, !tbaa !93
  %667 = load ptr, ptr %53, align 8, !tbaa !5
  %668 = load ptr, ptr %10, align 8, !tbaa !5
  %669 = ptrtoint ptr %667 to i64
  %670 = ptrtoint ptr %668 to i64
  %671 = sub i64 %669, %670
  %672 = trunc i64 %671 to i32
  %673 = load ptr, ptr %39, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %673, i32 0, i32 5
  store i32 %672, ptr %674, align 8, !tbaa !98
  %675 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3698) %675)
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #13
  br label %676

676:                                              ; preds = %650, %645, %642
  %677 = load i32, ptr %11, align 4, !tbaa !9
  %678 = load ptr, ptr %39, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %678, i32 0, i32 7
  store i32 %677, ptr %679, align 8, !tbaa !104
  %680 = load ptr, ptr %19, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.ImGuiIO, ptr %680, i32 0, i32 30
  %682 = getelementptr inbounds [5 x i8], ptr %681, i64 0, i64 0
  %683 = load i8, ptr %682, align 8, !tbaa !37, !range !35, !noundef !36
  %684 = trunc i8 %683 to i1
  %685 = xor i1 %684, true
  %686 = load ptr, ptr %18, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.ImGuiContext, ptr %686, i32 0, i32 32
  %688 = zext i1 %685 to i8
  store i8 %688, ptr %687, align 2, !tbaa !105
  %689 = load ptr, ptr %18, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.ImGuiContext, ptr %689, i32 0, i32 146
  store i32 1, ptr %690, align 8, !tbaa !106
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #13
  %691 = load ptr, ptr %19, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.ImGuiIO, ptr %691, i32 0, i32 29
  %693 = getelementptr inbounds %struct.ImVec2, ptr %692, i32 0, i32 0
  %694 = load float, ptr %693, align 8, !tbaa !107
  %695 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  %696 = getelementptr inbounds %struct.ImVec2, ptr %695, i32 0, i32 0
  %697 = load float, ptr %696, align 4, !tbaa !108
  %698 = fsub float %694, %697
  %699 = load ptr, ptr %20, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.ImGuiStyle, ptr %699, i32 0, i32 10
  %701 = getelementptr inbounds %struct.ImVec2, ptr %700, i32 0, i32 0
  %702 = load float, ptr %701, align 4, !tbaa !109
  %703 = fsub float %698, %702
  %704 = load ptr, ptr %39, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %704, i32 0, i32 8
  %706 = load float, ptr %705, align 4, !tbaa !99
  %707 = fadd float %703, %706
  store float %707, ptr %54, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #13
  %708 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %709 = trunc i8 %708 to i1
  br i1 %709, label %710, label %726

710:                                              ; preds = %676
  %711 = load ptr, ptr %19, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.ImGuiIO, ptr %711, i32 0, i32 29
  %713 = getelementptr inbounds %struct.ImVec2, ptr %712, i32 0, i32 1
  %714 = load float, ptr %713, align 4, !tbaa !110
  %715 = load ptr, ptr %34, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.ImGuiWindow, ptr %715, i32 0, i32 43
  %717 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %716, i32 0, i32 0
  %718 = getelementptr inbounds %struct.ImVec2, ptr %717, i32 0, i32 1
  %719 = load float, ptr %718, align 4, !tbaa !111
  %720 = fsub float %714, %719
  %721 = load ptr, ptr %20, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.ImGuiStyle, ptr %721, i32 0, i32 10
  %723 = getelementptr inbounds %struct.ImVec2, ptr %722, i32 0, i32 1
  %724 = load float, ptr %723, align 4, !tbaa !41
  %725 = fsub float %720, %724
  br label %731

726:                                              ; preds = %676
  %727 = load ptr, ptr %18, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.ImGuiContext, ptr %727, i32 0, i32 6
  %729 = load float, ptr %728, align 8, !tbaa !112
  %730 = fmul float %729, 5.000000e-01
  br label %731

731:                                              ; preds = %726, %710
  %732 = phi float [ %725, %710 ], [ %730, %726 ]
  store float %732, ptr %55, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #13
  %733 = load ptr, ptr %19, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.ImGuiIO, ptr %733, i32 0, i32 21
  %735 = load i8, ptr %734, align 8, !tbaa !113, !range !35, !noundef !36
  %736 = trunc i8 %735 to i1
  %737 = zext i1 %736 to i8
  store i8 %737, ptr %56, align 1, !tbaa !37
  %738 = load i8, ptr %47, align 1, !tbaa !37, !range !35, !noundef !36
  %739 = trunc i8 %738 to i1
  br i1 %739, label %752, label %740

740:                                              ; preds = %731
  %741 = load i8, ptr %36, align 1, !tbaa !37, !range !35, !noundef !36
  %742 = trunc i8 %741 to i1
  br i1 %742, label %743, label %756

743:                                              ; preds = %740
  %744 = load i8, ptr %56, align 1, !tbaa !37, !range !35, !noundef !36
  %745 = trunc i8 %744 to i1
  br i1 %745, label %756, label %746

746:                                              ; preds = %743
  %747 = load ptr, ptr %19, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.ImGuiIO, ptr %747, i32 0, i32 57
  %749 = getelementptr inbounds [5 x i8], ptr %748, i64 0, i64 0
  %750 = load i8, ptr %749, align 1, !tbaa !37, !range !35, !noundef !36
  %751 = trunc i8 %750 to i1
  br i1 %751, label %752, label %756

752:                                              ; preds = %746, %731
  %753 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3698) %753)
  %754 = load ptr, ptr %39, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %754, i32 0, i32 12
  store i8 1, ptr %755, align 1, !tbaa !114
  br label %828

756:                                              ; preds = %746, %743, %740
  %757 = load i8, ptr %36, align 1, !tbaa !37, !range !35, !noundef !36
  %758 = trunc i8 %757 to i1
  br i1 %758, label %759, label %771

759:                                              ; preds = %756
  %760 = load i8, ptr %56, align 1, !tbaa !37, !range !35, !noundef !36
  %761 = trunc i8 %760 to i1
  br i1 %761, label %762, label %771

762:                                              ; preds = %759
  %763 = load ptr, ptr %19, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.ImGuiIO, ptr %763, i32 0, i32 57
  %765 = getelementptr inbounds [5 x i8], ptr %764, i64 0, i64 0
  %766 = load i8, ptr %765, align 1, !tbaa !37, !range !35, !noundef !36
  %767 = trunc i8 %766 to i1
  br i1 %767, label %768, label %771

768:                                              ; preds = %762
  %769 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %769, i32 noundef 65548)
  %770 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %770, i32 noundef 196621)
  br label %827

771:                                              ; preds = %762, %759, %756
  %772 = load ptr, ptr %19, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.ImGuiIO, ptr %772, i32 0, i32 56
  %774 = getelementptr inbounds [5 x i8], ptr %773, i64 0, i64 0
  %775 = load i8, ptr %774, align 8, !tbaa !37, !range !35, !noundef !36
  %776 = trunc i8 %775 to i1
  br i1 %776, label %777, label %793

777:                                              ; preds = %771
  %778 = load ptr, ptr %39, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %778, i32 0, i32 12
  %780 = load i8, ptr %779, align 1, !tbaa !114, !range !35, !noundef !36
  %781 = trunc i8 %780 to i1
  br i1 %781, label %793, label %782

782:                                              ; preds = %777
  %783 = load i8, ptr %36, align 1, !tbaa !37, !range !35, !noundef !36
  %784 = trunc i8 %783 to i1
  br i1 %784, label %785, label %792

785:                                              ; preds = %782
  %786 = load ptr, ptr %39, align 8, !tbaa !5
  %787 = load ptr, ptr %39, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %787, i32 0, i32 9
  %789 = load float, ptr %54, align 4, !tbaa !39
  %790 = load float, ptr %55, align 4, !tbaa !39
  call void @_ZN8ImGuiStbL18stb_textedit_clickEP18ImGuiTextEditStatePNS_17STB_TexteditStateEff(ptr noundef %786, ptr noundef %788, float noundef %789, float noundef %790)
  %791 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698) %791)
  br label %792

792:                                              ; preds = %785, %782
  br label %826

793:                                              ; preds = %777, %771
  %794 = load ptr, ptr %19, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.ImGuiIO, ptr %794, i32 0, i32 30
  %796 = getelementptr inbounds [5 x i8], ptr %795, i64 0, i64 0
  %797 = load i8, ptr %796, align 8, !tbaa !37, !range !35, !noundef !36
  %798 = trunc i8 %797 to i1
  br i1 %798, label %799, label %825

799:                                              ; preds = %793
  %800 = load ptr, ptr %39, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %800, i32 0, i32 12
  %802 = load i8, ptr %801, align 1, !tbaa !114, !range !35, !noundef !36
  %803 = trunc i8 %802 to i1
  br i1 %803, label %825, label %804

804:                                              ; preds = %799
  %805 = load ptr, ptr %19, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.ImGuiIO, ptr %805, i32 0, i32 52
  %807 = getelementptr inbounds %struct.ImVec2, ptr %806, i32 0, i32 0
  %808 = load float, ptr %807, align 4, !tbaa !115
  %809 = fcmp une float %808, 0.000000e+00
  br i1 %809, label %816, label %810

810:                                              ; preds = %804
  %811 = load ptr, ptr %19, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.ImGuiIO, ptr %811, i32 0, i32 52
  %813 = getelementptr inbounds %struct.ImVec2, ptr %812, i32 0, i32 1
  %814 = load float, ptr %813, align 4, !tbaa !116
  %815 = fcmp une float %814, 0.000000e+00
  br i1 %815, label %816, label %825

816:                                              ; preds = %810, %804
  %817 = load ptr, ptr %39, align 8, !tbaa !5
  %818 = load ptr, ptr %39, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %818, i32 0, i32 9
  %820 = load float, ptr %54, align 4, !tbaa !39
  %821 = load float, ptr %55, align 4, !tbaa !39
  call void @_ZN8ImGuiStbL17stb_textedit_dragEP18ImGuiTextEditStatePNS_17STB_TexteditStateEff(ptr noundef %817, ptr noundef %819, float noundef %820, float noundef %821)
  %822 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698) %822)
  %823 = load ptr, ptr %39, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %823, i32 0, i32 11
  store i8 1, ptr %824, align 8, !tbaa !117
  br label %825

825:                                              ; preds = %816, %810, %799, %793
  br label %826

826:                                              ; preds = %825, %792
  br label %827

827:                                              ; preds = %826, %768
  br label %828

828:                                              ; preds = %827, %752
  %829 = load ptr, ptr %39, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %829, i32 0, i32 12
  %831 = load i8, ptr %830, align 1, !tbaa !114, !range !35, !noundef !36
  %832 = trunc i8 %831 to i1
  br i1 %832, label %833, label %842

833:                                              ; preds = %828
  %834 = load ptr, ptr %19, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.ImGuiIO, ptr %834, i32 0, i32 30
  %836 = getelementptr inbounds [5 x i8], ptr %835, i64 0, i64 0
  %837 = load i8, ptr %836, align 8, !tbaa !37, !range !35, !noundef !36
  %838 = trunc i8 %837 to i1
  br i1 %838, label %842, label %839

839:                                              ; preds = %833
  %840 = load ptr, ptr %39, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %840, i32 0, i32 12
  store i8 0, ptr %841, align 1, !tbaa !114
  br label %842

842:                                              ; preds = %839, %833, %828
  %843 = load ptr, ptr %19, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.ImGuiIO, ptr %843, i32 0, i32 39
  %845 = getelementptr inbounds [17 x i16], ptr %844, i64 0, i64 0
  %846 = load i16, ptr %845, align 2, !tbaa !118
  %847 = icmp ne i16 %846, 0
  br i1 %847, label %848, label %919

848:                                              ; preds = %842
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #13
  %849 = load ptr, ptr %19, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.ImGuiIO, ptr %849, i32 0, i32 34
  %851 = load i8, ptr %850, align 1, !tbaa !101, !range !35, !noundef !36
  %852 = trunc i8 %851 to i1
  br i1 %852, label %853, label %858

853:                                              ; preds = %848
  %854 = load ptr, ptr %19, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.ImGuiIO, ptr %854, i32 0, i32 36
  %856 = load i8, ptr %855, align 1, !tbaa !119, !range !35, !noundef !36
  %857 = trunc i8 %856 to i1
  br i1 %857, label %858, label %868

858:                                              ; preds = %853, %848
  %859 = load i8, ptr %56, align 1, !tbaa !37, !range !35, !noundef !36
  %860 = trunc i8 %859 to i1
  br i1 %860, label %861, label %866

861:                                              ; preds = %858
  %862 = load ptr, ptr %19, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.ImGuiIO, ptr %862, i32 0, i32 37
  %864 = load i8, ptr %863, align 4, !tbaa !120, !range !35, !noundef !36
  %865 = trunc i8 %864 to i1
  br label %866

866:                                              ; preds = %861, %858
  %867 = phi i1 [ false, %858 ], [ %865, %861 ]
  br label %868

868:                                              ; preds = %866, %853
  %869 = phi i1 [ true, %853 ], [ %867, %866 ]
  %870 = zext i1 %869 to i8
  store i8 %870, ptr %57, align 1, !tbaa !37
  %871 = load i8, ptr %57, align 1, !tbaa !37, !range !35, !noundef !36
  %872 = trunc i8 %871 to i1
  br i1 %872, label %914, label %873

873:                                              ; preds = %868
  %874 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %875 = trunc i8 %874 to i1
  br i1 %875, label %876, label %914

876:                                              ; preds = %873
  %877 = load i8, ptr %45, align 1, !tbaa !37, !range !35, !noundef !36
  %878 = trunc i8 %877 to i1
  br i1 %878, label %914, label %879

879:                                              ; preds = %876
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #13
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %880

880:                                              ; preds = %910, %879
  %881 = load i32, ptr %58, align 4, !tbaa !9
  %882 = icmp slt i32 %881, 17
  br i1 %882, label %883, label %891

883:                                              ; preds = %880
  %884 = load ptr, ptr %19, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.ImGuiIO, ptr %884, i32 0, i32 39
  %886 = load i32, ptr %58, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds [17 x i16], ptr %885, i64 0, i64 %887
  %889 = load i16, ptr %888, align 2, !tbaa !118
  %890 = icmp ne i16 %889, 0
  br label %891

891:                                              ; preds = %883, %880
  %892 = phi i1 [ false, %880 ], [ %890, %883 ]
  br i1 %892, label %894, label %893

893:                                              ; preds = %891
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #13
  br label %913

894:                                              ; preds = %891
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #13
  %895 = load ptr, ptr %19, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.ImGuiIO, ptr %895, i32 0, i32 39
  %897 = load i32, ptr %58, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds [17 x i16], ptr %896, i64 0, i64 %898
  %900 = load i16, ptr %899, align 2, !tbaa !118
  %901 = zext i16 %900 to i32
  store i32 %901, ptr %59, align 4, !tbaa !9
  %902 = load i32, ptr %13, align 4, !tbaa !9
  %903 = load ptr, ptr %14, align 8, !tbaa !5
  %904 = load ptr, ptr %15, align 8, !tbaa !5
  %905 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %59, i32 noundef %902, ptr noundef %903, ptr noundef %904)
  br i1 %905, label %906, label %909

906:                                              ; preds = %894
  %907 = load ptr, ptr %39, align 8, !tbaa !5
  %908 = load i32, ptr %59, align 4, !tbaa !9
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %907, i32 noundef %908)
  br label %909

909:                                              ; preds = %906, %894
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #13
  br label %910

910:                                              ; preds = %909
  %911 = load i32, ptr %58, align 4, !tbaa !9
  %912 = add nsw i32 %911, 1
  store i32 %912, ptr %58, align 4, !tbaa !9
  br label %880, !llvm.loop !121

913:                                              ; preds = %893
  br label %914

914:                                              ; preds = %913, %876, %873, %868
  %915 = load ptr, ptr %18, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImGuiContext, ptr %915, i32 0, i32 3
  %917 = getelementptr inbounds %struct.ImGuiIO, ptr %916, i32 0, i32 39
  %918 = getelementptr inbounds [17 x i16], ptr %917, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 2 %918, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #13
  br label %919

919:                                              ; preds = %914, %842
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #13
  br label %920

920:                                              ; preds = %919, %636
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #13
  store i8 0, ptr %60, align 1, !tbaa !37
  %921 = load ptr, ptr %18, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.ImGuiContext, ptr %921, i32 0, i32 27
  %923 = load i32, ptr %922, align 8, !tbaa !87
  %924 = load i32, ptr %25, align 4, !tbaa !9
  %925 = icmp eq i32 %923, %924
  br i1 %925, label %926, label %1636

926:                                              ; preds = %920
  %927 = load ptr, ptr %18, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImGuiContext, ptr %927, i32 0, i32 31
  %929 = load i8, ptr %928, align 1, !tbaa !103, !range !35, !noundef !36
  %930 = trunc i8 %929 to i1
  br i1 %930, label %1636, label %931

931:                                              ; preds = %926
  %932 = load i8, ptr %46, align 1, !tbaa !37, !range !35, !noundef !36
  %933 = trunc i8 %932 to i1
  br i1 %933, label %1636, label %934

934:                                              ; preds = %931
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  %935 = load ptr, ptr %19, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.ImGuiIO, ptr %935, i32 0, i32 35
  %937 = load i8, ptr %936, align 2, !tbaa !123, !range !35, !noundef !36
  %938 = trunc i8 %937 to i1
  %939 = zext i1 %938 to i64
  %940 = select i1 %938, i32 131072, i32 0
  store i32 %940, ptr %61, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #13
  %941 = load ptr, ptr %19, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ImGuiIO, ptr %941, i32 0, i32 21
  %943 = load i8, ptr %942, align 8, !tbaa !113, !range !35, !noundef !36
  %944 = trunc i8 %943 to i1
  %945 = zext i1 %944 to i8
  store i8 %945, ptr %62, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #13
  %946 = load i8, ptr %62, align 1, !tbaa !37, !range !35, !noundef !36
  %947 = trunc i8 %946 to i1
  br i1 %947, label %948, label %958

948:                                              ; preds = %934
  %949 = load ptr, ptr %19, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.ImGuiIO, ptr %949, i32 0, i32 37
  %951 = load i8, ptr %950, align 4, !tbaa !120, !range !35, !noundef !36
  %952 = trunc i8 %951 to i1
  br i1 %952, label %953, label %979

953:                                              ; preds = %948
  %954 = load ptr, ptr %19, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiIO, ptr %954, i32 0, i32 34
  %956 = load i8, ptr %955, align 1, !tbaa !101, !range !35, !noundef !36
  %957 = trunc i8 %956 to i1
  br i1 %957, label %979, label %968

958:                                              ; preds = %934
  %959 = load ptr, ptr %19, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ImGuiIO, ptr %959, i32 0, i32 34
  %961 = load i8, ptr %960, align 1, !tbaa !101, !range !35, !noundef !36
  %962 = trunc i8 %961 to i1
  br i1 %962, label %963, label %979

963:                                              ; preds = %958
  %964 = load ptr, ptr %19, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.ImGuiIO, ptr %964, i32 0, i32 37
  %966 = load i8, ptr %965, align 4, !tbaa !120, !range !35, !noundef !36
  %967 = trunc i8 %966 to i1
  br i1 %967, label %979, label %968

968:                                              ; preds = %963, %953
  %969 = load ptr, ptr %19, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.ImGuiIO, ptr %969, i32 0, i32 36
  %971 = load i8, ptr %970, align 1, !tbaa !119, !range !35, !noundef !36
  %972 = trunc i8 %971 to i1
  br i1 %972, label %979, label %973

973:                                              ; preds = %968
  %974 = load ptr, ptr %19, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.ImGuiIO, ptr %974, i32 0, i32 35
  %976 = load i8, ptr %975, align 2, !tbaa !123, !range !35, !noundef !36
  %977 = trunc i8 %976 to i1
  %978 = xor i1 %977, true
  br label %979

979:                                              ; preds = %973, %968, %963, %958, %953, %948
  %980 = phi i1 [ false, %968 ], [ false, %963 ], [ false, %958 ], [ false, %953 ], [ false, %948 ], [ %978, %973 ]
  %981 = zext i1 %980 to i8
  store i8 %981, ptr %63, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #13
  %982 = load i8, ptr %62, align 1, !tbaa !37, !range !35, !noundef !36
  %983 = trunc i8 %982 to i1
  br i1 %983, label %984, label %1005

984:                                              ; preds = %979
  %985 = load ptr, ptr %19, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.ImGuiIO, ptr %985, i32 0, i32 37
  %987 = load i8, ptr %986, align 4, !tbaa !120, !range !35, !noundef !36
  %988 = trunc i8 %987 to i1
  br i1 %988, label %989, label %1005

989:                                              ; preds = %984
  %990 = load ptr, ptr %19, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.ImGuiIO, ptr %990, i32 0, i32 35
  %992 = load i8, ptr %991, align 2, !tbaa !123, !range !35, !noundef !36
  %993 = trunc i8 %992 to i1
  br i1 %993, label %994, label %1005

994:                                              ; preds = %989
  %995 = load ptr, ptr %19, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.ImGuiIO, ptr %995, i32 0, i32 34
  %997 = load i8, ptr %996, align 1, !tbaa !101, !range !35, !noundef !36
  %998 = trunc i8 %997 to i1
  br i1 %998, label %1005, label %999

999:                                              ; preds = %994
  %1000 = load ptr, ptr %19, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.ImGuiIO, ptr %1000, i32 0, i32 36
  %1002 = load i8, ptr %1001, align 1, !tbaa !119, !range !35, !noundef !36
  %1003 = trunc i8 %1002 to i1
  %1004 = xor i1 %1003, true
  br label %1005

1005:                                             ; preds = %999, %994, %989, %984, %979
  %1006 = phi i1 [ false, %994 ], [ false, %989 ], [ false, %984 ], [ false, %979 ], [ %1004, %999 ]
  %1007 = zext i1 %1006 to i8
  store i8 %1007, ptr %64, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #13
  %1008 = load i8, ptr %62, align 1, !tbaa !37, !range !35, !noundef !36
  %1009 = trunc i8 %1008 to i1
  br i1 %1009, label %1010, label %1015

1010:                                             ; preds = %1005
  %1011 = load ptr, ptr %19, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiIO, ptr %1011, i32 0, i32 36
  %1013 = load i8, ptr %1012, align 1, !tbaa !119, !range !35, !noundef !36
  %1014 = trunc i8 %1013 to i1
  br label %1020

1015:                                             ; preds = %1005
  %1016 = load ptr, ptr %19, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.ImGuiIO, ptr %1016, i32 0, i32 34
  %1018 = load i8, ptr %1017, align 1, !tbaa !101, !range !35, !noundef !36
  %1019 = trunc i8 %1018 to i1
  br label %1020

1020:                                             ; preds = %1015, %1010
  %1021 = phi i1 [ %1014, %1010 ], [ %1019, %1015 ]
  %1022 = zext i1 %1021 to i8
  store i8 %1022, ptr %65, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #13
  %1023 = load i8, ptr %62, align 1, !tbaa !37, !range !35, !noundef !36
  %1024 = trunc i8 %1023 to i1
  br i1 %1024, label %1025, label %1041

1025:                                             ; preds = %1020
  %1026 = load ptr, ptr %19, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.ImGuiIO, ptr %1026, i32 0, i32 37
  %1028 = load i8, ptr %1027, align 4, !tbaa !120, !range !35, !noundef !36
  %1029 = trunc i8 %1028 to i1
  br i1 %1029, label %1030, label %1041

1030:                                             ; preds = %1025
  %1031 = load ptr, ptr %19, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.ImGuiIO, ptr %1031, i32 0, i32 34
  %1033 = load i8, ptr %1032, align 1, !tbaa !101, !range !35, !noundef !36
  %1034 = trunc i8 %1033 to i1
  br i1 %1034, label %1041, label %1035

1035:                                             ; preds = %1030
  %1036 = load ptr, ptr %19, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.ImGuiIO, ptr %1036, i32 0, i32 36
  %1038 = load i8, ptr %1037, align 1, !tbaa !119, !range !35, !noundef !36
  %1039 = trunc i8 %1038 to i1
  %1040 = xor i1 %1039, true
  br label %1041

1041:                                             ; preds = %1035, %1030, %1025, %1020
  %1042 = phi i1 [ false, %1030 ], [ false, %1025 ], [ false, %1020 ], [ %1040, %1035 ]
  %1043 = zext i1 %1042 to i8
  store i8 %1043, ptr %66, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #13
  %1044 = load ptr, ptr %19, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiIO, ptr %1044, i32 0, i32 34
  %1046 = load i8, ptr %1045, align 1, !tbaa !101, !range !35, !noundef !36
  %1047 = trunc i8 %1046 to i1
  br i1 %1047, label %1048, label %1064

1048:                                             ; preds = %1041
  %1049 = load ptr, ptr %19, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiIO, ptr %1049, i32 0, i32 35
  %1051 = load i8, ptr %1050, align 2, !tbaa !123, !range !35, !noundef !36
  %1052 = trunc i8 %1051 to i1
  br i1 %1052, label %1064, label %1053

1053:                                             ; preds = %1048
  %1054 = load ptr, ptr %19, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.ImGuiIO, ptr %1054, i32 0, i32 36
  %1056 = load i8, ptr %1055, align 1, !tbaa !119, !range !35, !noundef !36
  %1057 = trunc i8 %1056 to i1
  br i1 %1057, label %1064, label %1058

1058:                                             ; preds = %1053
  %1059 = load ptr, ptr %19, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.ImGuiIO, ptr %1059, i32 0, i32 37
  %1061 = load i8, ptr %1060, align 4, !tbaa !120, !range !35, !noundef !36
  %1062 = trunc i8 %1061 to i1
  %1063 = xor i1 %1062, true
  br label %1064

1064:                                             ; preds = %1058, %1053, %1048, %1041
  %1065 = phi i1 [ false, %1053 ], [ false, %1048 ], [ false, %1041 ], [ %1063, %1058 ]
  %1066 = zext i1 %1065 to i8
  store i8 %1066, ptr %67, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #13
  %1067 = load ptr, ptr %19, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiIO, ptr %1067, i32 0, i32 35
  %1069 = load i8, ptr %1068, align 2, !tbaa !123, !range !35, !noundef !36
  %1070 = trunc i8 %1069 to i1
  br i1 %1070, label %1071, label %1087

1071:                                             ; preds = %1064
  %1072 = load ptr, ptr %19, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.ImGuiIO, ptr %1072, i32 0, i32 34
  %1074 = load i8, ptr %1073, align 1, !tbaa !101, !range !35, !noundef !36
  %1075 = trunc i8 %1074 to i1
  br i1 %1075, label %1087, label %1076

1076:                                             ; preds = %1071
  %1077 = load ptr, ptr %19, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.ImGuiIO, ptr %1077, i32 0, i32 36
  %1079 = load i8, ptr %1078, align 1, !tbaa !119, !range !35, !noundef !36
  %1080 = trunc i8 %1079 to i1
  br i1 %1080, label %1087, label %1081

1081:                                             ; preds = %1076
  %1082 = load ptr, ptr %19, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.ImGuiIO, ptr %1082, i32 0, i32 37
  %1084 = load i8, ptr %1083, align 4, !tbaa !120, !range !35, !noundef !36
  %1085 = trunc i8 %1084 to i1
  %1086 = xor i1 %1085, true
  br label %1087

1087:                                             ; preds = %1081, %1076, %1071, %1064
  %1088 = phi i1 [ false, %1076 ], [ false, %1071 ], [ false, %1064 ], [ %1086, %1081 ]
  %1089 = zext i1 %1088 to i8
  store i8 %1089, ptr %68, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #13
  %1090 = load i8, ptr %63, align 1, !tbaa !37, !range !35, !noundef !36
  %1091 = trunc i8 %1090 to i1
  br i1 %1091, label %1092, label %1094

1092:                                             ; preds = %1087
  %1093 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1093, label %1099, label %1094

1094:                                             ; preds = %1092, %1087
  %1095 = load i8, ptr %68, align 1, !tbaa !37, !range !35, !noundef !36
  %1096 = trunc i8 %1095 to i1
  br i1 %1096, label %1097, label %1113

1097:                                             ; preds = %1094
  %1098 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1098, label %1099, label %1113

1099:                                             ; preds = %1097, %1092
  %1100 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1101 = trunc i8 %1100 to i1
  br i1 %1101, label %1102, label %1113

1102:                                             ; preds = %1099
  %1103 = load i8, ptr %23, align 1, !tbaa !37, !range !35, !noundef !36
  %1104 = trunc i8 %1103 to i1
  br i1 %1104, label %1113, label %1105

1105:                                             ; preds = %1102
  %1106 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %1107 = trunc i8 %1106 to i1
  br i1 %1107, label %1108, label %1111

1108:                                             ; preds = %1105
  %1109 = load ptr, ptr %39, align 8, !tbaa !5
  %1110 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %1109)
  br label %1111

1111:                                             ; preds = %1108, %1105
  %1112 = phi i1 [ true, %1105 ], [ %1110, %1108 ]
  br label %1113

1113:                                             ; preds = %1111, %1102, %1099, %1097, %1094
  %1114 = phi i1 [ false, %1102 ], [ false, %1099 ], [ false, %1097 ], [ false, %1094 ], [ %1112, %1111 ]
  %1115 = zext i1 %1114 to i8
  store i8 %1115, ptr %69, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1116 = load i8, ptr %63, align 1, !tbaa !37, !range !35, !noundef !36
  %1117 = trunc i8 %1116 to i1
  br i1 %1117, label %1118, label %1120

1118:                                             ; preds = %1113
  %1119 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1119, label %1125, label %1120

1120:                                             ; preds = %1118, %1113
  %1121 = load i8, ptr %67, align 1, !tbaa !37, !range !35, !noundef !36
  %1122 = trunc i8 %1121 to i1
  br i1 %1122, label %1123, label %1136

1123:                                             ; preds = %1120
  %1124 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1124, label %1125, label %1136

1125:                                             ; preds = %1123, %1118
  %1126 = load i8, ptr %23, align 1, !tbaa !37, !range !35, !noundef !36
  %1127 = trunc i8 %1126 to i1
  br i1 %1127, label %1136, label %1128

1128:                                             ; preds = %1125
  %1129 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1131, label %1134

1131:                                             ; preds = %1128
  %1132 = load ptr, ptr %39, align 8, !tbaa !5
  %1133 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %1132)
  br label %1134

1134:                                             ; preds = %1131, %1128
  %1135 = phi i1 [ true, %1128 ], [ %1133, %1131 ]
  br label %1136

1136:                                             ; preds = %1134, %1125, %1123, %1120
  %1137 = phi i1 [ false, %1125 ], [ false, %1123 ], [ false, %1120 ], [ %1135, %1134 ]
  %1138 = zext i1 %1137 to i8
  store i8 %1138, ptr %70, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #13
  %1139 = load i8, ptr %63, align 1, !tbaa !37, !range !35, !noundef !36
  %1140 = trunc i8 %1139 to i1
  br i1 %1140, label %1141, label %1143

1141:                                             ; preds = %1136
  %1142 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1142, label %1148, label %1143

1143:                                             ; preds = %1141, %1136
  %1144 = load i8, ptr %68, align 1, !tbaa !37, !range !35, !noundef !36
  %1145 = trunc i8 %1144 to i1
  br i1 %1145, label %1146, label %1151

1146:                                             ; preds = %1143
  %1147 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1147, label %1148, label %1151

1148:                                             ; preds = %1146, %1141
  %1149 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1150 = trunc i8 %1149 to i1
  br label %1151

1151:                                             ; preds = %1148, %1146, %1143
  %1152 = phi i1 [ false, %1146 ], [ false, %1143 ], [ %1150, %1148 ]
  %1153 = zext i1 %1152 to i8
  store i8 %1153, ptr %71, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #13
  %1154 = load i8, ptr %63, align 1, !tbaa !37, !range !35, !noundef !36
  %1155 = trunc i8 %1154 to i1
  br i1 %1155, label %1156, label %1164

1156:                                             ; preds = %1151
  %1157 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1157, label %1158, label %1164

1158:                                             ; preds = %1156
  %1159 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1160 = trunc i8 %1159 to i1
  br i1 %1160, label %1161, label %1164

1161:                                             ; preds = %1158
  %1162 = load i8, ptr %24, align 1, !tbaa !37, !range !35, !noundef !36
  %1163 = trunc i8 %1162 to i1
  br label %1164

1164:                                             ; preds = %1161, %1158, %1156, %1151
  %1165 = phi i1 [ false, %1158 ], [ false, %1156 ], [ false, %1151 ], [ %1163, %1161 ]
  %1166 = zext i1 %1165 to i8
  store i8 %1166, ptr %72, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #13
  %1167 = load i8, ptr %63, align 1, !tbaa !37, !range !35, !noundef !36
  %1168 = trunc i8 %1167 to i1
  br i1 %1168, label %1169, label %1171

1169:                                             ; preds = %1164
  %1170 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %1170, label %1176, label %1171

1171:                                             ; preds = %1169, %1164
  %1172 = load i8, ptr %64, align 1, !tbaa !37, !range !35, !noundef !36
  %1173 = trunc i8 %1172 to i1
  br i1 %1173, label %1174, label %1182

1174:                                             ; preds = %1171
  %1175 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1175, label %1176, label %1182

1176:                                             ; preds = %1174, %1169
  %1177 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1178 = trunc i8 %1177 to i1
  br i1 %1178, label %1179, label %1182

1179:                                             ; preds = %1176
  %1180 = load i8, ptr %24, align 1, !tbaa !37, !range !35, !noundef !36
  %1181 = trunc i8 %1180 to i1
  br label %1182

1182:                                             ; preds = %1179, %1176, %1174, %1171
  %1183 = phi i1 [ false, %1176 ], [ false, %1174 ], [ false, %1171 ], [ %1181, %1179 ]
  %1184 = zext i1 %1183 to i8
  store i8 %1184, ptr %73, align 1, !tbaa !37
  %1185 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1185, label %1186, label %1200

1186:                                             ; preds = %1182
  %1187 = load ptr, ptr %39, align 8, !tbaa !5
  %1188 = load i8, ptr %66, align 1, !tbaa !37, !range !35, !noundef !36
  %1189 = trunc i8 %1188 to i1
  br i1 %1189, label %1190, label %1191

1190:                                             ; preds = %1186
  br label %1196

1191:                                             ; preds = %1186
  %1192 = load i8, ptr %65, align 1, !tbaa !37, !range !35, !noundef !36
  %1193 = trunc i8 %1192 to i1
  %1194 = zext i1 %1193 to i64
  %1195 = select i1 %1193, i32 65548, i32 65536
  br label %1196

1196:                                             ; preds = %1191, %1190
  %1197 = phi i32 [ 65540, %1190 ], [ %1195, %1191 ]
  %1198 = load i32, ptr %61, align 4, !tbaa !9
  %1199 = or i32 %1197, %1198
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1187, i32 noundef %1199)
  br label %1635

1200:                                             ; preds = %1182
  %1201 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1201, label %1202, label %1216

1202:                                             ; preds = %1200
  %1203 = load ptr, ptr %39, align 8, !tbaa !5
  %1204 = load i8, ptr %66, align 1, !tbaa !37, !range !35, !noundef !36
  %1205 = trunc i8 %1204 to i1
  br i1 %1205, label %1206, label %1207

1206:                                             ; preds = %1202
  br label %1212

1207:                                             ; preds = %1202
  %1208 = load i8, ptr %65, align 1, !tbaa !37, !range !35, !noundef !36
  %1209 = trunc i8 %1208 to i1
  %1210 = zext i1 %1209 to i64
  %1211 = select i1 %1209, i32 65549, i32 65537
  br label %1212

1212:                                             ; preds = %1207, %1206
  %1213 = phi i32 [ 65541, %1206 ], [ %1211, %1207 ]
  %1214 = load i32, ptr %61, align 4, !tbaa !9
  %1215 = or i32 %1213, %1214
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1203, i32 noundef %1215)
  br label %1634

1216:                                             ; preds = %1200
  %1217 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1217, label %1218, label %1246

1218:                                             ; preds = %1216
  %1219 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %1220 = trunc i8 %1219 to i1
  br i1 %1220, label %1221, label %1246

1221:                                             ; preds = %1218
  %1222 = load ptr, ptr %19, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiIO, ptr %1222, i32 0, i32 34
  %1224 = load i8, ptr %1223, align 1, !tbaa !101, !range !35, !noundef !36
  %1225 = trunc i8 %1224 to i1
  br i1 %1225, label %1226, label %1237

1226:                                             ; preds = %1221
  %1227 = load ptr, ptr %34, align 8, !tbaa !5
  %1228 = load ptr, ptr %34, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.ImGuiWindow, ptr %1228, i32 0, i32 14
  %1230 = getelementptr inbounds %struct.ImVec2, ptr %1229, i32 0, i32 1
  %1231 = load float, ptr %1230, align 4, !tbaa !124
  %1232 = load ptr, ptr %18, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiContext, ptr %1232, i32 0, i32 6
  %1234 = load float, ptr %1233, align 8, !tbaa !112
  %1235 = fsub float %1231, %1234
  %1236 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1235, float noundef 0.000000e+00)
  call void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef %1227, float noundef %1236)
  br label %1245

1237:                                             ; preds = %1221
  %1238 = load ptr, ptr %39, align 8, !tbaa !5
  %1239 = load i8, ptr %66, align 1, !tbaa !37, !range !35, !noundef !36
  %1240 = trunc i8 %1239 to i1
  %1241 = zext i1 %1240 to i64
  %1242 = select i1 %1240, i32 65542, i32 65538
  %1243 = load i32, ptr %61, align 4, !tbaa !9
  %1244 = or i32 %1242, %1243
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1238, i32 noundef %1244)
  br label %1245

1245:                                             ; preds = %1237, %1226
  br label %1633

1246:                                             ; preds = %1218, %1216
  %1247 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1247, label %1248, label %1277

1248:                                             ; preds = %1246
  %1249 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %1250 = trunc i8 %1249 to i1
  br i1 %1250, label %1251, label %1277

1251:                                             ; preds = %1248
  %1252 = load ptr, ptr %19, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ImGuiIO, ptr %1252, i32 0, i32 34
  %1254 = load i8, ptr %1253, align 1, !tbaa !101, !range !35, !noundef !36
  %1255 = trunc i8 %1254 to i1
  br i1 %1255, label %1256, label %1268

1256:                                             ; preds = %1251
  %1257 = load ptr, ptr %34, align 8, !tbaa !5
  %1258 = load ptr, ptr %34, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.ImGuiWindow, ptr %1258, i32 0, i32 14
  %1260 = getelementptr inbounds %struct.ImVec2, ptr %1259, i32 0, i32 1
  %1261 = load float, ptr %1260, align 4, !tbaa !124
  %1262 = load ptr, ptr %18, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.ImGuiContext, ptr %1262, i32 0, i32 6
  %1264 = load float, ptr %1263, align 8, !tbaa !112
  %1265 = fadd float %1261, %1264
  %1266 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1267 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1265, float noundef %1266)
  call void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef %1257, float noundef %1267)
  br label %1276

1268:                                             ; preds = %1251
  %1269 = load ptr, ptr %39, align 8, !tbaa !5
  %1270 = load i8, ptr %66, align 1, !tbaa !37, !range !35, !noundef !36
  %1271 = trunc i8 %1270 to i1
  %1272 = zext i1 %1271 to i64
  %1273 = select i1 %1271, i32 65543, i32 65539
  %1274 = load i32, ptr %61, align 4, !tbaa !9
  %1275 = or i32 %1273, %1274
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1269, i32 noundef %1275)
  br label %1276

1276:                                             ; preds = %1268, %1256
  br label %1632

1277:                                             ; preds = %1248, %1246
  %1278 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1278, label %1279, label %1293

1279:                                             ; preds = %1277
  %1280 = load ptr, ptr %39, align 8, !tbaa !5
  %1281 = load ptr, ptr %19, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.ImGuiIO, ptr %1281, i32 0, i32 34
  %1283 = load i8, ptr %1282, align 1, !tbaa !101, !range !35, !noundef !36
  %1284 = trunc i8 %1283 to i1
  br i1 %1284, label %1285, label %1288

1285:                                             ; preds = %1279
  %1286 = load i32, ptr %61, align 4, !tbaa !9
  %1287 = or i32 65542, %1286
  br label %1291

1288:                                             ; preds = %1279
  %1289 = load i32, ptr %61, align 4, !tbaa !9
  %1290 = or i32 65540, %1289
  br label %1291

1291:                                             ; preds = %1288, %1285
  %1292 = phi i32 [ %1287, %1285 ], [ %1290, %1288 ]
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1280, i32 noundef %1292)
  br label %1631

1293:                                             ; preds = %1277
  %1294 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1294, label %1295, label %1309

1295:                                             ; preds = %1293
  %1296 = load ptr, ptr %39, align 8, !tbaa !5
  %1297 = load ptr, ptr %19, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.ImGuiIO, ptr %1297, i32 0, i32 34
  %1299 = load i8, ptr %1298, align 1, !tbaa !101, !range !35, !noundef !36
  %1300 = trunc i8 %1299 to i1
  br i1 %1300, label %1301, label %1304

1301:                                             ; preds = %1295
  %1302 = load i32, ptr %61, align 4, !tbaa !9
  %1303 = or i32 65543, %1302
  br label %1307

1304:                                             ; preds = %1295
  %1305 = load i32, ptr %61, align 4, !tbaa !9
  %1306 = or i32 65541, %1305
  br label %1307

1307:                                             ; preds = %1304, %1301
  %1308 = phi i32 [ %1303, %1301 ], [ %1306, %1304 ]
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1296, i32 noundef %1308)
  br label %1630

1309:                                             ; preds = %1293
  %1310 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1310, label %1311, label %1318

1311:                                             ; preds = %1309
  %1312 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1313 = trunc i8 %1312 to i1
  br i1 %1313, label %1314, label %1318

1314:                                             ; preds = %1311
  %1315 = load ptr, ptr %39, align 8, !tbaa !5
  %1316 = load i32, ptr %61, align 4, !tbaa !9
  %1317 = or i32 65544, %1316
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1315, i32 noundef %1317)
  br label %1629

1318:                                             ; preds = %1311, %1309
  %1319 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1319, label %1320, label %1357

1320:                                             ; preds = %1318
  %1321 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1322 = trunc i8 %1321 to i1
  br i1 %1322, label %1323, label %1357

1323:                                             ; preds = %1320
  %1324 = load ptr, ptr %39, align 8, !tbaa !5
  %1325 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %1324)
  br i1 %1325, label %1353, label %1326

1326:                                             ; preds = %1323
  %1327 = load i8, ptr %65, align 1, !tbaa !37, !range !35, !noundef !36
  %1328 = trunc i8 %1327 to i1
  br i1 %1328, label %1329, label %1331

1329:                                             ; preds = %1326
  %1330 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1330, i32 noundef 196620)
  br label %1352

1331:                                             ; preds = %1326
  %1332 = load i8, ptr %62, align 1, !tbaa !37, !range !35, !noundef !36
  %1333 = trunc i8 %1332 to i1
  br i1 %1333, label %1334, label %1351

1334:                                             ; preds = %1331
  %1335 = load ptr, ptr %19, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.ImGuiIO, ptr %1335, i32 0, i32 37
  %1337 = load i8, ptr %1336, align 4, !tbaa !120, !range !35, !noundef !36
  %1338 = trunc i8 %1337 to i1
  br i1 %1338, label %1339, label %1351

1339:                                             ; preds = %1334
  %1340 = load ptr, ptr %19, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct.ImGuiIO, ptr %1340, i32 0, i32 36
  %1342 = load i8, ptr %1341, align 1, !tbaa !119, !range !35, !noundef !36
  %1343 = trunc i8 %1342 to i1
  br i1 %1343, label %1351, label %1344

1344:                                             ; preds = %1339
  %1345 = load ptr, ptr %19, align 8, !tbaa !5
  %1346 = getelementptr inbounds %struct.ImGuiIO, ptr %1345, i32 0, i32 34
  %1347 = load i8, ptr %1346, align 1, !tbaa !101, !range !35, !noundef !36
  %1348 = trunc i8 %1347 to i1
  br i1 %1348, label %1351, label %1349

1349:                                             ; preds = %1344
  %1350 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1350, i32 noundef 196612)
  br label %1351

1351:                                             ; preds = %1349, %1344, %1339, %1334, %1331
  br label %1352

1352:                                             ; preds = %1351, %1329
  br label %1353

1353:                                             ; preds = %1352, %1323
  %1354 = load ptr, ptr %39, align 8, !tbaa !5
  %1355 = load i32, ptr %61, align 4, !tbaa !9
  %1356 = or i32 65545, %1355
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1354, i32 noundef %1356)
  br label %1628

1357:                                             ; preds = %1320, %1318
  %1358 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1358, label %1359, label %1397

1359:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #13
  %1360 = load i32, ptr %13, align 4, !tbaa !9
  %1361 = and i32 %1360, 2048
  %1362 = icmp ne i32 %1361, 0
  %1363 = zext i1 %1362 to i8
  store i8 %1363, ptr %74, align 1, !tbaa !37
  %1364 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %1365 = trunc i8 %1364 to i1
  br i1 %1365, label %1366, label %1382

1366:                                             ; preds = %1359
  %1367 = load i8, ptr %74, align 1, !tbaa !37, !range !35, !noundef !36
  %1368 = trunc i8 %1367 to i1
  br i1 %1368, label %1369, label %1374

1369:                                             ; preds = %1366
  %1370 = load ptr, ptr %19, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.ImGuiIO, ptr %1370, i32 0, i32 34
  %1372 = load i8, ptr %1371, align 1, !tbaa !101, !range !35, !noundef !36
  %1373 = trunc i8 %1372 to i1
  br i1 %1373, label %1374, label %1382

1374:                                             ; preds = %1369, %1366
  %1375 = load i8, ptr %74, align 1, !tbaa !37, !range !35, !noundef !36
  %1376 = trunc i8 %1375 to i1
  br i1 %1376, label %1383, label %1377

1377:                                             ; preds = %1374
  %1378 = load ptr, ptr %19, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.ImGuiIO, ptr %1378, i32 0, i32 34
  %1380 = load i8, ptr %1379, align 1, !tbaa !101, !range !35, !noundef !36
  %1381 = trunc i8 %1380 to i1
  br i1 %1381, label %1382, label %1383

1382:                                             ; preds = %1377, %1369, %1359
  store i8 1, ptr %46, align 1, !tbaa !37
  store i8 1, ptr %52, align 1, !tbaa !37
  br label %1396

1383:                                             ; preds = %1377, %1374
  %1384 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1385 = trunc i8 %1384 to i1
  br i1 %1385, label %1386, label %1395

1386:                                             ; preds = %1383
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #13
  store i32 10, ptr %75, align 4, !tbaa !9
  %1387 = load i32, ptr %13, align 4, !tbaa !9
  %1388 = load ptr, ptr %14, align 8, !tbaa !5
  %1389 = load ptr, ptr %15, align 8, !tbaa !5
  %1390 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %75, i32 noundef %1387, ptr noundef %1388, ptr noundef %1389)
  br i1 %1390, label %1391, label %1394

1391:                                             ; preds = %1386
  %1392 = load ptr, ptr %39, align 8, !tbaa !5
  %1393 = load i32, ptr %75, align 4, !tbaa !9
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1392, i32 noundef %1393)
  br label %1394

1394:                                             ; preds = %1391, %1386
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #13
  br label %1395

1395:                                             ; preds = %1394, %1383
  br label %1396

1396:                                             ; preds = %1395, %1382
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #13
  br label %1627

1397:                                             ; preds = %1357
  %1398 = load i32, ptr %13, align 4, !tbaa !9
  %1399 = and i32 %1398, 1024
  %1400 = icmp ne i32 %1399, 0
  br i1 %1400, label %1401, label %1430

1401:                                             ; preds = %1397
  %1402 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1402, label %1403, label %1430

1403:                                             ; preds = %1401
  %1404 = load ptr, ptr %19, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.ImGuiIO, ptr %1404, i32 0, i32 34
  %1406 = load i8, ptr %1405, align 1, !tbaa !101, !range !35, !noundef !36
  %1407 = trunc i8 %1406 to i1
  br i1 %1407, label %1430, label %1408

1408:                                             ; preds = %1403
  %1409 = load ptr, ptr %19, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.ImGuiIO, ptr %1409, i32 0, i32 35
  %1411 = load i8, ptr %1410, align 2, !tbaa !123, !range !35, !noundef !36
  %1412 = trunc i8 %1411 to i1
  br i1 %1412, label %1430, label %1413

1413:                                             ; preds = %1408
  %1414 = load ptr, ptr %19, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.ImGuiIO, ptr %1414, i32 0, i32 36
  %1416 = load i8, ptr %1415, align 1, !tbaa !119, !range !35, !noundef !36
  %1417 = trunc i8 %1416 to i1
  br i1 %1417, label %1430, label %1418

1418:                                             ; preds = %1413
  %1419 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1420 = trunc i8 %1419 to i1
  br i1 %1420, label %1421, label %1430

1421:                                             ; preds = %1418
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #13
  store i32 9, ptr %76, align 4, !tbaa !9
  %1422 = load i32, ptr %13, align 4, !tbaa !9
  %1423 = load ptr, ptr %14, align 8, !tbaa !5
  %1424 = load ptr, ptr %15, align 8, !tbaa !5
  %1425 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %76, i32 noundef %1422, ptr noundef %1423, ptr noundef %1424)
  br i1 %1425, label %1426, label %1429

1426:                                             ; preds = %1421
  %1427 = load ptr, ptr %39, align 8, !tbaa !5
  %1428 = load i32, ptr %76, align 4, !tbaa !9
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1427, i32 noundef %1428)
  br label %1429

1429:                                             ; preds = %1426, %1421
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #13
  br label %1626

1430:                                             ; preds = %1418, %1413, %1408, %1403, %1401, %1397
  %1431 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1431, label %1432, label %1433

1432:                                             ; preds = %1430
  store i8 1, ptr %60, align 1, !tbaa !37
  store i8 1, ptr %46, align 1, !tbaa !37
  br label %1625

1433:                                             ; preds = %1430
  %1434 = load i8, ptr %72, align 1, !tbaa !37, !range !35, !noundef !36
  %1435 = trunc i8 %1434 to i1
  br i1 %1435, label %1439, label %1436

1436:                                             ; preds = %1433
  %1437 = load i8, ptr %73, align 1, !tbaa !37, !range !35, !noundef !36
  %1438 = trunc i8 %1437 to i1
  br i1 %1438, label %1439, label %1446

1439:                                             ; preds = %1436, %1433
  %1440 = load ptr, ptr %39, align 8, !tbaa !5
  %1441 = load i8, ptr %72, align 1, !tbaa !37, !range !35, !noundef !36
  %1442 = trunc i8 %1441 to i1
  %1443 = zext i1 %1442 to i64
  %1444 = select i1 %1442, i32 65546, i32 65547
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %1440, i32 noundef %1444)
  %1445 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %1445)
  br label %1624

1446:                                             ; preds = %1436
  %1447 = load i8, ptr %63, align 1, !tbaa !37, !range !35, !noundef !36
  %1448 = trunc i8 %1447 to i1
  br i1 %1448, label %1449, label %1455

1449:                                             ; preds = %1446
  %1450 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %1450, label %1451, label %1455

1451:                                             ; preds = %1449
  %1452 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3698) %1452)
  %1453 = load ptr, ptr %39, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1453, i32 0, i32 11
  store i8 1, ptr %1454, align 8, !tbaa !117
  br label %1623

1455:                                             ; preds = %1449, %1446
  %1456 = load i8, ptr %69, align 1, !tbaa !37, !range !35, !noundef !36
  %1457 = trunc i8 %1456 to i1
  br i1 %1457, label %1461, label %1458

1458:                                             ; preds = %1455
  %1459 = load i8, ptr %70, align 1, !tbaa !37, !range !35, !noundef !36
  %1460 = trunc i8 %1459 to i1
  br i1 %1460, label %1461, label %1550

1461:                                             ; preds = %1458, %1455
  %1462 = load ptr, ptr %19, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.ImGuiIO, ptr %1462, i32 0, i32 24
  %1464 = load ptr, ptr %1463, align 8, !tbaa !125
  %1465 = icmp ne ptr %1464, null
  br i1 %1465, label %1466, label %1534

1466:                                             ; preds = %1461
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #13
  %1467 = load ptr, ptr %39, align 8, !tbaa !5
  %1468 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %1467)
  br i1 %1468, label %1469, label %1479

1469:                                             ; preds = %1466
  %1470 = load ptr, ptr %39, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1470, i32 0, i32 9
  %1472 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1471, i32 0, i32 1
  %1473 = load i32, ptr %1472, align 4, !tbaa !126
  %1474 = load ptr, ptr %39, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1474, i32 0, i32 9
  %1476 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1475, i32 0, i32 2
  %1477 = load i32, ptr %1476, align 8, !tbaa !127
  %1478 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1473, i32 noundef %1477)
  br label %1480

1479:                                             ; preds = %1466
  br label %1480

1480:                                             ; preds = %1479, %1469
  %1481 = phi i32 [ %1478, %1469 ], [ 0, %1479 ]
  store i32 %1481, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #13
  %1482 = load ptr, ptr %39, align 8, !tbaa !5
  %1483 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %1482)
  br i1 %1483, label %1484, label %1494

1484:                                             ; preds = %1480
  %1485 = load ptr, ptr %39, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1485, i32 0, i32 9
  %1487 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1486, i32 0, i32 1
  %1488 = load i32, ptr %1487, align 4, !tbaa !126
  %1489 = load ptr, ptr %39, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1489, i32 0, i32 9
  %1491 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1490, i32 0, i32 2
  %1492 = load i32, ptr %1491, align 8, !tbaa !127
  %1493 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1488, i32 noundef %1492)
  br label %1498

1494:                                             ; preds = %1480
  %1495 = load ptr, ptr %39, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1495, i32 0, i32 6
  %1497 = load i32, ptr %1496, align 4, !tbaa !93
  br label %1498

1498:                                             ; preds = %1494, %1484
  %1499 = phi i32 [ %1493, %1484 ], [ %1497, %1494 ]
  store i32 %1499, ptr %78, align 4, !tbaa !9
  %1500 = load ptr, ptr %39, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1500, i32 0, i32 4
  %1502 = load i32, ptr %78, align 4, !tbaa !9
  %1503 = load i32, ptr %77, align 4, !tbaa !9
  %1504 = sub nsw i32 %1502, %1503
  %1505 = mul nsw i32 %1504, 4
  %1506 = add nsw i32 %1505, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1501, i32 noundef %1506)
  %1507 = load ptr, ptr %39, align 8, !tbaa !5
  %1508 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1507, i32 0, i32 4
  %1509 = getelementptr inbounds %class.ImVector.14, ptr %1508, i32 0, i32 2
  %1510 = load ptr, ptr %1509, align 8, !tbaa !128
  %1511 = load ptr, ptr %39, align 8, !tbaa !5
  %1512 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1511, i32 0, i32 4
  %1513 = getelementptr inbounds %class.ImVector.14, ptr %1512, i32 0, i32 0
  %1514 = load i32, ptr %1513, align 8, !tbaa !129
  %1515 = load ptr, ptr %39, align 8, !tbaa !5
  %1516 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1515, i32 0, i32 2
  %1517 = getelementptr inbounds %class.ImVector.7, ptr %1516, i32 0, i32 2
  %1518 = load ptr, ptr %1517, align 8, !tbaa !96
  %1519 = load i32, ptr %77, align 4, !tbaa !9
  %1520 = sext i32 %1519 to i64
  %1521 = getelementptr inbounds i16, ptr %1518, i64 %1520
  %1522 = load ptr, ptr %39, align 8, !tbaa !5
  %1523 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1522, i32 0, i32 2
  %1524 = getelementptr inbounds %class.ImVector.7, ptr %1523, i32 0, i32 2
  %1525 = load ptr, ptr %1524, align 8, !tbaa !96
  %1526 = load i32, ptr %78, align 4, !tbaa !9
  %1527 = sext i32 %1526 to i64
  %1528 = getelementptr inbounds i16, ptr %1525, i64 %1527
  %1529 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1510, i32 noundef %1514, ptr noundef %1521, ptr noundef %1528)
  %1530 = load ptr, ptr %39, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1530, i32 0, i32 4
  %1532 = getelementptr inbounds %class.ImVector.14, ptr %1531, i32 0, i32 2
  %1533 = load ptr, ptr %1532, align 8, !tbaa !128
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1533)
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #13
  br label %1534

1534:                                             ; preds = %1498, %1461
  %1535 = load i8, ptr %69, align 1, !tbaa !37, !range !35, !noundef !36
  %1536 = trunc i8 %1535 to i1
  br i1 %1536, label %1537, label %1549

1537:                                             ; preds = %1534
  %1538 = load ptr, ptr %39, align 8, !tbaa !5
  %1539 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %1538)
  br i1 %1539, label %1542, label %1540

1540:                                             ; preds = %1537
  %1541 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3698) %1541)
  br label %1542

1542:                                             ; preds = %1540, %1537
  %1543 = load ptr, ptr %39, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1543, i32 0, i32 11
  store i8 1, ptr %1544, align 8, !tbaa !117
  %1545 = load ptr, ptr %39, align 8, !tbaa !5
  %1546 = load ptr, ptr %39, align 8, !tbaa !5
  %1547 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1546, i32 0, i32 9
  %1548 = call noundef i32 @_ZN8ImGuiStbL16stb_textedit_cutEP18ImGuiTextEditStatePNS_17STB_TexteditStateE(ptr noundef %1545, ptr noundef %1547)
  br label %1549

1549:                                             ; preds = %1542, %1534
  br label %1622

1550:                                             ; preds = %1458
  %1551 = load i8, ptr %71, align 1, !tbaa !37, !range !35, !noundef !36
  %1552 = trunc i8 %1551 to i1
  br i1 %1552, label %1553, label %1621

1553:                                             ; preds = %1550
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #13
  %1554 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %1554, ptr %79, align 8, !tbaa !5
  %1555 = load ptr, ptr %79, align 8, !tbaa !5
  %1556 = icmp ne ptr %1555, null
  br i1 %1556, label %1557, label %1620

1557:                                             ; preds = %1553
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  %1558 = load ptr, ptr %79, align 8, !tbaa !5
  %1559 = call i64 @strlen(ptr noundef %1558) #15
  %1560 = trunc i64 %1559 to i32
  store i32 %1560, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #13
  %1561 = load i32, ptr %80, align 4, !tbaa !9
  %1562 = add nsw i32 %1561, 1
  %1563 = sext i32 %1562 to i64
  %1564 = mul i64 %1563, 2
  %1565 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1564)
  store ptr %1565, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #13
  store i32 0, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #13
  %1566 = load ptr, ptr %79, align 8, !tbaa !5
  store ptr %1566, ptr %83, align 8, !tbaa !5
  br label %1567

1567:                                             ; preds = %1600, %1598, %1557
  %1568 = load ptr, ptr %83, align 8, !tbaa !5
  %1569 = load i8, ptr %1568, align 1, !tbaa !130
  %1570 = icmp ne i8 %1569, 0
  br i1 %1570, label %1572, label %1571

1571:                                             ; preds = %1567
  store i32 5, ptr %17, align 4
  br label %1601

1572:                                             ; preds = %1567
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #13
  %1573 = load ptr, ptr %83, align 8, !tbaa !5
  %1574 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %84, ptr noundef %1573, ptr noundef null)
  %1575 = load ptr, ptr %83, align 8, !tbaa !5
  %1576 = sext i32 %1574 to i64
  %1577 = getelementptr inbounds i8, ptr %1575, i64 %1576
  store ptr %1577, ptr %83, align 8, !tbaa !5
  %1578 = load i32, ptr %84, align 4, !tbaa !9
  %1579 = icmp eq i32 %1578, 0
  br i1 %1579, label %1580, label %1581

1580:                                             ; preds = %1572
  store i32 5, ptr %17, align 4
  br label %1598

1581:                                             ; preds = %1572
  %1582 = load i32, ptr %84, align 4, !tbaa !9
  %1583 = icmp uge i32 %1582, 65536
  br i1 %1583, label %1589, label %1584

1584:                                             ; preds = %1581
  %1585 = load i32, ptr %13, align 4, !tbaa !9
  %1586 = load ptr, ptr %14, align 8, !tbaa !5
  %1587 = load ptr, ptr %15, align 8, !tbaa !5
  %1588 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %84, i32 noundef %1585, ptr noundef %1586, ptr noundef %1587)
  br i1 %1588, label %1590, label %1589

1589:                                             ; preds = %1584, %1581
  store i32 6, ptr %17, align 4
  br label %1598, !llvm.loop !131

1590:                                             ; preds = %1584
  %1591 = load i32, ptr %84, align 4, !tbaa !9
  %1592 = trunc i32 %1591 to i16
  %1593 = load ptr, ptr %81, align 8, !tbaa !5
  %1594 = load i32, ptr %82, align 4, !tbaa !9
  %1595 = add nsw i32 %1594, 1
  store i32 %1595, ptr %82, align 4, !tbaa !9
  %1596 = sext i32 %1594 to i64
  %1597 = getelementptr inbounds i16, ptr %1593, i64 %1596
  store i16 %1592, ptr %1597, align 2, !tbaa !118
  store i32 0, ptr %17, align 4
  br label %1598

1598:                                             ; preds = %1590, %1589, %1580
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #13
  %1599 = load i32, ptr %17, align 4
  switch i32 %1599, label %1601 [
    i32 0, label %1600
    i32 6, label %1567
  ]

1600:                                             ; preds = %1598
  br label %1567, !llvm.loop !131

1601:                                             ; preds = %1598, %1571
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  br label %1602

1602:                                             ; preds = %1601
  %1603 = load ptr, ptr %81, align 8, !tbaa !5
  %1604 = load i32, ptr %82, align 4, !tbaa !9
  %1605 = sext i32 %1604 to i64
  %1606 = getelementptr inbounds i16, ptr %1603, i64 %1605
  store i16 0, ptr %1606, align 2, !tbaa !118
  %1607 = load i32, ptr %82, align 4, !tbaa !9
  %1608 = icmp sgt i32 %1607, 0
  br i1 %1608, label %1609, label %1618

1609:                                             ; preds = %1602
  %1610 = load ptr, ptr %39, align 8, !tbaa !5
  %1611 = load ptr, ptr %39, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1611, i32 0, i32 9
  %1613 = load ptr, ptr %81, align 8, !tbaa !5
  %1614 = load i32, ptr %82, align 4, !tbaa !9
  %1615 = call noundef i32 @_ZN8ImGuiStbL18stb_textedit_pasteEP18ImGuiTextEditStatePNS_17STB_TexteditStateEPKti(ptr noundef %1610, ptr noundef %1612, ptr noundef %1613, i32 noundef %1614)
  %1616 = load ptr, ptr %39, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1616, i32 0, i32 11
  store i8 1, ptr %1617, align 8, !tbaa !117
  br label %1618

1618:                                             ; preds = %1609, %1602
  %1619 = load ptr, ptr %81, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1619)
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  br label %1620

1620:                                             ; preds = %1618, %1553
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #13
  br label %1621

1621:                                             ; preds = %1620, %1550
  br label %1622

1622:                                             ; preds = %1621, %1549
  br label %1623

1623:                                             ; preds = %1622, %1451
  br label %1624

1624:                                             ; preds = %1623, %1439
  br label %1625

1625:                                             ; preds = %1624, %1432
  br label %1626

1626:                                             ; preds = %1625, %1429
  br label %1627

1627:                                             ; preds = %1626, %1396
  br label %1628

1628:                                             ; preds = %1627, %1353
  br label %1629

1629:                                             ; preds = %1628, %1314
  br label %1630

1630:                                             ; preds = %1629, %1307
  br label %1631

1631:                                             ; preds = %1630, %1291
  br label %1632

1632:                                             ; preds = %1631, %1276
  br label %1633

1633:                                             ; preds = %1632, %1245
  br label %1634

1634:                                             ; preds = %1633, %1212
  br label %1635

1635:                                             ; preds = %1634, %1196
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  br label %1636

1636:                                             ; preds = %1635, %931, %926, %920
  %1637 = load ptr, ptr %18, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.ImGuiContext, ptr %1637, i32 0, i32 27
  %1639 = load i32, ptr %1638, align 8, !tbaa !87
  %1640 = load i32, ptr %25, align 4, !tbaa !9
  %1641 = icmp eq i32 %1639, %1640
  br i1 %1641, label %1642, label %1953

1642:                                             ; preds = %1636
  %1643 = load i8, ptr %60, align 1, !tbaa !37, !range !35, !noundef !36
  %1644 = trunc i8 %1643 to i1
  br i1 %1644, label %1645, label %1667

1645:                                             ; preds = %1642
  %1646 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1647 = trunc i8 %1646 to i1
  br i1 %1647, label %1648, label %1666

1648:                                             ; preds = %1645
  %1649 = load ptr, ptr %10, align 8, !tbaa !5
  %1650 = load ptr, ptr %39, align 8, !tbaa !5
  %1651 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1650, i32 0, i32 3
  %1652 = getelementptr inbounds %class.ImVector.14, ptr %1651, i32 0, i32 2
  %1653 = load ptr, ptr %1652, align 8, !tbaa !94
  %1654 = load i32, ptr %11, align 4, !tbaa !9
  %1655 = sext i32 %1654 to i64
  %1656 = call i32 @strncmp(ptr noundef %1649, ptr noundef %1653, i64 noundef %1655) #15
  %1657 = icmp ne i32 %1656, 0
  br i1 %1657, label %1658, label %1666

1658:                                             ; preds = %1648
  %1659 = load ptr, ptr %10, align 8, !tbaa !5
  %1660 = load ptr, ptr %39, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1660, i32 0, i32 3
  %1662 = getelementptr inbounds %class.ImVector.14, ptr %1661, i32 0, i32 2
  %1663 = load ptr, ptr %1662, align 8, !tbaa !94
  %1664 = load i32, ptr %11, align 4, !tbaa !9
  %1665 = sext i32 %1664 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %1659, ptr noundef %1663, i64 noundef %1665)
  store i8 1, ptr %51, align 1, !tbaa !37
  br label %1666

1666:                                             ; preds = %1658, %1648, %1645
  br label %1667

1667:                                             ; preds = %1666, %1642
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #13
  %1668 = load i8, ptr %60, align 1, !tbaa !37, !range !35, !noundef !36
  %1669 = trunc i8 %1668 to i1
  br i1 %1669, label %1670, label %1679

1670:                                             ; preds = %1667
  %1671 = load i8, ptr %52, align 1, !tbaa !37, !range !35, !noundef !36
  %1672 = trunc i8 %1671 to i1
  br i1 %1672, label %1673, label %1677

1673:                                             ; preds = %1670
  %1674 = load i32, ptr %13, align 4, !tbaa !9
  %1675 = and i32 %1674, 32
  %1676 = icmp ne i32 %1675, 0
  br label %1677

1677:                                             ; preds = %1673, %1670
  %1678 = phi i1 [ false, %1670 ], [ %1676, %1673 ]
  br label %1679

1679:                                             ; preds = %1677, %1667
  %1680 = phi i1 [ true, %1667 ], [ %1678, %1677 ]
  %1681 = zext i1 %1680 to i8
  store i8 %1681, ptr %85, align 1, !tbaa !37
  %1682 = load i8, ptr %85, align 1, !tbaa !37, !range !35, !noundef !36
  %1683 = trunc i8 %1682 to i1
  br i1 %1683, label %1684, label %1952

1684:                                             ; preds = %1679
  %1685 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1686 = trunc i8 %1685 to i1
  br i1 %1686, label %1687, label %1708

1687:                                             ; preds = %1684
  %1688 = load ptr, ptr %39, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1688, i32 0, i32 4
  %1690 = load ptr, ptr %39, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1690, i32 0, i32 2
  %1692 = getelementptr inbounds %class.ImVector.7, ptr %1691, i32 0, i32 0
  %1693 = load i32, ptr %1692, align 8, !tbaa !97
  %1694 = mul nsw i32 %1693, 4
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1689, i32 noundef %1694)
  %1695 = load ptr, ptr %39, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1695, i32 0, i32 4
  %1697 = getelementptr inbounds %class.ImVector.14, ptr %1696, i32 0, i32 2
  %1698 = load ptr, ptr %1697, align 8, !tbaa !128
  %1699 = load ptr, ptr %39, align 8, !tbaa !5
  %1700 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1699, i32 0, i32 4
  %1701 = getelementptr inbounds %class.ImVector.14, ptr %1700, i32 0, i32 0
  %1702 = load i32, ptr %1701, align 8, !tbaa !129
  %1703 = load ptr, ptr %39, align 8, !tbaa !5
  %1704 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1703, i32 0, i32 2
  %1705 = getelementptr inbounds %class.ImVector.7, ptr %1704, i32 0, i32 2
  %1706 = load ptr, ptr %1705, align 8, !tbaa !96
  %1707 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1698, i32 noundef %1702, ptr noundef %1706, ptr noundef null)
  br label %1708

1708:                                             ; preds = %1687, %1684
  %1709 = load i32, ptr %13, align 4, !tbaa !9
  %1710 = and i32 %1709, 448
  %1711 = icmp ne i32 %1710, 0
  br i1 %1711, label %1712, label %1932

1712:                                             ; preds = %1708
  %1713 = load ptr, ptr %14, align 8, !tbaa !5
  %1714 = icmp ne ptr %1713, null
  br i1 %1714, label %1715, label %1716

1715:                                             ; preds = %1712
  br label %1718

1716:                                             ; preds = %1712
  call void @__assert_fail(ptr noundef @.str.170, ptr noundef @.str.3, i32 noundef 10772, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #14
  unreachable

1717:                                             ; No predecessors!
  br label %1718

1718:                                             ; preds = %1717, %1715
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #13
  store i32 0, ptr %86, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #13
  store i32 21, ptr %87, align 4, !tbaa !9
  %1719 = load i32, ptr %13, align 4, !tbaa !9
  %1720 = and i32 %1719, 64
  %1721 = icmp ne i32 %1720, 0
  br i1 %1721, label %1722, label %1725

1722:                                             ; preds = %1718
  %1723 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1723, label %1724, label %1725

1724:                                             ; preds = %1722
  store i32 64, ptr %86, align 4, !tbaa !9
  store i32 0, ptr %87, align 4, !tbaa !9
  br label %1747

1725:                                             ; preds = %1722, %1718
  %1726 = load i32, ptr %13, align 4, !tbaa !9
  %1727 = and i32 %1726, 128
  %1728 = icmp ne i32 %1727, 0
  br i1 %1728, label %1729, label %1732

1729:                                             ; preds = %1725
  %1730 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1730, label %1731, label %1732

1731:                                             ; preds = %1729
  store i32 128, ptr %86, align 4, !tbaa !9
  store i32 3, ptr %87, align 4, !tbaa !9
  br label %1746

1732:                                             ; preds = %1729, %1725
  %1733 = load i32, ptr %13, align 4, !tbaa !9
  %1734 = and i32 %1733, 128
  %1735 = icmp ne i32 %1734, 0
  br i1 %1735, label %1736, label %1739

1736:                                             ; preds = %1732
  %1737 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1737, label %1738, label %1739

1738:                                             ; preds = %1736
  store i32 128, ptr %86, align 4, !tbaa !9
  store i32 4, ptr %87, align 4, !tbaa !9
  br label %1745

1739:                                             ; preds = %1736, %1732
  %1740 = load i32, ptr %13, align 4, !tbaa !9
  %1741 = and i32 %1740, 256
  %1742 = icmp ne i32 %1741, 0
  br i1 %1742, label %1743, label %1744

1743:                                             ; preds = %1739
  store i32 256, ptr %86, align 4, !tbaa !9
  br label %1744

1744:                                             ; preds = %1743, %1739
  br label %1745

1745:                                             ; preds = %1744, %1738
  br label %1746

1746:                                             ; preds = %1745, %1731
  br label %1747

1747:                                             ; preds = %1746, %1724
  %1748 = load i32, ptr %86, align 4, !tbaa !9
  %1749 = icmp ne i32 %1748, 0
  br i1 %1749, label %1750, label %1931

1750:                                             ; preds = %1747
  call void @llvm.lifetime.start.p0(i64 56, ptr %88) #13
  call void @llvm.memset.p0.i64(ptr align 8 %88, i8 0, i64 56, i1 false)
  %1751 = load i32, ptr %86, align 4, !tbaa !9
  %1752 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 0
  store i32 %1751, ptr %1752, align 8, !tbaa !132
  %1753 = load i32, ptr %13, align 4, !tbaa !9
  %1754 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 1
  store i32 %1753, ptr %1754, align 4, !tbaa !134
  %1755 = load ptr, ptr %15, align 8, !tbaa !5
  %1756 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 2
  store ptr %1755, ptr %1756, align 8, !tbaa !135
  %1757 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1758 = trunc i8 %1757 to i1
  %1759 = xor i1 %1758, true
  %1760 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 3
  %1761 = zext i1 %1759 to i8
  store i8 %1761, ptr %1760, align 8, !tbaa !136
  %1762 = load i32, ptr %87, align 4, !tbaa !9
  %1763 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 5
  store i32 %1762, ptr %1763, align 4, !tbaa !137
  %1764 = load ptr, ptr %39, align 8, !tbaa !5
  %1765 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1764, i32 0, i32 4
  %1766 = getelementptr inbounds %class.ImVector.14, ptr %1765, i32 0, i32 2
  %1767 = load ptr, ptr %1766, align 8, !tbaa !128
  %1768 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  store ptr %1767, ptr %1768, align 8, !tbaa !138
  %1769 = load ptr, ptr %39, align 8, !tbaa !5
  %1770 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1769, i32 0, i32 5
  %1771 = load i32, ptr %1770, align 8, !tbaa !98
  %1772 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 7
  store i32 %1771, ptr %1772, align 8, !tbaa !139
  %1773 = load ptr, ptr %39, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1773, i32 0, i32 7
  %1775 = load i32, ptr %1774, align 8, !tbaa !104
  %1776 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 8
  store i32 %1775, ptr %1776, align 4, !tbaa !140
  %1777 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 9
  store i8 0, ptr %1777, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #13
  %1778 = load ptr, ptr %39, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1778, i32 0, i32 2
  %1780 = getelementptr inbounds %class.ImVector.7, ptr %1779, i32 0, i32 2
  %1781 = load ptr, ptr %1780, align 8, !tbaa !96
  store ptr %1781, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #13
  %1782 = load ptr, ptr %89, align 8, !tbaa !5
  %1783 = load ptr, ptr %89, align 8, !tbaa !5
  %1784 = load ptr, ptr %39, align 8, !tbaa !5
  %1785 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1784, i32 0, i32 9
  %1786 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1785, i32 0, i32 0
  %1787 = load i32, ptr %1786, align 8, !tbaa !142
  %1788 = sext i32 %1787 to i64
  %1789 = getelementptr inbounds i16, ptr %1783, i64 %1788
  %1790 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1782, ptr noundef %1789)
  %1791 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 10
  store i32 %1790, ptr %1791, align 4, !tbaa !143
  store i32 %1790, ptr %90, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #13
  %1792 = load ptr, ptr %89, align 8, !tbaa !5
  %1793 = load ptr, ptr %89, align 8, !tbaa !5
  %1794 = load ptr, ptr %39, align 8, !tbaa !5
  %1795 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1794, i32 0, i32 9
  %1796 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1795, i32 0, i32 1
  %1797 = load i32, ptr %1796, align 4, !tbaa !126
  %1798 = sext i32 %1797 to i64
  %1799 = getelementptr inbounds i16, ptr %1793, i64 %1798
  %1800 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1792, ptr noundef %1799)
  %1801 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 11
  store i32 %1800, ptr %1801, align 8, !tbaa !144
  store i32 %1800, ptr %91, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #13
  %1802 = load ptr, ptr %89, align 8, !tbaa !5
  %1803 = load ptr, ptr %89, align 8, !tbaa !5
  %1804 = load ptr, ptr %39, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1804, i32 0, i32 9
  %1806 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1805, i32 0, i32 2
  %1807 = load i32, ptr %1806, align 8, !tbaa !127
  %1808 = sext i32 %1807 to i64
  %1809 = getelementptr inbounds i16, ptr %1803, i64 %1808
  %1810 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1802, ptr noundef %1809)
  %1811 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 12
  store i32 %1810, ptr %1811, align 4, !tbaa !145
  store i32 %1810, ptr %92, align 4, !tbaa !9
  %1812 = load ptr, ptr %14, align 8, !tbaa !5
  %1813 = call noundef i32 %1812(ptr noundef %88)
  %1814 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1815 = load ptr, ptr %1814, align 8, !tbaa !138
  %1816 = load ptr, ptr %39, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1816, i32 0, i32 4
  %1818 = getelementptr inbounds %class.ImVector.14, ptr %1817, i32 0, i32 2
  %1819 = load ptr, ptr %1818, align 8, !tbaa !128
  %1820 = icmp eq ptr %1815, %1819
  br i1 %1820, label %1821, label %1822

1821:                                             ; preds = %1750
  br label %1824

1822:                                             ; preds = %1750
  call void @__assert_fail(ptr noundef @.str.171, ptr noundef @.str.3, i32 noundef 10820, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #14
  unreachable

1823:                                             ; No predecessors!
  br label %1824

1824:                                             ; preds = %1823, %1821
  %1825 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 8
  %1826 = load i32, ptr %1825, align 4, !tbaa !140
  %1827 = load ptr, ptr %39, align 8, !tbaa !5
  %1828 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1827, i32 0, i32 7
  %1829 = load i32, ptr %1828, align 8, !tbaa !104
  %1830 = icmp eq i32 %1826, %1829
  br i1 %1830, label %1831, label %1832

1831:                                             ; preds = %1824
  br label %1834

1832:                                             ; preds = %1824
  call void @__assert_fail(ptr noundef @.str.172, ptr noundef @.str.3, i32 noundef 10821, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #14
  unreachable

1833:                                             ; No predecessors!
  br label %1834

1834:                                             ; preds = %1833, %1831
  %1835 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 1
  %1836 = load i32, ptr %1835, align 4, !tbaa !134
  %1837 = load i32, ptr %13, align 4, !tbaa !9
  %1838 = icmp eq i32 %1836, %1837
  br i1 %1838, label %1839, label %1840

1839:                                             ; preds = %1834
  br label %1842

1840:                                             ; preds = %1834
  call void @__assert_fail(ptr noundef @.str.173, ptr noundef @.str.3, i32 noundef 10822, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #14
  unreachable

1841:                                             ; No predecessors!
  br label %1842

1842:                                             ; preds = %1841, %1839
  %1843 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 10
  %1844 = load i32, ptr %1843, align 4, !tbaa !143
  %1845 = load i32, ptr %90, align 4, !tbaa !9
  %1846 = icmp ne i32 %1844, %1845
  br i1 %1846, label %1847, label %1860

1847:                                             ; preds = %1842
  %1848 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1849 = load ptr, ptr %1848, align 8, !tbaa !138
  %1850 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1851 = load ptr, ptr %1850, align 8, !tbaa !138
  %1852 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 10
  %1853 = load i32, ptr %1852, align 4, !tbaa !143
  %1854 = sext i32 %1853 to i64
  %1855 = getelementptr inbounds i8, ptr %1851, i64 %1854
  %1856 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1849, ptr noundef %1855)
  %1857 = load ptr, ptr %39, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1857, i32 0, i32 9
  %1859 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1858, i32 0, i32 0
  store i32 %1856, ptr %1859, align 8, !tbaa !142
  br label %1860

1860:                                             ; preds = %1847, %1842
  %1861 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 11
  %1862 = load i32, ptr %1861, align 8, !tbaa !144
  %1863 = load i32, ptr %91, align 4, !tbaa !9
  %1864 = icmp ne i32 %1862, %1863
  br i1 %1864, label %1865, label %1878

1865:                                             ; preds = %1860
  %1866 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1867 = load ptr, ptr %1866, align 8, !tbaa !138
  %1868 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1869 = load ptr, ptr %1868, align 8, !tbaa !138
  %1870 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 11
  %1871 = load i32, ptr %1870, align 8, !tbaa !144
  %1872 = sext i32 %1871 to i64
  %1873 = getelementptr inbounds i8, ptr %1869, i64 %1872
  %1874 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1867, ptr noundef %1873)
  %1875 = load ptr, ptr %39, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1875, i32 0, i32 9
  %1877 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1876, i32 0, i32 1
  store i32 %1874, ptr %1877, align 4, !tbaa !126
  br label %1878

1878:                                             ; preds = %1865, %1860
  %1879 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 12
  %1880 = load i32, ptr %1879, align 4, !tbaa !145
  %1881 = load i32, ptr %92, align 4, !tbaa !9
  %1882 = icmp ne i32 %1880, %1881
  br i1 %1882, label %1883, label %1896

1883:                                             ; preds = %1878
  %1884 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1885 = load ptr, ptr %1884, align 8, !tbaa !138
  %1886 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1887 = load ptr, ptr %1886, align 8, !tbaa !138
  %1888 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 12
  %1889 = load i32, ptr %1888, align 4, !tbaa !145
  %1890 = sext i32 %1889 to i64
  %1891 = getelementptr inbounds i8, ptr %1887, i64 %1890
  %1892 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1885, ptr noundef %1891)
  %1893 = load ptr, ptr %39, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1893, i32 0, i32 9
  %1895 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1894, i32 0, i32 2
  store i32 %1892, ptr %1895, align 8, !tbaa !127
  br label %1896

1896:                                             ; preds = %1883, %1878
  %1897 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 9
  %1898 = load i8, ptr %1897, align 8, !tbaa !141, !range !35, !noundef !36
  %1899 = trunc i8 %1898 to i1
  br i1 %1899, label %1900, label %1930

1900:                                             ; preds = %1896
  %1901 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 7
  %1902 = load i32, ptr %1901, align 8, !tbaa !139
  %1903 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1904 = load ptr, ptr %1903, align 8, !tbaa !138
  %1905 = call i64 @strlen(ptr noundef %1904) #15
  %1906 = trunc i64 %1905 to i32
  %1907 = icmp eq i32 %1902, %1906
  br i1 %1907, label %1908, label %1909

1908:                                             ; preds = %1900
  br label %1911

1909:                                             ; preds = %1900
  call void @__assert_fail(ptr noundef @.str.174, ptr noundef @.str.3, i32 noundef 10828, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #14
  unreachable

1910:                                             ; No predecessors!
  br label %1911

1911:                                             ; preds = %1910, %1908
  %1912 = load ptr, ptr %39, align 8, !tbaa !5
  %1913 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1912, i32 0, i32 2
  %1914 = getelementptr inbounds %class.ImVector.7, ptr %1913, i32 0, i32 2
  %1915 = load ptr, ptr %1914, align 8, !tbaa !96
  %1916 = load ptr, ptr %39, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1916, i32 0, i32 2
  %1918 = getelementptr inbounds %class.ImVector.7, ptr %1917, i32 0, i32 0
  %1919 = load i32, ptr %1918, align 8, !tbaa !97
  %1920 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 6
  %1921 = load ptr, ptr %1920, align 8, !tbaa !138
  %1922 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1915, i32 noundef %1919, ptr noundef %1921, ptr noundef null, ptr noundef null)
  %1923 = load ptr, ptr %39, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1923, i32 0, i32 6
  store i32 %1922, ptr %1924, align 4, !tbaa !93
  %1925 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %88, i32 0, i32 7
  %1926 = load i32, ptr %1925, align 8, !tbaa !139
  %1927 = load ptr, ptr %39, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1927, i32 0, i32 5
  store i32 %1926, ptr %1928, align 8, !tbaa !98
  %1929 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698) %1929)
  br label %1930

1930:                                             ; preds = %1911, %1896
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr %88) #13
  br label %1931

1931:                                             ; preds = %1930, %1747
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #13
  br label %1932

1932:                                             ; preds = %1931, %1708
  %1933 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1934 = trunc i8 %1933 to i1
  br i1 %1934, label %1935, label %1951

1935:                                             ; preds = %1932
  %1936 = load ptr, ptr %39, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1936, i32 0, i32 4
  %1938 = getelementptr inbounds %class.ImVector.14, ptr %1937, i32 0, i32 2
  %1939 = load ptr, ptr %1938, align 8, !tbaa !128
  %1940 = load ptr, ptr %10, align 8, !tbaa !5
  %1941 = call i32 @strcmp(ptr noundef %1939, ptr noundef %1940) #15
  %1942 = icmp ne i32 %1941, 0
  br i1 %1942, label %1943, label %1951

1943:                                             ; preds = %1935
  %1944 = load ptr, ptr %10, align 8, !tbaa !5
  %1945 = load ptr, ptr %39, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1945, i32 0, i32 4
  %1947 = getelementptr inbounds %class.ImVector.14, ptr %1946, i32 0, i32 2
  %1948 = load ptr, ptr %1947, align 8, !tbaa !128
  %1949 = load i32, ptr %11, align 4, !tbaa !9
  %1950 = sext i32 %1949 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %1944, ptr noundef %1948, i64 noundef %1950)
  store i8 1, ptr %51, align 1, !tbaa !37
  br label %1951

1951:                                             ; preds = %1943, %1935, %1932
  br label %1952

1952:                                             ; preds = %1951, %1679
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #13
  br label %1953

1953:                                             ; preds = %1952, %1636
  %1954 = load i8, ptr %46, align 1, !tbaa !37, !range !35, !noundef !36
  %1955 = trunc i8 %1954 to i1
  br i1 %1955, label %1956, label %1963

1956:                                             ; preds = %1953
  %1957 = load ptr, ptr %18, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.ImGuiContext, ptr %1957, i32 0, i32 27
  %1959 = load i32, ptr %1958, align 8, !tbaa !87
  %1960 = load i32, ptr %25, align 4, !tbaa !9
  %1961 = icmp eq i32 %1959, %1960
  br i1 %1961, label %1962, label %1963

1962:                                             ; preds = %1956
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1963

1963:                                             ; preds = %1962, %1956, %1953
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #13
  %1964 = load ptr, ptr %18, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.ImGuiContext, ptr %1964, i32 0, i32 27
  %1966 = load i32, ptr %1965, align 8, !tbaa !87
  %1967 = load i32, ptr %25, align 4, !tbaa !9
  %1968 = icmp eq i32 %1966, %1967
  br i1 %1968, label %1969, label %1977

1969:                                             ; preds = %1963
  %1970 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %1971 = trunc i8 %1970 to i1
  br i1 %1971, label %1972, label %1977

1972:                                             ; preds = %1969
  %1973 = load ptr, ptr %39, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1973, i32 0, i32 4
  %1975 = getelementptr inbounds %class.ImVector.14, ptr %1974, i32 0, i32 2
  %1976 = load ptr, ptr %1975, align 8, !tbaa !128
  br label %1979

1977:                                             ; preds = %1969, %1963
  %1978 = load ptr, ptr %10, align 8, !tbaa !5
  br label %1979

1979:                                             ; preds = %1977, %1972
  %1980 = phi ptr [ %1976, %1972 ], [ %1978, %1977 ]
  store ptr %1980, ptr %93, align 8, !tbaa !5
  store ptr null, ptr %10, align 8, !tbaa !5
  %1981 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %1982 = trunc i8 %1981 to i1
  br i1 %1982, label %1993, label %1983

1983:                                             ; preds = %1979
  %1984 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %29, i32 noundef %1984, i32 noundef 1)
  %1985 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %94, ptr align 4 %1985, i64 8, i1 false), !tbaa.struct !38
  %1986 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %95, ptr align 4 %1986, i64 8, i1 false), !tbaa.struct !38
  %1987 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1988 = load ptr, ptr %20, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.ImGuiStyle, ptr %1988, i32 0, i32 11
  %1990 = load float, ptr %1989, align 4, !tbaa !146
  %1991 = load <2 x float>, ptr %94, align 4
  %1992 = load <2 x float>, ptr %95, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %1991, <2 x float> %1992, i32 noundef %1987, i1 noundef zeroext true, float noundef %1990)
  br label %1993

1993:                                             ; preds = %1983, %1979
  call void @llvm.lifetime.start.p0(i64 16, ptr %96) #13
  %1994 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  %1995 = getelementptr inbounds %struct.ImVec2, ptr %1994, i32 0, i32 0
  %1996 = load float, ptr %1995, align 4, !tbaa !108
  %1997 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  %1998 = getelementptr inbounds %struct.ImVec2, ptr %1997, i32 0, i32 1
  %1999 = load float, ptr %1998, align 4, !tbaa !147
  %2000 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  %2001 = getelementptr inbounds %struct.ImVec2, ptr %2000, i32 0, i32 0
  %2002 = load float, ptr %2001, align 4, !tbaa !108
  %2003 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %2004 = load float, ptr %2003, align 4, !tbaa !43
  %2005 = fadd float %2002, %2004
  %2006 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  %2007 = getelementptr inbounds %struct.ImVec2, ptr %2006, i32 0, i32 1
  %2008 = load float, ptr %2007, align 4, !tbaa !147
  %2009 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 1
  %2010 = load float, ptr %2009, align 4, !tbaa !40
  %2011 = fadd float %2008, %2010
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %96, float noundef %1996, float noundef %1999, float noundef %2005, float noundef %2011)
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #13
  %2012 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2013 = trunc i8 %2012 to i1
  br i1 %2013, label %2014, label %2018

2014:                                             ; preds = %1993
  %2015 = load ptr, ptr %34, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.ImGuiWindow, ptr %2015, i32 0, i32 43
  %2017 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2016, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %97, ptr align 8 %2017, i64 8, i1 false), !tbaa.struct !38
  br label %2023

2018:                                             ; preds = %1993
  %2019 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  %2020 = load ptr, ptr %20, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.ImGuiStyle, ptr %2020, i32 0, i32 10
  %2022 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2019, ptr noundef nonnull align 4 dereferenceable(8) %2021)
  store <2 x float> %2022, ptr %97, align 4
  br label %2023

2023:                                             ; preds = %2018, %2014
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %98, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #13
  %2024 = load ptr, ptr %39, align 8, !tbaa !5
  %2025 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2024, i32 0, i32 0
  %2026 = load i32, ptr %2025, align 8, !tbaa !88
  %2027 = load i32, ptr %25, align 4, !tbaa !9
  %2028 = icmp eq i32 %2026, %2027
  br i1 %2028, label %2029, label %2039

2029:                                             ; preds = %2023
  %2030 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2031 = trunc i8 %2030 to i1
  br i1 %2031, label %2032, label %2039

2032:                                             ; preds = %2029
  %2033 = load ptr, ptr %18, align 8, !tbaa !5
  %2034 = getelementptr inbounds %struct.ImGuiContext, ptr %2033, i32 0, i32 27
  %2035 = load i32, ptr %2034, align 8, !tbaa !87
  %2036 = load ptr, ptr %34, align 8, !tbaa !5
  %2037 = call noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %2036, ptr noundef @.str.80, ptr noundef null)
  %2038 = icmp eq i32 %2035, %2037
  br label %2039

2039:                                             ; preds = %2032, %2029, %2023
  %2040 = phi i1 [ false, %2029 ], [ false, %2023 ], [ %2038, %2032 ]
  %2041 = zext i1 %2040 to i8
  store i8 %2041, ptr %99, align 1, !tbaa !37
  %2042 = load ptr, ptr %18, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.ImGuiContext, ptr %2042, i32 0, i32 27
  %2044 = load i32, ptr %2043, align 8, !tbaa !87
  %2045 = load i32, ptr %25, align 4, !tbaa !9
  %2046 = icmp eq i32 %2044, %2045
  br i1 %2046, label %2050, label %2047

2047:                                             ; preds = %2039
  %2048 = load i8, ptr %99, align 1, !tbaa !37, !range !35, !noundef !36
  %2049 = trunc i8 %2048 to i1
  br i1 %2049, label %2050, label %2577

2050:                                             ; preds = %2047, %2039
  %2051 = load ptr, ptr %19, align 8, !tbaa !5
  %2052 = getelementptr inbounds %struct.ImGuiIO, ptr %2051, i32 0, i32 3
  %2053 = load float, ptr %2052, align 8, !tbaa !148
  %2054 = load ptr, ptr %39, align 8, !tbaa !5
  %2055 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2054, i32 0, i32 10
  %2056 = load float, ptr %2055, align 4, !tbaa !149
  %2057 = fadd float %2056, %2053
  store float %2057, ptr %2055, align 4, !tbaa !149
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #13
  %2058 = load ptr, ptr %39, align 8, !tbaa !5
  %2059 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2058, i32 0, i32 2
  %2060 = getelementptr inbounds %class.ImVector.7, ptr %2059, i32 0, i32 2
  %2061 = load ptr, ptr %2060, align 8, !tbaa !96
  store ptr %2061, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %101)
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %102)
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #13
  %2062 = load ptr, ptr %100, align 8, !tbaa !5
  %2063 = load ptr, ptr %39, align 8, !tbaa !5
  %2064 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2063, i32 0, i32 9
  %2065 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2064, i32 0, i32 0
  %2066 = load i32, ptr %2065, align 8, !tbaa !142
  %2067 = sext i32 %2066 to i64
  %2068 = getelementptr inbounds i16, ptr %2062, i64 %2067
  %2069 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 0
  store ptr %2068, ptr %2069, align 16, !tbaa !5
  %2070 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 1
  store ptr null, ptr %2070, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #13
  store i32 1, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %105, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv.searches_result_line_number, i64 8, i1 false)
  %2071 = load ptr, ptr %39, align 8, !tbaa !5
  %2072 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2071, i32 0, i32 9
  %2073 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2072, i32 0, i32 1
  %2074 = load i32, ptr %2073, align 4, !tbaa !126
  %2075 = load ptr, ptr %39, align 8, !tbaa !5
  %2076 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2075, i32 0, i32 9
  %2077 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2076, i32 0, i32 2
  %2078 = load i32, ptr %2077, align 8, !tbaa !127
  %2079 = icmp ne i32 %2074, %2078
  br i1 %2079, label %2080, label %2097

2080:                                             ; preds = %2050
  %2081 = load ptr, ptr %100, align 8, !tbaa !5
  %2082 = load ptr, ptr %39, align 8, !tbaa !5
  %2083 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2082, i32 0, i32 9
  %2084 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2083, i32 0, i32 1
  %2085 = load i32, ptr %2084, align 4, !tbaa !126
  %2086 = load ptr, ptr %39, align 8, !tbaa !5
  %2087 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2086, i32 0, i32 9
  %2088 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2087, i32 0, i32 2
  %2089 = load i32, ptr %2088, align 8, !tbaa !127
  %2090 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2085, i32 noundef %2089)
  %2091 = sext i32 %2090 to i64
  %2092 = getelementptr inbounds i16, ptr %2081, i64 %2091
  %2093 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 1
  store ptr %2092, ptr %2093, align 8, !tbaa !5
  %2094 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 1
  store i32 -1, ptr %2094, align 4, !tbaa !9
  %2095 = load i32, ptr %104, align 4, !tbaa !9
  %2096 = add nsw i32 %2095, 1
  store i32 %2096, ptr %104, align 4, !tbaa !9
  br label %2097

2097:                                             ; preds = %2080, %2050
  %2098 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2099 = trunc i8 %2098 to i1
  %2100 = zext i1 %2099 to i64
  %2101 = select i1 %2099, i32 1, i32 0
  %2102 = load i32, ptr %104, align 4, !tbaa !9
  %2103 = add nsw i32 %2102, %2101
  store i32 %2103, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #13
  store i32 0, ptr %106, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #13
  %2104 = load ptr, ptr %100, align 8, !tbaa !5
  store ptr %2104, ptr %107, align 8, !tbaa !5
  br label %2105

2105:                                             ; preds = %2154, %2097
  %2106 = load ptr, ptr %107, align 8, !tbaa !5
  %2107 = load i16, ptr %2106, align 2, !tbaa !118
  %2108 = zext i16 %2107 to i32
  %2109 = icmp ne i32 %2108, 0
  br i1 %2109, label %2111, label %2110

2110:                                             ; preds = %2105
  store i32 7, ptr %17, align 4
  br label %2157

2111:                                             ; preds = %2105
  %2112 = load ptr, ptr %107, align 8, !tbaa !5
  %2113 = load i16, ptr %2112, align 2, !tbaa !118
  %2114 = zext i16 %2113 to i32
  %2115 = icmp eq i32 %2114, 10
  br i1 %2115, label %2116, label %2153

2116:                                             ; preds = %2111
  %2117 = load i32, ptr %106, align 4, !tbaa !9
  %2118 = add nsw i32 %2117, 1
  store i32 %2118, ptr %106, align 4, !tbaa !9
  %2119 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 0
  %2120 = load i32, ptr %2119, align 4, !tbaa !9
  %2121 = icmp eq i32 %2120, -1
  br i1 %2121, label %2122, label %2135

2122:                                             ; preds = %2116
  %2123 = load ptr, ptr %107, align 8, !tbaa !5
  %2124 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 0
  %2125 = load ptr, ptr %2124, align 16, !tbaa !5
  %2126 = icmp uge ptr %2123, %2125
  br i1 %2126, label %2127, label %2135

2127:                                             ; preds = %2122
  %2128 = load i32, ptr %106, align 4, !tbaa !9
  %2129 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 0
  store i32 %2128, ptr %2129, align 4, !tbaa !9
  %2130 = load i32, ptr %104, align 4, !tbaa !9
  %2131 = add nsw i32 %2130, -1
  store i32 %2131, ptr %104, align 4, !tbaa !9
  %2132 = icmp sle i32 %2131, 0
  br i1 %2132, label %2133, label %2134

2133:                                             ; preds = %2127
  store i32 7, ptr %17, align 4
  br label %2157

2134:                                             ; preds = %2127
  br label %2135

2135:                                             ; preds = %2134, %2122, %2116
  %2136 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 1
  %2137 = load i32, ptr %2136, align 4, !tbaa !9
  %2138 = icmp eq i32 %2137, -1
  br i1 %2138, label %2139, label %2152

2139:                                             ; preds = %2135
  %2140 = load ptr, ptr %107, align 8, !tbaa !5
  %2141 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 1
  %2142 = load ptr, ptr %2141, align 8, !tbaa !5
  %2143 = icmp uge ptr %2140, %2142
  br i1 %2143, label %2144, label %2152

2144:                                             ; preds = %2139
  %2145 = load i32, ptr %106, align 4, !tbaa !9
  %2146 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 1
  store i32 %2145, ptr %2146, align 4, !tbaa !9
  %2147 = load i32, ptr %104, align 4, !tbaa !9
  %2148 = add nsw i32 %2147, -1
  store i32 %2148, ptr %104, align 4, !tbaa !9
  %2149 = icmp sle i32 %2148, 0
  br i1 %2149, label %2150, label %2151

2150:                                             ; preds = %2144
  store i32 7, ptr %17, align 4
  br label %2157

2151:                                             ; preds = %2144
  br label %2152

2152:                                             ; preds = %2151, %2139, %2135
  br label %2153

2153:                                             ; preds = %2152, %2111
  br label %2154

2154:                                             ; preds = %2153
  %2155 = load ptr, ptr %107, align 8, !tbaa !5
  %2156 = getelementptr inbounds i16, ptr %2155, i32 1
  store ptr %2156, ptr %107, align 8, !tbaa !5
  br label %2105, !llvm.loop !150

2157:                                             ; preds = %2150, %2133, %2110
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  br label %2158

2158:                                             ; preds = %2157
  %2159 = load i32, ptr %106, align 4, !tbaa !9
  %2160 = add nsw i32 %2159, 1
  store i32 %2160, ptr %106, align 4, !tbaa !9
  %2161 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 0
  %2162 = load i32, ptr %2161, align 4, !tbaa !9
  %2163 = icmp eq i32 %2162, -1
  br i1 %2163, label %2164, label %2167

2164:                                             ; preds = %2158
  %2165 = load i32, ptr %106, align 4, !tbaa !9
  %2166 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 0
  store i32 %2165, ptr %2166, align 4, !tbaa !9
  br label %2167

2167:                                             ; preds = %2164, %2158
  %2168 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 1
  %2169 = load i32, ptr %2168, align 4, !tbaa !9
  %2170 = icmp eq i32 %2169, -1
  br i1 %2170, label %2171, label %2174

2171:                                             ; preds = %2167
  %2172 = load i32, ptr %106, align 4, !tbaa !9
  %2173 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 1
  store i32 %2172, ptr %2173, align 4, !tbaa !9
  br label %2174

2174:                                             ; preds = %2171, %2167
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #13
  %2175 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 0
  %2176 = load ptr, ptr %2175, align 16, !tbaa !5
  %2177 = load ptr, ptr %100, align 8, !tbaa !5
  %2178 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2176, ptr noundef %2177)
  %2179 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 0
  %2180 = load ptr, ptr %2179, align 16, !tbaa !5
  %2181 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2178, ptr noundef %2180, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2181, ptr %108, align 4
  %2182 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 0
  %2183 = load float, ptr %2182, align 4, !tbaa !43
  %2184 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 0
  store float %2183, ptr %2184, align 4, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #13
  %2185 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 0
  %2186 = load i32, ptr %2185, align 4, !tbaa !9
  %2187 = sitofp i32 %2186 to float
  %2188 = load ptr, ptr %18, align 8, !tbaa !5
  %2189 = getelementptr inbounds %struct.ImGuiContext, ptr %2188, i32 0, i32 6
  %2190 = load float, ptr %2189, align 8, !tbaa !112
  %2191 = fmul float %2187, %2190
  %2192 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 1
  store float %2191, ptr %2192, align 4, !tbaa !40
  %2193 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 1
  %2194 = load i32, ptr %2193, align 4, !tbaa !9
  %2195 = icmp sge i32 %2194, 0
  br i1 %2195, label %2196, label %2215

2196:                                             ; preds = %2174
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #13
  %2197 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 1
  %2198 = load ptr, ptr %2197, align 8, !tbaa !5
  %2199 = load ptr, ptr %100, align 8, !tbaa !5
  %2200 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2198, ptr noundef %2199)
  %2201 = getelementptr inbounds [2 x ptr], ptr %103, i64 0, i64 1
  %2202 = load ptr, ptr %2201, align 8, !tbaa !5
  %2203 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2200, ptr noundef %2202, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2203, ptr %109, align 4
  %2204 = getelementptr inbounds %struct.ImVec2, ptr %109, i32 0, i32 0
  %2205 = load float, ptr %2204, align 4, !tbaa !43
  %2206 = getelementptr inbounds %struct.ImVec2, ptr %102, i32 0, i32 0
  store float %2205, ptr %2206, align 4, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #13
  %2207 = getelementptr inbounds [2 x i32], ptr %105, i64 0, i64 1
  %2208 = load i32, ptr %2207, align 4, !tbaa !9
  %2209 = sitofp i32 %2208 to float
  %2210 = load ptr, ptr %18, align 8, !tbaa !5
  %2211 = getelementptr inbounds %struct.ImGuiContext, ptr %2210, i32 0, i32 6
  %2212 = load float, ptr %2211, align 8, !tbaa !112
  %2213 = fmul float %2209, %2212
  %2214 = getelementptr inbounds %struct.ImVec2, ptr %102, i32 0, i32 1
  store float %2213, ptr %2214, align 4, !tbaa !40
  br label %2215

2215:                                             ; preds = %2196, %2174
  %2216 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2217 = trunc i8 %2216 to i1
  br i1 %2217, label %2218, label %2227

2218:                                             ; preds = %2215
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #13
  %2219 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %2220 = load float, ptr %2219, align 4, !tbaa !43
  %2221 = load i32, ptr %106, align 4, !tbaa !9
  %2222 = sitofp i32 %2221 to float
  %2223 = load ptr, ptr %18, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.ImGuiContext, ptr %2223, i32 0, i32 6
  %2225 = load float, ptr %2224, align 8, !tbaa !112
  %2226 = fmul float %2222, %2225
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %110, float noundef %2220, float noundef %2226)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %98, ptr align 4 %110, i64 8, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #13
  br label %2227

2227:                                             ; preds = %2218, %2215
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #13
  %2228 = load ptr, ptr %39, align 8, !tbaa !5
  %2229 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2228, i32 0, i32 11
  %2230 = load i8, ptr %2229, align 8, !tbaa !117, !range !35, !noundef !36
  %2231 = trunc i8 %2230 to i1
  br i1 %2231, label %2232, label %2346

2232:                                             ; preds = %2227
  %2233 = load i32, ptr %13, align 4, !tbaa !9
  %2234 = and i32 %2233, 4096
  %2235 = icmp ne i32 %2234, 0
  br i1 %2235, label %2280, label %2236

2236:                                             ; preds = %2232
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #13
  %2237 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %2238 = load float, ptr %2237, align 4, !tbaa !43
  %2239 = fmul float %2238, 2.500000e-01
  store float %2239, ptr %111, align 4, !tbaa !39
  %2240 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 0
  %2241 = load float, ptr %2240, align 4, !tbaa !43
  %2242 = load ptr, ptr %39, align 8, !tbaa !5
  %2243 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2242, i32 0, i32 8
  %2244 = load float, ptr %2243, align 4, !tbaa !99
  %2245 = fcmp olt float %2241, %2244
  br i1 %2245, label %2246, label %2256

2246:                                             ; preds = %2236
  %2247 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 0
  %2248 = load float, ptr %2247, align 4, !tbaa !43
  %2249 = load float, ptr %111, align 4, !tbaa !39
  %2250 = fsub float %2248, %2249
  %2251 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2250)
  %2252 = fptosi float %2251 to i32
  %2253 = sitofp i32 %2252 to float
  %2254 = load ptr, ptr %39, align 8, !tbaa !5
  %2255 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2254, i32 0, i32 8
  store float %2253, ptr %2255, align 4, !tbaa !99
  br label %2279

2256:                                             ; preds = %2236
  %2257 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 0
  %2258 = load float, ptr %2257, align 4, !tbaa !43
  %2259 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %2260 = load float, ptr %2259, align 4, !tbaa !43
  %2261 = fsub float %2258, %2260
  %2262 = load ptr, ptr %39, align 8, !tbaa !5
  %2263 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2262, i32 0, i32 8
  %2264 = load float, ptr %2263, align 4, !tbaa !99
  %2265 = fcmp oge float %2261, %2264
  br i1 %2265, label %2266, label %2278

2266:                                             ; preds = %2256
  %2267 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 0
  %2268 = load float, ptr %2267, align 4, !tbaa !43
  %2269 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %2270 = load float, ptr %2269, align 4, !tbaa !43
  %2271 = fsub float %2268, %2270
  %2272 = load float, ptr %111, align 4, !tbaa !39
  %2273 = fadd float %2271, %2272
  %2274 = fptosi float %2273 to i32
  %2275 = sitofp i32 %2274 to float
  %2276 = load ptr, ptr %39, align 8, !tbaa !5
  %2277 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2276, i32 0, i32 8
  store float %2275, ptr %2277, align 4, !tbaa !99
  br label %2278

2278:                                             ; preds = %2266, %2256
  br label %2279

2279:                                             ; preds = %2278, %2246
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #13
  br label %2283

2280:                                             ; preds = %2232
  %2281 = load ptr, ptr %39, align 8, !tbaa !5
  %2282 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2281, i32 0, i32 8
  store float 0.000000e+00, ptr %2282, align 4, !tbaa !99
  br label %2283

2283:                                             ; preds = %2280, %2279
  %2284 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2285 = trunc i8 %2284 to i1
  br i1 %2285, label %2286, label %2345

2286:                                             ; preds = %2283
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #13
  %2287 = load ptr, ptr %34, align 8, !tbaa !5
  %2288 = getelementptr inbounds %struct.ImGuiWindow, ptr %2287, i32 0, i32 14
  %2289 = getelementptr inbounds %struct.ImVec2, ptr %2288, i32 0, i32 1
  %2290 = load float, ptr %2289, align 4, !tbaa !124
  store float %2290, ptr %112, align 4, !tbaa !39
  %2291 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 1
  %2292 = load float, ptr %2291, align 4, !tbaa !40
  %2293 = load ptr, ptr %18, align 8, !tbaa !5
  %2294 = getelementptr inbounds %struct.ImGuiContext, ptr %2293, i32 0, i32 6
  %2295 = load float, ptr %2294, align 8, !tbaa !112
  %2296 = fsub float %2292, %2295
  %2297 = load float, ptr %112, align 4, !tbaa !39
  %2298 = fcmp olt float %2296, %2297
  br i1 %2298, label %2299, label %2307

2299:                                             ; preds = %2286
  %2300 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 1
  %2301 = load float, ptr %2300, align 4, !tbaa !40
  %2302 = load ptr, ptr %18, align 8, !tbaa !5
  %2303 = getelementptr inbounds %struct.ImGuiContext, ptr %2302, i32 0, i32 6
  %2304 = load float, ptr %2303, align 8, !tbaa !112
  %2305 = fsub float %2301, %2304
  %2306 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2305)
  store float %2306, ptr %112, align 4, !tbaa !39
  br label %2322

2307:                                             ; preds = %2286
  %2308 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 1
  %2309 = load float, ptr %2308, align 4, !tbaa !40
  %2310 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 1
  %2311 = load float, ptr %2310, align 4, !tbaa !40
  %2312 = fsub float %2309, %2311
  %2313 = load float, ptr %112, align 4, !tbaa !39
  %2314 = fcmp oge float %2312, %2313
  br i1 %2314, label %2315, label %2321

2315:                                             ; preds = %2307
  %2316 = getelementptr inbounds %struct.ImVec2, ptr %101, i32 0, i32 1
  %2317 = load float, ptr %2316, align 4, !tbaa !40
  %2318 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 1
  %2319 = load float, ptr %2318, align 4, !tbaa !40
  %2320 = fsub float %2317, %2319
  store float %2320, ptr %112, align 4, !tbaa !39
  br label %2321

2321:                                             ; preds = %2315, %2307
  br label %2322

2322:                                             ; preds = %2321, %2299
  %2323 = load ptr, ptr %34, align 8, !tbaa !5
  %2324 = getelementptr inbounds %struct.ImGuiWindow, ptr %2323, i32 0, i32 14
  %2325 = getelementptr inbounds %struct.ImVec2, ptr %2324, i32 0, i32 1
  %2326 = load float, ptr %2325, align 4, !tbaa !124
  %2327 = load float, ptr %112, align 4, !tbaa !39
  %2328 = fsub float %2326, %2327
  %2329 = load ptr, ptr %34, align 8, !tbaa !5
  %2330 = getelementptr inbounds %struct.ImGuiWindow, ptr %2329, i32 0, i32 43
  %2331 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2330, i32 0, i32 0
  %2332 = getelementptr inbounds %struct.ImVec2, ptr %2331, i32 0, i32 1
  %2333 = load float, ptr %2332, align 4, !tbaa !111
  %2334 = fadd float %2333, %2328
  store float %2334, ptr %2332, align 4, !tbaa !111
  %2335 = load float, ptr %112, align 4, !tbaa !39
  %2336 = load ptr, ptr %34, align 8, !tbaa !5
  %2337 = getelementptr inbounds %struct.ImGuiWindow, ptr %2336, i32 0, i32 14
  %2338 = getelementptr inbounds %struct.ImVec2, ptr %2337, i32 0, i32 1
  store float %2335, ptr %2338, align 4, !tbaa !124
  %2339 = load ptr, ptr %34, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiWindow, ptr %2339, i32 0, i32 43
  %2341 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2340, i32 0, i32 0
  %2342 = getelementptr inbounds %struct.ImVec2, ptr %2341, i32 0, i32 1
  %2343 = load float, ptr %2342, align 4, !tbaa !111
  %2344 = getelementptr inbounds %struct.ImVec2, ptr %97, i32 0, i32 1
  store float %2343, ptr %2344, align 4, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #13
  br label %2345

2345:                                             ; preds = %2322, %2283
  br label %2346

2346:                                             ; preds = %2345, %2227
  %2347 = load ptr, ptr %39, align 8, !tbaa !5
  %2348 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2347, i32 0, i32 11
  store i8 0, ptr %2348, align 8, !tbaa !117
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #13
  %2349 = load ptr, ptr %39, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2349, i32 0, i32 8
  %2351 = load float, ptr %2350, align 4, !tbaa !99
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %113, float noundef %2351, float noundef 0.000000e+00)
  %2352 = load ptr, ptr %39, align 8, !tbaa !5
  %2353 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2352, i32 0, i32 9
  %2354 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2353, i32 0, i32 1
  %2355 = load i32, ptr %2354, align 4, !tbaa !126
  %2356 = load ptr, ptr %39, align 8, !tbaa !5
  %2357 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2356, i32 0, i32 9
  %2358 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2357, i32 0, i32 2
  %2359 = load i32, ptr %2358, align 8, !tbaa !127
  %2360 = icmp ne i32 %2355, %2359
  br i1 %2360, label %2361, label %2485

2361:                                             ; preds = %2346
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #13
  %2362 = load ptr, ptr %100, align 8, !tbaa !5
  %2363 = load ptr, ptr %39, align 8, !tbaa !5
  %2364 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2363, i32 0, i32 9
  %2365 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2364, i32 0, i32 1
  %2366 = load i32, ptr %2365, align 4, !tbaa !126
  %2367 = load ptr, ptr %39, align 8, !tbaa !5
  %2368 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2367, i32 0, i32 9
  %2369 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2368, i32 0, i32 2
  %2370 = load i32, ptr %2369, align 8, !tbaa !127
  %2371 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2366, i32 noundef %2370)
  %2372 = sext i32 %2371 to i64
  %2373 = getelementptr inbounds i16, ptr %2362, i64 %2372
  store ptr %2373, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #13
  %2374 = load ptr, ptr %100, align 8, !tbaa !5
  %2375 = load ptr, ptr %39, align 8, !tbaa !5
  %2376 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2375, i32 0, i32 9
  %2377 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2376, i32 0, i32 1
  %2378 = load i32, ptr %2377, align 4, !tbaa !126
  %2379 = load ptr, ptr %39, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2379, i32 0, i32 9
  %2381 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2380, i32 0, i32 2
  %2382 = load i32, ptr %2381, align 8, !tbaa !127
  %2383 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2378, i32 noundef %2382)
  %2384 = sext i32 %2383 to i64
  %2385 = getelementptr inbounds i16, ptr %2374, i64 %2384
  store ptr %2385, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #13
  %2386 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2387 = trunc i8 %2386 to i1
  %2388 = zext i1 %2387 to i64
  %2389 = select i1 %2387, float 0.000000e+00, float -1.000000e+00
  store float %2389, ptr %116, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #13
  %2390 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2391 = trunc i8 %2390 to i1
  %2392 = zext i1 %2391 to i64
  %2393 = select i1 %2391, float 0.000000e+00, float 2.000000e+00
  store float %2393, ptr %117, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #13
  %2394 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 37, float noundef 1.000000e+00)
  store i32 %2394, ptr %118, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #13
  %2395 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %97, ptr noundef nonnull align 4 dereferenceable(8) %102)
  store <2 x float> %2395, ptr %120, align 4
  %2396 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %120, ptr noundef nonnull align 4 dereferenceable(8) %113)
  store <2 x float> %2396, ptr %119, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #13
  %2397 = load ptr, ptr %114, align 8, !tbaa !5
  store ptr %2397, ptr %121, align 8, !tbaa !5
  br label %2398

2398:                                             ; preds = %2470, %2361
  %2399 = load ptr, ptr %121, align 8, !tbaa !5
  %2400 = load ptr, ptr %115, align 8, !tbaa !5
  %2401 = icmp ult ptr %2399, %2400
  br i1 %2401, label %2403, label %2402

2402:                                             ; preds = %2398
  store i32 10, ptr %17, align 4
  br label %2483

2403:                                             ; preds = %2398
  %2404 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 1
  %2405 = load float, ptr %2404, align 4, !tbaa !40
  %2406 = getelementptr inbounds %struct.ImVec4, ptr %96, i32 0, i32 3
  %2407 = load float, ptr %2406, align 4, !tbaa !151
  %2408 = load ptr, ptr %18, align 8, !tbaa !5
  %2409 = getelementptr inbounds %struct.ImGuiContext, ptr %2408, i32 0, i32 6
  %2410 = load float, ptr %2409, align 8, !tbaa !112
  %2411 = fadd float %2407, %2410
  %2412 = fcmp ogt float %2405, %2411
  br i1 %2412, label %2413, label %2414

2413:                                             ; preds = %2403
  store i32 10, ptr %17, align 4
  br label %2483

2414:                                             ; preds = %2403
  %2415 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 1
  %2416 = load float, ptr %2415, align 4, !tbaa !40
  %2417 = getelementptr inbounds %struct.ImVec4, ptr %96, i32 0, i32 1
  %2418 = load float, ptr %2417, align 4, !tbaa !152
  %2419 = fcmp olt float %2416, %2418
  br i1 %2419, label %2420, label %2434

2420:                                             ; preds = %2414
  br label %2421

2421:                                             ; preds = %2432, %2420
  %2422 = load ptr, ptr %121, align 8, !tbaa !5
  %2423 = load ptr, ptr %115, align 8, !tbaa !5
  %2424 = icmp ult ptr %2422, %2423
  br i1 %2424, label %2425, label %2433

2425:                                             ; preds = %2421
  %2426 = load ptr, ptr %121, align 8, !tbaa !5
  %2427 = getelementptr inbounds i16, ptr %2426, i32 1
  store ptr %2427, ptr %121, align 8, !tbaa !5
  %2428 = load i16, ptr %2426, align 2, !tbaa !118
  %2429 = zext i16 %2428 to i32
  %2430 = icmp eq i32 %2429, 10
  br i1 %2430, label %2431, label %2432

2431:                                             ; preds = %2425
  br label %2433

2432:                                             ; preds = %2425
  br label %2421, !llvm.loop !153

2433:                                             ; preds = %2431, %2421
  br label %2470

2434:                                             ; preds = %2414
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #13
  %2435 = load ptr, ptr %121, align 8, !tbaa !5
  %2436 = load ptr, ptr %115, align 8, !tbaa !5
  %2437 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2435, ptr noundef %2436, ptr noundef %121, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %2437, ptr %122, align 4
  %2438 = getelementptr inbounds %struct.ImVec2, ptr %122, i32 0, i32 0
  %2439 = load float, ptr %2438, align 4, !tbaa !43
  %2440 = fcmp ole float %2439, 0.000000e+00
  br i1 %2440, label %2441, label %2450

2441:                                             ; preds = %2434
  %2442 = load ptr, ptr %18, align 8, !tbaa !5
  %2443 = getelementptr inbounds %struct.ImGuiContext, ptr %2442, i32 0, i32 5
  %2444 = load ptr, ptr %2443, align 8, !tbaa !75
  %2445 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(112) %2444, i16 noundef zeroext 32)
  %2446 = fmul float %2445, 5.000000e-01
  %2447 = fptosi float %2446 to i32
  %2448 = sitofp i32 %2447 to float
  %2449 = getelementptr inbounds %struct.ImVec2, ptr %122, i32 0, i32 0
  store float %2448, ptr %2449, align 4, !tbaa !43
  br label %2450

2450:                                             ; preds = %2441, %2434
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #13
  %2451 = load float, ptr %116, align 4, !tbaa !39
  %2452 = load ptr, ptr %18, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.ImGuiContext, ptr %2452, i32 0, i32 6
  %2454 = load float, ptr %2453, align 8, !tbaa !112
  %2455 = fsub float %2451, %2454
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %125, float noundef 0.000000e+00, float noundef %2455)
  %2456 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %125)
  store <2 x float> %2456, ptr %124, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #13
  %2457 = getelementptr inbounds %struct.ImVec2, ptr %122, i32 0, i32 0
  %2458 = load float, ptr %2457, align 4, !tbaa !43
  %2459 = load float, ptr %117, align 4, !tbaa !39
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %127, float noundef %2458, float noundef %2459)
  %2460 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %127)
  store <2 x float> %2460, ptr %126, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %123, ptr noundef nonnull align 4 dereferenceable(8) %124, ptr noundef nonnull align 4 dereferenceable(8) %126)
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %128) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %128, ptr noundef nonnull align 4 dereferenceable(16) %96)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %123, ptr noundef nonnull align 4 dereferenceable(16) %128)
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %129, ptr noundef nonnull align 4 dereferenceable(16) %96)
  %2461 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %123, ptr noundef nonnull align 4 dereferenceable(16) %129)
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #13
  br i1 %2461, label %2462, label %2469

2462:                                             ; preds = %2450
  %2463 = load ptr, ptr %34, align 8, !tbaa !5
  %2464 = getelementptr inbounds %struct.ImGuiWindow, ptr %2463, i32 0, i32 57
  %2465 = load ptr, ptr %2464, align 8, !tbaa !154
  %2466 = getelementptr inbounds %struct.ImRect, ptr %123, i32 0, i32 0
  %2467 = getelementptr inbounds %struct.ImRect, ptr %123, i32 0, i32 1
  %2468 = load i32, ptr %118, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %2465, ptr noundef nonnull align 4 dereferenceable(8) %2466, ptr noundef nonnull align 4 dereferenceable(8) %2467, i32 noundef %2468, float noundef 0.000000e+00, i32 noundef 15)
  br label %2469

2469:                                             ; preds = %2462, %2450
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #13
  br label %2470

2470:                                             ; preds = %2469, %2433
  %2471 = getelementptr inbounds %struct.ImVec2, ptr %97, i32 0, i32 0
  %2472 = load float, ptr %2471, align 4, !tbaa !43
  %2473 = getelementptr inbounds %struct.ImVec2, ptr %113, i32 0, i32 0
  %2474 = load float, ptr %2473, align 4, !tbaa !43
  %2475 = fsub float %2472, %2474
  %2476 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 0
  store float %2475, ptr %2476, align 4, !tbaa !43
  %2477 = load ptr, ptr %18, align 8, !tbaa !5
  %2478 = getelementptr inbounds %struct.ImGuiContext, ptr %2477, i32 0, i32 6
  %2479 = load float, ptr %2478, align 8, !tbaa !112
  %2480 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 1
  %2481 = load float, ptr %2480, align 4, !tbaa !40
  %2482 = fadd float %2481, %2479
  store float %2482, ptr %2480, align 4, !tbaa !40
  br label %2398, !llvm.loop !155

2483:                                             ; preds = %2413, %2402
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #13
  br label %2484

2484:                                             ; preds = %2483
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #13
  br label %2485

2485:                                             ; preds = %2484, %2346
  %2486 = load ptr, ptr %34, align 8, !tbaa !5
  %2487 = getelementptr inbounds %struct.ImGuiWindow, ptr %2486, i32 0, i32 57
  %2488 = load ptr, ptr %2487, align 8, !tbaa !154
  %2489 = load ptr, ptr %18, align 8, !tbaa !5
  %2490 = getelementptr inbounds %struct.ImGuiContext, ptr %2489, i32 0, i32 5
  %2491 = load ptr, ptr %2490, align 8, !tbaa !75
  %2492 = load ptr, ptr %18, align 8, !tbaa !5
  %2493 = getelementptr inbounds %struct.ImGuiContext, ptr %2492, i32 0, i32 6
  %2494 = load float, ptr %2493, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #13
  %2495 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %97, ptr noundef nonnull align 4 dereferenceable(8) %113)
  store <2 x float> %2495, ptr %130, align 4
  %2496 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  %2497 = load ptr, ptr %93, align 8, !tbaa !5
  %2498 = load ptr, ptr %93, align 8, !tbaa !5
  %2499 = load ptr, ptr %39, align 8, !tbaa !5
  %2500 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2499, i32 0, i32 5
  %2501 = load i32, ptr %2500, align 8, !tbaa !98
  %2502 = sext i32 %2501 to i64
  %2503 = getelementptr inbounds i8, ptr %2498, i64 %2502
  %2504 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2505 = trunc i8 %2504 to i1
  br i1 %2505, label %2506, label %2507

2506:                                             ; preds = %2485
  br label %2508

2507:                                             ; preds = %2485
  br label %2508

2508:                                             ; preds = %2507, %2506
  %2509 = phi ptr [ null, %2506 ], [ %96, %2507 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %2488, ptr noundef %2491, float noundef %2494, ptr noundef nonnull align 4 dereferenceable(8) %130, i32 noundef %2496, ptr noundef %2497, ptr noundef %2503, float noundef 0.000000e+00, ptr noundef %2509)
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr %131) #13
  %2510 = load ptr, ptr %18, align 8, !tbaa !5
  %2511 = getelementptr inbounds %struct.ImGuiContext, ptr %2510, i32 0, i32 3
  %2512 = getelementptr inbounds %struct.ImGuiIO, ptr %2511, i32 0, i32 22
  %2513 = load i8, ptr %2512, align 1, !tbaa !156, !range !35, !noundef !36
  %2514 = trunc i8 %2513 to i1
  br i1 %2514, label %2515, label %2528

2515:                                             ; preds = %2508
  %2516 = load ptr, ptr %18, align 8, !tbaa !5
  %2517 = getelementptr inbounds %struct.ImGuiContext, ptr %2516, i32 0, i32 115
  %2518 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2517, i32 0, i32 10
  %2519 = load float, ptr %2518, align 4, !tbaa !157
  %2520 = fcmp ole float %2519, 0.000000e+00
  br i1 %2520, label %2528, label %2521

2521:                                             ; preds = %2515
  %2522 = load ptr, ptr %18, align 8, !tbaa !5
  %2523 = getelementptr inbounds %struct.ImGuiContext, ptr %2522, i32 0, i32 115
  %2524 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %2523, i32 0, i32 10
  %2525 = load float, ptr %2524, align 4, !tbaa !157
  %2526 = call noundef float @_ZL6ImFmodff(float noundef %2525, float noundef 0x3FF3333340000000)
  %2527 = fcmp ole float %2526, 0x3FE99999A0000000
  br label %2528

2528:                                             ; preds = %2521, %2515, %2508
  %2529 = phi i1 [ true, %2515 ], [ true, %2508 ], [ %2527, %2521 ]
  %2530 = zext i1 %2529 to i8
  store i8 %2530, ptr %131, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #13
  %2531 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %97, ptr noundef nonnull align 4 dereferenceable(8) %101)
  store <2 x float> %2531, ptr %133, align 4
  %2532 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %133, ptr noundef nonnull align 4 dereferenceable(8) %113)
  store <2 x float> %2532, ptr %132, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %134) #13
  %2533 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2534 = load float, ptr %2533, align 4, !tbaa !43
  %2535 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %2536 = load float, ptr %2535, align 4, !tbaa !40
  %2537 = load ptr, ptr %18, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.ImGuiContext, ptr %2537, i32 0, i32 6
  %2539 = load float, ptr %2538, align 8, !tbaa !112
  %2540 = fsub float %2536, %2539
  %2541 = fadd float %2540, 5.000000e-01
  %2542 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2543 = load float, ptr %2542, align 4, !tbaa !43
  %2544 = fadd float %2543, 1.000000e+00
  %2545 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %2546 = load float, ptr %2545, align 4, !tbaa !40
  %2547 = fsub float %2546, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %134, float noundef %2534, float noundef %2541, float noundef %2544, float noundef %2547)
  %2548 = load i8, ptr %131, align 1, !tbaa !37, !range !35, !noundef !36
  %2549 = trunc i8 %2548 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %135) #13
  br i1 %2549, label %2550, label %2552

2550:                                             ; preds = %2528
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %135, ptr noundef nonnull align 4 dereferenceable(16) %96)
  %2551 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %134, ptr noundef nonnull align 4 dereferenceable(16) %135)
  br label %2552

2552:                                             ; preds = %2550, %2528
  %2553 = phi i1 [ false, %2528 ], [ %2551, %2550 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %135) #13
  br i1 %2553, label %2554, label %2561

2554:                                             ; preds = %2552
  %2555 = load ptr, ptr %34, align 8, !tbaa !5
  %2556 = getelementptr inbounds %struct.ImGuiWindow, ptr %2555, i32 0, i32 57
  %2557 = load ptr, ptr %2556, align 8, !tbaa !154
  %2558 = getelementptr inbounds %struct.ImRect, ptr %134, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #13
  %2559 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %134)
  store <2 x float> %2559, ptr %136, align 4
  %2560 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %2557, ptr noundef nonnull align 4 dereferenceable(8) %2558, ptr noundef nonnull align 4 dereferenceable(8) %136, i32 noundef %2560, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #13
  br label %2561

2561:                                             ; preds = %2554, %2552
  %2562 = load i8, ptr %22, align 1, !tbaa !37, !range !35, !noundef !36
  %2563 = trunc i8 %2562 to i1
  br i1 %2563, label %2564, label %2576

2564:                                             ; preds = %2561
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #13
  %2565 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2566 = load float, ptr %2565, align 4, !tbaa !43
  %2567 = fsub float %2566, 1.000000e+00
  %2568 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %2569 = load float, ptr %2568, align 4, !tbaa !40
  %2570 = load ptr, ptr %18, align 8, !tbaa !5
  %2571 = getelementptr inbounds %struct.ImGuiContext, ptr %2570, i32 0, i32 6
  %2572 = load float, ptr %2571, align 8, !tbaa !112
  %2573 = fsub float %2569, %2572
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %137, float noundef %2567, float noundef %2573)
  %2574 = load ptr, ptr %18, align 8, !tbaa !5
  %2575 = getelementptr inbounds %struct.ImGuiContext, ptr %2574, i32 0, i32 127
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2575, ptr align 4 %137, i64 8, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #13
  br label %2576

2576:                                             ; preds = %2564, %2561
  call void @llvm.lifetime.end.p0(i64 16, ptr %134) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %131) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #13
  br label %2609

2577:                                             ; preds = %2047
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #13
  store ptr null, ptr %138, align 8, !tbaa !5
  %2578 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2579 = trunc i8 %2578 to i1
  br i1 %2579, label %2580, label %2590

2580:                                             ; preds = %2577
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #13
  %2581 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %2582 = load float, ptr %2581, align 4, !tbaa !43
  %2583 = load ptr, ptr %93, align 8, !tbaa !5
  %2584 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %2583, ptr noundef %138)
  %2585 = sitofp i32 %2584 to float
  %2586 = load ptr, ptr %18, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.ImGuiContext, ptr %2586, i32 0, i32 6
  %2588 = load float, ptr %2587, align 8, !tbaa !112
  %2589 = fmul float %2585, %2588
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %139, float noundef %2582, float noundef %2589)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %98, ptr align 4 %139, i64 8, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #13
  br label %2590

2590:                                             ; preds = %2580, %2577
  %2591 = load ptr, ptr %34, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.ImGuiWindow, ptr %2591, i32 0, i32 57
  %2593 = load ptr, ptr %2592, align 8, !tbaa !154
  %2594 = load ptr, ptr %18, align 8, !tbaa !5
  %2595 = getelementptr inbounds %struct.ImGuiContext, ptr %2594, i32 0, i32 5
  %2596 = load ptr, ptr %2595, align 8, !tbaa !75
  %2597 = load ptr, ptr %18, align 8, !tbaa !5
  %2598 = getelementptr inbounds %struct.ImGuiContext, ptr %2597, i32 0, i32 6
  %2599 = load float, ptr %2598, align 8, !tbaa !112
  %2600 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  %2601 = load ptr, ptr %93, align 8, !tbaa !5
  %2602 = load ptr, ptr %138, align 8, !tbaa !5
  %2603 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2604 = trunc i8 %2603 to i1
  br i1 %2604, label %2605, label %2606

2605:                                             ; preds = %2590
  br label %2607

2606:                                             ; preds = %2590
  br label %2607

2607:                                             ; preds = %2606, %2605
  %2608 = phi ptr [ null, %2605 ], [ %96, %2606 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %2593, ptr noundef %2596, float noundef %2599, ptr noundef nonnull align 4 dereferenceable(8) %97, i32 noundef %2600, ptr noundef %2601, ptr noundef %2602, float noundef 0.000000e+00, ptr noundef %2608)
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #13
  br label %2609

2609:                                             ; preds = %2607, %2576
  %2610 = load i8, ptr %21, align 1, !tbaa !37, !range !35, !noundef !36
  %2611 = trunc i8 %2610 to i1
  br i1 %2611, label %2612, label %2617

2612:                                             ; preds = %2609
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #13
  %2613 = load ptr, ptr %18, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.ImGuiContext, ptr %2613, i32 0, i32 6
  %2615 = load float, ptr %2614, align 8, !tbaa !112
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %141, float noundef 0.000000e+00, float noundef %2615)
  %2616 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %98, ptr noundef nonnull align 4 dereferenceable(8) %141)
  store <2 x float> %2616, ptr %140, align 4
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %140)
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #13
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %2617

2617:                                             ; preds = %2612, %2609
  %2618 = load i8, ptr %23, align 1, !tbaa !37, !range !35, !noundef !36
  %2619 = trunc i8 %2618 to i1
  br i1 %2619, label %2620, label %2621

2620:                                             ; preds = %2617
  call void @_ZN5ImGui7PopFontEv()
  br label %2621

2621:                                             ; preds = %2620, %2617
  %2622 = load ptr, ptr %18, align 8, !tbaa !5
  %2623 = getelementptr inbounds %struct.ImGuiContext, ptr %2622, i32 0, i32 135
  %2624 = load i8, ptr %2623, align 8, !tbaa !158, !range !35, !noundef !36
  %2625 = trunc i8 %2624 to i1
  br i1 %2625, label %2626, label %2631

2626:                                             ; preds = %2621
  %2627 = load i8, ptr %23, align 1, !tbaa !37, !range !35, !noundef !36
  %2628 = trunc i8 %2627 to i1
  br i1 %2628, label %2631, label %2629

2629:                                             ; preds = %2626
  %2630 = load ptr, ptr %93, align 8, !tbaa !5
  call void @_ZL15LogRenderedTextPK6ImVec2PKcS3_(ptr noundef %97, ptr noundef %2630, ptr noundef null)
  br label %2631

2631:                                             ; preds = %2629, %2626, %2621
  %2632 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %2633 = load float, ptr %2632, align 4, !tbaa !43
  %2634 = fcmp ogt float %2633, 0.000000e+00
  br i1 %2634, label %2635, label %2654

2635:                                             ; preds = %2631
  %2636 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 1
  %2637 = getelementptr inbounds %struct.ImVec2, ptr %2636, i32 0, i32 0
  %2638 = load float, ptr %2637, align 4, !tbaa !159
  %2639 = load ptr, ptr %20, align 8, !tbaa !5
  %2640 = getelementptr inbounds %struct.ImGuiStyle, ptr %2639, i32 0, i32 14
  %2641 = getelementptr inbounds %struct.ImVec2, ptr %2640, i32 0, i32 0
  %2642 = load float, ptr %2641, align 4, !tbaa !44
  %2643 = fadd float %2638, %2642
  %2644 = getelementptr inbounds %struct.ImRect, ptr %29, i32 0, i32 0
  %2645 = getelementptr inbounds %struct.ImVec2, ptr %2644, i32 0, i32 1
  %2646 = load float, ptr %2645, align 4, !tbaa !147
  %2647 = load ptr, ptr %20, align 8, !tbaa !5
  %2648 = getelementptr inbounds %struct.ImGuiStyle, ptr %2647, i32 0, i32 10
  %2649 = getelementptr inbounds %struct.ImVec2, ptr %2648, i32 0, i32 1
  %2650 = load float, ptr %2649, align 4, !tbaa !41
  %2651 = fadd float %2646, %2650
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %142, float noundef %2643, float noundef %2651)
  %2652 = load ptr, ptr %9, align 8, !tbaa !5
  %2653 = load <2 x float>, ptr %142, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %2653, ptr noundef %2652, ptr noundef null, i1 noundef zeroext true)
  br label %2654

2654:                                             ; preds = %2635, %2631
  %2655 = load i8, ptr %51, align 1, !tbaa !37, !range !35, !noundef !36
  %2656 = trunc i8 %2655 to i1
  br i1 %2656, label %2657, label %2659

2657:                                             ; preds = %2654
  %2658 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui20MarkItemValueChangedEj(i32 noundef %2658)
  br label %2659

2659:                                             ; preds = %2657, %2654
  %2660 = load i32, ptr %13, align 4, !tbaa !9
  %2661 = and i32 %2660, 32
  %2662 = icmp ne i32 %2661, 0
  br i1 %2662, label %2663, label %2666

2663:                                             ; preds = %2659
  %2664 = load i8, ptr %52, align 1, !tbaa !37, !range !35, !noundef !36
  %2665 = trunc i8 %2664 to i1
  store i1 %2665, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2669

2666:                                             ; preds = %2659
  %2667 = load i8, ptr %51, align 1, !tbaa !37, !range !35, !noundef !36
  %2668 = trunc i8 %2667 to i1
  store i1 %2668, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2669

2669:                                             ; preds = %2666, %2663
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #13
  br label %2670

2670:                                             ; preds = %2669, %287, %261
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  br label %2671

2671:                                             ; preds = %2670, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #13
  %2672 = load i1, ptr %8, align 1
  ret i1 %2672
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef, i32 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui10BeginGroupEv() #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8EndGroupEv() #11

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef, i32 noundef) #6

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

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

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(112), i16 noundef zeroext) #12

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #10 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18ImGuiTextEditState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3698)) #8 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN8ImGuiStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef, i32 noundef) #8

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN8ImGuiStbL18stb_textedit_clickEP18ImGuiTextEditStatePNS_17STB_TexteditStateEff(ptr noundef, ptr noundef, float noundef, float noundef) #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN8ImGuiStbL17stb_textedit_dragEP18ImGuiTextEditStatePNS_17STB_TexteditStateEff(ptr noundef, ptr noundef, float noundef, float noundef) #8

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #8

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN8ImGuiStbL16stb_textedit_cutEP18ImGuiTextEditStatePNS_17STB_TexteditStateE(ptr noundef, ptr noundef) #8

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN8ImGuiStbL18stb_textedit_pasteEP18ImGuiTextEditStatePNS_17STB_TexteditStateEPKti(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #8

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(112), i16 noundef zeroext) #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef, ptr noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8)) #11

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 nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #7 = { nounwind willreturn memory(read) "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"="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 #9 = { 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 #10 = { inlinehint 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 #11 = { 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 #12 = { "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 #13 = { nounwind }
attributes #14 = { noreturn nounwind }
attributes #15 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !15, i64 127}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !14, i64 72, !14, i64 76, !10, i64 80, !10, i64 84, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !15, i64 120, !15, i64 121, !15, i64 122, !15, i64 123, !15, i64 124, !15, i64 125, !15, i64 126, !15, i64 127, !15, i64 128, !15, i64 129, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !15, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !13, i64 184, !13, i64 192, !16, i64 200, !22, i64 496, !17, i64 512, !17, i64 528, !17, i64 544, !17, i64 560, !17, i64 576, !10, i64 592, !14, i64 596, !23, i64 600, !24, i64 648, !26, i64 664, !14, i64 680, !10, i64 684, !6, i64 688, !27, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !7, i64 912, !7, i64 920, !10, i64 952, !10, i64 956, !10, i64 960, !10, i64 964, !10, i64 968, !10, i64 972}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTS19ImGuiWindowTempData", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !14, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !17, i64 68, !17, i64 84, !15, i64 100, !15, i64 101, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !15, i64 120, !13, i64 124, !18, i64 136, !6, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !14, i64 172, !14, i64 176, !19, i64 184, !20, i64 200, !20, i64 216, !21, i64 232, !7, i64 248, !14, i64 272, !14, i64 276, !14, i64 280, !6, i64 288}
!17 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!18 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!19 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!20 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!22 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !7, i64 16, !7, i64 32}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS10ImDrawList", !28, i64 0, !29, i64 16, !30, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !6, i64 80, !6, i64 88, !31, i64 96, !32, i64 112, !33, i64 128, !10, i64 144, !10, i64 148, !34, i64 152}
!28 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!15, !15, i64 0}
!38 = !{i64 0, i64 4, !39, i64 4, i64 4, !39}
!39 = !{!14, !14, i64 0}
!40 = !{!13, !14, i64 4}
!41 = !{!42, !14, i64 56}
!42 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !13, i64 4, !14, i64 12, !14, i64 16, !13, i64 20, !13, i64 28, !14, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !13, i64 52, !14, i64 60, !14, i64 64, !13, i64 68, !13, i64 76, !13, i64 84, !14, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !13, i64 116, !13, i64 124, !13, i64 132, !14, i64 140, !15, i64 144, !15, i64 145, !14, i64 148, !7, i64 152}
!43 = !{!13, !14, i64 0}
!44 = !{!42, !14, i64 76}
!45 = !{!12, !10, i64 308}
!46 = !{!12, !10, i64 316}
!47 = !{!12, !14, i64 112}
!48 = !{!49, !10, i64 7328}
!49 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !50, i64 8, !42, i64 5408, !6, i64 6232, !14, i64 6240, !14, i64 6244, !51, i64 6248, !14, i64 6384, !10, i64 6388, !10, i64 6392, !10, i64 6396, !18, i64 6400, !18, i64 6416, !18, i64 6432, !24, i64 6448, !10, i64 6464, !6, i64 6472, !6, i64 6480, !6, i64 6488, !10, i64 6496, !15, i64 6500, !10, i64 6504, !14, i64 6508, !10, i64 6512, !10, i64 6516, !14, i64 6520, !15, i64 6524, !15, i64 6525, !15, i64 6526, !15, i64 6527, !15, i64 6528, !15, i64 6529, !10, i64 6532, !13, i64 6536, !6, i64 6544, !6, i64 6552, !53, i64 6560, !10, i64 6564, !14, i64 6568, !6, i64 6576, !54, i64 6584, !55, i64 6600, !56, i64 6616, !57, i64 6632, !57, i64 6648, !58, i64 6664, !15, i64 6776, !10, i64 6780, !6, i64 6784, !10, i64 6792, !10, i64 6796, !10, i64 6800, !10, i64 6804, !10, i64 6808, !10, i64 6812, !10, i64 6816, !10, i64 6820, !53, i64 6824, !17, i64 6828, !10, i64 6844, !6, i64 6848, !14, i64 6856, !14, i64 6860, !15, i64 6864, !10, i64 6868, !10, i64 6872, !15, i64 6876, !15, i64 6877, !15, i64 6878, !15, i64 6879, !15, i64 6880, !15, i64 6881, !15, i64 6882, !10, i64 6884, !17, i64 6888, !15, i64 6904, !15, i64 6905, !10, i64 6908, !59, i64 6912, !10, i64 6916, !10, i64 6920, !10, i64 6924, !60, i64 6928, !60, i64 6976, !60, i64 7024, !61, i64 7072, !62, i64 7120, !14, i64 7152, !27, i64 7160, !10, i64 7328, !15, i64 7332, !10, i64 7336, !10, i64 7340, !63, i64 7344, !17, i64 7408, !10, i64 7424, !10, i64 7428, !14, i64 7432, !10, i64 7436, !10, i64 7440, !10, i64 7444, !64, i64 7448, !7, i64 7464, !65, i64 7472, !70, i64 11176, !10, i64 11288, !10, i64 11292, !52, i64 11296, !15, i64 11312, !14, i64 11316, !14, i64 11320, !13, i64 11324, !10, i64 11332, !66, i64 11336, !13, i64 11352, !13, i64 11360, !15, i64 11368, !14, i64 11372, !72, i64 11376, !73, i64 11392, !74, i64 11408, !15, i64 11424, !6, i64 11432, !72, i64 11440, !10, i64 11456, !10, i64 11460, !7, i64 11464, !10, i64 11944, !14, i64 11948, !10, i64 11952, !10, i64 11956, !10, i64 11960, !7, i64 11964}
!50 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !6, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !7, i64 52, !14, i64 136, !14, i64 140, !6, i64 144, !6, i64 152, !14, i64 160, !15, i64 164, !6, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !15, i64 200, !15, i64 201, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !13, i64 256, !7, i64 264, !14, i64 272, !14, i64 276, !15, i64 280, !15, i64 281, !15, i64 282, !15, i64 283, !15, i64 284, !7, i64 285, !7, i64 798, !7, i64 832, !15, i64 916, !15, i64 917, !15, i64 918, !15, i64 919, !15, i64 920, !15, i64 921, !15, i64 922, !14, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !13, i64 940, !13, i64 948, !7, i64 956, !7, i64 996, !7, i64 1016, !7, i64 1021, !7, i64 1026, !7, i64 1031, !7, i64 1036, !7, i64 1056, !7, i64 1076, !7, i64 1116, !7, i64 1136, !7, i64 3184, !7, i64 5232, !7, i64 5316}
!51 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !52, i64 24, !7, i64 40}
!52 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!53 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!54 = !{!"_ZTS8ImVectorI11ImGuiColModE", !10, i64 0, !10, i64 4, !6, i64 8}
!55 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !13, i64 28, !13, i64 36, !13, i64 44, !13, i64 52, !15, i64 60, !17, i64 64, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100}
!59 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!60 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !17, i64 28}
!61 = !{!"_ZTS10ImDrawData", !15, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !13, i64 28, !13, i64 36}
!62 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!63 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !15, i64 57, !15, i64 58}
!64 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS18ImGuiTextEditState", !10, i64 0, !29, i64 8, !66, i64 24, !66, i64 40, !10, i64 56, !10, i64 60, !10, i64 64, !14, i64 68, !67, i64 72, !14, i64 3692, !15, i64 3696, !15, i64 3697}
!66 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTSN8ImGuiStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, 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, !14, i64 20, !68, i64 24}
!68 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !69, i64 3582, !69, i64 3584, !10, i64 3588, !10, i64 3592}
!69 = !{!"short", !7, i64 0}
!70 = !{!"_ZTS6ImFont", !14, i64 0, !14, i64 4, !13, i64 8, !71, i64 16, !20, i64 32, !29, i64 48, !6, i64 64, !14, i64 72, !69, i64 76, !69, i64 78, !6, i64 80, !6, i64 88, !14, i64 96, !14, i64 100, !15, i64 104, !10, i64 108}
!71 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS15ImGuiTextBuffer", !66, i64 0}
!73 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!49, !6, i64 6232}
!76 = !{!70, !14, i64 0}
!77 = !{!70, !14, i64 4}
!78 = !{!70, !14, i64 96}
!79 = !{!70, !14, i64 100}
!80 = !{!70, !6, i64 88}
!81 = !{!70, !6, i64 64}
!82 = !{!83, !14, i64 4}
!83 = !{!"_ZTS11ImFontGlyph", !69, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36}
!84 = !{!70, !14, i64 72}
!85 = !{!12, !10, i64 952}
!86 = !{!12, !10, i64 960}
!87 = !{!49, !10, i64 6512}
!88 = !{!65, !10, i64 0}
!89 = !{!49, !10, i64 6516}
!90 = !{!49, !10, i64 6808}
!91 = !{!49, !10, i64 6796}
!92 = !{!49, !53, i64 6824}
!93 = !{!65, !10, i64 60}
!94 = !{!65, !6, i64 32}
!95 = !{!65, !10, i64 24}
!96 = !{!65, !6, i64 16}
!97 = !{!65, !10, i64 8}
!98 = !{!65, !10, i64 56}
!99 = !{!65, !14, i64 68}
!100 = !{!65, !7, i64 84}
!101 = !{!50, !15, i64 281}
!102 = !{!49, !10, i64 6532}
!103 = !{!49, !15, i64 6525}
!104 = !{!65, !10, i64 64}
!105 = !{!49, !15, i64 6526}
!106 = !{!49, !10, i64 11960}
!107 = !{!50, !14, i64 256}
!108 = !{!17, !14, i64 0}
!109 = !{!42, !14, i64 52}
!110 = !{!50, !14, i64 260}
!111 = !{!12, !14, i64 204}
!112 = !{!49, !14, i64 6240}
!113 = !{!50, !15, i64 200}
!114 = !{!65, !15, i64 3697}
!115 = !{!50, !14, i64 940}
!116 = !{!50, !14, i64 944}
!117 = !{!65, !15, i64 3696}
!118 = !{!69, !69, i64 0}
!119 = !{!50, !15, i64 283}
!120 = !{!50, !15, i64 284}
!121 = distinct !{!121, !122}
!122 = !{!"llvm.loop.mustprogress"}
!123 = !{!50, !15, i64 282}
!124 = !{!12, !14, i64 92}
!125 = !{!50, !6, i64 216}
!126 = !{!65, !10, i64 76}
!127 = !{!65, !10, i64 80}
!128 = !{!65, !6, i64 48}
!129 = !{!65, !10, i64 40}
!130 = !{!7, !7, i64 0}
!131 = distinct !{!131, !122}
!132 = !{!133, !10, i64 0}
!133 = !{!"_ZTS25ImGuiTextEditCallbackData", !10, i64 0, !10, i64 4, !6, i64 8, !15, i64 16, !69, i64 18, !10, i64 20, !6, i64 24, !10, i64 32, !10, i64 36, !15, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!134 = !{!133, !10, i64 4}
!135 = !{!133, !6, i64 8}
!136 = !{!133, !15, i64 16}
!137 = !{!133, !10, i64 20}
!138 = !{!133, !6, i64 24}
!139 = !{!133, !10, i64 32}
!140 = !{!133, !10, i64 36}
!141 = !{!133, !15, i64 40}
!142 = !{!65, !10, i64 72}
!143 = !{!133, !10, i64 44}
!144 = !{!133, !10, i64 48}
!145 = !{!133, !10, i64 52}
!146 = !{!42, !14, i64 60}
!147 = !{!17, !14, i64 4}
!148 = !{!50, !14, i64 16}
!149 = !{!65, !14, i64 3692}
!150 = distinct !{!150, !122}
!151 = !{!52, !14, i64 12}
!152 = !{!52, !14, i64 4}
!153 = distinct !{!153, !122}
!154 = !{!12, !6, i64 688}
!155 = distinct !{!155, !122}
!156 = !{!49, !15, i64 209}
!157 = !{!49, !14, i64 11164}
!158 = !{!49, !15, i64 11424}
!159 = !{!17, !14, i64 8}


; 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.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiTextEditCallbackData = type { i32, i32, ptr, i8, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external dso_local local_unnamed_addr global ptr, align 8
@.str.3 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.167 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv = external hidden unnamed_addr constant [119 x i8], align 1
@.str.168 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [59 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv.searches_result_line_number = external hidden unnamed_addr constant [2 x i32], align 4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8)) 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 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.end.p0(i64 immarg, ptr nocapture) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

; 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 #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMinIfET_S0_S0_(float noundef, float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z9ImStrncpyPcPKcm(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef, float noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL6ImFmodff(float noundef, float noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #9 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef, float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976), ptr noundef, ptr noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976), ptr noundef, ptr noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef, ptr noundef) local_unnamed_addr #10

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5ImGui20MarkItemValueChangedEj(i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) local_unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowjb(ptr noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef, i1 noundef zeroext) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float>, float noundef, float noundef) local_unnamed_addr #10

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef, float noundef) local_unnamed_addr #0

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

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

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

declare void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) local_unnamed_addr #11

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL15LogRenderedTextPK6ImVec2PKcS3_(ptr noundef, ptr noundef, ptr noundef) 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 #10

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #10

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) local_unnamed_addr #11

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef) local_unnamed_addr #10

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #10 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui13EndChildFrameEv() local_unnamed_addr #7

declare void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef) local_unnamed_addr #11

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui7PopFontEv() local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN5ImGui17GetTextLineHeightEv() local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr nocapture noundef nonnull readonly align 4 dereferenceable(8) %3, i32 noundef %4, ptr noundef %5, ptr noundef %6) local_unnamed_addr #10 {
  %8 = alloca %struct.ImVec2, align 8
  %9 = alloca %struct.ImRect, align 8
  %10 = alloca %struct.ImVec2, align 8
  %11 = alloca %struct.ImRect, align 4
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImVec2, align 4
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %struct.ImGuiTextEditCallbackData, align 8
  %22 = alloca %struct.ImVec4, align 4
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca %struct.ImVec2, align 8
  %25 = alloca %struct.ImVec2, align 4
  %26 = alloca %struct.ImVec2, align 4
  %27 = alloca %struct.ImVec2, align 8
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca %struct.ImVec2, align 8
  %30 = alloca %struct.ImVec2, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %struct.ImRect, align 4
  %33 = alloca %struct.ImVec2, align 8
  %34 = alloca %struct.ImVec2, align 4
  %35 = alloca %struct.ImVec2, align 8
  %36 = alloca %struct.ImVec2, align 4
  %37 = alloca %struct.ImRect, align 4
  %38 = alloca %struct.ImRect, align 4
  %39 = alloca %struct.ImVec2, align 8
  %40 = alloca %struct.ImVec2, align 8
  %41 = alloca %struct.ImRect, align 4
  %42 = alloca %struct.ImRect, align 4
  %43 = alloca %struct.ImVec2, align 8
  %44 = alloca %struct.ImVec2, align 8
  %45 = alloca ptr, align 8
  %46 = alloca %struct.ImVec2, align 8
  %47 = alloca %struct.ImVec2, align 8
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca %struct.ImVec2, align 8
  %50 = tail call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %51 = getelementptr inbounds i8, ptr %50, i64 127
  %52 = load i8, ptr %51, align 1, !tbaa !5, !range !33, !noundef !34
  %53 = trunc nuw i8 %52 to i1
  br i1 %53, label %1308, label %54

54:                                               ; preds = %7
  %55 = and i32 %4, 128
  %.not = icmp eq i32 %55, 0
  %56 = and i32 %4, 1048576
  %.not693 = icmp eq i32 %56, 0
  %57 = and i32 %4, 1048704
  %.not694 = icmp eq i32 %57, 1048704
  br i1 %.not694, label %58, label %59

58:                                               ; preds = %54
  tail call void @__assert_fail(ptr noundef nonnull @.str.167, ptr noundef nonnull @.str.3, i32 noundef 10426, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

59:                                               ; preds = %54
  %60 = and i32 %4, 64
  %.not695 = icmp eq i32 %60, 0
  %61 = and i32 %4, 1024
  %.not696 = icmp eq i32 %61, 0
  %62 = and i32 %4, 1088
  %.not697 = icmp eq i32 %62, 1088
  br i1 %.not697, label %63, label %64

63:                                               ; preds = %59
  tail call void @__assert_fail(ptr noundef nonnull @.str.168, ptr noundef nonnull @.str.3, i32 noundef 10427, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

64:                                               ; preds = %59
  %65 = load ptr, ptr @GImGui, align 8, !tbaa !35
  %66 = and i32 %4, 16384
  %67 = icmp eq i32 %66, 0
  %68 = and i32 %4, 32768
  %.not698 = icmp ne i32 %68, 0
  br i1 %.not693, label %70, label %69

69:                                               ; preds = %64
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %70

70:                                               ; preds = %69, %64
  %71 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %50, ptr noundef %0, ptr noundef null)
  %72 = tail call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %0, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #13
  %.sroa.0353.0.copyload = load <2 x float>, ptr %3, align 4
  %73 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %.not693, label %77, label %74

74:                                               ; preds = %70
  %75 = tail call noundef float @_ZN5ImGui17GetTextLineHeightEv()
  %76 = fmul float %75, 8.000000e+00
  br label %78

77:                                               ; preds = %70
  %.sroa.0354.4.vec.extract = extractelement <2 x float> %72, i64 1
  br label %78

78:                                               ; preds = %77, %74
  %79 = phi float [ %76, %74 ], [ %.sroa.0354.4.vec.extract, %77 ]
  %80 = getelementptr inbounds i8, ptr %65, i64 5460
  %81 = getelementptr inbounds i8, ptr %65, i64 5464
  %82 = load float, ptr %81, align 4, !tbaa !36
  %83 = tail call float @llvm.fmuladd.f32(float %82, float 2.000000e+00, float %79)
  %84 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0353.0.copyload, float noundef %73, float noundef %83)
  store <2 x float> %84, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #13
  %85 = getelementptr inbounds i8, ptr %50, i64 200
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #13
  %86 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %85, ptr noundef nonnull align 4 dereferenceable(8) %8)
  store <2 x float> %86, ptr %10, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %9, ptr noundef nonnull align 4 dereferenceable(8) %85, ptr noundef nonnull align 4 dereferenceable(8) %10)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #13
  %87 = getelementptr inbounds i8, ptr %9, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #13
  %.sroa.0354.0.vec.extract = extractelement <2 x float> %72, i64 0
  %88 = fcmp ogt float %.sroa.0354.0.vec.extract, 0.000000e+00
  br i1 %88, label %89, label %93

89:                                               ; preds = %78
  %90 = getelementptr inbounds i8, ptr %65, i64 5484
  %91 = load float, ptr %90, align 4, !tbaa !38
  %92 = fadd float %.sroa.0354.0.vec.extract, %91
  br label %93

93:                                               ; preds = %78, %89
  %94 = phi float [ %92, %89 ], [ 0.000000e+00, %78 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %94, float noundef 0.000000e+00)
  %95 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %87, ptr noundef nonnull align 4 dereferenceable(8) %13)
  store <2 x float> %95, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(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 %13) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #13
  br i1 %.not693, label %112, label %96

96:                                               ; preds = %93
  %97 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %71, ptr noundef nonnull %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #13
  %98 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %9)
  store <2 x float> %98, ptr %14, align 8
  %99 = call noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef %71, ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #13
  br i1 %99, label %101, label %100

100:                                              ; preds = %96
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1307

101:                                              ; preds = %96
  %102 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %103 = getelementptr inbounds i8, ptr %102, i64 308
  %104 = load i32, ptr %103, align 4, !tbaa !39
  %105 = getelementptr inbounds i8, ptr %102, i64 316
  %106 = load i32, ptr %105, align 4, !tbaa !40
  %107 = or i32 %106, %104
  store i32 %107, ptr %105, align 4, !tbaa !40
  %108 = getelementptr inbounds i8, ptr %102, i64 112
  %109 = load float, ptr %108, align 8, !tbaa !41
  %110 = load float, ptr %8, align 8, !tbaa !42
  %111 = fsub float %110, %109
  store float %111, ptr %8, align 8, !tbaa !42
  br label %115

112:                                              ; preds = %93
  %113 = load float, ptr %81, align 4, !tbaa !36
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %11, float noundef %113)
  %114 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %71, ptr noundef nonnull %9)
  br i1 %114, label %115, label %1307

115:                                              ; preds = %112, %101
  %.0633 = phi ptr [ %102, %101 ], [ %50, %112 ]
  %116 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %9, i32 noundef %71)
  br i1 %116, label %117, label %119

117:                                              ; preds = %115
  %118 = getelementptr inbounds i8, ptr %65, i64 7328
  store i32 1, ptr %118, align 8, !tbaa !43
  br label %119

119:                                              ; preds = %117, %115
  br i1 %.not698, label %120, label %149

120:                                              ; preds = %119
  %121 = getelementptr inbounds i8, ptr %65, i64 6232
  %122 = load ptr, ptr %121, align 8, !tbaa !70
  %123 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(112) %122, i16 noundef zeroext 42)
  %124 = getelementptr inbounds i8, ptr %65, i64 11176
  %125 = load ptr, ptr %121, align 8, !tbaa !70
  %126 = load <2 x float>, ptr %125, align 8, !tbaa !71
  store <2 x float> %126, ptr %124, align 8, !tbaa !71
  %127 = getelementptr inbounds i8, ptr %125, i64 8
  %128 = getelementptr inbounds i8, ptr %65, i64 11184
  %129 = load i64, ptr %127, align 8
  store i64 %129, ptr %128, align 8
  %130 = getelementptr inbounds i8, ptr %125, i64 96
  %131 = getelementptr inbounds i8, ptr %65, i64 11272
  %132 = load <2 x float>, ptr %130, align 8, !tbaa !71
  store <2 x float> %132, ptr %131, align 8, !tbaa !71
  %133 = getelementptr inbounds i8, ptr %125, i64 88
  %134 = load ptr, ptr %133, align 8, !tbaa !72
  %135 = getelementptr inbounds i8, ptr %65, i64 11264
  store ptr %134, ptr %135, align 8, !tbaa !72
  %136 = getelementptr inbounds i8, ptr %65, i64 11240
  store ptr %123, ptr %136, align 8, !tbaa !73
  %137 = getelementptr inbounds i8, ptr %123, i64 4
  %138 = load float, ptr %137, align 4, !tbaa !74
  %139 = getelementptr inbounds i8, ptr %65, i64 11248
  store float %138, ptr %139, align 8, !tbaa !76
  %140 = getelementptr inbounds i8, ptr %65, i64 11192
  %141 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %140)
  br i1 %141, label %142, label %.critedge

142:                                              ; preds = %120
  %143 = getelementptr inbounds i8, ptr %65, i64 11208
  %144 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %143)
  br i1 %144, label %145, label %.critedge

145:                                              ; preds = %142
  %146 = getelementptr inbounds i8, ptr %65, i64 11224
  %147 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %146)
  br i1 %147, label %148, label %.critedge

.critedge:                                        ; preds = %142, %120, %145
  call void @__assert_fail(ptr noundef nonnull @.str.169, ptr noundef nonnull @.str.3, i32 noundef 10483, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

148:                                              ; preds = %145
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %124)
  br label %149

149:                                              ; preds = %148, %119
  %150 = getelementptr inbounds i8, ptr %65, i64 7472
  %151 = icmp eq i32 %62, 0
  %152 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowjb(ptr noundef nonnull %50, i32 noundef %71, i1 noundef zeroext %151)
  br i1 %152, label %153, label %159

153:                                              ; preds = %149
  %154 = getelementptr inbounds i8, ptr %50, i64 952
  %155 = load i32, ptr %154, align 8, !tbaa !77
  %156 = getelementptr inbounds i8, ptr %50, i64 960
  %157 = load i32, ptr %156, align 8, !tbaa !78
  %158 = icmp eq i32 %155, %157
  br label %159

159:                                              ; preds = %153, %149
  %160 = phi i1 [ false, %149 ], [ %158, %153 ]
  br i1 %116, label %161, label %165

161:                                              ; preds = %159
  %162 = getelementptr inbounds i8, ptr %65, i64 1024
  %163 = load i8, ptr %162, align 8, !tbaa !79, !range !33, !noundef !34
  %164 = trunc nuw i8 %163 to i1
  br label %165

165:                                              ; preds = %161, %159
  %166 = phi i1 [ false, %159 ], [ %164, %161 ]
  br i1 %.not693, label %179, label %167

167:                                              ; preds = %165
  %168 = getelementptr inbounds i8, ptr %65, i64 6512
  %169 = load i32, ptr %168, align 8, !tbaa !80
  %170 = icmp eq i32 %169, 0
  br i1 %170, label %171, label %179

171:                                              ; preds = %167
  %172 = load i32, ptr %150, align 8, !tbaa !81
  %173 = icmp eq i32 %172, %71
  br i1 %173, label %174, label %179

174:                                              ; preds = %171
  %175 = getelementptr inbounds i8, ptr %65, i64 6516
  %176 = load i32, ptr %175, align 4, !tbaa !82
  %177 = call noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %.0633, ptr noundef nonnull @.str.80, ptr noundef null)
  %178 = icmp eq i32 %176, %177
  br label %179

179:                                              ; preds = %174, %171, %167, %165
  %180 = phi i1 [ false, %171 ], [ false, %167 ], [ false, %165 ], [ %178, %174 ]
  %181 = getelementptr inbounds i8, ptr %65, i64 6512
  %182 = load i32, ptr %181, align 8, !tbaa !80
  %.not699 = icmp eq i32 %182, %71
  br i1 %.not699, label %195, label %183

183:                                              ; preds = %179
  %184 = getelementptr inbounds i8, ptr %65, i64 6808
  %185 = load i32, ptr %184, align 8, !tbaa !83
  %186 = icmp eq i32 %185, %71
  br i1 %186, label %.thread814, label %187

187:                                              ; preds = %183
  %188 = getelementptr inbounds i8, ptr %65, i64 6796
  %189 = load i32, ptr %188, align 4, !tbaa !84
  %190 = icmp eq i32 %189, %71
  br i1 %190, label %191, label %.thread814

191:                                              ; preds = %187
  %192 = getelementptr inbounds i8, ptr %65, i64 6824
  %193 = load i32, ptr %192, align 8, !tbaa !85
  %194 = icmp eq i32 %193, 3
  br label %.thread814

195:                                              ; preds = %179
  %brmerge727 = select i1 %152, i1 true, i1 %166
  %brmerge728 = select i1 %brmerge727, i1 true, i1 %180
  br i1 %brmerge728, label %240, label %246

.thread814:                                       ; preds = %187, %191, %183
  %.ph = phi i1 [ %194, %191 ], [ false, %187 ], [ true, %183 ]
  %196 = and i32 %4, 16
  %.not701 = icmp ne i32 %196, 0
  %brmerge = select i1 %.not701, i1 true, i1 %.ph
  %spec.select811 = and i1 %.not693, %brmerge
  %brmerge727815 = select i1 %152, i1 true, i1 %166
  %brmerge728816 = select i1 %brmerge727815, i1 true, i1 %180
  %brmerge729817 = select i1 %brmerge728816, i1 true, i1 %.ph
  br i1 %brmerge729817, label %197, label %246

197:                                              ; preds = %.thread814
  %198 = getelementptr inbounds i8, ptr %65, i64 7532
  %199 = load i32, ptr %198, align 4, !tbaa !86
  %200 = getelementptr inbounds i8, ptr %65, i64 7480
  %201 = add nsw i32 %2, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %200, i32 noundef %201)
  %202 = getelementptr inbounds i8, ptr %65, i64 7496
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %202, i32 noundef %201)
  %203 = getelementptr inbounds i8, ptr %65, i64 7504
  %204 = load ptr, ptr %203, align 8, !tbaa !87
  %205 = load i32, ptr %202, align 8, !tbaa !88
  %206 = sext i32 %205 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %204, ptr noundef %1, i64 noundef %206)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #13
  store ptr null, ptr %15, align 8, !tbaa !35
  %207 = getelementptr inbounds i8, ptr %65, i64 7488
  %208 = load ptr, ptr %207, align 8, !tbaa !89
  %209 = load i32, ptr %200, align 8, !tbaa !90
  %210 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %208, i32 noundef %209, ptr noundef %1, ptr noundef null, ptr noundef nonnull %15)
  store i32 %210, ptr %198, align 4, !tbaa !86
  %211 = load ptr, ptr %15, align 8, !tbaa !35
  %212 = ptrtoint ptr %211 to i64
  %213 = ptrtoint ptr %1 to i64
  %214 = sub i64 %212, %213
  %215 = trunc i64 %214 to i32
  %216 = getelementptr inbounds i8, ptr %65, i64 7528
  store i32 %215, ptr %216, align 8, !tbaa !91
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  %217 = load i32, ptr %150, align 8, !tbaa !81
  %218 = icmp eq i32 %217, %71
  br i1 %218, label %219, label %.critedge731

219:                                              ; preds = %197
  %220 = load i32, ptr %198, align 4, !tbaa !86
  %221 = icmp eq i32 %199, %220
  br i1 %221, label %222, label %.critedge731

222:                                              ; preds = %219
  call void @_ZN18ImGuiTextEditState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br label %226

.critedge731:                                     ; preds = %197, %219
  store i32 %71, ptr %150, align 8, !tbaa !81
  %223 = getelementptr inbounds i8, ptr %65, i64 7540
  store float 0.000000e+00, ptr %223, align 4, !tbaa !92
  %224 = getelementptr inbounds i8, ptr %65, i64 7544
  %.lobit = lshr exact i32 %56, 20
  %225 = xor i32 %.lobit, 1
  call void @_ZN8ImGuiStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %224, i32 noundef %225)
  %spec.select = select i1 %160, i1 true, i1 %spec.select811
  %spec.select812 = select i1 %.not693, i1 %spec.select, i1 false
  br label %226

226:                                              ; preds = %.critedge731, %222
  %.0637 = phi i1 [ %spec.select811, %222 ], [ %spec.select812, %.critedge731 ]
  %227 = and i32 %4, 8192
  %.not703 = icmp eq i32 %227, 0
  br i1 %.not703, label %230, label %228

228:                                              ; preds = %226
  %229 = getelementptr inbounds i8, ptr %65, i64 7556
  store i8 1, ptr %229, align 4, !tbaa !93
  br label %230

230:                                              ; preds = %228, %226
  br i1 %.not693, label %231, label %239

231:                                              ; preds = %230
  %not. = xor i1 %152, true
  %232 = select i1 %not., i1 true, i1 %160
  br i1 %232, label %233, label %238

233:                                              ; preds = %231
  br i1 %166, label %234, label %239

234:                                              ; preds = %233
  %235 = getelementptr inbounds i8, ptr %65, i64 289
  %236 = load i8, ptr %235, align 1, !tbaa !94, !range !33, !noundef !34
  %237 = trunc nuw i8 %236 to i1
  br i1 %237, label %238, label %239

238:                                              ; preds = %234, %231
  br label %239

239:                                              ; preds = %238, %234, %233, %230
  %.1638 = phi i1 [ %.0637, %230 ], [ true, %238 ], [ %.0637, %234 ], [ %.0637, %233 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #13
  br label %240

240:                                              ; preds = %195, %239
  %241 = phi i1 [ %.ph, %239 ], [ false, %195 ]
  %.2639 = phi i1 [ %.1638, %239 ], [ false, %195 ]
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %71, ptr noundef nonnull %50)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %71, ptr noundef nonnull %50)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %50)
  %brmerge732.not = icmp eq i32 %57, 0
  br i1 %brmerge732.not, label %242, label %250

242:                                              ; preds = %240
  %243 = getelementptr inbounds i8, ptr %65, i64 6532
  %244 = load i32, ptr %243, align 4, !tbaa !95
  %245 = or i32 %244, 12
  store i32 %245, ptr %243, align 4, !tbaa !95
  br label %250

246:                                              ; preds = %.thread814, %195
  %247 = phi i1 [ %spec.select811, %.thread814 ], [ false, %195 ]
  %248 = getelementptr inbounds i8, ptr %65, i64 1024
  %249 = load i8, ptr %248, align 8, !tbaa !79, !range !33, !noundef !34
  br label %250

250:                                              ; preds = %246, %240, %242
  %251 = phi i1 [ %241, %240 ], [ %241, %242 ], [ false, %246 ]
  %.3640 = phi i1 [ %.2639, %240 ], [ %.2639, %242 ], [ %247, %246 ]
  %.0634 = phi i8 [ 0, %240 ], [ 0, %242 ], [ %249, %246 ]
  %252 = load i32, ptr %181, align 8, !tbaa !80
  %253 = icmp eq i32 %252, %71
  br i1 %253, label %254, label %509

254:                                              ; preds = %250
  br i1 %67, label %273, label %255

255:                                              ; preds = %254
  %256 = getelementptr inbounds i8, ptr %65, i64 6525
  %257 = load i8, ptr %256, align 1, !tbaa !96, !range !33, !noundef !34
  %258 = trunc nuw i8 %257 to i1
  br i1 %258, label %273, label %259

259:                                              ; preds = %255
  %260 = getelementptr inbounds i8, ptr %65, i64 7480
  %261 = add nsw i32 %2, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %260, i32 noundef %261)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #13
  store ptr null, ptr %16, align 8, !tbaa !35
  %262 = getelementptr inbounds i8, ptr %65, i64 7488
  %263 = load ptr, ptr %262, align 8, !tbaa !89
  %264 = load i32, ptr %260, align 8, !tbaa !90
  %265 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %263, i32 noundef %264, ptr noundef %1, ptr noundef null, ptr noundef nonnull %16)
  %266 = getelementptr inbounds i8, ptr %65, i64 7532
  store i32 %265, ptr %266, align 4, !tbaa !86
  %267 = load ptr, ptr %16, align 8, !tbaa !35
  %268 = ptrtoint ptr %267 to i64
  %269 = ptrtoint ptr %1 to i64
  %270 = sub i64 %268, %269
  %271 = trunc i64 %270 to i32
  %272 = getelementptr inbounds i8, ptr %65, i64 7528
  store i32 %271, ptr %272, align 8, !tbaa !91
  call void @_ZN18ImGuiTextEditState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #13
  br label %273

273:                                              ; preds = %259, %255, %254
  %274 = getelementptr inbounds i8, ptr %65, i64 7536
  store i32 %2, ptr %274, align 8, !tbaa !97
  %275 = getelementptr inbounds i8, ptr %65, i64 272
  %276 = load i8, ptr %275, align 8, !tbaa !79, !range !33, !noundef !34
  %277 = xor i8 %276, 1
  %278 = getelementptr inbounds i8, ptr %65, i64 6526
  store i8 %277, ptr %278, align 2, !tbaa !98
  %279 = getelementptr inbounds i8, ptr %65, i64 11960
  store i32 1, ptr %279, align 8, !tbaa !99
  %280 = getelementptr inbounds i8, ptr %65, i64 264
  %281 = load float, ptr %280, align 8, !tbaa !100
  %282 = load float, ptr %9, align 8, !tbaa !101
  %283 = fsub float %281, %282
  %284 = load float, ptr %80, align 4, !tbaa !102
  %285 = fsub float %283, %284
  %286 = getelementptr inbounds i8, ptr %65, i64 7540
  %287 = load float, ptr %286, align 4, !tbaa !92
  %288 = fadd float %285, %287
  br i1 %.not693, label %297, label %289

289:                                              ; preds = %273
  %290 = getelementptr inbounds i8, ptr %65, i64 268
  %291 = load float, ptr %290, align 4, !tbaa !103
  %292 = getelementptr inbounds i8, ptr %.0633, i64 204
  %293 = load float, ptr %292, align 4, !tbaa !104
  %294 = fsub float %291, %293
  %295 = load float, ptr %81, align 4, !tbaa !36
  %296 = fsub float %294, %295
  br label %301

297:                                              ; preds = %273
  %298 = getelementptr inbounds i8, ptr %65, i64 6240
  %299 = load float, ptr %298, align 8, !tbaa !105
  %300 = fmul float %299, 5.000000e-01
  br label %301

301:                                              ; preds = %297, %289
  %302 = phi float [ %296, %289 ], [ %300, %297 ]
  %303 = getelementptr inbounds i8, ptr %65, i64 208
  %304 = load i8, ptr %303, align 8, !tbaa !106, !range !33, !noundef !34
  %305 = trunc nuw i8 %304 to i1
  br i1 %.3640, label %311, label %306

306:                                              ; preds = %301
  %.not734 = xor i1 %116, true
  %brmerge735 = select i1 %.not734, i1 true, i1 %305
  br i1 %brmerge735, label %313, label %307

307:                                              ; preds = %306
  %308 = getelementptr inbounds i8, ptr %65, i64 1029
  %309 = load i8, ptr %308, align 1, !tbaa !79, !range !33, !noundef !34
  %310 = trunc nuw i8 %309 to i1
  br i1 %310, label %311, label %313

311:                                              ; preds = %307, %301
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  %312 = getelementptr inbounds i8, ptr %65, i64 11169
  store i8 1, ptr %312, align 1, !tbaa !107
  br label %348

313:                                              ; preds = %306, %307
  %314 = select i1 %116, i1 %305, i1 false
  br i1 %314, label %315, label %320

315:                                              ; preds = %313
  %316 = getelementptr inbounds i8, ptr %65, i64 1029
  %317 = load i8, ptr %316, align 1, !tbaa !79, !range !33, !noundef !34
  %318 = trunc nuw i8 %317 to i1
  br i1 %318, label %319, label %320

319:                                              ; preds = %315
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef 65548)
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef 196621)
  br label %348

320:                                              ; preds = %313, %315
  %321 = getelementptr inbounds i8, ptr %65, i64 1024
  %322 = load i8, ptr %321, align 8, !tbaa !79, !range !33, !noundef !34
  %323 = trunc nuw i8 %322 to i1
  br i1 %323, label %324, label %331

324:                                              ; preds = %320
  %325 = getelementptr inbounds i8, ptr %65, i64 11169
  %326 = load i8, ptr %325, align 1, !tbaa !107, !range !33, !noundef !34
  %327 = trunc nuw i8 %326 to i1
  br i1 %327, label %331, label %328

328:                                              ; preds = %324
  br i1 %116, label %329, label %348

329:                                              ; preds = %328
  %330 = getelementptr inbounds i8, ptr %65, i64 7544
  call void @_ZN8ImGuiStbL18stb_textedit_clickEP18ImGuiTextEditStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %150, ptr noundef nonnull %330, float noundef %288, float noundef %302)
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br label %348

331:                                              ; preds = %324, %320
  %332 = trunc nuw i8 %276 to i1
  br i1 %332, label %333, label %348

333:                                              ; preds = %331
  %334 = getelementptr inbounds i8, ptr %65, i64 11169
  %335 = load i8, ptr %334, align 1, !tbaa !107, !range !33, !noundef !34
  %336 = trunc nuw i8 %335 to i1
  br i1 %336, label %348, label %337

337:                                              ; preds = %333
  %338 = getelementptr inbounds i8, ptr %65, i64 948
  %339 = load float, ptr %338, align 4, !tbaa !108
  %340 = fcmp une float %339, 0.000000e+00
  br i1 %340, label %345, label %341

341:                                              ; preds = %337
  %342 = getelementptr inbounds i8, ptr %65, i64 952
  %343 = load float, ptr %342, align 4, !tbaa !109
  %344 = fcmp une float %343, 0.000000e+00
  br i1 %344, label %345, label %348

345:                                              ; preds = %341, %337
  %346 = getelementptr inbounds i8, ptr %65, i64 7544
  call void @_ZN8ImGuiStbL17stb_textedit_dragEP18ImGuiTextEditStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %150, ptr noundef nonnull %346, float noundef %288, float noundef %302)
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  %347 = getelementptr inbounds i8, ptr %65, i64 11168
  store i8 1, ptr %347, align 8, !tbaa !110
  br label %348

348:                                              ; preds = %319, %331, %333, %341, %345, %328, %329, %311
  %349 = getelementptr inbounds i8, ptr %65, i64 11169
  %350 = load i8, ptr %349, align 1, !tbaa !107, !range !33, !noundef !34
  %351 = trunc nuw i8 %350 to i1
  br i1 %351, label %352, label %356

352:                                              ; preds = %348
  %353 = load i8, ptr %275, align 8, !tbaa !79, !range !33, !noundef !34
  %354 = trunc nuw i8 %353 to i1
  br i1 %354, label %356, label %355

355:                                              ; preds = %352
  store i8 0, ptr %349, align 1, !tbaa !107
  br label %356

356:                                              ; preds = %355, %352, %348
  %357 = getelementptr inbounds i8, ptr %65, i64 806
  %358 = load i16, ptr %357, align 2, !tbaa !111
  %.not704 = icmp eq i16 %358, 0
  br i1 %.not704, label %509, label %359

359:                                              ; preds = %356
  %360 = getelementptr inbounds i8, ptr %65, i64 289
  %361 = load i8, ptr %360, align 1, !tbaa !94, !range !33, !noundef !34
  %362 = trunc nuw i8 %361 to i1
  br i1 %362, label %363, label %368

363:                                              ; preds = %359
  %364 = getelementptr inbounds i8, ptr %65, i64 291
  %365 = load i8, ptr %364, align 1, !tbaa !112, !range !33, !noundef !34
  %366 = trunc nuw i8 %365 to i1
  %.not739 = xor i1 %366, true
  %367 = select i1 %366, i1 %305, i1 false
  br i1 %367, label %369, label %373

368:                                              ; preds = %359
  br i1 %305, label %369, label %.critedge743

369:                                              ; preds = %363, %368
  %370 = getelementptr inbounds i8, ptr %65, i64 292
  %371 = load i8, ptr %370, align 4, !tbaa !113, !range !33, !noundef !34
  %372 = trunc nuw i8 %371 to i1
  br label %373

373:                                              ; preds = %363, %369
  %374 = phi i1 [ %.not739, %363 ], [ %372, %369 ]
  %.not744 = xor i1 %67, true
  %brmerge745 = or i1 %374, %.not744
  %brmerge746 = select i1 %brmerge745, i1 true, i1 %251
  br i1 %brmerge746, label %.critedge2, label %375

.critedge743:                                     ; preds = %368
  %.not747 = xor i1 %67, true
  %brmerge748 = select i1 %.not747, i1 true, i1 %251
  br i1 %brmerge748, label %.critedge2, label %375

375:                                              ; preds = %373, %.critedge743
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %376 = zext i16 %358 to i32
  store i32 %376, ptr %17, align 4, !tbaa !114
  %377 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %377, label %378, label %380

378:                                              ; preds = %375
  %379 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %379)
  br label %380

380:                                              ; preds = %378, %375
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %381 = getelementptr inbounds i8, ptr %65, i64 808
  %382 = load i16, ptr %381, align 2, !tbaa !111
  %.not705.1 = icmp eq i16 %382, 0
  br i1 %.not705.1, label %.critedge2, label %383

383:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %384 = zext i16 %382 to i32
  store i32 %384, ptr %17, align 4, !tbaa !114
  %385 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %385, label %386, label %388

386:                                              ; preds = %383
  %387 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %387)
  br label %388

388:                                              ; preds = %386, %383
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %389 = getelementptr inbounds i8, ptr %65, i64 810
  %390 = load i16, ptr %389, align 2, !tbaa !111
  %.not705.2 = icmp eq i16 %390, 0
  br i1 %.not705.2, label %.critedge2, label %391

391:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %392 = zext i16 %390 to i32
  store i32 %392, ptr %17, align 4, !tbaa !114
  %393 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %393, label %394, label %396

394:                                              ; preds = %391
  %395 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %395)
  br label %396

396:                                              ; preds = %394, %391
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %397 = getelementptr inbounds i8, ptr %65, i64 812
  %398 = load i16, ptr %397, align 2, !tbaa !111
  %.not705.3 = icmp eq i16 %398, 0
  br i1 %.not705.3, label %.critedge2, label %399

399:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %400 = zext i16 %398 to i32
  store i32 %400, ptr %17, align 4, !tbaa !114
  %401 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %401, label %402, label %404

402:                                              ; preds = %399
  %403 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %403)
  br label %404

404:                                              ; preds = %402, %399
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %405 = getelementptr inbounds i8, ptr %65, i64 814
  %406 = load i16, ptr %405, align 2, !tbaa !111
  %.not705.4 = icmp eq i16 %406, 0
  br i1 %.not705.4, label %.critedge2, label %407

407:                                              ; preds = %404
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %408 = zext i16 %406 to i32
  store i32 %408, ptr %17, align 4, !tbaa !114
  %409 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %409, label %410, label %412

410:                                              ; preds = %407
  %411 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %411)
  br label %412

412:                                              ; preds = %410, %407
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %413 = getelementptr inbounds i8, ptr %65, i64 816
  %414 = load i16, ptr %413, align 2, !tbaa !111
  %.not705.5 = icmp eq i16 %414, 0
  br i1 %.not705.5, label %.critedge2, label %415

415:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %416 = zext i16 %414 to i32
  store i32 %416, ptr %17, align 4, !tbaa !114
  %417 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %417, label %418, label %420

418:                                              ; preds = %415
  %419 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %419)
  br label %420

420:                                              ; preds = %418, %415
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %421 = getelementptr inbounds i8, ptr %65, i64 818
  %422 = load i16, ptr %421, align 2, !tbaa !111
  %.not705.6 = icmp eq i16 %422, 0
  br i1 %.not705.6, label %.critedge2, label %423

423:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %424 = zext i16 %422 to i32
  store i32 %424, ptr %17, align 4, !tbaa !114
  %425 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %425, label %426, label %428

426:                                              ; preds = %423
  %427 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %427)
  br label %428

428:                                              ; preds = %426, %423
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %429 = getelementptr inbounds i8, ptr %65, i64 820
  %430 = load i16, ptr %429, align 2, !tbaa !111
  %.not705.7 = icmp eq i16 %430, 0
  br i1 %.not705.7, label %.critedge2, label %431

431:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %432 = zext i16 %430 to i32
  store i32 %432, ptr %17, align 4, !tbaa !114
  %433 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %433, label %434, label %436

434:                                              ; preds = %431
  %435 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %435)
  br label %436

436:                                              ; preds = %434, %431
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %437 = getelementptr inbounds i8, ptr %65, i64 822
  %438 = load i16, ptr %437, align 2, !tbaa !111
  %.not705.8 = icmp eq i16 %438, 0
  br i1 %.not705.8, label %.critedge2, label %439

439:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %440 = zext i16 %438 to i32
  store i32 %440, ptr %17, align 4, !tbaa !114
  %441 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %441, label %442, label %444

442:                                              ; preds = %439
  %443 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %443)
  br label %444

444:                                              ; preds = %442, %439
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %445 = getelementptr inbounds i8, ptr %65, i64 824
  %446 = load i16, ptr %445, align 2, !tbaa !111
  %.not705.9 = icmp eq i16 %446, 0
  br i1 %.not705.9, label %.critedge2, label %447

447:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %448 = zext i16 %446 to i32
  store i32 %448, ptr %17, align 4, !tbaa !114
  %449 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %449, label %450, label %452

450:                                              ; preds = %447
  %451 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %451)
  br label %452

452:                                              ; preds = %450, %447
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %453 = getelementptr inbounds i8, ptr %65, i64 826
  %454 = load i16, ptr %453, align 2, !tbaa !111
  %.not705.10 = icmp eq i16 %454, 0
  br i1 %.not705.10, label %.critedge2, label %455

455:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %456 = zext i16 %454 to i32
  store i32 %456, ptr %17, align 4, !tbaa !114
  %457 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %457, label %458, label %460

458:                                              ; preds = %455
  %459 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %459)
  br label %460

460:                                              ; preds = %458, %455
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %461 = getelementptr inbounds i8, ptr %65, i64 828
  %462 = load i16, ptr %461, align 2, !tbaa !111
  %.not705.11 = icmp eq i16 %462, 0
  br i1 %.not705.11, label %.critedge2, label %463

463:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %464 = zext i16 %462 to i32
  store i32 %464, ptr %17, align 4, !tbaa !114
  %465 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %465, label %466, label %468

466:                                              ; preds = %463
  %467 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %467)
  br label %468

468:                                              ; preds = %466, %463
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %469 = getelementptr inbounds i8, ptr %65, i64 830
  %470 = load i16, ptr %469, align 2, !tbaa !111
  %.not705.12 = icmp eq i16 %470, 0
  br i1 %.not705.12, label %.critedge2, label %471

471:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %472 = zext i16 %470 to i32
  store i32 %472, ptr %17, align 4, !tbaa !114
  %473 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %473, label %474, label %476

474:                                              ; preds = %471
  %475 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %475)
  br label %476

476:                                              ; preds = %474, %471
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %477 = getelementptr inbounds i8, ptr %65, i64 832
  %478 = load i16, ptr %477, align 2, !tbaa !111
  %.not705.13 = icmp eq i16 %478, 0
  br i1 %.not705.13, label %.critedge2, label %479

479:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %480 = zext i16 %478 to i32
  store i32 %480, ptr %17, align 4, !tbaa !114
  %481 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %481, label %482, label %484

482:                                              ; preds = %479
  %483 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %483)
  br label %484

484:                                              ; preds = %482, %479
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %485 = getelementptr inbounds i8, ptr %65, i64 834
  %486 = load i16, ptr %485, align 2, !tbaa !111
  %.not705.14 = icmp eq i16 %486, 0
  br i1 %.not705.14, label %.critedge2, label %487

487:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %488 = zext i16 %486 to i32
  store i32 %488, ptr %17, align 4, !tbaa !114
  %489 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %489, label %490, label %492

490:                                              ; preds = %487
  %491 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %491)
  br label %492

492:                                              ; preds = %490, %487
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %493 = getelementptr inbounds i8, ptr %65, i64 836
  %494 = load i16, ptr %493, align 2, !tbaa !111
  %.not705.15 = icmp eq i16 %494, 0
  br i1 %.not705.15, label %.critedge2, label %495

495:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %496 = zext i16 %494 to i32
  store i32 %496, ptr %17, align 4, !tbaa !114
  %497 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %497, label %498, label %500

498:                                              ; preds = %495
  %499 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %499)
  br label %500

500:                                              ; preds = %498, %495
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  %501 = getelementptr inbounds i8, ptr %65, i64 838
  %502 = load i16, ptr %501, align 2, !tbaa !111
  %.not705.16 = icmp eq i16 %502, 0
  br i1 %.not705.16, label %.critedge2, label %503

503:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  %504 = zext i16 %502 to i32
  store i32 %504, ptr %17, align 4, !tbaa !114
  %505 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %505, label %506, label %508

506:                                              ; preds = %503
  %507 = load i32, ptr %17, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %507)
  br label %508

508:                                              ; preds = %506, %503
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  br label %.critedge2

.critedge2:                                       ; preds = %380, %388, %396, %404, %412, %420, %428, %436, %444, %452, %460, %468, %476, %484, %492, %500, %508, %.critedge743, %373
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(34) %357, i8 0, i64 34, i1 false)
  br label %509

509:                                              ; preds = %356, %.critedge2, %250
  %510 = load i32, ptr %181, align 8, !tbaa !80
  %511 = icmp eq i32 %510, %71
  br i1 %511, label %512, label %857

512:                                              ; preds = %509
  %513 = getelementptr inbounds i8, ptr %65, i64 6525
  %514 = load i8, ptr %513, align 1, !tbaa !96, !range !33, !noundef !34
  %515 = trunc nuw i8 %514 to i1
  br i1 %515, label %857, label %516

516:                                              ; preds = %512
  %517 = trunc nuw i8 %.0634 to i1
  br i1 %517, label %857, label %518

518:                                              ; preds = %516
  %519 = getelementptr inbounds i8, ptr %65, i64 290
  %520 = load i8, ptr %519, align 2, !tbaa !115, !range !33, !noundef !34
  %521 = trunc nuw i8 %520 to i1
  %522 = select i1 %521, i32 131072, i32 0
  %523 = getelementptr inbounds i8, ptr %65, i64 208
  %524 = load i8, ptr %523, align 8, !tbaa !106, !range !33, !noundef !34
  %525 = trunc nuw i8 %524 to i1
  br i1 %525, label %526, label %538

526:                                              ; preds = %518
  %527 = getelementptr inbounds i8, ptr %65, i64 292
  %528 = load i8, ptr %527, align 4, !tbaa !113, !range !33, !noundef !34
  %529 = trunc nuw i8 %528 to i1
  br i1 %529, label %530, label %.thread820

530:                                              ; preds = %526
  %531 = getelementptr inbounds i8, ptr %65, i64 289
  %532 = load i8, ptr %531, align 1, !tbaa !79, !range !33, !noundef !34
  %533 = trunc nuw i8 %532 to i1
  br i1 %533, label %.thread820, label %.thread

.thread:                                          ; preds = %530
  %534 = getelementptr inbounds i8, ptr %65, i64 291
  %535 = load i8, ptr %534, align 1, !tbaa !112, !range !33, !noundef !34
  %536 = trunc nuw i8 %535 to i1
  %537 = select i1 %536, i1 true, i1 %521
  %spec.select851889 = xor i1 %537, true
  br label %.thread820

538:                                              ; preds = %518
  %539 = getelementptr inbounds i8, ptr %65, i64 289
  %540 = load i8, ptr %539, align 1, !tbaa !79, !range !33, !noundef !34
  %541 = trunc nuw i8 %540 to i1
  br i1 %541, label %542, label %.thread822

542:                                              ; preds = %538
  %543 = getelementptr inbounds i8, ptr %65, i64 292
  %544 = load i8, ptr %543, align 4, !tbaa !113, !range !33, !noundef !34
  %545 = trunc nuw i8 %544 to i1
  br i1 %545, label %.thread822, label %546

546:                                              ; preds = %542
  %547 = getelementptr inbounds i8, ptr %65, i64 291
  %548 = load i8, ptr %547, align 1, !tbaa !112, !range !33, !noundef !34
  %549 = trunc nuw i8 %548 to i1
  %550 = select i1 %549, i1 true, i1 %521
  %spec.select851 = xor i1 %550, true
  br label %.thread822

.thread820:                                       ; preds = %.thread, %526, %530
  %551 = phi i1 [ false, %530 ], [ false, %526 ], [ %spec.select851889, %.thread ]
  %552 = trunc nuw i8 %528 to i1
  %553 = select i1 %552, i1 %521, i1 false
  br i1 %553, label %554, label %566

554:                                              ; preds = %.thread820
  %555 = getelementptr inbounds i8, ptr %65, i64 289
  %556 = load i8, ptr %555, align 1, !tbaa !94, !range !33, !noundef !34
  %557 = trunc nuw i8 %556 to i1
  br i1 %557, label %566, label %558

558:                                              ; preds = %554
  %559 = getelementptr inbounds i8, ptr %65, i64 291
  %560 = load i8, ptr %559, align 1, !tbaa !112, !range !33, !noundef !34
  %561 = trunc nuw i8 %560 to i1
  %562 = xor i1 %561, true
  br label %566

.thread822:                                       ; preds = %546, %538, %542
  %563 = phi i1 [ %spec.select851, %546 ], [ false, %542 ], [ false, %538 ]
  %564 = getelementptr inbounds i8, ptr %65, i64 291
  %565 = getelementptr inbounds i8, ptr %65, i64 289
  br label %._crit_edge876

566:                                              ; preds = %.thread820, %558, %554
  %.ph824 = phi i1 [ %562, %558 ], [ false, %.thread820 ], [ false, %554 ]
  %567 = getelementptr inbounds i8, ptr %65, i64 291
  %568 = getelementptr inbounds i8, ptr %65, i64 289
  %.in827 = load i8, ptr %567, align 1, !tbaa !79, !range !33, !noundef !34
  %569 = load i8, ptr %568, align 1, !tbaa !94, !range !33
  br i1 %552, label %570, label %._crit_edge876

570:                                              ; preds = %566
  %571 = trunc nuw i8 %569 to i1
  br i1 %571, label %._crit_edge876, label %572

572:                                              ; preds = %570
  %573 = trunc nuw i8 %.in827 to i1
  %574 = xor i1 %573, true
  br label %._crit_edge876

._crit_edge876:                                   ; preds = %566, %.thread822, %572, %570
  %575 = phi i8 [ %569, %570 ], [ %540, %.thread822 ], [ %569, %572 ], [ %569, %566 ]
  %.in861 = phi i8 [ %.in827, %570 ], [ %540, %.thread822 ], [ %.in827, %572 ], [ %.in827, %566 ]
  %576 = phi ptr [ %568, %570 ], [ %565, %.thread822 ], [ %568, %572 ], [ %568, %566 ]
  %577 = phi ptr [ %567, %570 ], [ %564, %.thread822 ], [ %567, %572 ], [ %567, %566 ]
  %578 = phi i1 [ %.ph824, %570 ], [ false, %.thread822 ], [ %.ph824, %572 ], [ %.ph824, %566 ]
  %579 = phi i1 [ %551, %570 ], [ %563, %.thread822 ], [ %551, %572 ], [ %551, %566 ]
  %580 = phi i1 [ false, %570 ], [ false, %.thread822 ], [ %574, %572 ], [ false, %566 ]
  %581 = trunc nuw i8 %.in861 to i1
  %582 = trunc nuw i8 %575 to i1
  br i1 %582, label %583, label %592

583:                                              ; preds = %._crit_edge876
  br i1 %521, label %.thread832, label %584

584:                                              ; preds = %583
  %585 = load i8, ptr %577, align 1, !tbaa !112, !range !33, !noundef !34
  %586 = trunc nuw i8 %585 to i1
  br i1 %586, label %.thread832, label %587

587:                                              ; preds = %584
  %588 = getelementptr inbounds i8, ptr %65, i64 292
  %589 = load i8, ptr %588, align 4, !tbaa !113, !range !33, !noundef !34
  %590 = trunc nuw i8 %589 to i1
  %591 = xor i1 %590, true
  br label %.thread832

592:                                              ; preds = %._crit_edge876
  br i1 %521, label %593, label %.thread832

593:                                              ; preds = %592
  %594 = load i8, ptr %577, align 1, !tbaa !112, !range !33, !noundef !34
  %595 = trunc nuw i8 %594 to i1
  br i1 %595, label %.thread832, label %596

596:                                              ; preds = %593
  %597 = getelementptr inbounds i8, ptr %65, i64 292
  %598 = load i8, ptr %597, align 4, !tbaa !113, !range !33, !noundef !34
  %599 = trunc nuw i8 %598 to i1
  %600 = xor i1 %599, true
  br label %.thread832

.thread832:                                       ; preds = %584, %587, %583, %596, %593, %592
  %601 = phi i1 [ false, %593 ], [ false, %592 ], [ false, %596 ], [ false, %583 ], [ %591, %587 ], [ false, %584 ]
  %602 = phi i1 [ false, %593 ], [ false, %592 ], [ %600, %596 ], [ false, %583 ], [ false, %587 ], [ false, %584 ]
  br i1 %579, label %603, label %605

603:                                              ; preds = %.thread832
  %604 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %604, label %608, label %605

605:                                              ; preds = %603, %.thread832
  br i1 %602, label %606, label %611

606:                                              ; preds = %605
  %607 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 10, i1 noundef zeroext true)
  %brmerge751.demorgan = and i1 %67, %607
  %brmerge751 = xor i1 %brmerge751.demorgan, true
  %brmerge752 = or i1 %.not698, %brmerge751
  %brmerge758 = or i1 %.not693, %brmerge752
  %not.brmerge752 = xor i1 %brmerge752, true
  br i1 %brmerge758, label %611, label %609

608:                                              ; preds = %603
  %.not753 = xor i1 %67, true
  %brmerge755 = or i1 %.not698, %.not753
  %brmerge756 = or i1 %.not693, %brmerge755
  %not.brmerge755 = xor i1 %brmerge755, true
  br i1 %brmerge756, label %.thread833, label %609

609:                                              ; preds = %606, %608
  %610 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br label %611

611:                                              ; preds = %606, %609, %605
  %612 = phi i1 [ %not.brmerge752, %606 ], [ false, %605 ], [ %610, %609 ]
  br i1 %579, label %.thread833, label %615

.thread833:                                       ; preds = %608, %611
  %613 = phi i1 [ %612, %611 ], [ %not.brmerge755, %608 ]
  %614 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %614, label %619, label %615

615:                                              ; preds = %.thread833, %611
  %616 = phi i1 [ %613, %.thread833 ], [ %612, %611 ]
  br i1 %601, label %617, label %624

617:                                              ; preds = %615
  %618 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 9, i1 noundef zeroext true)
  %.not760 = xor i1 %618, true
  %brmerge762 = or i1 %.not698, %.not760
  %brmerge763 = or i1 %.not693, %brmerge762
  %not.brmerge762 = xor i1 %brmerge762, true
  br i1 %brmerge763, label %624, label %621

619:                                              ; preds = %.thread833
  %620 = and i32 %4, 1081344
  %brmerge766.not = icmp eq i32 %620, 1048576
  %not..not698 = xor i1 %.not698, true
  br i1 %brmerge766.not, label %621, label %.thread834

621:                                              ; preds = %619, %617
  %622 = phi i1 [ %613, %619 ], [ %616, %617 ]
  %623 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br label %624

624:                                              ; preds = %617, %621, %615
  %625 = phi i1 [ %616, %617 ], [ %616, %615 ], [ %622, %621 ]
  %626 = phi i1 [ %not.brmerge762, %617 ], [ false, %615 ], [ %623, %621 ]
  br i1 %579, label %.thread834, label %630

.thread834:                                       ; preds = %619, %624
  %627 = phi i1 [ %626, %624 ], [ %not..not698, %619 ]
  %628 = phi i1 [ %625, %624 ], [ %613, %619 ]
  %629 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %629, label %.thread835, label %630

630:                                              ; preds = %.thread834, %624
  %631 = phi i1 [ %627, %.thread834 ], [ %626, %624 ]
  %632 = phi i1 [ %628, %.thread834 ], [ %625, %624 ]
  br i1 %602, label %633, label %635

633:                                              ; preds = %630
  %634 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 9, i1 noundef zeroext true)
  %spec.select855 = and i1 %67, %634
  br label %635

635:                                              ; preds = %633, %630
  %636 = phi i1 [ false, %630 ], [ %spec.select855, %633 ]
  br i1 %579, label %.thread835, label %643

.thread835:                                       ; preds = %.thread834, %635
  %637 = phi i1 [ %636, %635 ], [ %67, %.thread834 ]
  %638 = phi i1 [ %632, %635 ], [ %628, %.thread834 ]
  %639 = phi i1 [ %631, %635 ], [ %627, %.thread834 ]
  %640 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 20, i1 noundef zeroext true)
  %641 = and i32 %4, 81920
  %spec.select768 = icmp eq i32 %641, 0
  %spec.select813 = and i1 %spec.select768, %640
  %642 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %642, label %650, label %643

643:                                              ; preds = %635, %.thread835
  %644 = phi i1 [ %spec.select813, %.thread835 ], [ false, %635 ]
  %645 = phi i1 [ %639, %.thread835 ], [ %631, %635 ]
  %646 = phi i1 [ %638, %.thread835 ], [ %632, %635 ]
  %647 = phi i1 [ %637, %.thread835 ], [ %636, %635 ]
  br i1 %578, label %648, label %655

648:                                              ; preds = %643
  %649 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %649, label %._crit_edge885, label %655

._crit_edge885:                                   ; preds = %648
  %.pre886 = and i32 %4, 81920
  br label %650

650:                                              ; preds = %._crit_edge885, %.thread835
  %.pre-phi = phi i32 [ %.pre886, %._crit_edge885 ], [ %641, %.thread835 ]
  %651 = phi i1 [ %644, %._crit_edge885 ], [ %spec.select813, %.thread835 ]
  %652 = phi i1 [ %645, %._crit_edge885 ], [ %639, %.thread835 ]
  %653 = phi i1 [ %646, %._crit_edge885 ], [ %638, %.thread835 ]
  %654 = phi i1 [ %647, %._crit_edge885 ], [ %637, %.thread835 ]
  %spec.select769 = icmp eq i32 %.pre-phi, 0
  br label %655

655:                                              ; preds = %650, %648, %643
  %656 = phi i1 [ %644, %648 ], [ %644, %643 ], [ %651, %650 ]
  %657 = phi i1 [ %645, %648 ], [ %645, %643 ], [ %652, %650 ]
  %658 = phi i1 [ %646, %648 ], [ %646, %643 ], [ %653, %650 ]
  %659 = phi i1 [ %647, %648 ], [ %647, %643 ], [ %654, %650 ]
  %660 = phi i1 [ false, %648 ], [ false, %643 ], [ %spec.select769, %650 ]
  %661 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %661, label %662, label %665

662:                                              ; preds = %655
  %663 = select i1 %581, i32 65548, i32 65536
  %spec.select770 = select i1 %580, i32 65540, i32 %663
  %664 = or disjoint i32 %spec.select770, %522
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %664)
  br label %857

665:                                              ; preds = %655
  %666 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %666, label %667, label %670

667:                                              ; preds = %665
  %668 = select i1 %581, i32 65549, i32 65537
  %spec.select771 = select i1 %580, i32 65541, i32 %668
  %669 = or disjoint i32 %spec.select771, %522
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %669)
  br label %857

670:                                              ; preds = %665
  %671 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 3, i1 noundef zeroext true)
  %.not772 = xor i1 %671, true
  %brmerge773 = or i1 %.not693, %.not772
  br i1 %brmerge773, label %685, label %672

672:                                              ; preds = %670
  %673 = load i8, ptr %576, align 1, !tbaa !94, !range !33, !noundef !34
  %674 = trunc nuw i8 %673 to i1
  br i1 %674, label %675, label %682

675:                                              ; preds = %672
  %676 = getelementptr inbounds i8, ptr %.0633, i64 92
  %677 = load float, ptr %676, align 4, !tbaa !116
  %678 = getelementptr inbounds i8, ptr %65, i64 6240
  %679 = load float, ptr %678, align 8, !tbaa !105
  %680 = fsub float %677, %679
  %681 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %680, float noundef 0.000000e+00)
  call void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef nonnull %.0633, float noundef %681)
  br label %857

682:                                              ; preds = %672
  %683 = select i1 %580, i32 65542, i32 65538
  %684 = or disjoint i32 %683, %522
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %684)
  br label %857

685:                                              ; preds = %670
  %686 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 4, i1 noundef zeroext true)
  %.not774 = xor i1 %686, true
  %brmerge775 = or i1 %.not693, %.not774
  br i1 %brmerge775, label %701, label %687

687:                                              ; preds = %685
  %688 = load i8, ptr %576, align 1, !tbaa !94, !range !33, !noundef !34
  %689 = trunc nuw i8 %688 to i1
  br i1 %689, label %690, label %698

690:                                              ; preds = %687
  %691 = getelementptr inbounds i8, ptr %.0633, i64 92
  %692 = load float, ptr %691, align 4, !tbaa !116
  %693 = getelementptr inbounds i8, ptr %65, i64 6240
  %694 = load float, ptr %693, align 8, !tbaa !105
  %695 = fadd float %692, %694
  %696 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %697 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %695, float noundef %696)
  call void @_ZL16SetWindowScrollYP11ImGuiWindowf(ptr noundef nonnull %.0633, float noundef %697)
  br label %857

698:                                              ; preds = %687
  %699 = select i1 %580, i32 65543, i32 65539
  %700 = or disjoint i32 %699, %522
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %700)
  br label %857

701:                                              ; preds = %685
  %702 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %702, label %703, label %707

703:                                              ; preds = %701
  %704 = load i8, ptr %576, align 1, !tbaa !94, !range !33, !noundef !34
  %705 = trunc nuw i8 %704 to i1
  %.v710 = select i1 %705, i32 65542, i32 65540
  %706 = or disjoint i32 %.v710, %522
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %706)
  br label %857

707:                                              ; preds = %701
  %708 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %708, label %709, label %713

709:                                              ; preds = %707
  %710 = load i8, ptr %576, align 1, !tbaa !94, !range !33, !noundef !34
  %711 = trunc nuw i8 %710 to i1
  %.v = select i1 %711, i32 65543, i32 65541
  %712 = or disjoint i32 %.v, %522
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %712)
  br label %857

713:                                              ; preds = %707
  %714 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 10, i1 noundef zeroext true)
  %.not777 = xor i1 %67, true
  %brmerge778.not = and i1 %67, %714
  br i1 %brmerge778.not, label %715, label %717

715:                                              ; preds = %713
  %716 = or disjoint i32 %522, 65544
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %716)
  br label %857

717:                                              ; preds = %713
  %718 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 11, i1 noundef zeroext true)
  %brmerge781.not = and i1 %67, %718
  br i1 %brmerge781.not, label %719, label %735

719:                                              ; preds = %717
  %720 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br i1 %720, label %733, label %721

721:                                              ; preds = %719
  br i1 %581, label %.sink.split, label %722

722:                                              ; preds = %721
  br i1 %525, label %723, label %733

723:                                              ; preds = %722
  %724 = getelementptr inbounds i8, ptr %65, i64 292
  %725 = load i8, ptr %724, align 4, !tbaa !113, !range !33, !noundef !34
  %726 = trunc nuw i8 %725 to i1
  br i1 %726, label %727, label %733

727:                                              ; preds = %723
  %728 = load i8, ptr %577, align 1, !tbaa !112, !range !33, !noundef !34
  %729 = trunc nuw i8 %728 to i1
  br i1 %729, label %733, label %730

730:                                              ; preds = %727
  %731 = load i8, ptr %576, align 1, !tbaa !94, !range !33, !noundef !34
  %732 = trunc nuw i8 %731 to i1
  br i1 %732, label %733, label %.sink.split

.sink.split:                                      ; preds = %730, %721
  %.sink = phi i32 [ 196620, %721 ], [ 196612, %730 ]
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %.sink)
  br label %733

733:                                              ; preds = %.sink.split, %730, %727, %723, %722, %719
  %734 = or disjoint i32 %522, 65545
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %734)
  br label %857

735:                                              ; preds = %717
  %736 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %736, label %737, label %748

737:                                              ; preds = %735
  br i1 %.not693, label %857, label %738

738:                                              ; preds = %737
  %739 = and i32 %4, 2048
  %.not709 = icmp eq i32 %739, 0
  %740 = load i8, ptr %576, align 1, !tbaa !94, !range !33, !noundef !34
  %741 = trunc nuw i8 %740 to i1
  br i1 %.not709, label %.critedge783, label %742

742:                                              ; preds = %738
  %.not856 = xor i8 %740, 1
  %brmerge858.not = and i1 %67, %741
  %.mux859 = select i1 %741, i8 %.0634, i8 1
  br i1 %brmerge858.not, label %743, label %857

.critedge783:                                     ; preds = %738
  %brmerge785 = or i1 %.not777, %741
  %.mux787 = select i1 %741, i8 1, i8 %.0634
  br i1 %brmerge785, label %857, label %743

743:                                              ; preds = %742, %.critedge783
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #13
  store i32 10, ptr %18, align 4, !tbaa !114
  %744 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %18, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %744, label %745, label %747

745:                                              ; preds = %743
  %746 = load i32, ptr %18, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %746)
  br label %747

747:                                              ; preds = %745, %743
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #13
  br label %857

748:                                              ; preds = %735
  br i1 %.not696, label %765, label %749

749:                                              ; preds = %748
  %750 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %750, label %751, label %765

751:                                              ; preds = %749
  %752 = load i8, ptr %576, align 1, !tbaa !94, !range !33, !noundef !34
  %753 = trunc nuw i8 %752 to i1
  br i1 %753, label %765, label %754

754:                                              ; preds = %751
  %755 = load i8, ptr %519, align 2, !tbaa !115, !range !33, !noundef !34
  %756 = trunc nuw i8 %755 to i1
  br i1 %756, label %765, label %757

757:                                              ; preds = %754
  %758 = load i8, ptr %577, align 1, !tbaa !112, !range !33, !noundef !34
  %759 = trunc nuw i8 %758 to i1
  %brmerge789 = or i1 %.not777, %759
  br i1 %brmerge789, label %765, label %760

760:                                              ; preds = %757
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #13
  store i32 9, ptr %19, align 4, !tbaa !114
  %761 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %19, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %761, label %762, label %764

762:                                              ; preds = %760
  %763 = load i32, ptr %19, align 4, !tbaa !114
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %763)
  br label %764

764:                                              ; preds = %762, %760
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #13
  br label %857

765:                                              ; preds = %757, %754, %751, %749, %748
  %766 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %766, label %857, label %767

767:                                              ; preds = %765
  %brmerge790 = or i1 %656, %660
  br i1 %brmerge790, label %768, label %769

768:                                              ; preds = %767
  %.mux791 = select i1 %656, i32 65546, i32 65547
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698) %150, i32 noundef %.mux791)
  call void @_ZN18ImGuiTextEditState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br label %857

769:                                              ; preds = %767
  br i1 %579, label %770, label %774

770:                                              ; preds = %769
  %771 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %771, label %772, label %774

772:                                              ; preds = %770
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  %773 = getelementptr inbounds i8, ptr %65, i64 11168
  store i8 1, ptr %773, align 8, !tbaa !110
  br label %857

774:                                              ; preds = %770, %769
  %brmerge792 = or i1 %657, %658
  br i1 %brmerge792, label %775, label %823

775:                                              ; preds = %774
  %776 = getelementptr inbounds i8, ptr %65, i64 224
  %777 = load ptr, ptr %776, align 8, !tbaa !117
  %.not708 = icmp eq ptr %777, null
  br i1 %.not708, label %815, label %778

778:                                              ; preds = %775
  %779 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br i1 %779, label %780, label %786

780:                                              ; preds = %778
  %781 = getelementptr inbounds i8, ptr %65, i64 7548
  %782 = load i32, ptr %781, align 4, !tbaa !118
  %783 = getelementptr inbounds i8, ptr %65, i64 7552
  %784 = load i32, ptr %783, align 8, !tbaa !119
  %785 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %782, i32 noundef %784)
  br label %786

786:                                              ; preds = %778, %780
  %787 = phi i32 [ %785, %780 ], [ 0, %778 ]
  %788 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br i1 %788, label %789, label %795

789:                                              ; preds = %786
  %790 = getelementptr inbounds i8, ptr %65, i64 7548
  %791 = load i32, ptr %790, align 4, !tbaa !118
  %792 = getelementptr inbounds i8, ptr %65, i64 7552
  %793 = load i32, ptr %792, align 8, !tbaa !119
  %794 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %791, i32 noundef %793)
  br label %798

795:                                              ; preds = %786
  %796 = getelementptr inbounds i8, ptr %65, i64 7532
  %797 = load i32, ptr %796, align 4, !tbaa !86
  br label %798

798:                                              ; preds = %795, %789
  %799 = phi i32 [ %794, %789 ], [ %797, %795 ]
  %800 = getelementptr inbounds i8, ptr %65, i64 7512
  %801 = sub nsw i32 %799, %787
  %802 = shl nsw i32 %801, 2
  %803 = or disjoint i32 %802, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %800, i32 noundef %803)
  %804 = getelementptr inbounds i8, ptr %65, i64 7520
  %805 = load ptr, ptr %804, align 8, !tbaa !120
  %806 = load i32, ptr %800, align 8, !tbaa !121
  %807 = getelementptr inbounds i8, ptr %65, i64 7488
  %808 = load ptr, ptr %807, align 8, !tbaa !89
  %809 = sext i32 %787 to i64
  %810 = getelementptr inbounds i16, ptr %808, i64 %809
  %811 = sext i32 %799 to i64
  %812 = getelementptr inbounds i16, ptr %808, i64 %811
  %813 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %805, i32 noundef %806, ptr noundef %810, ptr noundef %812)
  %814 = load ptr, ptr %804, align 8, !tbaa !120
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %814)
  br label %815

815:                                              ; preds = %798, %775
  br i1 %658, label %816, label %857

816:                                              ; preds = %815
  %817 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br i1 %817, label %819, label %818

818:                                              ; preds = %816
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br label %819

819:                                              ; preds = %818, %816
  %820 = getelementptr inbounds i8, ptr %65, i64 11168
  store i8 1, ptr %820, align 8, !tbaa !110
  %821 = getelementptr inbounds i8, ptr %65, i64 7544
  %822 = call noundef i32 @_ZN8ImGuiStbL16stb_textedit_cutEP18ImGuiTextEditStatePNS_17STB_TexteditStateE(ptr noundef nonnull %150, ptr noundef nonnull %821)
  br label %857

823:                                              ; preds = %774
  br i1 %659, label %824, label %857

824:                                              ; preds = %823
  %825 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not706 = icmp eq ptr %825, null
  br i1 %.not706, label %857, label %826

826:                                              ; preds = %824
  %827 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %825) #14
  %828 = shl i64 %827, 32
  %sext = add i64 %828, 4294967296
  %829 = ashr exact i64 %sext, 31
  %830 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %829)
  %831 = load i8, ptr %825, align 1, !tbaa !122
  %.not707867 = icmp eq i8 %831, 0
  br i1 %.not707867, label %.loopexit863.thread, label %.lr.ph

.loopexit863.thread:                              ; preds = %826
  store i16 0, ptr %830, align 2, !tbaa !111
  br label %856

.lr.ph:                                           ; preds = %826, %847
  %.0659869 = phi i32 [ %.1660, %847 ], [ 0, %826 ]
  %.0662868 = phi ptr [ %834, %847 ], [ %825, %826 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #13
  %832 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %20, ptr noundef nonnull %.0662868, ptr noundef null)
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds i8, ptr %.0662868, i64 %833
  %835 = load i32, ptr %20, align 4, !tbaa !114
  %836 = icmp eq i32 %835, 0
  br i1 %836, label %.thread837, label %837

.thread837:                                       ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  br label %.loopexit863

837:                                              ; preds = %.lr.ph
  %838 = icmp ugt i32 %835, 65535
  br i1 %838, label %847, label %839, !llvm.loop !123

839:                                              ; preds = %837
  %840 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %20, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %840, label %841, label %847, !llvm.loop !123

841:                                              ; preds = %839
  %842 = load i32, ptr %20, align 4, !tbaa !114
  %843 = trunc i32 %842 to i16
  %844 = add nsw i32 %.0659869, 1
  %845 = sext i32 %.0659869 to i64
  %846 = getelementptr inbounds i16, ptr %830, i64 %845
  store i16 %843, ptr %846, align 2, !tbaa !111
  br label %847

847:                                              ; preds = %837, %839, %841
  %.1660 = phi i32 [ %844, %841 ], [ %.0659869, %839 ], [ %.0659869, %837 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #13
  %848 = load i8, ptr %834, align 1, !tbaa !122
  %.not707 = icmp eq i8 %848, 0
  br i1 %.not707, label %.loopexit863, label %.lr.ph

.loopexit863:                                     ; preds = %847, %.thread837
  %.0659865 = phi i32 [ %.0659869, %.thread837 ], [ %.1660, %847 ]
  %849 = sext i32 %.0659865 to i64
  %850 = getelementptr inbounds i16, ptr %830, i64 %849
  store i16 0, ptr %850, align 2, !tbaa !111
  %851 = icmp sgt i32 %.0659865, 0
  br i1 %851, label %852, label %856

852:                                              ; preds = %.loopexit863
  %853 = getelementptr inbounds i8, ptr %65, i64 7544
  %854 = call noundef i32 @_ZN8ImGuiStbL18stb_textedit_pasteEP18ImGuiTextEditStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %150, ptr noundef nonnull %853, ptr noundef nonnull %830, i32 noundef %.0659865)
  %855 = getelementptr inbounds i8, ptr %65, i64 11168
  store i8 1, ptr %855, align 8, !tbaa !110
  br label %856

856:                                              ; preds = %.loopexit863.thread, %852, %.loopexit863
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %830)
  br label %857

857:                                              ; preds = %742, %662, %682, %675, %703, %715, %772, %823, %815, %819, %768, %764, %733, %709, %690, %698, %667, %.critedge783, %737, %747, %765, %856, %824, %516, %512, %509
  %.1650 = phi i1 [ false, %512 ], [ false, %516 ], [ false, %509 ], [ false, %662 ], [ false, %667 ], [ false, %675 ], [ false, %682 ], [ false, %690 ], [ false, %698 ], [ false, %703 ], [ false, %709 ], [ false, %715 ], [ false, %733 ], [ false, %768 ], [ false, %772 ], [ false, %819 ], [ false, %815 ], [ false, %823 ], [ false, %764 ], [ false, %.critedge783 ], [ false, %737 ], [ false, %742 ], [ false, %747 ], [ true, %765 ], [ false, %856 ], [ false, %824 ]
  %.2647 = phi i8 [ 0, %512 ], [ 0, %516 ], [ 0, %509 ], [ 0, %662 ], [ 0, %667 ], [ 0, %675 ], [ 0, %682 ], [ 0, %690 ], [ 0, %698 ], [ 0, %703 ], [ 0, %709 ], [ 0, %715 ], [ 0, %733 ], [ 0, %768 ], [ 0, %772 ], [ 0, %819 ], [ 0, %815 ], [ 0, %823 ], [ 0, %764 ], [ %740, %.critedge783 ], [ 1, %737 ], [ %.not856, %742 ], [ 0, %747 ], [ 0, %765 ], [ 0, %856 ], [ 0, %824 ]
  %.3 = phi i8 [ %.0634, %512 ], [ %.0634, %516 ], [ %.0634, %509 ], [ %.0634, %662 ], [ %.0634, %667 ], [ %.0634, %675 ], [ %.0634, %682 ], [ %.0634, %690 ], [ %.0634, %698 ], [ %.0634, %703 ], [ %.0634, %709 ], [ %.0634, %715 ], [ %.0634, %733 ], [ %.0634, %768 ], [ %.0634, %772 ], [ %.0634, %819 ], [ %.0634, %815 ], [ %.0634, %823 ], [ %.0634, %764 ], [ %.mux787, %.critedge783 ], [ 1, %737 ], [ %.mux859, %742 ], [ %.0634, %747 ], [ 1, %765 ], [ %.0634, %856 ], [ %.0634, %824 ]
  %858 = load i32, ptr %181, align 8, !tbaa !80
  %859 = icmp eq i32 %858, %71
  br i1 %859, label %860, label %993

860:                                              ; preds = %857
  %.not793 = xor i1 %67, true
  %brmerge794.not = and i1 %67, %.1650
  br i1 %brmerge794.not, label %861, label %867

861:                                              ; preds = %860
  %862 = getelementptr inbounds i8, ptr %65, i64 7504
  %863 = load ptr, ptr %862, align 8, !tbaa !87
  %864 = sext i32 %2 to i64
  %865 = call i32 @strncmp(ptr noundef %1, ptr noundef %863, i64 noundef %864) #14
  %.not711 = icmp eq i32 %865, 0
  br i1 %.not711, label %867, label %866

866:                                              ; preds = %861
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %1, ptr noundef %863, i64 noundef %864)
  br label %867

867:                                              ; preds = %860, %861, %866
  %.0641 = phi i1 [ true, %866 ], [ false, %861 ], [ false, %860 ]
  br i1 %.1650, label %868, label %.critedge796

868:                                              ; preds = %867
  %869 = trunc nuw i8 %.2647 to i1
  %870 = and i32 %4, 32
  %871 = icmp ne i32 %870, 0
  %872 = and i1 %871, %869
  br i1 %872, label %.critedge796, label %993

.critedge796:                                     ; preds = %867, %868
  br i1 %67, label %873, label %884

873:                                              ; preds = %.critedge796
  %874 = getelementptr inbounds i8, ptr %65, i64 7512
  %875 = getelementptr inbounds i8, ptr %65, i64 7480
  %876 = load i32, ptr %875, align 8, !tbaa !90
  %877 = shl nsw i32 %876, 2
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %874, i32 noundef %877)
  %878 = getelementptr inbounds i8, ptr %65, i64 7520
  %879 = load ptr, ptr %878, align 8, !tbaa !120
  %880 = load i32, ptr %874, align 8, !tbaa !121
  %881 = getelementptr inbounds i8, ptr %65, i64 7488
  %882 = load ptr, ptr %881, align 8, !tbaa !89
  %883 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %879, i32 noundef %880, ptr noundef %882, ptr noundef null)
  br label %884

884:                                              ; preds = %873, %.critedge796
  %885 = and i32 %4, 448
  %.not712 = icmp eq i32 %885, 0
  br i1 %.not712, label %986, label %886

886:                                              ; preds = %884
  %.not713 = icmp eq ptr %5, null
  br i1 %.not713, label %887, label %888

887:                                              ; preds = %886
  call void @__assert_fail(ptr noundef nonnull @.str.170, ptr noundef nonnull @.str.3, i32 noundef 10772, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

888:                                              ; preds = %886
  br i1 %.not695, label %891, label %889

889:                                              ; preds = %888
  %890 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %890, label %.thread841, label %891

891:                                              ; preds = %889, %888
  br i1 %.not, label %896, label %892

892:                                              ; preds = %891
  %893 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %893, label %.thread841, label %894

894:                                              ; preds = %892
  %895 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %895, label %.thread841, label %896

896:                                              ; preds = %894, %891
  %897 = and i32 %4, 256
  %.not714 = icmp eq i32 %897, 0
  br i1 %.not714, label %986, label %.thread841

.thread841:                                       ; preds = %894, %892, %889, %896
  %.0663846 = phi i32 [ 256, %896 ], [ 128, %894 ], [ 128, %892 ], [ 64, %889 ]
  %.0664845 = phi i32 [ 21, %896 ], [ 4, %894 ], [ 3, %892 ], [ 0, %889 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %21) #13
  %898 = getelementptr inbounds i8, ptr %21, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %898, i8 0, i64 40, i1 false)
  store i32 %.0663846, ptr %21, align 8, !tbaa !125
  %899 = getelementptr inbounds i8, ptr %21, i64 4
  store i32 %4, ptr %899, align 4, !tbaa !127
  %900 = getelementptr inbounds i8, ptr %21, i64 8
  store ptr %6, ptr %900, align 8, !tbaa !128
  %901 = getelementptr inbounds i8, ptr %21, i64 16
  %902 = zext i1 %.not793 to i8
  store i8 %902, ptr %901, align 8, !tbaa !129
  %903 = getelementptr inbounds i8, ptr %21, i64 20
  store i32 %.0664845, ptr %903, align 4, !tbaa !130
  %904 = getelementptr inbounds i8, ptr %65, i64 7520
  %905 = load ptr, ptr %904, align 8, !tbaa !120
  %906 = getelementptr inbounds i8, ptr %21, i64 24
  store ptr %905, ptr %906, align 8, !tbaa !131
  %907 = getelementptr inbounds i8, ptr %65, i64 7528
  %908 = load i32, ptr %907, align 8, !tbaa !91
  %909 = getelementptr inbounds i8, ptr %21, i64 32
  store i32 %908, ptr %909, align 8, !tbaa !132
  %910 = getelementptr inbounds i8, ptr %65, i64 7536
  %911 = load i32, ptr %910, align 8, !tbaa !97
  %912 = getelementptr inbounds i8, ptr %21, i64 36
  store i32 %911, ptr %912, align 4, !tbaa !133
  %913 = getelementptr inbounds i8, ptr %21, i64 40
  %914 = getelementptr inbounds i8, ptr %65, i64 7480
  %915 = getelementptr inbounds i8, ptr %65, i64 7488
  %916 = load ptr, ptr %915, align 8, !tbaa !89
  %917 = getelementptr inbounds i8, ptr %65, i64 7544
  %918 = load i32, ptr %917, align 8, !tbaa !134
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds i16, ptr %916, i64 %919
  %921 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %916, ptr noundef %920)
  %922 = getelementptr inbounds i8, ptr %21, i64 44
  store i32 %921, ptr %922, align 4, !tbaa !135
  %923 = getelementptr inbounds i8, ptr %65, i64 7548
  %924 = load i32, ptr %923, align 4, !tbaa !118
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds i16, ptr %916, i64 %925
  %927 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %916, ptr noundef %926)
  %928 = getelementptr inbounds i8, ptr %21, i64 48
  store i32 %927, ptr %928, align 8, !tbaa !136
  %929 = getelementptr inbounds i8, ptr %65, i64 7552
  %930 = load i32, ptr %929, align 8, !tbaa !119
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds i16, ptr %916, i64 %931
  %933 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %916, ptr noundef %932)
  %934 = getelementptr inbounds i8, ptr %21, i64 52
  store i32 %933, ptr %934, align 4, !tbaa !137
  %935 = call noundef i32 %5(ptr noundef nonnull %21)
  %936 = load ptr, ptr %906, align 8, !tbaa !131
  %937 = load ptr, ptr %904, align 8, !tbaa !120
  %938 = icmp eq ptr %936, %937
  br i1 %938, label %940, label %939

939:                                              ; preds = %.thread841
  call void @__assert_fail(ptr noundef nonnull @.str.171, ptr noundef nonnull @.str.3, i32 noundef 10820, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

940:                                              ; preds = %.thread841
  %941 = load i32, ptr %912, align 4, !tbaa !133
  %942 = load i32, ptr %910, align 8, !tbaa !97
  %943 = icmp eq i32 %941, %942
  br i1 %943, label %945, label %944

944:                                              ; preds = %940
  call void @__assert_fail(ptr noundef nonnull @.str.172, ptr noundef nonnull @.str.3, i32 noundef 10821, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

945:                                              ; preds = %940
  %946 = load i32, ptr %899, align 4, !tbaa !127
  %947 = icmp eq i32 %946, %4
  br i1 %947, label %949, label %948

948:                                              ; preds = %945
  call void @__assert_fail(ptr noundef nonnull @.str.173, ptr noundef nonnull @.str.3, i32 noundef 10822, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

949:                                              ; preds = %945
  %950 = load i32, ptr %922, align 4, !tbaa !135
  %.not716 = icmp eq i32 %950, %921
  br i1 %.not716, label %955, label %951

951:                                              ; preds = %949
  %952 = sext i32 %950 to i64
  %953 = getelementptr inbounds i8, ptr %936, i64 %952
  %954 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %936, ptr noundef %953)
  store i32 %954, ptr %917, align 8, !tbaa !134
  br label %955

955:                                              ; preds = %951, %949
  %956 = load i32, ptr %928, align 8, !tbaa !136
  %.not717 = icmp eq i32 %956, %927
  br i1 %.not717, label %962, label %957

957:                                              ; preds = %955
  %958 = load ptr, ptr %906, align 8, !tbaa !131
  %959 = sext i32 %956 to i64
  %960 = getelementptr inbounds i8, ptr %958, i64 %959
  %961 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %958, ptr noundef %960)
  store i32 %961, ptr %923, align 4, !tbaa !118
  br label %962

962:                                              ; preds = %957, %955
  %963 = load i32, ptr %934, align 4, !tbaa !137
  %.not718 = icmp eq i32 %963, %933
  br i1 %.not718, label %969, label %964

964:                                              ; preds = %962
  %965 = load ptr, ptr %906, align 8, !tbaa !131
  %966 = sext i32 %963 to i64
  %967 = getelementptr inbounds i8, ptr %965, i64 %966
  %968 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %965, ptr noundef %967)
  store i32 %968, ptr %929, align 8, !tbaa !119
  br label %969

969:                                              ; preds = %964, %962
  %970 = load i8, ptr %913, align 8, !tbaa !138, !range !33, !noundef !34
  %971 = trunc nuw i8 %970 to i1
  br i1 %971, label %972, label %985

972:                                              ; preds = %969
  %973 = load i32, ptr %909, align 8, !tbaa !132
  %974 = load ptr, ptr %906, align 8, !tbaa !131
  %975 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %974) #14
  %976 = trunc i64 %975 to i32
  %977 = icmp eq i32 %973, %976
  br i1 %977, label %979, label %978

978:                                              ; preds = %972
  call void @__assert_fail(ptr noundef nonnull @.str.174, ptr noundef nonnull @.str.3, i32 noundef 10828, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

979:                                              ; preds = %972
  %980 = load ptr, ptr %915, align 8, !tbaa !89
  %981 = load i32, ptr %914, align 8, !tbaa !90
  %982 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %980, i32 noundef %981, ptr noundef %974, ptr noundef null, ptr noundef null)
  %983 = getelementptr inbounds i8, ptr %65, i64 7532
  store i32 %982, ptr %983, align 4, !tbaa !86
  %984 = load i32, ptr %909, align 8, !tbaa !132
  store i32 %984, ptr %907, align 8, !tbaa !91
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698) %150)
  br label %985

985:                                              ; preds = %979, %969
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %21) #13
  br label %986

986:                                              ; preds = %896, %985, %884
  br i1 %67, label %987, label %993

987:                                              ; preds = %986
  %988 = getelementptr inbounds i8, ptr %65, i64 7520
  %989 = load ptr, ptr %988, align 8, !tbaa !120
  %990 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %989, ptr noundef nonnull dereferenceable(1) %1) #14
  %.not719 = icmp eq i32 %990, 0
  br i1 %.not719, label %993, label %991

991:                                              ; preds = %987
  %992 = sext i32 %2 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %1, ptr noundef %989, i64 noundef %992)
  br label %993

993:                                              ; preds = %868, %991, %987, %986, %857
  %.2643 = phi i1 [ false, %857 ], [ true, %991 ], [ %.0641, %987 ], [ %.0641, %986 ], [ %.0641, %868 ]
  %994 = trunc nuw i8 %.3 to i1
  %.pre878 = load i32, ptr %181, align 8, !tbaa !80
  %995 = icmp eq i32 %.pre878, %71
  %or.cond = select i1 %994, i1 %995, i1 false
  br i1 %or.cond, label %996, label %997

996:                                              ; preds = %993
  call void @_ZN5ImGui13ClearActiveIDEv()
  %.pre877 = load i32, ptr %181, align 8, !tbaa !80
  br label %997

997:                                              ; preds = %996, %993
  %998 = phi i32 [ %.pre877, %996 ], [ %.pre878, %993 ]
  %999 = icmp eq i32 %998, %71
  %brmerge803.not = and i1 %67, %999
  br i1 %brmerge803.not, label %1000, label %1003

1000:                                             ; preds = %997
  %1001 = getelementptr inbounds i8, ptr %65, i64 7520
  %1002 = load ptr, ptr %1001, align 8, !tbaa !120
  br label %1003

1003:                                             ; preds = %997, %1000
  %1004 = phi ptr [ %1002, %1000 ], [ %1, %997 ]
  br i1 %.not693, label %1005, label %1009

1005:                                             ; preds = %1003
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %9, i32 noundef %71, i32 noundef 1)
  %.sroa.068.0.copyload = load <2 x float>, ptr %9, align 8
  %.sroa.067.0.copyload = load <2 x float>, ptr %87, align 8
  %1006 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1007 = getelementptr inbounds i8, ptr %65, i64 5468
  %1008 = load float, ptr %1007, align 4, !tbaa !139
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.068.0.copyload, <2 x float> %.sroa.067.0.copyload, i32 noundef %1006, i1 noundef zeroext true, float noundef %1008)
  br label %1009

1009:                                             ; preds = %1005, %1003
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #13
  %1010 = load float, ptr %9, align 8, !tbaa !101
  %1011 = getelementptr inbounds i8, ptr %9, i64 4
  %1012 = load float, ptr %1011, align 4, !tbaa !140
  %1013 = load float, ptr %8, align 8, !tbaa !42
  %1014 = fadd float %1010, %1013
  %1015 = getelementptr inbounds i8, ptr %8, i64 4
  %1016 = load float, ptr %1015, align 4, !tbaa !141
  %1017 = fadd float %1012, %1016
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %22, float noundef %1010, float noundef %1012, float noundef %1014, float noundef %1017)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #13
  br i1 %.not693, label %1021, label %1018

1018:                                             ; preds = %1009
  %1019 = getelementptr inbounds i8, ptr %.0633, i64 200
  %1020 = load i64, ptr %1019, align 8
  br label %1024

1021:                                             ; preds = %1009
  %1022 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %80)
  %1023 = bitcast <2 x float> %1022 to i64
  br label %1024

1024:                                             ; preds = %1021, %1018
  %storemerge = phi i64 [ %1020, %1018 ], [ %1023, %1021 ]
  store i64 %storemerge, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1025 = load i32, ptr %150, align 8, !tbaa !81
  %1026 = icmp ne i32 %1025, %71
  %brmerge805 = or i1 %.not693, %1026
  br i1 %brmerge805, label %1031, label %1027

1027:                                             ; preds = %1024
  %1028 = load i32, ptr %181, align 8, !tbaa !80
  %1029 = call noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(976) %.0633, ptr noundef nonnull @.str.80, ptr noundef null)
  %1030 = icmp eq i32 %1028, %1029
  br label %1031

1031:                                             ; preds = %1024, %1027
  %1032 = phi i1 [ false, %1024 ], [ %1030, %1027 ]
  %1033 = load i32, ptr %181, align 8, !tbaa !80
  %1034 = icmp eq i32 %1033, %71
  %brmerge806 = select i1 %1034, i1 true, i1 %1032
  br i1 %brmerge806, label %1035, label %1263

1035:                                             ; preds = %1031
  %1036 = getelementptr inbounds i8, ptr %65, i64 24
  %1037 = load float, ptr %1036, align 8, !tbaa !142
  %1038 = getelementptr inbounds i8, ptr %65, i64 11164
  %1039 = load float, ptr %1038, align 4, !tbaa !143
  %1040 = fadd float %1037, %1039
  store float %1040, ptr %1038, align 4, !tbaa !143
  %1041 = getelementptr inbounds i8, ptr %65, i64 7488
  %1042 = load ptr, ptr %1041, align 8, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %25)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %26)
  %1043 = getelementptr inbounds i8, ptr %65, i64 7544
  %1044 = load i32, ptr %1043, align 8, !tbaa !134
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds i16, ptr %1042, i64 %1045
  %.sroa.044.0.copyload = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv.searches_result_line_number, align 4
  %.sroa.8.0.copyload = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP25ImGuiTextEditCallbackDataEPv.searches_result_line_number, i64 4), align 4
  %1047 = getelementptr inbounds i8, ptr %65, i64 7548
  %1048 = load i32, ptr %1047, align 4, !tbaa !118
  %1049 = getelementptr inbounds i8, ptr %65, i64 7552
  %1050 = load i32, ptr %1049, align 8, !tbaa !119
  %.not720 = icmp eq i32 %1048, %1050
  br i1 %.not720, label %1055, label %1051

1051:                                             ; preds = %1035
  %1052 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1048, i32 noundef %1050)
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds i16, ptr %1042, i64 %1053
  br label %1055

1055:                                             ; preds = %1051, %1035
  %.sroa.6.0 = phi ptr [ %1054, %1051 ], [ null, %1035 ]
  %.0655 = phi i32 [ 2, %1051 ], [ 1, %1035 ]
  %.sroa.8.0 = phi i32 [ -1, %1051 ], [ %.sroa.8.0.copyload, %1035 ]
  %not..not693 = xor i1 %.not693, true
  %1056 = zext i1 %not..not693 to i32
  %1057 = add nuw nsw i32 %.0655, %1056
  br label %1058

1058:                                             ; preds = %1073, %1055
  %.1656 = phi i32 [ %1057, %1055 ], [ %.3658, %1073 ]
  %.sroa.8.1 = phi i32 [ %.sroa.8.0, %1055 ], [ %.sroa.8.2, %1073 ]
  %.sroa.044.0 = phi i32 [ %.sroa.044.0.copyload, %1055 ], [ %.sroa.044.2, %1073 ]
  %.0652 = phi i32 [ 0, %1055 ], [ %.1653, %1073 ]
  %.0651 = phi ptr [ %1042, %1055 ], [ %1074, %1073 ]
  %1059 = load i16, ptr %.0651, align 2, !tbaa !111
  switch i16 %1059, label %1073 [
    i16 0, label %1075
    i16 10, label %1060
  ]

1060:                                             ; preds = %1058
  %1061 = add nsw i32 %.0652, 1
  %1062 = icmp eq i32 %.sroa.044.0, -1
  br i1 %1062, label %1063, label %1067

1063:                                             ; preds = %1060
  %.not722 = icmp ult ptr %.0651, %1046
  br i1 %.not722, label %1067, label %1064

1064:                                             ; preds = %1063
  %1065 = add nsw i32 %.1656, -1
  %1066 = icmp slt i32 %.1656, 2
  br i1 %1066, label %1075, label %1067

1067:                                             ; preds = %1064, %1063, %1060
  %.2657 = phi i32 [ %1065, %1064 ], [ %.1656, %1063 ], [ %.1656, %1060 ]
  %.sroa.044.1 = phi i32 [ %1061, %1064 ], [ -1, %1063 ], [ %.sroa.044.0, %1060 ]
  %1068 = icmp eq i32 %.sroa.8.1, -1
  br i1 %1068, label %1069, label %1073

1069:                                             ; preds = %1067
  %.not723 = icmp ult ptr %.0651, %.sroa.6.0
  br i1 %.not723, label %1073, label %1070

1070:                                             ; preds = %1069
  %1071 = add nsw i32 %.2657, -1
  %1072 = icmp slt i32 %.2657, 2
  br i1 %1072, label %1075, label %1073

1073:                                             ; preds = %1058, %1070, %1069, %1067
  %.3658 = phi i32 [ %1071, %1070 ], [ %.2657, %1069 ], [ %.2657, %1067 ], [ %.1656, %1058 ]
  %.sroa.8.2 = phi i32 [ %1061, %1070 ], [ -1, %1069 ], [ %.sroa.8.1, %1067 ], [ %.sroa.8.1, %1058 ]
  %.sroa.044.2 = phi i32 [ %.sroa.044.1, %1070 ], [ %.sroa.044.1, %1069 ], [ %.sroa.044.1, %1067 ], [ %.sroa.044.0, %1058 ]
  %.1653 = phi i32 [ %1061, %1070 ], [ %1061, %1069 ], [ %1061, %1067 ], [ %.0652, %1058 ]
  %1074 = getelementptr inbounds i8, ptr %.0651, i64 2
  br label %1058, !llvm.loop !144

1075:                                             ; preds = %1070, %1064, %1058
  %.sroa.8.3 = phi i32 [ %.sroa.8.1, %1058 ], [ %.sroa.8.1, %1064 ], [ %1061, %1070 ]
  %.sroa.044.3 = phi i32 [ %.sroa.044.0, %1058 ], [ %1061, %1064 ], [ %.sroa.044.1, %1070 ]
  %.2654 = phi i32 [ %.0652, %1058 ], [ %1061, %1064 ], [ %1061, %1070 ]
  %1076 = add nsw i32 %.2654, 1
  %1077 = icmp eq i32 %.sroa.044.3, -1
  %spec.select807 = select i1 %1077, i32 %1076, i32 %.sroa.044.3
  %1078 = icmp eq i32 %.sroa.8.3, -1
  %.sroa.8.4 = select i1 %1078, i32 %1076, i32 %.sroa.8.3
  %1079 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %1046, ptr noundef %1042)
  %1080 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1079, ptr noundef %1046, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.031.0.vec.extract = extractelement <2 x float> %1080, i64 0
  store float %.sroa.031.0.vec.extract, ptr %25, align 4, !tbaa !42
  %1081 = sitofp i32 %spec.select807 to float
  %1082 = getelementptr inbounds i8, ptr %65, i64 6240
  %1083 = load float, ptr %1082, align 8, !tbaa !105
  %1084 = fmul float %1083, %1081
  %1085 = getelementptr inbounds i8, ptr %25, i64 4
  store float %1084, ptr %1085, align 4, !tbaa !141
  %1086 = icmp sgt i32 %.sroa.8.4, -1
  br i1 %1086, label %1087, label %1094

1087:                                             ; preds = %1075
  %1088 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.6.0, ptr noundef %1042)
  %1089 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1088, ptr noundef %.sroa.6.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.030.0.vec.extract = extractelement <2 x float> %1089, i64 0
  store float %.sroa.030.0.vec.extract, ptr %26, align 4, !tbaa !42
  %1090 = uitofp nneg i32 %.sroa.8.4 to float
  %1091 = load float, ptr %1082, align 8, !tbaa !105
  %1092 = fmul float %1091, %1090
  %1093 = getelementptr inbounds i8, ptr %26, i64 4
  store float %1092, ptr %1093, align 4, !tbaa !141
  br label %1094

1094:                                             ; preds = %1087, %1075
  %1095 = phi float [ %1091, %1087 ], [ %1083, %1075 ]
  br i1 %.not693, label %1101, label %1096

1096:                                             ; preds = %1094
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #13
  %1097 = load float, ptr %8, align 8, !tbaa !42
  %1098 = sitofp i32 %1076 to float
  %1099 = fmul float %1095, %1098
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef %1097, float noundef %1099)
  %1100 = load i64, ptr %27, align 8
  store i64 %1100, ptr %24, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #13
  br label %1101

1101:                                             ; preds = %1096, %1094
  %1102 = getelementptr inbounds i8, ptr %65, i64 11168
  %1103 = load i8, ptr %1102, align 8, !tbaa !110, !range !33, !noundef !34
  %1104 = trunc nuw i8 %1103 to i1
  br i1 %1104, label %1105, label %1150

1105:                                             ; preds = %1101
  %1106 = and i32 %4, 4096
  %.not724 = icmp eq i32 %1106, 0
  br i1 %.not724, label %1107, label %1126

1107:                                             ; preds = %1105
  %1108 = load float, ptr %8, align 8, !tbaa !42
  %1109 = fmul float %1108, 2.500000e-01
  %1110 = load float, ptr %25, align 4, !tbaa !42
  %1111 = getelementptr inbounds i8, ptr %65, i64 7540
  %1112 = load float, ptr %1111, align 4, !tbaa !92
  %1113 = fcmp olt float %1110, %1112
  br i1 %1113, label %1114, label %1119

1114:                                             ; preds = %1107
  %1115 = fsub float %1110, %1109
  %1116 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1115)
  %1117 = fptosi float %1116 to i32
  %1118 = sitofp i32 %1117 to float
  store float %1118, ptr %1111, align 4, !tbaa !92
  br label %1128

1119:                                             ; preds = %1107
  %1120 = fsub float %1110, %1108
  %1121 = fcmp ult float %1120, %1112
  br i1 %1121, label %1128, label %1122

1122:                                             ; preds = %1119
  %1123 = fadd float %1109, %1120
  %1124 = fptosi float %1123 to i32
  %1125 = sitofp i32 %1124 to float
  store float %1125, ptr %1111, align 4, !tbaa !92
  br label %1128

1126:                                             ; preds = %1105
  %1127 = getelementptr inbounds i8, ptr %65, i64 7540
  store float 0.000000e+00, ptr %1127, align 4, !tbaa !92
  br label %1128

1128:                                             ; preds = %1114, %1122, %1119, %1126
  br i1 %.not693, label %1150, label %1129

1129:                                             ; preds = %1128
  %1130 = getelementptr inbounds i8, ptr %.0633, i64 92
  %1131 = load float, ptr %1130, align 4, !tbaa !116
  %1132 = load float, ptr %1085, align 4, !tbaa !141
  %1133 = load float, ptr %1082, align 8, !tbaa !105
  %1134 = fsub float %1132, %1133
  %1135 = fcmp olt float %1134, %1131
  br i1 %1135, label %1136, label %1138

1136:                                             ; preds = %1129
  %1137 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1134)
  %.pre879 = load float, ptr %1130, align 4, !tbaa !116
  br label %1143

1138:                                             ; preds = %1129
  %1139 = load float, ptr %1015, align 4, !tbaa !141
  %1140 = fsub float %1132, %1139
  %1141 = fcmp ult float %1140, %1131
  br i1 %1141, label %1143, label %1142

1142:                                             ; preds = %1138
  br label %1143

1143:                                             ; preds = %1138, %1142, %1136
  %1144 = phi float [ %.pre879, %1136 ], [ %1131, %1142 ], [ %1131, %1138 ]
  %.0644 = phi float [ %1137, %1136 ], [ %1140, %1142 ], [ %1131, %1138 ]
  %1145 = fsub float %1144, %.0644
  %1146 = getelementptr inbounds i8, ptr %.0633, i64 204
  %1147 = load float, ptr %1146, align 4, !tbaa !104
  %1148 = fadd float %1147, %1145
  store float %1148, ptr %1146, align 4, !tbaa !104
  store float %.0644, ptr %1130, align 4, !tbaa !116
  %1149 = getelementptr inbounds i8, ptr %23, i64 4
  store float %1148, ptr %1149, align 4, !tbaa !141
  br label %1150

1150:                                             ; preds = %1128, %1143, %1101
  store i8 0, ptr %1102, align 8, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #13
  %1151 = getelementptr inbounds i8, ptr %65, i64 7540
  %1152 = load float, ptr %1151, align 4, !tbaa !92
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef %1152, float noundef 0.000000e+00)
  %1153 = load i32, ptr %1047, align 4, !tbaa !118
  %1154 = load i32, ptr %1049, align 8, !tbaa !119
  %.not725 = icmp eq i32 %1153, %1154
  br i1 %.not725, label %1219, label %1155

1155:                                             ; preds = %1150
  %1156 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1153, i32 noundef %1154)
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds i16, ptr %1042, i64 %1157
  %1159 = load i32, ptr %1047, align 4, !tbaa !118
  %1160 = load i32, ptr %1049, align 8, !tbaa !119
  %1161 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1159, i32 noundef %1160)
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds i16, ptr %1042, i64 %1162
  %1164 = select i1 %.not693, float -1.000000e+00, float 0.000000e+00
  %1165 = select i1 %.not693, float 2.000000e+00, float 0.000000e+00
  %1166 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 37, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #13
  %1167 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef nonnull align 4 dereferenceable(8) %26)
  store <2 x float> %1167, ptr %30, align 8
  %1168 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %28)
  store <2 x float> %1168, ptr %29, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #13
  store ptr %1158, ptr %31, align 8, !tbaa !35
  %1169 = getelementptr inbounds i8, ptr %29, i64 4
  %1170 = icmp slt i32 %1156, %1161
  br i1 %1170, label %.lr.ph870, label %._crit_edge

.lr.ph870:                                        ; preds = %1155
  %1171 = extractelement <2 x float> %1168, i64 1
  %1172 = getelementptr inbounds i8, ptr %22, i64 12
  %1173 = getelementptr inbounds i8, ptr %22, i64 4
  %1174 = getelementptr inbounds i8, ptr %65, i64 6232
  %1175 = getelementptr inbounds i8, ptr %.0633, i64 688
  %1176 = getelementptr inbounds i8, ptr %32, i64 8
  %.pre880 = load float, ptr %1082, align 8, !tbaa !105
  br label %1177

1177:                                             ; preds = %.lr.ph870, %.loopexit
  %1178 = phi ptr [ %1158, %.lr.ph870 ], [ %1211, %.loopexit ]
  %1179 = phi float [ %1171, %.lr.ph870 ], [ %1217, %.loopexit ]
  %1180 = phi float [ %.pre880, %.lr.ph870 ], [ %1213, %.loopexit ]
  %1181 = load float, ptr %1172, align 4, !tbaa !145
  %1182 = fadd float %1181, %1180
  %1183 = fcmp ogt float %1179, %1182
  br i1 %1183, label %._crit_edge, label %1184

1184:                                             ; preds = %1177
  %1185 = load float, ptr %1173, align 4, !tbaa !146
  %1186 = fcmp olt float %1179, %1185
  br i1 %1186, label %.preheader, label %1193

.preheader:                                       ; preds = %1184, %1189
  %1187 = phi ptr [ %1190, %1189 ], [ %1178, %1184 ]
  %1188 = icmp ult ptr %1187, %1163
  br i1 %1188, label %1189, label %.loopexit

1189:                                             ; preds = %.preheader
  %1190 = getelementptr inbounds i8, ptr %1187, i64 2
  store ptr %1190, ptr %31, align 8, !tbaa !35
  %1191 = load i16, ptr %1187, align 2, !tbaa !111
  %1192 = icmp eq i16 %1191, 10
  br i1 %1192, label %.loopexit, label %.preheader, !llvm.loop !147

1193:                                             ; preds = %1184
  %1194 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1178, ptr noundef nonnull %1163, ptr noundef nonnull %31, ptr noundef null, i1 noundef zeroext true)
  %.sroa.014.0.vec.extract = extractelement <2 x float> %1194, i64 0
  %1195 = fcmp ugt float %.sroa.014.0.vec.extract, 0.000000e+00
  br i1 %1195, label %1202, label %1196

1196:                                             ; preds = %1193
  %1197 = load ptr, ptr %1174, align 8, !tbaa !70
  %1198 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(112) %1197, i16 noundef zeroext 32)
  %1199 = fmul float %1198, 5.000000e-01
  %1200 = fptosi float %1199 to i32
  %1201 = sitofp i32 %1200 to float
  br label %1202

1202:                                             ; preds = %1196, %1193
  %.sroa.014.0.vec.extract17.pre-phi = phi float [ %1201, %1196 ], [ %.sroa.014.0.vec.extract, %1193 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #13
  %1203 = load float, ptr %1082, align 8, !tbaa !105
  %1204 = fsub float %1164, %1203
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef 0.000000e+00, float noundef %1204)
  %1205 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %34)
  store <2 x float> %1205, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef %.sroa.014.0.vec.extract17.pre-phi, float noundef %1165)
  %1206 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %36)
  store <2 x float> %1206, ptr %35, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %35)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %22)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(16) %37)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %38, ptr noundef nonnull align 4 dereferenceable(16) %22)
  %1207 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(16) %38)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #13
  br i1 %1207, label %1208, label %1210

1208:                                             ; preds = %1202
  %1209 = load ptr, ptr %1175, align 8, !tbaa !148
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1209, ptr noundef nonnull align 4 dereferenceable(8) %32, ptr noundef nonnull align 4 dereferenceable(8) %1176, i32 noundef %1166, float noundef 0.000000e+00, i32 noundef 15)
  br label %1210

1210:                                             ; preds = %1208, %1202
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #13
  %.pre881 = load float, ptr %1082, align 8, !tbaa !105
  %.pre882 = load float, ptr %1169, align 4, !tbaa !141
  %.pre883 = load ptr, ptr %31, align 8, !tbaa !35
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1189, %1210
  %1211 = phi ptr [ %.pre883, %1210 ], [ %1187, %.preheader ], [ %1190, %1189 ]
  %1212 = phi float [ %.pre882, %1210 ], [ %1179, %1189 ], [ %1179, %.preheader ]
  %1213 = phi float [ %.pre881, %1210 ], [ %1180, %1189 ], [ %1180, %.preheader ]
  %1214 = load float, ptr %23, align 8, !tbaa !42
  %1215 = load float, ptr %28, align 4, !tbaa !42
  %1216 = fsub float %1214, %1215
  store float %1216, ptr %29, align 8, !tbaa !42
  %1217 = fadd float %1213, %1212
  store float %1217, ptr %1169, align 4, !tbaa !141
  %1218 = icmp ult ptr %1211, %1163
  br i1 %1218, label %1177, label %._crit_edge, !llvm.loop !149

._crit_edge:                                      ; preds = %.loopexit, %1177, %1155
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #13
  br label %1219

1219:                                             ; preds = %._crit_edge, %1150
  %1220 = getelementptr inbounds i8, ptr %.0633, i64 688
  %1221 = load ptr, ptr %1220, align 8, !tbaa !148
  %1222 = getelementptr inbounds i8, ptr %65, i64 6232
  %1223 = load ptr, ptr %1222, align 8, !tbaa !70
  %1224 = load float, ptr %1082, align 8, !tbaa !105
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #13
  %1225 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef nonnull align 4 dereferenceable(8) %28)
  store <2 x float> %1225, ptr %39, align 8
  %1226 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  %1227 = getelementptr inbounds i8, ptr %65, i64 7528
  %1228 = load i32, ptr %1227, align 8, !tbaa !91
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds i8, ptr %1004, i64 %1229
  %. = select i1 %.not693, ptr %22, ptr null
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1221, ptr noundef %1223, float noundef %1224, ptr noundef nonnull align 4 dereferenceable(8) %39, i32 noundef %1226, ptr noundef %1004, ptr noundef %1230, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #13
  %1231 = getelementptr inbounds i8, ptr %65, i64 209
  %1232 = load i8, ptr %1231, align 1, !tbaa !150, !range !33, !noundef !34
  %1233 = trunc nuw i8 %1232 to i1
  br i1 %1233, label %1234, label %1240

1234:                                             ; preds = %1219
  %1235 = load float, ptr %1038, align 4, !tbaa !151
  %1236 = fcmp ugt float %1235, 0.000000e+00
  br i1 %1236, label %1237, label %1240

1237:                                             ; preds = %1234
  %1238 = call noundef float @_ZL6ImFmodff(float noundef %1235, float noundef 0x3FF3333340000000)
  %1239 = fcmp ole float %1238, 0x3FE99999A0000000
  br label %1240

1240:                                             ; preds = %1237, %1234, %1219
  %1241 = phi i1 [ true, %1234 ], [ true, %1219 ], [ %1239, %1237 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #13
  %1242 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef nonnull align 4 dereferenceable(8) %25)
  store <2 x float> %1242, ptr %40, align 8
  %1243 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(8) %28)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #13
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1243, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1243, i64 1
  %1244 = load float, ptr %1082, align 8, !tbaa !105
  %1245 = fsub float %.sroa.0.4.vec.extract, %1244
  %1246 = fadd float %1245, 5.000000e-01
  %1247 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1248 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %41, float noundef %.sroa.0.0.vec.extract, float noundef %1246, float noundef %1247, float noundef %1248)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #13
  br i1 %1241, label %1249, label %.critedge4

1249:                                             ; preds = %1240
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %42, ptr noundef nonnull align 4 dereferenceable(16) %22)
  %1250 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %41, ptr noundef nonnull align 4 dereferenceable(16) %42)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #13
  br i1 %1250, label %1251, label %1255

1251:                                             ; preds = %1249
  %1252 = load ptr, ptr %1220, align 8, !tbaa !148
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #13
  %1253 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %41)
  store <2 x float> %1253, ptr %43, align 8
  %1254 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1252, ptr noundef nonnull align 4 dereferenceable(8) %41, ptr noundef nonnull align 4 dereferenceable(8) %43, i32 noundef %1254, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #13
  br label %1255

.critedge4:                                       ; preds = %1240
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #13
  br label %1255

1255:                                             ; preds = %.critedge4, %1251, %1249
  br i1 %67, label %1256, label %1262

1256:                                             ; preds = %1255
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #13
  %1257 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1258 = load float, ptr %1082, align 8, !tbaa !105
  %1259 = fsub float %.sroa.0.4.vec.extract, %1258
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef %1257, float noundef %1259)
  %1260 = getelementptr inbounds i8, ptr %65, i64 11352
  %1261 = load i64, ptr %44, align 8
  store i64 %1261, ptr %1260, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #13
  br label %1262

1262:                                             ; preds = %1256, %1255
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #13
  br label %1281

1263:                                             ; preds = %1031
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #13
  store ptr null, ptr %45, align 8, !tbaa !35
  br i1 %.not693, label %1272, label %1264

1264:                                             ; preds = %1263
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #13
  %1265 = load float, ptr %8, align 8, !tbaa !42
  %1266 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %1004, ptr noundef nonnull %45)
  %1267 = sitofp i32 %1266 to float
  %1268 = getelementptr inbounds i8, ptr %65, i64 6240
  %1269 = load float, ptr %1268, align 8, !tbaa !105
  %1270 = fmul float %1269, %1267
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %46, float noundef %1265, float noundef %1270)
  %1271 = load i64, ptr %46, align 8
  store i64 %1271, ptr %24, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #13
  br label %1272

1272:                                             ; preds = %1264, %1263
  %.5 = phi ptr [ null, %1264 ], [ %22, %1263 ]
  %1273 = getelementptr inbounds i8, ptr %.0633, i64 688
  %1274 = load ptr, ptr %1273, align 8, !tbaa !148
  %1275 = getelementptr inbounds i8, ptr %65, i64 6232
  %1276 = load ptr, ptr %1275, align 8, !tbaa !70
  %1277 = getelementptr inbounds i8, ptr %65, i64 6240
  %1278 = load float, ptr %1277, align 8, !tbaa !105
  %1279 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  %1280 = load ptr, ptr %45, align 8, !tbaa !35
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1274, ptr noundef %1276, float noundef %1278, ptr noundef nonnull align 4 dereferenceable(8) %23, i32 noundef %1279, ptr noundef %1004, ptr noundef %1280, float noundef 0.000000e+00, ptr noundef %.5)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #13
  br label %1281

1281:                                             ; preds = %1272, %1262
  br i1 %.not693, label %1286, label %1282

1282:                                             ; preds = %1281
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #13
  %1283 = getelementptr inbounds i8, ptr %65, i64 6240
  %1284 = load float, ptr %1283, align 8, !tbaa !105
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %48, float noundef 0.000000e+00, float noundef %1284)
  %1285 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %48)
  store <2 x float> %1285, ptr %47, align 8
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %47)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #13
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1286

1286:                                             ; preds = %1282, %1281
  br i1 %.not698, label %.thread847, label %1287

.thread847:                                       ; preds = %1286
  call void @_ZN5ImGui7PopFontEv()
  br label %1292

1287:                                             ; preds = %1286
  %1288 = getelementptr inbounds i8, ptr %65, i64 11424
  %1289 = load i8, ptr %1288, align 8, !tbaa !152, !range !33, !noundef !34
  %1290 = trunc nuw i8 %1289 to i1
  br i1 %1290, label %1291, label %1292

1291:                                             ; preds = %1287
  call void @_ZL15LogRenderedTextPK6ImVec2PKcS3_(ptr noundef nonnull %23, ptr noundef %1004, ptr noundef null)
  br label %1292

1292:                                             ; preds = %.thread847, %1287, %1291
  br i1 %88, label %1293, label %1302

1293:                                             ; preds = %1292
  %1294 = load float, ptr %87, align 8, !tbaa !153
  %1295 = getelementptr inbounds i8, ptr %65, i64 5484
  %1296 = load float, ptr %1295, align 4, !tbaa !38
  %1297 = fadd float %1294, %1296
  %1298 = load float, ptr %1011, align 4, !tbaa !140
  %1299 = load float, ptr %81, align 4, !tbaa !36
  %1300 = fadd float %1298, %1299
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %1297, float noundef %1300)
  %1301 = load <2 x float>, ptr %49, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1301, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1302

1302:                                             ; preds = %1293, %1292
  br i1 %.2643, label %1303, label %1304

1303:                                             ; preds = %1302
  call void @_ZN5ImGui20MarkItemValueChangedEj(i32 noundef %71)
  br label %1304

1304:                                             ; preds = %1303, %1302
  %1305 = and i32 %4, 32
  %.not726 = icmp eq i32 %1305, 0
  %1306 = trunc nuw i8 %.2647 to i1
  %.0 = select i1 %.not726, i1 %.2643, i1 %1306
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #13
  br label %1307

1307:                                             ; preds = %112, %1304, %100
  %.1 = phi i1 [ false, %100 ], [ %.0, %1304 ], [ false, %112 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #13
  br label %1308

1308:                                             ; preds = %7, %1307
  %.2 = phi i1 [ %.1, %1307 ], [ false, %7 ]
  ret i1 %.2
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #10

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3698), i32 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3698)) local_unnamed_addr #0 align 2

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(112), i16 noundef zeroext) local_unnamed_addr #11

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #9 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18ImGuiTextEditState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3698)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN8ImGuiStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3698)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN8ImGuiStbL18stb_textedit_clickEP18ImGuiTextEditStatePNS_17STB_TexteditStateEff(ptr noundef, ptr noundef, float noundef, float noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN8ImGuiStbL17stb_textedit_dragEP18ImGuiTextEditStatePNS_17STB_TexteditStateEff(ptr noundef, ptr noundef, float noundef, float noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18ImGuiTextEditState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3698)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN8ImGuiStbL16stb_textedit_cutEP18ImGuiTextEditStatePNS_17STB_TexteditStateE(ptr noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN8ImGuiStbL18stb_textedit_pasteEP18ImGuiTextEditStatePNS_17STB_TexteditStateEPKti(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(112), i16 noundef zeroext) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #10

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: write) }
attributes #3 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 = { 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 #8 = { 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 #9 = { inlinehint 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 #10 = { 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 #11 = { "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 #12 = { noreturn nounwind }
attributes #13 = { nounwind }
attributes #14 = { nounwind willreturn memory(read) }

!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, !13, i64 127}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !12, i64 76, !10, i64 80, !10, i64 84, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !13, i64 120, !13, i64 121, !13, i64 122, !13, i64 123, !13, i64 124, !13, i64 125, !13, i64 126, !13, i64 127, !13, i64 128, !13, i64 129, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !13, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !11, i64 184, !11, i64 192, !14, i64 200, !20, i64 496, !15, i64 512, !15, i64 528, !15, i64 544, !15, i64 560, !15, i64 576, !10, i64 592, !12, i64 596, !21, i64 600, !22, i64 648, !24, i64 664, !12, i64 680, !10, i64 684, !7, i64 688, !25, i64 696, !7, i64 864, !7, i64 872, !7, i64 880, !7, i64 888, !7, i64 896, !7, i64 904, !8, i64 912, !8, i64 920, !10, i64 952, !10, i64 956, !10, i64 960, !10, i64 964, !10, i64 968, !10, i64 972}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS6ImVec2", !12, i64 0, !12, i64 4}
!12 = !{!"float", !8, i64 0}
!13 = !{!"bool", !8, i64 0}
!14 = !{!"_ZTS19ImGuiWindowTempData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !15, i64 68, !15, i64 84, !13, i64 100, !13, i64 101, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !13, i64 120, !11, i64 124, !16, i64 136, !7, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !12, i64 172, !12, i64 176, !17, i64 184, !18, i64 200, !18, i64 216, !19, i64 232, !8, i64 248, !12, i64 272, !12, i64 276, !12, i64 280, !7, i64 288}
!15 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!16 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!17 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!18 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!19 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!20 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!21 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !8, i64 16, !8, i64 32}
!22 = !{!"_ZTS12ImGuiStorage", !23, i64 0}
!23 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!24 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !10, i64 0, !10, i64 4, !7, i64 8}
!25 = !{!"_ZTS10ImDrawList", !26, i64 0, !27, i64 16, !28, i64 32, !10, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !7, i64 80, !7, i64 88, !29, i64 96, !30, i64 112, !31, i64 128, !10, i64 144, !10, i64 148, !32, i64 152}
!26 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!28 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{i8 0, i8 2}
!34 = !{}
!35 = !{!7, !7, i64 0}
!36 = !{!37, !12, i64 56}
!37 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !11, i64 4, !12, i64 12, !12, i64 16, !11, i64 20, !11, i64 28, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !11, i64 52, !12, i64 60, !12, i64 64, !11, i64 68, !11, i64 76, !11, i64 84, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !11, i64 116, !11, i64 124, !11, i64 132, !12, i64 140, !13, i64 144, !13, i64 145, !12, i64 148, !8, i64 152}
!38 = !{!37, !12, i64 76}
!39 = !{!6, !10, i64 308}
!40 = !{!6, !10, i64 316}
!41 = !{!6, !12, i64 112}
!42 = !{!11, !12, i64 0}
!43 = !{!44, !10, i64 7328}
!44 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !45, i64 8, !37, i64 5408, !7, i64 6232, !12, i64 6240, !12, i64 6244, !46, i64 6248, !12, i64 6384, !10, i64 6388, !10, i64 6392, !10, i64 6396, !16, i64 6400, !16, i64 6416, !16, i64 6432, !22, i64 6448, !10, i64 6464, !7, i64 6472, !7, i64 6480, !7, i64 6488, !10, i64 6496, !13, i64 6500, !10, i64 6504, !12, i64 6508, !10, i64 6512, !10, i64 6516, !12, i64 6520, !13, i64 6524, !13, i64 6525, !13, i64 6526, !13, i64 6527, !13, i64 6528, !13, i64 6529, !10, i64 6532, !11, i64 6536, !7, i64 6544, !7, i64 6552, !48, i64 6560, !10, i64 6564, !12, i64 6568, !7, i64 6576, !49, i64 6584, !50, i64 6600, !51, i64 6616, !52, i64 6632, !52, i64 6648, !53, i64 6664, !13, i64 6776, !10, i64 6780, !7, i64 6784, !10, i64 6792, !10, i64 6796, !10, i64 6800, !10, i64 6804, !10, i64 6808, !10, i64 6812, !10, i64 6816, !10, i64 6820, !48, i64 6824, !15, i64 6828, !10, i64 6844, !7, i64 6848, !12, i64 6856, !12, i64 6860, !13, i64 6864, !10, i64 6868, !10, i64 6872, !13, i64 6876, !13, i64 6877, !13, i64 6878, !13, i64 6879, !13, i64 6880, !13, i64 6881, !13, i64 6882, !10, i64 6884, !15, i64 6888, !13, i64 6904, !13, i64 6905, !10, i64 6908, !54, i64 6912, !10, i64 6916, !10, i64 6920, !10, i64 6924, !55, i64 6928, !55, i64 6976, !55, i64 7024, !56, i64 7072, !57, i64 7120, !12, i64 7152, !25, i64 7160, !10, i64 7328, !13, i64 7332, !10, i64 7336, !10, i64 7340, !58, i64 7344, !15, i64 7408, !10, i64 7424, !10, i64 7428, !12, i64 7432, !10, i64 7436, !10, i64 7440, !10, i64 7444, !59, i64 7448, !8, i64 7464, !60, i64 7472, !65, i64 11176, !10, i64 11288, !10, i64 11292, !47, i64 11296, !13, i64 11312, !12, i64 11316, !12, i64 11320, !11, i64 11324, !10, i64 11332, !61, i64 11336, !11, i64 11352, !11, i64 11360, !13, i64 11368, !12, i64 11372, !67, i64 11376, !68, i64 11392, !69, i64 11408, !13, i64 11424, !7, i64 11432, !67, i64 11440, !10, i64 11456, !10, i64 11460, !8, i64 11464, !10, i64 11944, !12, i64 11948, !10, i64 11952, !10, i64 11956, !10, i64 11960, !8, i64 11964}
!45 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !7, i64 24, !7, i64 32, !12, i64 40, !12, i64 44, !12, i64 48, !8, i64 52, !12, i64 136, !12, i64 140, !7, i64 144, !7, i64 152, !12, i64 160, !13, i64 164, !7, i64 168, !11, i64 176, !11, i64 184, !11, i64 192, !13, i64 200, !13, i64 201, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !11, i64 256, !8, i64 264, !12, i64 272, !12, i64 276, !13, i64 280, !13, i64 281, !13, i64 282, !13, i64 283, !13, i64 284, !8, i64 285, !8, i64 798, !8, i64 832, !13, i64 916, !13, i64 917, !13, i64 918, !13, i64 919, !13, i64 920, !13, i64 921, !13, i64 922, !12, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !11, i64 940, !11, i64 948, !8, i64 956, !8, i64 996, !8, i64 1016, !8, i64 1021, !8, i64 1026, !8, i64 1031, !8, i64 1036, !8, i64 1056, !8, i64 1076, !8, i64 1116, !8, i64 1136, !8, i64 3184, !8, i64 5232, !8, i64 5316}
!46 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !47, i64 24, !8, i64 40}
!47 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!48 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!49 = !{!"_ZTS8ImVectorI11ImGuiColModE", !10, i64 0, !10, i64 4, !7, i64 8}
!50 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!51 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!52 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !10, i64 0, !10, i64 4, !7, i64 8}
!53 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !11, i64 28, !11, i64 36, !11, i64 44, !11, i64 52, !13, i64 60, !15, i64 64, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100}
!54 = !{!"_ZTS15ImGuiNavForward", !8, i64 0}
!55 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !15, i64 28}
!56 = !{!"_ZTS10ImDrawData", !13, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !11, i64 28, !11, i64 36}
!57 = !{!"_ZTS17ImDrawDataBuilder", !8, i64 0}
!58 = !{!"_ZTS12ImGuiPayload", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !13, i64 57, !13, i64 58}
!59 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_ZTS18ImGuiTextEditState", !10, i64 0, !27, i64 8, !61, i64 24, !61, i64 40, !10, i64 56, !10, i64 60, !10, i64 64, !12, i64 68, !62, i64 72, !12, i64 3692, !13, i64 3696, !13, i64 3697}
!61 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!62 = !{!"_ZTSN8ImGuiStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !8, i64 13, !8, i64 14, !8, i64 15, !8, i64 16, !8, i64 17, !8, i64 18, !8, i64 19, !12, i64 20, !63, i64 24}
!63 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !64, i64 3582, !64, i64 3584, !10, i64 3588, !10, i64 3592}
!64 = !{!"short", !8, i64 0}
!65 = !{!"_ZTS6ImFont", !12, i64 0, !12, i64 4, !11, i64 8, !66, i64 16, !18, i64 32, !27, i64 48, !7, i64 64, !12, i64 72, !64, i64 76, !64, i64 78, !7, i64 80, !7, i64 88, !12, i64 96, !12, i64 100, !13, i64 104, !10, i64 108}
!66 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!67 = !{!"_ZTS15ImGuiTextBuffer", !61, i64 0}
!68 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!44, !7, i64 6232}
!71 = !{!12, !12, i64 0}
!72 = !{!65, !7, i64 88}
!73 = !{!65, !7, i64 64}
!74 = !{!75, !12, i64 4}
!75 = !{!"_ZTS11ImFontGlyph", !64, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36}
!76 = !{!65, !12, i64 72}
!77 = !{!6, !10, i64 952}
!78 = !{!6, !10, i64 960}
!79 = !{!13, !13, i64 0}
!80 = !{!44, !10, i64 6512}
!81 = !{!60, !10, i64 0}
!82 = !{!44, !10, i64 6516}
!83 = !{!44, !10, i64 6808}
!84 = !{!44, !10, i64 6796}
!85 = !{!44, !48, i64 6824}
!86 = !{!60, !10, i64 60}
!87 = !{!60, !7, i64 32}
!88 = !{!60, !10, i64 24}
!89 = !{!60, !7, i64 16}
!90 = !{!60, !10, i64 8}
!91 = !{!60, !10, i64 56}
!92 = !{!60, !12, i64 68}
!93 = !{!60, !8, i64 84}
!94 = !{!45, !13, i64 281}
!95 = !{!44, !10, i64 6532}
!96 = !{!44, !13, i64 6525}
!97 = !{!60, !10, i64 64}
!98 = !{!44, !13, i64 6526}
!99 = !{!44, !10, i64 11960}
!100 = !{!45, !12, i64 256}
!101 = !{!15, !12, i64 0}
!102 = !{!37, !12, i64 52}
!103 = !{!45, !12, i64 260}
!104 = !{!6, !12, i64 204}
!105 = !{!44, !12, i64 6240}
!106 = !{!45, !13, i64 200}
!107 = !{!60, !13, i64 3697}
!108 = !{!45, !12, i64 940}
!109 = !{!45, !12, i64 944}
!110 = !{!60, !13, i64 3696}
!111 = !{!64, !64, i64 0}
!112 = !{!45, !13, i64 283}
!113 = !{!45, !13, i64 284}
!114 = !{!10, !10, i64 0}
!115 = !{!45, !13, i64 282}
!116 = !{!6, !12, i64 92}
!117 = !{!45, !7, i64 216}
!118 = !{!60, !10, i64 76}
!119 = !{!60, !10, i64 80}
!120 = !{!60, !7, i64 48}
!121 = !{!60, !10, i64 40}
!122 = !{!8, !8, i64 0}
!123 = distinct !{!123, !124}
!124 = !{!"llvm.loop.mustprogress"}
!125 = !{!126, !10, i64 0}
!126 = !{!"_ZTS25ImGuiTextEditCallbackData", !10, i64 0, !10, i64 4, !7, i64 8, !13, i64 16, !64, i64 18, !10, i64 20, !7, i64 24, !10, i64 32, !10, i64 36, !13, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!127 = !{!126, !10, i64 4}
!128 = !{!126, !7, i64 8}
!129 = !{!126, !13, i64 16}
!130 = !{!126, !10, i64 20}
!131 = !{!126, !7, i64 24}
!132 = !{!126, !10, i64 32}
!133 = !{!126, !10, i64 36}
!134 = !{!60, !10, i64 72}
!135 = !{!126, !10, i64 44}
!136 = !{!126, !10, i64 48}
!137 = !{!126, !10, i64 52}
!138 = !{!126, !13, i64 40}
!139 = !{!37, !12, i64 60}
!140 = !{!15, !12, i64 4}
!141 = !{!11, !12, i64 4}
!142 = !{!45, !12, i64 16}
!143 = !{!60, !12, i64 3692}
!144 = distinct !{!144, !124}
!145 = !{!47, !12, i64 12}
!146 = !{!47, !12, i64 4}
!147 = distinct !{!147, !124}
!148 = !{!6, !7, i64 688}
!149 = distinct !{!149, !124}
!150 = !{!44, !13, i64 209}
!151 = !{!44, !12, i64 11164}
!152 = !{!44, !13, i64 11424}
!153 = !{!15, !12, i64 8}


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