; LLVM IR from l1mey112/yr11-physics-applied :: cimgui/imgui (imgui_widgets)

; 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.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiWindow = type <{ ptr, i32, i32, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, i16, i32, i8, i8, i8, i8, i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.3, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i32, i32, i32, i8, [3 x i8] }>
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.0, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.1, %struct.ImVector.1 }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type <{ i32, i32, i16, i16, i16, i16, i16, [4 x i16], [2 x i8] }>
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVec2ih = type { i16, i16 }
%struct.ImGuiStorage = type { %struct.ImVector.2 }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.10 }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImVector.11, %struct.ImVector.11, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.12, %struct.ImGuiStorage, i32, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, ptr, i32, float, [140 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, %struct.ImVector.14, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector, %struct.ImVector.17, %struct.ImVector.18, %struct.ImVector.19, %struct.ImVector.19, i32, %struct.ImVector.20, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, i32, i32, ptr, ptr, ptr, float, float, i8, %struct.ImVec2, %struct.ImVec2, float, i32, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.21, [16 x i8], i32, %struct.ImVector.22, ptr, i32, %struct.ImVector.23, %struct.ImPool, %struct.ImVector.1, %struct.ImVector.10, ptr, %struct.ImPool.25, %struct.ImVector.27, %struct.ImVector.28, i32, i32, float, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, float, float, i8, i8, float, float, float, float, i16, i16, %struct.ImVector.29, %struct.ImVector, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.31, %struct.ImChunkStream, %struct.ImChunkStream.32, %struct.ImVector.33, i32, [7 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i8, i8, i8, i32, %struct.ImGuiMetricsConfig, %struct.ImGuiStackTool, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.29 }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, float, float, float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, [652 x i32], [652 x i8], [16 x float], %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, i32, [652 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x float], float, i8, i8, i8, i8, i16, %struct.ImVector.5 }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [53 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, %struct.ImVector.9, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [140 x i16], %struct.ImVector.13, %struct.ImVector.13 }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.24, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImPool.25 = type { %struct.ImVector.26, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, i32, i32, i32, [4 x i8], %struct.ImVector.5, %struct.ImVector.29, %struct.ImVector.29, i8, [3 x i8], i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.1, float, float, %struct.ImVector.5, %struct.ImVector.30, ptr, ptr, ptr, i16, i16, i16, i16, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.29 }
%struct.ImChunkStream.32 = type { %struct.ImVector.29 }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.29 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.17, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.34, i8, float }
%struct.ImVector.34 = type { i32, i32, ptr }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImFontGlyph = type { i32, float, float, float, float, float, float, float, float, float }

@GImGui = external global ptr, align 8
@.str = external hidden unnamed_addr constant [1 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [31 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no = external hidden unnamed_addr constant [2 x i32], align 4

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

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

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

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

declare <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) #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)) #5

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

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

declare noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, ptr noundef, i32 noundef) #4

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

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

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

declare void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float>, ptr noundef, ptr noundef, i1 noundef zeroext) #4

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

declare void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef, ptr noundef nonnull align 4 dereferenceable(16)) #4

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) #4

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #4

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

declare noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef, float noundef) #4

declare noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) #4

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) #4

declare void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef, i32 noundef, i32 noundef) #4

declare void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef, ptr noundef) #4

declare void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef, ptr noundef) #4

declare void @_ZN5ImGui13ClearActiveIDEv() #4

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(973), ptr noundef, ptr noundef) #4

declare <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float>, float noundef, float noundef) #4

declare void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef) #4

declare void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) #4

declare void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef, ptr noundef) #4

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

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

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

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

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

; 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 #10 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #1

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) #4

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #4

declare void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef, ptr noundef, ptr noundef) #4

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

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

declare void @_ZN5ImGui10BeginGroupEv() #4

declare void @_ZN5ImGui8EndGroupEv() #4

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

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

declare void @_Z9ImStrncpyPcPKcm(ptr noundef, ptr noundef, i64 noundef) #4

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

187:                                              ; preds = %8
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3498

188:                                              ; preds = %8
  %189 = load ptr, ptr %12, align 8, !tbaa !5
  %190 = icmp ne ptr %189, null
  br i1 %190, label %191, label %194

191:                                              ; preds = %188
  %192 = load i32, ptr %13, align 4, !tbaa !9
  %193 = icmp sge i32 %192, 0
  br label %194

194:                                              ; preds = %191, %188
  %195 = phi i1 [ false, %188 ], [ %193, %191 ]
  br i1 %195, label %196, label %197

196:                                              ; preds = %194
  br label %199

197:                                              ; preds = %194
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.4, i32 noundef 3952, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

198:                                              ; No predecessors!
  br label %199

199:                                              ; preds = %198, %196
  %200 = load i32, ptr %15, align 4, !tbaa !9
  %201 = and i32 %200, 128
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %203, label %207

203:                                              ; preds = %199
  %204 = load i32, ptr %15, align 4, !tbaa !9
  %205 = and i32 %204, 67108864
  %206 = icmp ne i32 %205, 0
  br label %207

207:                                              ; preds = %203, %199
  %208 = phi i1 [ false, %199 ], [ %206, %203 ]
  %209 = xor i1 %208, true
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  br label %213

211:                                              ; preds = %207
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.4, i32 noundef 3953, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

212:                                              ; No predecessors!
  br label %213

213:                                              ; preds = %212, %210
  %214 = load i32, ptr %15, align 4, !tbaa !9
  %215 = and i32 %214, 64
  %216 = icmp ne i32 %215, 0
  br i1 %216, label %217, label %221

217:                                              ; preds = %213
  %218 = load i32, ptr %15, align 4, !tbaa !9
  %219 = and i32 %218, 1024
  %220 = icmp ne i32 %219, 0
  br label %221

221:                                              ; preds = %217, %213
  %222 = phi i1 [ false, %213 ], [ %220, %217 ]
  %223 = xor i1 %222, true
  br i1 %223, label %224, label %225

224:                                              ; preds = %221
  br label %227

225:                                              ; preds = %221
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.4, i32 noundef 3954, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

226:                                              ; No predecessors!
  br label %227

227:                                              ; preds = %226, %224
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #14
  %228 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %228, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #14
  %229 = load ptr, ptr %20, align 8, !tbaa !5
  %230 = getelementptr inbounds %struct.ImGuiContext, ptr %229, i32 0, i32 2
  store ptr %230, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #14
  %231 = load ptr, ptr %20, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.ImGuiContext, ptr %231, i32 0, i32 5
  store ptr %232, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #14
  store i8 0, ptr %23, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #14
  %233 = load i32, ptr %15, align 4, !tbaa !9
  %234 = and i32 %233, 67108864
  %235 = icmp ne i32 %234, 0
  %236 = zext i1 %235 to i8
  store i8 %236, ptr %24, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #14
  %237 = load i32, ptr %15, align 4, !tbaa !9
  %238 = and i32 %237, 16384
  %239 = icmp ne i32 %238, 0
  %240 = zext i1 %239 to i8
  store i8 %240, ptr %25, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #14
  %241 = load i32, ptr %15, align 4, !tbaa !9
  %242 = and i32 %241, 32768
  %243 = icmp ne i32 %242, 0
  %244 = zext i1 %243 to i8
  store i8 %244, ptr %26, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #14
  %245 = load i32, ptr %15, align 4, !tbaa !9
  %246 = and i32 %245, 65536
  %247 = icmp eq i32 %246, 0
  %248 = zext i1 %247 to i8
  store i8 %248, ptr %27, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #14
  %249 = load i32, ptr %15, align 4, !tbaa !9
  %250 = and i32 %249, 262144
  %251 = icmp ne i32 %250, 0
  %252 = zext i1 %251 to i8
  store i8 %252, ptr %28, align 1, !tbaa !42
  %253 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %254 = trunc i8 %253 to i1
  br i1 %254, label %255, label %262

255:                                              ; preds = %227
  %256 = load ptr, ptr %16, align 8, !tbaa !5
  %257 = icmp ne ptr %256, null
  br i1 %257, label %258, label %259

258:                                              ; preds = %255
  br label %261

259:                                              ; preds = %255
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.4, i32 noundef 3967, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

260:                                              ; No predecessors!
  br label %261

261:                                              ; preds = %260, %258
  br label %262

262:                                              ; preds = %261, %227
  %263 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %264 = trunc i8 %263 to i1
  br i1 %264, label %265, label %266

265:                                              ; preds = %262
  call void @_ZN5ImGui10BeginGroupEv()
  br label %266

266:                                              ; preds = %265, %262
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #14
  %267 = load ptr, ptr %18, align 8, !tbaa !5
  %268 = load ptr, ptr %10, align 8, !tbaa !5
  %269 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(973) %267, ptr noundef %268, ptr noundef null)
  store i32 %269, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #14
  %270 = load ptr, ptr %10, align 8, !tbaa !5
  %271 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %270, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %271, ptr %30, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #14
  %272 = load ptr, ptr %14, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 4 %272, i64 8, i1 false), !tbaa.struct !43
  %273 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %274 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %275 = trunc i8 %274 to i1
  br i1 %275, label %276, label %281

276:                                              ; preds = %266
  %277 = load ptr, ptr %20, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.ImGuiContext, ptr %277, i32 0, i32 7
  %279 = load float, ptr %278, align 8, !tbaa !45
  %280 = fmul float %279, 8.000000e+00
  br label %284

281:                                              ; preds = %266
  %282 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 1
  %283 = load float, ptr %282, align 4, !tbaa !95
  br label %284

284:                                              ; preds = %281, %276
  %285 = phi float [ %280, %276 ], [ %283, %281 ]
  %286 = load ptr, ptr %22, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.ImGuiStyle, ptr %286, i32 0, i32 12
  %288 = getelementptr inbounds %struct.ImVec2, ptr %287, i32 0, i32 1
  %289 = load float, ptr %288, align 4, !tbaa !96
  %290 = call float @llvm.fmuladd.f32(float %289, float 2.000000e+00, float %285)
  %291 = load <2 x float>, ptr %32, align 4
  %292 = call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %291, float noundef %273, float noundef %290)
  store <2 x float> %292, ptr %31, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #14
  %293 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 0
  %294 = load float, ptr %293, align 4, !tbaa !97
  %295 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %296 = load float, ptr %295, align 4, !tbaa !97
  %297 = fcmp ogt float %296, 0.000000e+00
  br i1 %297, label %298, label %306

298:                                              ; preds = %284
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.ImGuiStyle, ptr %299, i32 0, i32 16
  %301 = getelementptr inbounds %struct.ImVec2, ptr %300, i32 0, i32 0
  %302 = load float, ptr %301, align 4, !tbaa !98
  %303 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %304 = load float, ptr %303, align 4, !tbaa !97
  %305 = fadd float %302, %304
  br label %307

306:                                              ; preds = %284
  br label %307

307:                                              ; preds = %306, %298
  %308 = phi float [ %305, %298 ], [ 0.000000e+00, %306 ]
  %309 = fadd float %294, %308
  %310 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %311 = load float, ptr %310, align 4, !tbaa !95
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %309, float noundef %311)
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #14
  %312 = load ptr, ptr %18, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.ImGuiWindow, ptr %312, i32 0, i32 61
  %314 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %313, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #14
  %315 = load ptr, ptr %18, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.ImGuiWindow, ptr %315, i32 0, i32 61
  %317 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %316, i32 0, i32 0
  %318 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %317, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %318, ptr %35, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %34, ptr noundef nonnull align 4 dereferenceable(8) %314, ptr noundef nonnull align 4 dereferenceable(8) %35)
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #14
  %319 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #14
  %320 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %321 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %320, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %321, ptr %37, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(8) %319, ptr noundef nonnull align 4 dereferenceable(8) %37)
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #14
  %322 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %322, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 4 %31, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #14
  store i32 0, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 60, ptr %41) #14
  call void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(60) %41)
  %323 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %324 = trunc i8 %323 to i1
  br i1 %324, label %325, label %396

325:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #14
  %326 = load ptr, ptr %18, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.ImGuiWindow, ptr %326, i32 0, i32 61
  %328 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %327, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %42, ptr align 8 %328, i64 8, i1 false), !tbaa.struct !43
  %329 = load ptr, ptr %22, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.ImGuiStyle, ptr %329, i32 0, i32 12
  %331 = getelementptr inbounds %struct.ImVec2, ptr %330, i32 0, i32 1
  %332 = load float, ptr %331, align 4, !tbaa !96
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %332)
  %333 = load i32, ptr %29, align 4, !tbaa !9
  %334 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %333, ptr noundef %34, i32 noundef 1024)
  br i1 %334, label %336, label %335

335:                                              ; preds = %325
  call void @_ZN5ImGui8EndGroupEv()
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %393

336:                                              ; preds = %325
  %337 = load ptr, ptr %20, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.ImGuiContext, ptr %337, i32 0, i32 72
  %339 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %338, i32 0, i32 2
  %340 = load i32, ptr %339, align 4, !tbaa !99
  store i32 %340, ptr %40, align 4, !tbaa !9
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiContext, ptr %341, i32 0, i32 72
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 4 %342, i64 60, i1 false), !tbaa.struct !100
  %343 = load ptr, ptr %18, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.ImGuiWindow, ptr %343, i32 0, i32 61
  %345 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %344, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %345, ptr align 4 %42, i64 8, i1 false), !tbaa.struct !43
  %346 = load ptr, ptr %22, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.ImGuiStyle, ptr %346, i32 0, i32 40
  %348 = getelementptr inbounds [53 x %struct.ImVec4], ptr %347, i64 0, i64 7
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %348)
  %349 = load ptr, ptr %22, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.ImGuiStyle, ptr %349, i32 0, i32 13
  %351 = load float, ptr %350, align 4, !tbaa !101
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %351)
  %352 = load ptr, ptr %22, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ImGuiStyle, ptr %352, i32 0, i32 14
  %354 = load float, ptr %353, align 4, !tbaa !102
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %354)
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(8) %43)
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #14
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = load i32, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #14
  %357 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %34)
  store <2 x float> %357, ptr %45, align 4
  %358 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %355, i32 noundef %356, ptr noundef nonnull align 4 dereferenceable(8) %45, i1 noundef zeroext true, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #14
  %359 = zext i1 %358 to i8
  store i8 %359, ptr %44, align 1, !tbaa !42
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  %360 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %361 = trunc i8 %360 to i1
  br i1 %361, label %363, label %362

362:                                              ; preds = %336
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %392

363:                                              ; preds = %336
  %364 = load ptr, ptr %20, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiContext, ptr %364, i32 0, i32 27
  %366 = load ptr, ptr %365, align 8, !tbaa !103
  store ptr %366, ptr %38, align 8, !tbaa !5
  %367 = load ptr, ptr %38, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.ImGuiWindow, ptr %367, i32 0, i32 61
  %369 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %368, i32 0, i32 15
  %370 = load i32, ptr %369, align 8, !tbaa !104
  %371 = shl i32 1, %370
  %372 = load ptr, ptr %38, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.ImGuiWindow, ptr %372, i32 0, i32 61
  %374 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %373, i32 0, i32 17
  %375 = load i16, ptr %374, align 2, !tbaa !105
  %376 = sext i16 %375 to i32
  %377 = or i32 %376, %371
  %378 = trunc i32 %377 to i16
  store i16 %378, ptr %374, align 2, !tbaa !105
  %379 = load ptr, ptr %22, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.ImGuiStyle, ptr %379, i32 0, i32 12
  %381 = load ptr, ptr %38, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.ImGuiWindow, ptr %381, i32 0, i32 61
  %383 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %382, i32 0, i32 0
  %384 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %383, ptr noundef nonnull align 4 dereferenceable(8) %380)
  %385 = load ptr, ptr %38, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.ImGuiWindow, ptr %385, i32 0, i32 27
  %387 = getelementptr inbounds %struct.ImVec2, ptr %386, i32 0, i32 0
  %388 = load float, ptr %387, align 4, !tbaa !106
  %389 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %390 = load float, ptr %389, align 4, !tbaa !97
  %391 = fsub float %390, %388
  store float %391, ptr %389, align 4, !tbaa !97
  store i32 0, ptr %19, align 4
  br label %392

392:                                              ; preds = %363, %362
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #14
  br label %393

393:                                              ; preds = %392, %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #14
  %394 = load i32, ptr %19, align 4
  switch i32 %394, label %3497 [
    i32 0, label %395
  ]

395:                                              ; preds = %393
  br label %414

396:                                              ; preds = %307
  %397 = load ptr, ptr %22, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.ImGuiStyle, ptr %397, i32 0, i32 12
  %399 = getelementptr inbounds %struct.ImVec2, ptr %398, i32 0, i32 1
  %400 = load float, ptr %399, align 4, !tbaa !96
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %400)
  %401 = load i32, ptr %15, align 4, !tbaa !9
  %402 = and i32 %401, 268435456
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %409, label %404

404:                                              ; preds = %396
  %405 = load i32, ptr %29, align 4, !tbaa !9
  %406 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %405, ptr noundef %34, i32 noundef 1024)
  br i1 %406, label %408, label %407

407:                                              ; preds = %404
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3497

408:                                              ; preds = %404
  br label %409

409:                                              ; preds = %408, %396
  %410 = load ptr, ptr %20, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.ImGuiContext, ptr %410, i32 0, i32 72
  %412 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %411, i32 0, i32 2
  %413 = load i32, ptr %412, align 4, !tbaa !99
  store i32 %413, ptr %40, align 4, !tbaa !9
  br label %414

414:                                              ; preds = %409, %395
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #14
  %415 = load i32, ptr %29, align 4, !tbaa !9
  %416 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %415)
  %417 = zext i1 %416 to i8
  store i8 %417, ptr %46, align 1, !tbaa !42
  %418 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %419 = trunc i8 %418 to i1
  br i1 %419, label %420, label %423

420:                                              ; preds = %414
  %421 = load ptr, ptr %20, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiContext, ptr %421, i32 0, i32 137
  store i32 1, ptr %422, align 8, !tbaa !107
  br label %423

423:                                              ; preds = %420, %414
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #14
  %424 = load i32, ptr %29, align 4, !tbaa !9
  %425 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %424)
  store ptr %425, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #14
  %426 = load i32, ptr %40, align 4, !tbaa !9
  %427 = and i32 %426, 256
  %428 = icmp ne i32 %427, 0
  %429 = zext i1 %428 to i8
  store i8 %429, ptr %48, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #14
  %430 = load ptr, ptr %20, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.ImGuiContext, ptr %430, i32 0, i32 44
  %432 = load i32, ptr %431, align 8, !tbaa !108
  %433 = load i32, ptr %29, align 4, !tbaa !9
  %434 = icmp ne i32 %432, %433
  br i1 %434, label %435, label %456

435:                                              ; preds = %423
  %436 = load ptr, ptr %20, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ImGuiContext, ptr %436, i32 0, i32 90
  %438 = load i32, ptr %437, align 4, !tbaa !109
  %439 = load i32, ptr %29, align 4, !tbaa !9
  %440 = icmp eq i32 %438, %439
  br i1 %440, label %454, label %441

441:                                              ; preds = %435
  %442 = load ptr, ptr %20, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.ImGuiContext, ptr %442, i32 0, i32 87
  %444 = load i32, ptr %443, align 8, !tbaa !110
  %445 = load i32, ptr %29, align 4, !tbaa !9
  %446 = icmp eq i32 %444, %445
  br i1 %446, label %447, label %452

447:                                              ; preds = %441
  %448 = load ptr, ptr %20, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.ImGuiContext, ptr %448, i32 0, i32 97
  %450 = load i32, ptr %449, align 8, !tbaa !111
  %451 = icmp eq i32 %450, 2
  br label %452

452:                                              ; preds = %447, %441
  %453 = phi i1 [ false, %441 ], [ %451, %447 ]
  br label %454

454:                                              ; preds = %452, %435
  %455 = phi i1 [ true, %435 ], [ %453, %452 ]
  br label %456

456:                                              ; preds = %454, %423
  %457 = phi i1 [ false, %423 ], [ %455, %454 ]
  %458 = zext i1 %457 to i8
  store i8 %458, ptr %49, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #14
  %459 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %460 = trunc i8 %459 to i1
  br i1 %460, label %461, label %467

461:                                              ; preds = %456
  %462 = load ptr, ptr %21, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.ImGuiIO, ptr %462, i32 0, i32 70
  %464 = getelementptr inbounds [5 x i8], ptr %463, i64 0, i64 0
  %465 = load i8, ptr %464, align 8, !tbaa !42, !range !40, !noundef !41
  %466 = trunc i8 %465 to i1
  br label %467

467:                                              ; preds = %461, %456
  %468 = phi i1 [ false, %456 ], [ %466, %461 ]
  %469 = zext i1 %468 to i8
  store i8 %469, ptr %50, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #14
  %470 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %471 = trunc i8 %470 to i1
  br i1 %471, label %472, label %487

472:                                              ; preds = %467
  %473 = load ptr, ptr %47, align 8, !tbaa !5
  %474 = icmp ne ptr %473, null
  br i1 %474, label %475, label %487

475:                                              ; preds = %472
  %476 = load ptr, ptr %20, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.ImGuiContext, ptr %476, i32 0, i32 44
  %478 = load i32, ptr %477, align 8, !tbaa !108
  %479 = icmp eq i32 %478, 0
  br i1 %479, label %480, label %487

480:                                              ; preds = %475
  %481 = load ptr, ptr %20, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.ImGuiContext, ptr %481, i32 0, i32 57
  %483 = load i32, ptr %482, align 8, !tbaa !112
  %484 = load ptr, ptr %38, align 8, !tbaa !5
  %485 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %484, i32 noundef 1)
  %486 = icmp eq i32 %483, %485
  br label %487

487:                                              ; preds = %480, %475, %472, %467
  %488 = phi i1 [ false, %475 ], [ false, %472 ], [ false, %467 ], [ %486, %480 ]
  %489 = zext i1 %488 to i8
  store i8 %489, ptr %51, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #14
  %490 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %491 = trunc i8 %490 to i1
  br i1 %491, label %492, label %502

492:                                              ; preds = %487
  %493 = load ptr, ptr %47, align 8, !tbaa !5
  %494 = icmp ne ptr %493, null
  br i1 %494, label %495, label %502

495:                                              ; preds = %492
  %496 = load ptr, ptr %20, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.ImGuiContext, ptr %496, i32 0, i32 44
  %498 = load i32, ptr %497, align 8, !tbaa !108
  %499 = load ptr, ptr %38, align 8, !tbaa !5
  %500 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %499, i32 noundef 1)
  %501 = icmp eq i32 %498, %500
  br label %502

502:                                              ; preds = %495, %492, %487
  %503 = phi i1 [ false, %492 ], [ false, %487 ], [ %501, %495 ]
  %504 = zext i1 %503 to i8
  store i8 %504, ptr %52, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #14
  store i8 0, ptr %53, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #14
  store i8 0, ptr %54, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #14
  %505 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %506 = trunc i8 %505 to i1
  br i1 %506, label %507, label %512

507:                                              ; preds = %502
  %508 = load ptr, ptr %38, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.ImGuiWindow, ptr %508, i32 0, i32 22
  %510 = getelementptr inbounds %struct.ImVec2, ptr %509, i32 0, i32 1
  %511 = load float, ptr %510, align 4, !tbaa !113
  br label %513

512:                                              ; preds = %502
  br label %513

513:                                              ; preds = %512, %507
  %514 = phi float [ %511, %507 ], [ 0x47EFFFFFE0000000, %512 ]
  store float %514, ptr %55, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #14
  %515 = load ptr, ptr %47, align 8, !tbaa !5
  %516 = icmp ne ptr %515, null
  br i1 %516, label %517, label %528

517:                                              ; preds = %513
  %518 = load ptr, ptr %47, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %518, i32 0, i32 12
  %520 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %519, i32 0, i32 8
  %521 = load i8, ptr %520, align 1, !tbaa !114
  %522 = zext i8 %521 to i32
  %523 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %524 = trunc i8 %523 to i1
  %525 = xor i1 %524, true
  %526 = zext i1 %525 to i32
  %527 = icmp ne i32 %522, %526
  br label %528

528:                                              ; preds = %517, %513
  %529 = phi i1 [ false, %513 ], [ %527, %517 ]
  %530 = zext i1 %529 to i8
  store i8 %530, ptr %56, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #14
  %531 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %532 = trunc i8 %531 to i1
  br i1 %532, label %542, label %533

533:                                              ; preds = %528
  %534 = load i8, ptr %51, align 1, !tbaa !42, !range !40, !noundef !41
  %535 = trunc i8 %534 to i1
  br i1 %535, label %542, label %536

536:                                              ; preds = %533
  %537 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %538 = trunc i8 %537 to i1
  br i1 %538, label %542, label %539

539:                                              ; preds = %536
  %540 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %541 = trunc i8 %540 to i1
  br label %542

542:                                              ; preds = %539, %536, %533, %528
  %543 = phi i1 [ true, %536 ], [ true, %533 ], [ true, %528 ], [ %541, %539 ]
  %544 = zext i1 %543 to i8
  store i8 %544, ptr %57, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #14
  %545 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %546 = trunc i8 %545 to i1
  br i1 %546, label %550, label %547

547:                                              ; preds = %542
  %548 = load i8, ptr %52, align 1, !tbaa !42, !range !40, !noundef !41
  %549 = trunc i8 %548 to i1
  br label %550

550:                                              ; preds = %547, %542
  %551 = phi i1 [ true, %542 ], [ %549, %547 ]
  %552 = zext i1 %551 to i8
  store i8 %552, ptr %58, align 1, !tbaa !42
  %553 = load i8, ptr %58, align 1, !tbaa !42, !range !40, !noundef !41
  %554 = trunc i8 %553 to i1
  br i1 %554, label %555, label %561

555:                                              ; preds = %550
  %556 = load ptr, ptr %20, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ImGuiContext, ptr %556, i32 0, i32 44
  %558 = load i32, ptr %557, align 8, !tbaa !108
  %559 = load i32, ptr %29, align 4, !tbaa !9
  %560 = icmp ne i32 %558, %559
  br i1 %560, label %564, label %561

561:                                              ; preds = %555, %550
  %562 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %563 = trunc i8 %562 to i1
  br i1 %563, label %564, label %704

564:                                              ; preds = %561, %555
  %565 = load ptr, ptr %20, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.ImGuiContext, ptr %565, i32 0, i32 173
  store ptr %566, ptr %47, align 8, !tbaa !5
  %567 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %567)
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #14
  %568 = load ptr, ptr %12, align 8, !tbaa !5
  %569 = call i64 @strlen(ptr noundef %568) #16
  %570 = trunc i64 %569 to i32
  store i32 %570, ptr %59, align 4, !tbaa !9
  %571 = load ptr, ptr %47, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %571, i32 0, i32 7
  %573 = load i32, ptr %59, align 4, !tbaa !9
  %574 = add nsw i32 %573, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %572, i32 noundef %574)
  %575 = load ptr, ptr %47, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %575, i32 0, i32 7
  %577 = getelementptr inbounds %struct.ImVector.29, ptr %576, i32 0, i32 2
  %578 = load ptr, ptr %577, align 8, !tbaa !115
  %579 = load ptr, ptr %12, align 8, !tbaa !5
  %580 = load i32, ptr %59, align 4, !tbaa !9
  %581 = add nsw i32 %580, 1
  %582 = sext i32 %581 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %578, ptr align 1 %579, i64 %582, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #14
  %583 = load ptr, ptr %47, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %583, i32 0, i32 1
  %585 = load i32, ptr %584, align 8, !tbaa !116
  %586 = load i32, ptr %29, align 4, !tbaa !9
  %587 = icmp eq i32 %585, %586
  br i1 %587, label %588, label %592

588:                                              ; preds = %564
  %589 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %590 = trunc i8 %589 to i1
  %591 = xor i1 %590, true
  br label %592

592:                                              ; preds = %588, %564
  %593 = phi i1 [ false, %564 ], [ %591, %588 ]
  %594 = zext i1 %593 to i8
  store i8 %594, ptr %60, align 1, !tbaa !42
  %595 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %596 = trunc i8 %595 to i1
  br i1 %596, label %597, label %619

597:                                              ; preds = %592
  %598 = load ptr, ptr %47, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %598, i32 0, i32 3
  %600 = load i32, ptr %599, align 8, !tbaa !117
  %601 = load i32, ptr %59, align 4, !tbaa !9
  %602 = icmp ne i32 %600, %601
  br i1 %602, label %618, label %603

603:                                              ; preds = %597
  %604 = load ptr, ptr %47, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %604, i32 0, i32 8
  %606 = load i8, ptr %605, align 8, !tbaa !118, !range !40, !noundef !41
  %607 = trunc i8 %606 to i1
  br i1 %607, label %608, label %619

608:                                              ; preds = %603
  %609 = load ptr, ptr %47, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %609, i32 0, i32 6
  %611 = getelementptr inbounds %struct.ImVector.29, ptr %610, i32 0, i32 2
  %612 = load ptr, ptr %611, align 8, !tbaa !119
  %613 = load ptr, ptr %12, align 8, !tbaa !5
  %614 = load i32, ptr %59, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = call i32 @strncmp(ptr noundef %612, ptr noundef %613, i64 noundef %615) #16
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %618, label %619

618:                                              ; preds = %608, %597
  store i8 0, ptr %60, align 1, !tbaa !42
  br label %619

619:                                              ; preds = %618, %608, %603, %592
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #14
  store ptr null, ptr %61, align 8, !tbaa !5
  %620 = load i32, ptr %29, align 4, !tbaa !9
  %621 = load ptr, ptr %47, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %621, i32 0, i32 1
  store i32 %620, ptr %622, align 8, !tbaa !116
  %623 = load ptr, ptr %47, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %623, i32 0, i32 5
  %625 = load i32, ptr %13, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %624, i32 noundef %626)
  %627 = load ptr, ptr %47, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %627, i32 0, i32 6
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %628, i32 noundef 0)
  %629 = load ptr, ptr %47, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %629, i32 0, i32 8
  store i8 0, ptr %630, align 8, !tbaa !118
  %631 = load ptr, ptr %47, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %631, i32 0, i32 5
  %633 = getelementptr inbounds %struct.ImVector.5, ptr %632, i32 0, i32 2
  %634 = load ptr, ptr %633, align 8, !tbaa !120
  %635 = load i32, ptr %13, align 4, !tbaa !9
  %636 = load ptr, ptr %12, align 8, !tbaa !5
  %637 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %634, i32 noundef %635, ptr noundef %636, ptr noundef null, ptr noundef %61)
  %638 = load ptr, ptr %47, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %638, i32 0, i32 2
  store i32 %637, ptr %639, align 4, !tbaa !121
  %640 = load ptr, ptr %61, align 8, !tbaa !5
  %641 = load ptr, ptr %12, align 8, !tbaa !5
  %642 = ptrtoint ptr %640 to i64
  %643 = ptrtoint ptr %641 to i64
  %644 = sub i64 %642, %643
  %645 = trunc i64 %644 to i32
  %646 = load ptr, ptr %47, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %646, i32 0, i32 3
  store i32 %645, ptr %647, align 8, !tbaa !117
  %648 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %649 = trunc i8 %648 to i1
  br i1 %649, label %650, label %652

650:                                              ; preds = %619
  %651 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %651)
  br label %661

652:                                              ; preds = %619
  %653 = load ptr, ptr %47, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %653, i32 0, i32 11
  store float 0.000000e+00, ptr %654, align 8, !tbaa !122
  %655 = load ptr, ptr %47, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %655, i32 0, i32 12
  %657 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %658 = trunc i8 %657 to i1
  %659 = xor i1 %658, true
  %660 = zext i1 %659 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %656, i32 noundef %660)
  br label %661

661:                                              ; preds = %652, %650
  %662 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %663 = trunc i8 %662 to i1
  br i1 %663, label %695, label %664

664:                                              ; preds = %661
  %665 = load i32, ptr %15, align 4, !tbaa !9
  %666 = and i32 %665, 16
  %667 = icmp ne i32 %666, 0
  br i1 %667, label %668, label %669

668:                                              ; preds = %664
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %669

669:                                              ; preds = %668, %664
  %670 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %671 = trunc i8 %670 to i1
  br i1 %671, label %672, label %682

672:                                              ; preds = %669
  %673 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %674 = trunc i8 %673 to i1
  br i1 %674, label %675, label %681

675:                                              ; preds = %672
  %676 = load ptr, ptr %20, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.ImGuiContext, ptr %676, i32 0, i32 91
  %678 = load i32, ptr %677, align 8, !tbaa !123
  %679 = and i32 %678, 4
  %680 = icmp ne i32 %679, 0
  br i1 %680, label %682, label %681

681:                                              ; preds = %675, %672
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %682

682:                                              ; preds = %681, %675, %669
  %683 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %684 = trunc i8 %683 to i1
  br i1 %684, label %693, label %685

685:                                              ; preds = %682
  %686 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %687 = trunc i8 %686 to i1
  br i1 %687, label %688, label %694

688:                                              ; preds = %685
  %689 = load ptr, ptr %21, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.ImGuiIO, ptr %689, i32 0, i32 60
  %691 = load i8, ptr %690, align 4, !tbaa !124, !range !40, !noundef !41
  %692 = trunc i8 %691 to i1
  br i1 %692, label %693, label %694

693:                                              ; preds = %688, %682
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %694

694:                                              ; preds = %693, %688, %685
  br label %695

695:                                              ; preds = %694, %661
  %696 = load i32, ptr %15, align 4, !tbaa !9
  %697 = and i32 %696, 8192
  %698 = icmp ne i32 %697, 0
  br i1 %698, label %699, label %703

699:                                              ; preds = %695
  %700 = load ptr, ptr %47, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %700, i32 0, i32 12
  %702 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %701, i32 0, i32 3
  store i8 1, ptr %702, align 4, !tbaa !125
  br label %703

703:                                              ; preds = %699, %695
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #14
  br label %704

704:                                              ; preds = %703, %561
  %705 = load ptr, ptr %20, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.ImGuiContext, ptr %705, i32 0, i32 44
  %707 = load i32, ptr %706, align 8, !tbaa !108
  %708 = load i32, ptr %29, align 4, !tbaa !9
  %709 = icmp ne i32 %707, %708
  br i1 %709, label %710, label %733

710:                                              ; preds = %704
  %711 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %712 = trunc i8 %711 to i1
  br i1 %712, label %713, label %733

713:                                              ; preds = %710
  %714 = load ptr, ptr %47, align 8, !tbaa !5
  %715 = icmp ne ptr %714, null
  br i1 %715, label %716, label %722

716:                                              ; preds = %713
  %717 = load ptr, ptr %47, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %717, i32 0, i32 1
  %719 = load i32, ptr %718, align 8, !tbaa !116
  %720 = load i32, ptr %29, align 4, !tbaa !9
  %721 = icmp eq i32 %719, %720
  br label %722

722:                                              ; preds = %716, %713
  %723 = phi i1 [ false, %713 ], [ %721, %716 ]
  br i1 %723, label %724, label %725

724:                                              ; preds = %722
  br label %727

725:                                              ; preds = %722
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.4, i32 noundef 4101, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

726:                                              ; No predecessors!
  br label %727

727:                                              ; preds = %726, %724
  %728 = load i32, ptr %29, align 4, !tbaa !9
  %729 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %728, ptr noundef %729)
  %730 = load i32, ptr %29, align 4, !tbaa !9
  %731 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %730, ptr noundef %731)
  %732 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %732)
  br label %733

733:                                              ; preds = %727, %710, %704
  %734 = load ptr, ptr %20, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.ImGuiContext, ptr %734, i32 0, i32 44
  %736 = load i32, ptr %735, align 8, !tbaa !108
  %737 = load i32, ptr %29, align 4, !tbaa !9
  %738 = icmp eq i32 %736, %737
  br i1 %738, label %739, label %775

739:                                              ; preds = %733
  %740 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %741 = trunc i8 %740 to i1
  br i1 %741, label %742, label %744

742:                                              ; preds = %739
  %743 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 641, i32 noundef %743, i32 noundef 0)
  br label %744

744:                                              ; preds = %742, %739
  %745 = load ptr, ptr %20, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.ImGuiContext, ptr %745, i32 0, i32 65
  %747 = load i32, ptr %746, align 8, !tbaa !126
  %748 = or i32 %747, 3
  store i32 %748, ptr %746, align 8, !tbaa !126
  %749 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %750 = trunc i8 %749 to i1
  br i1 %750, label %755, label %751

751:                                              ; preds = %744
  %752 = load i32, ptr %15, align 4, !tbaa !9
  %753 = and i32 %752, 128
  %754 = icmp ne i32 %753, 0
  br i1 %754, label %755, label %760

755:                                              ; preds = %751, %744
  %756 = load ptr, ptr %20, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.ImGuiContext, ptr %756, i32 0, i32 65
  %758 = load i32, ptr %757, align 8, !tbaa !126
  %759 = or i32 %758, 12
  store i32 %759, ptr %757, align 8, !tbaa !126
  br label %760

760:                                              ; preds = %755, %751
  %761 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 519, i32 noundef %761, i32 noundef 0)
  %762 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 520, i32 noundef %762, i32 noundef 0)
  %763 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %764 = trunc i8 %763 to i1
  br i1 %764, label %765, label %768

765:                                              ; preds = %760
  %766 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 517, i32 noundef %766, i32 noundef 0)
  %767 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 518, i32 noundef %767, i32 noundef 0)
  br label %768

768:                                              ; preds = %765, %760
  %769 = load i32, ptr %15, align 4, !tbaa !9
  %770 = and i32 %769, 1088
  %771 = icmp ne i32 %770, 0
  br i1 %771, label %772, label %774

772:                                              ; preds = %768
  %773 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 512, i32 noundef %773, i32 noundef 0)
  br label %774

774:                                              ; preds = %772, %768
  br label %775

775:                                              ; preds = %774, %733
  %776 = load ptr, ptr %20, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImGuiContext, ptr %776, i32 0, i32 44
  %778 = load i32, ptr %777, align 8, !tbaa !108
  %779 = load i32, ptr %29, align 4, !tbaa !9
  %780 = icmp eq i32 %778, %779
  br i1 %780, label %781, label %785

781:                                              ; preds = %775
  %782 = load ptr, ptr %47, align 8, !tbaa !5
  %783 = icmp eq ptr %782, null
  br i1 %783, label %784, label %785

784:                                              ; preds = %781
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %785

785:                                              ; preds = %784, %781, %775
  %786 = load ptr, ptr %20, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.ImGuiContext, ptr %786, i32 0, i32 44
  %788 = load i32, ptr %787, align 8, !tbaa !108
  %789 = load i32, ptr %29, align 4, !tbaa !9
  %790 = icmp eq i32 %788, %789
  br i1 %790, label %791, label %804

791:                                              ; preds = %785
  %792 = load ptr, ptr %21, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.ImGuiIO, ptr %792, i32 0, i32 70
  %794 = getelementptr inbounds [5 x i8], ptr %793, i64 0, i64 0
  %795 = load i8, ptr %794, align 8, !tbaa !42, !range !40, !noundef !41
  %796 = trunc i8 %795 to i1
  br i1 %796, label %797, label %804

797:                                              ; preds = %791
  %798 = load i8, ptr %58, align 1, !tbaa !42, !range !40, !noundef !41
  %799 = trunc i8 %798 to i1
  br i1 %799, label %804, label %800

800:                                              ; preds = %797
  %801 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %802 = trunc i8 %801 to i1
  br i1 %802, label %804, label %803

803:                                              ; preds = %800
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %804

804:                                              ; preds = %803, %800, %797, %791, %785
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #14
  %805 = load ptr, ptr %20, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.ImGuiContext, ptr %805, i32 0, i32 44
  %807 = load i32, ptr %806, align 8, !tbaa !108
  %808 = load i32, ptr %29, align 4, !tbaa !9
  %809 = icmp eq i32 %807, %808
  br i1 %809, label %818, label %810

810:                                              ; preds = %804
  %811 = load ptr, ptr %47, align 8, !tbaa !5
  %812 = icmp ne ptr %811, null
  br i1 %812, label %813, label %816

813:                                              ; preds = %810
  %814 = load i8, ptr %52, align 1, !tbaa !42, !range !40, !noundef !41
  %815 = trunc i8 %814 to i1
  br label %816

816:                                              ; preds = %813, %810
  %817 = phi i1 [ false, %810 ], [ %815, %813 ]
  br label %818

818:                                              ; preds = %816, %804
  %819 = phi i1 [ true, %804 ], [ %817, %816 ]
  %820 = zext i1 %819 to i8
  store i8 %820, ptr %62, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %821 = load ptr, ptr %47, align 8, !tbaa !5
  %822 = icmp ne ptr %821, null
  br i1 %822, label %823, label %832

823:                                              ; preds = %818
  %824 = load ptr, ptr %47, align 8, !tbaa !5
  %825 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %824)
  br i1 %825, label %829, label %826

826:                                              ; preds = %823
  %827 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %828 = trunc i8 %827 to i1
  br i1 %828, label %829, label %832

829:                                              ; preds = %826, %823
  %830 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %831 = trunc i8 %830 to i1
  br label %832

832:                                              ; preds = %829, %826, %818
  %833 = phi i1 [ false, %826 ], [ false, %818 ], [ %831, %829 ]
  %834 = zext i1 %833 to i8
  store i8 %834, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #14
  store i8 0, ptr %64, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #14
  store i8 0, ptr %65, align 1, !tbaa !42
  %835 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %836 = trunc i8 %835 to i1
  br i1 %836, label %837, label %881

837:                                              ; preds = %832
  %838 = load ptr, ptr %47, align 8, !tbaa !5
  %839 = icmp ne ptr %838, null
  br i1 %839, label %840, label %881

840:                                              ; preds = %837
  %841 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %842 = trunc i8 %841 to i1
  br i1 %842, label %846, label %843

843:                                              ; preds = %840
  %844 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %845 = trunc i8 %844 to i1
  br i1 %845, label %846, label %881

846:                                              ; preds = %843, %840
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #14
  store ptr null, ptr %66, align 8, !tbaa !5
  %847 = load ptr, ptr %47, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %847, i32 0, i32 5
  %849 = load i32, ptr %13, align 4, !tbaa !9
  %850 = add nsw i32 %849, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %848, i32 noundef %850)
  %851 = load ptr, ptr %47, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %851, i32 0, i32 5
  %853 = getelementptr inbounds %struct.ImVector.5, ptr %852, i32 0, i32 2
  %854 = load ptr, ptr %853, align 8, !tbaa !120
  %855 = load ptr, ptr %47, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %855, i32 0, i32 5
  %857 = getelementptr inbounds %struct.ImVector.5, ptr %856, i32 0, i32 0
  %858 = load i32, ptr %857, align 8, !tbaa !127
  %859 = load ptr, ptr %12, align 8, !tbaa !5
  %860 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %854, i32 noundef %858, ptr noundef %859, ptr noundef null, ptr noundef %66)
  %861 = load ptr, ptr %47, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %861, i32 0, i32 2
  store i32 %860, ptr %862, align 4, !tbaa !121
  %863 = load ptr, ptr %66, align 8, !tbaa !5
  %864 = load ptr, ptr %12, align 8, !tbaa !5
  %865 = ptrtoint ptr %863 to i64
  %866 = ptrtoint ptr %864 to i64
  %867 = sub i64 %865, %866
  %868 = trunc i64 %867 to i32
  %869 = load ptr, ptr %47, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %869, i32 0, i32 3
  store i32 %868, ptr %870, align 8, !tbaa !117
  %871 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %871)
  %872 = load ptr, ptr %47, align 8, !tbaa !5
  %873 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %872)
  %874 = zext i1 %873 to i32
  %875 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %876 = trunc i8 %875 to i1
  %877 = zext i1 %876 to i32
  %878 = and i32 %877, %874
  %879 = icmp ne i32 %878, 0
  %880 = zext i1 %879 to i8
  store i8 %880, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #14
  br label %881

881:                                              ; preds = %846, %843, %837, %832
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #14
  %882 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %883 = trunc i8 %882 to i1
  br i1 %883, label %893, label %884

884:                                              ; preds = %881
  %885 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %886 = trunc i8 %885 to i1
  br i1 %886, label %893, label %887

887:                                              ; preds = %884
  %888 = load ptr, ptr %20, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.ImGuiContext, ptr %888, i32 0, i32 44
  %890 = load i32, ptr %889, align 8, !tbaa !108
  %891 = load i32, ptr %29, align 4, !tbaa !9
  %892 = icmp eq i32 %890, %891
  br i1 %892, label %893, label %904

893:                                              ; preds = %887, %884, %881
  %894 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %895 = trunc i8 %894 to i1
  br i1 %895, label %904, label %896

896:                                              ; preds = %893
  %897 = load ptr, ptr %47, align 8, !tbaa !5
  %898 = icmp ne ptr %897, null
  br i1 %898, label %899, label %904

899:                                              ; preds = %896
  %900 = load ptr, ptr %47, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %900, i32 0, i32 8
  %902 = load i8, ptr %901, align 8, !tbaa !118, !range !40, !noundef !41
  %903 = trunc i8 %902 to i1
  br label %904

904:                                              ; preds = %899, %896, %893, %887
  %905 = phi i1 [ false, %896 ], [ false, %893 ], [ false, %887 ], [ %903, %899 ]
  %906 = zext i1 %905 to i8
  store i8 %906, ptr %67, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #14
  %907 = load ptr, ptr %11, align 8, !tbaa !5
  %908 = icmp ne ptr %907, null
  br i1 %908, label %909, label %925

909:                                              ; preds = %904
  %910 = load i8, ptr %67, align 1, !tbaa !42, !range !40, !noundef !41
  %911 = trunc i8 %910 to i1
  br i1 %911, label %912, label %917

912:                                              ; preds = %909
  %913 = load ptr, ptr %47, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %913, i32 0, i32 6
  %915 = getelementptr inbounds %struct.ImVector.29, ptr %914, i32 0, i32 2
  %916 = load ptr, ptr %915, align 8, !tbaa !119
  br label %919

917:                                              ; preds = %909
  %918 = load ptr, ptr %12, align 8, !tbaa !5
  br label %919

919:                                              ; preds = %917, %912
  %920 = phi ptr [ %916, %912 ], [ %918, %917 ]
  %921 = getelementptr inbounds i8, ptr %920, i64 0
  %922 = load i8, ptr %921, align 1, !tbaa !128
  %923 = sext i8 %922 to i32
  %924 = icmp eq i32 %923, 0
  br label %925

925:                                              ; preds = %919, %904
  %926 = phi i1 [ false, %904 ], [ %924, %919 ]
  %927 = zext i1 %926 to i8
  store i8 %927, ptr %68, align 1, !tbaa !42
  %928 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %929 = trunc i8 %928 to i1
  br i1 %929, label %930, label %1001

930:                                              ; preds = %925
  %931 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %932 = trunc i8 %931 to i1
  br i1 %932, label %1001, label %933

933:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #14
  %934 = load ptr, ptr %20, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.ImGuiContext, ptr %934, i32 0, i32 6
  %936 = load ptr, ptr %935, align 8, !tbaa !129
  %937 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110) %936, i16 noundef zeroext 42)
  store ptr %937, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #14
  %938 = load ptr, ptr %20, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.ImGuiContext, ptr %938, i32 0, i32 174
  store ptr %939, ptr %70, align 8, !tbaa !5
  %940 = load ptr, ptr %20, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.ImGuiContext, ptr %940, i32 0, i32 6
  %942 = load ptr, ptr %941, align 8, !tbaa !129
  %943 = getelementptr inbounds %struct.ImFont, ptr %942, i32 0, i32 2
  %944 = load float, ptr %943, align 4, !tbaa !130
  %945 = load ptr, ptr %70, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.ImFont, ptr %945, i32 0, i32 2
  store float %944, ptr %946, align 4, !tbaa !130
  %947 = load ptr, ptr %20, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ImGuiContext, ptr %947, i32 0, i32 6
  %949 = load ptr, ptr %948, align 8, !tbaa !129
  %950 = getelementptr inbounds %struct.ImFont, ptr %949, i32 0, i32 14
  %951 = load float, ptr %950, align 4, !tbaa !131
  %952 = load ptr, ptr %70, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.ImFont, ptr %952, i32 0, i32 14
  store float %951, ptr %953, align 4, !tbaa !131
  %954 = load ptr, ptr %20, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiContext, ptr %954, i32 0, i32 6
  %956 = load ptr, ptr %955, align 8, !tbaa !129
  %957 = getelementptr inbounds %struct.ImFont, ptr %956, i32 0, i32 15
  %958 = load float, ptr %957, align 8, !tbaa !132
  %959 = load ptr, ptr %70, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ImFont, ptr %959, i32 0, i32 15
  store float %958, ptr %960, align 8, !tbaa !132
  %961 = load ptr, ptr %20, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.ImGuiContext, ptr %961, i32 0, i32 6
  %963 = load ptr, ptr %962, align 8, !tbaa !129
  %964 = getelementptr inbounds %struct.ImFont, ptr %963, i32 0, i32 16
  %965 = load float, ptr %964, align 4, !tbaa !133
  %966 = load ptr, ptr %70, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImFont, ptr %966, i32 0, i32 16
  store float %965, ptr %967, align 4, !tbaa !133
  %968 = load ptr, ptr %20, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiContext, ptr %968, i32 0, i32 6
  %970 = load ptr, ptr %969, align 8, !tbaa !129
  %971 = getelementptr inbounds %struct.ImFont, ptr %970, i32 0, i32 6
  %972 = load ptr, ptr %971, align 8, !tbaa !134
  %973 = load ptr, ptr %70, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.ImFont, ptr %973, i32 0, i32 6
  store ptr %972, ptr %974, align 8, !tbaa !134
  %975 = load ptr, ptr %69, align 8, !tbaa !5
  %976 = load ptr, ptr %70, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.ImFont, ptr %976, i32 0, i32 5
  store ptr %975, ptr %977, align 8, !tbaa !135
  %978 = load ptr, ptr %69, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.ImFontGlyph, ptr %978, i32 0, i32 1
  %980 = load float, ptr %979, align 4, !tbaa !136
  %981 = load ptr, ptr %70, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.ImFont, ptr %981, i32 0, i32 1
  store float %980, ptr %982, align 8, !tbaa !138
  %983 = load ptr, ptr %70, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.ImFont, ptr %983, i32 0, i32 4
  %985 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %984)
  br i1 %985, label %986, label %994

986:                                              ; preds = %933
  %987 = load ptr, ptr %70, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.ImFont, ptr %987, i32 0, i32 0
  %989 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %988)
  br i1 %989, label %990, label %994

990:                                              ; preds = %986
  %991 = load ptr, ptr %70, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.ImFont, ptr %991, i32 0, i32 3
  %993 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %992)
  br label %994

994:                                              ; preds = %990, %986, %933
  %995 = phi i1 [ false, %986 ], [ false, %933 ], [ %993, %990 ]
  br i1 %995, label %996, label %997

996:                                              ; preds = %994
  br label %999

997:                                              ; preds = %994
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.4, i32 noundef 4167, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

998:                                              ; No predecessors!
  br label %999

999:                                              ; preds = %998, %996
  %1000 = load ptr, ptr %70, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %1000)
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #14
  br label %1001

1001:                                             ; preds = %999, %930, %925
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #14
  store i32 0, ptr %71, align 4, !tbaa !9
  %1002 = load ptr, ptr %20, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.ImGuiContext, ptr %1002, i32 0, i32 44
  %1004 = load i32, ptr %1003, align 8, !tbaa !108
  %1005 = load i32, ptr %29, align 4, !tbaa !9
  %1006 = icmp eq i32 %1004, %1005
  br i1 %1006, label %1007, label %1402

1007:                                             ; preds = %1001
  %1008 = load ptr, ptr %47, align 8, !tbaa !5
  %1009 = icmp ne ptr %1008, null
  br i1 %1009, label %1010, label %1011

1010:                                             ; preds = %1007
  br label %1013

1011:                                             ; preds = %1007
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.4, i32 noundef 4175, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1012:                                             ; No predecessors!
  br label %1013

1013:                                             ; preds = %1012, %1010
  %1014 = load ptr, ptr %47, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1014, i32 0, i32 3
  %1016 = load i32, ptr %1015, align 8, !tbaa !117
  store i32 %1016, ptr %71, align 4, !tbaa !9
  %1017 = load ptr, ptr %47, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1017, i32 0, i32 16
  store i8 0, ptr %1018, align 2, !tbaa !139
  %1019 = load i32, ptr %13, align 4, !tbaa !9
  %1020 = load ptr, ptr %47, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1020, i32 0, i32 10
  store i32 %1019, ptr %1021, align 4, !tbaa !140
  %1022 = load i32, ptr %15, align 4, !tbaa !9
  %1023 = load ptr, ptr %47, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1023, i32 0, i32 18
  store i32 %1022, ptr %1024, align 8, !tbaa !141
  %1025 = load ptr, ptr %21, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.ImGuiIO, ptr %1025, i32 0, i32 57
  %1027 = getelementptr inbounds [5 x i8], ptr %1026, i64 0, i64 0
  %1028 = load i8, ptr %1027, align 4, !tbaa !42, !range !40, !noundef !41
  %1029 = trunc i8 %1028 to i1
  %1030 = xor i1 %1029, true
  %1031 = load ptr, ptr %20, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.ImGuiContext, ptr %1031, i32 0, i32 48
  %1033 = zext i1 %1030 to i8
  store i8 %1033, ptr %1032, align 1, !tbaa !142
  %1034 = load ptr, ptr %20, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.ImGuiContext, ptr %1034, i32 0, i32 232
  store i32 1, ptr %1035, align 4, !tbaa !143
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #14
  %1036 = load ptr, ptr %21, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.ImGuiIO, ptr %1036, i32 0, i32 56
  %1038 = getelementptr inbounds %struct.ImVec2, ptr %1037, i32 0, i32 0
  %1039 = load float, ptr %1038, align 4, !tbaa !144
  %1040 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %1041 = getelementptr inbounds %struct.ImVec2, ptr %1040, i32 0, i32 0
  %1042 = load float, ptr %1041, align 4, !tbaa !145
  %1043 = fsub float %1039, %1042
  %1044 = load ptr, ptr %22, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiStyle, ptr %1044, i32 0, i32 12
  %1046 = getelementptr inbounds %struct.ImVec2, ptr %1045, i32 0, i32 0
  %1047 = load float, ptr %1046, align 4, !tbaa !146
  %1048 = fsub float %1043, %1047
  %1049 = load ptr, ptr %47, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1049, i32 0, i32 11
  %1051 = load float, ptr %1050, align 8, !tbaa !122
  %1052 = fadd float %1048, %1051
  store float %1052, ptr %72, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #14
  %1053 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1054 = trunc i8 %1053 to i1
  br i1 %1054, label %1055, label %1066

1055:                                             ; preds = %1013
  %1056 = load ptr, ptr %21, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.ImGuiIO, ptr %1056, i32 0, i32 56
  %1058 = getelementptr inbounds %struct.ImVec2, ptr %1057, i32 0, i32 1
  %1059 = load float, ptr %1058, align 4, !tbaa !147
  %1060 = load ptr, ptr %38, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.ImGuiWindow, ptr %1060, i32 0, i32 61
  %1062 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1061, i32 0, i32 0
  %1063 = getelementptr inbounds %struct.ImVec2, ptr %1062, i32 0, i32 1
  %1064 = load float, ptr %1063, align 4, !tbaa !148
  %1065 = fsub float %1059, %1064
  br label %1071

1066:                                             ; preds = %1013
  %1067 = load ptr, ptr %20, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiContext, ptr %1067, i32 0, i32 7
  %1069 = load float, ptr %1068, align 8, !tbaa !45
  %1070 = fmul float %1069, 5.000000e-01
  br label %1071

1071:                                             ; preds = %1066, %1055
  %1072 = phi float [ %1065, %1055 ], [ %1070, %1066 ]
  store float %1072, ptr %73, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #14
  %1073 = load ptr, ptr %21, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.ImGuiIO, ptr %1073, i32 0, i32 21
  %1075 = load i8, ptr %1074, align 1, !tbaa !149, !range !40, !noundef !41
  %1076 = trunc i8 %1075 to i1
  %1077 = zext i1 %1076 to i8
  store i8 %1077, ptr %74, align 1, !tbaa !42
  %1078 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %1079 = trunc i8 %1078 to i1
  br i1 %1079, label %1080, label %1084

1080:                                             ; preds = %1071
  %1081 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1081)
  %1082 = load ptr, ptr %47, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1082, i32 0, i32 15
  store i8 1, ptr %1083, align 1, !tbaa !150
  br label %1286

1084:                                             ; preds = %1071
  %1085 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %1086 = trunc i8 %1085 to i1
  br i1 %1086, label %1087, label %1217

1087:                                             ; preds = %1084
  %1088 = load ptr, ptr %21, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.ImGuiIO, ptr %1088, i32 0, i32 72
  %1090 = getelementptr inbounds [5 x i16], ptr %1089, i64 0, i64 0
  %1091 = load i16, ptr %1090, align 2, !tbaa !151
  %1092 = zext i16 %1091 to i32
  %1093 = icmp sge i32 %1092, 2
  br i1 %1093, label %1094, label %1217

1094:                                             ; preds = %1087
  %1095 = load ptr, ptr %21, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.ImGuiIO, ptr %1095, i32 0, i32 61
  %1097 = load i8, ptr %1096, align 1, !tbaa !152, !range !40, !noundef !41
  %1098 = trunc i8 %1097 to i1
  br i1 %1098, label %1217, label %1099

1099:                                             ; preds = %1094
  %1100 = load ptr, ptr %47, align 8, !tbaa !5
  %1101 = load ptr, ptr %47, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1101, i32 0, i32 12
  %1103 = load float, ptr %72, align 4, !tbaa !44
  %1104 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1100, ptr noundef %1102, float noundef %1103, float noundef %1104)
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  %1105 = load ptr, ptr %21, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.ImGuiIO, ptr %1105, i32 0, i32 72
  %1107 = getelementptr inbounds [5 x i16], ptr %1106, i64 0, i64 0
  %1108 = load i16, ptr %1107, align 2, !tbaa !151
  %1109 = zext i16 %1108 to i32
  %1110 = sub nsw i32 %1109, 2
  store i32 %1110, ptr %75, align 4, !tbaa !9
  %1111 = load i32, ptr %75, align 4, !tbaa !9
  %1112 = srem i32 %1111, 2
  %1113 = icmp eq i32 %1112, 0
  br i1 %1113, label %1114, label %1180

1114:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #14
  %1115 = load ptr, ptr %47, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1115, i32 0, i32 12
  %1117 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1116, i32 0, i32 0
  %1118 = load i32, ptr %1117, align 4, !tbaa !153
  %1119 = icmp eq i32 %1118, 0
  br i1 %1119, label %1130, label %1120

1120:                                             ; preds = %1114
  %1121 = load ptr, ptr %47, align 8, !tbaa !5
  %1122 = load ptr, ptr %47, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1122, i32 0, i32 12
  %1124 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1123, i32 0, i32 0
  %1125 = load i32, ptr %1124, align 4, !tbaa !153
  %1126 = sub nsw i32 %1125, 1
  %1127 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1121, i32 noundef %1126)
  %1128 = zext i16 %1127 to i32
  %1129 = icmp eq i32 %1128, 10
  br label %1130

1130:                                             ; preds = %1120, %1114
  %1131 = phi i1 [ true, %1114 ], [ %1129, %1120 ]
  %1132 = zext i1 %1131 to i8
  store i8 %1132, ptr %76, align 1, !tbaa !42
  %1133 = load ptr, ptr %47, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1133, i32 0, i32 12
  %1135 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1134, i32 0, i32 1
  %1136 = load i32, ptr %1135, align 4, !tbaa !154
  %1137 = load ptr, ptr %47, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1137, i32 0, i32 12
  %1139 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1138, i32 0, i32 2
  %1140 = load i32, ptr %1139, align 4, !tbaa !155
  %1141 = icmp ne i32 %1136, %1140
  br i1 %1141, label %1145, label %1142

1142:                                             ; preds = %1130
  %1143 = load i8, ptr %76, align 1, !tbaa !42, !range !40, !noundef !41
  %1144 = trunc i8 %1143 to i1
  br i1 %1144, label %1147, label %1145

1145:                                             ; preds = %1142, %1130
  %1146 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1146, i32 noundef 2097164)
  br label %1147

1147:                                             ; preds = %1145, %1142
  %1148 = load ptr, ptr %47, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1148, i32 0, i32 12
  %1150 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1149, i32 0, i32 1
  %1151 = load i32, ptr %1150, align 4, !tbaa !154
  %1152 = load ptr, ptr %47, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1152, i32 0, i32 12
  %1154 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1153, i32 0, i32 2
  %1155 = load i32, ptr %1154, align 4, !tbaa !155
  %1156 = icmp ne i32 %1151, %1155
  br i1 %1156, label %1160, label %1157

1157:                                             ; preds = %1147
  %1158 = load ptr, ptr %47, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1158, i32 0, i32 12
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef %1159)
  br label %1160

1160:                                             ; preds = %1157, %1147
  %1161 = load ptr, ptr %47, align 8, !tbaa !5
  %1162 = load ptr, ptr %47, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1162, i32 0, i32 12
  %1164 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1163, i32 0, i32 0
  %1165 = load i32, ptr %1164, align 4, !tbaa !153
  %1166 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef %1161, i32 noundef %1165)
  %1167 = load ptr, ptr %47, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1167, i32 0, i32 12
  %1169 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1168, i32 0, i32 0
  store i32 %1166, ptr %1169, align 4, !tbaa !153
  %1170 = load ptr, ptr %47, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1170, i32 0, i32 12
  %1172 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1171, i32 0, i32 0
  %1173 = load i32, ptr %1172, align 4, !tbaa !153
  %1174 = load ptr, ptr %47, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1174, i32 0, i32 12
  %1176 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1175, i32 0, i32 2
  store i32 %1173, ptr %1176, align 4, !tbaa !155
  %1177 = load ptr, ptr %47, align 8, !tbaa !5
  %1178 = load ptr, ptr %47, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1178, i32 0, i32 12
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1177, ptr noundef %1179)
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  br label %1215

1180:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #14
  %1181 = load ptr, ptr %47, align 8, !tbaa !5
  %1182 = load ptr, ptr %47, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1182, i32 0, i32 12
  %1184 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1183, i32 0, i32 0
  %1185 = load i32, ptr %1184, align 4, !tbaa !153
  %1186 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1181, i32 noundef %1185)
  %1187 = zext i16 %1186 to i32
  %1188 = icmp eq i32 %1187, 10
  %1189 = zext i1 %1188 to i8
  store i8 %1189, ptr %77, align 1, !tbaa !42
  %1190 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1190, i32 noundef 2097156)
  %1191 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1191, i32 noundef 6291461)
  %1192 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1192, i32 noundef 6291457)
  %1193 = load i8, ptr %77, align 1, !tbaa !42, !range !40, !noundef !41
  %1194 = trunc i8 %1193 to i1
  br i1 %1194, label %1212, label %1195

1195:                                             ; preds = %1180
  %1196 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1197 = trunc i8 %1196 to i1
  br i1 %1197, label %1198, label %1212

1198:                                             ; preds = %1195
  %1199 = load ptr, ptr %47, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1199, i32 0, i32 12
  %1201 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1200, i32 0, i32 1
  %1202 = load ptr, ptr %47, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1202, i32 0, i32 12
  %1204 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1203, i32 0, i32 2
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %1201, ptr noundef nonnull align 4 dereferenceable(4) %1204)
  %1205 = load ptr, ptr %47, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1205, i32 0, i32 12
  %1207 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1206, i32 0, i32 2
  %1208 = load i32, ptr %1207, align 4, !tbaa !155
  %1209 = load ptr, ptr %47, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1209, i32 0, i32 12
  %1211 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1210, i32 0, i32 0
  store i32 %1208, ptr %1211, align 4, !tbaa !153
  br label %1212

1212:                                             ; preds = %1198, %1195, %1180
  %1213 = load ptr, ptr %47, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1213, i32 0, i32 14
  store i8 0, ptr %1214, align 4, !tbaa !156
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #14
  br label %1215

1215:                                             ; preds = %1212, %1160
  %1216 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %1216)
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  br label %1285

1217:                                             ; preds = %1094, %1087, %1084
  %1218 = load ptr, ptr %21, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiIO, ptr %1218, i32 0, i32 70
  %1220 = getelementptr inbounds [5 x i8], ptr %1219, i64 0, i64 0
  %1221 = load i8, ptr %1220, align 8, !tbaa !42, !range !40, !noundef !41
  %1222 = trunc i8 %1221 to i1
  br i1 %1222, label %1223, label %1251

1223:                                             ; preds = %1217
  %1224 = load ptr, ptr %47, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1224, i32 0, i32 15
  %1226 = load i8, ptr %1225, align 1, !tbaa !150, !range !40, !noundef !41
  %1227 = trunc i8 %1226 to i1
  br i1 %1227, label %1251, label %1228

1228:                                             ; preds = %1223
  %1229 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %1230 = trunc i8 %1229 to i1
  br i1 %1230, label %1231, label %1250

1231:                                             ; preds = %1228
  %1232 = load ptr, ptr %21, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiIO, ptr %1232, i32 0, i32 61
  %1234 = load i8, ptr %1233, align 1, !tbaa !152, !range !40, !noundef !41
  %1235 = trunc i8 %1234 to i1
  br i1 %1235, label %1236, label %1242

1236:                                             ; preds = %1231
  %1237 = load ptr, ptr %47, align 8, !tbaa !5
  %1238 = load ptr, ptr %47, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1238, i32 0, i32 12
  %1240 = load float, ptr %72, align 4, !tbaa !44
  %1241 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1237, ptr noundef %1239, float noundef %1240, float noundef %1241)
  br label %1248

1242:                                             ; preds = %1231
  %1243 = load ptr, ptr %47, align 8, !tbaa !5
  %1244 = load ptr, ptr %47, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1244, i32 0, i32 12
  %1246 = load float, ptr %72, align 4, !tbaa !44
  %1247 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1243, ptr noundef %1245, float noundef %1246, float noundef %1247)
  br label %1248

1248:                                             ; preds = %1242, %1236
  %1249 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %1249)
  br label %1250

1250:                                             ; preds = %1248, %1228
  br label %1284

1251:                                             ; preds = %1223, %1217
  %1252 = load ptr, ptr %21, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ImGuiIO, ptr %1252, i32 0, i32 57
  %1254 = getelementptr inbounds [5 x i8], ptr %1253, i64 0, i64 0
  %1255 = load i8, ptr %1254, align 4, !tbaa !42, !range !40, !noundef !41
  %1256 = trunc i8 %1255 to i1
  br i1 %1256, label %1257, label %1283

1257:                                             ; preds = %1251
  %1258 = load ptr, ptr %47, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1258, i32 0, i32 15
  %1260 = load i8, ptr %1259, align 1, !tbaa !150, !range !40, !noundef !41
  %1261 = trunc i8 %1260 to i1
  br i1 %1261, label %1283, label %1262

1262:                                             ; preds = %1257
  %1263 = load ptr, ptr %21, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.ImGuiIO, ptr %1263, i32 0, i32 52
  %1265 = getelementptr inbounds %struct.ImVec2, ptr %1264, i32 0, i32 0
  %1266 = load float, ptr %1265, align 8, !tbaa !157
  %1267 = fcmp une float %1266, 0.000000e+00
  br i1 %1267, label %1274, label %1268

1268:                                             ; preds = %1262
  %1269 = load ptr, ptr %21, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.ImGuiIO, ptr %1269, i32 0, i32 52
  %1271 = getelementptr inbounds %struct.ImVec2, ptr %1270, i32 0, i32 1
  %1272 = load float, ptr %1271, align 4, !tbaa !158
  %1273 = fcmp une float %1272, 0.000000e+00
  br i1 %1273, label %1274, label %1283

1274:                                             ; preds = %1268, %1262
  %1275 = load ptr, ptr %47, align 8, !tbaa !5
  %1276 = load ptr, ptr %47, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1276, i32 0, i32 12
  %1278 = load float, ptr %72, align 4, !tbaa !44
  %1279 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1275, ptr noundef %1277, float noundef %1278, float noundef %1279)
  %1280 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %1280)
  %1281 = load ptr, ptr %47, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1281, i32 0, i32 14
  store i8 1, ptr %1282, align 4, !tbaa !156
  br label %1283

1283:                                             ; preds = %1274, %1268, %1257, %1251
  br label %1284

1284:                                             ; preds = %1283, %1250
  br label %1285

1285:                                             ; preds = %1284, %1215
  br label %1286

1286:                                             ; preds = %1285, %1080
  %1287 = load ptr, ptr %47, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1287, i32 0, i32 15
  %1289 = load i8, ptr %1288, align 1, !tbaa !150, !range !40, !noundef !41
  %1290 = trunc i8 %1289 to i1
  br i1 %1290, label %1291, label %1300

1291:                                             ; preds = %1286
  %1292 = load ptr, ptr %21, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.ImGuiIO, ptr %1292, i32 0, i32 57
  %1294 = getelementptr inbounds [5 x i8], ptr %1293, i64 0, i64 0
  %1295 = load i8, ptr %1294, align 4, !tbaa !42, !range !40, !noundef !41
  %1296 = trunc i8 %1295 to i1
  br i1 %1296, label %1300, label %1297

1297:                                             ; preds = %1291
  %1298 = load ptr, ptr %47, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1298, i32 0, i32 15
  store i8 0, ptr %1299, align 1, !tbaa !150
  br label %1300

1300:                                             ; preds = %1297, %1291, %1286
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  %1301 = load ptr, ptr %21, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.ImGuiIO, ptr %1301, i32 0, i32 60
  %1303 = load i8, ptr %1302, align 4, !tbaa !124, !range !40, !noundef !41
  %1304 = trunc i8 %1303 to i1
  br i1 %1304, label %1305, label %1310

1305:                                             ; preds = %1300
  %1306 = load ptr, ptr %21, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.ImGuiIO, ptr %1306, i32 0, i32 62
  %1308 = load i8, ptr %1307, align 2, !tbaa !159, !range !40, !noundef !41
  %1309 = trunc i8 %1308 to i1
  br i1 %1309, label %1310, label %1320

1310:                                             ; preds = %1305, %1300
  %1311 = load i8, ptr %74, align 1, !tbaa !42, !range !40, !noundef !41
  %1312 = trunc i8 %1311 to i1
  br i1 %1312, label %1313, label %1318

1313:                                             ; preds = %1310
  %1314 = load ptr, ptr %21, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.ImGuiIO, ptr %1314, i32 0, i32 63
  %1316 = load i8, ptr %1315, align 1, !tbaa !160, !range !40, !noundef !41
  %1317 = trunc i8 %1316 to i1
  br label %1318

1318:                                             ; preds = %1313, %1310
  %1319 = phi i1 [ false, %1310 ], [ %1317, %1313 ]
  br label %1320

1320:                                             ; preds = %1318, %1305
  %1321 = phi i1 [ true, %1305 ], [ %1319, %1318 ]
  %1322 = zext i1 %1321 to i8
  store i8 %1322, ptr %78, align 1, !tbaa !42
  %1323 = load i32, ptr %15, align 4, !tbaa !9
  %1324 = and i32 %1323, 1024
  %1325 = icmp ne i32 %1324, 0
  br i1 %1325, label %1326, label %1348

1326:                                             ; preds = %1320
  %1327 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 512, i1 noundef zeroext true)
  br i1 %1327, label %1328, label %1348

1328:                                             ; preds = %1326
  %1329 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1330 = trunc i8 %1329 to i1
  br i1 %1330, label %1348, label %1331

1331:                                             ; preds = %1328
  %1332 = load ptr, ptr %21, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.ImGuiIO, ptr %1332, i32 0, i32 61
  %1334 = load i8, ptr %1333, align 1, !tbaa !152, !range !40, !noundef !41
  %1335 = trunc i8 %1334 to i1
  br i1 %1335, label %1348, label %1336

1336:                                             ; preds = %1331
  %1337 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1338 = trunc i8 %1337 to i1
  br i1 %1338, label %1348, label %1339

1339:                                             ; preds = %1336
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #14
  store i32 9, ptr %79, align 4, !tbaa !9
  %1340 = load i32, ptr %15, align 4, !tbaa !9
  %1341 = load ptr, ptr %16, align 8, !tbaa !5
  %1342 = load ptr, ptr %17, align 8, !tbaa !5
  %1343 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %79, i32 noundef %1340, ptr noundef %1341, ptr noundef %1342, i32 noundef 2)
  br i1 %1343, label %1344, label %1347

1344:                                             ; preds = %1339
  %1345 = load ptr, ptr %47, align 8, !tbaa !5
  %1346 = load i32, ptr %79, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1345, i32 noundef %1346)
  br label %1347

1347:                                             ; preds = %1344, %1339
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #14
  br label %1348

1348:                                             ; preds = %1347, %1336, %1331, %1328, %1326, %1320
  %1349 = load ptr, ptr %21, align 8, !tbaa !5
  %1350 = getelementptr inbounds %struct.ImGuiIO, ptr %1349, i32 0, i32 86
  %1351 = getelementptr inbounds %struct.ImVector.5, ptr %1350, i32 0, i32 0
  %1352 = load i32, ptr %1351, align 8, !tbaa !161
  %1353 = icmp sgt i32 %1352, 0
  br i1 %1353, label %1354, label %1401

1354:                                             ; preds = %1348
  %1355 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1356 = trunc i8 %1355 to i1
  br i1 %1356, label %1398, label %1357

1357:                                             ; preds = %1354
  %1358 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1359 = trunc i8 %1358 to i1
  br i1 %1359, label %1398, label %1360

1360:                                             ; preds = %1357
  %1361 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %1362 = trunc i8 %1361 to i1
  br i1 %1362, label %1398, label %1363

1363:                                             ; preds = %1360
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #14
  store i32 0, ptr %80, align 4, !tbaa !9
  br label %1364

1364:                                             ; preds = %1394, %1363
  %1365 = load i32, ptr %80, align 4, !tbaa !9
  %1366 = load ptr, ptr %21, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.ImGuiIO, ptr %1366, i32 0, i32 86
  %1368 = getelementptr inbounds %struct.ImVector.5, ptr %1367, i32 0, i32 0
  %1369 = load i32, ptr %1368, align 8, !tbaa !161
  %1370 = icmp slt i32 %1365, %1369
  br i1 %1370, label %1372, label %1371

1371:                                             ; preds = %1364
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #14
  br label %1397

1372:                                             ; preds = %1364
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #14
  %1373 = load ptr, ptr %21, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.ImGuiIO, ptr %1373, i32 0, i32 86
  %1375 = load i32, ptr %80, align 4, !tbaa !9
  %1376 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1374, i32 noundef %1375)
  %1377 = load i16, ptr %1376, align 2, !tbaa !151
  %1378 = zext i16 %1377 to i32
  store i32 %1378, ptr %81, align 4, !tbaa !9
  %1379 = load i32, ptr %81, align 4, !tbaa !9
  %1380 = icmp eq i32 %1379, 9
  br i1 %1380, label %1381, label %1382

1381:                                             ; preds = %1372
  store i32 4, ptr %19, align 4
  br label %1391

1382:                                             ; preds = %1372
  %1383 = load i32, ptr %15, align 4, !tbaa !9
  %1384 = load ptr, ptr %16, align 8, !tbaa !5
  %1385 = load ptr, ptr %17, align 8, !tbaa !5
  %1386 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %81, i32 noundef %1383, ptr noundef %1384, ptr noundef %1385, i32 noundef 2)
  br i1 %1386, label %1387, label %1390

1387:                                             ; preds = %1382
  %1388 = load ptr, ptr %47, align 8, !tbaa !5
  %1389 = load i32, ptr %81, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1388, i32 noundef %1389)
  br label %1390

1390:                                             ; preds = %1387, %1382
  store i32 0, ptr %19, align 4
  br label %1391

1391:                                             ; preds = %1390, %1381
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #14
  %1392 = load i32, ptr %19, align 4
  switch i32 %1392, label %3505 [
    i32 0, label %1393
    i32 4, label %1394
  ]

1393:                                             ; preds = %1391
  br label %1394

1394:                                             ; preds = %1393, %1391
  %1395 = load i32, ptr %80, align 4, !tbaa !9
  %1396 = add nsw i32 %1395, 1
  store i32 %1396, ptr %80, align 4, !tbaa !9
  br label %1364, !llvm.loop !162

1397:                                             ; preds = %1371
  br label %1398

1398:                                             ; preds = %1397, %1360, %1357, %1354
  %1399 = load ptr, ptr %21, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.ImGuiIO, ptr %1399, i32 0, i32 86
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1400, i32 noundef 0)
  br label %1401

1401:                                             ; preds = %1398, %1348
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #14
  br label %1402

1402:                                             ; preds = %1401, %1001
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #14
  store i8 0, ptr %82, align 1, !tbaa !42
  %1403 = load ptr, ptr %20, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.ImGuiContext, ptr %1403, i32 0, i32 44
  %1405 = load i32, ptr %1404, align 8, !tbaa !108
  %1406 = load i32, ptr %29, align 4, !tbaa !9
  %1407 = icmp eq i32 %1405, %1406
  br i1 %1407, label %1408, label %2116

1408:                                             ; preds = %1402
  %1409 = load ptr, ptr %20, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.ImGuiContext, ptr %1409, i32 0, i32 47
  %1411 = load i8, ptr %1410, align 4, !tbaa !164, !range !40, !noundef !41
  %1412 = trunc i8 %1411 to i1
  br i1 %1412, label %2116, label %1413

1413:                                             ; preds = %1408
  %1414 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %1415 = trunc i8 %1414 to i1
  br i1 %1415, label %2116, label %1416

1416:                                             ; preds = %1413
  %1417 = load ptr, ptr %47, align 8, !tbaa !5
  %1418 = icmp ne ptr %1417, null
  br i1 %1418, label %1419, label %1420

1419:                                             ; preds = %1416
  br label %1422

1420:                                             ; preds = %1416
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.4, i32 noundef 4285, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1421:                                             ; No predecessors!
  br label %1422

1422:                                             ; preds = %1421, %1419
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #14
  %1423 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %1424 = load float, ptr %1423, align 4, !tbaa !95
  %1425 = load ptr, ptr %22, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.ImGuiStyle, ptr %1425, i32 0, i32 12
  %1427 = getelementptr inbounds %struct.ImVec2, ptr %1426, i32 0, i32 1
  %1428 = load float, ptr %1427, align 4, !tbaa !96
  %1429 = fsub float %1424, %1428
  %1430 = load ptr, ptr %20, align 8, !tbaa !5
  %1431 = getelementptr inbounds %struct.ImGuiContext, ptr %1430, i32 0, i32 7
  %1432 = load float, ptr %1431, align 8, !tbaa !45
  %1433 = fdiv float %1429, %1432
  %1434 = fptosi float %1433 to i32
  %1435 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1434, i32 noundef 1)
  store i32 %1435, ptr %83, align 4, !tbaa !9
  %1436 = load i32, ptr %83, align 4, !tbaa !9
  %1437 = load ptr, ptr %47, align 8, !tbaa !5
  %1438 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1437, i32 0, i32 12
  %1439 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1438, i32 0, i32 4
  store i32 %1436, ptr %1439, align 4, !tbaa !165
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #14
  %1440 = load ptr, ptr %21, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.ImGuiIO, ptr %1440, i32 0, i32 61
  %1442 = load i8, ptr %1441, align 1, !tbaa !152, !range !40, !noundef !41
  %1443 = trunc i8 %1442 to i1
  %1444 = zext i1 %1443 to i64
  %1445 = select i1 %1443, i32 4194304, i32 0
  store i32 %1445, ptr %84, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #14
  %1446 = load ptr, ptr %21, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.ImGuiIO, ptr %1446, i32 0, i32 21
  %1448 = load i8, ptr %1447, align 1, !tbaa !149, !range !40, !noundef !41
  %1449 = trunc i8 %1448 to i1
  %1450 = zext i1 %1449 to i8
  store i8 %1450, ptr %85, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1451 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1452 = trunc i8 %1451 to i1
  br i1 %1452, label %1453, label %1458

1453:                                             ; preds = %1422
  %1454 = load ptr, ptr %21, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.ImGuiIO, ptr %1454, i32 0, i32 62
  %1456 = load i8, ptr %1455, align 2, !tbaa !159, !range !40, !noundef !41
  %1457 = trunc i8 %1456 to i1
  br label %1463

1458:                                             ; preds = %1422
  %1459 = load ptr, ptr %21, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.ImGuiIO, ptr %1459, i32 0, i32 60
  %1461 = load i8, ptr %1460, align 4, !tbaa !124, !range !40, !noundef !41
  %1462 = trunc i8 %1461 to i1
  br label %1463

1463:                                             ; preds = %1458, %1453
  %1464 = phi i1 [ %1457, %1453 ], [ %1462, %1458 ]
  %1465 = zext i1 %1464 to i8
  store i8 %1465, ptr %86, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #14
  %1466 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1467 = trunc i8 %1466 to i1
  br i1 %1467, label %1468, label %1484

1468:                                             ; preds = %1463
  %1469 = load ptr, ptr %21, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.ImGuiIO, ptr %1469, i32 0, i32 63
  %1471 = load i8, ptr %1470, align 1, !tbaa !160, !range !40, !noundef !41
  %1472 = trunc i8 %1471 to i1
  br i1 %1472, label %1473, label %1484

1473:                                             ; preds = %1468
  %1474 = load ptr, ptr %21, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.ImGuiIO, ptr %1474, i32 0, i32 60
  %1476 = load i8, ptr %1475, align 4, !tbaa !124, !range !40, !noundef !41
  %1477 = trunc i8 %1476 to i1
  br i1 %1477, label %1484, label %1478

1478:                                             ; preds = %1473
  %1479 = load ptr, ptr %21, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct.ImGuiIO, ptr %1479, i32 0, i32 62
  %1481 = load i8, ptr %1480, align 2, !tbaa !159, !range !40, !noundef !41
  %1482 = trunc i8 %1481 to i1
  %1483 = xor i1 %1482, true
  br label %1484

1484:                                             ; preds = %1478, %1473, %1468, %1463
  %1485 = phi i1 [ false, %1473 ], [ false, %1468 ], [ false, %1463 ], [ %1483, %1478 ]
  %1486 = zext i1 %1485 to i8
  store i8 %1486, ptr %87, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #14
  store i32 1, ptr %88, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1487 = load i32, ptr %29, align 4, !tbaa !9
  %1488 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2617, i32 noundef %1487, i32 noundef 1)
  br i1 %1488, label %1492, label %1489

1489:                                             ; preds = %1484
  %1490 = load i32, ptr %29, align 4, !tbaa !9
  %1491 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8714, i32 noundef %1490, i32 noundef 1)
  br i1 %1491, label %1492, label %1506

1492:                                             ; preds = %1489, %1484
  %1493 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1494 = trunc i8 %1493 to i1
  br i1 %1494, label %1506, label %1495

1495:                                             ; preds = %1492
  %1496 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1497 = trunc i8 %1496 to i1
  br i1 %1497, label %1506, label %1498

1498:                                             ; preds = %1495
  %1499 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1500 = trunc i8 %1499 to i1
  br i1 %1500, label %1501, label %1504

1501:                                             ; preds = %1498
  %1502 = load ptr, ptr %47, align 8, !tbaa !5
  %1503 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1502)
  br label %1504

1504:                                             ; preds = %1501, %1498
  %1505 = phi i1 [ true, %1498 ], [ %1503, %1501 ]
  br label %1506

1506:                                             ; preds = %1504, %1495, %1492, %1489
  %1507 = phi i1 [ false, %1495 ], [ false, %1492 ], [ false, %1489 ], [ %1505, %1504 ]
  %1508 = zext i1 %1507 to i8
  store i8 %1508, ptr %89, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1509 = load i32, ptr %29, align 4, !tbaa !9
  %1510 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2596, i32 noundef %1509, i32 noundef 0)
  br i1 %1510, label %1514, label %1511

1511:                                             ; preds = %1506
  %1512 = load i32, ptr %29, align 4, !tbaa !9
  %1513 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 4617, i32 noundef %1512, i32 noundef 0)
  br i1 %1513, label %1514, label %1525

1514:                                             ; preds = %1511, %1506
  %1515 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1516 = trunc i8 %1515 to i1
  br i1 %1516, label %1525, label %1517

1517:                                             ; preds = %1514
  %1518 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1519 = trunc i8 %1518 to i1
  br i1 %1519, label %1520, label %1523

1520:                                             ; preds = %1517
  %1521 = load ptr, ptr %47, align 8, !tbaa !5
  %1522 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1521)
  br label %1523

1523:                                             ; preds = %1520, %1517
  %1524 = phi i1 [ true, %1517 ], [ %1522, %1520 ]
  br label %1525

1525:                                             ; preds = %1523, %1514, %1511
  %1526 = phi i1 [ false, %1514 ], [ false, %1511 ], [ %1524, %1523 ]
  %1527 = zext i1 %1526 to i8
  store i8 %1527, ptr %90, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #14
  %1528 = load i32, ptr %29, align 4, !tbaa !9
  %1529 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2615, i32 noundef %1528, i32 noundef 1)
  br i1 %1529, label %1533, label %1530

1530:                                             ; preds = %1525
  %1531 = load i32, ptr %29, align 4, !tbaa !9
  %1532 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8713, i32 noundef %1531, i32 noundef 1)
  br i1 %1532, label %1533, label %1537

1533:                                             ; preds = %1530, %1525
  %1534 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1535 = trunc i8 %1534 to i1
  %1536 = xor i1 %1535, true
  br label %1537

1537:                                             ; preds = %1533, %1530
  %1538 = phi i1 [ false, %1530 ], [ %1536, %1533 ]
  %1539 = zext i1 %1538 to i8
  store i8 %1539, ptr %91, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #14
  %1540 = load i32, ptr %29, align 4, !tbaa !9
  %1541 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2619, i32 noundef %1540, i32 noundef 1)
  br i1 %1541, label %1542, label %1548

1542:                                             ; preds = %1537
  %1543 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1544 = trunc i8 %1543 to i1
  br i1 %1544, label %1548, label %1545

1545:                                             ; preds = %1542
  %1546 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1547 = trunc i8 %1546 to i1
  br label %1548

1548:                                             ; preds = %1545, %1542, %1537
  %1549 = phi i1 [ false, %1542 ], [ false, %1537 ], [ %1547, %1545 ]
  %1550 = zext i1 %1549 to i8
  store i8 %1550, ptr %92, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #14
  %1551 = load i32, ptr %29, align 4, !tbaa !9
  %1552 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2618, i32 noundef %1551, i32 noundef 1)
  br i1 %1552, label %1559, label %1553

1553:                                             ; preds = %1548
  %1554 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1555 = trunc i8 %1554 to i1
  br i1 %1555, label %1556, label %1565

1556:                                             ; preds = %1553
  %1557 = load i32, ptr %29, align 4, !tbaa !9
  %1558 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 10811, i32 noundef %1557, i32 noundef 1)
  br i1 %1558, label %1559, label %1565

1559:                                             ; preds = %1556, %1548
  %1560 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1561 = trunc i8 %1560 to i1
  br i1 %1561, label %1565, label %1562

1562:                                             ; preds = %1559
  %1563 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1564 = trunc i8 %1563 to i1
  br label %1565

1565:                                             ; preds = %1562, %1559, %1556, %1553
  %1566 = phi i1 [ false, %1559 ], [ false, %1556 ], [ false, %1553 ], [ %1564, %1562 ]
  %1567 = zext i1 %1566 to i8
  store i8 %1567, ptr %93, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #14
  %1568 = load i32, ptr %29, align 4, !tbaa !9
  %1569 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2594, i32 noundef %1568, i32 noundef 0)
  %1570 = zext i1 %1569 to i8
  store i8 %1570, ptr %94, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #14
  %1571 = load ptr, ptr %21, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.ImGuiIO, ptr %1571, i32 0, i32 0
  %1573 = load i32, ptr %1572, align 8, !tbaa !166
  %1574 = and i32 %1573, 2
  %1575 = icmp ne i32 %1574, 0
  br i1 %1575, label %1576, label %1582

1576:                                             ; preds = %1565
  %1577 = load ptr, ptr %21, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.ImGuiIO, ptr %1577, i32 0, i32 1
  %1579 = load i32, ptr %1578, align 4, !tbaa !167
  %1580 = and i32 %1579, 1
  %1581 = icmp ne i32 %1580, 0
  br label %1582

1582:                                             ; preds = %1576, %1565
  %1583 = phi i1 [ false, %1565 ], [ %1581, %1576 ]
  %1584 = zext i1 %1583 to i8
  store i8 %1584, ptr %95, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #14
  %1585 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %1585, label %1588, label %1586

1586:                                             ; preds = %1582
  %1587 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 615, i1 noundef zeroext true)
  br label %1588

1588:                                             ; preds = %1586, %1582
  %1589 = phi i1 [ true, %1582 ], [ %1587, %1586 ]
  %1590 = zext i1 %1589 to i8
  store i8 %1590, ptr %96, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #14
  %1591 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %1592 = trunc i8 %1591 to i1
  br i1 %1592, label %1593, label %1599

1593:                                             ; preds = %1588
  %1594 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 622, i1 noundef zeroext false)
  br i1 %1594, label %1597, label %1595

1595:                                             ; preds = %1593
  %1596 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 621, i1 noundef zeroext false)
  br label %1597

1597:                                             ; preds = %1595, %1593
  %1598 = phi i1 [ true, %1593 ], [ %1596, %1595 ]
  br label %1599

1599:                                             ; preds = %1597, %1588
  %1600 = phi i1 [ false, %1588 ], [ %1598, %1597 ]
  %1601 = zext i1 %1600 to i8
  store i8 %1601, ptr %97, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #14
  %1602 = load i32, ptr %29, align 4, !tbaa !9
  %1603 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 526, i32 noundef %1602, i32 noundef 1)
  br i1 %1603, label %1612, label %1604

1604:                                             ; preds = %1599
  %1605 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %1606 = trunc i8 %1605 to i1
  br i1 %1606, label %1607, label %1610

1607:                                             ; preds = %1604
  %1608 = load i32, ptr %29, align 4, !tbaa !9
  %1609 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 620, i32 noundef %1608, i32 noundef 1)
  br label %1610

1610:                                             ; preds = %1607, %1604
  %1611 = phi i1 [ false, %1604 ], [ %1609, %1607 ]
  br label %1612

1612:                                             ; preds = %1610, %1599
  %1613 = phi i1 [ true, %1599 ], [ %1611, %1610 ]
  %1614 = zext i1 %1613 to i8
  store i8 %1614, ptr %98, align 1, !tbaa !42
  %1615 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %1615, label %1616, label %1630

1616:                                             ; preds = %1612
  %1617 = load ptr, ptr %47, align 8, !tbaa !5
  %1618 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1619 = trunc i8 %1618 to i1
  br i1 %1619, label %1620, label %1621

1620:                                             ; preds = %1616
  br label %1626

1621:                                             ; preds = %1616
  %1622 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1623 = trunc i8 %1622 to i1
  %1624 = zext i1 %1623 to i64
  %1625 = select i1 %1623, i32 2097164, i32 2097152
  br label %1626

1626:                                             ; preds = %1621, %1620
  %1627 = phi i32 [ 2097156, %1620 ], [ %1625, %1621 ]
  %1628 = load i32, ptr %84, align 4, !tbaa !9
  %1629 = or i32 %1627, %1628
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1617, i32 noundef %1629)
  br label %2101

1630:                                             ; preds = %1612
  %1631 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %1631, label %1632, label %1646

1632:                                             ; preds = %1630
  %1633 = load ptr, ptr %47, align 8, !tbaa !5
  %1634 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1635 = trunc i8 %1634 to i1
  br i1 %1635, label %1636, label %1637

1636:                                             ; preds = %1632
  br label %1642

1637:                                             ; preds = %1632
  %1638 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1639 = trunc i8 %1638 to i1
  %1640 = zext i1 %1639 to i64
  %1641 = select i1 %1639, i32 2097165, i32 2097153
  br label %1642

1642:                                             ; preds = %1637, %1636
  %1643 = phi i32 [ 2097157, %1636 ], [ %1641, %1637 ]
  %1644 = load i32, ptr %84, align 4, !tbaa !9
  %1645 = or i32 %1643, %1644
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1633, i32 noundef %1645)
  br label %2100

1646:                                             ; preds = %1630
  %1647 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1647, label %1648, label %1676

1648:                                             ; preds = %1646
  %1649 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1650 = trunc i8 %1649 to i1
  br i1 %1650, label %1651, label %1676

1651:                                             ; preds = %1648
  %1652 = load ptr, ptr %21, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.ImGuiIO, ptr %1652, i32 0, i32 60
  %1654 = load i8, ptr %1653, align 4, !tbaa !124, !range !40, !noundef !41
  %1655 = trunc i8 %1654 to i1
  br i1 %1655, label %1656, label %1667

1656:                                             ; preds = %1651
  %1657 = load ptr, ptr %38, align 8, !tbaa !5
  %1658 = load ptr, ptr %38, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.ImGuiWindow, ptr %1658, i32 0, i32 22
  %1660 = getelementptr inbounds %struct.ImVec2, ptr %1659, i32 0, i32 1
  %1661 = load float, ptr %1660, align 4, !tbaa !113
  %1662 = load ptr, ptr %20, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.ImGuiContext, ptr %1662, i32 0, i32 7
  %1664 = load float, ptr %1663, align 8, !tbaa !45
  %1665 = fsub float %1661, %1664
  %1666 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1665, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1657, float noundef %1666)
  br label %1675

1667:                                             ; preds = %1651
  %1668 = load ptr, ptr %47, align 8, !tbaa !5
  %1669 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1670 = trunc i8 %1669 to i1
  %1671 = zext i1 %1670 to i64
  %1672 = select i1 %1670, i32 2097158, i32 2097154
  %1673 = load i32, ptr %84, align 4, !tbaa !9
  %1674 = or i32 %1672, %1673
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1668, i32 noundef %1674)
  br label %1675

1675:                                             ; preds = %1667, %1656
  br label %2099

1676:                                             ; preds = %1648, %1646
  %1677 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1677, label %1678, label %1707

1678:                                             ; preds = %1676
  %1679 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1680 = trunc i8 %1679 to i1
  br i1 %1680, label %1681, label %1707

1681:                                             ; preds = %1678
  %1682 = load ptr, ptr %21, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.ImGuiIO, ptr %1682, i32 0, i32 60
  %1684 = load i8, ptr %1683, align 4, !tbaa !124, !range !40, !noundef !41
  %1685 = trunc i8 %1684 to i1
  br i1 %1685, label %1686, label %1698

1686:                                             ; preds = %1681
  %1687 = load ptr, ptr %38, align 8, !tbaa !5
  %1688 = load ptr, ptr %38, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.ImGuiWindow, ptr %1688, i32 0, i32 22
  %1690 = getelementptr inbounds %struct.ImVec2, ptr %1689, i32 0, i32 1
  %1691 = load float, ptr %1690, align 4, !tbaa !113
  %1692 = load ptr, ptr %20, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.ImGuiContext, ptr %1692, i32 0, i32 7
  %1694 = load float, ptr %1693, align 8, !tbaa !45
  %1695 = fadd float %1691, %1694
  %1696 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1697 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1695, float noundef %1696)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1687, float noundef %1697)
  br label %1706

1698:                                             ; preds = %1681
  %1699 = load ptr, ptr %47, align 8, !tbaa !5
  %1700 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1701 = trunc i8 %1700 to i1
  %1702 = zext i1 %1701 to i64
  %1703 = select i1 %1701, i32 2097159, i32 2097155
  %1704 = load i32, ptr %84, align 4, !tbaa !9
  %1705 = or i32 %1703, %1704
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1699, i32 noundef %1705)
  br label %1706

1706:                                             ; preds = %1698, %1686
  br label %2098

1707:                                             ; preds = %1678, %1676
  %1708 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  br i1 %1708, label %1709, label %1724

1709:                                             ; preds = %1707
  %1710 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1711 = trunc i8 %1710 to i1
  br i1 %1711, label %1712, label %1724

1712:                                             ; preds = %1709
  %1713 = load ptr, ptr %47, align 8, !tbaa !5
  %1714 = load i32, ptr %84, align 4, !tbaa !9
  %1715 = or i32 2097166, %1714
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1713, i32 noundef %1715)
  %1716 = load i32, ptr %83, align 4, !tbaa !9
  %1717 = sitofp i32 %1716 to float
  %1718 = load ptr, ptr %20, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.ImGuiContext, ptr %1718, i32 0, i32 7
  %1720 = load float, ptr %1719, align 8, !tbaa !45
  %1721 = load float, ptr %55, align 4, !tbaa !44
  %1722 = fneg float %1717
  %1723 = call float @llvm.fmuladd.f32(float %1722, float %1720, float %1721)
  store float %1723, ptr %55, align 4, !tbaa !44
  br label %2097

1724:                                             ; preds = %1709, %1707
  %1725 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  br i1 %1725, label %1726, label %1740

1726:                                             ; preds = %1724
  %1727 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1728 = trunc i8 %1727 to i1
  br i1 %1728, label %1729, label %1740

1729:                                             ; preds = %1726
  %1730 = load ptr, ptr %47, align 8, !tbaa !5
  %1731 = load i32, ptr %84, align 4, !tbaa !9
  %1732 = or i32 2097167, %1731
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1730, i32 noundef %1732)
  %1733 = load i32, ptr %83, align 4, !tbaa !9
  %1734 = sitofp i32 %1733 to float
  %1735 = load ptr, ptr %20, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiContext, ptr %1735, i32 0, i32 7
  %1737 = load float, ptr %1736, align 8, !tbaa !45
  %1738 = load float, ptr %55, align 4, !tbaa !44
  %1739 = call float @llvm.fmuladd.f32(float %1734, float %1737, float %1738)
  store float %1739, ptr %55, align 4, !tbaa !44
  br label %2096

1740:                                             ; preds = %1726, %1724
  %1741 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %1741, label %1742, label %1756

1742:                                             ; preds = %1740
  %1743 = load ptr, ptr %47, align 8, !tbaa !5
  %1744 = load ptr, ptr %21, align 8, !tbaa !5
  %1745 = getelementptr inbounds %struct.ImGuiIO, ptr %1744, i32 0, i32 60
  %1746 = load i8, ptr %1745, align 4, !tbaa !124, !range !40, !noundef !41
  %1747 = trunc i8 %1746 to i1
  br i1 %1747, label %1748, label %1751

1748:                                             ; preds = %1742
  %1749 = load i32, ptr %84, align 4, !tbaa !9
  %1750 = or i32 2097158, %1749
  br label %1754

1751:                                             ; preds = %1742
  %1752 = load i32, ptr %84, align 4, !tbaa !9
  %1753 = or i32 2097156, %1752
  br label %1754

1754:                                             ; preds = %1751, %1748
  %1755 = phi i32 [ %1750, %1748 ], [ %1753, %1751 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1743, i32 noundef %1755)
  br label %2095

1756:                                             ; preds = %1740
  %1757 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %1757, label %1758, label %1772

1758:                                             ; preds = %1756
  %1759 = load ptr, ptr %47, align 8, !tbaa !5
  %1760 = load ptr, ptr %21, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.ImGuiIO, ptr %1760, i32 0, i32 60
  %1762 = load i8, ptr %1761, align 4, !tbaa !124, !range !40, !noundef !41
  %1763 = trunc i8 %1762 to i1
  br i1 %1763, label %1764, label %1767

1764:                                             ; preds = %1758
  %1765 = load i32, ptr %84, align 4, !tbaa !9
  %1766 = or i32 2097159, %1765
  br label %1770

1767:                                             ; preds = %1758
  %1768 = load i32, ptr %84, align 4, !tbaa !9
  %1769 = or i32 2097157, %1768
  br label %1770

1770:                                             ; preds = %1767, %1764
  %1771 = phi i32 [ %1766, %1764 ], [ %1769, %1767 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1759, i32 noundef %1771)
  br label %2094

1772:                                             ; preds = %1756
  %1773 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1773, label %1774, label %1784

1774:                                             ; preds = %1772
  %1775 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1776 = trunc i8 %1775 to i1
  br i1 %1776, label %1784, label %1777

1777:                                             ; preds = %1774
  %1778 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1779 = trunc i8 %1778 to i1
  br i1 %1779, label %1784, label %1780

1780:                                             ; preds = %1777
  %1781 = load ptr, ptr %47, align 8, !tbaa !5
  %1782 = load i32, ptr %84, align 4, !tbaa !9
  %1783 = or i32 2097160, %1782
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1781, i32 noundef %1783)
  br label %2093

1784:                                             ; preds = %1777, %1774, %1772
  %1785 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  br i1 %1785, label %1786, label %1823

1786:                                             ; preds = %1784
  %1787 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1788 = trunc i8 %1787 to i1
  br i1 %1788, label %1823, label %1789

1789:                                             ; preds = %1786
  %1790 = load ptr, ptr %47, align 8, !tbaa !5
  %1791 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1790)
  br i1 %1791, label %1819, label %1792

1792:                                             ; preds = %1789
  %1793 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1794 = trunc i8 %1793 to i1
  br i1 %1794, label %1795, label %1797

1795:                                             ; preds = %1792
  %1796 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1796, i32 noundef 6291468)
  br label %1818

1797:                                             ; preds = %1792
  %1798 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1799 = trunc i8 %1798 to i1
  br i1 %1799, label %1800, label %1817

1800:                                             ; preds = %1797
  %1801 = load ptr, ptr %21, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.ImGuiIO, ptr %1801, i32 0, i32 63
  %1803 = load i8, ptr %1802, align 1, !tbaa !160, !range !40, !noundef !41
  %1804 = trunc i8 %1803 to i1
  br i1 %1804, label %1805, label %1817

1805:                                             ; preds = %1800
  %1806 = load ptr, ptr %21, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.ImGuiIO, ptr %1806, i32 0, i32 62
  %1808 = load i8, ptr %1807, align 2, !tbaa !159, !range !40, !noundef !41
  %1809 = trunc i8 %1808 to i1
  br i1 %1809, label %1817, label %1810

1810:                                             ; preds = %1805
  %1811 = load ptr, ptr %21, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.ImGuiIO, ptr %1811, i32 0, i32 60
  %1813 = load i8, ptr %1812, align 4, !tbaa !124, !range !40, !noundef !41
  %1814 = trunc i8 %1813 to i1
  br i1 %1814, label %1817, label %1815

1815:                                             ; preds = %1810
  %1816 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1816, i32 noundef 6291460)
  br label %1817

1817:                                             ; preds = %1815, %1810, %1805, %1800, %1797
  br label %1818

1818:                                             ; preds = %1817, %1795
  br label %1819

1819:                                             ; preds = %1818, %1789
  %1820 = load ptr, ptr %47, align 8, !tbaa !5
  %1821 = load i32, ptr %84, align 4, !tbaa !9
  %1822 = or i32 2097161, %1821
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1820, i32 noundef %1822)
  br label %2092

1823:                                             ; preds = %1786, %1784
  %1824 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1825 = trunc i8 %1824 to i1
  br i1 %1825, label %1829, label %1826

1826:                                             ; preds = %1823
  %1827 = load i8, ptr %97, align 1, !tbaa !42, !range !40, !noundef !41
  %1828 = trunc i8 %1827 to i1
  br i1 %1828, label %1829, label %1881

1829:                                             ; preds = %1826, %1823
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #14
  %1830 = load i32, ptr %15, align 4, !tbaa !9
  %1831 = and i32 %1830, 2048
  %1832 = icmp ne i32 %1831, 0
  %1833 = zext i1 %1832 to i8
  store i8 %1833, ptr %99, align 1, !tbaa !42
  %1834 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1835 = trunc i8 %1834 to i1
  br i1 %1835, label %1836, label %1855

1836:                                             ; preds = %1829
  %1837 = load i8, ptr %97, align 1, !tbaa !42, !range !40, !noundef !41
  %1838 = trunc i8 %1837 to i1
  br i1 %1838, label %1855, label %1839

1839:                                             ; preds = %1836
  %1840 = load i8, ptr %99, align 1, !tbaa !42, !range !40, !noundef !41
  %1841 = trunc i8 %1840 to i1
  br i1 %1841, label %1842, label %1847

1842:                                             ; preds = %1839
  %1843 = load ptr, ptr %21, align 8, !tbaa !5
  %1844 = getelementptr inbounds %struct.ImGuiIO, ptr %1843, i32 0, i32 60
  %1845 = load i8, ptr %1844, align 4, !tbaa !124, !range !40, !noundef !41
  %1846 = trunc i8 %1845 to i1
  br i1 %1846, label %1847, label %1855

1847:                                             ; preds = %1842, %1839
  %1848 = load i8, ptr %99, align 1, !tbaa !42, !range !40, !noundef !41
  %1849 = trunc i8 %1848 to i1
  br i1 %1849, label %1867, label %1850

1850:                                             ; preds = %1847
  %1851 = load ptr, ptr %21, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct.ImGuiIO, ptr %1851, i32 0, i32 60
  %1853 = load i8, ptr %1852, align 4, !tbaa !124, !range !40, !noundef !41
  %1854 = trunc i8 %1853 to i1
  br i1 %1854, label %1855, label %1867

1855:                                             ; preds = %1850, %1842, %1836, %1829
  store i8 1, ptr %65, align 1, !tbaa !42
  %1856 = load ptr, ptr %21, align 8, !tbaa !5
  %1857 = getelementptr inbounds %struct.ImGuiIO, ptr %1856, i32 0, i32 24
  %1858 = load i8, ptr %1857, align 4, !tbaa !168, !range !40, !noundef !41
  %1859 = trunc i8 %1858 to i1
  br i1 %1859, label %1860, label %1865

1860:                                             ; preds = %1855
  %1861 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1862 = trunc i8 %1861 to i1
  br i1 %1862, label %1865, label %1863

1863:                                             ; preds = %1860
  %1864 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1864)
  br label %1866

1865:                                             ; preds = %1860, %1855
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %1866

1866:                                             ; preds = %1865, %1863
  br label %1880

1867:                                             ; preds = %1850, %1847
  %1868 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1869 = trunc i8 %1868 to i1
  br i1 %1869, label %1879, label %1870

1870:                                             ; preds = %1867
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #14
  store i32 10, ptr %100, align 4, !tbaa !9
  %1871 = load i32, ptr %15, align 4, !tbaa !9
  %1872 = load ptr, ptr %16, align 8, !tbaa !5
  %1873 = load ptr, ptr %17, align 8, !tbaa !5
  %1874 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %100, i32 noundef %1871, ptr noundef %1872, ptr noundef %1873, i32 noundef 2)
  br i1 %1874, label %1875, label %1878

1875:                                             ; preds = %1870
  %1876 = load ptr, ptr %47, align 8, !tbaa !5
  %1877 = load i32, ptr %100, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1876, i32 noundef %1877)
  br label %1878

1878:                                             ; preds = %1875, %1870
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #14
  br label %1879

1879:                                             ; preds = %1878, %1867
  br label %1880

1880:                                             ; preds = %1879, %1866
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #14
  br label %2091

1881:                                             ; preds = %1826
  %1882 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1883 = trunc i8 %1882 to i1
  br i1 %1883, label %1884, label %1898

1884:                                             ; preds = %1881
  %1885 = load i32, ptr %15, align 4, !tbaa !9
  %1886 = and i32 %1885, 1048576
  %1887 = icmp ne i32 %1886, 0
  br i1 %1887, label %1888, label %1896

1888:                                             ; preds = %1884
  %1889 = load ptr, ptr %47, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1889, i32 0, i32 3
  %1891 = load i32, ptr %1890, align 8, !tbaa !117
  %1892 = icmp sgt i32 %1891, 0
  br i1 %1892, label %1893, label %1894

1893:                                             ; preds = %1888
  store i8 1, ptr %82, align 1, !tbaa !42
  br label %1895

1894:                                             ; preds = %1888
  store i8 0, ptr %63, align 1, !tbaa !42
  store i8 0, ptr %62, align 1, !tbaa !42
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %1895

1895:                                             ; preds = %1894, %1893
  br label %1897

1896:                                             ; preds = %1884
  store i8 1, ptr %82, align 1, !tbaa !42
  store i8 1, ptr %53, align 1, !tbaa !42
  store i8 0, ptr %63, align 1, !tbaa !42
  store i8 0, ptr %62, align 1, !tbaa !42
  br label %1897

1897:                                             ; preds = %1896, %1895
  br label %2090

1898:                                             ; preds = %1881
  %1899 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1900 = trunc i8 %1899 to i1
  br i1 %1900, label %1904, label %1901

1901:                                             ; preds = %1898
  %1902 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1903 = trunc i8 %1902 to i1
  br i1 %1903, label %1904, label %1911

1904:                                             ; preds = %1901, %1898
  %1905 = load ptr, ptr %47, align 8, !tbaa !5
  %1906 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1907 = trunc i8 %1906 to i1
  %1908 = zext i1 %1907 to i64
  %1909 = select i1 %1907, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1905, i32 noundef %1909)
  %1910 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1910)
  br label %2089

1911:                                             ; preds = %1901
  %1912 = load i8, ptr %94, align 1, !tbaa !42, !range !40, !noundef !41
  %1913 = trunc i8 %1912 to i1
  br i1 %1913, label %1914, label %1918

1914:                                             ; preds = %1911
  %1915 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1915)
  %1916 = load ptr, ptr %47, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1916, i32 0, i32 14
  store i8 1, ptr %1917, align 4, !tbaa !156
  br label %2088

1918:                                             ; preds = %1911
  %1919 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1920 = trunc i8 %1919 to i1
  br i1 %1920, label %1924, label %1921

1921:                                             ; preds = %1918
  %1922 = load i8, ptr %90, align 1, !tbaa !42, !range !40, !noundef !41
  %1923 = trunc i8 %1922 to i1
  br i1 %1923, label %1924, label %2018

1924:                                             ; preds = %1921, %1918
  %1925 = load ptr, ptr %21, align 8, !tbaa !5
  %1926 = getelementptr inbounds %struct.ImGuiIO, ptr %1925, i32 0, i32 35
  %1927 = load ptr, ptr %1926, align 8, !tbaa !169
  %1928 = icmp ne ptr %1927, null
  br i1 %1928, label %1929, label %2002

1929:                                             ; preds = %1924
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #14
  %1930 = load ptr, ptr %47, align 8, !tbaa !5
  %1931 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1930)
  br i1 %1931, label %1932, label %1942

1932:                                             ; preds = %1929
  %1933 = load ptr, ptr %47, align 8, !tbaa !5
  %1934 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1933, i32 0, i32 12
  %1935 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1934, i32 0, i32 1
  %1936 = load i32, ptr %1935, align 4, !tbaa !154
  %1937 = load ptr, ptr %47, align 8, !tbaa !5
  %1938 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1937, i32 0, i32 12
  %1939 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1938, i32 0, i32 2
  %1940 = load i32, ptr %1939, align 4, !tbaa !155
  %1941 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1936, i32 noundef %1940)
  br label %1943

1942:                                             ; preds = %1929
  br label %1943

1943:                                             ; preds = %1942, %1932
  %1944 = phi i32 [ %1941, %1932 ], [ 0, %1942 ]
  store i32 %1944, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #14
  %1945 = load ptr, ptr %47, align 8, !tbaa !5
  %1946 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1945)
  br i1 %1946, label %1947, label %1957

1947:                                             ; preds = %1943
  %1948 = load ptr, ptr %47, align 8, !tbaa !5
  %1949 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1948, i32 0, i32 12
  %1950 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1949, i32 0, i32 1
  %1951 = load i32, ptr %1950, align 4, !tbaa !154
  %1952 = load ptr, ptr %47, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1952, i32 0, i32 12
  %1954 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1953, i32 0, i32 2
  %1955 = load i32, ptr %1954, align 4, !tbaa !155
  %1956 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1951, i32 noundef %1955)
  br label %1961

1957:                                             ; preds = %1943
  %1958 = load ptr, ptr %47, align 8, !tbaa !5
  %1959 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1958, i32 0, i32 2
  %1960 = load i32, ptr %1959, align 4, !tbaa !121
  br label %1961

1961:                                             ; preds = %1957, %1947
  %1962 = phi i32 [ %1956, %1947 ], [ %1960, %1957 ]
  store i32 %1962, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #14
  %1963 = load ptr, ptr %47, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1963, i32 0, i32 5
  %1965 = getelementptr inbounds %struct.ImVector.5, ptr %1964, i32 0, i32 2
  %1966 = load ptr, ptr %1965, align 8, !tbaa !120
  %1967 = load i32, ptr %101, align 4, !tbaa !9
  %1968 = sext i32 %1967 to i64
  %1969 = getelementptr inbounds i16, ptr %1966, i64 %1968
  %1970 = load ptr, ptr %47, align 8, !tbaa !5
  %1971 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1970, i32 0, i32 5
  %1972 = getelementptr inbounds %struct.ImVector.5, ptr %1971, i32 0, i32 2
  %1973 = load ptr, ptr %1972, align 8, !tbaa !120
  %1974 = load i32, ptr %102, align 4, !tbaa !9
  %1975 = sext i32 %1974 to i64
  %1976 = getelementptr inbounds i16, ptr %1973, i64 %1975
  %1977 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1969, ptr noundef %1976)
  %1978 = add nsw i32 %1977, 1
  store i32 %1978, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #14
  %1979 = load i32, ptr %103, align 4, !tbaa !9
  %1980 = sext i32 %1979 to i64
  %1981 = mul i64 %1980, 1
  %1982 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1981)
  store ptr %1982, ptr %104, align 8, !tbaa !5
  %1983 = load ptr, ptr %104, align 8, !tbaa !5
  %1984 = load i32, ptr %103, align 4, !tbaa !9
  %1985 = load ptr, ptr %47, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1985, i32 0, i32 5
  %1987 = getelementptr inbounds %struct.ImVector.5, ptr %1986, i32 0, i32 2
  %1988 = load ptr, ptr %1987, align 8, !tbaa !120
  %1989 = load i32, ptr %101, align 4, !tbaa !9
  %1990 = sext i32 %1989 to i64
  %1991 = getelementptr inbounds i16, ptr %1988, i64 %1990
  %1992 = load ptr, ptr %47, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1992, i32 0, i32 5
  %1994 = getelementptr inbounds %struct.ImVector.5, ptr %1993, i32 0, i32 2
  %1995 = load ptr, ptr %1994, align 8, !tbaa !120
  %1996 = load i32, ptr %102, align 4, !tbaa !9
  %1997 = sext i32 %1996 to i64
  %1998 = getelementptr inbounds i16, ptr %1995, i64 %1997
  %1999 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1983, i32 noundef %1984, ptr noundef %1991, ptr noundef %1998)
  %2000 = load ptr, ptr %104, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %2000)
  %2001 = load ptr, ptr %104, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2001)
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #14
  br label %2002

2002:                                             ; preds = %1961, %1924
  %2003 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %2004 = trunc i8 %2003 to i1
  br i1 %2004, label %2005, label %2017

2005:                                             ; preds = %2002
  %2006 = load ptr, ptr %47, align 8, !tbaa !5
  %2007 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %2006)
  br i1 %2007, label %2010, label %2008

2008:                                             ; preds = %2005
  %2009 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %2009)
  br label %2010

2010:                                             ; preds = %2008, %2005
  %2011 = load ptr, ptr %47, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2011, i32 0, i32 14
  store i8 1, ptr %2012, align 4, !tbaa !156
  %2013 = load ptr, ptr %47, align 8, !tbaa !5
  %2014 = load ptr, ptr %47, align 8, !tbaa !5
  %2015 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2014, i32 0, i32 12
  %2016 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %2013, ptr noundef %2015)
  br label %2017

2017:                                             ; preds = %2010, %2002
  br label %2087

2018:                                             ; preds = %1921
  %2019 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %2020 = trunc i8 %2019 to i1
  br i1 %2020, label %2021, label %2086

2021:                                             ; preds = %2018
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #14
  %2022 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %2022, ptr %105, align 8, !tbaa !5
  %2023 = load ptr, ptr %105, align 8, !tbaa !5
  %2024 = icmp ne ptr %2023, null
  br i1 %2024, label %2025, label %2085

2025:                                             ; preds = %2021
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #14
  %2026 = load ptr, ptr %105, align 8, !tbaa !5
  %2027 = call i64 @strlen(ptr noundef %2026) #16
  %2028 = trunc i64 %2027 to i32
  store i32 %2028, ptr %106, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #14
  %2029 = load i32, ptr %106, align 4, !tbaa !9
  %2030 = add nsw i32 %2029, 1
  %2031 = sext i32 %2030 to i64
  %2032 = mul i64 %2031, 2
  %2033 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %2032)
  store ptr %2033, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #14
  store i32 0, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #14
  %2034 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2034, ptr %109, align 8, !tbaa !5
  br label %2035

2035:                                             ; preds = %2065, %2063, %2025
  %2036 = load ptr, ptr %109, align 8, !tbaa !5
  %2037 = load i8, ptr %2036, align 1, !tbaa !128
  %2038 = icmp ne i8 %2037, 0
  br i1 %2038, label %2040, label %2039

2039:                                             ; preds = %2035
  store i32 5, ptr %19, align 4
  br label %2066

2040:                                             ; preds = %2035
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #14
  %2041 = load ptr, ptr %109, align 8, !tbaa !5
  %2042 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %110, ptr noundef %2041, ptr noundef null)
  %2043 = load ptr, ptr %109, align 8, !tbaa !5
  %2044 = sext i32 %2042 to i64
  %2045 = getelementptr inbounds i8, ptr %2043, i64 %2044
  store ptr %2045, ptr %109, align 8, !tbaa !5
  %2046 = load i32, ptr %110, align 4, !tbaa !9
  %2047 = icmp eq i32 %2046, 0
  br i1 %2047, label %2048, label %2049

2048:                                             ; preds = %2040
  store i32 5, ptr %19, align 4
  br label %2063

2049:                                             ; preds = %2040
  %2050 = load i32, ptr %15, align 4, !tbaa !9
  %2051 = load ptr, ptr %16, align 8, !tbaa !5
  %2052 = load ptr, ptr %17, align 8, !tbaa !5
  %2053 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %110, i32 noundef %2050, ptr noundef %2051, ptr noundef %2052, i32 noundef 4)
  br i1 %2053, label %2055, label %2054

2054:                                             ; preds = %2049
  store i32 6, ptr %19, align 4
  br label %2063, !llvm.loop !170

2055:                                             ; preds = %2049
  %2056 = load i32, ptr %110, align 4, !tbaa !9
  %2057 = trunc i32 %2056 to i16
  %2058 = load ptr, ptr %107, align 8, !tbaa !5
  %2059 = load i32, ptr %108, align 4, !tbaa !9
  %2060 = add nsw i32 %2059, 1
  store i32 %2060, ptr %108, align 4, !tbaa !9
  %2061 = sext i32 %2059 to i64
  %2062 = getelementptr inbounds i16, ptr %2058, i64 %2061
  store i16 %2057, ptr %2062, align 2, !tbaa !151
  store i32 0, ptr %19, align 4
  br label %2063

2063:                                             ; preds = %2055, %2054, %2048
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #14
  %2064 = load i32, ptr %19, align 4
  switch i32 %2064, label %2066 [
    i32 0, label %2065
    i32 6, label %2035
  ]

2065:                                             ; preds = %2063
  br label %2035, !llvm.loop !170

2066:                                             ; preds = %2063, %2039
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #14
  br label %2067

2067:                                             ; preds = %2066
  %2068 = load ptr, ptr %107, align 8, !tbaa !5
  %2069 = load i32, ptr %108, align 4, !tbaa !9
  %2070 = sext i32 %2069 to i64
  %2071 = getelementptr inbounds i16, ptr %2068, i64 %2070
  store i16 0, ptr %2071, align 2, !tbaa !151
  %2072 = load i32, ptr %108, align 4, !tbaa !9
  %2073 = icmp sgt i32 %2072, 0
  br i1 %2073, label %2074, label %2083

2074:                                             ; preds = %2067
  %2075 = load ptr, ptr %47, align 8, !tbaa !5
  %2076 = load ptr, ptr %47, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2076, i32 0, i32 12
  %2078 = load ptr, ptr %107, align 8, !tbaa !5
  %2079 = load i32, ptr %108, align 4, !tbaa !9
  %2080 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2075, ptr noundef %2077, ptr noundef %2078, i32 noundef %2079)
  %2081 = load ptr, ptr %47, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2081, i32 0, i32 14
  store i8 1, ptr %2082, align 4, !tbaa !156
  br label %2083

2083:                                             ; preds = %2074, %2067
  %2084 = load ptr, ptr %107, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2084)
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #14
  br label %2085

2085:                                             ; preds = %2083, %2021
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #14
  br label %2086

2086:                                             ; preds = %2085, %2018
  br label %2087

2087:                                             ; preds = %2086, %2017
  br label %2088

2088:                                             ; preds = %2087, %1914
  br label %2089

2089:                                             ; preds = %2088, %1904
  br label %2090

2090:                                             ; preds = %2089, %1897
  br label %2091

2091:                                             ; preds = %2090, %1880
  br label %2092

2092:                                             ; preds = %2091, %1819
  br label %2093

2093:                                             ; preds = %2092, %1780
  br label %2094

2094:                                             ; preds = %2093, %1770
  br label %2095

2095:                                             ; preds = %2094, %1754
  br label %2096

2096:                                             ; preds = %2095, %1729
  br label %2097

2097:                                             ; preds = %2096, %1712
  br label %2098

2098:                                             ; preds = %2097, %1706
  br label %2099

2099:                                             ; preds = %2098, %1675
  br label %2100

2100:                                             ; preds = %2099, %1642
  br label %2101

2101:                                             ; preds = %2100, %1626
  %2102 = load ptr, ptr %47, align 8, !tbaa !5
  %2103 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %2102)
  br i1 %2103, label %2104, label %2107

2104:                                             ; preds = %2101
  %2105 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2106 = trunc i8 %2105 to i1
  br label %2107

2107:                                             ; preds = %2104, %2101
  %2108 = phi i1 [ false, %2101 ], [ %2106, %2104 ]
  %2109 = zext i1 %2108 to i32
  %2110 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2111 = trunc i8 %2110 to i1
  %2112 = zext i1 %2111 to i32
  %2113 = or i32 %2112, %2109
  %2114 = icmp ne i32 %2113, 0
  %2115 = zext i1 %2114 to i8
  store i8 %2115, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #14
  br label %2116

2116:                                             ; preds = %2107, %1413, %1408, %1402
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #14
  store ptr null, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #14
  store i32 0, ptr %112, align 4, !tbaa !9
  %2117 = load ptr, ptr %20, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.ImGuiContext, ptr %2117, i32 0, i32 44
  %2119 = load i32, ptr %2118, align 8, !tbaa !108
  %2120 = load i32, ptr %29, align 4, !tbaa !9
  %2121 = icmp eq i32 %2119, %2120
  br i1 %2121, label %2122, label %2588

2122:                                             ; preds = %2116
  %2123 = load ptr, ptr %47, align 8, !tbaa !5
  %2124 = icmp ne ptr %2123, null
  br i1 %2124, label %2125, label %2126

2125:                                             ; preds = %2122
  br label %2128

2126:                                             ; preds = %2122
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.4, i32 noundef 4439, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2127:                                             ; No predecessors!
  br label %2128

2128:                                             ; preds = %2127, %2125
  %2129 = load i8, ptr %82, align 1, !tbaa !42, !range !40, !noundef !41
  %2130 = trunc i8 %2129 to i1
  br i1 %2130, label %2131, label %2205

2131:                                             ; preds = %2128
  %2132 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2133 = trunc i8 %2132 to i1
  br i1 %2133, label %2205, label %2134

2134:                                             ; preds = %2131
  %2135 = load i32, ptr %15, align 4, !tbaa !9
  %2136 = and i32 %2135, 1048576
  %2137 = icmp ne i32 %2136, 0
  br i1 %2137, label %2138, label %2142

2138:                                             ; preds = %2134
  store ptr @.str, ptr %111, align 8, !tbaa !5
  store i32 0, ptr %112, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %113) #14
  %2139 = load ptr, ptr %47, align 8, !tbaa !5
  %2140 = load ptr, ptr %47, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2140, i32 0, i32 12
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2139, ptr noundef %2141, ptr noundef %113, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 2, ptr %113) #14
  br label %2204

2142:                                             ; preds = %2134
  %2143 = load ptr, ptr %12, align 8, !tbaa !5
  %2144 = load ptr, ptr %47, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2144, i32 0, i32 7
  %2146 = getelementptr inbounds %struct.ImVector.29, ptr %2145, i32 0, i32 2
  %2147 = load ptr, ptr %2146, align 8, !tbaa !115
  %2148 = call i32 @strcmp(ptr noundef %2143, ptr noundef %2147) #16
  %2149 = icmp ne i32 %2148, 0
  br i1 %2149, label %2150, label %2203

2150:                                             ; preds = %2142
  %2151 = load ptr, ptr %47, align 8, !tbaa !5
  %2152 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2151, i32 0, i32 7
  %2153 = getelementptr inbounds %struct.ImVector.29, ptr %2152, i32 0, i32 2
  %2154 = load ptr, ptr %2153, align 8, !tbaa !115
  store ptr %2154, ptr %111, align 8, !tbaa !5
  %2155 = load ptr, ptr %47, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2155, i32 0, i32 7
  %2157 = getelementptr inbounds %struct.ImVector.29, ptr %2156, i32 0, i32 0
  %2158 = load i32, ptr %2157, align 8, !tbaa !171
  %2159 = sub nsw i32 %2158, 1
  store i32 %2159, ptr %112, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %114) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114)
  %2160 = load i32, ptr %112, align 4, !tbaa !9
  %2161 = icmp sgt i32 %2160, 0
  br i1 %2161, label %2162, label %2187

2162:                                             ; preds = %2150
  %2163 = load ptr, ptr %111, align 8, !tbaa !5
  %2164 = load ptr, ptr %111, align 8, !tbaa !5
  %2165 = load i32, ptr %112, align 4, !tbaa !9
  %2166 = sext i32 %2165 to i64
  %2167 = getelementptr inbounds i8, ptr %2164, i64 %2166
  %2168 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2163, ptr noundef %2167)
          to label %2169 unwind label %2183

2169:                                             ; preds = %2162
  %2170 = add nsw i32 %2168, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %114, i32 noundef %2170)
          to label %2171 unwind label %2183

2171:                                             ; preds = %2169
  %2172 = getelementptr inbounds %struct.ImVector.5, ptr %114, i32 0, i32 2
  %2173 = load ptr, ptr %2172, align 8, !tbaa !172
  %2174 = getelementptr inbounds %struct.ImVector.5, ptr %114, i32 0, i32 0
  %2175 = load i32, ptr %2174, align 8, !tbaa !173
  %2176 = load ptr, ptr %111, align 8, !tbaa !5
  %2177 = load ptr, ptr %111, align 8, !tbaa !5
  %2178 = load i32, ptr %112, align 4, !tbaa !9
  %2179 = sext i32 %2178 to i64
  %2180 = getelementptr inbounds i8, ptr %2177, i64 %2179
  %2181 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2173, i32 noundef %2175, ptr noundef %2176, ptr noundef %2180, ptr noundef null)
          to label %2182 unwind label %2183

2182:                                             ; preds = %2171
  br label %2187

2183:                                             ; preds = %2200, %2171, %2169, %2162
  %2184 = landingpad { ptr, i32 }
          cleanup
  %2185 = extractvalue { ptr, i32 } %2184, 0
  store ptr %2185, ptr %115, align 8
  %2186 = extractvalue { ptr, i32 } %2184, 1
  store i32 %2186, ptr %116, align 4
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 60, ptr %41) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  br label %3500

2187:                                             ; preds = %2182, %2150
  %2188 = load ptr, ptr %47, align 8, !tbaa !5
  %2189 = load ptr, ptr %47, align 8, !tbaa !5
  %2190 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2189, i32 0, i32 12
  %2191 = getelementptr inbounds %struct.ImVector.5, ptr %114, i32 0, i32 2
  %2192 = load ptr, ptr %2191, align 8, !tbaa !172
  %2193 = load i32, ptr %112, align 4, !tbaa !9
  %2194 = icmp sgt i32 %2193, 0
  br i1 %2194, label %2195, label %2199

2195:                                             ; preds = %2187
  %2196 = getelementptr inbounds %struct.ImVector.5, ptr %114, i32 0, i32 0
  %2197 = load i32, ptr %2196, align 8, !tbaa !173
  %2198 = sub nsw i32 %2197, 1
  br label %2200

2199:                                             ; preds = %2187
  br label %2200

2200:                                             ; preds = %2199, %2195
  %2201 = phi i32 [ %2198, %2195 ], [ 0, %2199 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2188, ptr noundef %2190, ptr noundef %2192, i32 noundef %2201)
          to label %2202 unwind label %2183

2202:                                             ; preds = %2200
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #14
  br label %2203

2203:                                             ; preds = %2202, %2142
  br label %2204

2204:                                             ; preds = %2203, %2138
  br label %2205

2205:                                             ; preds = %2204, %2131, %2128
  %2206 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2207 = trunc i8 %2206 to i1
  br i1 %2207, label %2232, label %2208

2208:                                             ; preds = %2205
  %2209 = load ptr, ptr %47, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2209, i32 0, i32 8
  store i8 1, ptr %2210, align 8, !tbaa !118
  %2211 = load ptr, ptr %47, align 8, !tbaa !5
  %2212 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2211, i32 0, i32 6
  %2213 = load ptr, ptr %47, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2213, i32 0, i32 5
  %2215 = getelementptr inbounds %struct.ImVector.5, ptr %2214, i32 0, i32 0
  %2216 = load i32, ptr %2215, align 8, !tbaa !127
  %2217 = mul nsw i32 %2216, 4
  %2218 = add nsw i32 %2217, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2212, i32 noundef %2218)
  %2219 = load ptr, ptr %47, align 8, !tbaa !5
  %2220 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2219, i32 0, i32 6
  %2221 = getelementptr inbounds %struct.ImVector.29, ptr %2220, i32 0, i32 2
  %2222 = load ptr, ptr %2221, align 8, !tbaa !119
  %2223 = load ptr, ptr %47, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2223, i32 0, i32 6
  %2225 = getelementptr inbounds %struct.ImVector.29, ptr %2224, i32 0, i32 0
  %2226 = load i32, ptr %2225, align 8, !tbaa !174
  %2227 = load ptr, ptr %47, align 8, !tbaa !5
  %2228 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2227, i32 0, i32 5
  %2229 = getelementptr inbounds %struct.ImVector.5, ptr %2228, i32 0, i32 2
  %2230 = load ptr, ptr %2229, align 8, !tbaa !120
  %2231 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2222, i32 noundef %2226, ptr noundef %2230, ptr noundef null)
  br label %2232

2232:                                             ; preds = %2208, %2205
  call void @llvm.lifetime.start.p0(i64 1, ptr %117) #14
  %2233 = load i8, ptr %82, align 1, !tbaa !42, !range !40, !noundef !41
  %2234 = trunc i8 %2233 to i1
  br i1 %2234, label %2235, label %2244

2235:                                             ; preds = %2232
  %2236 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %2237 = trunc i8 %2236 to i1
  br i1 %2237, label %2238, label %2242

2238:                                             ; preds = %2235
  %2239 = load i32, ptr %15, align 4, !tbaa !9
  %2240 = and i32 %2239, 32
  %2241 = icmp ne i32 %2240, 0
  br label %2242

2242:                                             ; preds = %2238, %2235
  %2243 = phi i1 [ false, %2235 ], [ %2241, %2238 ]
  br label %2244

2244:                                             ; preds = %2242, %2232
  %2245 = phi i1 [ true, %2232 ], [ %2243, %2242 ]
  %2246 = zext i1 %2245 to i8
  store i8 %2246, ptr %117, align 1, !tbaa !42
  %2247 = load i8, ptr %117, align 1, !tbaa !42, !range !40, !noundef !41
  %2248 = trunc i8 %2247 to i1
  br i1 %2248, label %2249, label %2587

2249:                                             ; preds = %2244
  %2250 = load i32, ptr %15, align 4, !tbaa !9
  %2251 = and i32 %2250, 524736
  %2252 = icmp ne i32 %2251, 0
  br i1 %2252, label %2253, label %2567

2253:                                             ; preds = %2249
  %2254 = load ptr, ptr %16, align 8, !tbaa !5
  %2255 = icmp ne ptr %2254, null
  br i1 %2255, label %2256, label %2257

2256:                                             ; preds = %2253
  br label %2259

2257:                                             ; preds = %2253
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.4, i32 noundef 4488, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2258:                                             ; No predecessors!
  br label %2259

2259:                                             ; preds = %2258, %2256
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #14
  store i32 0, ptr %118, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #14
  store i32 0, ptr %119, align 4, !tbaa !175
  %2260 = load i32, ptr %15, align 4, !tbaa !9
  %2261 = and i32 %2260, 64
  %2262 = icmp ne i32 %2261, 0
  br i1 %2262, label %2263, label %2266

2263:                                             ; preds = %2259
  %2264 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 512, i1 noundef zeroext true)
  br i1 %2264, label %2265, label %2266

2265:                                             ; preds = %2263
  store i32 64, ptr %118, align 4, !tbaa !9
  store i32 512, ptr %119, align 4, !tbaa !175
  br label %2299

2266:                                             ; preds = %2263, %2259
  %2267 = load i32, ptr %15, align 4, !tbaa !9
  %2268 = and i32 %2267, 128
  %2269 = icmp ne i32 %2268, 0
  br i1 %2269, label %2270, label %2273

2270:                                             ; preds = %2266
  %2271 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %2271, label %2272, label %2273

2272:                                             ; preds = %2270
  store i32 128, ptr %118, align 4, !tbaa !9
  store i32 515, ptr %119, align 4, !tbaa !175
  br label %2298

2273:                                             ; preds = %2270, %2266
  %2274 = load i32, ptr %15, align 4, !tbaa !9
  %2275 = and i32 %2274, 128
  %2276 = icmp ne i32 %2275, 0
  br i1 %2276, label %2277, label %2280

2277:                                             ; preds = %2273
  %2278 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %2278, label %2279, label %2280

2279:                                             ; preds = %2277
  store i32 128, ptr %118, align 4, !tbaa !9
  store i32 516, ptr %119, align 4, !tbaa !175
  br label %2297

2280:                                             ; preds = %2277, %2273
  %2281 = load i32, ptr %15, align 4, !tbaa !9
  %2282 = and i32 %2281, 524288
  %2283 = icmp ne i32 %2282, 0
  br i1 %2283, label %2284, label %2290

2284:                                             ; preds = %2280
  %2285 = load ptr, ptr %47, align 8, !tbaa !5
  %2286 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2285, i32 0, i32 16
  %2287 = load i8, ptr %2286, align 2, !tbaa !139, !range !40, !noundef !41
  %2288 = trunc i8 %2287 to i1
  br i1 %2288, label %2289, label %2290

2289:                                             ; preds = %2284
  store i32 524288, ptr %118, align 4, !tbaa !9
  br label %2296

2290:                                             ; preds = %2284, %2280
  %2291 = load i32, ptr %15, align 4, !tbaa !9
  %2292 = and i32 %2291, 256
  %2293 = icmp ne i32 %2292, 0
  br i1 %2293, label %2294, label %2295

2294:                                             ; preds = %2290
  store i32 256, ptr %118, align 4, !tbaa !9
  br label %2295

2295:                                             ; preds = %2294, %2290
  br label %2296

2296:                                             ; preds = %2295, %2289
  br label %2297

2297:                                             ; preds = %2296, %2279
  br label %2298

2298:                                             ; preds = %2297, %2272
  br label %2299

2299:                                             ; preds = %2298, %2265
  %2300 = load i32, ptr %118, align 4, !tbaa !9
  %2301 = icmp ne i32 %2300, 0
  br i1 %2301, label %2302, label %2566

2302:                                             ; preds = %2299
  call void @llvm.lifetime.start.p0(i64 56, ptr %120) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %120)
  call void @llvm.memset.p0.i64(ptr align 8 %120, i8 0, i64 56, i1 false)
  %2303 = load i32, ptr %118, align 4, !tbaa !9
  %2304 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 0
  store i32 %2303, ptr %2304, align 8, !tbaa !177
  %2305 = load i32, ptr %15, align 4, !tbaa !9
  %2306 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 1
  store i32 %2305, ptr %2306, align 4, !tbaa !179
  %2307 = load ptr, ptr %17, align 8, !tbaa !5
  %2308 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 2
  store ptr %2307, ptr %2308, align 8, !tbaa !180
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #14
  %2309 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2310 = trunc i8 %2309 to i1
  br i1 %2310, label %2311, label %2313

2311:                                             ; preds = %2302
  %2312 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2318

2313:                                             ; preds = %2302
  %2314 = load ptr, ptr %47, align 8, !tbaa !5
  %2315 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2314, i32 0, i32 6
  %2316 = getelementptr inbounds %struct.ImVector.29, ptr %2315, i32 0, i32 2
  %2317 = load ptr, ptr %2316, align 8, !tbaa !119
  br label %2318

2318:                                             ; preds = %2313, %2311
  %2319 = phi ptr [ %2312, %2311 ], [ %2317, %2313 ]
  store ptr %2319, ptr %121, align 8, !tbaa !5
  %2320 = load i32, ptr %119, align 4, !tbaa !175
  %2321 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 4
  store i32 %2320, ptr %2321, align 4, !tbaa !181
  %2322 = load ptr, ptr %121, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  store ptr %2322, ptr %2323, align 8, !tbaa !182
  %2324 = load ptr, ptr %47, align 8, !tbaa !5
  %2325 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2324, i32 0, i32 3
  %2326 = load i32, ptr %2325, align 8, !tbaa !117
  %2327 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 6
  store i32 %2326, ptr %2327, align 8, !tbaa !183
  %2328 = load ptr, ptr %47, align 8, !tbaa !5
  %2329 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2328, i32 0, i32 10
  %2330 = load i32, ptr %2329, align 4, !tbaa !140
  %2331 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 7
  store i32 %2330, ptr %2331, align 4, !tbaa !184
  %2332 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 8
  store i8 0, ptr %2332, align 8, !tbaa !185
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #14
  %2333 = load ptr, ptr %47, align 8, !tbaa !5
  %2334 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2333, i32 0, i32 5
  %2335 = getelementptr inbounds %struct.ImVector.5, ptr %2334, i32 0, i32 2
  %2336 = load ptr, ptr %2335, align 8, !tbaa !120
  store ptr %2336, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #14
  %2337 = load ptr, ptr %122, align 8, !tbaa !5
  %2338 = load ptr, ptr %122, align 8, !tbaa !5
  %2339 = load ptr, ptr %47, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2339, i32 0, i32 12
  %2341 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2340, i32 0, i32 0
  %2342 = load i32, ptr %2341, align 4, !tbaa !153
  %2343 = sext i32 %2342 to i64
  %2344 = getelementptr inbounds i16, ptr %2338, i64 %2343
  %2345 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2337, ptr noundef %2344)
  %2346 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 9
  store i32 %2345, ptr %2346, align 4, !tbaa !186
  store i32 %2345, ptr %123, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #14
  %2347 = load ptr, ptr %122, align 8, !tbaa !5
  %2348 = load ptr, ptr %122, align 8, !tbaa !5
  %2349 = load ptr, ptr %47, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2349, i32 0, i32 12
  %2351 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2350, i32 0, i32 1
  %2352 = load i32, ptr %2351, align 4, !tbaa !154
  %2353 = sext i32 %2352 to i64
  %2354 = getelementptr inbounds i16, ptr %2348, i64 %2353
  %2355 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2347, ptr noundef %2354)
  %2356 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 10
  store i32 %2355, ptr %2356, align 8, !tbaa !187
  store i32 %2355, ptr %124, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #14
  %2357 = load ptr, ptr %122, align 8, !tbaa !5
  %2358 = load ptr, ptr %122, align 8, !tbaa !5
  %2359 = load ptr, ptr %47, align 8, !tbaa !5
  %2360 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2359, i32 0, i32 12
  %2361 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2360, i32 0, i32 2
  %2362 = load i32, ptr %2361, align 4, !tbaa !155
  %2363 = sext i32 %2362 to i64
  %2364 = getelementptr inbounds i16, ptr %2358, i64 %2363
  %2365 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2357, ptr noundef %2364)
  %2366 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 11
  store i32 %2365, ptr %2366, align 4, !tbaa !188
  store i32 %2365, ptr %125, align 4, !tbaa !9
  %2367 = load ptr, ptr %16, align 8, !tbaa !5
  %2368 = call noundef i32 %2367(ptr noundef %120)
  %2369 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2370 = trunc i8 %2369 to i1
  br i1 %2370, label %2371, label %2373

2371:                                             ; preds = %2318
  %2372 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2378

2373:                                             ; preds = %2318
  %2374 = load ptr, ptr %47, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2374, i32 0, i32 6
  %2376 = getelementptr inbounds %struct.ImVector.29, ptr %2375, i32 0, i32 2
  %2377 = load ptr, ptr %2376, align 8, !tbaa !119
  br label %2378

2378:                                             ; preds = %2373, %2371
  %2379 = phi ptr [ %2372, %2371 ], [ %2377, %2373 ]
  store ptr %2379, ptr %121, align 8, !tbaa !5
  %2380 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2381 = load ptr, ptr %2380, align 8, !tbaa !182
  %2382 = load ptr, ptr %121, align 8, !tbaa !5
  %2383 = icmp eq ptr %2381, %2382
  br i1 %2383, label %2384, label %2385

2384:                                             ; preds = %2378
  br label %2387

2385:                                             ; preds = %2378
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.4, i32 noundef 4543, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2386:                                             ; No predecessors!
  br label %2387

2387:                                             ; preds = %2386, %2384
  %2388 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 7
  %2389 = load i32, ptr %2388, align 4, !tbaa !184
  %2390 = load ptr, ptr %47, align 8, !tbaa !5
  %2391 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2390, i32 0, i32 10
  %2392 = load i32, ptr %2391, align 4, !tbaa !140
  %2393 = icmp eq i32 %2389, %2392
  br i1 %2393, label %2394, label %2395

2394:                                             ; preds = %2387
  br label %2397

2395:                                             ; preds = %2387
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.4, i32 noundef 4544, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2396:                                             ; No predecessors!
  br label %2397

2397:                                             ; preds = %2396, %2394
  %2398 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 1
  %2399 = load i32, ptr %2398, align 4, !tbaa !179
  %2400 = load i32, ptr %15, align 4, !tbaa !9
  %2401 = icmp eq i32 %2399, %2400
  br i1 %2401, label %2402, label %2403

2402:                                             ; preds = %2397
  br label %2405

2403:                                             ; preds = %2397
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.4, i32 noundef 4545, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2404:                                             ; No predecessors!
  br label %2405

2405:                                             ; preds = %2404, %2402
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #14
  %2406 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 8
  %2407 = load i8, ptr %2406, align 8, !tbaa !185, !range !40, !noundef !41
  %2408 = trunc i8 %2407 to i1
  %2409 = zext i1 %2408 to i8
  store i8 %2409, ptr %126, align 1, !tbaa !42
  %2410 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 9
  %2411 = load i32, ptr %2410, align 4, !tbaa !186
  %2412 = load i32, ptr %123, align 4, !tbaa !9
  %2413 = icmp ne i32 %2411, %2412
  br i1 %2413, label %2417, label %2414

2414:                                             ; preds = %2405
  %2415 = load i8, ptr %126, align 1, !tbaa !42, !range !40, !noundef !41
  %2416 = trunc i8 %2415 to i1
  br i1 %2416, label %2417, label %2432

2417:                                             ; preds = %2414, %2405
  %2418 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2419 = load ptr, ptr %2418, align 8, !tbaa !182
  %2420 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2421 = load ptr, ptr %2420, align 8, !tbaa !182
  %2422 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 9
  %2423 = load i32, ptr %2422, align 4, !tbaa !186
  %2424 = sext i32 %2423 to i64
  %2425 = getelementptr inbounds i8, ptr %2421, i64 %2424
  %2426 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2419, ptr noundef %2425)
  %2427 = load ptr, ptr %47, align 8, !tbaa !5
  %2428 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2427, i32 0, i32 12
  %2429 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2428, i32 0, i32 0
  store i32 %2426, ptr %2429, align 4, !tbaa !153
  %2430 = load ptr, ptr %47, align 8, !tbaa !5
  %2431 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2430, i32 0, i32 14
  store i8 1, ptr %2431, align 4, !tbaa !156
  br label %2432

2432:                                             ; preds = %2417, %2414
  %2433 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 10
  %2434 = load i32, ptr %2433, align 8, !tbaa !187
  %2435 = load i32, ptr %124, align 4, !tbaa !9
  %2436 = icmp ne i32 %2434, %2435
  br i1 %2436, label %2440, label %2437

2437:                                             ; preds = %2432
  %2438 = load i8, ptr %126, align 1, !tbaa !42, !range !40, !noundef !41
  %2439 = trunc i8 %2438 to i1
  br i1 %2439, label %2440, label %2466

2440:                                             ; preds = %2437, %2432
  %2441 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 10
  %2442 = load i32, ptr %2441, align 8, !tbaa !187
  %2443 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 9
  %2444 = load i32, ptr %2443, align 4, !tbaa !186
  %2445 = icmp eq i32 %2442, %2444
  br i1 %2445, label %2446, label %2451

2446:                                             ; preds = %2440
  %2447 = load ptr, ptr %47, align 8, !tbaa !5
  %2448 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2447, i32 0, i32 12
  %2449 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2448, i32 0, i32 0
  %2450 = load i32, ptr %2449, align 4, !tbaa !153
  br label %2461

2451:                                             ; preds = %2440
  %2452 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2453 = load ptr, ptr %2452, align 8, !tbaa !182
  %2454 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2455 = load ptr, ptr %2454, align 8, !tbaa !182
  %2456 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 10
  %2457 = load i32, ptr %2456, align 8, !tbaa !187
  %2458 = sext i32 %2457 to i64
  %2459 = getelementptr inbounds i8, ptr %2455, i64 %2458
  %2460 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2453, ptr noundef %2459)
  br label %2461

2461:                                             ; preds = %2451, %2446
  %2462 = phi i32 [ %2450, %2446 ], [ %2460, %2451 ]
  %2463 = load ptr, ptr %47, align 8, !tbaa !5
  %2464 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2463, i32 0, i32 12
  %2465 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2464, i32 0, i32 1
  store i32 %2462, ptr %2465, align 4, !tbaa !154
  br label %2466

2466:                                             ; preds = %2461, %2437
  %2467 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 11
  %2468 = load i32, ptr %2467, align 4, !tbaa !188
  %2469 = load i32, ptr %125, align 4, !tbaa !9
  %2470 = icmp ne i32 %2468, %2469
  br i1 %2470, label %2474, label %2471

2471:                                             ; preds = %2466
  %2472 = load i8, ptr %126, align 1, !tbaa !42, !range !40, !noundef !41
  %2473 = trunc i8 %2472 to i1
  br i1 %2473, label %2474, label %2500

2474:                                             ; preds = %2471, %2466
  %2475 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 11
  %2476 = load i32, ptr %2475, align 4, !tbaa !188
  %2477 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 10
  %2478 = load i32, ptr %2477, align 8, !tbaa !187
  %2479 = icmp eq i32 %2476, %2478
  br i1 %2479, label %2480, label %2485

2480:                                             ; preds = %2474
  %2481 = load ptr, ptr %47, align 8, !tbaa !5
  %2482 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2481, i32 0, i32 12
  %2483 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2482, i32 0, i32 1
  %2484 = load i32, ptr %2483, align 4, !tbaa !154
  br label %2495

2485:                                             ; preds = %2474
  %2486 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2487 = load ptr, ptr %2486, align 8, !tbaa !182
  %2488 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2489 = load ptr, ptr %2488, align 8, !tbaa !182
  %2490 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 11
  %2491 = load i32, ptr %2490, align 4, !tbaa !188
  %2492 = sext i32 %2491 to i64
  %2493 = getelementptr inbounds i8, ptr %2489, i64 %2492
  %2494 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2487, ptr noundef %2493)
  br label %2495

2495:                                             ; preds = %2485, %2480
  %2496 = phi i32 [ %2484, %2480 ], [ %2494, %2485 ]
  %2497 = load ptr, ptr %47, align 8, !tbaa !5
  %2498 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2497, i32 0, i32 12
  %2499 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2498, i32 0, i32 2
  store i32 %2496, ptr %2499, align 4, !tbaa !155
  br label %2500

2500:                                             ; preds = %2495, %2471
  %2501 = load i8, ptr %126, align 1, !tbaa !42, !range !40, !noundef !41
  %2502 = trunc i8 %2501 to i1
  br i1 %2502, label %2503, label %2565

2503:                                             ; preds = %2500
  %2504 = load i32, ptr %15, align 4, !tbaa !9
  %2505 = and i32 %2504, 16384
  %2506 = icmp eq i32 %2505, 0
  br i1 %2506, label %2507, label %2508

2507:                                             ; preds = %2503
  br label %2510

2508:                                             ; preds = %2503
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.4, i32 noundef 4552, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2509:                                             ; No predecessors!
  br label %2510

2510:                                             ; preds = %2509, %2507
  %2511 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 6
  %2512 = load i32, ptr %2511, align 8, !tbaa !183
  %2513 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2514 = load ptr, ptr %2513, align 8, !tbaa !182
  %2515 = call i64 @strlen(ptr noundef %2514) #16
  %2516 = trunc i64 %2515 to i32
  %2517 = icmp eq i32 %2512, %2516
  br i1 %2517, label %2518, label %2519

2518:                                             ; preds = %2510
  br label %2521

2519:                                             ; preds = %2510
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.4, i32 noundef 4553, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2520:                                             ; No predecessors!
  br label %2521

2521:                                             ; preds = %2520, %2518
  %2522 = load ptr, ptr %47, align 8, !tbaa !5
  %2523 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2524 = load ptr, ptr %2523, align 8, !tbaa !182
  %2525 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 6
  %2526 = load i32, ptr %2525, align 8, !tbaa !183
  call void @_ZL44InputTextReconcileUndoStateAfterUserCallbackP19ImGuiInputTextStatePKci(ptr noundef %2522, ptr noundef %2524, i32 noundef %2526)
  %2527 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 6
  %2528 = load i32, ptr %2527, align 8, !tbaa !183
  %2529 = load i32, ptr %71, align 4, !tbaa !9
  %2530 = icmp sgt i32 %2528, %2529
  br i1 %2530, label %2531, label %2546

2531:                                             ; preds = %2521
  %2532 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2533 = trunc i8 %2532 to i1
  br i1 %2533, label %2534, label %2546

2534:                                             ; preds = %2531
  %2535 = load ptr, ptr %47, align 8, !tbaa !5
  %2536 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2535, i32 0, i32 5
  %2537 = load ptr, ptr %47, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2537, i32 0, i32 5
  %2539 = getelementptr inbounds %struct.ImVector.5, ptr %2538, i32 0, i32 0
  %2540 = load i32, ptr %2539, align 8, !tbaa !127
  %2541 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 6
  %2542 = load i32, ptr %2541, align 8, !tbaa !183
  %2543 = load i32, ptr %71, align 4, !tbaa !9
  %2544 = sub nsw i32 %2542, %2543
  %2545 = add nsw i32 %2540, %2544
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2536, i32 noundef %2545)
  br label %2546

2546:                                             ; preds = %2534, %2531, %2521
  %2547 = load ptr, ptr %47, align 8, !tbaa !5
  %2548 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2547, i32 0, i32 5
  %2549 = getelementptr inbounds %struct.ImVector.5, ptr %2548, i32 0, i32 2
  %2550 = load ptr, ptr %2549, align 8, !tbaa !120
  %2551 = load ptr, ptr %47, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2551, i32 0, i32 5
  %2553 = getelementptr inbounds %struct.ImVector.5, ptr %2552, i32 0, i32 0
  %2554 = load i32, ptr %2553, align 8, !tbaa !127
  %2555 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 5
  %2556 = load ptr, ptr %2555, align 8, !tbaa !182
  %2557 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2550, i32 noundef %2554, ptr noundef %2556, ptr noundef null, ptr noundef null)
  %2558 = load ptr, ptr %47, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2558, i32 0, i32 2
  store i32 %2557, ptr %2559, align 4, !tbaa !121
  %2560 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %120, i32 0, i32 6
  %2561 = load i32, ptr %2560, align 8, !tbaa !183
  %2562 = load ptr, ptr %47, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2562, i32 0, i32 3
  store i32 %2561, ptr %2563, align 8, !tbaa !117
  %2564 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %2564)
  br label %2565

2565:                                             ; preds = %2546, %2500
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #14
  call void @llvm.lifetime.end.p0(i64 56, ptr %120) #14
  br label %2566

2566:                                             ; preds = %2565, %2299
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #14
  br label %2567

2567:                                             ; preds = %2566, %2249
  %2568 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2569 = trunc i8 %2568 to i1
  br i1 %2569, label %2586, label %2570

2570:                                             ; preds = %2567
  %2571 = load ptr, ptr %47, align 8, !tbaa !5
  %2572 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2571, i32 0, i32 6
  %2573 = getelementptr inbounds %struct.ImVector.29, ptr %2572, i32 0, i32 2
  %2574 = load ptr, ptr %2573, align 8, !tbaa !119
  %2575 = load ptr, ptr %12, align 8, !tbaa !5
  %2576 = call i32 @strcmp(ptr noundef %2574, ptr noundef %2575) #16
  %2577 = icmp ne i32 %2576, 0
  br i1 %2577, label %2578, label %2586

2578:                                             ; preds = %2570
  %2579 = load ptr, ptr %47, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2579, i32 0, i32 6
  %2581 = getelementptr inbounds %struct.ImVector.29, ptr %2580, i32 0, i32 2
  %2582 = load ptr, ptr %2581, align 8, !tbaa !119
  store ptr %2582, ptr %111, align 8, !tbaa !5
  %2583 = load ptr, ptr %47, align 8, !tbaa !5
  %2584 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2583, i32 0, i32 3
  %2585 = load i32, ptr %2584, align 8, !tbaa !117
  store i32 %2585, ptr %112, align 4, !tbaa !9
  br label %2586

2586:                                             ; preds = %2578, %2570, %2567
  br label %2587

2587:                                             ; preds = %2586, %2244
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #14
  br label %2588

2588:                                             ; preds = %2587, %2116
  %2589 = load ptr, ptr %111, align 8, !tbaa !5
  %2590 = icmp ne ptr %2589, null
  br i1 %2590, label %2591, label %2641

2591:                                             ; preds = %2588
  %2592 = load i32, ptr %112, align 4, !tbaa !9
  %2593 = icmp sge i32 %2592, 0
  br i1 %2593, label %2594, label %2595

2594:                                             ; preds = %2591
  br label %2597

2595:                                             ; preds = %2591
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str.4, i32 noundef 4579, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2596:                                             ; No predecessors!
  br label %2597

2597:                                             ; preds = %2596, %2594
  %2598 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2599 = trunc i8 %2598 to i1
  br i1 %2599, label %2600, label %2633

2600:                                             ; preds = %2597
  call void @llvm.lifetime.start.p0(i64 56, ptr %127) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %127)
  %2601 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 0
  store i32 262144, ptr %2601, align 8, !tbaa !177
  %2602 = load i32, ptr %15, align 4, !tbaa !9
  %2603 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 1
  store i32 %2602, ptr %2603, align 4, !tbaa !179
  %2604 = load ptr, ptr %12, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 5
  store ptr %2604, ptr %2605, align 8, !tbaa !182
  %2606 = load i32, ptr %112, align 4, !tbaa !9
  %2607 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 6
  store i32 %2606, ptr %2607, align 8, !tbaa !183
  %2608 = load i32, ptr %13, align 4, !tbaa !9
  %2609 = load i32, ptr %112, align 4, !tbaa !9
  %2610 = add nsw i32 %2609, 1
  %2611 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2608, i32 noundef %2610)
  %2612 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 7
  store i32 %2611, ptr %2612, align 4, !tbaa !184
  %2613 = load ptr, ptr %17, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 2
  store ptr %2613, ptr %2614, align 8, !tbaa !180
  %2615 = load ptr, ptr %16, align 8, !tbaa !5
  %2616 = call noundef i32 %2615(ptr noundef %127)
  %2617 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 5
  %2618 = load ptr, ptr %2617, align 8, !tbaa !182
  store ptr %2618, ptr %12, align 8, !tbaa !5
  %2619 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 7
  %2620 = load i32, ptr %2619, align 4, !tbaa !184
  store i32 %2620, ptr %13, align 4, !tbaa !9
  %2621 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %127, i32 0, i32 6
  %2622 = load i32, ptr %2621, align 8, !tbaa !183
  %2623 = load i32, ptr %13, align 4, !tbaa !9
  %2624 = sub nsw i32 %2623, 1
  %2625 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2622, i32 noundef %2624)
  store i32 %2625, ptr %112, align 4, !tbaa !9
  %2626 = load i32, ptr %112, align 4, !tbaa !9
  %2627 = load i32, ptr %13, align 4, !tbaa !9
  %2628 = icmp sle i32 %2626, %2627
  br i1 %2628, label %2629, label %2630

2629:                                             ; preds = %2600
  br label %2632

2630:                                             ; preds = %2600
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.4, i32 noundef 4593, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2631:                                             ; No predecessors!
  br label %2632

2632:                                             ; preds = %2631, %2629
  call void @llvm.lifetime.end.p0(i64 56, ptr %127) #14
  br label %2633

2633:                                             ; preds = %2632, %2597
  %2634 = load ptr, ptr %12, align 8, !tbaa !5
  %2635 = load ptr, ptr %111, align 8, !tbaa !5
  %2636 = load i32, ptr %112, align 4, !tbaa !9
  %2637 = add nsw i32 %2636, 1
  %2638 = load i32, ptr %13, align 4, !tbaa !9
  %2639 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2637, i32 noundef %2638)
  %2640 = sext i32 %2639 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2634, ptr noundef %2635, i64 noundef %2640)
  store i8 1, ptr %64, align 1, !tbaa !42
  br label %2641

2641:                                             ; preds = %2633, %2588
  %2642 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %2643 = trunc i8 %2642 to i1
  br i1 %2643, label %2644, label %2651

2644:                                             ; preds = %2641
  %2645 = load ptr, ptr %20, align 8, !tbaa !5
  %2646 = getelementptr inbounds %struct.ImGuiContext, ptr %2645, i32 0, i32 44
  %2647 = load i32, ptr %2646, align 8, !tbaa !108
  %2648 = load i32, ptr %29, align 4, !tbaa !9
  %2649 = icmp eq i32 %2647, %2648
  br i1 %2649, label %2650, label %2651

2650:                                             ; preds = %2644
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2651

2651:                                             ; preds = %2650, %2644, %2641
  %2652 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2653 = trunc i8 %2652 to i1
  br i1 %2653, label %2664, label %2654

2654:                                             ; preds = %2651
  %2655 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2655, i32 noundef 1)
  %2656 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %128, ptr align 4 %2656, i64 8, i1 false), !tbaa.struct !43
  %2657 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %129, ptr align 4 %2657, i64 8, i1 false), !tbaa.struct !43
  %2658 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2659 = load ptr, ptr %22, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.ImGuiStyle, ptr %2659, i32 0, i32 13
  %2661 = load float, ptr %2660, align 4, !tbaa !101
  %2662 = load <2 x float>, ptr %128, align 4
  %2663 = load <2 x float>, ptr %129, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2662, <2 x float> %2663, i32 noundef %2658, i1 noundef zeroext true, float noundef %2661)
  br label %2664

2664:                                             ; preds = %2654, %2651
  call void @llvm.lifetime.start.p0(i64 16, ptr %130) #14
  %2665 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2666 = getelementptr inbounds %struct.ImVec2, ptr %2665, i32 0, i32 0
  %2667 = load float, ptr %2666, align 4, !tbaa !145
  %2668 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2669 = getelementptr inbounds %struct.ImVec2, ptr %2668, i32 0, i32 1
  %2670 = load float, ptr %2669, align 4, !tbaa !189
  %2671 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2672 = getelementptr inbounds %struct.ImVec2, ptr %2671, i32 0, i32 0
  %2673 = load float, ptr %2672, align 4, !tbaa !145
  %2674 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2675 = load float, ptr %2674, align 4, !tbaa !97
  %2676 = fadd float %2673, %2675
  %2677 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2678 = getelementptr inbounds %struct.ImVec2, ptr %2677, i32 0, i32 1
  %2679 = load float, ptr %2678, align 4, !tbaa !189
  %2680 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2681 = load float, ptr %2680, align 4, !tbaa !95
  %2682 = fadd float %2679, %2681
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %130, float noundef %2667, float noundef %2670, float noundef %2676, float noundef %2682)
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #14
  %2683 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2684 = trunc i8 %2683 to i1
  br i1 %2684, label %2685, label %2689

2685:                                             ; preds = %2664
  %2686 = load ptr, ptr %38, align 8, !tbaa !5
  %2687 = getelementptr inbounds %struct.ImGuiWindow, ptr %2686, i32 0, i32 61
  %2688 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2687, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %131, ptr align 8 %2688, i64 8, i1 false), !tbaa.struct !43
  br label %2694

2689:                                             ; preds = %2664
  %2690 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2691 = load ptr, ptr %22, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.ImGuiStyle, ptr %2691, i32 0, i32 12
  %2693 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2690, ptr noundef nonnull align 4 dereferenceable(8) %2692)
  store <2 x float> %2693, ptr %131, align 4
  br label %2694

2694:                                             ; preds = %2689, %2685
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %132, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #14
  store i32 2097152, ptr %133, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #14
  %2695 = load i8, ptr %67, align 1, !tbaa !42, !range !40, !noundef !41
  %2696 = trunc i8 %2695 to i1
  br i1 %2696, label %2697, label %2702

2697:                                             ; preds = %2694
  %2698 = load ptr, ptr %47, align 8, !tbaa !5
  %2699 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2698, i32 0, i32 6
  %2700 = getelementptr inbounds %struct.ImVector.29, ptr %2699, i32 0, i32 2
  %2701 = load ptr, ptr %2700, align 8, !tbaa !119
  br label %2704

2702:                                             ; preds = %2694
  %2703 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2704

2704:                                             ; preds = %2702, %2697
  %2705 = phi ptr [ %2701, %2697 ], [ %2703, %2702 ]
  store ptr %2705, ptr %134, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #14
  store ptr null, ptr %135, align 8, !tbaa !5
  %2706 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2707 = trunc i8 %2706 to i1
  br i1 %2707, label %2708, label %2714

2708:                                             ; preds = %2704
  %2709 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2709, ptr %134, align 8, !tbaa !5
  %2710 = load ptr, ptr %11, align 8, !tbaa !5
  %2711 = load ptr, ptr %11, align 8, !tbaa !5
  %2712 = call i64 @strlen(ptr noundef %2711) #16
  %2713 = getelementptr inbounds i8, ptr %2710, i64 %2712
  store ptr %2713, ptr %135, align 8, !tbaa !5
  br label %2714

2714:                                             ; preds = %2708, %2704
  %2715 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2716 = trunc i8 %2715 to i1
  br i1 %2716, label %2720, label %2717

2717:                                             ; preds = %2714
  %2718 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2719 = trunc i8 %2718 to i1
  br i1 %2719, label %2720, label %3306

2720:                                             ; preds = %2717, %2714
  %2721 = load ptr, ptr %47, align 8, !tbaa !5
  %2722 = icmp ne ptr %2721, null
  br i1 %2722, label %2723, label %2724

2723:                                             ; preds = %2720
  br label %2726

2724:                                             ; preds = %2720
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.4, i32 noundef 4633, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2725:                                             ; No predecessors!
  br label %2726

2726:                                             ; preds = %2725, %2723
  %2727 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2728 = trunc i8 %2727 to i1
  br i1 %2728, label %2736, label %2729

2729:                                             ; preds = %2726
  %2730 = load ptr, ptr %134, align 8, !tbaa !5
  %2731 = load ptr, ptr %47, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2731, i32 0, i32 3
  %2733 = load i32, ptr %2732, align 8, !tbaa !117
  %2734 = sext i32 %2733 to i64
  %2735 = getelementptr inbounds i8, ptr %2730, i64 %2734
  store ptr %2735, ptr %135, align 8, !tbaa !5
  br label %2736

2736:                                             ; preds = %2729, %2726
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #14
  %2737 = load ptr, ptr %47, align 8, !tbaa !5
  %2738 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2737, i32 0, i32 5
  %2739 = getelementptr inbounds %struct.ImVector.5, ptr %2738, i32 0, i32 2
  %2740 = load ptr, ptr %2739, align 8, !tbaa !120
  store ptr %2740, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %137)
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %138)
  call void @llvm.lifetime.start.p0(i64 16, ptr %139) #14
  call void @llvm.memset.p0.i64(ptr align 16 %139, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %140, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #14
  store i32 0, ptr %141, align 4, !tbaa !9
  %2741 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2742 = trunc i8 %2741 to i1
  br i1 %2742, label %2743, label %2755

2743:                                             ; preds = %2736
  %2744 = load ptr, ptr %136, align 8, !tbaa !5
  %2745 = load ptr, ptr %47, align 8, !tbaa !5
  %2746 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2745, i32 0, i32 12
  %2747 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2746, i32 0, i32 0
  %2748 = load i32, ptr %2747, align 4, !tbaa !153
  %2749 = sext i32 %2748 to i64
  %2750 = getelementptr inbounds i16, ptr %2744, i64 %2749
  %2751 = getelementptr inbounds [2 x ptr], ptr %139, i64 0, i64 0
  store ptr %2750, ptr %2751, align 16, !tbaa !5
  %2752 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 0
  store i32 -1, ptr %2752, align 4, !tbaa !9
  %2753 = load i32, ptr %141, align 4, !tbaa !9
  %2754 = add nsw i32 %2753, 1
  store i32 %2754, ptr %141, align 4, !tbaa !9
  br label %2755

2755:                                             ; preds = %2743, %2736
  %2756 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2757 = trunc i8 %2756 to i1
  br i1 %2757, label %2758, label %2775

2758:                                             ; preds = %2755
  %2759 = load ptr, ptr %136, align 8, !tbaa !5
  %2760 = load ptr, ptr %47, align 8, !tbaa !5
  %2761 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2760, i32 0, i32 12
  %2762 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2761, i32 0, i32 1
  %2763 = load i32, ptr %2762, align 4, !tbaa !154
  %2764 = load ptr, ptr %47, align 8, !tbaa !5
  %2765 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2764, i32 0, i32 12
  %2766 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2765, i32 0, i32 2
  %2767 = load i32, ptr %2766, align 4, !tbaa !155
  %2768 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2763, i32 noundef %2767)
  %2769 = sext i32 %2768 to i64
  %2770 = getelementptr inbounds i16, ptr %2759, i64 %2769
  %2771 = getelementptr inbounds [2 x ptr], ptr %139, i64 0, i64 1
  store ptr %2770, ptr %2771, align 8, !tbaa !5
  %2772 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 1
  store i32 -1, ptr %2772, align 4, !tbaa !9
  %2773 = load i32, ptr %141, align 4, !tbaa !9
  %2774 = add nsw i32 %2773, 1
  store i32 %2774, ptr %141, align 4, !tbaa !9
  br label %2775

2775:                                             ; preds = %2758, %2755
  %2776 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2777 = trunc i8 %2776 to i1
  %2778 = zext i1 %2777 to i64
  %2779 = select i1 %2777, i32 1, i32 0
  %2780 = load i32, ptr %141, align 4, !tbaa !9
  %2781 = add nsw i32 %2780, %2779
  store i32 %2781, ptr %141, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #14
  store i32 0, ptr %142, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #14
  %2782 = load ptr, ptr %136, align 8, !tbaa !5
  store ptr %2782, ptr %143, align 8, !tbaa !5
  br label %2783

2783:                                             ; preds = %2832, %2775
  %2784 = load ptr, ptr %143, align 8, !tbaa !5
  %2785 = load i16, ptr %2784, align 2, !tbaa !151
  %2786 = zext i16 %2785 to i32
  %2787 = icmp ne i32 %2786, 0
  br i1 %2787, label %2789, label %2788

2788:                                             ; preds = %2783
  store i32 7, ptr %19, align 4
  br label %2835

2789:                                             ; preds = %2783
  %2790 = load ptr, ptr %143, align 8, !tbaa !5
  %2791 = load i16, ptr %2790, align 2, !tbaa !151
  %2792 = zext i16 %2791 to i32
  %2793 = icmp eq i32 %2792, 10
  br i1 %2793, label %2794, label %2831

2794:                                             ; preds = %2789
  %2795 = load i32, ptr %142, align 4, !tbaa !9
  %2796 = add nsw i32 %2795, 1
  store i32 %2796, ptr %142, align 4, !tbaa !9
  %2797 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 0
  %2798 = load i32, ptr %2797, align 4, !tbaa !9
  %2799 = icmp eq i32 %2798, -1
  br i1 %2799, label %2800, label %2813

2800:                                             ; preds = %2794
  %2801 = load ptr, ptr %143, align 8, !tbaa !5
  %2802 = getelementptr inbounds [2 x ptr], ptr %139, i64 0, i64 0
  %2803 = load ptr, ptr %2802, align 16, !tbaa !5
  %2804 = icmp uge ptr %2801, %2803
  br i1 %2804, label %2805, label %2813

2805:                                             ; preds = %2800
  %2806 = load i32, ptr %142, align 4, !tbaa !9
  %2807 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 0
  store i32 %2806, ptr %2807, align 4, !tbaa !9
  %2808 = load i32, ptr %141, align 4, !tbaa !9
  %2809 = add nsw i32 %2808, -1
  store i32 %2809, ptr %141, align 4, !tbaa !9
  %2810 = icmp sle i32 %2809, 0
  br i1 %2810, label %2811, label %2812

2811:                                             ; preds = %2805
  store i32 7, ptr %19, align 4
  br label %2835

2812:                                             ; preds = %2805
  br label %2813

2813:                                             ; preds = %2812, %2800, %2794
  %2814 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 1
  %2815 = load i32, ptr %2814, align 4, !tbaa !9
  %2816 = icmp eq i32 %2815, -1
  br i1 %2816, label %2817, label %2830

2817:                                             ; preds = %2813
  %2818 = load ptr, ptr %143, align 8, !tbaa !5
  %2819 = getelementptr inbounds [2 x ptr], ptr %139, i64 0, i64 1
  %2820 = load ptr, ptr %2819, align 8, !tbaa !5
  %2821 = icmp uge ptr %2818, %2820
  br i1 %2821, label %2822, label %2830

2822:                                             ; preds = %2817
  %2823 = load i32, ptr %142, align 4, !tbaa !9
  %2824 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 1
  store i32 %2823, ptr %2824, align 4, !tbaa !9
  %2825 = load i32, ptr %141, align 4, !tbaa !9
  %2826 = add nsw i32 %2825, -1
  store i32 %2826, ptr %141, align 4, !tbaa !9
  %2827 = icmp sle i32 %2826, 0
  br i1 %2827, label %2828, label %2829

2828:                                             ; preds = %2822
  store i32 7, ptr %19, align 4
  br label %2835

2829:                                             ; preds = %2822
  br label %2830

2830:                                             ; preds = %2829, %2817, %2813
  br label %2831

2831:                                             ; preds = %2830, %2789
  br label %2832

2832:                                             ; preds = %2831
  %2833 = load ptr, ptr %143, align 8, !tbaa !5
  %2834 = getelementptr inbounds i16, ptr %2833, i32 1
  store ptr %2834, ptr %143, align 8, !tbaa !5
  br label %2783, !llvm.loop !190

2835:                                             ; preds = %2828, %2811, %2788
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #14
  br label %2836

2836:                                             ; preds = %2835
  %2837 = load i32, ptr %142, align 4, !tbaa !9
  %2838 = add nsw i32 %2837, 1
  store i32 %2838, ptr %142, align 4, !tbaa !9
  %2839 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 0
  %2840 = load i32, ptr %2839, align 4, !tbaa !9
  %2841 = icmp eq i32 %2840, -1
  br i1 %2841, label %2842, label %2845

2842:                                             ; preds = %2836
  %2843 = load i32, ptr %142, align 4, !tbaa !9
  %2844 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 0
  store i32 %2843, ptr %2844, align 4, !tbaa !9
  br label %2845

2845:                                             ; preds = %2842, %2836
  %2846 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 1
  %2847 = load i32, ptr %2846, align 4, !tbaa !9
  %2848 = icmp eq i32 %2847, -1
  br i1 %2848, label %2849, label %2852

2849:                                             ; preds = %2845
  %2850 = load i32, ptr %142, align 4, !tbaa !9
  %2851 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 1
  store i32 %2850, ptr %2851, align 4, !tbaa !9
  br label %2852

2852:                                             ; preds = %2849, %2845
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #14
  %2853 = load ptr, ptr %20, align 8, !tbaa !5
  %2854 = getelementptr inbounds [2 x ptr], ptr %139, i64 0, i64 0
  %2855 = load ptr, ptr %2854, align 16, !tbaa !5
  %2856 = load ptr, ptr %136, align 8, !tbaa !5
  %2857 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2855, ptr noundef %2856)
  %2858 = getelementptr inbounds [2 x ptr], ptr %139, i64 0, i64 0
  %2859 = load ptr, ptr %2858, align 16, !tbaa !5
  %2860 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %2853, ptr noundef %2857, ptr noundef %2859, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2860, ptr %144, align 4
  %2861 = getelementptr inbounds %struct.ImVec2, ptr %144, i32 0, i32 0
  %2862 = load float, ptr %2861, align 4, !tbaa !97
  %2863 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  store float %2862, ptr %2863, align 4, !tbaa !97
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #14
  %2864 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 0
  %2865 = load i32, ptr %2864, align 4, !tbaa !9
  %2866 = sitofp i32 %2865 to float
  %2867 = load ptr, ptr %20, align 8, !tbaa !5
  %2868 = getelementptr inbounds %struct.ImGuiContext, ptr %2867, i32 0, i32 7
  %2869 = load float, ptr %2868, align 8, !tbaa !45
  %2870 = fmul float %2866, %2869
  %2871 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 1
  store float %2870, ptr %2871, align 4, !tbaa !95
  %2872 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 1
  %2873 = load i32, ptr %2872, align 4, !tbaa !9
  %2874 = icmp sge i32 %2873, 0
  br i1 %2874, label %2875, label %2895

2875:                                             ; preds = %2852
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #14
  %2876 = load ptr, ptr %20, align 8, !tbaa !5
  %2877 = getelementptr inbounds [2 x ptr], ptr %139, i64 0, i64 1
  %2878 = load ptr, ptr %2877, align 8, !tbaa !5
  %2879 = load ptr, ptr %136, align 8, !tbaa !5
  %2880 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2878, ptr noundef %2879)
  %2881 = getelementptr inbounds [2 x ptr], ptr %139, i64 0, i64 1
  %2882 = load ptr, ptr %2881, align 8, !tbaa !5
  %2883 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %2876, ptr noundef %2880, ptr noundef %2882, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2883, ptr %145, align 4
  %2884 = getelementptr inbounds %struct.ImVec2, ptr %145, i32 0, i32 0
  %2885 = load float, ptr %2884, align 4, !tbaa !97
  %2886 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  store float %2885, ptr %2886, align 4, !tbaa !97
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #14
  %2887 = getelementptr inbounds [2 x i32], ptr %140, i64 0, i64 1
  %2888 = load i32, ptr %2887, align 4, !tbaa !9
  %2889 = sitofp i32 %2888 to float
  %2890 = load ptr, ptr %20, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.ImGuiContext, ptr %2890, i32 0, i32 7
  %2892 = load float, ptr %2891, align 8, !tbaa !45
  %2893 = fmul float %2889, %2892
  %2894 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  store float %2893, ptr %2894, align 4, !tbaa !95
  br label %2895

2895:                                             ; preds = %2875, %2852
  %2896 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2897 = trunc i8 %2896 to i1
  br i1 %2897, label %2898, label %2907

2898:                                             ; preds = %2895
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #14
  %2899 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2900 = load float, ptr %2899, align 4, !tbaa !97
  %2901 = load i32, ptr %142, align 4, !tbaa !9
  %2902 = sitofp i32 %2901 to float
  %2903 = load ptr, ptr %20, align 8, !tbaa !5
  %2904 = getelementptr inbounds %struct.ImGuiContext, ptr %2903, i32 0, i32 7
  %2905 = load float, ptr %2904, align 8, !tbaa !45
  %2906 = fmul float %2902, %2905
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %146, float noundef %2900, float noundef %2906)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %132, ptr align 4 %146, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #14
  br label %2907

2907:                                             ; preds = %2898, %2895
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #14
  %2908 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2909 = trunc i8 %2908 to i1
  br i1 %2909, label %2910, label %3048

2910:                                             ; preds = %2907
  %2911 = load ptr, ptr %47, align 8, !tbaa !5
  %2912 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2911, i32 0, i32 14
  %2913 = load i8, ptr %2912, align 4, !tbaa !156, !range !40, !noundef !41
  %2914 = trunc i8 %2913 to i1
  br i1 %2914, label %2915, label %3048

2915:                                             ; preds = %2910
  %2916 = load i32, ptr %15, align 4, !tbaa !9
  %2917 = and i32 %2916, 4096
  %2918 = icmp ne i32 %2917, 0
  br i1 %2918, label %2968, label %2919

2919:                                             ; preds = %2915
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #14
  %2920 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2921 = load float, ptr %2920, align 4, !tbaa !97
  %2922 = fmul float %2921, 2.500000e-01
  store float %2922, ptr %147, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #14
  %2923 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2924 = load float, ptr %2923, align 4, !tbaa !97
  %2925 = load ptr, ptr %22, align 8, !tbaa !5
  %2926 = getelementptr inbounds %struct.ImGuiStyle, ptr %2925, i32 0, i32 12
  %2927 = getelementptr inbounds %struct.ImVec2, ptr %2926, i32 0, i32 0
  %2928 = load float, ptr %2927, align 4, !tbaa !146
  %2929 = fsub float %2924, %2928
  store float %2929, ptr %148, align 4, !tbaa !44
  %2930 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  %2931 = load float, ptr %2930, align 4, !tbaa !97
  %2932 = load ptr, ptr %47, align 8, !tbaa !5
  %2933 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2932, i32 0, i32 11
  %2934 = load float, ptr %2933, align 8, !tbaa !122
  %2935 = fcmp olt float %2931, %2934
  br i1 %2935, label %2936, label %2946

2936:                                             ; preds = %2919
  %2937 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  %2938 = load float, ptr %2937, align 4, !tbaa !97
  %2939 = load float, ptr %147, align 4, !tbaa !44
  %2940 = fsub float %2938, %2939
  %2941 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2940)
  %2942 = fptosi float %2941 to i32
  %2943 = sitofp i32 %2942 to float
  %2944 = load ptr, ptr %47, align 8, !tbaa !5
  %2945 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2944, i32 0, i32 11
  store float %2943, ptr %2945, align 8, !tbaa !122
  br label %2967

2946:                                             ; preds = %2919
  %2947 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  %2948 = load float, ptr %2947, align 4, !tbaa !97
  %2949 = load float, ptr %148, align 4, !tbaa !44
  %2950 = fsub float %2948, %2949
  %2951 = load ptr, ptr %47, align 8, !tbaa !5
  %2952 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2951, i32 0, i32 11
  %2953 = load float, ptr %2952, align 8, !tbaa !122
  %2954 = fcmp oge float %2950, %2953
  br i1 %2954, label %2955, label %2966

2955:                                             ; preds = %2946
  %2956 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  %2957 = load float, ptr %2956, align 4, !tbaa !97
  %2958 = load float, ptr %148, align 4, !tbaa !44
  %2959 = fsub float %2957, %2958
  %2960 = load float, ptr %147, align 4, !tbaa !44
  %2961 = fadd float %2959, %2960
  %2962 = fptosi float %2961 to i32
  %2963 = sitofp i32 %2962 to float
  %2964 = load ptr, ptr %47, align 8, !tbaa !5
  %2965 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2964, i32 0, i32 11
  store float %2963, ptr %2965, align 8, !tbaa !122
  br label %2966

2966:                                             ; preds = %2955, %2946
  br label %2967

2967:                                             ; preds = %2966, %2936
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #14
  br label %2971

2968:                                             ; preds = %2915
  %2969 = load ptr, ptr %47, align 8, !tbaa !5
  %2970 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2969, i32 0, i32 11
  store float 0.000000e+00, ptr %2970, align 8, !tbaa !122
  br label %2971

2971:                                             ; preds = %2968, %2967
  %2972 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2973 = trunc i8 %2972 to i1
  br i1 %2973, label %2974, label %3045

2974:                                             ; preds = %2971
  %2975 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 1
  %2976 = load float, ptr %2975, align 4, !tbaa !95
  %2977 = load ptr, ptr %20, align 8, !tbaa !5
  %2978 = getelementptr inbounds %struct.ImGuiContext, ptr %2977, i32 0, i32 7
  %2979 = load float, ptr %2978, align 8, !tbaa !45
  %2980 = fsub float %2976, %2979
  %2981 = load float, ptr %55, align 4, !tbaa !44
  %2982 = fcmp olt float %2980, %2981
  br i1 %2982, label %2983, label %2991

2983:                                             ; preds = %2974
  %2984 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 1
  %2985 = load float, ptr %2984, align 4, !tbaa !95
  %2986 = load ptr, ptr %20, align 8, !tbaa !5
  %2987 = getelementptr inbounds %struct.ImGuiContext, ptr %2986, i32 0, i32 7
  %2988 = load float, ptr %2987, align 8, !tbaa !45
  %2989 = fsub float %2985, %2988
  %2990 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2989)
  store float %2990, ptr %55, align 4, !tbaa !44
  br label %3017

2991:                                             ; preds = %2974
  %2992 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 1
  %2993 = load float, ptr %2992, align 4, !tbaa !95
  %2994 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2995 = load float, ptr %2994, align 4, !tbaa !95
  %2996 = load ptr, ptr %22, align 8, !tbaa !5
  %2997 = getelementptr inbounds %struct.ImGuiStyle, ptr %2996, i32 0, i32 12
  %2998 = getelementptr inbounds %struct.ImVec2, ptr %2997, i32 0, i32 1
  %2999 = load float, ptr %2998, align 4, !tbaa !96
  %3000 = fneg float %2999
  %3001 = call float @llvm.fmuladd.f32(float %3000, float 2.000000e+00, float %2995)
  %3002 = fsub float %2993, %3001
  %3003 = load float, ptr %55, align 4, !tbaa !44
  %3004 = fcmp oge float %3002, %3003
  br i1 %3004, label %3005, label %3016

3005:                                             ; preds = %2991
  %3006 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 1
  %3007 = load float, ptr %3006, align 4, !tbaa !95
  %3008 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %3009 = load float, ptr %3008, align 4, !tbaa !95
  %3010 = fsub float %3007, %3009
  %3011 = load ptr, ptr %22, align 8, !tbaa !5
  %3012 = getelementptr inbounds %struct.ImGuiStyle, ptr %3011, i32 0, i32 12
  %3013 = getelementptr inbounds %struct.ImVec2, ptr %3012, i32 0, i32 1
  %3014 = load float, ptr %3013, align 4, !tbaa !96
  %3015 = call float @llvm.fmuladd.f32(float %3014, float 2.000000e+00, float %3010)
  store float %3015, ptr %55, align 4, !tbaa !44
  br label %3016

3016:                                             ; preds = %3005, %2991
  br label %3017

3017:                                             ; preds = %3016, %2983
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #14
  %3018 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %3019 = load float, ptr %3018, align 4, !tbaa !95
  %3020 = load ptr, ptr %22, align 8, !tbaa !5
  %3021 = getelementptr inbounds %struct.ImGuiStyle, ptr %3020, i32 0, i32 12
  %3022 = getelementptr inbounds %struct.ImVec2, ptr %3021, i32 0, i32 1
  %3023 = load float, ptr %3022, align 4, !tbaa !96
  %3024 = call float @llvm.fmuladd.f32(float %3023, float 2.000000e+00, float %3019)
  %3025 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %3026 = load float, ptr %3025, align 4, !tbaa !95
  %3027 = fsub float %3024, %3026
  %3028 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %3027, float noundef 0.000000e+00)
  store float %3028, ptr %149, align 4, !tbaa !44
  %3029 = load float, ptr %55, align 4, !tbaa !44
  %3030 = load float, ptr %149, align 4, !tbaa !44
  %3031 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %3029, float noundef 0.000000e+00, float noundef %3030)
  store float %3031, ptr %55, align 4, !tbaa !44
  %3032 = load ptr, ptr %38, align 8, !tbaa !5
  %3033 = getelementptr inbounds %struct.ImGuiWindow, ptr %3032, i32 0, i32 22
  %3034 = getelementptr inbounds %struct.ImVec2, ptr %3033, i32 0, i32 1
  %3035 = load float, ptr %3034, align 4, !tbaa !113
  %3036 = load float, ptr %55, align 4, !tbaa !44
  %3037 = fsub float %3035, %3036
  %3038 = getelementptr inbounds %struct.ImVec2, ptr %131, i32 0, i32 1
  %3039 = load float, ptr %3038, align 4, !tbaa !95
  %3040 = fadd float %3039, %3037
  store float %3040, ptr %3038, align 4, !tbaa !95
  %3041 = load float, ptr %55, align 4, !tbaa !44
  %3042 = load ptr, ptr %38, align 8, !tbaa !5
  %3043 = getelementptr inbounds %struct.ImGuiWindow, ptr %3042, i32 0, i32 22
  %3044 = getelementptr inbounds %struct.ImVec2, ptr %3043, i32 0, i32 1
  store float %3041, ptr %3044, align 4, !tbaa !113
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #14
  br label %3045

3045:                                             ; preds = %3017, %2971
  %3046 = load ptr, ptr %47, align 8, !tbaa !5
  %3047 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3046, i32 0, i32 14
  store i8 0, ptr %3047, align 4, !tbaa !156
  br label %3048

3048:                                             ; preds = %3045, %2910, %2907
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #14
  %3049 = load ptr, ptr %47, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3049, i32 0, i32 11
  %3051 = load float, ptr %3050, align 8, !tbaa !122
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %150, float noundef %3051, float noundef 0.000000e+00)
  %3052 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3053 = trunc i8 %3052 to i1
  br i1 %3053, label %3054, label %3183

3054:                                             ; preds = %3048
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #14
  %3055 = load ptr, ptr %136, align 8, !tbaa !5
  %3056 = load ptr, ptr %47, align 8, !tbaa !5
  %3057 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3056, i32 0, i32 12
  %3058 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3057, i32 0, i32 1
  %3059 = load i32, ptr %3058, align 4, !tbaa !154
  %3060 = load ptr, ptr %47, align 8, !tbaa !5
  %3061 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3060, i32 0, i32 12
  %3062 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3061, i32 0, i32 2
  %3063 = load i32, ptr %3062, align 4, !tbaa !155
  %3064 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %3059, i32 noundef %3063)
  %3065 = sext i32 %3064 to i64
  %3066 = getelementptr inbounds i16, ptr %3055, i64 %3065
  store ptr %3066, ptr %151, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #14
  %3067 = load ptr, ptr %136, align 8, !tbaa !5
  %3068 = load ptr, ptr %47, align 8, !tbaa !5
  %3069 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3068, i32 0, i32 12
  %3070 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3069, i32 0, i32 1
  %3071 = load i32, ptr %3070, align 4, !tbaa !154
  %3072 = load ptr, ptr %47, align 8, !tbaa !5
  %3073 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3072, i32 0, i32 12
  %3074 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3073, i32 0, i32 2
  %3075 = load i32, ptr %3074, align 4, !tbaa !155
  %3076 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3071, i32 noundef %3075)
  %3077 = sext i32 %3076 to i64
  %3078 = getelementptr inbounds i16, ptr %3067, i64 %3077
  store ptr %3078, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #14
  %3079 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3080 = trunc i8 %3079 to i1
  %3081 = zext i1 %3080 to i64
  %3082 = select i1 %3080, float 1.000000e+00, float 0x3FE3333340000000
  %3083 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %3082)
  store i32 %3083, ptr %153, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #14
  %3084 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3085 = trunc i8 %3084 to i1
  %3086 = zext i1 %3085 to i64
  %3087 = select i1 %3085, float 0.000000e+00, float -1.000000e+00
  store float %3087, ptr %154, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #14
  %3088 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3089 = trunc i8 %3088 to i1
  %3090 = zext i1 %3089 to i64
  %3091 = select i1 %3089, float 0.000000e+00, float 2.000000e+00
  store float %3091, ptr %155, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #14
  %3092 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %131, ptr noundef nonnull align 4 dereferenceable(8) %138)
  store <2 x float> %3092, ptr %157, align 4
  %3093 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %157, ptr noundef nonnull align 4 dereferenceable(8) %150)
  store <2 x float> %3093, ptr %156, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #14
  %3094 = load ptr, ptr %151, align 8, !tbaa !5
  store ptr %3094, ptr %158, align 8, !tbaa !5
  br label %3095

3095:                                             ; preds = %3168, %3054
  %3096 = load ptr, ptr %158, align 8, !tbaa !5
  %3097 = load ptr, ptr %152, align 8, !tbaa !5
  %3098 = icmp ult ptr %3096, %3097
  br i1 %3098, label %3100, label %3099

3099:                                             ; preds = %3095
  store i32 10, ptr %19, align 4
  br label %3181

3100:                                             ; preds = %3095
  %3101 = getelementptr inbounds %struct.ImVec2, ptr %156, i32 0, i32 1
  %3102 = load float, ptr %3101, align 4, !tbaa !95
  %3103 = getelementptr inbounds %struct.ImVec4, ptr %130, i32 0, i32 3
  %3104 = load float, ptr %3103, align 4, !tbaa !191
  %3105 = load ptr, ptr %20, align 8, !tbaa !5
  %3106 = getelementptr inbounds %struct.ImGuiContext, ptr %3105, i32 0, i32 7
  %3107 = load float, ptr %3106, align 8, !tbaa !45
  %3108 = fadd float %3104, %3107
  %3109 = fcmp ogt float %3102, %3108
  br i1 %3109, label %3110, label %3111

3110:                                             ; preds = %3100
  store i32 10, ptr %19, align 4
  br label %3181

3111:                                             ; preds = %3100
  %3112 = getelementptr inbounds %struct.ImVec2, ptr %156, i32 0, i32 1
  %3113 = load float, ptr %3112, align 4, !tbaa !95
  %3114 = getelementptr inbounds %struct.ImVec4, ptr %130, i32 0, i32 1
  %3115 = load float, ptr %3114, align 4, !tbaa !192
  %3116 = fcmp olt float %3113, %3115
  br i1 %3116, label %3117, label %3131

3117:                                             ; preds = %3111
  br label %3118

3118:                                             ; preds = %3129, %3117
  %3119 = load ptr, ptr %158, align 8, !tbaa !5
  %3120 = load ptr, ptr %152, align 8, !tbaa !5
  %3121 = icmp ult ptr %3119, %3120
  br i1 %3121, label %3122, label %3130

3122:                                             ; preds = %3118
  %3123 = load ptr, ptr %158, align 8, !tbaa !5
  %3124 = getelementptr inbounds i16, ptr %3123, i32 1
  store ptr %3124, ptr %158, align 8, !tbaa !5
  %3125 = load i16, ptr %3123, align 2, !tbaa !151
  %3126 = zext i16 %3125 to i32
  %3127 = icmp eq i32 %3126, 10
  br i1 %3127, label %3128, label %3129

3128:                                             ; preds = %3122
  br label %3130

3129:                                             ; preds = %3122
  br label %3118, !llvm.loop !193

3130:                                             ; preds = %3128, %3118
  br label %3168

3131:                                             ; preds = %3111
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #14
  %3132 = load ptr, ptr %20, align 8, !tbaa !5
  %3133 = load ptr, ptr %158, align 8, !tbaa !5
  %3134 = load ptr, ptr %152, align 8, !tbaa !5
  %3135 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %3132, ptr noundef %3133, ptr noundef %3134, ptr noundef %158, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %3135, ptr %159, align 4
  %3136 = getelementptr inbounds %struct.ImVec2, ptr %159, i32 0, i32 0
  %3137 = load float, ptr %3136, align 4, !tbaa !97
  %3138 = fcmp ole float %3137, 0.000000e+00
  br i1 %3138, label %3139, label %3148

3139:                                             ; preds = %3131
  %3140 = load ptr, ptr %20, align 8, !tbaa !5
  %3141 = getelementptr inbounds %struct.ImGuiContext, ptr %3140, i32 0, i32 6
  %3142 = load ptr, ptr %3141, align 8, !tbaa !129
  %3143 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110) %3142, i16 noundef zeroext 32)
  %3144 = fmul float %3143, 5.000000e-01
  %3145 = fptosi float %3144 to i32
  %3146 = sitofp i32 %3145 to float
  %3147 = getelementptr inbounds %struct.ImVec2, ptr %159, i32 0, i32 0
  store float %3146, ptr %3147, align 4, !tbaa !97
  br label %3148

3148:                                             ; preds = %3139, %3131
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  %3149 = load float, ptr %154, align 4, !tbaa !44
  %3150 = load ptr, ptr %20, align 8, !tbaa !5
  %3151 = getelementptr inbounds %struct.ImGuiContext, ptr %3150, i32 0, i32 7
  %3152 = load float, ptr %3151, align 8, !tbaa !45
  %3153 = fsub float %3149, %3152
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %162, float noundef 0.000000e+00, float noundef %3153)
  %3154 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %156, ptr noundef nonnull align 4 dereferenceable(8) %162)
  store <2 x float> %3154, ptr %161, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #14
  %3155 = getelementptr inbounds %struct.ImVec2, ptr %159, i32 0, i32 0
  %3156 = load float, ptr %3155, align 4, !tbaa !97
  %3157 = load float, ptr %155, align 4, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %164, float noundef %3156, float noundef %3157)
  %3158 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %156, ptr noundef nonnull align 4 dereferenceable(8) %164)
  store <2 x float> %3158, ptr %163, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %160, ptr noundef nonnull align 4 dereferenceable(8) %161, ptr noundef nonnull align 4 dereferenceable(8) %163)
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %165) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %165, ptr noundef nonnull align 4 dereferenceable(16) %130)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %160, ptr noundef nonnull align 4 dereferenceable(16) %165)
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %166) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %166, ptr noundef nonnull align 4 dereferenceable(16) %130)
  %3159 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %160, ptr noundef nonnull align 4 dereferenceable(16) %166)
  call void @llvm.lifetime.end.p0(i64 16, ptr %166) #14
  br i1 %3159, label %3160, label %3167

3160:                                             ; preds = %3148
  %3161 = load ptr, ptr %38, align 8, !tbaa !5
  %3162 = getelementptr inbounds %struct.ImGuiWindow, ptr %3161, i32 0, i32 79
  %3163 = load ptr, ptr %3162, align 8, !tbaa !194
  %3164 = getelementptr inbounds %struct.ImRect, ptr %160, i32 0, i32 0
  %3165 = getelementptr inbounds %struct.ImRect, ptr %160, i32 0, i32 1
  %3166 = load i32, ptr %153, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %3163, ptr noundef nonnull align 4 dereferenceable(8) %3164, ptr noundef nonnull align 4 dereferenceable(8) %3165, i32 noundef %3166, float noundef 0.000000e+00, i32 noundef 0)
  br label %3167

3167:                                             ; preds = %3160, %3148
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #14
  br label %3168

3168:                                             ; preds = %3167, %3130
  %3169 = getelementptr inbounds %struct.ImVec2, ptr %131, i32 0, i32 0
  %3170 = load float, ptr %3169, align 4, !tbaa !97
  %3171 = getelementptr inbounds %struct.ImVec2, ptr %150, i32 0, i32 0
  %3172 = load float, ptr %3171, align 4, !tbaa !97
  %3173 = fsub float %3170, %3172
  %3174 = getelementptr inbounds %struct.ImVec2, ptr %156, i32 0, i32 0
  store float %3173, ptr %3174, align 4, !tbaa !97
  %3175 = load ptr, ptr %20, align 8, !tbaa !5
  %3176 = getelementptr inbounds %struct.ImGuiContext, ptr %3175, i32 0, i32 7
  %3177 = load float, ptr %3176, align 8, !tbaa !45
  %3178 = getelementptr inbounds %struct.ImVec2, ptr %156, i32 0, i32 1
  %3179 = load float, ptr %3178, align 4, !tbaa !95
  %3180 = fadd float %3179, %3177
  store float %3180, ptr %3178, align 4, !tbaa !95
  br label %3095, !llvm.loop !195

3181:                                             ; preds = %3110, %3099
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #14
  br label %3182

3182:                                             ; preds = %3181
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #14
  br label %3183

3183:                                             ; preds = %3182, %3048
  %3184 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3185 = trunc i8 %3184 to i1
  br i1 %3185, label %3193, label %3186

3186:                                             ; preds = %3183
  %3187 = load ptr, ptr %135, align 8, !tbaa !5
  %3188 = load ptr, ptr %134, align 8, !tbaa !5
  %3189 = ptrtoint ptr %3187 to i64
  %3190 = ptrtoint ptr %3188 to i64
  %3191 = sub i64 %3189, %3190
  %3192 = icmp slt i64 %3191, 2097152
  br i1 %3192, label %3193, label %3218

3193:                                             ; preds = %3186, %3183
  call void @llvm.lifetime.start.p0(i64 4, ptr %167) #14
  %3194 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3195 = trunc i8 %3194 to i1
  %3196 = zext i1 %3195 to i64
  %3197 = select i1 %3195, i32 1, i32 0
  %3198 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3197, float noundef 1.000000e+00)
  store i32 %3198, ptr %167, align 4, !tbaa !9
  %3199 = load ptr, ptr %38, align 8, !tbaa !5
  %3200 = getelementptr inbounds %struct.ImGuiWindow, ptr %3199, i32 0, i32 79
  %3201 = load ptr, ptr %3200, align 8, !tbaa !194
  %3202 = load ptr, ptr %20, align 8, !tbaa !5
  %3203 = getelementptr inbounds %struct.ImGuiContext, ptr %3202, i32 0, i32 6
  %3204 = load ptr, ptr %3203, align 8, !tbaa !129
  %3205 = load ptr, ptr %20, align 8, !tbaa !5
  %3206 = getelementptr inbounds %struct.ImGuiContext, ptr %3205, i32 0, i32 7
  %3207 = load float, ptr %3206, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #14
  %3208 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %131, ptr noundef nonnull align 4 dereferenceable(8) %150)
  store <2 x float> %3208, ptr %168, align 4
  %3209 = load i32, ptr %167, align 4, !tbaa !9
  %3210 = load ptr, ptr %134, align 8, !tbaa !5
  %3211 = load ptr, ptr %135, align 8, !tbaa !5
  %3212 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3213 = trunc i8 %3212 to i1
  br i1 %3213, label %3214, label %3215

3214:                                             ; preds = %3193
  br label %3216

3215:                                             ; preds = %3193
  br label %3216

3216:                                             ; preds = %3215, %3214
  %3217 = phi ptr [ null, %3214 ], [ %130, %3215 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3201, ptr noundef %3204, float noundef %3207, ptr noundef nonnull align 4 dereferenceable(8) %168, i32 noundef %3209, ptr noundef %3210, ptr noundef %3211, float noundef 0.000000e+00, ptr noundef %3217)
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #14
  br label %3218

3218:                                             ; preds = %3216, %3186
  %3219 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3220 = trunc i8 %3219 to i1
  br i1 %3220, label %3221, label %3305

3221:                                             ; preds = %3218
  %3222 = load ptr, ptr %21, align 8, !tbaa !5
  %3223 = getelementptr inbounds %struct.ImGuiIO, ptr %3222, i32 0, i32 3
  %3224 = load float, ptr %3223, align 8, !tbaa !196
  %3225 = load ptr, ptr %47, align 8, !tbaa !5
  %3226 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3225, i32 0, i32 13
  %3227 = load float, ptr %3226, align 8, !tbaa !197
  %3228 = fadd float %3227, %3224
  store float %3228, ptr %3226, align 8, !tbaa !197
  call void @llvm.lifetime.start.p0(i64 1, ptr %169) #14
  %3229 = load ptr, ptr %20, align 8, !tbaa !5
  %3230 = getelementptr inbounds %struct.ImGuiContext, ptr %3229, i32 0, i32 2
  %3231 = getelementptr inbounds %struct.ImGuiIO, ptr %3230, i32 0, i32 23
  %3232 = load i8, ptr %3231, align 1, !tbaa !198, !range !40, !noundef !41
  %3233 = trunc i8 %3232 to i1
  br i1 %3233, label %3234, label %3245

3234:                                             ; preds = %3221
  %3235 = load ptr, ptr %47, align 8, !tbaa !5
  %3236 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3235, i32 0, i32 13
  %3237 = load float, ptr %3236, align 8, !tbaa !197
  %3238 = fcmp ole float %3237, 0.000000e+00
  br i1 %3238, label %3245, label %3239

3239:                                             ; preds = %3234
  %3240 = load ptr, ptr %47, align 8, !tbaa !5
  %3241 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3240, i32 0, i32 13
  %3242 = load float, ptr %3241, align 8, !tbaa !197
  %3243 = call float @fmodf(float noundef %3242, float noundef 0x3FF3333340000000) #14
  %3244 = fcmp ole float %3243, 0x3FE99999A0000000
  br label %3245

3245:                                             ; preds = %3239, %3234, %3221
  %3246 = phi i1 [ true, %3234 ], [ true, %3221 ], [ %3244, %3239 ]
  %3247 = zext i1 %3246 to i8
  store i8 %3247, ptr %169, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #14
  %3248 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %131, ptr noundef nonnull align 4 dereferenceable(8) %137)
  store <2 x float> %3248, ptr %172, align 4
  %3249 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %172, ptr noundef nonnull align 4 dereferenceable(8) %150)
  store <2 x float> %3249, ptr %171, align 4
  %3250 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %171)
  store <2 x float> %3250, ptr %170, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %173) #14
  %3251 = getelementptr inbounds %struct.ImVec2, ptr %170, i32 0, i32 0
  %3252 = load float, ptr %3251, align 4, !tbaa !97
  %3253 = getelementptr inbounds %struct.ImVec2, ptr %170, i32 0, i32 1
  %3254 = load float, ptr %3253, align 4, !tbaa !95
  %3255 = load ptr, ptr %20, align 8, !tbaa !5
  %3256 = getelementptr inbounds %struct.ImGuiContext, ptr %3255, i32 0, i32 7
  %3257 = load float, ptr %3256, align 8, !tbaa !45
  %3258 = fsub float %3254, %3257
  %3259 = fadd float %3258, 5.000000e-01
  %3260 = getelementptr inbounds %struct.ImVec2, ptr %170, i32 0, i32 0
  %3261 = load float, ptr %3260, align 4, !tbaa !97
  %3262 = fadd float %3261, 1.000000e+00
  %3263 = getelementptr inbounds %struct.ImVec2, ptr %170, i32 0, i32 1
  %3264 = load float, ptr %3263, align 4, !tbaa !95
  %3265 = fsub float %3264, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %173, float noundef %3252, float noundef %3259, float noundef %3262, float noundef %3265)
  %3266 = load i8, ptr %169, align 1, !tbaa !42, !range !40, !noundef !41
  %3267 = trunc i8 %3266 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %174) #14
  br i1 %3267, label %3268, label %3270

3268:                                             ; preds = %3245
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %174, ptr noundef nonnull align 4 dereferenceable(16) %130)
  %3269 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %173, ptr noundef nonnull align 4 dereferenceable(16) %174)
  br label %3270

3270:                                             ; preds = %3268, %3245
  %3271 = phi i1 [ false, %3245 ], [ %3269, %3268 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %174) #14
  br i1 %3271, label %3272, label %3279

3272:                                             ; preds = %3270
  %3273 = load ptr, ptr %38, align 8, !tbaa !5
  %3274 = getelementptr inbounds %struct.ImGuiWindow, ptr %3273, i32 0, i32 79
  %3275 = load ptr, ptr %3274, align 8, !tbaa !194
  %3276 = getelementptr inbounds %struct.ImRect, ptr %173, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #14
  %3277 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %173)
  store <2 x float> %3277, ptr %175, align 4
  %3278 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %3275, ptr noundef nonnull align 4 dereferenceable(8) %3276, ptr noundef nonnull align 4 dereferenceable(8) %175, i32 noundef %3278, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #14
  br label %3279

3279:                                             ; preds = %3272, %3270
  %3280 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %3281 = trunc i8 %3280 to i1
  br i1 %3281, label %3304, label %3282

3282:                                             ; preds = %3279
  %3283 = load ptr, ptr %20, align 8, !tbaa !5
  %3284 = getelementptr inbounds %struct.ImGuiContext, ptr %3283, i32 0, i32 194
  %3285 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3284, i32 0, i32 0
  store i8 1, ptr %3285, align 8, !tbaa !199
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #14
  %3286 = getelementptr inbounds %struct.ImVec2, ptr %170, i32 0, i32 0
  %3287 = load float, ptr %3286, align 4, !tbaa !97
  %3288 = fsub float %3287, 1.000000e+00
  %3289 = getelementptr inbounds %struct.ImVec2, ptr %170, i32 0, i32 1
  %3290 = load float, ptr %3289, align 4, !tbaa !95
  %3291 = load ptr, ptr %20, align 8, !tbaa !5
  %3292 = getelementptr inbounds %struct.ImGuiContext, ptr %3291, i32 0, i32 7
  %3293 = load float, ptr %3292, align 8, !tbaa !45
  %3294 = fsub float %3290, %3293
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %176, float noundef %3288, float noundef %3294)
  %3295 = load ptr, ptr %20, align 8, !tbaa !5
  %3296 = getelementptr inbounds %struct.ImGuiContext, ptr %3295, i32 0, i32 194
  %3297 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3296, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %3297, ptr align 4 %176, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #14
  %3298 = load ptr, ptr %20, align 8, !tbaa !5
  %3299 = getelementptr inbounds %struct.ImGuiContext, ptr %3298, i32 0, i32 7
  %3300 = load float, ptr %3299, align 8, !tbaa !45
  %3301 = load ptr, ptr %20, align 8, !tbaa !5
  %3302 = getelementptr inbounds %struct.ImGuiContext, ptr %3301, i32 0, i32 194
  %3303 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3302, i32 0, i32 2
  store float %3300, ptr %3303, align 4, !tbaa !200
  br label %3304

3304:                                             ; preds = %3282, %3279
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %169) #14
  br label %3305

3305:                                             ; preds = %3304, %3218
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #14
  br label %3380

3306:                                             ; preds = %2717
  %3307 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3308 = trunc i8 %3307 to i1
  br i1 %3308, label %3309, label %3319

3309:                                             ; preds = %3306
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #14
  %3310 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %3311 = load float, ptr %3310, align 4, !tbaa !97
  %3312 = load ptr, ptr %134, align 8, !tbaa !5
  %3313 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3312, ptr noundef %135)
  %3314 = sitofp i32 %3313 to float
  %3315 = load ptr, ptr %20, align 8, !tbaa !5
  %3316 = getelementptr inbounds %struct.ImGuiContext, ptr %3315, i32 0, i32 7
  %3317 = load float, ptr %3316, align 8, !tbaa !45
  %3318 = fmul float %3314, %3317
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %177, float noundef %3311, float noundef %3318)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %132, ptr align 4 %177, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #14
  br label %3345

3319:                                             ; preds = %3306
  %3320 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3321 = trunc i8 %3320 to i1
  br i1 %3321, label %3335, label %3322

3322:                                             ; preds = %3319
  %3323 = load ptr, ptr %20, align 8, !tbaa !5
  %3324 = getelementptr inbounds %struct.ImGuiContext, ptr %3323, i32 0, i32 44
  %3325 = load i32, ptr %3324, align 8, !tbaa !108
  %3326 = load i32, ptr %29, align 4, !tbaa !9
  %3327 = icmp eq i32 %3325, %3326
  br i1 %3327, label %3328, label %3335

3328:                                             ; preds = %3322
  %3329 = load ptr, ptr %134, align 8, !tbaa !5
  %3330 = load ptr, ptr %47, align 8, !tbaa !5
  %3331 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3330, i32 0, i32 3
  %3332 = load i32, ptr %3331, align 8, !tbaa !117
  %3333 = sext i32 %3332 to i64
  %3334 = getelementptr inbounds i8, ptr %3329, i64 %3333
  store ptr %3334, ptr %135, align 8, !tbaa !5
  br label %3344

3335:                                             ; preds = %3322, %3319
  %3336 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3337 = trunc i8 %3336 to i1
  br i1 %3337, label %3343, label %3338

3338:                                             ; preds = %3335
  %3339 = load ptr, ptr %134, align 8, !tbaa !5
  %3340 = load ptr, ptr %134, align 8, !tbaa !5
  %3341 = call i64 @strlen(ptr noundef %3340) #16
  %3342 = getelementptr inbounds i8, ptr %3339, i64 %3341
  store ptr %3342, ptr %135, align 8, !tbaa !5
  br label %3343

3343:                                             ; preds = %3338, %3335
  br label %3344

3344:                                             ; preds = %3343, %3328
  br label %3345

3345:                                             ; preds = %3344, %3309
  %3346 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3347 = trunc i8 %3346 to i1
  br i1 %3347, label %3355, label %3348

3348:                                             ; preds = %3345
  %3349 = load ptr, ptr %135, align 8, !tbaa !5
  %3350 = load ptr, ptr %134, align 8, !tbaa !5
  %3351 = ptrtoint ptr %3349 to i64
  %3352 = ptrtoint ptr %3350 to i64
  %3353 = sub i64 %3351, %3352
  %3354 = icmp slt i64 %3353, 2097152
  br i1 %3354, label %3355, label %3379

3355:                                             ; preds = %3348, %3345
  call void @llvm.lifetime.start.p0(i64 4, ptr %178) #14
  %3356 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3357 = trunc i8 %3356 to i1
  %3358 = zext i1 %3357 to i64
  %3359 = select i1 %3357, i32 1, i32 0
  %3360 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3359, float noundef 1.000000e+00)
  store i32 %3360, ptr %178, align 4, !tbaa !9
  %3361 = load ptr, ptr %38, align 8, !tbaa !5
  %3362 = getelementptr inbounds %struct.ImGuiWindow, ptr %3361, i32 0, i32 79
  %3363 = load ptr, ptr %3362, align 8, !tbaa !194
  %3364 = load ptr, ptr %20, align 8, !tbaa !5
  %3365 = getelementptr inbounds %struct.ImGuiContext, ptr %3364, i32 0, i32 6
  %3366 = load ptr, ptr %3365, align 8, !tbaa !129
  %3367 = load ptr, ptr %20, align 8, !tbaa !5
  %3368 = getelementptr inbounds %struct.ImGuiContext, ptr %3367, i32 0, i32 7
  %3369 = load float, ptr %3368, align 8, !tbaa !45
  %3370 = load i32, ptr %178, align 4, !tbaa !9
  %3371 = load ptr, ptr %134, align 8, !tbaa !5
  %3372 = load ptr, ptr %135, align 8, !tbaa !5
  %3373 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3374 = trunc i8 %3373 to i1
  br i1 %3374, label %3375, label %3376

3375:                                             ; preds = %3355
  br label %3377

3376:                                             ; preds = %3355
  br label %3377

3377:                                             ; preds = %3376, %3375
  %3378 = phi ptr [ null, %3375 ], [ %130, %3376 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3363, ptr noundef %3366, float noundef %3369, ptr noundef nonnull align 4 dereferenceable(8) %131, i32 noundef %3370, ptr noundef %3371, ptr noundef %3372, float noundef 0.000000e+00, ptr noundef %3378)
  call void @llvm.lifetime.end.p0(i64 4, ptr %178) #14
  br label %3379

3379:                                             ; preds = %3377, %3348
  br label %3380

3380:                                             ; preds = %3379, %3305
  %3381 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3382 = trunc i8 %3381 to i1
  br i1 %3382, label %3383, label %3387

3383:                                             ; preds = %3380
  %3384 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3385 = trunc i8 %3384 to i1
  br i1 %3385, label %3387, label %3386

3386:                                             ; preds = %3383
  call void @_ZN5ImGui7PopFontEv()
  br label %3387

3387:                                             ; preds = %3386, %3383, %3380
  %3388 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3389 = trunc i8 %3388 to i1
  br i1 %3389, label %3390, label %3439

3390:                                             ; preds = %3387
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #14
  %3391 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %3392 = load float, ptr %3391, align 4, !tbaa !97
  %3393 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %3394 = load float, ptr %3393, align 4, !tbaa !95
  %3395 = load ptr, ptr %22, align 8, !tbaa !5
  %3396 = getelementptr inbounds %struct.ImGuiStyle, ptr %3395, i32 0, i32 12
  %3397 = getelementptr inbounds %struct.ImVec2, ptr %3396, i32 0, i32 1
  %3398 = load float, ptr %3397, align 4, !tbaa !96
  %3399 = fadd float %3394, %3398
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %179, float noundef %3392, float noundef %3399)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %179)
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #14
  %3400 = load ptr, ptr %20, align 8, !tbaa !5
  %3401 = getelementptr inbounds %struct.ImGuiContext, ptr %3400, i32 0, i32 69
  %3402 = load i32, ptr %3401, align 8, !tbaa !201
  store i32 %3402, ptr %180, align 4, !tbaa !9
  %3403 = load ptr, ptr %20, align 8, !tbaa !5
  %3404 = getelementptr inbounds %struct.ImGuiContext, ptr %3403, i32 0, i32 69
  %3405 = load i32, ptr %3404, align 8, !tbaa !201
  %3406 = or i32 %3405, 1025
  store i32 %3406, ptr %3404, align 8, !tbaa !201
  call void @_ZN5ImGui8EndChildEv()
  %3407 = load ptr, ptr %20, align 8, !tbaa !5
  %3408 = getelementptr inbounds %struct.ImGuiContext, ptr %3407, i32 0, i32 72
  %3409 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3408, i32 0, i32 2
  %3410 = load i32, ptr %3409, align 4, !tbaa !99
  %3411 = and i32 %3410, 128
  %3412 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 2
  %3413 = load i32, ptr %3412, align 4, !tbaa !202
  %3414 = or i32 %3413, %3411
  store i32 %3414, ptr %3412, align 4, !tbaa !202
  %3415 = load i32, ptr %180, align 4, !tbaa !9
  %3416 = load ptr, ptr %20, align 8, !tbaa !5
  %3417 = getelementptr inbounds %struct.ImGuiContext, ptr %3416, i32 0, i32 69
  store i32 %3415, ptr %3417, align 8, !tbaa !201
  call void @_ZN5ImGui8EndGroupEv()
  %3418 = load ptr, ptr %20, align 8, !tbaa !5
  %3419 = getelementptr inbounds %struct.ImGuiContext, ptr %3418, i32 0, i32 72
  %3420 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3419, i32 0, i32 0
  %3421 = load i32, ptr %3420, align 4, !tbaa !203
  %3422 = icmp eq i32 %3421, 0
  br i1 %3422, label %3423, label %3438

3423:                                             ; preds = %3390
  %3424 = load i32, ptr %29, align 4, !tbaa !9
  %3425 = load ptr, ptr %20, align 8, !tbaa !5
  %3426 = getelementptr inbounds %struct.ImGuiContext, ptr %3425, i32 0, i32 72
  %3427 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3426, i32 0, i32 0
  store i32 %3424, ptr %3427, align 4, !tbaa !203
  %3428 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 1
  %3429 = load i32, ptr %3428, align 4, !tbaa !204
  %3430 = load ptr, ptr %20, align 8, !tbaa !5
  %3431 = getelementptr inbounds %struct.ImGuiContext, ptr %3430, i32 0, i32 72
  %3432 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3431, i32 0, i32 1
  store i32 %3429, ptr %3432, align 4, !tbaa !205
  %3433 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 2
  %3434 = load i32, ptr %3433, align 4, !tbaa !202
  %3435 = load ptr, ptr %20, align 8, !tbaa !5
  %3436 = getelementptr inbounds %struct.ImGuiContext, ptr %3435, i32 0, i32 72
  %3437 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3436, i32 0, i32 2
  store i32 %3434, ptr %3437, align 4, !tbaa !99
  br label %3438

3438:                                             ; preds = %3423, %3390
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #14
  br label %3439

3439:                                             ; preds = %3438, %3387
  %3440 = load ptr, ptr %20, align 8, !tbaa !5
  %3441 = getelementptr inbounds %struct.ImGuiContext, ptr %3440, i32 0, i32 206
  %3442 = load i8, ptr %3441, align 8, !tbaa !206, !range !40, !noundef !41
  %3443 = trunc i8 %3442 to i1
  br i1 %3443, label %3444, label %3453

3444:                                             ; preds = %3439
  %3445 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3446 = trunc i8 %3445 to i1
  br i1 %3446, label %3447, label %3450

3447:                                             ; preds = %3444
  %3448 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3449 = trunc i8 %3448 to i1
  br i1 %3449, label %3450, label %3453

3450:                                             ; preds = %3447, %3444
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef @.str.24, ptr noundef @.str.25)
  %3451 = load ptr, ptr %134, align 8, !tbaa !5
  %3452 = load ptr, ptr %135, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %131, ptr noundef %3451, ptr noundef %3452)
  br label %3453

3453:                                             ; preds = %3450, %3447, %3439
  %3454 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3455 = load float, ptr %3454, align 4, !tbaa !97
  %3456 = fcmp ogt float %3455, 0.000000e+00
  br i1 %3456, label %3457, label %3476

3457:                                             ; preds = %3453
  %3458 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  %3459 = getelementptr inbounds %struct.ImVec2, ptr %3458, i32 0, i32 0
  %3460 = load float, ptr %3459, align 4, !tbaa !207
  %3461 = load ptr, ptr %22, align 8, !tbaa !5
  %3462 = getelementptr inbounds %struct.ImGuiStyle, ptr %3461, i32 0, i32 16
  %3463 = getelementptr inbounds %struct.ImVec2, ptr %3462, i32 0, i32 0
  %3464 = load float, ptr %3463, align 4, !tbaa !98
  %3465 = fadd float %3460, %3464
  %3466 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %3467 = getelementptr inbounds %struct.ImVec2, ptr %3466, i32 0, i32 1
  %3468 = load float, ptr %3467, align 4, !tbaa !189
  %3469 = load ptr, ptr %22, align 8, !tbaa !5
  %3470 = getelementptr inbounds %struct.ImGuiStyle, ptr %3469, i32 0, i32 12
  %3471 = getelementptr inbounds %struct.ImVec2, ptr %3470, i32 0, i32 1
  %3472 = load float, ptr %3471, align 4, !tbaa !96
  %3473 = fadd float %3468, %3472
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %181, float noundef %3465, float noundef %3473)
  %3474 = load ptr, ptr %10, align 8, !tbaa !5
  %3475 = load <2 x float>, ptr %181, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3475, ptr noundef %3474, ptr noundef null, i1 noundef zeroext true)
  br label %3476

3476:                                             ; preds = %3457, %3453
  %3477 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3478 = trunc i8 %3477 to i1
  br i1 %3478, label %3479, label %3485

3479:                                             ; preds = %3476
  %3480 = load i32, ptr %15, align 4, !tbaa !9
  %3481 = and i32 %3480, 134217728
  %3482 = icmp ne i32 %3481, 0
  br i1 %3482, label %3485, label %3483

3483:                                             ; preds = %3479
  %3484 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3484)
  br label %3485

3485:                                             ; preds = %3483, %3479, %3476
  %3486 = load ptr, ptr %20, align 8, !tbaa !5
  %3487 = load i32, ptr %15, align 4, !tbaa !9
  %3488 = and i32 %3487, 32
  %3489 = icmp ne i32 %3488, 0
  br i1 %3489, label %3490, label %3493

3490:                                             ; preds = %3485
  %3491 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %3492 = trunc i8 %3491 to i1
  store i1 %3492, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3496

3493:                                             ; preds = %3485
  %3494 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3495 = trunc i8 %3494 to i1
  store i1 %3495, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3496

3496:                                             ; preds = %3493, %3490
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  br label %3497

3497:                                             ; preds = %3496, %407, %393
  call void @llvm.lifetime.end.p0(i64 60, ptr %41) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  br label %3498

3498:                                             ; preds = %3497, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  %3499 = load i1, ptr %9, align 1
  ret i1 %3499

3500:                                             ; preds = %2183
  %3501 = load ptr, ptr %115, align 8
  %3502 = load i32, ptr %116, align 4
  %3503 = insertvalue { ptr, i32 } poison, ptr %3501, 0
  %3504 = insertvalue { ptr, i32 } %3503, i32 %3502, 1
  resume { ptr, i32 } %3504

3505:                                             ; preds = %1391
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(60)) unnamed_addr #10 align 2

declare void @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) #4

declare noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), i1 noundef zeroext, i32 noundef) #4

declare void @_ZN5ImGui8EndChildEv() #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef) #1

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

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

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

declare noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724)) #3 align 2

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110), i16 noundef zeroext) #4

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef, i32 noundef) #10

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef) #3

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef, ptr noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

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

declare noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef, i1 noundef zeroext) #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #1 align 2

declare noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef, i32 noundef, i32 noundef) #4

declare void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef, float noundef) #4

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724)) #3 align 2

declare noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef, ptr noundef) #4

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #4

declare noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #4

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #4

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) #4

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() #4

declare noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) #4

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

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

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

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

declare noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) #4

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef, ptr noundef) #4

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

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

; 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 #10 align 2

; 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)) #3 align 2

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

; Function Attrs: nounwind
declare float @fmodf(float noundef, float noundef) #13

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

declare void @_ZN5ImGui7PopFontEv() #4

declare void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr)

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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 #10 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #12 = { 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 #13 = { 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 #14 = { nounwind }
attributes #15 = { noreturn nounwind }
attributes #16 = { 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 179}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !14, i64 80, !14, i64 84, !14, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !13, i64 124, !13, i64 132, !13, i64 140, !13, i64 148, !13, i64 156, !13, i64 164, !15, i64 172, !15, i64 173, !15, i64 174, !15, i64 175, !15, i64 176, !15, i64 177, !15, i64 178, !15, i64 179, !15, i64 180, !15, i64 181, !15, i64 182, !15, i64 183, !15, i64 184, !7, i64 185, !16, i64 186, !16, i64 188, !16, i64 190, !16, i64 192, !16, i64 194, !10, i64 196, !7, i64 200, !7, i64 201, !7, i64 202, !15, i64 203, !10, i64 204, !7, i64 208, !7, i64 209, !7, i64 210, !7, i64 211, !10, i64 212, !10, i64 213, !10, i64 214, !13, i64 216, !13, i64 224, !17, i64 232, !18, i64 248, !24, i64 480, !24, i64 496, !24, i64 512, !24, i64 528, !24, i64 544, !24, i64 560, !24, i64 576, !25, i64 592, !25, i64 596, !10, i64 600, !14, i64 604, !14, i64 608, !26, i64 616, !28, i64 632, !14, i64 648, !10, i64 652, !6, i64 656, !29, i64 664, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !7, i64 920, !7, i64 928, !10, i64 960, !10, i64 964, !10, i64 968, !15, i64 972}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!18 = !{!"_ZTS19ImGuiWindowTempData", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !14, i64 56, !14, i64 60, !15, i64 64, !15, i64 65, !19, i64 68, !19, i64 72, !19, i64 76, !13, i64 80, !20, i64 88, !16, i64 92, !16, i64 94, !15, i64 96, !15, i64 97, !15, i64 98, !13, i64 100, !21, i64 108, !10, i64 136, !10, i64 140, !22, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !14, i64 188, !14, i64 192, !23, i64 200, !23, i64 216}
!19 = !{!"_ZTS6ImVec1", !14, i64 0}
!20 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!21 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !7, i64 18}
!22 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!25 = !{!"_ZTS8ImVec2ih", !16, i64 0, !16, i64 2}
!26 = !{!"_ZTS12ImGuiStorage", !27, i64 0}
!27 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS10ImDrawList", !30, i64 0, !31, i64 16, !32, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !33, i64 88, !34, i64 104, !35, i64 120, !36, i64 136, !38, i64 168, !14, i64 192}
!30 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS15ImDrawCmdHeader", !37, i64 0, !6, i64 16, !10, i64 24}
!37 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!38 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !39, i64 8}
!39 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!15, !15, i64 0}
!43 = !{i64 0, i64 4, !44, i64 4, i64 4, !44}
!44 = !{!14, !14, i64 0}
!45 = !{!46, !14, i64 15360}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !48, i64 14272, !48, i64 14288, !49, i64 14304, !6, i64 15352, !14, i64 15360, !14, i64 15364, !50, i64 15368, !51, i64 15896, !10, i64 15904, !10, i64 15908, !10, i64 15912, !15, i64 15916, !15, i64 15917, !15, i64 15918, !15, i64 15919, !15, i64 15920, !6, i64 15928, !22, i64 15936, !22, i64 15952, !22, i64 15968, !52, i64 15984, !26, i64 16000, !10, i64 16016, !13, i64 16020, !6, i64 16032, !6, i64 16040, !6, i64 16048, !6, i64 16056, !6, i64 16064, !13, i64 16072, !10, i64 16080, !14, i64 16084, !13, i64 16088, !13, i64 16096, !10, i64 16104, !10, i64 16108, !10, i64 16112, !15, i64 16116, !15, i64 16117, !14, i64 16120, !14, i64 16124, !10, i64 16128, !10, i64 16132, !14, i64 16136, !15, i64 16140, !15, i64 16141, !15, i64 16142, !15, i64 16143, !15, i64 16144, !15, i64 16145, !13, i64 16148, !6, i64 16160, !53, i64 16168, !10, i64 16172, !10, i64 16176, !15, i64 16180, !15, i64 16181, !6, i64 16184, !10, i64 16192, !14, i64 16196, !7, i64 16200, !54, i64 17880, !10, i64 18192, !15, i64 18196, !10, i64 18200, !10, i64 18204, !10, i64 18208, !10, i64 18212, !56, i64 18216, !57, i64 18236, !58, i64 18296, !59, i64 18408, !60, i64 18424, !61, i64 18440, !17, i64 18456, !62, i64 18472, !63, i64 18488, !64, i64 18504, !64, i64 18520, !10, i64 18536, !65, i64 18544, !6, i64 18560, !10, i64 18568, !10, i64 18572, !10, i64 18576, !10, i64 18580, !10, i64 18584, !10, i64 18588, !10, i64 18592, !10, i64 18596, !10, i64 18600, !10, i64 18604, !10, i64 18608, !10, i64 18612, !53, i64 18616, !20, i64 18620, !15, i64 18624, !15, i64 18625, !15, i64 18626, !15, i64 18627, !15, i64 18628, !15, i64 18629, !15, i64 18630, !10, i64 18632, !24, i64 18636, !15, i64 18652, !15, i64 18653, !15, i64 18654, !10, i64 18656, !10, i64 18660, !10, i64 18664, !10, i64 18668, !10, i64 18672, !10, i64 18676, !24, i64 18680, !24, i64 18696, !10, i64 18712, !10, i64 18716, !10, i64 18720, !66, i64 18728, !66, i64 18776, !66, i64 18824, !66, i64 18872, !10, i64 18920, !10, i64 18924, !6, i64 18928, !6, i64 18936, !6, i64 18944, !14, i64 18952, !14, i64 18956, !15, i64 18960, !13, i64 18964, !13, i64 18972, !14, i64 18980, !10, i64 18984, !15, i64 18988, !15, i64 18989, !15, i64 18990, !10, i64 18992, !10, i64 18996, !10, i64 19000, !67, i64 19008, !24, i64 19072, !10, i64 19088, !10, i64 19092, !14, i64 19096, !10, i64 19100, !10, i64 19104, !10, i64 19108, !10, i64 19112, !68, i64 19120, !7, i64 19136, !10, i64 19152, !69, i64 19160, !6, i64 19176, !10, i64 19184, !70, i64 19192, !71, i64 19208, !23, i64 19248, !39, i64 19264, !6, i64 19280, !73, i64 19288, !75, i64 19328, !76, i64 19344, !10, i64 19360, !10, i64 19364, !14, i64 19368, !14, i64 19372, !13, i64 19376, !77, i64 19384, !81, i64 23112, !10, i64 23224, !10, i64 23228, !14, i64 23232, !14, i64 23236, !10, i64 23240, !37, i64 23244, !83, i64 23260, !14, i64 23308, !14, i64 23312, !15, i64 23316, !15, i64 23317, !14, i64 23320, !14, i64 23324, !14, i64 23328, !14, i64 23332, !16, i64 23336, !16, i64 23338, !78, i64 23344, !17, i64 23360, !84, i64 23376, !84, i64 23392, !7, i64 23408, !15, i64 23409, !14, i64 23412, !85, i64 23416, !86, i64 23432, !87, i64 23448, !88, i64 23464, !89, i64 23480, !10, i64 23496, !7, i64 23504, !15, i64 23560, !90, i64 23564, !6, i64 23568, !85, i64 23576, !6, i64 23592, !6, i64 23600, !14, i64 23608, !15, i64 23612, !10, i64 23616, !10, i64 23620, !10, i64 23624, !10, i64 23628, !85, i64 23632, !91, i64 23648, !7, i64 23672, !15, i64 23673, !7, i64 23674, !10, i64 23676, !92, i64 23680, !93, i64 23696, !7, i64 23736, !10, i64 23976, !10, i64 23980, !14, i64 23984, !10, i64 23988, !10, i64 23992, !10, i64 23996, !78, i64 24000}
!47 = !{!"_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, !14, i64 52, !14, i64 56, !14, i64 60, !14, i64 64, !6, i64 72, !6, i64 80, !14, i64 88, !15, i64 92, !6, i64 96, !13, i64 104, !15, i64 112, !15, i64 113, !15, i64 114, !15, i64 115, !15, i64 116, !15, i64 117, !15, i64 118, !15, i64 119, !14, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !15, i64 208, !15, i64 209, !15, i64 210, !15, i64 211, !15, i64 212, !15, i64 213, !15, i64 214, !14, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !13, i64 240, !7, i64 248, !7, i64 2856, !7, i64 3508, !13, i64 3572, !7, i64 3580, !14, i64 3588, !14, i64 3592, !15, i64 3596, !15, i64 3597, !15, i64 3598, !15, i64 3599, !10, i64 3600, !7, i64 3604, !15, i64 14036, !13, i64 14040, !7, i64 14048, !7, i64 14088, !7, i64 14128, !7, i64 14133, !7, i64 14138, !7, i64 14148, !7, i64 14158, !7, i64 14163, !7, i64 14168, !7, i64 14176, !7, i64 14196, !7, i64 14216, !14, i64 14236, !15, i64 14240, !15, i64 14241, !7, i64 14242, !15, i64 14243, !16, i64 14244, !31, i64 14248}
!48 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !14, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !13, i64 24, !13, i64 32, !10, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !13, i64 60, !14, i64 68, !14, i64 72, !13, i64 76, !13, i64 84, !13, i64 92, !13, i64 100, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !14, i64 140, !14, i64 144, !10, i64 148, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !14, i64 184, !15, i64 188, !15, i64 189, !15, i64 190, !14, i64 192, !14, i64 196, !7, i64 200}
!50 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !37, i64 28, !10, i64 44, !35, i64 48, !7, i64 64, !14, i64 448, !7, i64 452, !6, i64 520}
!51 = !{!"double", !7, i64 0}
!52 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!54 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !55, i64 280, !55, i64 296}
!55 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !15, i64 16}
!57 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !24, i64 12, !24, i64 28, !24, i64 44}
!58 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !15, i64 56, !24, i64 60, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100}
!59 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !24, i64 16, !10, i64 32, !14, i64 36, !14, i64 40, !14, i64 44}
!67 = !{!"_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}
!68 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS6ImPoolI10ImGuiTableE", !72, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!72 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !74, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!74 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !31, i64 24, !78, i64 40, !78, i64 56, !15, i64 72, !10, i64 76, !14, i64 80, !79, i64 84, !14, i64 3712, !15, i64 3716, !15, i64 3717, !15, i64 3718, !10, i64 3720}
!78 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !14, i64 28, !80, i64 32}
!80 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!81 = !{!"_ZTS6ImFont", !23, i64 0, !14, i64 16, !14, i64 20, !31, i64 24, !82, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !16, i64 80, !16, i64 82, !16, i64 84, !16, i64 86, !15, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !10, i64 104, !7, i64 108}
!82 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS21ImGuiComboPreviewData", !24, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!84 = !{!"_ZTS20ImGuiPlatformImeData", !15, i64 0, !13, i64 4, !14, i64 12}
!85 = !{!"_ZTS15ImGuiTextBuffer", !78, i64 0}
!86 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!87 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !78, i64 0}
!88 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !78, i64 0}
!89 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!90 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!91 = !{!"_ZTS14ImGuiTextIndex", !62, i64 0, !10, i64 16}
!92 = !{!"_ZTS18ImGuiMetricsConfig", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !15, i64 4, !15, i64 5, !15, i64 6, !10, i64 8, !10, i64 12}
!93 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !94, i64 16, !15, i64 32, !14, i64 36}
!94 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!95 = !{!13, !14, i64 4}
!96 = !{!49, !14, i64 64}
!97 = !{!13, !14, i64 0}
!98 = !{!49, !14, i64 84}
!99 = !{!46, !10, i64 18244}
!100 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !44, i64 16, i64 4, !44, i64 20, i64 4, !44, i64 24, i64 4, !44, i64 28, i64 4, !44, i64 32, i64 4, !44, i64 36, i64 4, !44, i64 40, i64 4, !44, i64 44, i64 4, !44, i64 48, i64 4, !44, i64 52, i64 4, !44, i64 56, i64 4, !44}
!101 = !{!49, !14, i64 68}
!102 = !{!49, !14, i64 72}
!103 = !{!46, !6, i64 16032}
!104 = !{!12, !20, i64 336}
!105 = !{!12, !16, i64 342}
!106 = !{!12, !14, i64 164}
!107 = !{!46, !10, i64 18984}
!108 = !{!46, !10, i64 16128}
!109 = !{!46, !10, i64 18588}
!110 = !{!46, !10, i64 18576}
!111 = !{!46, !53, i64 18616}
!112 = !{!46, !10, i64 16176}
!113 = !{!12, !14, i64 128}
!114 = !{!77, !7, i64 107}
!115 = !{!77, !6, i64 64}
!116 = !{!77, !10, i64 8}
!117 = !{!77, !10, i64 16}
!118 = !{!77, !15, i64 72}
!119 = !{!77, !6, i64 48}
!120 = !{!77, !6, i64 32}
!121 = !{!77, !10, i64 12}
!122 = !{!77, !14, i64 80}
!123 = !{!46, !10, i64 18592}
!124 = !{!47, !15, i64 3596}
!125 = !{!77, !7, i64 96}
!126 = !{!46, !10, i64 18192}
!127 = !{!77, !10, i64 24}
!128 = !{!7, !7, i64 0}
!129 = !{!46, !6, i64 15352}
!130 = !{!81, !14, i64 20}
!131 = !{!81, !14, i64 92}
!132 = !{!81, !14, i64 96}
!133 = !{!81, !14, i64 100}
!134 = !{!81, !6, i64 64}
!135 = !{!81, !6, i64 56}
!136 = !{!137, !14, i64 4}
!137 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 0, !10, 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}
!138 = !{!81, !14, i64 16}
!139 = !{!77, !15, i64 3718}
!140 = !{!77, !10, i64 76}
!141 = !{!77, !10, i64 3720}
!142 = !{!46, !15, i64 16141}
!143 = !{!46, !10, i64 23996}
!144 = !{!47, !14, i64 3572}
!145 = !{!24, !14, i64 0}
!146 = !{!49, !14, i64 60}
!147 = !{!47, !14, i64 3576}
!148 = !{!12, !14, i64 252}
!149 = !{!47, !15, i64 113}
!150 = !{!77, !15, i64 3717}
!151 = !{!16, !16, i64 0}
!152 = !{!47, !15, i64 3597}
!153 = !{!77, !10, i64 84}
!154 = !{!77, !10, i64 88}
!155 = !{!77, !10, i64 92}
!156 = !{!77, !15, i64 3716}
!157 = !{!47, !14, i64 240}
!158 = !{!47, !14, i64 244}
!159 = !{!47, !15, i64 3598}
!160 = !{!47, !15, i64 3599}
!161 = !{!47, !10, i64 14248}
!162 = distinct !{!162, !163}
!163 = !{!"llvm.loop.mustprogress"}
!164 = !{!46, !15, i64 16140}
!165 = !{!77, !10, i64 100}
!166 = !{!47, !10, i64 0}
!167 = !{!47, !10, i64 4}
!168 = !{!47, !15, i64 116}
!169 = !{!47, !6, i64 176}
!170 = distinct !{!170, !163}
!171 = !{!77, !10, i64 56}
!172 = !{!31, !6, i64 8}
!173 = !{!31, !10, i64 0}
!174 = !{!77, !10, i64 40}
!175 = !{!176, !176, i64 0}
!176 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!177 = !{!178, !10, i64 0}
!178 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !6, i64 8, !16, i64 16, !176, i64 20, !6, i64 24, !10, i64 32, !10, i64 36, !15, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!179 = !{!178, !10, i64 4}
!180 = !{!178, !6, i64 8}
!181 = !{!178, !176, i64 20}
!182 = !{!178, !6, i64 24}
!183 = !{!178, !10, i64 32}
!184 = !{!178, !10, i64 36}
!185 = !{!178, !15, i64 40}
!186 = !{!178, !10, i64 44}
!187 = !{!178, !10, i64 48}
!188 = !{!178, !10, i64 52}
!189 = !{!24, !14, i64 4}
!190 = distinct !{!190, !163}
!191 = !{!37, !14, i64 12}
!192 = !{!37, !14, i64 4}
!193 = distinct !{!193, !163}
!194 = !{!12, !6, i64 656}
!195 = distinct !{!195, !163}
!196 = !{!47, !14, i64 16}
!197 = !{!77, !14, i64 3712}
!198 = !{!46, !15, i64 123}
!199 = !{!46, !15, i64 23376}
!200 = !{!46, !14, i64 23388}
!201 = !{!46, !10, i64 18208}
!202 = !{!57, !10, i64 8}
!203 = !{!46, !10, i64 18236}
!204 = !{!57, !10, i64 4}
!205 = !{!46, !10, i64 18240}
!206 = !{!46, !15, i64 23560}
!207 = !{!24, !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.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [1 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [31 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no = external hidden unnamed_addr constant [2 x i32], align 4

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

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

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

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

declare <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #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 #5

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

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

declare noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

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

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

declare void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float>, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #4

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

declare void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #4

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) local_unnamed_addr #4

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #4

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

declare noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef, float noundef) local_unnamed_addr #4

declare noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) local_unnamed_addr #4

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) local_unnamed_addr #4

declare void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef, ptr noundef) local_unnamed_addr #4

declare void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef, ptr noundef) local_unnamed_addr #4

declare void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #4

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(973), ptr noundef, ptr noundef) local_unnamed_addr #4

declare <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float>, float noundef, float noundef) local_unnamed_addr #4

declare void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef, i32 noundef) local_unnamed_addr #4

declare void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #4

declare void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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

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

; 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 #10 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #1

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) local_unnamed_addr #4

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #4

declare void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

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

declare void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #4

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #4

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

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

declare void @_Z9ImStrncpyPcPKcm(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #4

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

60:                                               ; preds = %8
  %61 = icmp ne ptr %2, null
  %62 = icmp sgt i32 %3, -1
  %63 = and i1 %61, %62
  br i1 %63, label %65, label %64

64:                                               ; preds = %60
  tail call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.4, i32 noundef 3952, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

65:                                               ; preds = %60
  %66 = and i32 %5, 128
  %.not976.not = icmp eq i32 %66, 0
  %67 = and i32 %5, 67108864
  %68 = icmp ne i32 %67, 0
  %69 = and i32 %5, 67108992
  %.not977 = icmp eq i32 %69, 67108992
  br i1 %.not977, label %70, label %71

70:                                               ; preds = %65
  tail call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.4, i32 noundef 3953, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

71:                                               ; preds = %65
  %72 = and i32 %5, 64
  %.not978 = icmp eq i32 %72, 0
  %73 = and i32 %5, 1024
  %.not979 = icmp eq i32 %73, 0
  %74 = and i32 %5, 1088
  %.not980 = icmp eq i32 %74, 1088
  br i1 %.not980, label %75, label %76

75:                                               ; preds = %71
  tail call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.4, i32 noundef 3954, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

76:                                               ; preds = %71
  %77 = load ptr, ptr @GImGui, align 8, !tbaa !40
  %78 = getelementptr inbounds i8, ptr %77, i64 8
  %79 = and i32 %5, 16384
  %80 = icmp ne i32 %79, 0
  %81 = and i32 %5, 32768
  %.not981 = icmp eq i32 %81, 0
  %82 = and i32 %5, 65536
  %83 = icmp eq i32 %82, 0
  %84 = and i32 %5, 262144
  %.not982 = icmp eq i32 %84, 0
  %85 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not982, %85
  br i1 %or.cond17, label %87, label %86

86:                                               ; preds = %76
  tail call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.4, i32 noundef 3967, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

87:                                               ; preds = %76
  br i1 %68, label %88, label %89

88:                                               ; preds = %87
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %89

89:                                               ; preds = %88, %87
  %90 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(973) %56, ptr noundef %0, ptr noundef null)
  %91 = 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 %9) #15
  %.sroa.0531.0.copyload = load <2 x float>, ptr %4, align 4
  %92 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %68, label %93, label %97

93:                                               ; preds = %89
  %94 = getelementptr inbounds i8, ptr %77, i64 15360
  %95 = load float, ptr %94, align 8, !tbaa !41
  %96 = fmul float %95, 8.000000e+00
  br label %98

97:                                               ; preds = %89
  %.sroa.0532.4.vec.extract = extractelement <2 x float> %91, i64 1
  br label %98

98:                                               ; preds = %97, %93
  %99 = phi float [ %96, %93 ], [ %.sroa.0532.4.vec.extract, %97 ]
  %100 = getelementptr inbounds i8, ptr %77, i64 14364
  %101 = getelementptr inbounds i8, ptr %77, i64 14368
  %102 = load float, ptr %101, align 4, !tbaa !91
  %103 = tail call float @llvm.fmuladd.f32(float %102, float 2.000000e+00, float %99)
  %104 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0531.0.copyload, float noundef %92, float noundef %103)
  store <2 x float> %104, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #15
  %105 = extractelement <2 x float> %104, i64 0
  %.sroa.0532.0.vec.extract = extractelement <2 x float> %91, i64 0
  %106 = fcmp ogt float %.sroa.0532.0.vec.extract, 0.000000e+00
  %107 = extractelement <2 x float> %104, i64 1
  br i1 %106, label %108, label %112

108:                                              ; preds = %98
  %109 = getelementptr inbounds i8, ptr %77, i64 14388
  %110 = load float, ptr %109, align 4, !tbaa !92
  %111 = fadd float %.sroa.0532.0.vec.extract, %110
  br label %112

112:                                              ; preds = %98, %108
  %113 = phi float [ %111, %108 ], [ 0.000000e+00, %98 ]
  %114 = fadd float %105, %113
  %115 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %114, float noundef %107)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #15
  %116 = getelementptr inbounds i8, ptr %56, i64 248
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15
  %117 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %116, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %117, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %116, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #15
  %118 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %10)
  store <2 x float> %118, ptr %14, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %14)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #15
  %.sroa.0502.0.copyload = load float, ptr %9, align 8, !tbaa !93
  %.sroa.11.0.copyload = load float, ptr %115, align 4, !tbaa !93
  call void @llvm.lifetime.start.p0(i64 60, ptr nonnull %15) #15
  call void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(60) %15)
  br i1 %68, label %119, label %151

119:                                              ; preds = %112
  %120 = load i64, ptr %116, align 8
  %121 = load float, ptr %101, align 4, !tbaa !91
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %121)
  %122 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %90, ptr noundef nonnull %11, i32 noundef 1024)
  br i1 %122, label %124, label %123

123:                                              ; preds = %119
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread

124:                                              ; preds = %119
  %125 = getelementptr inbounds i8, ptr %77, i64 18236
  %126 = getelementptr inbounds i8, ptr %77, i64 18244
  %127 = load i32, ptr %126, align 4, !tbaa !94
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(60) %15, ptr noundef nonnull align 4 dereferenceable(60) %125, i64 60, i1 false), !tbaa.struct !95
  store i64 %120, ptr %116, align 8
  %128 = getelementptr inbounds i8, ptr %77, i64 14616
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %128)
  %129 = getelementptr inbounds i8, ptr %77, i64 14372
  %130 = load float, ptr %129, align 4, !tbaa !97
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %130)
  %131 = getelementptr inbounds i8, ptr %77, i64 14376
  %132 = load float, ptr %131, align 4, !tbaa !98
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %132)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(8) %16)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #15
  %133 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %133, ptr %17, align 8
  %134 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %0, i32 noundef %90, ptr noundef nonnull align 4 dereferenceable(8) %17, i1 noundef zeroext true, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #15
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  br i1 %134, label %136, label %135

135:                                              ; preds = %124
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread

136:                                              ; preds = %124
  %137 = getelementptr inbounds i8, ptr %77, i64 16032
  %138 = load ptr, ptr %137, align 8, !tbaa !99
  %139 = getelementptr inbounds i8, ptr %138, i64 248
  %140 = getelementptr inbounds i8, ptr %138, i64 336
  %141 = load i32, ptr %140, align 8, !tbaa !100
  %142 = shl nuw i32 1, %141
  %143 = getelementptr inbounds i8, ptr %138, i64 342
  %144 = load i16, ptr %143, align 2, !tbaa !101
  %145 = trunc i32 %142 to i16
  %146 = or i16 %144, %145
  store i16 %146, ptr %143, align 2, !tbaa !101
  %147 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %139, ptr noundef nonnull align 4 dereferenceable(8) %100)
  %148 = getelementptr inbounds i8, ptr %138, i64 164
  %149 = load float, ptr %148, align 4, !tbaa !102
  %150 = fsub float %.sroa.0502.0.copyload, %149
  br label %159

151:                                              ; preds = %112
  %152 = load float, ptr %101, align 4, !tbaa !91
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %152)
  %153 = and i32 %5, 268435456
  %.not983 = icmp eq i32 %153, 0
  br i1 %.not983, label %154, label %156

154:                                              ; preds = %151
  %155 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %90, ptr noundef nonnull %11, i32 noundef 1024)
  br i1 %155, label %156, label %.thread

156:                                              ; preds = %154, %151
  %157 = getelementptr inbounds i8, ptr %77, i64 18244
  %158 = load i32, ptr %157, align 4, !tbaa !94
  br label %159

159:                                              ; preds = %136, %156
  %.1897 = phi i32 [ %127, %136 ], [ %158, %156 ]
  %.sroa.0502.2 = phi float [ %150, %136 ], [ %.sroa.0502.0.copyload, %156 ]
  %.2895 = phi ptr [ %138, %136 ], [ %56, %156 ]
  %160 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %90)
  br i1 %160, label %161, label %163

161:                                              ; preds = %159
  %162 = getelementptr inbounds i8, ptr %77, i64 18984
  store i32 1, ptr %162, align 8, !tbaa !103
  br label %163

163:                                              ; preds = %161, %159
  %164 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %90)
  %165 = and i32 %.1897, 256
  %166 = icmp ne i32 %165, 0
  %167 = getelementptr inbounds i8, ptr %77, i64 16128
  %168 = load i32, ptr %167, align 8, !tbaa !104
  %.not984 = icmp eq i32 %168, %90
  br i1 %.not984, label %181, label %169

169:                                              ; preds = %163
  %170 = getelementptr inbounds i8, ptr %77, i64 18588
  %171 = load i32, ptr %170, align 4, !tbaa !105
  %172 = icmp eq i32 %171, %90
  br i1 %172, label %181, label %173

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %77, i64 18576
  %175 = load i32, ptr %174, align 8, !tbaa !106
  %176 = icmp eq i32 %175, %90
  br i1 %176, label %177, label %181

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %77, i64 18616
  %179 = load i32, ptr %178, align 8, !tbaa !107
  %180 = icmp eq i32 %179, 2
  br label %181

181:                                              ; preds = %169, %177, %173, %163
  %182 = phi i1 [ false, %163 ], [ true, %169 ], [ false, %173 ], [ %180, %177 ]
  br i1 %160, label %183, label %187

183:                                              ; preds = %181
  %184 = getelementptr inbounds i8, ptr %77, i64 14136
  %185 = load i8, ptr %184, align 8, !tbaa !108, !range !38, !noundef !39
  %186 = trunc nuw i8 %185 to i1
  br label %187

187:                                              ; preds = %183, %181
  %188 = phi i1 [ false, %181 ], [ %186, %183 ]
  %189 = icmp ne ptr %164, null
  %or.cond = and i1 %68, %189
  br i1 %or.cond, label %190, label %200

190:                                              ; preds = %187
  %191 = icmp eq i32 %168, 0
  br i1 %191, label %192, label %.thread1134

192:                                              ; preds = %190
  %193 = getelementptr inbounds i8, ptr %77, i64 16176
  %194 = load i32, ptr %193, align 8, !tbaa !109
  %195 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2895, i32 noundef 1)
  %196 = icmp eq i32 %194, %195
  %.pre = load i32, ptr %167, align 8, !tbaa !104
  br label %.thread1134

.thread1134:                                      ; preds = %190, %192
  %197 = phi i32 [ %.pre, %192 ], [ %168, %190 ]
  %.ph = phi i1 [ %196, %192 ], [ false, %190 ]
  %198 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2895, i32 noundef 1)
  %199 = icmp eq i32 %197, %198
  br label %201

200:                                              ; preds = %187
  br i1 %68, label %201, label %206

201:                                              ; preds = %.thread1134, %200
  %202 = phi i1 [ %199, %.thread1134 ], [ false, %200 ]
  %203 = phi i1 [ %.ph, %.thread1134 ], [ false, %200 ]
  %204 = getelementptr inbounds i8, ptr %.2895, i64 128
  %205 = load float, ptr %204, align 4, !tbaa !110
  br label %206

206:                                              ; preds = %200, %201
  %207 = phi i1 [ %202, %201 ], [ false, %200 ]
  %208 = phi i1 [ %203, %201 ], [ false, %200 ]
  %209 = phi float [ %205, %201 ], [ 0x47EFFFFFE0000000, %200 ]
  br i1 %189, label %210, label %.thread1135

210:                                              ; preds = %206
  %211 = getelementptr inbounds i8, ptr %164, i64 107
  %212 = load i8, ptr %211, align 1, !tbaa !111
  %213 = xor i1 %68, true
  %214 = zext i1 %213 to i8
  %215 = icmp ne i8 %212, %214
  %brmerge = select i1 %188, i1 true, i1 %208
  %216 = select i1 %brmerge, i1 true, i1 %182
  %spec.select1125 = select i1 %216, i1 true, i1 %166
  %217 = select i1 %spec.select1125, i1 true, i1 %207
  br i1 %217, label %220, label %223

.thread1135:                                      ; preds = %206
  %brmerge1136 = select i1 %188, i1 true, i1 %208
  %218 = select i1 %brmerge1136, i1 true, i1 %182
  %spec.select11251138 = select i1 %218, i1 true, i1 %166
  %219 = select i1 %spec.select11251138, i1 true, i1 %207
  br i1 %219, label %220, label %.sink.split

220:                                              ; preds = %.thread1135, %210
  %spec.select11251142 = phi i1 [ %spec.select11251138, %.thread1135 ], [ %spec.select1125, %210 ]
  %221 = phi i1 [ false, %.thread1135 ], [ %215, %210 ]
  %222 = load i32, ptr %167, align 8, !tbaa !104
  %.not985 = icmp ne i32 %222, %90
  %brmerge1023 = select i1 %.not985, i1 true, i1 %221
  br i1 %brmerge1023, label %224, label %.thread1143

223:                                              ; preds = %210
  br i1 %215, label %224, label %.sink.split

224:                                              ; preds = %220, %223
  %225 = phi i8 [ 1, %220 ], [ 0, %223 ]
  %spec.select11251140 = phi i1 [ %spec.select11251142, %220 ], [ false, %223 ]
  %226 = phi i1 [ %221, %220 ], [ true, %223 ]
  %227 = getelementptr inbounds i8, ptr %77, i64 19384
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %227)
  %228 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16
  %229 = trunc i64 %228 to i32
  %230 = getelementptr inbounds i8, ptr %77, i64 19440
  %231 = add nsw i32 %229, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %230, i32 noundef %231)
  %232 = getelementptr inbounds i8, ptr %77, i64 19448
  %233 = load ptr, ptr %232, align 8, !tbaa !112
  %234 = sext i32 %231 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %233, ptr nonnull align 1 %2, i64 %234, i1 false)
  %235 = getelementptr inbounds i8, ptr %77, i64 19392
  %236 = load i32, ptr %235, align 8, !tbaa !113
  %237 = icmp ne i32 %236, %90
  %.not1183 = select i1 %237, i1 true, i1 %226
  br i1 %.not1183, label %251, label %238

238:                                              ; preds = %224
  %239 = getelementptr inbounds i8, ptr %77, i64 19400
  %240 = load i32, ptr %239, align 8, !tbaa !114
  %.not986 = icmp eq i32 %240, %229
  br i1 %.not986, label %241, label %250

241:                                              ; preds = %238
  %242 = getelementptr inbounds i8, ptr %77, i64 19456
  %243 = load i8, ptr %242, align 8, !tbaa !115, !range !38, !noundef !39
  %244 = trunc nuw i8 %243 to i1
  br i1 %244, label %245, label %251

245:                                              ; preds = %241
  %246 = getelementptr inbounds i8, ptr %77, i64 19432
  %247 = load ptr, ptr %246, align 8, !tbaa !116
  %sext = shl i64 %228, 32
  %248 = ashr exact i64 %sext, 32
  %249 = call i32 @strncmp(ptr noundef %247, ptr noundef nonnull %2, i64 noundef %248) #16
  %.not987 = icmp eq i32 %249, 0
  br i1 %.not987, label %251, label %250

250:                                              ; preds = %245, %238
  br label %251

251:                                              ; preds = %250, %245, %241, %224
  %.0910.shrunk = phi i1 [ false, %250 ], [ true, %245 ], [ true, %241 ], [ false, %224 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #15
  store ptr null, ptr %18, align 8, !tbaa !40
  store i32 %90, ptr %235, align 8, !tbaa !113
  %252 = getelementptr inbounds i8, ptr %77, i64 19408
  %253 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %252, i32 noundef %253)
  %254 = getelementptr inbounds i8, ptr %77, i64 19424
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %254, i32 noundef 0)
  %255 = getelementptr inbounds i8, ptr %77, i64 19456
  store i8 0, ptr %255, align 8, !tbaa !115
  %256 = getelementptr inbounds i8, ptr %77, i64 19416
  %257 = load ptr, ptr %256, align 8, !tbaa !117
  %258 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %257, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %18)
  %259 = getelementptr inbounds i8, ptr %77, i64 19396
  store i32 %258, ptr %259, align 4, !tbaa !118
  %260 = load ptr, ptr %18, align 8, !tbaa !40
  %261 = ptrtoint ptr %260 to i64
  %262 = ptrtoint ptr %2 to i64
  %263 = sub i64 %261, %262
  %264 = trunc i64 %263 to i32
  %265 = getelementptr inbounds i8, ptr %77, i64 19400
  store i32 %264, ptr %265, align 8, !tbaa !114
  br i1 %.0910.shrunk, label %266, label %267

266:                                              ; preds = %251
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %227)
  br label %272

267:                                              ; preds = %251
  %268 = getelementptr inbounds i8, ptr %77, i64 19464
  store float 0.000000e+00, ptr %268, align 8, !tbaa !119
  %269 = getelementptr inbounds i8, ptr %77, i64 19468
  %270 = xor i1 %68, true
  %271 = zext i1 %270 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %269, i32 noundef %271)
  br label %272

272:                                              ; preds = %267, %266
  br i1 %68, label %289, label %273

273:                                              ; preds = %272
  %274 = trunc i32 %5 to i8
  %275 = lshr i8 %274, 4
  br i1 %182, label %276, label %282

276:                                              ; preds = %273
  br i1 %.0910.shrunk, label %277, label %281

277:                                              ; preds = %276
  %278 = getelementptr inbounds i8, ptr %77, i64 18592
  %279 = load i32, ptr %278, align 8, !tbaa !120
  %280 = and i32 %279, 4
  %.not989 = icmp eq i32 %280, 0
  br i1 %.not989, label %281, label %282

281:                                              ; preds = %277, %276
  br label %282

282:                                              ; preds = %281, %277, %273
  %.1904 = phi i8 [ %275, %277 ], [ 1, %281 ], [ %275, %273 ]
  br i1 %166, label %288, label %283

283:                                              ; preds = %282
  br i1 %188, label %284, label %289

284:                                              ; preds = %283
  %285 = getelementptr inbounds i8, ptr %77, i64 3604
  %286 = load i8, ptr %285, align 4, !tbaa !121, !range !38, !noundef !39
  %287 = trunc nuw i8 %286 to i1
  br i1 %287, label %288, label %289

288:                                              ; preds = %284, %282
  br label %289

289:                                              ; preds = %283, %284, %288, %272
  %.2905 = phi i8 [ 0, %272 ], [ 1, %288 ], [ %.1904, %284 ], [ %.1904, %283 ]
  %290 = and i32 %5, 8192
  %.not990 = icmp eq i32 %290, 0
  br i1 %.not990, label %293, label %291

291:                                              ; preds = %289
  %292 = getelementptr inbounds i8, ptr %77, i64 19480
  store i8 1, ptr %292, align 4, !tbaa !122
  br label %293

293:                                              ; preds = %291, %289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #15
  br label %.thread1143

.thread1143:                                      ; preds = %220, %293
  %294 = phi i8 [ %225, %293 ], [ 1, %220 ]
  %spec.select11251139 = phi i1 [ %spec.select11251140, %293 ], [ %spec.select11251142, %220 ]
  %.3906 = phi i8 [ %.2905, %293 ], [ 0, %220 ]
  %.0898 = phi ptr [ %227, %293 ], [ %164, %220 ]
  %295 = load i32, ptr %167, align 8, !tbaa !104
  %.not991 = icmp ne i32 %295, %90
  %brmerge1026.not = and i1 %spec.select11251139, %.not991
  br i1 %brmerge1026.not, label %296, label %303

296:                                              ; preds = %.thread1143
  %.not992 = icmp eq ptr %.0898, null
  br i1 %.not992, label %.critedge, label %297

297:                                              ; preds = %296
  %298 = getelementptr inbounds i8, ptr %.0898, i64 8
  %299 = load i32, ptr %298, align 8, !tbaa !113
  %300 = icmp eq i32 %299, %90
  br i1 %300, label %301, label %.critedge

.critedge:                                        ; preds = %296, %297
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.4, i32 noundef 4101, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

301:                                              ; preds = %297
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %90, ptr noundef nonnull %56)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %90, ptr noundef nonnull %56)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %56)
  br label %.sink.split

.sink.split:                                      ; preds = %.thread1135, %223, %301
  %.08981228.ph = phi ptr [ %.0898, %301 ], [ %164, %223 ], [ %164, %.thread1135 ]
  %.39061227.ph = phi i8 [ %.3906, %301 ], [ 0, %223 ], [ 0, %.thread1135 ]
  %.ph1262 = phi i8 [ %294, %301 ], [ 0, %223 ], [ 0, %.thread1135 ]
  %302 = load i32, ptr %167, align 8, !tbaa !104
  br label %303

303:                                              ; preds = %.sink.split, %.thread1143
  %.08981228 = phi ptr [ %.0898, %.thread1143 ], [ %.08981228.ph, %.sink.split ]
  %.39061227 = phi i8 [ %.3906, %.thread1143 ], [ %.39061227.ph, %.sink.split ]
  %304 = phi i8 [ %294, %.thread1143 ], [ %.ph1262, %.sink.split ]
  %305 = phi i32 [ %295, %.thread1143 ], [ %302, %.sink.split ]
  %306 = icmp eq i32 %305, %90
  br i1 %306, label %307, label %315

307:                                              ; preds = %303
  br i1 %188, label %308, label %309

308:                                              ; preds = %307
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 641, i32 noundef %90, i32 noundef 0)
  br label %309

309:                                              ; preds = %308, %307
  %310 = getelementptr inbounds i8, ptr %77, i64 18192
  %311 = load i32, ptr %310, align 8, !tbaa !123
  %brmerge1027.not = icmp eq i32 %69, 0
  %spec.select.v = select i1 %brmerge1027.not, i32 3, i32 15
  %spec.select = or i32 %311, %spec.select.v
  store i32 %spec.select, ptr %310, align 8, !tbaa !123
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 519, i32 noundef %90, i32 noundef 0)
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 520, i32 noundef %90, i32 noundef 0)
  br i1 %68, label %312, label %313

312:                                              ; preds = %309
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 517, i32 noundef %90, i32 noundef 0)
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 518, i32 noundef %90, i32 noundef 0)
  br label %313

313:                                              ; preds = %312, %309
  %.not993 = icmp eq i32 %74, 0
  br i1 %.not993, label %315, label %314

314:                                              ; preds = %313
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 512, i32 noundef %90, i32 noundef 0)
  br label %315

315:                                              ; preds = %313, %314, %303
  %316 = load i32, ptr %167, align 8, !tbaa !104
  %317 = icmp eq i32 %316, %90
  %318 = icmp eq ptr %.08981228, null
  %or.cond5 = and i1 %318, %317
  br i1 %or.cond5, label %319, label %320

319:                                              ; preds = %315
  call void @_ZN5ImGui13ClearActiveIDEv()
  %.pre1202 = load i32, ptr %167, align 8, !tbaa !104
  br label %320

320:                                              ; preds = %319, %315
  %321 = phi i32 [ %.pre1202, %319 ], [ %316, %315 ]
  %322 = icmp eq i32 %321, %90
  br i1 %322, label %.thread1145, label %325

.thread1145:                                      ; preds = %320
  %323 = getelementptr inbounds i8, ptr %77, i64 14136
  %324 = load i8, ptr %323, align 8, !tbaa !108, !range !38, !noundef !39
  %.not1186 = xor i8 %304, 1
  %not.brmerge1029 = and i8 %324, %.not1186
  br label %328

325:                                              ; preds = %320
  %326 = icmp ne ptr %.08981228, null
  %327 = select i1 %326, i1 %207, i1 false
  br label %328

328:                                              ; preds = %.thread1145, %325
  %.08991147 = phi i8 [ 0, %325 ], [ %not.brmerge1029, %.thread1145 ]
  %329 = phi i1 [ %327, %325 ], [ true, %.thread1145 ]
  %330 = zext i1 %329 to i8
  %331 = icmp ne ptr %.08981228, null
  br i1 %331, label %332, label %.thread1148

332:                                              ; preds = %328
  %333 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br i1 %333, label %336, label %334

334:                                              ; preds = %332
  %335 = trunc i8 %.39061227 to i1
  br i1 %335, label %336, label %337

336:                                              ; preds = %334, %332
  br label %337

337:                                              ; preds = %336, %334
  %338 = phi i1 [ false, %334 ], [ %329, %336 ]
  %brmerge1030 = or i1 %329, %338
  %or.cond1123 = select i1 %80, i1 %brmerge1030, i1 false
  br i1 %or.cond1123, label %339, label %.thread1148

339:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #15
  store ptr null, ptr %19, align 8, !tbaa !40
  %340 = getelementptr inbounds i8, ptr %.08981228, i64 24
  %341 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %340, i32 noundef %341)
  %342 = getelementptr inbounds i8, ptr %.08981228, i64 32
  %343 = load ptr, ptr %342, align 8, !tbaa !117
  %344 = load i32, ptr %340, align 8, !tbaa !124
  %345 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %343, i32 noundef %344, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %19)
  %346 = getelementptr inbounds i8, ptr %.08981228, i64 12
  store i32 %345, ptr %346, align 4, !tbaa !118
  %347 = load ptr, ptr %19, align 8, !tbaa !40
  %348 = ptrtoint ptr %347 to i64
  %349 = ptrtoint ptr %2 to i64
  %350 = sub i64 %348, %349
  %351 = trunc i64 %350 to i32
  %352 = getelementptr inbounds i8, ptr %.08981228, i64 16
  store i32 %351, ptr %352, align 8, !tbaa !114
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  %353 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  %354 = and i1 %338, %353
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #15
  br label %.thread1148

.thread1148:                                      ; preds = %328, %339, %337
  %.0913.in = phi i1 [ %354, %339 ], [ %338, %337 ], [ false, %328 ]
  %.0913 = zext i1 %.0913.in to i8
  %brmerge1031 = select i1 %329, i1 true, i1 %.0913.in
  br i1 %brmerge1031, label %359, label %355

355:                                              ; preds = %.thread1148
  %356 = load i32, ptr %167, align 8, !tbaa !104
  %357 = icmp eq i32 %356, %90
  %.not = xor i1 %80, true
  %358 = and i1 %357, %.not
  %or.cond1032 = and i1 %331, %358
  br i1 %or.cond1032, label %360, label %364

359:                                              ; preds = %.thread1148
  %.not.old = xor i1 %80, true
  %or.cond9.old = and i1 %331, %.not.old
  br i1 %or.cond9.old, label %360, label %364

360:                                              ; preds = %355, %359
  %361 = getelementptr inbounds i8, ptr %.08981228, i64 72
  %362 = load i8, ptr %361, align 8, !tbaa !115, !range !38, !noundef !39
  %363 = trunc nuw i8 %362 to i1
  br label %364

364:                                              ; preds = %360, %359, %355
  %365 = phi i1 [ false, %359 ], [ false, %355 ], [ %363, %360 ]
  %.not994 = icmp eq ptr %1, null
  br i1 %.not994, label %374, label %366

366:                                              ; preds = %364
  br i1 %365, label %367, label %370

367:                                              ; preds = %366
  %368 = getelementptr inbounds i8, ptr %.08981228, i64 48
  %369 = load ptr, ptr %368, align 8, !tbaa !116
  br label %370

370:                                              ; preds = %366, %367
  %371 = phi ptr [ %369, %367 ], [ %2, %366 ]
  %372 = load i8, ptr %371, align 1, !tbaa !125
  %373 = icmp eq i8 %372, 0
  br label %374

374:                                              ; preds = %370, %364
  %375 = phi i1 [ false, %364 ], [ %373, %370 ]
  %brmerge1033 = select i1 %.not981, i1 true, i1 %375
  br i1 %brmerge1033, label %406, label %376

376:                                              ; preds = %374
  %377 = getelementptr inbounds i8, ptr %77, i64 15352
  %378 = load ptr, ptr %377, align 8, !tbaa !126
  %379 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110) %378, i16 noundef zeroext 42)
  %380 = getelementptr inbounds i8, ptr %77, i64 23112
  %381 = load ptr, ptr %377, align 8, !tbaa !126
  %382 = getelementptr inbounds i8, ptr %381, i64 20
  %383 = load float, ptr %382, align 4, !tbaa !127
  %384 = getelementptr inbounds i8, ptr %77, i64 23132
  store float %383, ptr %384, align 4, !tbaa !127
  %385 = getelementptr inbounds i8, ptr %381, i64 92
  %386 = getelementptr inbounds i8, ptr %77, i64 23204
  %387 = load <2 x float>, ptr %385, align 4, !tbaa !93
  store <2 x float> %387, ptr %386, align 4, !tbaa !93
  %388 = getelementptr inbounds i8, ptr %381, i64 100
  %389 = load float, ptr %388, align 4, !tbaa !128
  %390 = getelementptr inbounds i8, ptr %77, i64 23212
  store float %389, ptr %390, align 4, !tbaa !128
  %391 = getelementptr inbounds i8, ptr %381, i64 64
  %392 = load ptr, ptr %391, align 8, !tbaa !129
  %393 = getelementptr inbounds i8, ptr %77, i64 23176
  store ptr %392, ptr %393, align 8, !tbaa !129
  %394 = getelementptr inbounds i8, ptr %77, i64 23168
  store ptr %379, ptr %394, align 8, !tbaa !130
  %395 = getelementptr inbounds i8, ptr %379, i64 4
  %396 = load float, ptr %395, align 4, !tbaa !131
  %397 = getelementptr inbounds i8, ptr %77, i64 23128
  store float %396, ptr %397, align 8, !tbaa !133
  %398 = getelementptr inbounds i8, ptr %77, i64 23152
  %399 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %398)
  br i1 %399, label %400, label %.critedge11

400:                                              ; preds = %376
  %401 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %380)
  br i1 %401, label %402, label %.critedge11

402:                                              ; preds = %400
  %403 = getelementptr inbounds i8, ptr %77, i64 23136
  %404 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %403)
  br i1 %404, label %405, label %.critedge11

.critedge11:                                      ; preds = %400, %376, %402
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.4, i32 noundef 4167, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

405:                                              ; preds = %402
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %380)
  br label %406

406:                                              ; preds = %374, %405
  %407 = load i32, ptr %167, align 8, !tbaa !104
  %408 = icmp eq i32 %407, %90
  br i1 %408, label %409, label %576

409:                                              ; preds = %406
  br i1 %331, label %411, label %410

410:                                              ; preds = %409
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.4, i32 noundef 4175, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

411:                                              ; preds = %409
  %412 = getelementptr inbounds i8, ptr %.08981228, i64 16
  %413 = load i32, ptr %412, align 8, !tbaa !114
  %414 = getelementptr inbounds i8, ptr %.08981228, i64 3718
  store i8 0, ptr %414, align 2, !tbaa !134
  %415 = getelementptr inbounds i8, ptr %.08981228, i64 76
  store i32 %3, ptr %415, align 4, !tbaa !135
  %416 = getelementptr inbounds i8, ptr %.08981228, i64 3720
  store i32 %5, ptr %416, align 8, !tbaa !136
  %417 = getelementptr inbounds i8, ptr %77, i64 3588
  %418 = load i8, ptr %417, align 4, !tbaa !108, !range !38, !noundef !39
  %419 = xor i8 %418, 1
  %420 = getelementptr inbounds i8, ptr %77, i64 16141
  store i8 %419, ptr %420, align 1, !tbaa !137
  %421 = getelementptr inbounds i8, ptr %77, i64 23996
  store i32 1, ptr %421, align 4, !tbaa !138
  %422 = getelementptr inbounds i8, ptr %77, i64 3580
  %423 = load float, ptr %422, align 4, !tbaa !139
  %424 = load float, ptr %11, align 8, !tbaa !140
  %425 = fsub float %423, %424
  %426 = load float, ptr %100, align 4, !tbaa !141
  %427 = fsub float %425, %426
  %428 = getelementptr inbounds i8, ptr %.08981228, i64 80
  %429 = load float, ptr %428, align 8, !tbaa !119
  %430 = fadd float %427, %429
  br i1 %68, label %431, label %437

431:                                              ; preds = %411
  %432 = getelementptr inbounds i8, ptr %77, i64 3584
  %433 = load float, ptr %432, align 4, !tbaa !142
  %434 = getelementptr inbounds i8, ptr %.2895, i64 252
  %435 = load float, ptr %434, align 4, !tbaa !143
  %436 = fsub float %433, %435
  br label %441

437:                                              ; preds = %411
  %438 = getelementptr inbounds i8, ptr %77, i64 15360
  %439 = load float, ptr %438, align 8, !tbaa !41
  %440 = fmul float %439, 5.000000e-01
  br label %441

441:                                              ; preds = %437, %431
  %442 = phi float [ %436, %431 ], [ %440, %437 ]
  %443 = getelementptr inbounds i8, ptr %77, i64 121
  %444 = load i8, ptr %443, align 1, !tbaa !144, !range !38, !noundef !39
  %445 = trunc nuw i8 %444 to i1
  %446 = trunc i8 %.39061227 to i1
  br i1 %446, label %447, label %449

447:                                              ; preds = %441
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  %448 = getelementptr inbounds i8, ptr %.08981228, i64 3717
  store i8 1, ptr %448, align 1, !tbaa !145
  br label %524

449:                                              ; preds = %441
  br i1 %160, label %450, label %490

450:                                              ; preds = %449
  %451 = getelementptr inbounds i8, ptr %77, i64 14146
  %452 = load i16, ptr %451, align 2, !tbaa !146
  %453 = icmp ugt i16 %452, 1
  br i1 %453, label %454, label %490

454:                                              ; preds = %450
  %455 = getelementptr inbounds i8, ptr %77, i64 3605
  %456 = load i8, ptr %455, align 1, !tbaa !147, !range !38, !noundef !39
  %457 = trunc nuw i8 %456 to i1
  br i1 %457, label %490, label %458

458:                                              ; preds = %454
  %459 = getelementptr inbounds i8, ptr %.08981228, i64 84
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08981228, ptr noundef nonnull %459, float noundef %430, float noundef %442)
  %460 = load i16, ptr %451, align 2, !tbaa !146
  %461 = and i16 %460, 1
  %462 = icmp eq i16 %461, 0
  %463 = load i32, ptr %459, align 4, !tbaa !148
  br i1 %462, label %464, label %480

464:                                              ; preds = %458
  %465 = icmp eq i32 %463, 0
  br i1 %465, label %470, label %466

466:                                              ; preds = %464
  %467 = add nsw i32 %463, -1
  %468 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.08981228, i32 noundef %467)
  %469 = icmp eq i16 %468, 10
  br label %470

470:                                              ; preds = %466, %464
  %471 = phi i1 [ true, %464 ], [ %469, %466 ]
  %472 = getelementptr inbounds i8, ptr %.08981228, i64 88
  %473 = load i32, ptr %472, align 4, !tbaa !149
  %474 = getelementptr inbounds i8, ptr %.08981228, i64 92
  %475 = load i32, ptr %474, align 4, !tbaa !150
  %.not995 = icmp eq i32 %473, %475
  %brmerge1035.not = and i1 %471, %.not995
  br i1 %brmerge1035.not, label %.thread1236, label %476

476:                                              ; preds = %470
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef 2097164)
  %.pre1203 = load i32, ptr %472, align 4, !tbaa !149
  %.pre1204 = load i32, ptr %474, align 4, !tbaa !150
  %.not996 = icmp eq i32 %.pre1203, %.pre1204
  br i1 %.not996, label %.thread1236, label %477

.thread1236:                                      ; preds = %470, %476
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef nonnull %459)
  br label %477

477:                                              ; preds = %.thread1236, %476
  %478 = load i32, ptr %459, align 4, !tbaa !148
  %479 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef nonnull %.08981228, i32 noundef %478)
  store i32 %479, ptr %459, align 4, !tbaa !148
  store i32 %479, ptr %474, align 4, !tbaa !150
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.08981228, ptr noundef nonnull %459)
  br label %489

480:                                              ; preds = %458
  %481 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.08981228, i32 noundef %463)
  %482 = icmp ne i16 %481, 10
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef 2097156)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef 6291461)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef 6291457)
  %brmerge1037.not = and i1 %68, %482
  br i1 %brmerge1037.not, label %483, label %487

483:                                              ; preds = %480
  %484 = getelementptr inbounds i8, ptr %.08981228, i64 88
  %485 = getelementptr inbounds i8, ptr %.08981228, i64 92
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %484, ptr noundef nonnull align 4 dereferenceable(4) %485)
  %486 = load i32, ptr %485, align 4, !tbaa !150
  store i32 %486, ptr %459, align 4, !tbaa !148
  br label %487

487:                                              ; preds = %480, %483
  %488 = getelementptr inbounds i8, ptr %.08981228, i64 3716
  store i8 0, ptr %488, align 4, !tbaa !151
  br label %489

489:                                              ; preds = %487, %477
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br label %524

490:                                              ; preds = %454, %450, %449
  %491 = getelementptr inbounds i8, ptr %77, i64 14136
  %492 = load i8, ptr %491, align 8, !tbaa !108, !range !38, !noundef !39
  %493 = trunc nuw i8 %492 to i1
  br i1 %493, label %494, label %507

494:                                              ; preds = %490
  %495 = getelementptr inbounds i8, ptr %.08981228, i64 3717
  %496 = load i8, ptr %495, align 1, !tbaa !145, !range !38, !noundef !39
  %497 = trunc nuw i8 %496 to i1
  br i1 %497, label %507, label %498

498:                                              ; preds = %494
  br i1 %160, label %499, label %524

499:                                              ; preds = %498
  %500 = getelementptr inbounds i8, ptr %77, i64 3605
  %501 = load i8, ptr %500, align 1, !tbaa !147, !range !38, !noundef !39
  %502 = trunc nuw i8 %501 to i1
  %503 = getelementptr inbounds i8, ptr %.08981228, i64 84
  br i1 %502, label %504, label %505

504:                                              ; preds = %499
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08981228, ptr noundef nonnull %503, float noundef %430, float noundef %442)
  br label %506

505:                                              ; preds = %499
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08981228, ptr noundef nonnull %503, float noundef %430, float noundef %442)
  br label %506

506:                                              ; preds = %505, %504
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br label %524

507:                                              ; preds = %494, %490
  %508 = trunc nuw i8 %418 to i1
  br i1 %508, label %509, label %524

509:                                              ; preds = %507
  %510 = getelementptr inbounds i8, ptr %.08981228, i64 3717
  %511 = load i8, ptr %510, align 1, !tbaa !145, !range !38, !noundef !39
  %512 = trunc nuw i8 %511 to i1
  br i1 %512, label %524, label %513

513:                                              ; preds = %509
  %514 = getelementptr inbounds i8, ptr %77, i64 248
  %515 = load float, ptr %514, align 8, !tbaa !152
  %516 = fcmp une float %515, 0.000000e+00
  br i1 %516, label %521, label %517

517:                                              ; preds = %513
  %518 = getelementptr inbounds i8, ptr %77, i64 252
  %519 = load float, ptr %518, align 4, !tbaa !153
  %520 = fcmp une float %519, 0.000000e+00
  br i1 %520, label %521, label %524

521:                                              ; preds = %517, %513
  %522 = getelementptr inbounds i8, ptr %.08981228, i64 84
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08981228, ptr noundef nonnull %522, float noundef %430, float noundef %442)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  %523 = getelementptr inbounds i8, ptr %.08981228, i64 3716
  store i8 1, ptr %523, align 4, !tbaa !151
  br label %524

524:                                              ; preds = %489, %507, %509, %517, %521, %498, %506, %447
  %525 = getelementptr inbounds i8, ptr %.08981228, i64 3717
  %526 = load i8, ptr %525, align 1, !tbaa !145, !range !38, !noundef !39
  %527 = trunc nuw i8 %526 to i1
  br i1 %527, label %528, label %532

528:                                              ; preds = %524
  %529 = load i8, ptr %417, align 4, !tbaa !108, !range !38, !noundef !39
  %530 = trunc nuw i8 %529 to i1
  br i1 %530, label %532, label %531

531:                                              ; preds = %528
  store i8 0, ptr %525, align 1, !tbaa !145
  br label %532

532:                                              ; preds = %531, %528, %524
  %533 = getelementptr inbounds i8, ptr %77, i64 3604
  %534 = load i8, ptr %533, align 4, !tbaa !121, !range !38, !noundef !39
  %535 = trunc nuw i8 %534 to i1
  br i1 %535, label %536, label %541

536:                                              ; preds = %532
  %537 = getelementptr inbounds i8, ptr %77, i64 3606
  %538 = load i8, ptr %537, align 2, !tbaa !154, !range !38, !noundef !39
  %539 = trunc nuw i8 %538 to i1
  %.not1038 = xor i1 %539, true
  %540 = select i1 %539, i1 %445, i1 false
  br i1 %540, label %542, label %546

541:                                              ; preds = %532
  br i1 %445, label %542, label %546

542:                                              ; preds = %536, %541
  %543 = getelementptr inbounds i8, ptr %77, i64 3607
  %544 = load i8, ptr %543, align 1, !tbaa !155, !range !38, !noundef !39
  %545 = trunc nuw i8 %544 to i1
  br label %546

546:                                              ; preds = %536, %541, %542
  %547 = phi i1 [ %.not1038, %536 ], [ false, %541 ], [ %545, %542 ]
  br i1 %.not979, label %559, label %548

548:                                              ; preds = %546
  %549 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 512, i1 noundef zeroext true)
  %.not1041 = xor i1 %549, true
  %brmerge1042 = select i1 %.not1041, i1 true, i1 %547
  br i1 %brmerge1042, label %559, label %550

550:                                              ; preds = %548
  %551 = getelementptr inbounds i8, ptr %77, i64 3605
  %552 = load i8, ptr %551, align 1, !tbaa !147, !range !38, !noundef !39
  %553 = trunc nuw i8 %552 to i1
  %brmerge1043 = or i1 %80, %553
  br i1 %brmerge1043, label %559, label %554

554:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #15
  store i32 9, ptr %20, align 4, !tbaa !96
  %555 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %555, label %556, label %558

556:                                              ; preds = %554
  %557 = load i32, ptr %20, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %557)
  br label %558

558:                                              ; preds = %556, %554
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #15
  br label %559

559:                                              ; preds = %550, %548, %558, %546
  %560 = getelementptr inbounds i8, ptr %77, i64 14256
  %561 = load i32, ptr %560, align 8, !tbaa !156
  %562 = icmp sgt i32 %561, 0
  br i1 %562, label %563, label %576

563:                                              ; preds = %559
  %brmerge1044 = or i1 %80, %547
  %brmerge1045 = select i1 %brmerge1044, i1 true, i1 %182
  br i1 %brmerge1045, label %.loopexit1190, label %.lr.ph

.lr.ph:                                           ; preds = %563, %572
  %.09311193 = phi i32 [ %573, %572 ], [ 0, %563 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  %564 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %560, i32 noundef %.09311193)
  %565 = load i16, ptr %564, align 2, !tbaa !146
  %566 = zext i16 %565 to i32
  store i32 %566, ptr %21, align 4, !tbaa !96
  %567 = icmp eq i16 %565, 9
  br i1 %567, label %572, label %568

568:                                              ; preds = %.lr.ph
  %569 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %569, label %570, label %572

570:                                              ; preds = %568
  %571 = load i32, ptr %21, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %571)
  br label %572

572:                                              ; preds = %568, %570, %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  %573 = add nuw nsw i32 %.09311193, 1
  %574 = load i32, ptr %560, align 8, !tbaa !156
  %575 = icmp slt i32 %573, %574
  br i1 %575, label %.lr.ph, label %.loopexit1190, !llvm.loop !157

.loopexit1190:                                    ; preds = %572, %563
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %560, i32 noundef 0)
  br label %576

576:                                              ; preds = %559, %.loopexit1190, %406
  %.0930 = phi i32 [ 0, %406 ], [ %413, %.loopexit1190 ], [ %413, %559 ]
  %577 = load i32, ptr %167, align 8, !tbaa !104
  %578 = icmp eq i32 %577, %90
  br i1 %578, label %579, label %879

579:                                              ; preds = %576
  %580 = getelementptr inbounds i8, ptr %77, i64 16140
  %581 = load i8, ptr %580, align 4, !tbaa !159, !range !38, !noundef !39
  %582 = trunc nuw i8 %581 to i1
  br i1 %582, label %.thread1239, label %583

583:                                              ; preds = %579
  %584 = trunc nuw i8 %.08991147 to i1
  br i1 %584, label %.thread1239, label %585

585:                                              ; preds = %583
  br i1 %331, label %587, label %586

586:                                              ; preds = %585
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.4, i32 noundef 4285, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

587:                                              ; preds = %585
  %588 = load float, ptr %101, align 4, !tbaa !91
  %589 = fsub float %.sroa.11.0.copyload, %588
  %590 = getelementptr inbounds i8, ptr %77, i64 15360
  %591 = load float, ptr %590, align 8, !tbaa !41
  %592 = fdiv float %589, %591
  %593 = fptosi float %592 to i32
  %594 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %593, i32 noundef 1)
  %595 = getelementptr inbounds i8, ptr %.08981228, i64 84
  %596 = getelementptr inbounds i8, ptr %.08981228, i64 100
  store i32 %594, ptr %596, align 4, !tbaa !160
  %597 = getelementptr inbounds i8, ptr %77, i64 3605
  %598 = load i8, ptr %597, align 1, !tbaa !147, !range !38, !noundef !39
  %599 = trunc nuw i8 %598 to i1
  %600 = select i1 %599, i32 4194304, i32 0
  %601 = getelementptr inbounds i8, ptr %77, i64 121
  %602 = load i8, ptr %601, align 1, !tbaa !144, !range !38, !noundef !39
  %603 = trunc nuw i8 %602 to i1
  %604 = getelementptr inbounds i8, ptr %77, i64 3606
  %605 = getelementptr inbounds i8, ptr %77, i64 3604
  %.in.in = select i1 %603, ptr %604, ptr %605
  %.in = load i8, ptr %.in.in, align 2, !tbaa !108, !range !38, !noundef !39
  %606 = trunc nuw i8 %.in to i1
  br i1 %603, label %607, label %618

607:                                              ; preds = %587
  %608 = getelementptr inbounds i8, ptr %77, i64 3607
  %609 = load i8, ptr %608, align 1, !tbaa !155, !range !38, !noundef !39
  %610 = trunc nuw i8 %609 to i1
  br i1 %610, label %611, label %618

611:                                              ; preds = %607
  %612 = load i8, ptr %605, align 4, !tbaa !121, !range !38, !noundef !39
  %613 = trunc nuw i8 %612 to i1
  br i1 %613, label %618, label %614

614:                                              ; preds = %611
  %615 = load i8, ptr %604, align 2, !tbaa !154, !range !38, !noundef !39
  %616 = trunc nuw i8 %615 to i1
  %617 = xor i1 %616, true
  br label %618

618:                                              ; preds = %614, %611, %607, %587
  %619 = phi i1 [ false, %611 ], [ false, %607 ], [ false, %587 ], [ %617, %614 ]
  %620 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2617, i32 noundef %90, i32 noundef 1)
  br i1 %620, label %625, label %621

621:                                              ; preds = %618
  %622 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8714, i32 noundef %90, i32 noundef 1)
  %623 = and i1 %.not981, %622
  %624 = xor i1 %623, true
  %brmerge1048 = or i1 %80, %624
  %.not1054 = xor i1 %68, true
  %brmerge1055 = or i1 %brmerge1048, %.not1054
  %not.brmerge1048 = xor i1 %brmerge1048, true
  br i1 %brmerge1055, label %628, label %626

625:                                              ; preds = %618
  %.not981.not1049 = xor i1 %.not981, true
  %brmerge1050 = or i1 %80, %.not981.not1049
  %.not1051 = xor i1 %68, true
  %brmerge1052 = or i1 %brmerge1050, %.not1051
  %not.brmerge1050 = xor i1 %brmerge1050, true
  br i1 %brmerge1052, label %628, label %626

626:                                              ; preds = %621, %625
  %627 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br label %628

628:                                              ; preds = %621, %625, %626
  %629 = phi i1 [ %not.brmerge1050, %625 ], [ %not.brmerge1048, %621 ], [ %627, %626 ]
  %630 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2596, i32 noundef %90, i32 noundef 0)
  br i1 %630, label %633, label %631

631:                                              ; preds = %628
  %632 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 4617, i32 noundef %90, i32 noundef 0)
  %brmerge1059.demorgan = and i1 %.not981, %632
  %brmerge1061.not = and i1 %68, %brmerge1059.demorgan
  br i1 %brmerge1061.not, label %635, label %637

633:                                              ; preds = %628
  %634 = and i32 %5, 67141632
  %brmerge1065.not = icmp eq i32 %634, 67108864
  br i1 %brmerge1065.not, label %635, label %637

635:                                              ; preds = %633, %631
  %636 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br label %637

637:                                              ; preds = %633, %631, %635
  %638 = phi i1 [ %.not981, %633 ], [ %brmerge1059.demorgan, %631 ], [ %636, %635 ]
  %639 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2615, i32 noundef %90, i32 noundef 1)
  br i1 %639, label %642, label %640

640:                                              ; preds = %637
  %641 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8713, i32 noundef %90, i32 noundef 1)
  br i1 %641, label %642, label %._crit_edge1216

._crit_edge1216:                                  ; preds = %640
  %.pre1217 = xor i1 %80, true
  br label %644

642:                                              ; preds = %640, %637
  %643 = xor i1 %80, true
  br label %644

644:                                              ; preds = %._crit_edge1216, %642
  %not..pre-phi = phi i1 [ %.pre1217, %._crit_edge1216 ], [ %643, %642 ]
  %645 = phi i1 [ false, %._crit_edge1216 ], [ %643, %642 ]
  %646 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2619, i32 noundef %90, i32 noundef 1)
  %spec.select1067 = and i1 %83, %not..pre-phi
  %spec.select1126 = and i1 %spec.select1067, %646
  %647 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2618, i32 noundef %90, i32 noundef 1)
  br i1 %647, label %651, label %648

648:                                              ; preds = %644
  br i1 %603, label %649, label %652

649:                                              ; preds = %648
  %650 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 10811, i32 noundef %90, i32 noundef 1)
  br i1 %650, label %651, label %652

651:                                              ; preds = %649, %644
  br label %652

652:                                              ; preds = %651, %649, %648
  %653 = phi i1 [ false, %649 ], [ false, %648 ], [ %spec.select1067, %651 ]
  %654 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2594, i32 noundef %90, i32 noundef 0)
  %655 = load i32, ptr %78, align 8, !tbaa !161
  %656 = and i32 %655, 2
  %.not997 = icmp eq i32 %656, 0
  br i1 %.not997, label %662, label %657

657:                                              ; preds = %652
  %658 = getelementptr inbounds i8, ptr %77, i64 12
  %659 = load i32, ptr %658, align 4, !tbaa !162
  %660 = and i32 %659, 1
  %661 = icmp ne i32 %660, 0
  br label %662

662:                                              ; preds = %657, %652
  %663 = phi i1 [ false, %652 ], [ %661, %657 ]
  %664 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %664, label %667, label %665

665:                                              ; preds = %662
  %666 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 615, i1 noundef zeroext true)
  br label %667

667:                                              ; preds = %665, %662
  %668 = phi i1 [ true, %662 ], [ %666, %665 ]
  br i1 %663, label %669, label %.sink.split1264

669:                                              ; preds = %667
  %670 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 622, i1 noundef zeroext false)
  br i1 %670, label %673, label %671

671:                                              ; preds = %669
  %672 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 621, i1 noundef zeroext false)
  br label %673

673:                                              ; preds = %669, %671
  %674 = phi i1 [ true, %669 ], [ %672, %671 ]
  %675 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 526, i32 noundef %90, i32 noundef 1)
  br i1 %675, label %677, label %.sink.split1264

.sink.split1264:                                  ; preds = %673, %667
  %.sink = phi i32 [ 526, %667 ], [ 620, %673 ]
  %.ph1265 = phi i1 [ false, %667 ], [ %674, %673 ]
  %676 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef %.sink, i32 noundef %90, i32 noundef 1)
  br label %677

677:                                              ; preds = %.sink.split1264, %673
  %678 = phi i1 [ %674, %673 ], [ %.ph1265, %.sink.split1264 ]
  %679 = phi i1 [ true, %673 ], [ %676, %.sink.split1264 ]
  %680 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %680, label %681, label %684

681:                                              ; preds = %677
  %682 = select i1 %606, i32 2097164, i32 2097152
  %spec.select1072 = select i1 %619, i32 2097156, i32 %682
  %683 = or disjoint i32 %spec.select1072, %600
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %683)
  br label %.thread1156

684:                                              ; preds = %677
  %685 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %685, label %686, label %689

686:                                              ; preds = %684
  %687 = select i1 %606, i32 2097165, i32 2097153
  %spec.select1073 = select i1 %619, i32 2097157, i32 %687
  %688 = or disjoint i32 %spec.select1073, %600
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %688)
  br label %.thread1156

689:                                              ; preds = %684
  %690 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  %.not1075 = xor i1 %68, true
  %brmerge1076.not = and i1 %68, %690
  br i1 %brmerge1076.not, label %691, label %703

691:                                              ; preds = %689
  %692 = load i8, ptr %605, align 4, !tbaa !121, !range !38, !noundef !39
  %693 = trunc nuw i8 %692 to i1
  br i1 %693, label %694, label %700

694:                                              ; preds = %691
  %695 = getelementptr inbounds i8, ptr %.2895, i64 128
  %696 = load float, ptr %695, align 4, !tbaa !110
  %697 = load float, ptr %590, align 8, !tbaa !41
  %698 = fsub float %696, %697
  %699 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %698, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2895, float noundef %699)
  br label %.thread1156

700:                                              ; preds = %691
  %701 = select i1 %619, i32 2097158, i32 2097154
  %702 = or disjoint i32 %701, %600
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %702)
  br label %.thread1156

703:                                              ; preds = %689
  %704 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  %brmerge1079.not = and i1 %68, %704
  br i1 %brmerge1079.not, label %705, label %718

705:                                              ; preds = %703
  %706 = load i8, ptr %605, align 4, !tbaa !121, !range !38, !noundef !39
  %707 = trunc nuw i8 %706 to i1
  br i1 %707, label %708, label %715

708:                                              ; preds = %705
  %709 = getelementptr inbounds i8, ptr %.2895, i64 128
  %710 = load float, ptr %709, align 4, !tbaa !110
  %711 = load float, ptr %590, align 8, !tbaa !41
  %712 = fadd float %710, %711
  %713 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %714 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %712, float noundef %713)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2895, float noundef %714)
  br label %.thread1156

715:                                              ; preds = %705
  %716 = select i1 %619, i32 2097159, i32 2097155
  %717 = or disjoint i32 %716, %600
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %717)
  br label %.thread1156

718:                                              ; preds = %703
  %719 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  %brmerge1082.not = and i1 %68, %719
  br i1 %brmerge1082.not, label %720, label %726

720:                                              ; preds = %718
  %721 = or disjoint i32 %600, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %721)
  %722 = sitofp i32 %594 to float
  %723 = load float, ptr %590, align 8, !tbaa !41
  %724 = fneg float %722
  %725 = call float @llvm.fmuladd.f32(float %724, float %723, float %209)
  br label %.thread1156

726:                                              ; preds = %718
  %727 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  %brmerge1085.not = and i1 %68, %727
  br i1 %brmerge1085.not, label %728, label %733

728:                                              ; preds = %726
  %729 = or disjoint i32 %600, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %729)
  %730 = sitofp i32 %594 to float
  %731 = load float, ptr %590, align 8, !tbaa !41
  %732 = call float @llvm.fmuladd.f32(float %730, float %731, float %209)
  br label %.thread1156

733:                                              ; preds = %726
  %734 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %734, label %735, label %739

735:                                              ; preds = %733
  %736 = load i8, ptr %605, align 4, !tbaa !121, !range !38, !noundef !39
  %737 = trunc nuw i8 %736 to i1
  %.v1004 = select i1 %737, i32 2097158, i32 2097156
  %738 = or disjoint i32 %.v1004, %600
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %738)
  br label %.thread1156

739:                                              ; preds = %733
  %740 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %740, label %741, label %745

741:                                              ; preds = %739
  %742 = load i8, ptr %605, align 4, !tbaa !121, !range !38, !noundef !39
  %743 = trunc nuw i8 %742 to i1
  %.v = select i1 %743, i32 2097159, i32 2097157
  %744 = or disjoint i32 %.v, %600
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %744)
  br label %.thread1156

745:                                              ; preds = %739
  %746 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  %.not1086 = xor i1 %746, true
  %brmerge1087 = or i1 %80, %.not1086
  %brmerge1088 = or i1 %629, %brmerge1087
  br i1 %brmerge1088, label %749, label %747

747:                                              ; preds = %745
  %748 = or disjoint i32 %600, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %748)
  br label %.thread1156

749:                                              ; preds = %745
  %750 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  %.not1089 = xor i1 %750, true
  %brmerge1090 = or i1 %80, %.not1089
  br i1 %brmerge1090, label %767, label %751

751:                                              ; preds = %749
  %752 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br i1 %752, label %765, label %753

753:                                              ; preds = %751
  br i1 %606, label %.sink.split1267, label %754

754:                                              ; preds = %753
  br i1 %603, label %755, label %765

755:                                              ; preds = %754
  %756 = getelementptr inbounds i8, ptr %77, i64 3607
  %757 = load i8, ptr %756, align 1, !tbaa !155, !range !38, !noundef !39
  %758 = trunc nuw i8 %757 to i1
  br i1 %758, label %759, label %765

759:                                              ; preds = %755
  %760 = load i8, ptr %604, align 2, !tbaa !154, !range !38, !noundef !39
  %761 = trunc nuw i8 %760 to i1
  br i1 %761, label %765, label %762

762:                                              ; preds = %759
  %763 = load i8, ptr %605, align 4, !tbaa !121, !range !38, !noundef !39
  %764 = trunc nuw i8 %763 to i1
  br i1 %764, label %765, label %.sink.split1267

.sink.split1267:                                  ; preds = %762, %753
  %.sink1268 = phi i32 [ 6291468, %753 ], [ 6291460, %762 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %.sink1268)
  br label %765

765:                                              ; preds = %.sink.split1267, %762, %759, %755, %754, %751
  %766 = or disjoint i32 %600, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %766)
  br label %.thread1156

767:                                              ; preds = %749
  %brmerge1091 = or i1 %668, %678
  br i1 %brmerge1091, label %768, label %785

768:                                              ; preds = %767
  %brmerge1093 = or i1 %678, %.not1075
  br i1 %brmerge1093, label %774, label %769

769:                                              ; preds = %768
  %770 = and i32 %5, 2048
  %.not1003 = icmp eq i32 %770, 0
  %771 = load i8, ptr %605, align 4, !tbaa !121, !range !38, !noundef !39
  %772 = trunc nuw i8 %771 to i1
  br i1 %.not1003, label %.critedge1095, label %773

773:                                              ; preds = %769
  br i1 %772, label %779, label %.thread1156

.critedge1095:                                    ; preds = %769
  br i1 %772, label %.thread1156, label %779

774:                                              ; preds = %768
  %775 = getelementptr inbounds i8, ptr %77, i64 124
  %776 = load i8, ptr %775, align 4, !tbaa !163, !range !38, !noundef !39
  %777 = trunc nuw i8 %776 to i1
  %.not1096 = xor i1 %777, true
  %brmerge1097 = or i1 %68, %.not1096
  br i1 %brmerge1097, label %.thread1156, label %778

778:                                              ; preds = %774
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br label %.thread1156

779:                                              ; preds = %773, %.critedge1095
  br i1 %80, label %.thread1156, label %780

780:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  store i32 10, ptr %22, align 4, !tbaa !96
  %781 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %781, label %782, label %784

782:                                              ; preds = %780
  %783 = load i32, ptr %22, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %783)
  br label %784

784:                                              ; preds = %782, %780
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  br label %.thread1156

785:                                              ; preds = %767
  br i1 %679, label %786, label %792

786:                                              ; preds = %785
  %787 = and i32 %5, 1048576
  %.not1002 = icmp eq i32 %787, 0
  br i1 %.not1002, label %.thread1156, label %788

788:                                              ; preds = %786
  %789 = getelementptr inbounds i8, ptr %.08981228, i64 16
  %790 = load i32, ptr %789, align 8, !tbaa !114
  %791 = icmp sgt i32 %790, 0
  %.0913.in. = select i1 %791, i1 %.0913.in, i1 false
  %.1099 = select i1 %791, i8 %330, i8 0
  %.0899. = select i1 %791, i8 %.08991147, i8 1
  br label %.thread1156

792:                                              ; preds = %785
  %brmerge1100 = or i1 %spec.select1126, %653
  br i1 %brmerge1100, label %793, label %794

793:                                              ; preds = %792
  %.mux1101 = select i1 %spec.select1126, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228, i32 noundef %.mux1101)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br label %.thread1156

794:                                              ; preds = %792
  br i1 %654, label %795, label %797

795:                                              ; preds = %794
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  %796 = getelementptr inbounds i8, ptr %.08981228, i64 3716
  store i8 1, ptr %796, align 4, !tbaa !151
  br label %.thread1156

797:                                              ; preds = %794
  %brmerge1102 = or i1 %629, %638
  br i1 %brmerge1102, label %798, label %844

798:                                              ; preds = %797
  %799 = getelementptr inbounds i8, ptr %77, i64 184
  %800 = load ptr, ptr %799, align 8, !tbaa !164
  %.not1001 = icmp eq ptr %800, null
  br i1 %.not1001, label %837, label %801

801:                                              ; preds = %798
  %802 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br i1 %802, label %803, label %809

803:                                              ; preds = %801
  %804 = getelementptr inbounds i8, ptr %.08981228, i64 88
  %805 = load i32, ptr %804, align 4, !tbaa !149
  %806 = getelementptr inbounds i8, ptr %.08981228, i64 92
  %807 = load i32, ptr %806, align 4, !tbaa !150
  %808 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %805, i32 noundef %807)
  br label %809

809:                                              ; preds = %801, %803
  %810 = phi i32 [ %808, %803 ], [ 0, %801 ]
  %811 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br i1 %811, label %812, label %818

812:                                              ; preds = %809
  %813 = getelementptr inbounds i8, ptr %.08981228, i64 88
  %814 = load i32, ptr %813, align 4, !tbaa !149
  %815 = getelementptr inbounds i8, ptr %.08981228, i64 92
  %816 = load i32, ptr %815, align 4, !tbaa !150
  %817 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %814, i32 noundef %816)
  br label %821

818:                                              ; preds = %809
  %819 = getelementptr inbounds i8, ptr %.08981228, i64 12
  %820 = load i32, ptr %819, align 4, !tbaa !118
  br label %821

821:                                              ; preds = %818, %812
  %822 = phi i32 [ %817, %812 ], [ %820, %818 ]
  %823 = getelementptr inbounds i8, ptr %.08981228, i64 32
  %824 = load ptr, ptr %823, align 8, !tbaa !117
  %825 = sext i32 %810 to i64
  %826 = getelementptr inbounds i16, ptr %824, i64 %825
  %827 = sext i32 %822 to i64
  %828 = getelementptr inbounds i16, ptr %824, i64 %827
  %829 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %826, ptr noundef %828)
  %830 = add nsw i32 %829, 1
  %831 = sext i32 %830 to i64
  %832 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %831)
  %833 = load ptr, ptr %823, align 8, !tbaa !117
  %834 = getelementptr inbounds i16, ptr %833, i64 %825
  %835 = getelementptr inbounds i16, ptr %833, i64 %827
  %836 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %832, i32 noundef %830, ptr noundef %834, ptr noundef %835)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %832)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %832)
  br label %837

837:                                              ; preds = %821, %798
  br i1 %629, label %838, label %.thread1156

838:                                              ; preds = %837
  %839 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br i1 %839, label %841, label %840

840:                                              ; preds = %838
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br label %841

841:                                              ; preds = %840, %838
  %842 = getelementptr inbounds i8, ptr %.08981228, i64 3716
  store i8 1, ptr %842, align 4, !tbaa !151
  %843 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.08981228, ptr noundef nonnull %595)
  br label %.thread1156

844:                                              ; preds = %797
  br i1 %645, label %845, label %.thread1156

845:                                              ; preds = %844
  %846 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not998 = icmp eq ptr %846, null
  br i1 %.not998, label %.thread1156, label %847

847:                                              ; preds = %845
  %848 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %846) #16
  %849 = shl i64 %848, 32
  %sext999 = add i64 %849, 4294967296
  %850 = ashr exact i64 %sext999, 31
  %851 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %850)
  %852 = load i8, ptr %846, align 1, !tbaa !125
  %.not10001194 = icmp eq i8 %852, 0
  br i1 %.not10001194, label %.loopexit1188.thread, label %.lr.ph1197

.loopexit1188.thread:                             ; preds = %847
  store i16 0, ptr %851, align 2, !tbaa !146
  br label %874

.lr.ph1197:                                       ; preds = %847, %866
  %.09341196 = phi i32 [ %.1935, %866 ], [ 0, %847 ]
  %.09371195 = phi ptr [ %855, %866 ], [ %846, %847 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #15
  %853 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %23, ptr noundef nonnull %.09371195, ptr noundef null)
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds i8, ptr %.09371195, i64 %854
  %856 = load i32, ptr %23, align 4, !tbaa !96
  %857 = icmp eq i32 %856, 0
  br i1 %857, label %.thread1159, label %858

.thread1159:                                      ; preds = %.lr.ph1197
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #15
  br label %.loopexit1188

858:                                              ; preds = %.lr.ph1197
  %859 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %23, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 4)
  br i1 %859, label %860, label %866, !llvm.loop !165

860:                                              ; preds = %858
  %861 = load i32, ptr %23, align 4, !tbaa !96
  %862 = trunc i32 %861 to i16
  %863 = add nsw i32 %.09341196, 1
  %864 = sext i32 %.09341196 to i64
  %865 = getelementptr inbounds i16, ptr %851, i64 %864
  store i16 %862, ptr %865, align 2, !tbaa !146
  br label %866

866:                                              ; preds = %858, %860
  %.1935 = phi i32 [ %863, %860 ], [ %.09341196, %858 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #15
  %867 = load i8, ptr %855, align 1, !tbaa !125
  %.not1000 = icmp eq i8 %867, 0
  br i1 %.not1000, label %.loopexit1188, label %.lr.ph1197

.loopexit1188:                                    ; preds = %866, %.thread1159
  %.09341192 = phi i32 [ %.09341196, %.thread1159 ], [ %.1935, %866 ]
  %868 = sext i32 %.09341192 to i64
  %869 = getelementptr inbounds i16, ptr %851, i64 %868
  store i16 0, ptr %869, align 2, !tbaa !146
  %870 = icmp sgt i32 %.09341192, 0
  br i1 %870, label %871, label %874

871:                                              ; preds = %.loopexit1188
  %872 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.08981228, ptr noundef nonnull %595, ptr noundef nonnull %851, i32 noundef %.09341192)
  %873 = getelementptr inbounds i8, ptr %.08981228, i64 3716
  store i8 1, ptr %873, align 4, !tbaa !151
  br label %874

874:                                              ; preds = %.loopexit1188.thread, %871, %.loopexit1188
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %851)
  br label %.thread1156

.thread1156:                                      ; preds = %773, %.critedge1095, %845, %874, %786, %788, %778, %784, %779, %774, %686, %715, %708, %728, %741, %765, %795, %844, %837, %841, %793, %747, %735, %720, %694, %700, %681
  %.0932 = phi i1 [ false, %681 ], [ false, %686 ], [ false, %694 ], [ false, %700 ], [ false, %708 ], [ false, %715 ], [ false, %720 ], [ false, %728 ], [ false, %735 ], [ false, %741 ], [ false, %793 ], [ false, %795 ], [ false, %841 ], [ false, %837 ], [ false, %844 ], [ false, %765 ], [ false, %747 ], [ false, %774 ], [ false, %779 ], [ false, %784 ], [ false, %778 ], [ %791, %788 ], [ true, %786 ], [ false, %874 ], [ false, %845 ], [ false, %.critedge1095 ], [ false, %773 ]
  %.1927 = phi i8 [ 0, %681 ], [ 0, %686 ], [ 0, %694 ], [ 0, %700 ], [ 0, %708 ], [ 0, %715 ], [ 0, %720 ], [ 0, %728 ], [ 0, %735 ], [ 0, %741 ], [ 0, %793 ], [ 0, %795 ], [ 0, %841 ], [ 0, %837 ], [ 0, %844 ], [ 0, %765 ], [ 0, %747 ], [ 1, %774 ], [ 0, %779 ], [ 0, %784 ], [ 1, %778 ], [ 0, %788 ], [ 0, %786 ], [ 0, %874 ], [ 0, %845 ], [ 1, %.critedge1095 ], [ 1, %773 ]
  %.1914 = phi i1 [ %.0913.in, %681 ], [ %.0913.in, %686 ], [ %.0913.in, %694 ], [ %.0913.in, %700 ], [ %.0913.in, %708 ], [ %.0913.in, %715 ], [ %.0913.in, %720 ], [ %.0913.in, %728 ], [ %.0913.in, %735 ], [ %.0913.in, %741 ], [ %.0913.in, %793 ], [ %.0913.in, %795 ], [ %.0913.in, %841 ], [ %.0913.in, %837 ], [ %.0913.in, %844 ], [ %.0913.in, %765 ], [ %.0913.in, %747 ], [ %.0913.in, %774 ], [ %.0913.in, %779 ], [ %.0913.in, %784 ], [ %.0913.in, %778 ], [ %.0913.in., %788 ], [ false, %786 ], [ %.0913.in, %874 ], [ %.0913.in, %845 ], [ %.0913.in, %.critedge1095 ], [ %.0913.in, %773 ]
  %.0911 = phi i8 [ %330, %681 ], [ %330, %686 ], [ %330, %694 ], [ %330, %700 ], [ %330, %708 ], [ %330, %715 ], [ %330, %720 ], [ %330, %728 ], [ %330, %735 ], [ %330, %741 ], [ %330, %793 ], [ %330, %795 ], [ %330, %841 ], [ %330, %837 ], [ %330, %844 ], [ %330, %765 ], [ %330, %747 ], [ %330, %774 ], [ %330, %779 ], [ %330, %784 ], [ %330, %778 ], [ %.1099, %788 ], [ 0, %786 ], [ %330, %874 ], [ %330, %845 ], [ %330, %.critedge1095 ], [ %330, %773 ]
  %.0907 = phi float [ %209, %681 ], [ %209, %686 ], [ %209, %694 ], [ %209, %700 ], [ %209, %708 ], [ %209, %715 ], [ %725, %720 ], [ %732, %728 ], [ %209, %735 ], [ %209, %741 ], [ %209, %793 ], [ %209, %795 ], [ %209, %841 ], [ %209, %837 ], [ %209, %844 ], [ %209, %765 ], [ %209, %747 ], [ %209, %774 ], [ %209, %779 ], [ %209, %784 ], [ %209, %778 ], [ %209, %788 ], [ %209, %786 ], [ %209, %874 ], [ %209, %845 ], [ %209, %.critedge1095 ], [ %209, %773 ]
  %.2901 = phi i8 [ %.08991147, %681 ], [ %.08991147, %686 ], [ %.08991147, %694 ], [ %.08991147, %700 ], [ %.08991147, %708 ], [ %.08991147, %715 ], [ %.08991147, %720 ], [ %.08991147, %728 ], [ %.08991147, %735 ], [ %.08991147, %741 ], [ %.08991147, %793 ], [ %.08991147, %795 ], [ %.08991147, %841 ], [ %.08991147, %837 ], [ %.08991147, %844 ], [ %.08991147, %765 ], [ %.08991147, %747 ], [ 1, %774 ], [ %.08991147, %779 ], [ %.08991147, %784 ], [ %.08991147, %778 ], [ %.0899., %788 ], [ 1, %786 ], [ %.08991147, %874 ], [ %.08991147, %845 ], [ 1, %.critedge1095 ], [ 1, %773 ]
  %875 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  %876 = select i1 %875, i8 %.0911, i8 0
  %877 = zext i1 %.1914 to i8
  %878 = or i8 %876, %877
  %.pre1205 = load i32, ptr %167, align 8, !tbaa !104
  br label %879

879:                                              ; preds = %.thread1156, %576
  %880 = phi i32 [ %.pre1205, %.thread1156 ], [ %577, %576 ]
  %.1933 = phi i1 [ %.0932, %.thread1156 ], [ false, %576 ]
  %.2928 = phi i8 [ %.1927, %.thread1156 ], [ 0, %576 ]
  %.2915 = phi i8 [ %878, %.thread1156 ], [ %.0913, %576 ]
  %.1912 = phi i8 [ %.0911, %.thread1156 ], [ %330, %576 ]
  %.1908 = phi float [ %.0907, %.thread1156 ], [ %209, %576 ]
  %.3902 = phi i8 [ %.2901, %.thread1156 ], [ %.08991147, %576 ]
  %881 = icmp eq i32 %880, %90
  br i1 %881, label %.thread1239, label %.thread1177

.thread1239:                                      ; preds = %583, %579, %879
  %.39021259 = phi i8 [ %.3902, %879 ], [ %.08991147, %579 ], [ %.08991147, %583 ]
  %.19081257 = phi float [ %.1908, %879 ], [ %209, %579 ], [ %209, %583 ]
  %.19121255 = phi i8 [ %.1912, %879 ], [ %330, %579 ], [ %330, %583 ]
  %.29151253 = phi i8 [ %.2915, %879 ], [ %.0913, %579 ], [ %.0913, %583 ]
  %.29281249 = phi i8 [ %.2928, %879 ], [ 0, %579 ], [ 0, %583 ]
  %.19331248 = phi i1 [ %.1933, %879 ], [ false, %579 ], [ false, %583 ]
  br i1 %331, label %883, label %882

882:                                              ; preds = %.thread1239
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.4, i32 noundef 4439, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

883:                                              ; preds = %.thread1239
  %.1933.not = xor i1 %.19331248, true
  %brmerge1103 = or i1 %80, %.1933.not
  br i1 %brmerge1103, label %918, label %884

884:                                              ; preds = %883
  %885 = and i32 %5, 1048576
  %.not1005 = icmp eq i32 %885, 0
  br i1 %.not1005, label %888, label %886

886:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %24) #15
  %887 = getelementptr inbounds i8, ptr %.08981228, i64 84
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.08981228, ptr noundef nonnull %887, ptr noundef nonnull %24, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %24) #15
  br label %.thread1163

888:                                              ; preds = %884
  %889 = getelementptr inbounds i8, ptr %.08981228, i64 64
  %890 = load ptr, ptr %889, align 8, !tbaa !112
  %891 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %890) #16
  %.not1006 = icmp eq i32 %891, 0
  br i1 %.not1006, label %.thread1163, label %892

892:                                              ; preds = %888
  %893 = getelementptr inbounds i8, ptr %.08981228, i64 56
  %894 = load i32, ptr %893, align 8, !tbaa !166
  %895 = add nsw i32 %894, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25)
  %896 = icmp sgt i32 %894, 1
  br i1 %896, label %897, label %910

897:                                              ; preds = %892
  %898 = zext nneg i32 %895 to i64
  %899 = getelementptr inbounds i8, ptr %890, i64 %898
  %900 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %890, ptr noundef %899)
          to label %901 unwind label %908

901:                                              ; preds = %897
  %902 = add nsw i32 %900, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %25, i32 noundef %902)
          to label %903 unwind label %908

903:                                              ; preds = %901
  %904 = getelementptr inbounds i8, ptr %25, i64 8
  %905 = load ptr, ptr %904, align 8, !tbaa !167
  %906 = load i32, ptr %25, align 8, !tbaa !168
  %907 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %905, i32 noundef %906, ptr noundef %890, ptr noundef %899, ptr noundef null)
          to label %910 unwind label %908

908:                                              ; preds = %910, %903, %901, %897
  %909 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #15
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %15) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  resume { ptr, i32 } %909

910:                                              ; preds = %903, %892
  %911 = getelementptr inbounds i8, ptr %.08981228, i64 84
  %912 = getelementptr inbounds i8, ptr %25, i64 8
  %913 = load ptr, ptr %912, align 8, !tbaa !167
  %914 = load i32, ptr %25, align 8
  %915 = add nsw i32 %914, -1
  %916 = select i1 %896, i32 %915, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.08981228, ptr noundef nonnull %911, ptr noundef %913, i32 noundef %916)
          to label %917 unwind label %908

917:                                              ; preds = %910
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #15
  br label %.thread1163

918:                                              ; preds = %883
  br i1 %80, label %931, label %.thread1163

.thread1163:                                      ; preds = %888, %917, %886, %918
  %.09381168 = phi ptr [ null, %918 ], [ null, %888 ], [ %890, %917 ], [ @.str, %886 ]
  %.09411166 = phi i32 [ 0, %918 ], [ 0, %888 ], [ %895, %917 ], [ 0, %886 ]
  %919 = getelementptr inbounds i8, ptr %.08981228, i64 72
  store i8 1, ptr %919, align 8, !tbaa !115
  %920 = getelementptr inbounds i8, ptr %.08981228, i64 40
  %921 = getelementptr inbounds i8, ptr %.08981228, i64 24
  %922 = load i32, ptr %921, align 8, !tbaa !124
  %923 = shl nsw i32 %922, 2
  %924 = or disjoint i32 %923, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %920, i32 noundef %924)
  %925 = getelementptr inbounds i8, ptr %.08981228, i64 48
  %926 = load ptr, ptr %925, align 8, !tbaa !116
  %927 = load i32, ptr %920, align 8, !tbaa !169
  %928 = getelementptr inbounds i8, ptr %.08981228, i64 32
  %929 = load ptr, ptr %928, align 8, !tbaa !117
  %930 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %926, i32 noundef %927, ptr noundef %929, ptr noundef null)
  br label %931

931:                                              ; preds = %.thread1163, %918
  %.09381169 = phi ptr [ %.09381168, %.thread1163 ], [ null, %918 ]
  %.09411167 = phi i32 [ %.09411166, %.thread1163 ], [ 0, %918 ]
  br i1 %.19331248, label %932, label %.critedge1105

932:                                              ; preds = %931
  %933 = trunc nuw i8 %.29281249 to i1
  %934 = and i32 %5, 32
  %935 = icmp ne i32 %934, 0
  %936 = and i1 %935, %933
  br i1 %936, label %.critedge1105, label %1082

.critedge1105:                                    ; preds = %931, %932
  %937 = and i32 %5, 524736
  %.not1007 = icmp eq i32 %937, 0
  br i1 %.not1007, label %1074, label %938

938:                                              ; preds = %.critedge1105
  br i1 %85, label %940, label %939

939:                                              ; preds = %938
  call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.4, i32 noundef 4488, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

940:                                              ; preds = %938
  br i1 %.not978, label %943, label %941

941:                                              ; preds = %940
  %942 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 512, i1 noundef zeroext true)
  br i1 %942, label %.thread1171, label %943

943:                                              ; preds = %941, %940
  br i1 %.not976.not, label %.critedge1107, label %944

944:                                              ; preds = %943
  %945 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %945, label %.thread1171, label %946

946:                                              ; preds = %944
  %947 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %947, label %.thread1171, label %.critedge1107

.critedge1107:                                    ; preds = %943, %946
  %948 = and i32 %5, 524288
  %.not1008 = icmp eq i32 %948, 0
  br i1 %.not1008, label %953, label %949

949:                                              ; preds = %.critedge1107
  %950 = getelementptr inbounds i8, ptr %.08981228, i64 3718
  %951 = load i8, ptr %950, align 2, !tbaa !134, !range !38, !noundef !39
  %952 = trunc nuw i8 %951 to i1
  br i1 %952, label %.thread1171, label %953

953:                                              ; preds = %.critedge1107, %949
  %954 = and i32 %5, 256
  %.not1009 = icmp eq i32 %954, 0
  br i1 %.not1009, label %1074, label %.thread1171

.thread1171:                                      ; preds = %949, %946, %944, %941, %953
  %.09451176 = phi i32 [ 256, %953 ], [ 524288, %949 ], [ 128, %946 ], [ 128, %944 ], [ 64, %941 ]
  %.09461175 = phi i32 [ 0, %953 ], [ 0, %949 ], [ 516, %946 ], [ 515, %944 ], [ 512, %941 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %26) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %26)
  %955 = getelementptr inbounds i8, ptr %26, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %955, i8 0, i64 40, i1 false)
  store i32 %.09451176, ptr %26, align 8, !tbaa !170
  %956 = getelementptr inbounds i8, ptr %26, i64 4
  store i32 %5, ptr %956, align 4, !tbaa !173
  %957 = getelementptr inbounds i8, ptr %26, i64 8
  store ptr %7, ptr %957, align 8, !tbaa !174
  br i1 %80, label %961, label %958

958:                                              ; preds = %.thread1171
  %959 = getelementptr inbounds i8, ptr %.08981228, i64 48
  %960 = load ptr, ptr %959, align 8, !tbaa !116
  br label %961

961:                                              ; preds = %.thread1171, %958
  %962 = phi ptr [ %960, %958 ], [ %2, %.thread1171 ]
  %963 = getelementptr inbounds i8, ptr %26, i64 20
  store i32 %.09461175, ptr %963, align 4, !tbaa !175
  %964 = getelementptr inbounds i8, ptr %26, i64 24
  store ptr %962, ptr %964, align 8, !tbaa !176
  %965 = getelementptr inbounds i8, ptr %.08981228, i64 16
  %966 = load i32, ptr %965, align 8, !tbaa !114
  %967 = getelementptr inbounds i8, ptr %26, i64 32
  store i32 %966, ptr %967, align 8, !tbaa !177
  %968 = getelementptr inbounds i8, ptr %.08981228, i64 76
  %969 = load i32, ptr %968, align 4, !tbaa !135
  %970 = getelementptr inbounds i8, ptr %26, i64 36
  store i32 %969, ptr %970, align 4, !tbaa !178
  %971 = getelementptr inbounds i8, ptr %26, i64 40
  %972 = getelementptr inbounds i8, ptr %.08981228, i64 24
  %973 = getelementptr inbounds i8, ptr %.08981228, i64 32
  %974 = load ptr, ptr %973, align 8, !tbaa !117
  %975 = getelementptr inbounds i8, ptr %.08981228, i64 84
  %976 = load i32, ptr %975, align 4, !tbaa !148
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds i16, ptr %974, i64 %977
  %979 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %974, ptr noundef %978)
  %980 = getelementptr inbounds i8, ptr %26, i64 44
  store i32 %979, ptr %980, align 4, !tbaa !179
  %981 = getelementptr inbounds i8, ptr %.08981228, i64 88
  %982 = load i32, ptr %981, align 4, !tbaa !149
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds i16, ptr %974, i64 %983
  %985 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %974, ptr noundef %984)
  %986 = getelementptr inbounds i8, ptr %26, i64 48
  store i32 %985, ptr %986, align 8, !tbaa !180
  %987 = getelementptr inbounds i8, ptr %.08981228, i64 92
  %988 = load i32, ptr %987, align 4, !tbaa !150
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds i16, ptr %974, i64 %989
  %991 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %974, ptr noundef %990)
  %992 = getelementptr inbounds i8, ptr %26, i64 52
  store i32 %991, ptr %992, align 4, !tbaa !181
  %993 = call noundef i32 %6(ptr noundef nonnull %26)
  br i1 %80, label %997, label %994

994:                                              ; preds = %961
  %995 = getelementptr inbounds i8, ptr %.08981228, i64 48
  %996 = load ptr, ptr %995, align 8, !tbaa !116
  br label %997

997:                                              ; preds = %961, %994
  %998 = phi ptr [ %996, %994 ], [ %2, %961 ]
  %999 = load ptr, ptr %964, align 8, !tbaa !176
  %1000 = icmp eq ptr %999, %998
  br i1 %1000, label %1002, label %1001

1001:                                             ; preds = %997
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4543, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1002:                                             ; preds = %997
  %1003 = load i32, ptr %970, align 4, !tbaa !178
  %1004 = load i32, ptr %968, align 4, !tbaa !135
  %1005 = icmp eq i32 %1003, %1004
  br i1 %1005, label %1007, label %1006

1006:                                             ; preds = %1002
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.4, i32 noundef 4544, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1007:                                             ; preds = %1002
  %1008 = load i32, ptr %956, align 4, !tbaa !173
  %1009 = icmp eq i32 %1008, %5
  br i1 %1009, label %1011, label %1010

1010:                                             ; preds = %1007
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.4, i32 noundef 4545, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1011:                                             ; preds = %1007
  %1012 = load i8, ptr %971, align 8, !tbaa !182, !range !38, !noundef !39
  %1013 = trunc nuw i8 %1012 to i1
  %1014 = load i32, ptr %980, align 4, !tbaa !179
  %.not1011 = icmp ne i32 %1014, %979
  %brmerge1110 = select i1 %.not1011, i1 true, i1 %1013
  br i1 %brmerge1110, label %1015, label %1020

1015:                                             ; preds = %1011
  %1016 = sext i32 %1014 to i64
  %1017 = getelementptr inbounds i8, ptr %999, i64 %1016
  %1018 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %999, ptr noundef %1017)
  store i32 %1018, ptr %975, align 4, !tbaa !148
  %1019 = getelementptr inbounds i8, ptr %.08981228, i64 3716
  store i8 1, ptr %1019, align 4, !tbaa !151
  br label %1020

1020:                                             ; preds = %1011, %1015
  %1021 = load i32, ptr %986, align 8, !tbaa !180
  %.not1012 = icmp ne i32 %1021, %985
  %brmerge1111 = select i1 %.not1012, i1 true, i1 %1013
  br i1 %brmerge1111, label %1022, label %1034

1022:                                             ; preds = %1020
  %1023 = load i32, ptr %980, align 4, !tbaa !179
  %1024 = icmp eq i32 %1021, %1023
  br i1 %1024, label %1025, label %1027

1025:                                             ; preds = %1022
  %1026 = load i32, ptr %975, align 4, !tbaa !148
  br label %1032

1027:                                             ; preds = %1022
  %1028 = load ptr, ptr %964, align 8, !tbaa !176
  %1029 = sext i32 %1021 to i64
  %1030 = getelementptr inbounds i8, ptr %1028, i64 %1029
  %1031 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1028, ptr noundef %1030)
  br label %1032

1032:                                             ; preds = %1027, %1025
  %1033 = phi i32 [ %1026, %1025 ], [ %1031, %1027 ]
  store i32 %1033, ptr %981, align 4, !tbaa !149
  br label %1034

1034:                                             ; preds = %1020, %1032
  %1035 = load i32, ptr %992, align 4, !tbaa !181
  %.not1013 = icmp ne i32 %1035, %991
  %brmerge1112 = select i1 %.not1013, i1 true, i1 %1013
  br i1 %brmerge1112, label %1036, label %1048

1036:                                             ; preds = %1034
  %1037 = load i32, ptr %986, align 8, !tbaa !180
  %1038 = icmp eq i32 %1035, %1037
  br i1 %1038, label %1039, label %1041

1039:                                             ; preds = %1036
  %1040 = load i32, ptr %981, align 4, !tbaa !149
  br label %1046

1041:                                             ; preds = %1036
  %1042 = load ptr, ptr %964, align 8, !tbaa !176
  %1043 = sext i32 %1035 to i64
  %1044 = getelementptr inbounds i8, ptr %1042, i64 %1043
  %1045 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1042, ptr noundef %1044)
  br label %1046

1046:                                             ; preds = %1041, %1039
  %1047 = phi i32 [ %1040, %1039 ], [ %1045, %1041 ]
  store i32 %1047, ptr %987, align 4, !tbaa !150
  br label %1048

1048:                                             ; preds = %1034, %1046
  br i1 %1013, label %1049, label %1073

1049:                                             ; preds = %1048
  %1050 = icmp eq i32 %79, 0
  br i1 %1050, label %1052, label %1051

1051:                                             ; preds = %1049
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.4, i32 noundef 4552, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1052:                                             ; preds = %1049
  %1053 = load i32, ptr %967, align 8, !tbaa !177
  %1054 = load ptr, ptr %964, align 8, !tbaa !176
  %1055 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1054) #16
  %1056 = trunc i64 %1055 to i32
  %1057 = icmp eq i32 %1053, %1056
  br i1 %1057, label %1059, label %1058

1058:                                             ; preds = %1052
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.4, i32 noundef 4553, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1059:                                             ; preds = %1052
  call void @_ZL44InputTextReconcileUndoStateAfterUserCallbackP19ImGuiInputTextStatePKci(ptr noundef nonnull %.08981228, ptr noundef %1054, i32 noundef %1053)
  %1060 = load i32, ptr %967, align 8, !tbaa !177
  %1061 = icmp sle i32 %1060, %.0930
  %brmerge1114 = or i1 %.not982, %1061
  br i1 %brmerge1114, label %1066, label %1062

1062:                                             ; preds = %1059
  %1063 = load i32, ptr %972, align 8, !tbaa !124
  %1064 = sub i32 %1060, %.0930
  %1065 = add nsw i32 %1064, %1063
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %972, i32 noundef %1065)
  br label %1066

1066:                                             ; preds = %1059, %1062
  %1067 = load ptr, ptr %973, align 8, !tbaa !117
  %1068 = load i32, ptr %972, align 8, !tbaa !124
  %1069 = load ptr, ptr %964, align 8, !tbaa !176
  %1070 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1067, i32 noundef %1068, ptr noundef %1069, ptr noundef null, ptr noundef null)
  %1071 = getelementptr inbounds i8, ptr %.08981228, i64 12
  store i32 %1070, ptr %1071, align 4, !tbaa !118
  %1072 = load i32, ptr %967, align 8, !tbaa !177
  store i32 %1072, ptr %965, align 8, !tbaa !114
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.08981228)
  br label %1073

1073:                                             ; preds = %1066, %1048
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %26) #15
  br label %1074

1074:                                             ; preds = %953, %1073, %.critedge1105
  br i1 %80, label %1082, label %1075

1075:                                             ; preds = %1074
  %1076 = getelementptr inbounds i8, ptr %.08981228, i64 48
  %1077 = load ptr, ptr %1076, align 8, !tbaa !116
  %1078 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1077, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not1014 = icmp eq i32 %1078, 0
  br i1 %.not1014, label %1082, label %1079

1079:                                             ; preds = %1075
  %1080 = getelementptr inbounds i8, ptr %.08981228, i64 16
  %1081 = load i32, ptr %1080, align 8, !tbaa !114
  br label %1082

1082:                                             ; preds = %932, %1079, %1075, %1074
  %.2943 = phi i32 [ %.09411167, %1074 ], [ %1081, %1079 ], [ %.09411167, %1075 ], [ %.09411167, %932 ]
  %.2940 = phi ptr [ %.09381169, %1074 ], [ %1077, %1079 ], [ %.09381169, %1075 ], [ %.09381169, %932 ]
  %.not1015.not = icmp eq ptr %.2940, null
  br i1 %.not1015.not, label %.thread1177, label %1083

1083:                                             ; preds = %1082
  %1084 = icmp sgt i32 %.2943, -1
  br i1 %1084, label %1086, label %1085

1085:                                             ; preds = %1083
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.4, i32 noundef 4579, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1086:                                             ; preds = %1083
  br i1 %.not982, label %1103, label %1087

1087:                                             ; preds = %1086
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %27) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %27)
  store i32 262144, ptr %27, align 8, !tbaa !170
  %1088 = getelementptr inbounds i8, ptr %27, i64 4
  store i32 %5, ptr %1088, align 4, !tbaa !173
  %1089 = getelementptr inbounds i8, ptr %27, i64 24
  store ptr %2, ptr %1089, align 8, !tbaa !176
  %1090 = getelementptr inbounds i8, ptr %27, i64 32
  store i32 %.2943, ptr %1090, align 8, !tbaa !177
  %1091 = add nuw nsw i32 %.2943, 1
  %1092 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1091)
  %1093 = getelementptr inbounds i8, ptr %27, i64 36
  store i32 %1092, ptr %1093, align 4, !tbaa !178
  %1094 = getelementptr inbounds i8, ptr %27, i64 8
  store ptr %7, ptr %1094, align 8, !tbaa !174
  %1095 = call noundef i32 %6(ptr noundef nonnull %27)
  %1096 = load ptr, ptr %1089, align 8, !tbaa !176
  %1097 = load i32, ptr %1093, align 4, !tbaa !178
  %1098 = load i32, ptr %1090, align 8, !tbaa !177
  %1099 = add nsw i32 %1097, -1
  %1100 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1098, i32 noundef %1099)
  %.not1016 = icmp sgt i32 %1100, %1097
  br i1 %.not1016, label %1101, label %1102

1101:                                             ; preds = %1087
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.4, i32 noundef 4593, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1102:                                             ; preds = %1087
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #15
  br label %1103

1103:                                             ; preds = %1102, %1086
  %.3944 = phi i32 [ %1100, %1102 ], [ %.2943, %1086 ]
  %.0889 = phi i32 [ %1097, %1102 ], [ %3, %1086 ]
  %.0887 = phi ptr [ %1096, %1102 ], [ %2, %1086 ]
  %1104 = add nsw i32 %.3944, 1
  %1105 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1104, i32 noundef %.0889)
  %1106 = sext i32 %1105 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0887, ptr noundef nonnull %.2940, i64 noundef %1106)
  br label %.thread1177

.thread1177:                                      ; preds = %879, %1103, %1082
  %.39021258 = phi i8 [ %.39021259, %1103 ], [ %.39021259, %1082 ], [ %.3902, %879 ]
  %.19081256 = phi float [ %.19081257, %1103 ], [ %.19081257, %1082 ], [ %.1908, %879 ]
  %.19121254 = phi i8 [ %.19121255, %1103 ], [ %.19121255, %1082 ], [ %.1912, %879 ]
  %.29151252 = phi i8 [ %.29151253, %1103 ], [ %.29151253, %1082 ], [ %.2915, %879 ]
  %.29281250 = phi i8 [ %.29281249, %1103 ], [ %.29281249, %1082 ], [ %.2928, %879 ]
  %.not10151181 = phi i1 [ true, %1103 ], [ false, %1082 ], [ false, %879 ]
  %.1888 = phi ptr [ %.0887, %1103 ], [ %2, %1082 ], [ %2, %879 ]
  %1107 = trunc nuw i8 %.39021258 to i1
  br i1 %1107, label %1108, label %1112

1108:                                             ; preds = %.thread1177
  %1109 = load i32, ptr %167, align 8, !tbaa !104
  %1110 = icmp eq i32 %1109, %90
  br i1 %1110, label %1111, label %1112

1111:                                             ; preds = %1108
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1112

1112:                                             ; preds = %1111, %1108, %.thread1177
  br i1 %68, label %1118, label %1113

1113:                                             ; preds = %1112
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %90, i32 noundef 1)
  %.sroa.092.0.copyload = load <2 x float>, ptr %11, align 8
  %1114 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %1114, align 8
  %1115 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1116 = getelementptr inbounds i8, ptr %77, i64 14372
  %1117 = load float, ptr %1116, align 4, !tbaa !97
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %1115, i1 noundef zeroext true, float noundef %1117)
  br label %1118

1118:                                             ; preds = %1113, %1112
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #15
  %1119 = load float, ptr %11, align 8, !tbaa !140
  %1120 = getelementptr inbounds i8, ptr %11, i64 4
  %1121 = load float, ptr %1120, align 4, !tbaa !183
  %1122 = fadd float %.sroa.0502.2, %1119
  %1123 = fadd float %.sroa.11.0.copyload, %1121
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef %1119, float noundef %1121, float noundef %1122, float noundef %1123)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  br i1 %68, label %1124, label %1127

1124:                                             ; preds = %1118
  %1125 = getelementptr inbounds i8, ptr %.2895, i64 248
  %1126 = load i64, ptr %1125, align 8
  br label %1130

1127:                                             ; preds = %1118
  %1128 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %100)
  %1129 = bitcast <2 x float> %1128 to i64
  br label %1130

1130:                                             ; preds = %1127, %1124
  %storemerge = phi i64 [ %1126, %1124 ], [ %1129, %1127 ]
  store i64 %storemerge, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %365, label %1131, label %1134

1131:                                             ; preds = %1130
  %1132 = getelementptr inbounds i8, ptr %.08981228, i64 48
  %1133 = load ptr, ptr %1132, align 8, !tbaa !116
  br label %1134

1134:                                             ; preds = %1130, %1131
  %1135 = phi ptr [ %1133, %1131 ], [ %.1888, %1130 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #15
  store ptr null, ptr %31, align 8, !tbaa !40
  br i1 %375, label %1136, label %1139

1136:                                             ; preds = %1134
  %1137 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1138 = getelementptr inbounds i8, ptr %1, i64 %1137
  store ptr %1138, ptr %31, align 8, !tbaa !40
  br label %1139

1139:                                             ; preds = %1136, %1134
  %1140 = phi ptr [ %1138, %1136 ], [ null, %1134 ]
  %.0929 = phi ptr [ %1, %1136 ], [ %1135, %1134 ]
  %1141 = trunc nuw i8 %.19121254 to i1
  br i1 %1141, label %1144, label %1142

1142:                                             ; preds = %1139
  %1143 = trunc nuw i8 %.29151252 to i1
  br i1 %1143, label %1144, label %1406

1144:                                             ; preds = %1142, %1139
  br i1 %331, label %1146, label %1145

1145:                                             ; preds = %1144
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.4, i32 noundef 4633, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1146:                                             ; preds = %1144
  br i1 %375, label %1152, label %1147

1147:                                             ; preds = %1146
  %1148 = getelementptr inbounds i8, ptr %.08981228, i64 16
  %1149 = load i32, ptr %1148, align 8, !tbaa !114
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds i8, ptr %.0929, i64 %1150
  store ptr %1151, ptr %31, align 8, !tbaa !40
  br label %1152

1152:                                             ; preds = %1147, %1146
  %.pre12111213 = phi ptr [ %1151, %1147 ], [ %1140, %1146 ]
  %1153 = getelementptr inbounds i8, ptr %.08981228, i64 32
  %1154 = load ptr, ptr %1153, align 8, !tbaa !117
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %33)
  %.sroa.063.0.copyload = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, align 4
  %.sroa.9.0.copyload = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 4), align 4
  br i1 %1141, label %1155, label %1160

1155:                                             ; preds = %1152
  %1156 = getelementptr inbounds i8, ptr %.08981228, i64 84
  %1157 = load i32, ptr %1156, align 4, !tbaa !148
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds i16, ptr %1154, i64 %1158
  br label %1160

1160:                                             ; preds = %1155, %1152
  %.sroa.069.0 = phi ptr [ %1159, %1155 ], [ null, %1152 ]
  %.sroa.063.0 = phi i32 [ -1, %1155 ], [ %.sroa.063.0.copyload, %1152 ]
  %.0921 = phi i32 [ 1, %1155 ], [ 0, %1152 ]
  %1161 = trunc nuw i8 %.29151252 to i1
  br i1 %1161, label %1162, label %1171

1162:                                             ; preds = %1160
  %1163 = getelementptr inbounds i8, ptr %.08981228, i64 88
  %1164 = load i32, ptr %1163, align 4, !tbaa !149
  %1165 = getelementptr inbounds i8, ptr %.08981228, i64 92
  %1166 = load i32, ptr %1165, align 4, !tbaa !150
  %1167 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1164, i32 noundef %1166)
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds i16, ptr %1154, i64 %1168
  %1170 = add nuw nsw i32 %.0921, 1
  br label %1171

1171:                                             ; preds = %1162, %1160
  %.sroa.7.0 = phi ptr [ %1169, %1162 ], [ null, %1160 ]
  %.sroa.9.0 = phi i32 [ -1, %1162 ], [ %.sroa.9.0.copyload, %1160 ]
  %.1922 = phi i32 [ %1170, %1162 ], [ %.0921, %1160 ]
  %.lobit = lshr exact i32 %67, 26
  %1172 = add nuw nsw i32 %.1922, %.lobit
  br label %1173

1173:                                             ; preds = %1188, %1171
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1171 ], [ %.sroa.9.2, %1188 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1171 ], [ %.sroa.063.3, %1188 ]
  %.2923 = phi i32 [ %1172, %1171 ], [ %.4925, %1188 ]
  %.0918 = phi i32 [ 0, %1171 ], [ %.1919, %1188 ]
  %.0917 = phi ptr [ %1154, %1171 ], [ %1189, %1188 ]
  %1174 = load i16, ptr %.0917, align 2, !tbaa !146
  switch i16 %1174, label %1188 [
    i16 0, label %1190
    i16 10, label %1175
  ]

1175:                                             ; preds = %1173
  %1176 = add nsw i32 %.0918, 1
  %1177 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1177, label %1178, label %1182

1178:                                             ; preds = %1175
  %.not1018 = icmp ult ptr %.0917, %.sroa.069.0
  br i1 %.not1018, label %1182, label %1179

1179:                                             ; preds = %1178
  %1180 = add nsw i32 %.2923, -1
  %1181 = icmp slt i32 %.2923, 2
  br i1 %1181, label %1190, label %1182

1182:                                             ; preds = %1179, %1178, %1175
  %.sroa.063.2 = phi i32 [ %1176, %1179 ], [ -1, %1178 ], [ %.sroa.063.1, %1175 ]
  %.3924 = phi i32 [ %1180, %1179 ], [ %.2923, %1178 ], [ %.2923, %1175 ]
  %1183 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1183, label %1184, label %1188

1184:                                             ; preds = %1182
  %.not1019 = icmp ult ptr %.0917, %.sroa.7.0
  br i1 %.not1019, label %1188, label %1185

1185:                                             ; preds = %1184
  %1186 = add nsw i32 %.3924, -1
  %1187 = icmp slt i32 %.3924, 2
  br i1 %1187, label %1190, label %1188

1188:                                             ; preds = %1173, %1185, %1184, %1182
  %.sroa.9.2 = phi i32 [ %1176, %1185 ], [ -1, %1184 ], [ %.sroa.9.1, %1182 ], [ %.sroa.9.1, %1173 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1185 ], [ %.sroa.063.2, %1184 ], [ %.sroa.063.2, %1182 ], [ %.sroa.063.1, %1173 ]
  %.4925 = phi i32 [ %1186, %1185 ], [ %.3924, %1184 ], [ %.3924, %1182 ], [ %.2923, %1173 ]
  %.1919 = phi i32 [ %1176, %1185 ], [ %1176, %1184 ], [ %1176, %1182 ], [ %.0918, %1173 ]
  %1189 = getelementptr inbounds i8, ptr %.0917, i64 2
  br label %1173, !llvm.loop !184

1190:                                             ; preds = %1185, %1179, %1173
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1173 ], [ %.sroa.9.1, %1179 ], [ %1176, %1185 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1173 ], [ %1176, %1179 ], [ %.sroa.063.2, %1185 ]
  %.2920 = phi i32 [ %.0918, %1173 ], [ %1176, %1179 ], [ %1176, %1185 ]
  %1191 = add nsw i32 %.2920, 1
  %1192 = icmp eq i32 %.sroa.063.4, -1
  %spec.select1115 = select i1 %1192, i32 %1191, i32 %.sroa.063.4
  %1193 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1193, i32 %1191, i32 %.sroa.9.3
  %1194 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1154)
  %1195 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %77, ptr noundef %1194, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1195, i64 0
  store float %.sroa.045.0.vec.extract, ptr %32, align 4, !tbaa !185
  %1196 = sitofp i32 %spec.select1115 to float
  %1197 = getelementptr inbounds i8, ptr %77, i64 15360
  %1198 = load float, ptr %1197, align 8, !tbaa !41
  %1199 = fmul float %1198, %1196
  %1200 = getelementptr inbounds i8, ptr %32, i64 4
  store float %1199, ptr %1200, align 4, !tbaa !186
  %1201 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1201, label %1202, label %1209

1202:                                             ; preds = %1190
  %1203 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1154)
  %1204 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %77, ptr noundef %1203, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1204, i64 0
  store float %.sroa.044.0.vec.extract, ptr %33, align 4, !tbaa !185
  %1205 = uitofp nneg i32 %.sroa.9.4 to float
  %1206 = load float, ptr %1197, align 8, !tbaa !41
  %1207 = fmul float %1206, %1205
  %1208 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1207, ptr %1208, align 4, !tbaa !186
  br label %1209

1209:                                             ; preds = %1202, %1190
  %1210 = phi float [ %1206, %1202 ], [ %1198, %1190 ]
  br i1 %68, label %1211, label %1215

1211:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #15
  %1212 = sitofp i32 %1191 to float
  %1213 = fmul float %1210, %1212
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %.sroa.0502.2, float noundef %1213)
  %1214 = load i64, ptr %34, align 8
  store i64 %1214, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #15
  br label %1215

1215:                                             ; preds = %1211, %1209
  br i1 %1141, label %1216, label %1276

1216:                                             ; preds = %1215
  %1217 = getelementptr inbounds i8, ptr %.08981228, i64 3716
  %1218 = load i8, ptr %1217, align 4, !tbaa !151, !range !38, !noundef !39
  %1219 = trunc nuw i8 %1218 to i1
  br i1 %1219, label %1220, label %1276

1220:                                             ; preds = %1216
  %1221 = and i32 %5, 4096
  %.not1020 = icmp eq i32 %1221, 0
  br i1 %.not1020, label %1222, label %1242

1222:                                             ; preds = %1220
  %1223 = fmul float %.sroa.0502.2, 2.500000e-01
  %1224 = load float, ptr %32, align 4, !tbaa !185
  %1225 = getelementptr inbounds i8, ptr %.08981228, i64 80
  %1226 = load float, ptr %1225, align 8, !tbaa !119
  %1227 = fcmp olt float %1224, %1226
  br i1 %1227, label %1228, label %1233

1228:                                             ; preds = %1222
  %1229 = fsub float %1224, %1223
  %1230 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1229)
  %1231 = fptosi float %1230 to i32
  %1232 = sitofp i32 %1231 to float
  store float %1232, ptr %1225, align 8, !tbaa !119
  br label %1244

1233:                                             ; preds = %1222
  %1234 = load float, ptr %100, align 4, !tbaa !141
  %1235 = fsub float %.sroa.0502.2, %1234
  %1236 = fsub float %1224, %1235
  %1237 = fcmp ult float %1236, %1226
  br i1 %1237, label %1244, label %1238

1238:                                             ; preds = %1233
  %1239 = fadd float %1223, %1236
  %1240 = fptosi float %1239 to i32
  %1241 = sitofp i32 %1240 to float
  store float %1241, ptr %1225, align 8, !tbaa !119
  br label %1244

1242:                                             ; preds = %1220
  %1243 = getelementptr inbounds i8, ptr %.08981228, i64 80
  store float 0.000000e+00, ptr %1243, align 8, !tbaa !119
  br label %1244

1244:                                             ; preds = %1228, %1238, %1233, %1242
  br i1 %68, label %1245, label %1275

1245:                                             ; preds = %1244
  %1246 = load float, ptr %1200, align 4, !tbaa !186
  %1247 = load float, ptr %1197, align 8, !tbaa !41
  %1248 = fsub float %1246, %1247
  %1249 = fcmp olt float %1248, %.19081256
  br i1 %1249, label %1250, label %1252

1250:                                             ; preds = %1245
  %1251 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1248)
  %.pre1206 = load float, ptr %101, align 4, !tbaa !91
  br label %1261

1252:                                             ; preds = %1245
  %1253 = load float, ptr %101, align 4, !tbaa !91
  %1254 = fneg float %1253
  %1255 = call float @llvm.fmuladd.f32(float %1254, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1256 = fsub float %1246, %1255
  %1257 = fcmp ult float %1256, %.19081256
  br i1 %1257, label %1261, label %1258

1258:                                             ; preds = %1252
  %1259 = fsub float %1246, %.sroa.11.0.copyload
  %1260 = call float @llvm.fmuladd.f32(float %1253, float 2.000000e+00, float %1259)
  br label %1261

1261:                                             ; preds = %1252, %1258, %1250
  %1262 = phi float [ %.pre1206, %1250 ], [ %1253, %1258 ], [ %1253, %1252 ]
  %.2909 = phi float [ %1251, %1250 ], [ %1260, %1258 ], [ %.19081256, %1252 ]
  %1263 = getelementptr inbounds i8, ptr %30, i64 4
  %1264 = load float, ptr %1263, align 4, !tbaa !186
  %1265 = call float @llvm.fmuladd.f32(float %1262, float 2.000000e+00, float %1264)
  %1266 = fsub float %1265, %.sroa.11.0.copyload
  %1267 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1266, float noundef 0.000000e+00)
  %1268 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2909, float noundef 0.000000e+00, float noundef %1267)
  %1269 = getelementptr inbounds i8, ptr %.2895, i64 128
  %1270 = load float, ptr %1269, align 4, !tbaa !110
  %1271 = fsub float %1270, %1268
  %1272 = getelementptr inbounds i8, ptr %29, i64 4
  %1273 = load float, ptr %1272, align 4, !tbaa !186
  %1274 = fadd float %1273, %1271
  store float %1274, ptr %1272, align 4, !tbaa !186
  store float %1268, ptr %1269, align 4, !tbaa !110
  br label %1275

1275:                                             ; preds = %1261, %1244
  store i8 0, ptr %1217, align 4, !tbaa !151
  br label %1276

1276:                                             ; preds = %1275, %1216, %1215
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #15
  %1277 = getelementptr inbounds i8, ptr %.08981228, i64 80
  %1278 = load float, ptr %1277, align 8, !tbaa !119
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1278, float noundef 0.000000e+00)
  br i1 %1161, label %1279, label %1348

1279:                                             ; preds = %1276
  %1280 = getelementptr inbounds i8, ptr %.08981228, i64 88
  %1281 = load i32, ptr %1280, align 4, !tbaa !149
  %1282 = getelementptr inbounds i8, ptr %.08981228, i64 92
  %1283 = load i32, ptr %1282, align 4, !tbaa !150
  %1284 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1281, i32 noundef %1283)
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds i16, ptr %1154, i64 %1285
  %1287 = load i32, ptr %1280, align 4, !tbaa !149
  %1288 = load i32, ptr %1282, align 4, !tbaa !150
  %1289 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1287, i32 noundef %1288)
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds i16, ptr %1154, i64 %1290
  %1292 = select i1 %1141, float 1.000000e+00, float 0x3FE3333340000000
  %1293 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1292)
  %1294 = select i1 %68, float 0.000000e+00, float -1.000000e+00
  %1295 = select i1 %68, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #15
  %1296 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1296, ptr %37, align 8
  %1297 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1297, ptr %36, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #15
  store ptr %1286, ptr %38, align 8, !tbaa !40
  %1298 = getelementptr inbounds i8, ptr %36, i64 4
  %1299 = icmp slt i32 %1284, %1289
  br i1 %1299, label %.lr.ph1198, label %._crit_edge

.lr.ph1198:                                       ; preds = %1279
  %1300 = extractelement <2 x float> %1297, i64 1
  %1301 = getelementptr inbounds i8, ptr %28, i64 12
  %1302 = getelementptr inbounds i8, ptr %28, i64 4
  %1303 = getelementptr inbounds i8, ptr %77, i64 15352
  %1304 = getelementptr inbounds i8, ptr %.2895, i64 656
  %1305 = getelementptr inbounds i8, ptr %39, i64 8
  %.pre1207 = load float, ptr %1197, align 8, !tbaa !41
  br label %1306

1306:                                             ; preds = %.lr.ph1198, %.loopexit
  %1307 = phi ptr [ %1286, %.lr.ph1198 ], [ %1340, %.loopexit ]
  %1308 = phi float [ %1300, %.lr.ph1198 ], [ %1346, %.loopexit ]
  %1309 = phi float [ %.pre1207, %.lr.ph1198 ], [ %1342, %.loopexit ]
  %1310 = load float, ptr %1301, align 4, !tbaa !187
  %1311 = fadd float %1310, %1309
  %1312 = fcmp ogt float %1308, %1311
  br i1 %1312, label %._crit_edge.loopexit, label %1313

1313:                                             ; preds = %1306
  %1314 = load float, ptr %1302, align 4, !tbaa !188
  %1315 = fcmp olt float %1308, %1314
  br i1 %1315, label %.preheader, label %1322

.preheader:                                       ; preds = %1313, %1318
  %1316 = phi ptr [ %1319, %1318 ], [ %1307, %1313 ]
  %1317 = icmp ult ptr %1316, %1291
  br i1 %1317, label %1318, label %.loopexit

1318:                                             ; preds = %.preheader
  %1319 = getelementptr inbounds i8, ptr %1316, i64 2
  store ptr %1319, ptr %38, align 8, !tbaa !40
  %1320 = load i16, ptr %1316, align 2, !tbaa !146
  %1321 = icmp eq i16 %1320, 10
  br i1 %1321, label %.loopexit, label %.preheader, !llvm.loop !189

1322:                                             ; preds = %1313
  %1323 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %77, ptr noundef %1307, ptr noundef nonnull %1291, ptr noundef nonnull %38, ptr noundef null, i1 noundef zeroext true)
  %.sroa.029.0.vec.extract = extractelement <2 x float> %1323, i64 0
  %1324 = fcmp ugt float %.sroa.029.0.vec.extract, 0.000000e+00
  br i1 %1324, label %1331, label %1325

1325:                                             ; preds = %1322
  %1326 = load ptr, ptr %1303, align 8, !tbaa !126
  %1327 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110) %1326, i16 noundef zeroext 32)
  %1328 = fmul float %1327, 5.000000e-01
  %1329 = fptosi float %1328 to i32
  %1330 = sitofp i32 %1329 to float
  br label %1331

1331:                                             ; preds = %1325, %1322
  %.sroa.029.0.vec.extract32.pre-phi = phi float [ %1330, %1325 ], [ %.sroa.029.0.vec.extract, %1322 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #15
  %1332 = load float, ptr %1197, align 8, !tbaa !41
  %1333 = fsub float %1294, %1332
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef %1333)
  %1334 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %41)
  store <2 x float> %1334, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %.sroa.029.0.vec.extract32.pre-phi, float noundef %1295)
  %1335 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %1335, ptr %42, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(8) %42)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %44, ptr noundef nonnull align 4 dereferenceable(16) %28)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %44)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %45, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1336 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %45)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #15
  br i1 %1336, label %1337, label %1339

1337:                                             ; preds = %1331
  %1338 = load ptr, ptr %1304, align 8, !tbaa !190
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1338, ptr noundef nonnull align 4 dereferenceable(8) %39, ptr noundef nonnull align 4 dereferenceable(8) %1305, i32 noundef %1293, float noundef 0.000000e+00, i32 noundef 0)
  br label %1339

1339:                                             ; preds = %1337, %1331
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #15
  %.pre1208 = load float, ptr %1197, align 8, !tbaa !41
  %.pre1209 = load float, ptr %1298, align 4, !tbaa !186
  %.pre1210 = load ptr, ptr %38, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1318, %1339
  %1340 = phi ptr [ %.pre1210, %1339 ], [ %1316, %.preheader ], [ %1319, %1318 ]
  %1341 = phi float [ %.pre1209, %1339 ], [ %1308, %1318 ], [ %1308, %.preheader ]
  %1342 = phi float [ %.pre1208, %1339 ], [ %1309, %1318 ], [ %1309, %.preheader ]
  %1343 = load float, ptr %29, align 8, !tbaa !185
  %1344 = load float, ptr %35, align 4, !tbaa !185
  %1345 = fsub float %1343, %1344
  store float %1345, ptr %36, align 8, !tbaa !185
  %1346 = fadd float %1342, %1341
  store float %1346, ptr %1298, align 4, !tbaa !186
  %1347 = icmp ult ptr %1340, %1291
  br i1 %1347, label %1306, label %._crit_edge.loopexit, !llvm.loop !191

._crit_edge.loopexit:                             ; preds = %1306, %.loopexit
  %.pre1211.pre.pre = load ptr, ptr %31, align 8, !tbaa !40
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1279
  %.pre1211.pre = phi ptr [ %.pre1211.pre.pre, %._crit_edge.loopexit ], [ %.pre12111213, %1279 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #15
  br label %1348

1348:                                             ; preds = %._crit_edge, %1276
  %.pre1211 = phi ptr [ %.pre1211.pre, %._crit_edge ], [ %.pre12111213, %1276 ]
  br i1 %68, label %1354, label %1349

1349:                                             ; preds = %1348
  %1350 = ptrtoint ptr %.pre1211 to i64
  %1351 = ptrtoint ptr %.0929 to i64
  %1352 = sub i64 %1350, %1351
  %1353 = icmp slt i64 %1352, 2097152
  br i1 %1353, label %1354, label %1363

1354:                                             ; preds = %1349, %1348
  %. = phi ptr [ %28, %1349 ], [ null, %1348 ]
  %1355 = zext i1 %375 to i32
  %1356 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1355, float noundef 1.000000e+00)
  %1357 = getelementptr inbounds i8, ptr %.2895, i64 656
  %1358 = load ptr, ptr %1357, align 8, !tbaa !190
  %1359 = getelementptr inbounds i8, ptr %77, i64 15352
  %1360 = load ptr, ptr %1359, align 8, !tbaa !126
  %1361 = load float, ptr %1197, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #15
  %1362 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1362, ptr %46, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1358, ptr noundef %1360, float noundef %1361, ptr noundef nonnull align 4 dereferenceable(8) %46, i32 noundef %1356, ptr noundef %.0929, ptr noundef %.pre1211, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #15
  br label %1363

1363:                                             ; preds = %1354, %1349
  br i1 %1141, label %1364, label %1405

1364:                                             ; preds = %1363
  %1365 = getelementptr inbounds i8, ptr %77, i64 24
  %1366 = load float, ptr %1365, align 8, !tbaa !192
  %1367 = getelementptr inbounds i8, ptr %.08981228, i64 3712
  %1368 = load float, ptr %1367, align 8, !tbaa !193
  %1369 = fadd float %1366, %1368
  store float %1369, ptr %1367, align 8, !tbaa !193
  %1370 = getelementptr inbounds i8, ptr %77, i64 123
  %1371 = load i8, ptr %1370, align 1, !tbaa !194, !range !38, !noundef !39
  %1372 = trunc nuw i8 %1371 to i1
  %1373 = fcmp ugt float %1369, 0.000000e+00
  %or.cond1116 = select i1 %1372, i1 %1373, i1 false
  br i1 %or.cond1116, label %1374, label %1377

1374:                                             ; preds = %1364
  %1375 = call float @fmodf(float noundef %1369, float noundef 0x3FF3333340000000) #15
  %1376 = fcmp ole float %1375, 0x3FE99999A0000000
  br label %1377

1377:                                             ; preds = %1374, %1364
  %1378 = phi i1 [ true, %1364 ], [ %1376, %1374 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #15
  %1379 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %32)
  store <2 x float> %1379, ptr %48, align 8
  %1380 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1380, ptr %47, align 8
  %1381 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %47)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #15
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1381, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1381, i64 1
  %1382 = load float, ptr %1197, align 8, !tbaa !41
  %1383 = fsub float %.sroa.0.4.vec.extract, %1382
  %1384 = fadd float %1383, 5.000000e-01
  %1385 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1386 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %49, float noundef %.sroa.0.0.vec.extract, float noundef %1384, float noundef %1385, float noundef %1386)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #15
  br i1 %1378, label %1387, label %.critedge13

1387:                                             ; preds = %1377
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1388 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %49, ptr noundef nonnull align 4 dereferenceable(16) %50)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #15
  br i1 %1388, label %1389, label %1394

1389:                                             ; preds = %1387
  %1390 = getelementptr inbounds i8, ptr %.2895, i64 656
  %1391 = load ptr, ptr %1390, align 8, !tbaa !190
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #15
  %1392 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %49)
  store <2 x float> %1392, ptr %51, align 8
  %1393 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1391, ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef %1393, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #15
  br label %1394

.critedge13:                                      ; preds = %1377
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #15
  br label %1394

1394:                                             ; preds = %.critedge13, %1389, %1387
  br i1 %80, label %1404, label %1395

1395:                                             ; preds = %1394
  %1396 = getelementptr inbounds i8, ptr %77, i64 23376
  store i8 1, ptr %1396, align 8, !tbaa !195
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #15
  %1397 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1398 = load float, ptr %1197, align 8, !tbaa !41
  %1399 = fsub float %.sroa.0.4.vec.extract, %1398
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1397, float noundef %1399)
  %1400 = getelementptr inbounds i8, ptr %77, i64 23380
  %1401 = load i64, ptr %52, align 8
  store i64 %1401, ptr %1400, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #15
  %1402 = load float, ptr %1197, align 8, !tbaa !41
  %1403 = getelementptr inbounds i8, ptr %77, i64 23388
  store float %1402, ptr %1403, align 4, !tbaa !196
  br label %1404

1404:                                             ; preds = %1395, %1394
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #15
  br label %1405

1405:                                             ; preds = %1404, %1363
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  br label %1441

1406:                                             ; preds = %1142
  br i1 %68, label %.critedge1118, label %1407

1407:                                             ; preds = %1406
  br i1 %375, label %1425, label %1408

1408:                                             ; preds = %1407
  %1409 = load i32, ptr %167, align 8, !tbaa !104
  %1410 = icmp eq i32 %1409, %90
  br i1 %1410, label %1411, label %1416

1411:                                             ; preds = %1408
  %1412 = getelementptr inbounds i8, ptr %.08981228, i64 16
  %1413 = load i32, ptr %1412, align 8, !tbaa !114
  %1414 = sext i32 %1413 to i64
  %1415 = getelementptr inbounds i8, ptr %.0929, i64 %1414
  store ptr %1415, ptr %31, align 8, !tbaa !40
  br label %1425

1416:                                             ; preds = %1408
  %1417 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0929) #16
  %1418 = getelementptr inbounds i8, ptr %.0929, i64 %1417
  store ptr %1418, ptr %31, align 8, !tbaa !40
  br label %1425

.critedge1118:                                    ; preds = %1406
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #15
  %1419 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0929, ptr noundef nonnull %31)
  %1420 = sitofp i32 %1419 to float
  %1421 = getelementptr inbounds i8, ptr %77, i64 15360
  %1422 = load float, ptr %1421, align 8, !tbaa !41
  %1423 = fmul float %1422, %1420
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %.sroa.0502.2, float noundef %1423)
  %1424 = load i64, ptr %53, align 8
  store i64 %1424, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #15
  br label %1431

1425:                                             ; preds = %1407, %1411, %1416
  %1426 = phi ptr [ %1140, %1407 ], [ %1415, %1411 ], [ %1418, %1416 ]
  %1427 = ptrtoint ptr %1426 to i64
  %1428 = ptrtoint ptr %.0929 to i64
  %1429 = sub i64 %1427, %1428
  %1430 = icmp slt i64 %1429, 2097152
  br i1 %1430, label %1431, label %1441

1431:                                             ; preds = %.critedge1118, %1425
  %.14 = phi ptr [ %28, %1425 ], [ null, %.critedge1118 ]
  %1432 = zext i1 %375 to i32
  %1433 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1432, float noundef 1.000000e+00)
  %1434 = getelementptr inbounds i8, ptr %.2895, i64 656
  %1435 = load ptr, ptr %1434, align 8, !tbaa !190
  %1436 = getelementptr inbounds i8, ptr %77, i64 15352
  %1437 = load ptr, ptr %1436, align 8, !tbaa !126
  %1438 = getelementptr inbounds i8, ptr %77, i64 15360
  %1439 = load float, ptr %1438, align 8, !tbaa !41
  %1440 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1435, ptr noundef %1437, float noundef %1439, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %1433, ptr noundef %.0929, ptr noundef %1440, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1441

1441:                                             ; preds = %1425, %1431, %1405
  br i1 %brmerge1033, label %1443, label %1442

1442:                                             ; preds = %1441
  call void @_ZN5ImGui7PopFontEv()
  br label %1443

1443:                                             ; preds = %1441, %1442
  br i1 %68, label %1444, label %1466

1444:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #15
  %1445 = load float, ptr %30, align 8, !tbaa !185
  %1446 = getelementptr inbounds i8, ptr %30, i64 4
  %1447 = load float, ptr %1446, align 4, !tbaa !186
  %1448 = load float, ptr %101, align 4, !tbaa !91
  %1449 = fadd float %1447, %1448
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1445, float noundef %1449)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %54)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #15
  %1450 = getelementptr inbounds i8, ptr %77, i64 18208
  %1451 = load i32, ptr %1450, align 8, !tbaa !197
  %1452 = or i32 %1451, 1025
  store i32 %1452, ptr %1450, align 8, !tbaa !197
  call void @_ZN5ImGui8EndChildEv()
  %1453 = getelementptr inbounds i8, ptr %77, i64 18236
  %1454 = getelementptr inbounds i8, ptr %77, i64 18244
  %1455 = load i32, ptr %1454, align 4, !tbaa !94
  %1456 = and i32 %1455, 128
  %1457 = getelementptr inbounds i8, ptr %15, i64 8
  %1458 = load i32, ptr %1457, align 4, !tbaa !198
  %1459 = or i32 %1458, %1456
  store i32 %1459, ptr %1457, align 4, !tbaa !198
  store i32 %1451, ptr %1450, align 8, !tbaa !197
  call void @_ZN5ImGui8EndGroupEv()
  %1460 = load i32, ptr %1453, align 4, !tbaa !199
  %1461 = icmp eq i32 %1460, 0
  br i1 %1461, label %1462, label %1466

1462:                                             ; preds = %1444
  store i32 %90, ptr %1453, align 4, !tbaa !199
  %1463 = getelementptr inbounds i8, ptr %15, i64 4
  %1464 = getelementptr inbounds i8, ptr %77, i64 18240
  %1465 = load <2 x i32>, ptr %1463, align 4, !tbaa !96
  store <2 x i32> %1465, ptr %1464, align 4, !tbaa !96
  br label %1466

1466:                                             ; preds = %1444, %1462, %1443
  %1467 = getelementptr inbounds i8, ptr %77, i64 23560
  %1468 = load i8, ptr %1467, align 8, !tbaa !200, !range !38, !noundef !39
  %1469 = trunc nuw i8 %1468 to i1
  %or.cond1124 = and i1 %brmerge1033, %1469
  br i1 %or.cond1124, label %1470, label %1472

1470:                                             ; preds = %1466
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.25)
  %1471 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %29, ptr noundef %.0929, ptr noundef %1471)
  br label %1472

1472:                                             ; preds = %1470, %1466
  br i1 %106, label %1473, label %1483

1473:                                             ; preds = %1472
  %1474 = getelementptr inbounds i8, ptr %11, i64 8
  %1475 = load float, ptr %1474, align 8, !tbaa !201
  %1476 = getelementptr inbounds i8, ptr %77, i64 14388
  %1477 = load float, ptr %1476, align 4, !tbaa !92
  %1478 = fadd float %1475, %1477
  %1479 = load float, ptr %1120, align 4, !tbaa !183
  %1480 = load float, ptr %101, align 4, !tbaa !91
  %1481 = fadd float %1479, %1480
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef %1478, float noundef %1481)
  %1482 = load <2 x float>, ptr %55, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1482, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1483

1483:                                             ; preds = %1473, %1472
  %1484 = and i32 %5, 134217728
  %.not1021 = icmp eq i32 %1484, 0
  %or.cond1121 = and i1 %.not1021, %.not10151181
  br i1 %or.cond1121, label %1485, label %1486

1485:                                             ; preds = %1483
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %90)
  br label %1486

1486:                                             ; preds = %1485, %1483
  %1487 = and i32 %5, 32
  %.not1022 = icmp eq i32 %1487, 0
  %1488 = trunc nuw i8 %.29281250 to i1
  %.2 = select i1 %.not1022, i1 %.not10151181, i1 %1488
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #15
  br label %.thread

.thread:                                          ; preds = %135, %123, %154, %1486
  %.3 = phi i1 [ %.2, %1486 ], [ false, %154 ], [ false, %123 ], [ false, %135 ]
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %15) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  br label %1489

1489:                                             ; preds = %8, %.thread
  %.4 = phi i1 [ %.3, %.thread ], [ false, %8 ]
  ret i1 %.4
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724), i32 noundef) local_unnamed_addr #10 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(60)) unnamed_addr #10 align 2

declare void @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) local_unnamed_addr #4

declare noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), i1 noundef zeroext, i32 noundef) local_unnamed_addr #4

declare void @_ZN5ImGui8EndChildEv() local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef) local_unnamed_addr #1

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

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

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

declare noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724)) local_unnamed_addr #10 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724)) local_unnamed_addr #3 align 2

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110), i16 noundef zeroext) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 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 #1 align 2

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef, ptr noundef, float noundef, float noundef) local_unnamed_addr #10

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef, i32 noundef) local_unnamed_addr #10

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef, i32 noundef) local_unnamed_addr #10

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef, ptr noundef, float noundef, float noundef) local_unnamed_addr #10

declare noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef, i1 noundef zeroext) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #10

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

declare noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

declare void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef, float noundef) local_unnamed_addr #4

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724)) local_unnamed_addr #3 align 2

declare noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #4

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #4

declare noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #4

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef, ptr noundef) local_unnamed_addr #10

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #4

declare noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #10

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

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

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

declare noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #4

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

; 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 #9 align 2

; 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 #10 align 2

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @fmodf(float noundef, float noundef) local_unnamed_addr #13

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

declare void @_ZN5ImGui7PopFontEv() local_unnamed_addr #4

declare void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr) local_unnamed_addr

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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 #10 = { 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 nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #12 = { 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 #13 = { mustprogress nofree nounwind willreturn memory(write) "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 #14 = { noreturn nounwind }
attributes #15 = { nounwind }
attributes #16 = { 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 179}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !11, i64 124, !11, i64 132, !11, i64 140, !11, i64 148, !11, i64 156, !11, i64 164, !13, i64 172, !13, i64 173, !13, i64 174, !13, i64 175, !13, i64 176, !13, i64 177, !13, i64 178, !13, i64 179, !13, i64 180, !13, i64 181, !13, i64 182, !13, i64 183, !13, i64 184, !8, i64 185, !14, i64 186, !14, i64 188, !14, i64 190, !14, i64 192, !14, i64 194, !10, i64 196, !8, i64 200, !8, i64 201, !8, i64 202, !13, i64 203, !10, i64 204, !8, i64 208, !8, i64 209, !8, i64 210, !8, i64 211, !10, i64 212, !10, i64 213, !10, i64 214, !11, i64 216, !11, i64 224, !15, i64 232, !16, i64 248, !22, i64 480, !22, i64 496, !22, i64 512, !22, i64 528, !22, i64 544, !22, i64 560, !22, i64 576, !23, i64 592, !23, i64 596, !10, i64 600, !12, i64 604, !12, i64 608, !24, i64 616, !26, i64 632, !12, i64 648, !10, i64 652, !7, i64 656, !27, i64 664, !7, i64 864, !7, i64 872, !7, i64 880, !7, i64 888, !7, i64 896, !7, i64 904, !7, i64 912, !8, i64 920, !8, i64 928, !10, i64 960, !10, i64 964, !10, i64 968, !13, 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 = !{!"short", !8, i64 0}
!15 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!16 = !{!"_ZTS19ImGuiWindowTempData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !12, i64 56, !12, i64 60, !13, i64 64, !13, i64 65, !17, i64 68, !17, i64 72, !17, i64 76, !11, i64 80, !18, i64 88, !14, i64 92, !14, i64 94, !13, i64 96, !13, i64 97, !13, i64 98, !11, i64 100, !19, i64 108, !10, i64 136, !10, i64 140, !20, i64 144, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !12, i64 188, !12, i64 192, !21, i64 200, !21, i64 216}
!17 = !{!"_ZTS6ImVec1", !12, i64 0}
!18 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!19 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 10, !14, i64 12, !14, i64 14, !14, i64 16, !8, i64 18}
!20 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!21 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!23 = !{!"_ZTS8ImVec2ih", !14, i64 0, !14, i64 2}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!26 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS10ImDrawList", !28, i64 0, !29, i64 16, !30, i64 32, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !31, i64 88, !32, i64 104, !33, i64 120, !34, i64 136, !36, i64 168, !12, i64 192}
!28 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{!"_ZTS15ImDrawCmdHeader", !35, i64 0, !7, i64 16, !10, i64 24}
!35 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!36 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !37, i64 8}
!37 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!7, !7, i64 0}
!41 = !{!42, !12, i64 15360}
!42 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !43, i64 8, !44, i64 14272, !44, i64 14288, !45, i64 14304, !7, i64 15352, !12, i64 15360, !12, i64 15364, !46, i64 15368, !47, i64 15896, !10, i64 15904, !10, i64 15908, !10, i64 15912, !13, i64 15916, !13, i64 15917, !13, i64 15918, !13, i64 15919, !13, i64 15920, !7, i64 15928, !20, i64 15936, !20, i64 15952, !20, i64 15968, !48, i64 15984, !24, i64 16000, !10, i64 16016, !11, i64 16020, !7, i64 16032, !7, i64 16040, !7, i64 16048, !7, i64 16056, !7, i64 16064, !11, i64 16072, !10, i64 16080, !12, i64 16084, !11, i64 16088, !11, i64 16096, !10, i64 16104, !10, i64 16108, !10, i64 16112, !13, i64 16116, !13, i64 16117, !12, i64 16120, !12, i64 16124, !10, i64 16128, !10, i64 16132, !12, i64 16136, !13, i64 16140, !13, i64 16141, !13, i64 16142, !13, i64 16143, !13, i64 16144, !13, i64 16145, !11, i64 16148, !7, i64 16160, !49, i64 16168, !10, i64 16172, !10, i64 16176, !13, i64 16180, !13, i64 16181, !7, i64 16184, !10, i64 16192, !12, i64 16196, !8, i64 16200, !50, i64 17880, !10, i64 18192, !13, i64 18196, !10, i64 18200, !10, i64 18204, !10, i64 18208, !10, i64 18212, !52, i64 18216, !53, i64 18236, !54, i64 18296, !55, i64 18408, !56, i64 18424, !57, i64 18440, !15, i64 18456, !58, i64 18472, !59, i64 18488, !60, i64 18504, !60, i64 18520, !10, i64 18536, !61, i64 18544, !7, i64 18560, !10, i64 18568, !10, i64 18572, !10, i64 18576, !10, i64 18580, !10, i64 18584, !10, i64 18588, !10, i64 18592, !10, i64 18596, !10, i64 18600, !10, i64 18604, !10, i64 18608, !10, i64 18612, !49, i64 18616, !18, i64 18620, !13, i64 18624, !13, i64 18625, !13, i64 18626, !13, i64 18627, !13, i64 18628, !13, i64 18629, !13, i64 18630, !10, i64 18632, !22, i64 18636, !13, i64 18652, !13, i64 18653, !13, i64 18654, !10, i64 18656, !10, i64 18660, !10, i64 18664, !10, i64 18668, !10, i64 18672, !10, i64 18676, !22, i64 18680, !22, i64 18696, !10, i64 18712, !10, i64 18716, !10, i64 18720, !62, i64 18728, !62, i64 18776, !62, i64 18824, !62, i64 18872, !10, i64 18920, !10, i64 18924, !7, i64 18928, !7, i64 18936, !7, i64 18944, !12, i64 18952, !12, i64 18956, !13, i64 18960, !11, i64 18964, !11, i64 18972, !12, i64 18980, !10, i64 18984, !13, i64 18988, !13, i64 18989, !13, i64 18990, !10, i64 18992, !10, i64 18996, !10, i64 19000, !63, i64 19008, !22, i64 19072, !10, i64 19088, !10, i64 19092, !12, i64 19096, !10, i64 19100, !10, i64 19104, !10, i64 19108, !10, i64 19112, !64, i64 19120, !8, i64 19136, !10, i64 19152, !65, i64 19160, !7, i64 19176, !10, i64 19184, !66, i64 19192, !67, i64 19208, !21, i64 19248, !37, i64 19264, !7, i64 19280, !69, i64 19288, !71, i64 19328, !72, i64 19344, !10, i64 19360, !10, i64 19364, !12, i64 19368, !12, i64 19372, !11, i64 19376, !73, i64 19384, !77, i64 23112, !10, i64 23224, !10, i64 23228, !12, i64 23232, !12, i64 23236, !10, i64 23240, !35, i64 23244, !79, i64 23260, !12, i64 23308, !12, i64 23312, !13, i64 23316, !13, i64 23317, !12, i64 23320, !12, i64 23324, !12, i64 23328, !12, i64 23332, !14, i64 23336, !14, i64 23338, !74, i64 23344, !15, i64 23360, !80, i64 23376, !80, i64 23392, !8, i64 23408, !13, i64 23409, !12, i64 23412, !81, i64 23416, !82, i64 23432, !83, i64 23448, !84, i64 23464, !85, i64 23480, !10, i64 23496, !8, i64 23504, !13, i64 23560, !86, i64 23564, !7, i64 23568, !81, i64 23576, !7, i64 23592, !7, i64 23600, !12, i64 23608, !13, i64 23612, !10, i64 23616, !10, i64 23620, !10, i64 23624, !10, i64 23628, !81, i64 23632, !87, i64 23648, !8, i64 23672, !13, i64 23673, !8, i64 23674, !10, i64 23676, !88, i64 23680, !89, i64 23696, !8, i64 23736, !10, i64 23976, !10, i64 23980, !12, i64 23984, !10, i64 23988, !10, i64 23992, !10, i64 23996, !74, i64 24000}
!43 = !{!"_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, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !7, i64 72, !7, i64 80, !12, i64 88, !13, i64 92, !7, i64 96, !11, i64 104, !13, i64 112, !13, i64 113, !13, i64 114, !13, i64 115, !13, i64 116, !13, i64 117, !13, i64 118, !13, i64 119, !12, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !13, i64 208, !13, i64 209, !13, i64 210, !13, i64 211, !13, i64 212, !13, i64 213, !13, i64 214, !12, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !11, i64 240, !8, i64 248, !8, i64 2856, !8, i64 3508, !11, i64 3572, !8, i64 3580, !12, i64 3588, !12, i64 3592, !13, i64 3596, !13, i64 3597, !13, i64 3598, !13, i64 3599, !10, i64 3600, !8, i64 3604, !13, i64 14036, !11, i64 14040, !8, i64 14048, !8, i64 14088, !8, i64 14128, !8, i64 14133, !8, i64 14138, !8, i64 14148, !8, i64 14158, !8, i64 14163, !8, i64 14168, !8, i64 14176, !8, i64 14196, !8, i64 14216, !12, i64 14236, !13, i64 14240, !13, i64 14241, !8, i64 14242, !13, i64 14243, !14, i64 14244, !29, i64 14248}
!44 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !7, i64 8}
!45 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !12, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 32, !10, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !11, i64 60, !12, i64 68, !12, i64 72, !11, i64 76, !11, i64 84, !11, i64 92, !11, i64 100, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !10, i64 148, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !12, i64 184, !13, i64 188, !13, i64 189, !13, i64 190, !12, i64 192, !12, i64 196, !8, i64 200}
!46 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !35, i64 28, !10, i64 44, !33, i64 48, !8, i64 64, !12, i64 448, !8, i64 452, !7, i64 520}
!47 = !{!"double", !8, i64 0}
!48 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!49 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!50 = !{!"_ZTS20ImGuiKeyRoutingTable", !8, i64 0, !51, i64 280, !51, i64 296}
!51 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!52 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !10, i64 8, !10, i64 12, !13, i64 16}
!53 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !22, i64 12, !22, i64 28, !22, i64 44}
!54 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !13, i64 56, !22, i64 60, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100}
!55 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!56 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!57 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!58 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!59 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!61 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!62 = !{!"_ZTS16ImGuiNavItemData", !7, i64 0, !10, i64 8, !10, i64 12, !22, i64 16, !10, i64 32, !12, i64 36, !12, i64 40, !12, i64 44}
!63 = !{!"_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}
!64 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!67 = !{!"_ZTS6ImPoolI10ImGuiTableE", !68, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!68 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !70, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!70 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!73 = !{!"_ZTS19ImGuiInputTextState", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !29, i64 24, !74, i64 40, !74, i64 56, !13, i64 72, !10, i64 76, !12, i64 80, !75, i64 84, !12, i64 3712, !13, i64 3716, !13, i64 3717, !13, i64 3718, !10, i64 3720}
!74 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!75 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !10, i64 16, !8, i64 20, !8, i64 21, !8, i64 22, !8, i64 23, !8, i64 24, !8, i64 25, !8, i64 26, !12, i64 28, !76, i64 32}
!76 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!77 = !{!"_ZTS6ImFont", !21, i64 0, !12, i64 16, !12, i64 20, !29, i64 24, !78, i64 40, !7, i64 56, !7, i64 64, !7, i64 72, !14, i64 80, !14, i64 82, !14, i64 84, !14, i64 86, !13, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !10, i64 104, !8, i64 108}
!78 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!79 = !{!"_ZTS21ImGuiComboPreviewData", !22, i64 0, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !10, i64 44}
!80 = !{!"_ZTS20ImGuiPlatformImeData", !13, i64 0, !11, i64 4, !12, i64 12}
!81 = !{!"_ZTS15ImGuiTextBuffer", !74, i64 0}
!82 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!83 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !74, i64 0}
!84 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !74, i64 0}
!85 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!86 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!87 = !{!"_ZTS14ImGuiTextIndex", !58, i64 0, !10, i64 16}
!88 = !{!"_ZTS18ImGuiMetricsConfig", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !13, i64 5, !13, i64 6, !10, i64 8, !10, i64 12}
!89 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !90, i64 16, !13, i64 32, !12, i64 36}
!90 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!91 = !{!45, !12, i64 64}
!92 = !{!45, !12, i64 84}
!93 = !{!12, !12, i64 0}
!94 = !{!42, !10, i64 18244}
!95 = !{i64 0, i64 4, !96, i64 4, i64 4, !96, i64 8, i64 4, !96, i64 12, i64 4, !93, i64 16, i64 4, !93, i64 20, i64 4, !93, i64 24, i64 4, !93, i64 28, i64 4, !93, i64 32, i64 4, !93, i64 36, i64 4, !93, i64 40, i64 4, !93, i64 44, i64 4, !93, i64 48, i64 4, !93, i64 52, i64 4, !93, i64 56, i64 4, !93}
!96 = !{!10, !10, i64 0}
!97 = !{!45, !12, i64 68}
!98 = !{!45, !12, i64 72}
!99 = !{!42, !7, i64 16032}
!100 = !{!6, !18, i64 336}
!101 = !{!6, !14, i64 342}
!102 = !{!6, !12, i64 164}
!103 = !{!42, !10, i64 18984}
!104 = !{!42, !10, i64 16128}
!105 = !{!42, !10, i64 18588}
!106 = !{!42, !10, i64 18576}
!107 = !{!42, !49, i64 18616}
!108 = !{!13, !13, i64 0}
!109 = !{!42, !10, i64 16176}
!110 = !{!6, !12, i64 128}
!111 = !{!73, !8, i64 107}
!112 = !{!73, !7, i64 64}
!113 = !{!73, !10, i64 8}
!114 = !{!73, !10, i64 16}
!115 = !{!73, !13, i64 72}
!116 = !{!73, !7, i64 48}
!117 = !{!73, !7, i64 32}
!118 = !{!73, !10, i64 12}
!119 = !{!73, !12, i64 80}
!120 = !{!42, !10, i64 18592}
!121 = !{!43, !13, i64 3596}
!122 = !{!73, !8, i64 96}
!123 = !{!42, !10, i64 18192}
!124 = !{!73, !10, i64 24}
!125 = !{!8, !8, i64 0}
!126 = !{!42, !7, i64 15352}
!127 = !{!77, !12, i64 20}
!128 = !{!77, !12, i64 100}
!129 = !{!77, !7, i64 64}
!130 = !{!77, !7, i64 56}
!131 = !{!132, !12, i64 4}
!132 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 0, !10, 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}
!133 = !{!77, !12, i64 16}
!134 = !{!73, !13, i64 3718}
!135 = !{!73, !10, i64 76}
!136 = !{!73, !10, i64 3720}
!137 = !{!42, !13, i64 16141}
!138 = !{!42, !10, i64 23996}
!139 = !{!43, !12, i64 3572}
!140 = !{!22, !12, i64 0}
!141 = !{!45, !12, i64 60}
!142 = !{!43, !12, i64 3576}
!143 = !{!6, !12, i64 252}
!144 = !{!43, !13, i64 113}
!145 = !{!73, !13, i64 3717}
!146 = !{!14, !14, i64 0}
!147 = !{!43, !13, i64 3597}
!148 = !{!73, !10, i64 84}
!149 = !{!73, !10, i64 88}
!150 = !{!73, !10, i64 92}
!151 = !{!73, !13, i64 3716}
!152 = !{!43, !12, i64 240}
!153 = !{!43, !12, i64 244}
!154 = !{!43, !13, i64 3598}
!155 = !{!43, !13, i64 3599}
!156 = !{!43, !10, i64 14248}
!157 = distinct !{!157, !158}
!158 = !{!"llvm.loop.mustprogress"}
!159 = !{!42, !13, i64 16140}
!160 = !{!73, !10, i64 100}
!161 = !{!43, !10, i64 0}
!162 = !{!43, !10, i64 4}
!163 = !{!43, !13, i64 116}
!164 = !{!43, !7, i64 176}
!165 = distinct !{!165, !158}
!166 = !{!73, !10, i64 56}
!167 = !{!29, !7, i64 8}
!168 = !{!29, !10, i64 0}
!169 = !{!73, !10, i64 40}
!170 = !{!171, !10, i64 0}
!171 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !7, i64 8, !14, i64 16, !172, i64 20, !7, i64 24, !10, i64 32, !10, i64 36, !13, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!172 = !{!"_ZTS8ImGuiKey", !8, i64 0}
!173 = !{!171, !10, i64 4}
!174 = !{!171, !7, i64 8}
!175 = !{!171, !172, i64 20}
!176 = !{!171, !7, i64 24}
!177 = !{!171, !10, i64 32}
!178 = !{!171, !10, i64 36}
!179 = !{!171, !10, i64 44}
!180 = !{!171, !10, i64 48}
!181 = !{!171, !10, i64 52}
!182 = !{!171, !13, i64 40}
!183 = !{!22, !12, i64 4}
!184 = distinct !{!184, !158}
!185 = !{!11, !12, i64 0}
!186 = !{!11, !12, i64 4}
!187 = !{!35, !12, i64 12}
!188 = !{!35, !12, i64 4}
!189 = distinct !{!189, !158}
!190 = !{!6, !7, i64 656}
!191 = distinct !{!191, !158}
!192 = !{!43, !12, i64 16}
!193 = !{!73, !12, i64 3712}
!194 = !{!42, !13, i64 123}
!195 = !{!42, !13, i64 23376}
!196 = !{!42, !12, i64 23388}
!197 = !{!42, !10, i64 18208}
!198 = !{!53, !10, i64 8}
!199 = !{!42, !10, i64 18236}
!200 = !{!42, !13, i64 23560}
!201 = !{!22, !12, i64 8}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass