; LLVM IR from jasonlmfong/Model-Modifier :: Model-Modifier/src/external/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, 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, float, %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, float, float, 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, 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 [112 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.57 = 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.58 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.70 = 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 i8, align 1
  %67 = alloca ptr, align 8
  %68 = alloca i8, align 1
  %69 = alloca i8, align 1
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i32, align 4
  %73 = alloca float, align 4
  %74 = alloca float, align 4
  %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 i32, align 4
  %88 = alloca i8, align 1
  %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 i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca ptr, align 8
  %104 = alloca ptr, align 8
  %105 = alloca i32, align 4
  %106 = alloca ptr, align 8
  %107 = alloca i32, align 4
  %108 = alloca ptr, align 8
  %109 = alloca i32, align 4
  %110 = alloca ptr, align 8
  %111 = alloca i32, align 4
  %112 = alloca i16, align 2
  %113 = alloca %struct.ImVector.5, align 8
  %114 = alloca ptr, align 8
  %115 = alloca i32, align 4
  %116 = alloca i8, align 1
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %120 = alloca ptr, align 8
  %121 = alloca ptr, align 8
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca i8, align 1
  %126 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %127 = alloca %struct.ImVec2, align 4
  %128 = alloca %struct.ImVec2, align 4
  %129 = alloca %struct.ImVec4, align 4
  %130 = alloca %struct.ImVec2, align 4
  %131 = alloca %struct.ImVec2, align 4
  %132 = alloca i32, align 4
  %133 = alloca ptr, align 8
  %134 = alloca ptr, align 8
  %135 = alloca ptr, align 8
  %136 = alloca %struct.ImVec2, align 4
  %137 = alloca %struct.ImVec2, align 4
  %138 = alloca [2 x ptr], align 16
  %139 = alloca [2 x i32], align 4
  %140 = alloca i32, align 4
  %141 = alloca i32, align 4
  %142 = alloca ptr, align 8
  %143 = alloca %struct.ImVec2, align 4
  %144 = alloca %struct.ImVec2, align 4
  %145 = alloca %struct.ImVec2, align 4
  %146 = alloca float, align 4
  %147 = alloca float, align 4
  %148 = alloca float, align 4
  %149 = alloca %struct.ImVec2, align 4
  %150 = alloca ptr, align 8
  %151 = alloca ptr, align 8
  %152 = alloca i32, align 4
  %153 = alloca float, align 4
  %154 = alloca float, align 4
  %155 = alloca %struct.ImVec2, align 4
  %156 = alloca %struct.ImVec2, align 4
  %157 = alloca ptr, align 8
  %158 = alloca %struct.ImVec2, align 4
  %159 = alloca %struct.ImRect, align 4
  %160 = alloca %struct.ImVec2, align 4
  %161 = alloca %struct.ImVec2, align 4
  %162 = alloca %struct.ImVec2, align 4
  %163 = alloca %struct.ImVec2, align 4
  %164 = alloca %struct.ImRect, align 4
  %165 = alloca %struct.ImRect, align 4
  %166 = alloca i32, align 4
  %167 = alloca %struct.ImVec2, align 4
  %168 = alloca i8, align 1
  %169 = alloca %struct.ImVec2, align 4
  %170 = alloca %struct.ImVec2, align 4
  %171 = alloca %struct.ImVec2, align 4
  %172 = alloca %struct.ImRect, align 4
  %173 = alloca %struct.ImRect, align 4
  %174 = alloca %struct.ImVec2, align 4
  %175 = alloca %struct.ImVec2, align 4
  %176 = alloca %struct.ImVec2, align 4
  %177 = alloca i32, align 4
  %178 = alloca %struct.ImVec2, align 4
  %179 = alloca i32, align 4
  %180 = 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
  %181 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %181, ptr %18, align 8, !tbaa !5
  %182 = load ptr, ptr %18, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.ImGuiWindow, ptr %182, i32 0, i32 35
  %184 = load i8, ptr %183, align 1, !tbaa !11, !range !40, !noundef !41
  %185 = trunc i8 %184 to i1
  br i1 %185, label %186, label %187

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

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

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

193:                                              ; preds = %190, %187
  %194 = phi i1 [ false, %187 ], [ %192, %190 ]
  br i1 %194, label %195, label %196

195:                                              ; preds = %193
  br label %198

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

197:                                              ; No predecessors!
  br label %198

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

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

206:                                              ; preds = %202, %198
  %207 = phi i1 [ false, %198 ], [ %205, %202 ]
  %208 = xor i1 %207, true
  br i1 %208, label %209, label %210

209:                                              ; preds = %206
  br label %212

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

211:                                              ; No predecessors!
  br label %212

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

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

220:                                              ; preds = %216, %212
  %221 = phi i1 [ false, %212 ], [ %219, %216 ]
  %222 = xor i1 %221, true
  br i1 %222, label %223, label %224

223:                                              ; preds = %220
  br label %226

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

225:                                              ; No predecessors!
  br label %226

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

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

257:                                              ; preds = %254
  br label %260

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

259:                                              ; No predecessors!
  br label %260

260:                                              ; preds = %259, %257
  br label %261

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

264:                                              ; preds = %261
  call void @_ZN5ImGui10BeginGroupEv()
  br label %265

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

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

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

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

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

305:                                              ; preds = %283
  br label %306

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

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

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

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

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

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

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

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

394:                                              ; preds = %392
  br label %413

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

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

406:                                              ; preds = %403
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3501

407:                                              ; preds = %403
  br label %408

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

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

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

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

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

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

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

451:                                              ; preds = %446, %440
  %452 = phi i1 [ false, %440 ], [ %450, %446 ]
  br label %453

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

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

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

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

471:                                              ; preds = %466
  %472 = load ptr, ptr %47, align 8, !tbaa !5
  %473 = icmp ne ptr %472, null
  br i1 %473, label %474, label %486

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

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

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

491:                                              ; preds = %486
  %492 = load ptr, ptr %47, align 8, !tbaa !5
  %493 = icmp ne ptr %492, null
  br i1 %493, label %494, label %501

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

501:                                              ; preds = %494, %491, %486
  %502 = phi i1 [ false, %491 ], [ false, %486 ], [ %500, %494 ]
  %503 = zext i1 %502 to i8
  store i8 %503, 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
  %504 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %505 = trunc i8 %504 to i1
  br i1 %505, label %506, label %511

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

511:                                              ; preds = %501
  br label %512

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

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

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

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

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

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

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

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

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

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

560:                                              ; preds = %554, %549
  %561 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %562 = trunc i8 %561 to i1
  br i1 %562, label %563, label %703

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

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

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

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

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

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

617:                                              ; preds = %607, %596
  store i8 0, ptr %60, align 1, !tbaa !42
  br label %618

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

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

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

660:                                              ; preds = %651, %649
  %661 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %662 = trunc i8 %661 to i1
  br i1 %662, label %694, label %663

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

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

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

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

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

680:                                              ; preds = %674, %671
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %681

681:                                              ; preds = %680, %674, %668
  %682 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %683 = trunc i8 %682 to i1
  br i1 %683, label %692, label %684

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

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

692:                                              ; preds = %687, %681
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %693

693:                                              ; preds = %692, %687, %684
  br label %694

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

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

702:                                              ; preds = %698, %694
  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 %703

703:                                              ; preds = %702, %560
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #14
  %704 = load ptr, ptr %21, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiIO, ptr %704, i32 0, i32 21
  %706 = load i8, ptr %705, align 1, !tbaa !126, !range !40, !noundef !41
  %707 = trunc i8 %706 to i1
  %708 = zext i1 %707 to i8
  store i8 %708, ptr %62, align 1, !tbaa !42
  %709 = load ptr, ptr %20, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ImGuiContext, ptr %709, i32 0, i32 44
  %711 = load i32, ptr %710, align 8, !tbaa !108
  %712 = load i32, ptr %29, align 4, !tbaa !9
  %713 = icmp ne i32 %711, %712
  br i1 %713, label %714, label %737

714:                                              ; preds = %703
  %715 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %716 = trunc i8 %715 to i1
  br i1 %716, label %717, label %737

717:                                              ; preds = %714
  %718 = load ptr, ptr %47, align 8, !tbaa !5
  %719 = icmp ne ptr %718, null
  br i1 %719, label %720, label %726

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

726:                                              ; preds = %720, %717
  %727 = phi i1 [ false, %717 ], [ %725, %720 ]
  br i1 %727, label %728, label %729

728:                                              ; preds = %726
  br label %731

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

730:                                              ; No predecessors!
  br label %731

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

737:                                              ; preds = %731, %714, %703
  %738 = load ptr, ptr %20, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.ImGuiContext, ptr %738, i32 0, i32 44
  %740 = load i32, ptr %739, align 8, !tbaa !108
  %741 = load i32, ptr %29, align 4, !tbaa !9
  %742 = icmp eq i32 %740, %741
  br i1 %742, label %743, label %784

743:                                              ; preds = %737
  %744 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %745 = trunc i8 %744 to i1
  br i1 %745, label %746, label %748

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

748:                                              ; preds = %746, %743
  %749 = load ptr, ptr %20, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.ImGuiContext, ptr %749, i32 0, i32 65
  %751 = load i32, ptr %750, align 8, !tbaa !127
  %752 = or i32 %751, 3
  store i32 %752, ptr %750, align 8, !tbaa !127
  %753 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %754 = trunc i8 %753 to i1
  br i1 %754, label %759, label %755

755:                                              ; preds = %748
  %756 = load i32, ptr %15, align 4, !tbaa !9
  %757 = and i32 %756, 128
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %764

759:                                              ; preds = %755, %748
  %760 = load ptr, ptr %20, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.ImGuiContext, ptr %760, i32 0, i32 65
  %762 = load i32, ptr %761, align 8, !tbaa !127
  %763 = or i32 %762, 12
  store i32 %763, ptr %761, align 8, !tbaa !127
  br label %764

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

769:                                              ; preds = %764
  %770 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 517, i32 noundef %770, i32 noundef 0)
  %771 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 518, i32 noundef %771, i32 noundef 0)
  br label %772

772:                                              ; preds = %769, %764
  %773 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %774 = trunc i8 %773 to i1
  br i1 %774, label %775, label %777

775:                                              ; preds = %772
  %776 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 16384, i32 noundef %776, i32 noundef 0)
  br label %777

777:                                              ; preds = %775, %772
  %778 = load i32, ptr %15, align 4, !tbaa !9
  %779 = and i32 %778, 1088
  %780 = icmp ne i32 %779, 0
  br i1 %780, label %781, label %783

781:                                              ; preds = %777
  %782 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 512, i32 noundef %782, i32 noundef 0)
  br label %783

783:                                              ; preds = %781, %777
  br label %784

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

790:                                              ; preds = %784
  %791 = load ptr, ptr %47, align 8, !tbaa !5
  %792 = icmp eq ptr %791, null
  br i1 %792, label %793, label %794

793:                                              ; preds = %790
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %794

794:                                              ; preds = %793, %790, %784
  %795 = load ptr, ptr %20, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.ImGuiContext, ptr %795, i32 0, i32 44
  %797 = load i32, ptr %796, align 8, !tbaa !108
  %798 = load i32, ptr %29, align 4, !tbaa !9
  %799 = icmp eq i32 %797, %798
  br i1 %799, label %800, label %813

800:                                              ; preds = %794
  %801 = load ptr, ptr %21, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.ImGuiIO, ptr %801, i32 0, i32 70
  %803 = getelementptr inbounds [5 x i8], ptr %802, i64 0, i64 0
  %804 = load i8, ptr %803, align 8, !tbaa !42, !range !40, !noundef !41
  %805 = trunc i8 %804 to i1
  br i1 %805, label %806, label %813

806:                                              ; preds = %800
  %807 = load i8, ptr %58, align 1, !tbaa !42, !range !40, !noundef !41
  %808 = trunc i8 %807 to i1
  br i1 %808, label %813, label %809

809:                                              ; preds = %806
  %810 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %811 = trunc i8 %810 to i1
  br i1 %811, label %813, label %812

812:                                              ; preds = %809
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %813

813:                                              ; preds = %812, %809, %806, %800, %794
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %814 = load ptr, ptr %20, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.ImGuiContext, ptr %814, i32 0, i32 44
  %816 = load i32, ptr %815, align 8, !tbaa !108
  %817 = load i32, ptr %29, align 4, !tbaa !9
  %818 = icmp eq i32 %816, %817
  br i1 %818, label %827, label %819

819:                                              ; preds = %813
  %820 = load ptr, ptr %47, align 8, !tbaa !5
  %821 = icmp ne ptr %820, null
  br i1 %821, label %822, label %825

822:                                              ; preds = %819
  %823 = load i8, ptr %52, align 1, !tbaa !42, !range !40, !noundef !41
  %824 = trunc i8 %823 to i1
  br label %825

825:                                              ; preds = %822, %819
  %826 = phi i1 [ false, %819 ], [ %824, %822 ]
  br label %827

827:                                              ; preds = %825, %813
  %828 = phi i1 [ true, %813 ], [ %826, %825 ]
  %829 = zext i1 %828 to i8
  store i8 %829, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #14
  %830 = load ptr, ptr %47, align 8, !tbaa !5
  %831 = icmp ne ptr %830, null
  br i1 %831, label %832, label %841

832:                                              ; preds = %827
  %833 = load ptr, ptr %47, align 8, !tbaa !5
  %834 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %833)
  br i1 %834, label %838, label %835

835:                                              ; preds = %832
  %836 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %837 = trunc i8 %836 to i1
  br i1 %837, label %838, label %841

838:                                              ; preds = %835, %832
  %839 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %840 = trunc i8 %839 to i1
  br label %841

841:                                              ; preds = %838, %835, %827
  %842 = phi i1 [ false, %835 ], [ false, %827 ], [ %840, %838 ]
  %843 = zext i1 %842 to i8
  store i8 %843, 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
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #14
  store i8 0, ptr %66, align 1, !tbaa !42
  %844 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %845 = trunc i8 %844 to i1
  br i1 %845, label %846, label %890

846:                                              ; preds = %841
  %847 = load ptr, ptr %47, align 8, !tbaa !5
  %848 = icmp ne ptr %847, null
  br i1 %848, label %849, label %890

849:                                              ; preds = %846
  %850 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %851 = trunc i8 %850 to i1
  br i1 %851, label %855, label %852

852:                                              ; preds = %849
  %853 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %854 = trunc i8 %853 to i1
  br i1 %854, label %855, label %890

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

890:                                              ; preds = %855, %852, %846, %841
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #14
  %891 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %892 = trunc i8 %891 to i1
  br i1 %892, label %902, label %893

893:                                              ; preds = %890
  %894 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %895 = trunc i8 %894 to i1
  br i1 %895, label %902, label %896

896:                                              ; preds = %893
  %897 = load ptr, ptr %20, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.ImGuiContext, ptr %897, i32 0, i32 44
  %899 = load i32, ptr %898, align 8, !tbaa !108
  %900 = load i32, ptr %29, align 4, !tbaa !9
  %901 = icmp eq i32 %899, %900
  br i1 %901, label %902, label %913

902:                                              ; preds = %896, %893, %890
  %903 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %904 = trunc i8 %903 to i1
  br i1 %904, label %913, label %905

905:                                              ; preds = %902
  %906 = load ptr, ptr %47, align 8, !tbaa !5
  %907 = icmp ne ptr %906, null
  br i1 %907, label %908, label %913

908:                                              ; preds = %905
  %909 = load ptr, ptr %47, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %909, i32 0, i32 8
  %911 = load i8, ptr %910, align 8, !tbaa !118, !range !40, !noundef !41
  %912 = trunc i8 %911 to i1
  br label %913

913:                                              ; preds = %908, %905, %902, %896
  %914 = phi i1 [ false, %905 ], [ false, %902 ], [ false, %896 ], [ %912, %908 ]
  %915 = zext i1 %914 to i8
  store i8 %915, ptr %68, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #14
  %916 = load ptr, ptr %11, align 8, !tbaa !5
  %917 = icmp ne ptr %916, null
  br i1 %917, label %918, label %934

918:                                              ; preds = %913
  %919 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %920 = trunc i8 %919 to i1
  br i1 %920, label %921, label %926

921:                                              ; preds = %918
  %922 = load ptr, ptr %47, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %922, i32 0, i32 6
  %924 = getelementptr inbounds %struct.ImVector.29, ptr %923, i32 0, i32 2
  %925 = load ptr, ptr %924, align 8, !tbaa !119
  br label %928

926:                                              ; preds = %918
  %927 = load ptr, ptr %12, align 8, !tbaa !5
  br label %928

928:                                              ; preds = %926, %921
  %929 = phi ptr [ %925, %921 ], [ %927, %926 ]
  %930 = getelementptr inbounds i8, ptr %929, i64 0
  %931 = load i8, ptr %930, align 1, !tbaa !129
  %932 = sext i8 %931 to i32
  %933 = icmp eq i32 %932, 0
  br label %934

934:                                              ; preds = %928, %913
  %935 = phi i1 [ false, %913 ], [ %933, %928 ]
  %936 = zext i1 %935 to i8
  store i8 %936, ptr %69, align 1, !tbaa !42
  %937 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %938 = trunc i8 %937 to i1
  br i1 %938, label %939, label %1010

939:                                              ; preds = %934
  %940 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %941 = trunc i8 %940 to i1
  br i1 %941, label %1010, label %942

942:                                              ; preds = %939
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #14
  %943 = load ptr, ptr %20, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.ImGuiContext, ptr %943, i32 0, i32 6
  %945 = load ptr, ptr %944, align 8, !tbaa !130
  %946 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118) %945, i16 noundef zeroext 42)
  store ptr %946, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #14
  %947 = load ptr, ptr %20, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ImGuiContext, ptr %947, i32 0, i32 174
  store ptr %948, ptr %71, align 8, !tbaa !5
  %949 = load ptr, ptr %20, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.ImGuiContext, ptr %949, i32 0, i32 6
  %951 = load ptr, ptr %950, align 8, !tbaa !130
  %952 = getelementptr inbounds %struct.ImFont, ptr %951, i32 0, i32 2
  %953 = load float, ptr %952, align 4, !tbaa !131
  %954 = load ptr, ptr %71, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImFont, ptr %954, i32 0, i32 2
  store float %953, ptr %955, align 4, !tbaa !131
  %956 = load ptr, ptr %20, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.ImGuiContext, ptr %956, i32 0, i32 6
  %958 = load ptr, ptr %957, align 8, !tbaa !130
  %959 = getelementptr inbounds %struct.ImFont, ptr %958, i32 0, i32 16
  %960 = load float, ptr %959, align 4, !tbaa !132
  %961 = load ptr, ptr %71, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.ImFont, ptr %961, i32 0, i32 16
  store float %960, ptr %962, align 4, !tbaa !132
  %963 = load ptr, ptr %20, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.ImGuiContext, ptr %963, i32 0, i32 6
  %965 = load ptr, ptr %964, align 8, !tbaa !130
  %966 = getelementptr inbounds %struct.ImFont, ptr %965, i32 0, i32 17
  %967 = load float, ptr %966, align 8, !tbaa !133
  %968 = load ptr, ptr %71, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImFont, ptr %968, i32 0, i32 17
  store float %967, ptr %969, align 8, !tbaa !133
  %970 = load ptr, ptr %20, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.ImGuiContext, ptr %970, i32 0, i32 6
  %972 = load ptr, ptr %971, align 8, !tbaa !130
  %973 = getelementptr inbounds %struct.ImFont, ptr %972, i32 0, i32 18
  %974 = load float, ptr %973, align 4, !tbaa !134
  %975 = load ptr, ptr %71, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.ImFont, ptr %975, i32 0, i32 18
  store float %974, ptr %976, align 4, !tbaa !134
  %977 = load ptr, ptr %20, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiContext, ptr %977, i32 0, i32 6
  %979 = load ptr, ptr %978, align 8, !tbaa !130
  %980 = getelementptr inbounds %struct.ImFont, ptr %979, i32 0, i32 6
  %981 = load ptr, ptr %980, align 8, !tbaa !135
  %982 = load ptr, ptr %71, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.ImFont, ptr %982, i32 0, i32 6
  store ptr %981, ptr %983, align 8, !tbaa !135
  %984 = load ptr, ptr %70, align 8, !tbaa !5
  %985 = load ptr, ptr %71, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.ImFont, ptr %985, i32 0, i32 5
  store ptr %984, ptr %986, align 8, !tbaa !136
  %987 = load ptr, ptr %70, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.ImFontGlyph, ptr %987, i32 0, i32 1
  %989 = load float, ptr %988, align 4, !tbaa !137
  %990 = load ptr, ptr %71, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.ImFont, ptr %990, i32 0, i32 1
  store float %989, ptr %991, align 8, !tbaa !139
  %992 = load ptr, ptr %71, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImFont, ptr %992, i32 0, i32 4
  %994 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %993)
  br i1 %994, label %995, label %1003

995:                                              ; preds = %942
  %996 = load ptr, ptr %71, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.ImFont, ptr %996, i32 0, i32 0
  %998 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %997)
  br i1 %998, label %999, label %1003

999:                                              ; preds = %995
  %1000 = load ptr, ptr %71, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.ImFont, ptr %1000, i32 0, i32 3
  %1002 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1001)
  br label %1003

1003:                                             ; preds = %999, %995, %942
  %1004 = phi i1 [ false, %995 ], [ false, %942 ], [ %1002, %999 ]
  br i1 %1004, label %1005, label %1006

1005:                                             ; preds = %1003
  br label %1008

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

1007:                                             ; No predecessors!
  br label %1008

1008:                                             ; preds = %1007, %1005
  %1009 = load ptr, ptr %71, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %1009)
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #14
  br label %1010

1010:                                             ; preds = %1008, %939, %934
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #14
  store i32 0, ptr %72, align 4, !tbaa !9
  %1011 = load ptr, ptr %20, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiContext, ptr %1011, i32 0, i32 44
  %1013 = load i32, ptr %1012, align 8, !tbaa !108
  %1014 = load i32, ptr %29, align 4, !tbaa !9
  %1015 = icmp eq i32 %1013, %1014
  br i1 %1015, label %1016, label %1406

1016:                                             ; preds = %1010
  %1017 = load ptr, ptr %47, align 8, !tbaa !5
  %1018 = icmp ne ptr %1017, null
  br i1 %1018, label %1019, label %1020

1019:                                             ; preds = %1016
  br label %1022

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

1021:                                             ; No predecessors!
  br label %1022

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

1064:                                             ; preds = %1022
  %1065 = load ptr, ptr %21, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.ImGuiIO, ptr %1065, i32 0, i32 56
  %1067 = getelementptr inbounds %struct.ImVec2, ptr %1066, i32 0, i32 1
  %1068 = load float, ptr %1067, align 4, !tbaa !148
  %1069 = load ptr, ptr %38, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.ImGuiWindow, ptr %1069, i32 0, i32 61
  %1071 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1070, i32 0, i32 0
  %1072 = getelementptr inbounds %struct.ImVec2, ptr %1071, i32 0, i32 1
  %1073 = load float, ptr %1072, align 4, !tbaa !149
  %1074 = fsub float %1068, %1073
  br label %1080

1075:                                             ; preds = %1022
  %1076 = load ptr, ptr %20, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiContext, ptr %1076, i32 0, i32 7
  %1078 = load float, ptr %1077, align 8, !tbaa !45
  %1079 = fmul float %1078, 5.000000e-01
  br label %1080

1080:                                             ; preds = %1075, %1064
  %1081 = phi float [ %1074, %1064 ], [ %1079, %1075 ]
  store float %1081, ptr %74, align 4, !tbaa !44
  %1082 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %1083 = trunc i8 %1082 to i1
  br i1 %1083, label %1084, label %1088

1084:                                             ; preds = %1080
  %1085 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1085)
  %1086 = load ptr, ptr %47, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1086, i32 0, i32 15
  store i8 1, ptr %1087, align 1, !tbaa !150
  br label %1290

1088:                                             ; preds = %1080
  %1089 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %1090 = trunc i8 %1089 to i1
  br i1 %1090, label %1091, label %1221

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

1098:                                             ; preds = %1091
  %1099 = load ptr, ptr %21, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.ImGuiIO, ptr %1099, i32 0, i32 61
  %1101 = load i8, ptr %1100, align 1, !tbaa !152, !range !40, !noundef !41
  %1102 = trunc i8 %1101 to i1
  br i1 %1102, label %1221, label %1103

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

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

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

1134:                                             ; preds = %1124, %1118
  %1135 = phi i1 [ true, %1118 ], [ %1133, %1124 ]
  %1136 = zext i1 %1135 to i8
  store i8 %1136, ptr %76, align 1, !tbaa !42
  %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 1
  %1140 = load i32, ptr %1139, align 4, !tbaa !154
  %1141 = load ptr, ptr %47, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1141, i32 0, i32 12
  %1143 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1142, i32 0, i32 2
  %1144 = load i32, ptr %1143, align 4, !tbaa !155
  %1145 = icmp ne i32 %1140, %1144
  br i1 %1145, label %1149, label %1146

1146:                                             ; preds = %1134
  %1147 = load i8, ptr %76, align 1, !tbaa !42, !range !40, !noundef !41
  %1148 = trunc i8 %1147 to i1
  br i1 %1148, label %1151, label %1149

1149:                                             ; preds = %1146, %1134
  %1150 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1150, i32 noundef 2097164)
  br label %1151

1151:                                             ; preds = %1149, %1146
  %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 1
  %1155 = load i32, ptr %1154, align 4, !tbaa !154
  %1156 = load ptr, ptr %47, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1156, i32 0, i32 12
  %1158 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1157, i32 0, i32 2
  %1159 = load i32, ptr %1158, align 4, !tbaa !155
  %1160 = icmp ne i32 %1155, %1159
  br i1 %1160, label %1164, label %1161

1161:                                             ; preds = %1151
  %1162 = load ptr, ptr %47, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1162, i32 0, i32 12
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef %1163)
  br label %1164

1164:                                             ; preds = %1161, %1151
  %1165 = load ptr, ptr %47, align 8, !tbaa !5
  %1166 = load ptr, ptr %47, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1166, i32 0, i32 12
  %1168 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1167, i32 0, i32 0
  %1169 = load i32, ptr %1168, align 4, !tbaa !153
  %1170 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef %1165, i32 noundef %1169)
  %1171 = load ptr, ptr %47, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1171, i32 0, i32 12
  %1173 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1172, i32 0, i32 0
  store i32 %1170, ptr %1173, 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 0
  %1177 = load i32, ptr %1176, align 4, !tbaa !153
  %1178 = load ptr, ptr %47, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1178, i32 0, i32 12
  %1180 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1179, i32 0, i32 2
  store i32 %1177, ptr %1180, align 4, !tbaa !155
  %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
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1181, ptr noundef %1183)
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  br label %1219

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

1199:                                             ; preds = %1184
  %1200 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1201 = trunc i8 %1200 to i1
  br i1 %1201, label %1202, label %1216

1202:                                             ; preds = %1199
  %1203 = load ptr, ptr %47, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1203, i32 0, i32 12
  %1205 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1204, i32 0, i32 1
  %1206 = load ptr, ptr %47, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1206, i32 0, i32 12
  %1208 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1207, i32 0, i32 2
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %1205, ptr noundef nonnull align 4 dereferenceable(4) %1208)
  %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 2
  %1212 = load i32, ptr %1211, align 4, !tbaa !155
  %1213 = load ptr, ptr %47, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1213, i32 0, i32 12
  %1215 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1214, i32 0, i32 0
  store i32 %1212, ptr %1215, align 4, !tbaa !153
  br label %1216

1216:                                             ; preds = %1202, %1199, %1184
  %1217 = load ptr, ptr %47, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1217, i32 0, i32 14
  store i8 0, ptr %1218, align 4, !tbaa !156
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #14
  br label %1219

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

1221:                                             ; preds = %1098, %1091, %1088
  %1222 = load ptr, ptr %21, align 8, !tbaa !5
  %1223 = getelementptr inbounds %struct.ImGuiIO, ptr %1222, i32 0, i32 70
  %1224 = getelementptr inbounds [5 x i8], ptr %1223, i64 0, i64 0
  %1225 = load i8, ptr %1224, align 8, !tbaa !42, !range !40, !noundef !41
  %1226 = trunc i8 %1225 to i1
  br i1 %1226, label %1227, label %1255

1227:                                             ; preds = %1221
  %1228 = load ptr, ptr %47, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1228, i32 0, i32 15
  %1230 = load i8, ptr %1229, align 1, !tbaa !150, !range !40, !noundef !41
  %1231 = trunc i8 %1230 to i1
  br i1 %1231, label %1255, label %1232

1232:                                             ; preds = %1227
  %1233 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %1234 = trunc i8 %1233 to i1
  br i1 %1234, label %1235, label %1254

1235:                                             ; preds = %1232
  %1236 = load ptr, ptr %21, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.ImGuiIO, ptr %1236, i32 0, i32 61
  %1238 = load i8, ptr %1237, align 1, !tbaa !152, !range !40, !noundef !41
  %1239 = trunc i8 %1238 to i1
  br i1 %1239, label %1240, label %1246

1240:                                             ; preds = %1235
  %1241 = load ptr, ptr %47, align 8, !tbaa !5
  %1242 = load ptr, ptr %47, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1242, i32 0, i32 12
  %1244 = load float, ptr %73, align 4, !tbaa !44
  %1245 = load float, ptr %74, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1241, ptr noundef %1243, float noundef %1244, float noundef %1245)
  br label %1252

1246:                                             ; preds = %1235
  %1247 = load ptr, ptr %47, align 8, !tbaa !5
  %1248 = load ptr, ptr %47, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1248, i32 0, i32 12
  %1250 = load float, ptr %73, align 4, !tbaa !44
  %1251 = load float, ptr %74, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1247, ptr noundef %1249, float noundef %1250, float noundef %1251)
  br label %1252

1252:                                             ; preds = %1246, %1240
  %1253 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %1253)
  br label %1254

1254:                                             ; preds = %1252, %1232
  br label %1288

1255:                                             ; preds = %1227, %1221
  %1256 = load ptr, ptr %21, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.ImGuiIO, ptr %1256, i32 0, i32 57
  %1258 = getelementptr inbounds [5 x i8], ptr %1257, i64 0, i64 0
  %1259 = load i8, ptr %1258, align 4, !tbaa !42, !range !40, !noundef !41
  %1260 = trunc i8 %1259 to i1
  br i1 %1260, label %1261, label %1287

1261:                                             ; preds = %1255
  %1262 = load ptr, ptr %47, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1262, i32 0, i32 15
  %1264 = load i8, ptr %1263, align 1, !tbaa !150, !range !40, !noundef !41
  %1265 = trunc i8 %1264 to i1
  br i1 %1265, label %1287, label %1266

1266:                                             ; preds = %1261
  %1267 = load ptr, ptr %21, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.ImGuiIO, ptr %1267, i32 0, i32 52
  %1269 = getelementptr inbounds %struct.ImVec2, ptr %1268, i32 0, i32 0
  %1270 = load float, ptr %1269, align 8, !tbaa !157
  %1271 = fcmp une float %1270, 0.000000e+00
  br i1 %1271, label %1278, label %1272

1272:                                             ; preds = %1266
  %1273 = load ptr, ptr %21, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.ImGuiIO, ptr %1273, i32 0, i32 52
  %1275 = getelementptr inbounds %struct.ImVec2, ptr %1274, i32 0, i32 1
  %1276 = load float, ptr %1275, align 4, !tbaa !158
  %1277 = fcmp une float %1276, 0.000000e+00
  br i1 %1277, label %1278, label %1287

1278:                                             ; preds = %1272, %1266
  %1279 = load ptr, ptr %47, align 8, !tbaa !5
  %1280 = load ptr, ptr %47, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1280, i32 0, i32 12
  %1282 = load float, ptr %73, align 4, !tbaa !44
  %1283 = load float, ptr %74, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1279, ptr noundef %1281, float noundef %1282, float noundef %1283)
  %1284 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %1284)
  %1285 = load ptr, ptr %47, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1285, i32 0, i32 14
  store i8 1, ptr %1286, align 4, !tbaa !156
  br label %1287

1287:                                             ; preds = %1278, %1272, %1261, %1255
  br label %1288

1288:                                             ; preds = %1287, %1254
  br label %1289

1289:                                             ; preds = %1288, %1219
  br label %1290

1290:                                             ; preds = %1289, %1084
  %1291 = load ptr, ptr %47, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1291, i32 0, i32 15
  %1293 = load i8, ptr %1292, align 1, !tbaa !150, !range !40, !noundef !41
  %1294 = trunc i8 %1293 to i1
  br i1 %1294, label %1295, label %1304

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

1301:                                             ; preds = %1295
  %1302 = load ptr, ptr %47, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1302, i32 0, i32 15
  store i8 0, ptr %1303, align 1, !tbaa !150
  br label %1304

1304:                                             ; preds = %1301, %1295, %1290
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  %1305 = load ptr, ptr %21, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.ImGuiIO, ptr %1305, i32 0, i32 60
  %1307 = load i8, ptr %1306, align 4, !tbaa !124, !range !40, !noundef !41
  %1308 = trunc i8 %1307 to i1
  br i1 %1308, label %1309, label %1314

1309:                                             ; preds = %1304
  %1310 = load ptr, ptr %21, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.ImGuiIO, ptr %1310, i32 0, i32 62
  %1312 = load i8, ptr %1311, align 2, !tbaa !159, !range !40, !noundef !41
  %1313 = trunc i8 %1312 to i1
  br i1 %1313, label %1314, label %1324

1314:                                             ; preds = %1309, %1304
  %1315 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %1316 = trunc i8 %1315 to i1
  br i1 %1316, label %1317, label %1322

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

1322:                                             ; preds = %1317, %1314
  %1323 = phi i1 [ false, %1314 ], [ %1321, %1317 ]
  br label %1324

1324:                                             ; preds = %1322, %1309
  %1325 = phi i1 [ true, %1309 ], [ %1323, %1322 ]
  %1326 = zext i1 %1325 to i8
  store i8 %1326, ptr %78, align 1, !tbaa !42
  %1327 = load i32, ptr %15, align 4, !tbaa !9
  %1328 = and i32 %1327, 1024
  %1329 = icmp ne i32 %1328, 0
  br i1 %1329, label %1330, label %1352

1330:                                             ; preds = %1324
  %1331 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 512, i1 noundef zeroext true)
  br i1 %1331, label %1332, label %1352

1332:                                             ; preds = %1330
  %1333 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1334 = trunc i8 %1333 to i1
  br i1 %1334, label %1352, label %1335

1335:                                             ; preds = %1332
  %1336 = load ptr, ptr %21, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.ImGuiIO, ptr %1336, i32 0, i32 61
  %1338 = load i8, ptr %1337, align 1, !tbaa !152, !range !40, !noundef !41
  %1339 = trunc i8 %1338 to i1
  br i1 %1339, label %1352, label %1340

1340:                                             ; preds = %1335
  %1341 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1342 = trunc i8 %1341 to i1
  br i1 %1342, label %1352, label %1343

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

1348:                                             ; preds = %1343
  %1349 = load ptr, ptr %47, align 8, !tbaa !5
  %1350 = load i32, ptr %79, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1349, i32 noundef %1350)
  br label %1351

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

1352:                                             ; preds = %1351, %1340, %1335, %1332, %1330, %1324
  %1353 = load ptr, ptr %21, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.ImGuiIO, ptr %1353, i32 0, i32 86
  %1355 = getelementptr inbounds %struct.ImVector.5, ptr %1354, i32 0, i32 0
  %1356 = load i32, ptr %1355, align 8, !tbaa !161
  %1357 = icmp sgt i32 %1356, 0
  br i1 %1357, label %1358, label %1405

1358:                                             ; preds = %1352
  %1359 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1360 = trunc i8 %1359 to i1
  br i1 %1360, label %1402, label %1361

1361:                                             ; preds = %1358
  %1362 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1363 = trunc i8 %1362 to i1
  br i1 %1363, label %1402, label %1364

1364:                                             ; preds = %1361
  %1365 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %1366 = trunc i8 %1365 to i1
  br i1 %1366, label %1402, label %1367

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

1368:                                             ; preds = %1398, %1367
  %1369 = load i32, ptr %80, align 4, !tbaa !9
  %1370 = load ptr, ptr %21, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.ImGuiIO, ptr %1370, i32 0, i32 86
  %1372 = getelementptr inbounds %struct.ImVector.5, ptr %1371, i32 0, i32 0
  %1373 = load i32, ptr %1372, align 8, !tbaa !161
  %1374 = icmp slt i32 %1369, %1373
  br i1 %1374, label %1376, label %1375

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

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

1385:                                             ; preds = %1376
  store i32 4, ptr %19, align 4
  br label %1395

1386:                                             ; preds = %1376
  %1387 = load i32, ptr %15, align 4, !tbaa !9
  %1388 = load ptr, ptr %16, align 8, !tbaa !5
  %1389 = load ptr, ptr %17, align 8, !tbaa !5
  %1390 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %81, i32 noundef %1387, ptr noundef %1388, ptr noundef %1389, i32 noundef 2)
  br i1 %1390, label %1391, label %1394

1391:                                             ; preds = %1386
  %1392 = load ptr, ptr %47, align 8, !tbaa !5
  %1393 = load i32, ptr %81, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1392, i32 noundef %1393)
  br label %1394

1394:                                             ; preds = %1391, %1386
  store i32 0, ptr %19, align 4
  br label %1395

1395:                                             ; preds = %1394, %1385
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #14
  %1396 = load i32, ptr %19, align 4
  switch i32 %1396, label %3509 [
    i32 0, label %1397
    i32 4, label %1398
  ]

1397:                                             ; preds = %1395
  br label %1398

1398:                                             ; preds = %1397, %1395
  %1399 = load i32, ptr %80, align 4, !tbaa !9
  %1400 = add nsw i32 %1399, 1
  store i32 %1400, ptr %80, align 4, !tbaa !9
  br label %1368, !llvm.loop !162

1401:                                             ; preds = %1375
  br label %1402

1402:                                             ; preds = %1401, %1364, %1361, %1358
  %1403 = load ptr, ptr %21, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.ImGuiIO, ptr %1403, i32 0, i32 86
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1404, i32 noundef 0)
  br label %1405

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

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

1412:                                             ; preds = %1406
  %1413 = load ptr, ptr %20, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.ImGuiContext, ptr %1413, i32 0, i32 47
  %1415 = load i8, ptr %1414, align 4, !tbaa !164, !range !40, !noundef !41
  %1416 = trunc i8 %1415 to i1
  br i1 %1416, label %2120, label %1417

1417:                                             ; preds = %1412
  %1418 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %1419 = trunc i8 %1418 to i1
  br i1 %1419, label %2120, label %1420

1420:                                             ; preds = %1417
  %1421 = load ptr, ptr %47, align 8, !tbaa !5
  %1422 = icmp ne ptr %1421, null
  br i1 %1422, label %1423, label %1424

1423:                                             ; preds = %1420
  br label %1426

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

1425:                                             ; No predecessors!
  br label %1426

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

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

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

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

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

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

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

1483:                                             ; preds = %1477, %1472, %1467, %1462
  %1484 = phi i1 [ false, %1472 ], [ false, %1467 ], [ false, %1462 ], [ %1482, %1477 ]
  %1485 = zext i1 %1484 to i8
  store i8 %1485, ptr %86, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #14
  store i32 1, ptr %87, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1486 = load i32, ptr %29, align 4, !tbaa !9
  %1487 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2617, i32 noundef %1486, i32 noundef 1)
  br i1 %1487, label %1491, label %1488

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

1491:                                             ; preds = %1488, %1483
  %1492 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1493 = trunc i8 %1492 to i1
  br i1 %1493, label %1505, label %1494

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

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

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

1503:                                             ; preds = %1500, %1497
  %1504 = phi i1 [ true, %1497 ], [ %1502, %1500 ]
  br label %1505

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

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

1513:                                             ; preds = %1510, %1505
  %1514 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1515 = trunc i8 %1514 to i1
  br i1 %1515, label %1524, label %1516

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

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

1522:                                             ; preds = %1519, %1516
  %1523 = phi i1 [ true, %1516 ], [ %1521, %1519 ]
  br label %1524

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

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

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

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

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

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

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

1552:                                             ; preds = %1547
  %1553 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %1554 = trunc i8 %1553 to i1
  br i1 %1554, label %1555, label %1564

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

1558:                                             ; preds = %1555, %1547
  %1559 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1560 = trunc i8 %1559 to i1
  br i1 %1560, label %1564, label %1561

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

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

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

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

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

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

1592:                                             ; preds = %1587
  %1593 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 622, i1 noundef zeroext false)
  br i1 %1593, label %1596, label %1594

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

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

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

1603:                                             ; preds = %1598
  %1604 = load i8, ptr %94, align 1, !tbaa !42, !range !40, !noundef !41
  %1605 = trunc i8 %1604 to i1
  br i1 %1605, label %1606, label %1609

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

1609:                                             ; preds = %1606, %1603
  %1610 = phi i1 [ false, %1603 ], [ %1608, %1606 ]
  br label %1611

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

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

1619:                                             ; preds = %1615
  br label %1625

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

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

1629:                                             ; preds = %1611
  %1630 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %1630, label %1631, label %1645

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

1635:                                             ; preds = %1631
  br label %1641

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

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

1645:                                             ; preds = %1629
  %1646 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1646, label %1647, label %1675

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

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

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

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

1674:                                             ; preds = %1666, %1655
  br label %2103

1675:                                             ; preds = %1647, %1645
  %1676 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1676, label %1677, label %1706

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

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

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

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

1705:                                             ; preds = %1697, %1685
  br label %2102

1706:                                             ; preds = %1677, %1675
  %1707 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  br i1 %1707, label %1708, label %1723

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

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

1723:                                             ; preds = %1708, %1706
  %1724 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  br i1 %1724, label %1725, label %1739

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

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

1739:                                             ; preds = %1725, %1723
  %1740 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %1740, label %1741, label %1755

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

1747:                                             ; preds = %1741
  %1748 = load i32, ptr %84, align 4, !tbaa !9
  %1749 = or i32 2097158, %1748
  br label %1753

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

1753:                                             ; preds = %1750, %1747
  %1754 = phi i32 [ %1749, %1747 ], [ %1752, %1750 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1742, i32 noundef %1754)
  br label %2099

1755:                                             ; preds = %1739
  %1756 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %1756, label %1757, label %1771

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

1763:                                             ; preds = %1757
  %1764 = load i32, ptr %84, align 4, !tbaa !9
  %1765 = or i32 2097159, %1764
  br label %1769

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

1769:                                             ; preds = %1766, %1763
  %1770 = phi i32 [ %1765, %1763 ], [ %1768, %1766 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1758, i32 noundef %1770)
  br label %2098

1771:                                             ; preds = %1755
  %1772 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1772, label %1773, label %1792

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

1776:                                             ; preds = %1773
  %1777 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1778 = trunc i8 %1777 to i1
  br i1 %1778, label %1792, label %1779

1779:                                             ; preds = %1776
  %1780 = load ptr, ptr %47, align 8, !tbaa !5
  %1781 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1780)
  br i1 %1781, label %1788, label %1782

1782:                                             ; preds = %1779
  %1783 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1784 = trunc i8 %1783 to i1
  br i1 %1784, label %1785, label %1787

1785:                                             ; preds = %1782
  %1786 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1786, i32 noundef 6291469)
  br label %1787

1787:                                             ; preds = %1785, %1782
  br label %1788

1788:                                             ; preds = %1787, %1779
  %1789 = load ptr, ptr %47, align 8, !tbaa !5
  %1790 = load i32, ptr %84, align 4, !tbaa !9
  %1791 = or i32 2097160, %1790
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1789, i32 noundef %1791)
  br label %2097

1792:                                             ; preds = %1776, %1773, %1771
  %1793 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  br i1 %1793, label %1794, label %1831

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

1797:                                             ; preds = %1794
  %1798 = load ptr, ptr %47, align 8, !tbaa !5
  %1799 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1798)
  br i1 %1799, label %1827, label %1800

1800:                                             ; preds = %1797
  %1801 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1802 = trunc i8 %1801 to i1
  br i1 %1802, label %1803, label %1805

1803:                                             ; preds = %1800
  %1804 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1804, i32 noundef 6291468)
  br label %1826

1805:                                             ; preds = %1800
  %1806 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %1807 = trunc i8 %1806 to i1
  br i1 %1807, label %1808, label %1825

1808:                                             ; preds = %1805
  %1809 = load ptr, ptr %21, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.ImGuiIO, ptr %1809, i32 0, i32 63
  %1811 = load i8, ptr %1810, align 1, !tbaa !160, !range !40, !noundef !41
  %1812 = trunc i8 %1811 to i1
  br i1 %1812, label %1813, label %1825

1813:                                             ; preds = %1808
  %1814 = load ptr, ptr %21, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.ImGuiIO, ptr %1814, i32 0, i32 62
  %1816 = load i8, ptr %1815, align 2, !tbaa !159, !range !40, !noundef !41
  %1817 = trunc i8 %1816 to i1
  br i1 %1817, label %1825, label %1818

1818:                                             ; preds = %1813
  %1819 = load ptr, ptr %21, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.ImGuiIO, ptr %1819, i32 0, i32 60
  %1821 = load i8, ptr %1820, align 4, !tbaa !124, !range !40, !noundef !41
  %1822 = trunc i8 %1821 to i1
  br i1 %1822, label %1825, label %1823

1823:                                             ; preds = %1818
  %1824 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1824, i32 noundef 6291460)
  br label %1825

1825:                                             ; preds = %1823, %1818, %1813, %1808, %1805
  br label %1826

1826:                                             ; preds = %1825, %1803
  br label %1827

1827:                                             ; preds = %1826, %1797
  %1828 = load ptr, ptr %47, align 8, !tbaa !5
  %1829 = load i32, ptr %84, align 4, !tbaa !9
  %1830 = or i32 2097161, %1829
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1828, i32 noundef %1830)
  br label %2096

1831:                                             ; preds = %1794, %1792
  %1832 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %1833 = trunc i8 %1832 to i1
  br i1 %1833, label %1837, label %1834

1834:                                             ; preds = %1831
  %1835 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1836 = trunc i8 %1835 to i1
  br i1 %1836, label %1837, label %1889

1837:                                             ; preds = %1834, %1831
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #14
  %1838 = load i32, ptr %15, align 4, !tbaa !9
  %1839 = and i32 %1838, 2048
  %1840 = icmp ne i32 %1839, 0
  %1841 = zext i1 %1840 to i8
  store i8 %1841, ptr %98, align 1, !tbaa !42
  %1842 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1843 = trunc i8 %1842 to i1
  br i1 %1843, label %1844, label %1863

1844:                                             ; preds = %1837
  %1845 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1846 = trunc i8 %1845 to i1
  br i1 %1846, label %1863, label %1847

1847:                                             ; preds = %1844
  %1848 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1849 = trunc i8 %1848 to i1
  br i1 %1849, label %1850, label %1855

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 %1863

1855:                                             ; preds = %1850, %1847
  %1856 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1857 = trunc i8 %1856 to i1
  br i1 %1857, label %1875, label %1858

1858:                                             ; preds = %1855
  %1859 = load ptr, ptr %21, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.ImGuiIO, ptr %1859, i32 0, i32 60
  %1861 = load i8, ptr %1860, align 4, !tbaa !124, !range !40, !noundef !41
  %1862 = trunc i8 %1861 to i1
  br i1 %1862, label %1863, label %1875

1863:                                             ; preds = %1858, %1850, %1844, %1837
  store i8 1, ptr %66, align 1, !tbaa !42
  %1864 = load ptr, ptr %21, align 8, !tbaa !5
  %1865 = getelementptr inbounds %struct.ImGuiIO, ptr %1864, i32 0, i32 24
  %1866 = load i8, ptr %1865, align 4, !tbaa !168, !range !40, !noundef !41
  %1867 = trunc i8 %1866 to i1
  br i1 %1867, label %1868, label %1873

1868:                                             ; preds = %1863
  %1869 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1870 = trunc i8 %1869 to i1
  br i1 %1870, label %1873, label %1871

1871:                                             ; preds = %1868
  %1872 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1872)
  br label %1874

1873:                                             ; preds = %1868, %1863
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %1874

1874:                                             ; preds = %1873, %1871
  br label %1888

1875:                                             ; preds = %1858, %1855
  %1876 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1877 = trunc i8 %1876 to i1
  br i1 %1877, label %1887, label %1878

1878:                                             ; preds = %1875
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #14
  store i32 10, ptr %99, align 4, !tbaa !9
  %1879 = load i32, ptr %15, align 4, !tbaa !9
  %1880 = load ptr, ptr %16, align 8, !tbaa !5
  %1881 = load ptr, ptr %17, align 8, !tbaa !5
  %1882 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %99, i32 noundef %1879, ptr noundef %1880, ptr noundef %1881, i32 noundef 2)
  br i1 %1882, label %1883, label %1886

1883:                                             ; preds = %1878
  %1884 = load ptr, ptr %47, align 8, !tbaa !5
  %1885 = load i32, ptr %99, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1884, i32 noundef %1885)
  br label %1886

1886:                                             ; preds = %1883, %1878
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #14
  br label %1887

1887:                                             ; preds = %1886, %1875
  br label %1888

1888:                                             ; preds = %1887, %1874
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #14
  br label %2095

1889:                                             ; preds = %1834
  %1890 = load i8, ptr %97, align 1, !tbaa !42, !range !40, !noundef !41
  %1891 = trunc i8 %1890 to i1
  br i1 %1891, label %1892, label %1906

1892:                                             ; preds = %1889
  %1893 = load i32, ptr %15, align 4, !tbaa !9
  %1894 = and i32 %1893, 1048576
  %1895 = icmp ne i32 %1894, 0
  br i1 %1895, label %1896, label %1904

1896:                                             ; preds = %1892
  %1897 = load ptr, ptr %47, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1897, i32 0, i32 3
  %1899 = load i32, ptr %1898, align 8, !tbaa !117
  %1900 = icmp sgt i32 %1899, 0
  br i1 %1900, label %1901, label %1902

1901:                                             ; preds = %1896
  store i8 1, ptr %82, align 1, !tbaa !42
  br label %1903

1902:                                             ; preds = %1896
  store i8 0, ptr %64, align 1, !tbaa !42
  store i8 0, ptr %63, align 1, !tbaa !42
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %1903

1903:                                             ; preds = %1902, %1901
  br label %1905

1904:                                             ; preds = %1892
  store i8 1, ptr %82, align 1, !tbaa !42
  store i8 1, ptr %53, align 1, !tbaa !42
  store i8 0, ptr %64, align 1, !tbaa !42
  store i8 0, ptr %63, align 1, !tbaa !42
  br label %1905

1905:                                             ; preds = %1904, %1903
  br label %2094

1906:                                             ; preds = %1889
  %1907 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1908 = trunc i8 %1907 to i1
  br i1 %1908, label %1912, label %1909

1909:                                             ; preds = %1906
  %1910 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1911 = trunc i8 %1910 to i1
  br i1 %1911, label %1912, label %1919

1912:                                             ; preds = %1909, %1906
  %1913 = load ptr, ptr %47, align 8, !tbaa !5
  %1914 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1915 = trunc i8 %1914 to i1
  %1916 = zext i1 %1915 to i64
  %1917 = select i1 %1915, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1913, i32 noundef %1917)
  %1918 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1918)
  br label %2093

1919:                                             ; preds = %1909
  %1920 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1921 = trunc i8 %1920 to i1
  br i1 %1921, label %1922, label %1926

1922:                                             ; preds = %1919
  %1923 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1923)
  %1924 = load ptr, ptr %47, align 8, !tbaa !5
  %1925 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1924, i32 0, i32 14
  store i8 1, ptr %1925, align 4, !tbaa !156
  br label %2092

1926:                                             ; preds = %1919
  %1927 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1928 = trunc i8 %1927 to i1
  br i1 %1928, label %1932, label %1929

1929:                                             ; preds = %1926
  %1930 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1931 = trunc i8 %1930 to i1
  br i1 %1931, label %1932, label %2026

1932:                                             ; preds = %1929, %1926
  %1933 = load ptr, ptr %21, align 8, !tbaa !5
  %1934 = getelementptr inbounds %struct.ImGuiIO, ptr %1933, i32 0, i32 35
  %1935 = load ptr, ptr %1934, align 8, !tbaa !169
  %1936 = icmp ne ptr %1935, null
  br i1 %1936, label %1937, label %2010

1937:                                             ; preds = %1932
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #14
  %1938 = load ptr, ptr %47, align 8, !tbaa !5
  %1939 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1938)
  br i1 %1939, label %1940, label %1950

1940:                                             ; preds = %1937
  %1941 = load ptr, ptr %47, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1941, i32 0, i32 12
  %1943 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1942, i32 0, i32 1
  %1944 = load i32, ptr %1943, align 4, !tbaa !154
  %1945 = load ptr, ptr %47, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1945, i32 0, i32 12
  %1947 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1946, i32 0, i32 2
  %1948 = load i32, ptr %1947, align 4, !tbaa !155
  %1949 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1944, i32 noundef %1948)
  br label %1951

1950:                                             ; preds = %1937
  br label %1951

1951:                                             ; preds = %1950, %1940
  %1952 = phi i32 [ %1949, %1940 ], [ 0, %1950 ]
  store i32 %1952, ptr %100, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #14
  %1953 = load ptr, ptr %47, align 8, !tbaa !5
  %1954 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1953)
  br i1 %1954, label %1955, label %1965

1955:                                             ; preds = %1951
  %1956 = load ptr, ptr %47, align 8, !tbaa !5
  %1957 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1956, i32 0, i32 12
  %1958 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1957, i32 0, i32 1
  %1959 = load i32, ptr %1958, align 4, !tbaa !154
  %1960 = load ptr, ptr %47, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1960, i32 0, i32 12
  %1962 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1961, i32 0, i32 2
  %1963 = load i32, ptr %1962, align 4, !tbaa !155
  %1964 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1959, i32 noundef %1963)
  br label %1969

1965:                                             ; preds = %1951
  %1966 = load ptr, ptr %47, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1966, i32 0, i32 2
  %1968 = load i32, ptr %1967, align 4, !tbaa !121
  br label %1969

1969:                                             ; preds = %1965, %1955
  %1970 = phi i32 [ %1964, %1955 ], [ %1968, %1965 ]
  store i32 %1970, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #14
  %1971 = load ptr, ptr %47, align 8, !tbaa !5
  %1972 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1971, i32 0, i32 5
  %1973 = getelementptr inbounds %struct.ImVector.5, ptr %1972, i32 0, i32 2
  %1974 = load ptr, ptr %1973, align 8, !tbaa !120
  %1975 = load i32, ptr %100, align 4, !tbaa !9
  %1976 = sext i32 %1975 to i64
  %1977 = getelementptr inbounds i16, ptr %1974, i64 %1976
  %1978 = load ptr, ptr %47, align 8, !tbaa !5
  %1979 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1978, i32 0, i32 5
  %1980 = getelementptr inbounds %struct.ImVector.5, ptr %1979, i32 0, i32 2
  %1981 = load ptr, ptr %1980, align 8, !tbaa !120
  %1982 = load i32, ptr %101, align 4, !tbaa !9
  %1983 = sext i32 %1982 to i64
  %1984 = getelementptr inbounds i16, ptr %1981, i64 %1983
  %1985 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1977, ptr noundef %1984)
  %1986 = add nsw i32 %1985, 1
  store i32 %1986, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #14
  %1987 = load i32, ptr %102, align 4, !tbaa !9
  %1988 = sext i32 %1987 to i64
  %1989 = mul i64 %1988, 1
  %1990 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1989)
  store ptr %1990, ptr %103, align 8, !tbaa !5
  %1991 = load ptr, ptr %103, align 8, !tbaa !5
  %1992 = load i32, ptr %102, align 4, !tbaa !9
  %1993 = load ptr, ptr %47, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1993, i32 0, i32 5
  %1995 = getelementptr inbounds %struct.ImVector.5, ptr %1994, i32 0, i32 2
  %1996 = load ptr, ptr %1995, align 8, !tbaa !120
  %1997 = load i32, ptr %100, align 4, !tbaa !9
  %1998 = sext i32 %1997 to i64
  %1999 = getelementptr inbounds i16, ptr %1996, i64 %1998
  %2000 = load ptr, ptr %47, align 8, !tbaa !5
  %2001 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2000, i32 0, i32 5
  %2002 = getelementptr inbounds %struct.ImVector.5, ptr %2001, i32 0, i32 2
  %2003 = load ptr, ptr %2002, align 8, !tbaa !120
  %2004 = load i32, ptr %101, align 4, !tbaa !9
  %2005 = sext i32 %2004 to i64
  %2006 = getelementptr inbounds i16, ptr %2003, i64 %2005
  %2007 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1991, i32 noundef %1992, ptr noundef %1999, ptr noundef %2006)
  %2008 = load ptr, ptr %103, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %2008)
  %2009 = load ptr, ptr %103, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2009)
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #14
  br label %2010

2010:                                             ; preds = %1969, %1932
  %2011 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %2012 = trunc i8 %2011 to i1
  br i1 %2012, label %2013, label %2025

2013:                                             ; preds = %2010
  %2014 = load ptr, ptr %47, align 8, !tbaa !5
  %2015 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %2014)
  br i1 %2015, label %2018, label %2016

2016:                                             ; preds = %2013
  %2017 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %2017)
  br label %2018

2018:                                             ; preds = %2016, %2013
  %2019 = load ptr, ptr %47, align 8, !tbaa !5
  %2020 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2019, i32 0, i32 14
  store i8 1, ptr %2020, align 4, !tbaa !156
  %2021 = load ptr, ptr %47, align 8, !tbaa !5
  %2022 = load ptr, ptr %47, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2022, i32 0, i32 12
  %2024 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %2021, ptr noundef %2023)
  br label %2025

2025:                                             ; preds = %2018, %2010
  br label %2091

2026:                                             ; preds = %1929
  %2027 = load i8, ptr %90, align 1, !tbaa !42, !range !40, !noundef !41
  %2028 = trunc i8 %2027 to i1
  br i1 %2028, label %2029, label %2090

2029:                                             ; preds = %2026
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #14
  %2030 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %2030, ptr %104, align 8, !tbaa !5
  %2031 = load ptr, ptr %104, align 8, !tbaa !5
  %2032 = icmp ne ptr %2031, null
  br i1 %2032, label %2033, label %2089

2033:                                             ; preds = %2029
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #14
  %2034 = load ptr, ptr %104, align 8, !tbaa !5
  %2035 = call i64 @strlen(ptr noundef %2034) #16
  %2036 = trunc i64 %2035 to i32
  store i32 %2036, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #14
  %2037 = load i32, ptr %105, align 4, !tbaa !9
  %2038 = add nsw i32 %2037, 1
  %2039 = sext i32 %2038 to i64
  %2040 = mul i64 %2039, 2
  %2041 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %2040)
  store ptr %2041, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #14
  store i32 0, ptr %107, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #14
  %2042 = load ptr, ptr %104, align 8, !tbaa !5
  store ptr %2042, ptr %108, align 8, !tbaa !5
  br label %2043

2043:                                             ; preds = %2070, %2068, %2033
  %2044 = load ptr, ptr %108, align 8, !tbaa !5
  %2045 = load i8, ptr %2044, align 1, !tbaa !129
  %2046 = sext i8 %2045 to i32
  %2047 = icmp ne i32 %2046, 0
  br i1 %2047, label %2049, label %2048

2048:                                             ; preds = %2043
  store i32 5, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #14
  br label %2071

2049:                                             ; preds = %2043
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #14
  %2050 = load ptr, ptr %108, align 8, !tbaa !5
  %2051 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %109, ptr noundef %2050, ptr noundef null)
  %2052 = load ptr, ptr %108, align 8, !tbaa !5
  %2053 = sext i32 %2051 to i64
  %2054 = getelementptr inbounds i8, ptr %2052, i64 %2053
  store ptr %2054, ptr %108, align 8, !tbaa !5
  %2055 = load i32, ptr %15, align 4, !tbaa !9
  %2056 = load ptr, ptr %16, align 8, !tbaa !5
  %2057 = load ptr, ptr %17, align 8, !tbaa !5
  %2058 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %109, i32 noundef %2055, ptr noundef %2056, ptr noundef %2057, i32 noundef 4)
  br i1 %2058, label %2060, label %2059

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

2060:                                             ; preds = %2049
  %2061 = load i32, ptr %109, align 4, !tbaa !9
  %2062 = trunc i32 %2061 to i16
  %2063 = load ptr, ptr %106, align 8, !tbaa !5
  %2064 = load i32, ptr %107, align 4, !tbaa !9
  %2065 = add nsw i32 %2064, 1
  store i32 %2065, ptr %107, align 4, !tbaa !9
  %2066 = sext i32 %2064 to i64
  %2067 = getelementptr inbounds i16, ptr %2063, i64 %2066
  store i16 %2062, ptr %2067, align 2, !tbaa !151
  store i32 0, ptr %19, align 4
  br label %2068

2068:                                             ; preds = %2060, %2059
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #14
  %2069 = load i32, ptr %19, align 4
  switch i32 %2069, label %3509 [
    i32 0, label %2070
    i32 6, label %2043
  ]

2070:                                             ; preds = %2068
  br label %2043, !llvm.loop !170

2071:                                             ; preds = %2048
  %2072 = load ptr, ptr %106, align 8, !tbaa !5
  %2073 = load i32, ptr %107, align 4, !tbaa !9
  %2074 = sext i32 %2073 to i64
  %2075 = getelementptr inbounds i16, ptr %2072, i64 %2074
  store i16 0, ptr %2075, align 2, !tbaa !151
  %2076 = load i32, ptr %107, align 4, !tbaa !9
  %2077 = icmp sgt i32 %2076, 0
  br i1 %2077, label %2078, label %2087

2078:                                             ; preds = %2071
  %2079 = load ptr, ptr %47, align 8, !tbaa !5
  %2080 = load ptr, ptr %47, align 8, !tbaa !5
  %2081 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2080, i32 0, i32 12
  %2082 = load ptr, ptr %106, align 8, !tbaa !5
  %2083 = load i32, ptr %107, align 4, !tbaa !9
  %2084 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2079, ptr noundef %2081, ptr noundef %2082, i32 noundef %2083)
  %2085 = load ptr, ptr %47, align 8, !tbaa !5
  %2086 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2085, i32 0, i32 14
  store i8 1, ptr %2086, align 4, !tbaa !156
  br label %2087

2087:                                             ; preds = %2078, %2071
  %2088 = load ptr, ptr %106, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2088)
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #14
  br label %2089

2089:                                             ; preds = %2087, %2029
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #14
  br label %2090

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

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

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

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

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

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

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

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

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

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

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

2101:                                             ; preds = %2100, %1711
  br label %2102

2102:                                             ; preds = %2101, %1705
  br label %2103

2103:                                             ; preds = %2102, %1674
  br label %2104

2104:                                             ; preds = %2103, %1641
  br label %2105

2105:                                             ; preds = %2104, %1625
  %2106 = load ptr, ptr %47, align 8, !tbaa !5
  %2107 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %2106)
  br i1 %2107, label %2108, label %2111

2108:                                             ; preds = %2105
  %2109 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2110 = trunc i8 %2109 to i1
  br label %2111

2111:                                             ; preds = %2108, %2105
  %2112 = phi i1 [ false, %2105 ], [ %2110, %2108 ]
  %2113 = zext i1 %2112 to i32
  %2114 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %2115 = trunc i8 %2114 to i1
  %2116 = zext i1 %2115 to i32
  %2117 = or i32 %2116, %2113
  %2118 = icmp ne i32 %2117, 0
  %2119 = zext i1 %2118 to i8
  store i8 %2119, ptr %64, align 1, !tbaa !42
  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 1, ptr %88) #14
  call void @llvm.lifetime.end.p0(i64 4, 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 %2120

2120:                                             ; preds = %2111, %1417, %1412, %1406
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #14
  store ptr null, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #14
  store i32 0, ptr %111, align 4, !tbaa !9
  %2121 = load ptr, ptr %20, align 8, !tbaa !5
  %2122 = getelementptr inbounds %struct.ImGuiContext, ptr %2121, i32 0, i32 44
  %2123 = load i32, ptr %2122, align 8, !tbaa !108
  %2124 = load i32, ptr %29, align 4, !tbaa !9
  %2125 = icmp eq i32 %2123, %2124
  br i1 %2125, label %2126, label %2592

2126:                                             ; preds = %2120
  %2127 = load ptr, ptr %47, align 8, !tbaa !5
  %2128 = icmp ne ptr %2127, null
  br i1 %2128, label %2129, label %2130

2129:                                             ; preds = %2126
  br label %2132

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

2131:                                             ; No predecessors!
  br label %2132

2132:                                             ; preds = %2131, %2129
  %2133 = load i8, ptr %82, align 1, !tbaa !42, !range !40, !noundef !41
  %2134 = trunc i8 %2133 to i1
  br i1 %2134, label %2135, label %2209

2135:                                             ; preds = %2132
  %2136 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2137 = trunc i8 %2136 to i1
  br i1 %2137, label %2209, label %2138

2138:                                             ; preds = %2135
  %2139 = load i32, ptr %15, align 4, !tbaa !9
  %2140 = and i32 %2139, 1048576
  %2141 = icmp ne i32 %2140, 0
  br i1 %2141, label %2142, label %2146

2142:                                             ; preds = %2138
  store ptr @.str, ptr %110, align 8, !tbaa !5
  store i32 0, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %112) #14
  %2143 = load ptr, ptr %47, align 8, !tbaa !5
  %2144 = load ptr, ptr %47, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2144, i32 0, i32 12
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2143, ptr noundef %2145, ptr noundef %112, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 2, ptr %112) #14
  br label %2208

2146:                                             ; preds = %2138
  %2147 = load ptr, ptr %12, align 8, !tbaa !5
  %2148 = load ptr, ptr %47, align 8, !tbaa !5
  %2149 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2148, i32 0, i32 7
  %2150 = getelementptr inbounds %struct.ImVector.29, ptr %2149, i32 0, i32 2
  %2151 = load ptr, ptr %2150, align 8, !tbaa !115
  %2152 = call i32 @strcmp(ptr noundef %2147, ptr noundef %2151) #16
  %2153 = icmp ne i32 %2152, 0
  br i1 %2153, label %2154, label %2207

2154:                                             ; preds = %2146
  %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 2
  %2158 = load ptr, ptr %2157, align 8, !tbaa !115
  store ptr %2158, ptr %110, align 8, !tbaa !5
  %2159 = load ptr, ptr %47, align 8, !tbaa !5
  %2160 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2159, i32 0, i32 7
  %2161 = getelementptr inbounds %struct.ImVector.29, ptr %2160, i32 0, i32 0
  %2162 = load i32, ptr %2161, align 8, !tbaa !171
  %2163 = sub nsw i32 %2162, 1
  store i32 %2163, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113)
  %2164 = load i32, ptr %111, align 4, !tbaa !9
  %2165 = icmp sgt i32 %2164, 0
  br i1 %2165, label %2166, label %2191

2166:                                             ; preds = %2154
  %2167 = load ptr, ptr %110, align 8, !tbaa !5
  %2168 = load ptr, ptr %110, align 8, !tbaa !5
  %2169 = load i32, ptr %111, align 4, !tbaa !9
  %2170 = sext i32 %2169 to i64
  %2171 = getelementptr inbounds i8, ptr %2168, i64 %2170
  %2172 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2167, ptr noundef %2171)
          to label %2173 unwind label %2187

2173:                                             ; preds = %2166
  %2174 = add nsw i32 %2172, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %113, i32 noundef %2174)
          to label %2175 unwind label %2187

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

2186:                                             ; preds = %2175
  br label %2191

2187:                                             ; preds = %2204, %2175, %2173, %2166
  %2188 = landingpad { ptr, i32 }
          cleanup
  %2189 = extractvalue { ptr, i32 } %2188, 0
  store ptr %2189, ptr %114, align 8
  %2190 = extractvalue { ptr, i32 } %2188, 1
  store i32 %2190, ptr %115, align 4
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #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 %3504

2191:                                             ; preds = %2186, %2154
  %2192 = load ptr, ptr %47, align 8, !tbaa !5
  %2193 = load ptr, ptr %47, align 8, !tbaa !5
  %2194 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2193, i32 0, i32 12
  %2195 = getelementptr inbounds %struct.ImVector.5, ptr %113, i32 0, i32 2
  %2196 = load ptr, ptr %2195, align 8, !tbaa !172
  %2197 = load i32, ptr %111, align 4, !tbaa !9
  %2198 = icmp sgt i32 %2197, 0
  br i1 %2198, label %2199, label %2203

2199:                                             ; preds = %2191
  %2200 = getelementptr inbounds %struct.ImVector.5, ptr %113, i32 0, i32 0
  %2201 = load i32, ptr %2200, align 8, !tbaa !173
  %2202 = sub nsw i32 %2201, 1
  br label %2204

2203:                                             ; preds = %2191
  br label %2204

2204:                                             ; preds = %2203, %2199
  %2205 = phi i32 [ %2202, %2199 ], [ 0, %2203 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2192, ptr noundef %2194, ptr noundef %2196, i32 noundef %2205)
          to label %2206 unwind label %2187

2206:                                             ; preds = %2204
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %113) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #14
  br label %2207

2207:                                             ; preds = %2206, %2146
  br label %2208

2208:                                             ; preds = %2207, %2142
  br label %2209

2209:                                             ; preds = %2208, %2135, %2132
  %2210 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2211 = trunc i8 %2210 to i1
  br i1 %2211, label %2236, label %2212

2212:                                             ; preds = %2209
  %2213 = load ptr, ptr %47, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2213, i32 0, i32 8
  store i8 1, ptr %2214, align 8, !tbaa !118
  %2215 = load ptr, ptr %47, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2215, i32 0, i32 6
  %2217 = load ptr, ptr %47, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2217, i32 0, i32 5
  %2219 = getelementptr inbounds %struct.ImVector.5, ptr %2218, i32 0, i32 0
  %2220 = load i32, ptr %2219, align 8, !tbaa !128
  %2221 = mul nsw i32 %2220, 4
  %2222 = add nsw i32 %2221, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2216, i32 noundef %2222)
  %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 2
  %2226 = load ptr, ptr %2225, align 8, !tbaa !119
  %2227 = load ptr, ptr %47, align 8, !tbaa !5
  %2228 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2227, i32 0, i32 6
  %2229 = getelementptr inbounds %struct.ImVector.29, ptr %2228, i32 0, i32 0
  %2230 = load i32, ptr %2229, align 8, !tbaa !174
  %2231 = load ptr, ptr %47, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2231, i32 0, i32 5
  %2233 = getelementptr inbounds %struct.ImVector.5, ptr %2232, i32 0, i32 2
  %2234 = load ptr, ptr %2233, align 8, !tbaa !120
  %2235 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2226, i32 noundef %2230, ptr noundef %2234, ptr noundef null)
  br label %2236

2236:                                             ; preds = %2212, %2209
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #14
  %2237 = load i8, ptr %82, align 1, !tbaa !42, !range !40, !noundef !41
  %2238 = trunc i8 %2237 to i1
  br i1 %2238, label %2239, label %2248

2239:                                             ; preds = %2236
  %2240 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %2241 = trunc i8 %2240 to i1
  br i1 %2241, label %2242, label %2246

2242:                                             ; preds = %2239
  %2243 = load i32, ptr %15, align 4, !tbaa !9
  %2244 = and i32 %2243, 32
  %2245 = icmp ne i32 %2244, 0
  br label %2246

2246:                                             ; preds = %2242, %2239
  %2247 = phi i1 [ false, %2239 ], [ %2245, %2242 ]
  br label %2248

2248:                                             ; preds = %2246, %2236
  %2249 = phi i1 [ true, %2236 ], [ %2247, %2246 ]
  %2250 = zext i1 %2249 to i8
  store i8 %2250, ptr %116, align 1, !tbaa !42
  %2251 = load i8, ptr %116, align 1, !tbaa !42, !range !40, !noundef !41
  %2252 = trunc i8 %2251 to i1
  br i1 %2252, label %2253, label %2591

2253:                                             ; preds = %2248
  %2254 = load i32, ptr %15, align 4, !tbaa !9
  %2255 = and i32 %2254, 524736
  %2256 = icmp ne i32 %2255, 0
  br i1 %2256, label %2257, label %2571

2257:                                             ; preds = %2253
  %2258 = load ptr, ptr %16, align 8, !tbaa !5
  %2259 = icmp ne ptr %2258, null
  br i1 %2259, label %2260, label %2261

2260:                                             ; preds = %2257
  br label %2263

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

2262:                                             ; No predecessors!
  br label %2263

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

2267:                                             ; preds = %2263
  %2268 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 512, i1 noundef zeroext true)
  br i1 %2268, label %2269, label %2270

2269:                                             ; preds = %2267
  store i32 64, ptr %117, align 4, !tbaa !9
  store i32 512, ptr %118, align 4, !tbaa !175
  br label %2303

2270:                                             ; preds = %2267, %2263
  %2271 = load i32, ptr %15, align 4, !tbaa !9
  %2272 = and i32 %2271, 128
  %2273 = icmp ne i32 %2272, 0
  br i1 %2273, label %2274, label %2277

2274:                                             ; preds = %2270
  %2275 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %2275, label %2276, label %2277

2276:                                             ; preds = %2274
  store i32 128, ptr %117, align 4, !tbaa !9
  store i32 515, ptr %118, align 4, !tbaa !175
  br label %2302

2277:                                             ; preds = %2274, %2270
  %2278 = load i32, ptr %15, align 4, !tbaa !9
  %2279 = and i32 %2278, 128
  %2280 = icmp ne i32 %2279, 0
  br i1 %2280, label %2281, label %2284

2281:                                             ; preds = %2277
  %2282 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %2282, label %2283, label %2284

2283:                                             ; preds = %2281
  store i32 128, ptr %117, align 4, !tbaa !9
  store i32 516, ptr %118, align 4, !tbaa !175
  br label %2301

2284:                                             ; preds = %2281, %2277
  %2285 = load i32, ptr %15, align 4, !tbaa !9
  %2286 = and i32 %2285, 524288
  %2287 = icmp ne i32 %2286, 0
  br i1 %2287, label %2288, label %2294

2288:                                             ; preds = %2284
  %2289 = load ptr, ptr %47, align 8, !tbaa !5
  %2290 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2289, i32 0, i32 16
  %2291 = load i8, ptr %2290, align 2, !tbaa !140, !range !40, !noundef !41
  %2292 = trunc i8 %2291 to i1
  br i1 %2292, label %2293, label %2294

2293:                                             ; preds = %2288
  store i32 524288, ptr %117, align 4, !tbaa !9
  br label %2300

2294:                                             ; preds = %2288, %2284
  %2295 = load i32, ptr %15, align 4, !tbaa !9
  %2296 = and i32 %2295, 256
  %2297 = icmp ne i32 %2296, 0
  br i1 %2297, label %2298, label %2299

2298:                                             ; preds = %2294
  store i32 256, ptr %117, align 4, !tbaa !9
  br label %2299

2299:                                             ; preds = %2298, %2294
  br label %2300

2300:                                             ; preds = %2299, %2293
  br label %2301

2301:                                             ; preds = %2300, %2283
  br label %2302

2302:                                             ; preds = %2301, %2276
  br label %2303

2303:                                             ; preds = %2302, %2269
  %2304 = load i32, ptr %117, align 4, !tbaa !9
  %2305 = icmp ne i32 %2304, 0
  br i1 %2305, label %2306, label %2570

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

2315:                                             ; preds = %2306
  %2316 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2322

2317:                                             ; preds = %2306
  %2318 = load ptr, ptr %47, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2318, i32 0, i32 6
  %2320 = getelementptr inbounds %struct.ImVector.29, ptr %2319, i32 0, i32 2
  %2321 = load ptr, ptr %2320, align 8, !tbaa !119
  br label %2322

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

2375:                                             ; preds = %2322
  %2376 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2382

2377:                                             ; preds = %2322
  %2378 = load ptr, ptr %47, align 8, !tbaa !5
  %2379 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2378, i32 0, i32 6
  %2380 = getelementptr inbounds %struct.ImVector.29, ptr %2379, i32 0, i32 2
  %2381 = load ptr, ptr %2380, align 8, !tbaa !119
  br label %2382

2382:                                             ; preds = %2377, %2375
  %2383 = phi ptr [ %2376, %2375 ], [ %2381, %2377 ]
  store ptr %2383, ptr %120, align 8, !tbaa !5
  %2384 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  %2385 = load ptr, ptr %2384, align 8, !tbaa !182
  %2386 = load ptr, ptr %120, align 8, !tbaa !5
  %2387 = icmp eq ptr %2385, %2386
  br i1 %2387, label %2388, label %2389

2388:                                             ; preds = %2382
  br label %2391

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

2390:                                             ; No predecessors!
  br label %2391

2391:                                             ; preds = %2390, %2388
  %2392 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 7
  %2393 = load i32, ptr %2392, align 4, !tbaa !184
  %2394 = load ptr, ptr %47, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2394, i32 0, i32 10
  %2396 = load i32, ptr %2395, align 4, !tbaa !141
  %2397 = icmp eq i32 %2393, %2396
  br i1 %2397, label %2398, label %2399

2398:                                             ; preds = %2391
  br label %2401

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

2400:                                             ; No predecessors!
  br label %2401

2401:                                             ; preds = %2400, %2398
  %2402 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 1
  %2403 = load i32, ptr %2402, align 4, !tbaa !179
  %2404 = load i32, ptr %15, align 4, !tbaa !9
  %2405 = icmp eq i32 %2403, %2404
  br i1 %2405, label %2406, label %2407

2406:                                             ; preds = %2401
  br label %2409

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

2408:                                             ; No predecessors!
  br label %2409

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

2418:                                             ; preds = %2409
  %2419 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2420 = trunc i8 %2419 to i1
  br i1 %2420, label %2421, label %2436

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

2436:                                             ; preds = %2421, %2418
  %2437 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 10
  %2438 = load i32, ptr %2437, align 8, !tbaa !187
  %2439 = load i32, ptr %123, align 4, !tbaa !9
  %2440 = icmp ne i32 %2438, %2439
  br i1 %2440, label %2444, label %2441

2441:                                             ; preds = %2436
  %2442 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2443 = trunc i8 %2442 to i1
  br i1 %2443, label %2444, label %2470

2444:                                             ; preds = %2441, %2436
  %2445 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 10
  %2446 = load i32, ptr %2445, align 8, !tbaa !187
  %2447 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 9
  %2448 = load i32, ptr %2447, align 4, !tbaa !186
  %2449 = icmp eq i32 %2446, %2448
  br i1 %2449, label %2450, label %2455

2450:                                             ; preds = %2444
  %2451 = load ptr, ptr %47, align 8, !tbaa !5
  %2452 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2451, i32 0, i32 12
  %2453 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2452, i32 0, i32 0
  %2454 = load i32, ptr %2453, align 4, !tbaa !153
  br label %2465

2455:                                             ; preds = %2444
  %2456 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  %2457 = load ptr, ptr %2456, align 8, !tbaa !182
  %2458 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  %2459 = load ptr, ptr %2458, align 8, !tbaa !182
  %2460 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 10
  %2461 = load i32, ptr %2460, align 8, !tbaa !187
  %2462 = sext i32 %2461 to i64
  %2463 = getelementptr inbounds i8, ptr %2459, i64 %2462
  %2464 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2457, ptr noundef %2463)
  br label %2465

2465:                                             ; preds = %2455, %2450
  %2466 = phi i32 [ %2454, %2450 ], [ %2464, %2455 ]
  %2467 = load ptr, ptr %47, align 8, !tbaa !5
  %2468 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2467, i32 0, i32 12
  %2469 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2468, i32 0, i32 1
  store i32 %2466, ptr %2469, align 4, !tbaa !154
  br label %2470

2470:                                             ; preds = %2465, %2441
  %2471 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2472 = load i32, ptr %2471, align 4, !tbaa !188
  %2473 = load i32, ptr %124, align 4, !tbaa !9
  %2474 = icmp ne i32 %2472, %2473
  br i1 %2474, label %2478, label %2475

2475:                                             ; preds = %2470
  %2476 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2477 = trunc i8 %2476 to i1
  br i1 %2477, label %2478, label %2504

2478:                                             ; preds = %2475, %2470
  %2479 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2480 = load i32, ptr %2479, align 4, !tbaa !188
  %2481 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 10
  %2482 = load i32, ptr %2481, align 8, !tbaa !187
  %2483 = icmp eq i32 %2480, %2482
  br i1 %2483, label %2484, label %2489

2484:                                             ; preds = %2478
  %2485 = load ptr, ptr %47, align 8, !tbaa !5
  %2486 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2485, i32 0, i32 12
  %2487 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2486, i32 0, i32 1
  %2488 = load i32, ptr %2487, align 4, !tbaa !154
  br label %2499

2489:                                             ; preds = %2478
  %2490 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  %2491 = load ptr, ptr %2490, align 8, !tbaa !182
  %2492 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  %2493 = load ptr, ptr %2492, align 8, !tbaa !182
  %2494 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2495 = load i32, ptr %2494, align 4, !tbaa !188
  %2496 = sext i32 %2495 to i64
  %2497 = getelementptr inbounds i8, ptr %2493, i64 %2496
  %2498 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2491, ptr noundef %2497)
  br label %2499

2499:                                             ; preds = %2489, %2484
  %2500 = phi i32 [ %2488, %2484 ], [ %2498, %2489 ]
  %2501 = load ptr, ptr %47, align 8, !tbaa !5
  %2502 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2501, i32 0, i32 12
  %2503 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2502, i32 0, i32 2
  store i32 %2500, ptr %2503, align 4, !tbaa !155
  br label %2504

2504:                                             ; preds = %2499, %2475
  %2505 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2506 = trunc i8 %2505 to i1
  br i1 %2506, label %2507, label %2569

2507:                                             ; preds = %2504
  %2508 = load i32, ptr %15, align 4, !tbaa !9
  %2509 = and i32 %2508, 16384
  %2510 = icmp eq i32 %2509, 0
  br i1 %2510, label %2511, label %2512

2511:                                             ; preds = %2507
  br label %2514

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

2513:                                             ; No predecessors!
  br label %2514

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

2522:                                             ; preds = %2514
  br label %2525

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

2524:                                             ; No predecessors!
  br label %2525

2525:                                             ; preds = %2524, %2522
  %2526 = load ptr, ptr %47, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  %2528 = load ptr, ptr %2527, align 8, !tbaa !182
  %2529 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  %2530 = load i32, ptr %2529, align 8, !tbaa !183
  call void @_ZL44InputTextReconcileUndoStateAfterUserCallbackP19ImGuiInputTextStatePKci(ptr noundef %2526, ptr noundef %2528, i32 noundef %2530)
  %2531 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  %2532 = load i32, ptr %2531, align 8, !tbaa !183
  %2533 = load i32, ptr %72, align 4, !tbaa !9
  %2534 = icmp sgt i32 %2532, %2533
  br i1 %2534, label %2535, label %2550

2535:                                             ; preds = %2525
  %2536 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2537 = trunc i8 %2536 to i1
  br i1 %2537, label %2538, label %2550

2538:                                             ; preds = %2535
  %2539 = load ptr, ptr %47, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2539, i32 0, i32 5
  %2541 = load ptr, ptr %47, align 8, !tbaa !5
  %2542 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2541, i32 0, i32 5
  %2543 = getelementptr inbounds %struct.ImVector.5, ptr %2542, i32 0, i32 0
  %2544 = load i32, ptr %2543, align 8, !tbaa !128
  %2545 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  %2546 = load i32, ptr %2545, align 8, !tbaa !183
  %2547 = load i32, ptr %72, align 4, !tbaa !9
  %2548 = sub nsw i32 %2546, %2547
  %2549 = add nsw i32 %2544, %2548
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2540, i32 noundef %2549)
  br label %2550

2550:                                             ; preds = %2538, %2535, %2525
  %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 2
  %2554 = load ptr, ptr %2553, align 8, !tbaa !120
  %2555 = load ptr, ptr %47, align 8, !tbaa !5
  %2556 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2555, i32 0, i32 5
  %2557 = getelementptr inbounds %struct.ImVector.5, ptr %2556, i32 0, i32 0
  %2558 = load i32, ptr %2557, align 8, !tbaa !128
  %2559 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  %2560 = load ptr, ptr %2559, align 8, !tbaa !182
  %2561 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2554, i32 noundef %2558, ptr noundef %2560, ptr noundef null, ptr noundef null)
  %2562 = load ptr, ptr %47, align 8, !tbaa !5
  %2563 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2562, i32 0, i32 2
  store i32 %2561, ptr %2563, align 4, !tbaa !121
  %2564 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  %2565 = load i32, ptr %2564, align 8, !tbaa !183
  %2566 = load ptr, ptr %47, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2566, i32 0, i32 3
  store i32 %2565, ptr %2567, align 8, !tbaa !117
  %2568 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %2568)
  br label %2569

2569:                                             ; preds = %2550, %2504
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr %122) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #14
  call void @llvm.lifetime.end.p0(i64 56, ptr %119) #14
  br label %2570

2570:                                             ; preds = %2569, %2303
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #14
  br label %2571

2571:                                             ; preds = %2570, %2253
  %2572 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2573 = trunc i8 %2572 to i1
  br i1 %2573, label %2590, label %2574

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

2582:                                             ; preds = %2574
  %2583 = load ptr, ptr %47, align 8, !tbaa !5
  %2584 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2583, i32 0, i32 6
  %2585 = getelementptr inbounds %struct.ImVector.29, ptr %2584, i32 0, i32 2
  %2586 = load ptr, ptr %2585, align 8, !tbaa !119
  store ptr %2586, ptr %110, align 8, !tbaa !5
  %2587 = load ptr, ptr %47, align 8, !tbaa !5
  %2588 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2587, i32 0, i32 3
  %2589 = load i32, ptr %2588, align 8, !tbaa !117
  store i32 %2589, ptr %111, align 4, !tbaa !9
  br label %2590

2590:                                             ; preds = %2582, %2574, %2571
  br label %2591

2591:                                             ; preds = %2590, %2248
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #14
  br label %2592

2592:                                             ; preds = %2591, %2120
  %2593 = load ptr, ptr %110, align 8, !tbaa !5
  %2594 = icmp ne ptr %2593, null
  br i1 %2594, label %2595, label %2645

2595:                                             ; preds = %2592
  %2596 = load i32, ptr %111, align 4, !tbaa !9
  %2597 = icmp sge i32 %2596, 0
  br i1 %2597, label %2598, label %2599

2598:                                             ; preds = %2595
  br label %2601

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

2600:                                             ; No predecessors!
  br label %2601

2601:                                             ; preds = %2600, %2598
  %2602 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2603 = trunc i8 %2602 to i1
  br i1 %2603, label %2604, label %2637

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

2633:                                             ; preds = %2604
  br label %2636

2634:                                             ; preds = %2604
  call void @__assert_fail(ptr noundef @.str.70, ptr noundef @.str.4, i32 noundef 4662, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2635:                                             ; No predecessors!
  br label %2636

2636:                                             ; preds = %2635, %2633
  call void @llvm.lifetime.end.p0(i64 56, ptr %126) #14
  br label %2637

2637:                                             ; preds = %2636, %2601
  %2638 = load ptr, ptr %12, align 8, !tbaa !5
  %2639 = load ptr, ptr %110, align 8, !tbaa !5
  %2640 = load i32, ptr %111, align 4, !tbaa !9
  %2641 = add nsw i32 %2640, 1
  %2642 = load i32, ptr %13, align 4, !tbaa !9
  %2643 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2641, i32 noundef %2642)
  %2644 = sext i32 %2643 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2638, ptr noundef %2639, i64 noundef %2644)
  store i8 1, ptr %65, align 1, !tbaa !42
  br label %2645

2645:                                             ; preds = %2637, %2592
  %2646 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %2647 = trunc i8 %2646 to i1
  br i1 %2647, label %2648, label %2655

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

2654:                                             ; preds = %2648
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2655

2655:                                             ; preds = %2654, %2648, %2645
  %2656 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2657 = trunc i8 %2656 to i1
  br i1 %2657, label %2668, label %2658

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

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

2689:                                             ; preds = %2668
  %2690 = load ptr, ptr %38, align 8, !tbaa !5
  %2691 = getelementptr inbounds %struct.ImGuiWindow, ptr %2690, i32 0, i32 61
  %2692 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2691, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 8 %2692, i64 8, i1 false), !tbaa.struct !43
  br label %2698

2693:                                             ; preds = %2668
  %2694 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2695 = load ptr, ptr %22, align 8, !tbaa !5
  %2696 = getelementptr inbounds %struct.ImGuiStyle, ptr %2695, i32 0, i32 12
  %2697 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2694, ptr noundef nonnull align 4 dereferenceable(8) %2696)
  store <2 x float> %2697, ptr %130, align 4
  br label %2698

2698:                                             ; preds = %2693, %2689
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %131, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #14
  store i32 2097152, ptr %132, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #14
  %2699 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2700 = trunc i8 %2699 to i1
  br i1 %2700, label %2701, label %2706

2701:                                             ; preds = %2698
  %2702 = load ptr, ptr %47, align 8, !tbaa !5
  %2703 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2702, i32 0, i32 6
  %2704 = getelementptr inbounds %struct.ImVector.29, ptr %2703, i32 0, i32 2
  %2705 = load ptr, ptr %2704, align 8, !tbaa !119
  br label %2708

2706:                                             ; preds = %2698
  %2707 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2708

2708:                                             ; preds = %2706, %2701
  %2709 = phi ptr [ %2705, %2701 ], [ %2707, %2706 ]
  store ptr %2709, ptr %133, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #14
  store ptr null, ptr %134, align 8, !tbaa !5
  %2710 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %2711 = trunc i8 %2710 to i1
  br i1 %2711, label %2712, label %2718

2712:                                             ; preds = %2708
  %2713 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2713, ptr %133, align 8, !tbaa !5
  %2714 = load ptr, ptr %11, align 8, !tbaa !5
  %2715 = load ptr, ptr %11, align 8, !tbaa !5
  %2716 = call i64 @strlen(ptr noundef %2715) #16
  %2717 = getelementptr inbounds i8, ptr %2714, i64 %2716
  store ptr %2717, ptr %134, align 8, !tbaa !5
  br label %2718

2718:                                             ; preds = %2712, %2708
  %2719 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2720 = trunc i8 %2719 to i1
  br i1 %2720, label %2724, label %2721

2721:                                             ; preds = %2718
  %2722 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %2723 = trunc i8 %2722 to i1
  br i1 %2723, label %2724, label %3310

2724:                                             ; preds = %2721, %2718
  %2725 = load ptr, ptr %47, align 8, !tbaa !5
  %2726 = icmp ne ptr %2725, null
  br i1 %2726, label %2727, label %2728

2727:                                             ; preds = %2724
  br label %2730

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

2729:                                             ; No predecessors!
  br label %2730

2730:                                             ; preds = %2729, %2727
  %2731 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %2732 = trunc i8 %2731 to i1
  br i1 %2732, label %2740, label %2733

2733:                                             ; preds = %2730
  %2734 = load ptr, ptr %133, align 8, !tbaa !5
  %2735 = load ptr, ptr %47, align 8, !tbaa !5
  %2736 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2735, i32 0, i32 3
  %2737 = load i32, ptr %2736, align 8, !tbaa !117
  %2738 = sext i32 %2737 to i64
  %2739 = getelementptr inbounds i8, ptr %2734, i64 %2738
  store ptr %2739, ptr %134, align 8, !tbaa !5
  br label %2740

2740:                                             ; preds = %2733, %2730
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #14
  %2741 = load ptr, ptr %47, align 8, !tbaa !5
  %2742 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2741, i32 0, i32 5
  %2743 = getelementptr inbounds %struct.ImVector.5, ptr %2742, i32 0, i32 2
  %2744 = load ptr, ptr %2743, align 8, !tbaa !120
  store ptr %2744, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %136)
  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 16, ptr %138) #14
  call void @llvm.memset.p0.i64(ptr align 16 %138, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %139, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #14
  store i32 0, ptr %140, align 4, !tbaa !9
  %2745 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2746 = trunc i8 %2745 to i1
  br i1 %2746, label %2747, label %2759

2747:                                             ; preds = %2740
  %2748 = load ptr, ptr %135, align 8, !tbaa !5
  %2749 = load ptr, ptr %47, align 8, !tbaa !5
  %2750 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2749, i32 0, i32 12
  %2751 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2750, i32 0, i32 0
  %2752 = load i32, ptr %2751, align 4, !tbaa !153
  %2753 = sext i32 %2752 to i64
  %2754 = getelementptr inbounds i16, ptr %2748, i64 %2753
  %2755 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 0
  store ptr %2754, ptr %2755, align 16, !tbaa !5
  %2756 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  store i32 -1, ptr %2756, align 4, !tbaa !9
  %2757 = load i32, ptr %140, align 4, !tbaa !9
  %2758 = add nsw i32 %2757, 1
  store i32 %2758, ptr %140, align 4, !tbaa !9
  br label %2759

2759:                                             ; preds = %2747, %2740
  %2760 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %2761 = trunc i8 %2760 to i1
  br i1 %2761, label %2762, label %2779

2762:                                             ; preds = %2759
  %2763 = load ptr, ptr %135, align 8, !tbaa !5
  %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 1
  %2767 = load i32, ptr %2766, align 4, !tbaa !154
  %2768 = load ptr, ptr %47, align 8, !tbaa !5
  %2769 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2768, i32 0, i32 12
  %2770 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2769, i32 0, i32 2
  %2771 = load i32, ptr %2770, align 4, !tbaa !155
  %2772 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2767, i32 noundef %2771)
  %2773 = sext i32 %2772 to i64
  %2774 = getelementptr inbounds i16, ptr %2763, i64 %2773
  %2775 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 1
  store ptr %2774, ptr %2775, align 8, !tbaa !5
  %2776 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  store i32 -1, ptr %2776, align 4, !tbaa !9
  %2777 = load i32, ptr %140, align 4, !tbaa !9
  %2778 = add nsw i32 %2777, 1
  store i32 %2778, ptr %140, align 4, !tbaa !9
  br label %2779

2779:                                             ; preds = %2762, %2759
  %2780 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2781 = trunc i8 %2780 to i1
  %2782 = zext i1 %2781 to i64
  %2783 = select i1 %2781, i32 1, i32 0
  %2784 = load i32, ptr %140, align 4, !tbaa !9
  %2785 = add nsw i32 %2784, %2783
  store i32 %2785, ptr %140, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #14
  store i32 0, ptr %141, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #14
  %2786 = load ptr, ptr %135, align 8, !tbaa !5
  store ptr %2786, ptr %142, align 8, !tbaa !5
  br label %2787

2787:                                             ; preds = %2836, %2779
  %2788 = load ptr, ptr %142, align 8, !tbaa !5
  %2789 = load i16, ptr %2788, align 2, !tbaa !151
  %2790 = zext i16 %2789 to i32
  %2791 = icmp ne i32 %2790, 0
  br i1 %2791, label %2793, label %2792

2792:                                             ; preds = %2787
  store i32 7, ptr %19, align 4
  br label %2839

2793:                                             ; preds = %2787
  %2794 = load ptr, ptr %142, align 8, !tbaa !5
  %2795 = load i16, ptr %2794, align 2, !tbaa !151
  %2796 = zext i16 %2795 to i32
  %2797 = icmp eq i32 %2796, 10
  br i1 %2797, label %2798, label %2835

2798:                                             ; preds = %2793
  %2799 = load i32, ptr %141, align 4, !tbaa !9
  %2800 = add nsw i32 %2799, 1
  store i32 %2800, ptr %141, align 4, !tbaa !9
  %2801 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  %2802 = load i32, ptr %2801, align 4, !tbaa !9
  %2803 = icmp eq i32 %2802, -1
  br i1 %2803, label %2804, label %2817

2804:                                             ; preds = %2798
  %2805 = load ptr, ptr %142, align 8, !tbaa !5
  %2806 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 0
  %2807 = load ptr, ptr %2806, align 16, !tbaa !5
  %2808 = icmp uge ptr %2805, %2807
  br i1 %2808, label %2809, label %2817

2809:                                             ; preds = %2804
  %2810 = load i32, ptr %141, align 4, !tbaa !9
  %2811 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  store i32 %2810, ptr %2811, align 4, !tbaa !9
  %2812 = load i32, ptr %140, align 4, !tbaa !9
  %2813 = add nsw i32 %2812, -1
  store i32 %2813, ptr %140, align 4, !tbaa !9
  %2814 = icmp sle i32 %2813, 0
  br i1 %2814, label %2815, label %2816

2815:                                             ; preds = %2809
  store i32 7, ptr %19, align 4
  br label %2839

2816:                                             ; preds = %2809
  br label %2817

2817:                                             ; preds = %2816, %2804, %2798
  %2818 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  %2819 = load i32, ptr %2818, align 4, !tbaa !9
  %2820 = icmp eq i32 %2819, -1
  br i1 %2820, label %2821, label %2834

2821:                                             ; preds = %2817
  %2822 = load ptr, ptr %142, align 8, !tbaa !5
  %2823 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 1
  %2824 = load ptr, ptr %2823, align 8, !tbaa !5
  %2825 = icmp uge ptr %2822, %2824
  br i1 %2825, label %2826, label %2834

2826:                                             ; preds = %2821
  %2827 = load i32, ptr %141, align 4, !tbaa !9
  %2828 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  store i32 %2827, ptr %2828, align 4, !tbaa !9
  %2829 = load i32, ptr %140, align 4, !tbaa !9
  %2830 = add nsw i32 %2829, -1
  store i32 %2830, ptr %140, align 4, !tbaa !9
  %2831 = icmp sle i32 %2830, 0
  br i1 %2831, label %2832, label %2833

2832:                                             ; preds = %2826
  store i32 7, ptr %19, align 4
  br label %2839

2833:                                             ; preds = %2826
  br label %2834

2834:                                             ; preds = %2833, %2821, %2817
  br label %2835

2835:                                             ; preds = %2834, %2793
  br label %2836

2836:                                             ; preds = %2835
  %2837 = load ptr, ptr %142, align 8, !tbaa !5
  %2838 = getelementptr inbounds i16, ptr %2837, i32 1
  store ptr %2838, ptr %142, align 8, !tbaa !5
  br label %2787, !llvm.loop !190

2839:                                             ; preds = %2832, %2815, %2792
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #14
  br label %2840

2840:                                             ; preds = %2839
  %2841 = load i32, ptr %141, align 4, !tbaa !9
  %2842 = add nsw i32 %2841, 1
  store i32 %2842, ptr %141, align 4, !tbaa !9
  %2843 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  %2844 = load i32, ptr %2843, align 4, !tbaa !9
  %2845 = icmp eq i32 %2844, -1
  br i1 %2845, label %2846, label %2849

2846:                                             ; preds = %2840
  %2847 = load i32, ptr %141, align 4, !tbaa !9
  %2848 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  store i32 %2847, ptr %2848, align 4, !tbaa !9
  br label %2849

2849:                                             ; preds = %2846, %2840
  %2850 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  %2851 = load i32, ptr %2850, align 4, !tbaa !9
  %2852 = icmp eq i32 %2851, -1
  br i1 %2852, label %2853, label %2856

2853:                                             ; preds = %2849
  %2854 = load i32, ptr %141, align 4, !tbaa !9
  %2855 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  store i32 %2854, ptr %2855, align 4, !tbaa !9
  br label %2856

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

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

2899:                                             ; preds = %2879, %2856
  %2900 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2901 = trunc i8 %2900 to i1
  br i1 %2901, label %2902, label %2911

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

2911:                                             ; preds = %2902, %2899
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %138) #14
  %2912 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2913 = trunc i8 %2912 to i1
  br i1 %2913, label %2914, label %3052

2914:                                             ; preds = %2911
  %2915 = load ptr, ptr %47, align 8, !tbaa !5
  %2916 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2915, i32 0, i32 14
  %2917 = load i8, ptr %2916, align 4, !tbaa !156, !range !40, !noundef !41
  %2918 = trunc i8 %2917 to i1
  br i1 %2918, label %2919, label %3052

2919:                                             ; preds = %2914
  %2920 = load i32, ptr %15, align 4, !tbaa !9
  %2921 = and i32 %2920, 4096
  %2922 = icmp ne i32 %2921, 0
  br i1 %2922, label %2972, label %2923

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

2940:                                             ; preds = %2923
  %2941 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  %2942 = load float, ptr %2941, align 4, !tbaa !97
  %2943 = load float, ptr %146, align 4, !tbaa !44
  %2944 = fsub float %2942, %2943
  %2945 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2944)
  %2946 = fptosi float %2945 to i32
  %2947 = sitofp i32 %2946 to float
  %2948 = load ptr, ptr %47, align 8, !tbaa !5
  %2949 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2948, i32 0, i32 11
  store float %2947, ptr %2949, align 8, !tbaa !122
  br label %2971

2950:                                             ; preds = %2923
  %2951 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  %2952 = load float, ptr %2951, align 4, !tbaa !97
  %2953 = load float, ptr %147, align 4, !tbaa !44
  %2954 = fsub float %2952, %2953
  %2955 = load ptr, ptr %47, align 8, !tbaa !5
  %2956 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2955, i32 0, i32 11
  %2957 = load float, ptr %2956, align 8, !tbaa !122
  %2958 = fcmp oge float %2954, %2957
  br i1 %2958, label %2959, label %2970

2959:                                             ; preds = %2950
  %2960 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  %2961 = load float, ptr %2960, align 4, !tbaa !97
  %2962 = load float, ptr %147, align 4, !tbaa !44
  %2963 = fsub float %2961, %2962
  %2964 = load float, ptr %146, align 4, !tbaa !44
  %2965 = fadd float %2963, %2964
  %2966 = fptosi float %2965 to i32
  %2967 = sitofp i32 %2966 to float
  %2968 = load ptr, ptr %47, align 8, !tbaa !5
  %2969 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2968, i32 0, i32 11
  store float %2967, ptr %2969, align 8, !tbaa !122
  br label %2970

2970:                                             ; preds = %2959, %2950
  br label %2971

2971:                                             ; preds = %2970, %2940
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #14
  br label %2975

2972:                                             ; preds = %2919
  %2973 = load ptr, ptr %47, align 8, !tbaa !5
  %2974 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2973, i32 0, i32 11
  store float 0.000000e+00, ptr %2974, align 8, !tbaa !122
  br label %2975

2975:                                             ; preds = %2972, %2971
  %2976 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2977 = trunc i8 %2976 to i1
  br i1 %2977, label %2978, label %3049

2978:                                             ; preds = %2975
  %2979 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  %2980 = load float, ptr %2979, align 4, !tbaa !95
  %2981 = load ptr, ptr %20, align 8, !tbaa !5
  %2982 = getelementptr inbounds %struct.ImGuiContext, ptr %2981, i32 0, i32 7
  %2983 = load float, ptr %2982, align 8, !tbaa !45
  %2984 = fsub float %2980, %2983
  %2985 = load float, ptr %55, align 4, !tbaa !44
  %2986 = fcmp olt float %2984, %2985
  br i1 %2986, label %2987, label %2995

2987:                                             ; preds = %2978
  %2988 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  %2989 = load float, ptr %2988, align 4, !tbaa !95
  %2990 = load ptr, ptr %20, align 8, !tbaa !5
  %2991 = getelementptr inbounds %struct.ImGuiContext, ptr %2990, i32 0, i32 7
  %2992 = load float, ptr %2991, align 8, !tbaa !45
  %2993 = fsub float %2989, %2992
  %2994 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2993)
  store float %2994, ptr %55, align 4, !tbaa !44
  br label %3021

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

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

3020:                                             ; preds = %3009, %2995
  br label %3021

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

3049:                                             ; preds = %3021, %2975
  %3050 = load ptr, ptr %47, align 8, !tbaa !5
  %3051 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3050, i32 0, i32 14
  store i8 0, ptr %3051, align 4, !tbaa !156
  br label %3052

3052:                                             ; preds = %3049, %2914, %2911
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #14
  %3053 = load ptr, ptr %47, align 8, !tbaa !5
  %3054 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3053, i32 0, i32 11
  %3055 = load float, ptr %3054, align 8, !tbaa !122
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %149, float noundef %3055, float noundef 0.000000e+00)
  %3056 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3057 = trunc i8 %3056 to i1
  br i1 %3057, label %3058, label %3187

3058:                                             ; preds = %3052
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #14
  %3059 = load ptr, ptr %135, align 8, !tbaa !5
  %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 1
  %3063 = load i32, ptr %3062, align 4, !tbaa !154
  %3064 = load ptr, ptr %47, align 8, !tbaa !5
  %3065 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3064, i32 0, i32 12
  %3066 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3065, i32 0, i32 2
  %3067 = load i32, ptr %3066, align 4, !tbaa !155
  %3068 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %3063, i32 noundef %3067)
  %3069 = sext i32 %3068 to i64
  %3070 = getelementptr inbounds i16, ptr %3059, i64 %3069
  store ptr %3070, ptr %150, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #14
  %3071 = load ptr, ptr %135, align 8, !tbaa !5
  %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 1
  %3075 = load i32, ptr %3074, align 4, !tbaa !154
  %3076 = load ptr, ptr %47, align 8, !tbaa !5
  %3077 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3076, i32 0, i32 12
  %3078 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3077, i32 0, i32 2
  %3079 = load i32, ptr %3078, align 4, !tbaa !155
  %3080 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3075, i32 noundef %3079)
  %3081 = sext i32 %3080 to i64
  %3082 = getelementptr inbounds i16, ptr %3071, i64 %3081
  store ptr %3082, ptr %151, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #14
  %3083 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3084 = trunc i8 %3083 to i1
  %3085 = zext i1 %3084 to i64
  %3086 = select i1 %3084, float 1.000000e+00, float 0x3FE3333340000000
  %3087 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %3086)
  store i32 %3087, ptr %152, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #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 -1.000000e+00
  store float %3091, ptr %153, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #14
  %3092 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3093 = trunc i8 %3092 to i1
  %3094 = zext i1 %3093 to i64
  %3095 = select i1 %3093, float 0.000000e+00, float 2.000000e+00
  store float %3095, ptr %154, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #14
  %3096 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %130, ptr noundef nonnull align 4 dereferenceable(8) %137)
  store <2 x float> %3096, ptr %156, align 4
  %3097 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %156, ptr noundef nonnull align 4 dereferenceable(8) %149)
  store <2 x float> %3097, ptr %155, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #14
  %3098 = load ptr, ptr %150, align 8, !tbaa !5
  store ptr %3098, ptr %157, align 8, !tbaa !5
  br label %3099

3099:                                             ; preds = %3172, %3058
  %3100 = load ptr, ptr %157, align 8, !tbaa !5
  %3101 = load ptr, ptr %151, align 8, !tbaa !5
  %3102 = icmp ult ptr %3100, %3101
  br i1 %3102, label %3104, label %3103

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

3104:                                             ; preds = %3099
  %3105 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 1
  %3106 = load float, ptr %3105, align 4, !tbaa !95
  %3107 = getelementptr inbounds %struct.ImVec4, ptr %129, i32 0, i32 3
  %3108 = load float, ptr %3107, align 4, !tbaa !191
  %3109 = load ptr, ptr %20, align 8, !tbaa !5
  %3110 = getelementptr inbounds %struct.ImGuiContext, ptr %3109, i32 0, i32 7
  %3111 = load float, ptr %3110, align 8, !tbaa !45
  %3112 = fadd float %3108, %3111
  %3113 = fcmp ogt float %3106, %3112
  br i1 %3113, label %3114, label %3115

3114:                                             ; preds = %3104
  store i32 10, ptr %19, align 4
  br label %3185

3115:                                             ; preds = %3104
  %3116 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 1
  %3117 = load float, ptr %3116, align 4, !tbaa !95
  %3118 = getelementptr inbounds %struct.ImVec4, ptr %129, i32 0, i32 1
  %3119 = load float, ptr %3118, align 4, !tbaa !192
  %3120 = fcmp olt float %3117, %3119
  br i1 %3120, label %3121, label %3135

3121:                                             ; preds = %3115
  br label %3122

3122:                                             ; preds = %3133, %3121
  %3123 = load ptr, ptr %157, align 8, !tbaa !5
  %3124 = load ptr, ptr %151, align 8, !tbaa !5
  %3125 = icmp ult ptr %3123, %3124
  br i1 %3125, label %3126, label %3134

3126:                                             ; preds = %3122
  %3127 = load ptr, ptr %157, align 8, !tbaa !5
  %3128 = getelementptr inbounds i16, ptr %3127, i32 1
  store ptr %3128, ptr %157, align 8, !tbaa !5
  %3129 = load i16, ptr %3127, align 2, !tbaa !151
  %3130 = zext i16 %3129 to i32
  %3131 = icmp eq i32 %3130, 10
  br i1 %3131, label %3132, label %3133

3132:                                             ; preds = %3126
  br label %3134

3133:                                             ; preds = %3126
  br label %3122, !llvm.loop !193

3134:                                             ; preds = %3132, %3122
  br label %3172

3135:                                             ; preds = %3115
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #14
  %3136 = load ptr, ptr %20, align 8, !tbaa !5
  %3137 = load ptr, ptr %157, align 8, !tbaa !5
  %3138 = load ptr, ptr %151, align 8, !tbaa !5
  %3139 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %3136, ptr noundef %3137, ptr noundef %3138, ptr noundef %157, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %3139, ptr %158, align 4
  %3140 = getelementptr inbounds %struct.ImVec2, ptr %158, i32 0, i32 0
  %3141 = load float, ptr %3140, align 4, !tbaa !97
  %3142 = fcmp ole float %3141, 0.000000e+00
  br i1 %3142, label %3143, label %3152

3143:                                             ; preds = %3135
  %3144 = load ptr, ptr %20, align 8, !tbaa !5
  %3145 = getelementptr inbounds %struct.ImGuiContext, ptr %3144, i32 0, i32 6
  %3146 = load ptr, ptr %3145, align 8, !tbaa !130
  %3147 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %3146, i16 noundef zeroext 32)
  %3148 = fmul float %3147, 5.000000e-01
  %3149 = fptosi float %3148 to i32
  %3150 = sitofp i32 %3149 to float
  %3151 = getelementptr inbounds %struct.ImVec2, ptr %158, i32 0, i32 0
  store float %3150, ptr %3151, align 4, !tbaa !97
  br label %3152

3152:                                             ; preds = %3143, %3135
  call void @llvm.lifetime.start.p0(i64 16, ptr %159) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #14
  %3153 = load float, ptr %153, align 4, !tbaa !44
  %3154 = load ptr, ptr %20, align 8, !tbaa !5
  %3155 = getelementptr inbounds %struct.ImGuiContext, ptr %3154, i32 0, i32 7
  %3156 = load float, ptr %3155, align 8, !tbaa !45
  %3157 = fsub float %3153, %3156
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %161, float noundef 0.000000e+00, float noundef %3157)
  %3158 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %155, ptr noundef nonnull align 4 dereferenceable(8) %161)
  store <2 x float> %3158, ptr %160, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #14
  %3159 = getelementptr inbounds %struct.ImVec2, ptr %158, i32 0, i32 0
  %3160 = load float, ptr %3159, align 4, !tbaa !97
  %3161 = load float, ptr %154, align 4, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %163, float noundef %3160, float noundef %3161)
  %3162 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %155, ptr noundef nonnull align 4 dereferenceable(8) %163)
  store <2 x float> %3162, ptr %162, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %159, ptr noundef nonnull align 4 dereferenceable(8) %160, ptr noundef nonnull align 4 dereferenceable(8) %162)
  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.end.p0(i64 8, ptr %160) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %164) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %164, ptr noundef nonnull align 4 dereferenceable(16) %129)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %159, ptr noundef nonnull align 4 dereferenceable(16) %164)
  call void @llvm.lifetime.end.p0(i64 16, ptr %164) #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) %129)
  %3163 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %159, ptr noundef nonnull align 4 dereferenceable(16) %165)
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #14
  br i1 %3163, label %3164, label %3171

3164:                                             ; preds = %3152
  %3165 = load ptr, ptr %38, align 8, !tbaa !5
  %3166 = getelementptr inbounds %struct.ImGuiWindow, ptr %3165, i32 0, i32 79
  %3167 = load ptr, ptr %3166, align 8, !tbaa !194
  %3168 = getelementptr inbounds %struct.ImRect, ptr %159, i32 0, i32 0
  %3169 = getelementptr inbounds %struct.ImRect, ptr %159, i32 0, i32 1
  %3170 = load i32, ptr %152, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %3167, ptr noundef nonnull align 4 dereferenceable(8) %3168, ptr noundef nonnull align 4 dereferenceable(8) %3169, i32 noundef %3170, float noundef 0.000000e+00, i32 noundef 0)
  br label %3171

3171:                                             ; preds = %3164, %3152
  call void @llvm.lifetime.end.p0(i64 16, ptr %159) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #14
  br label %3172

3172:                                             ; preds = %3171, %3134
  %3173 = getelementptr inbounds %struct.ImVec2, ptr %130, i32 0, i32 0
  %3174 = load float, ptr %3173, align 4, !tbaa !97
  %3175 = getelementptr inbounds %struct.ImVec2, ptr %149, i32 0, i32 0
  %3176 = load float, ptr %3175, align 4, !tbaa !97
  %3177 = fsub float %3174, %3176
  %3178 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 0
  store float %3177, ptr %3178, align 4, !tbaa !97
  %3179 = load ptr, ptr %20, align 8, !tbaa !5
  %3180 = getelementptr inbounds %struct.ImGuiContext, ptr %3179, i32 0, i32 7
  %3181 = load float, ptr %3180, align 8, !tbaa !45
  %3182 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 1
  %3183 = load float, ptr %3182, align 4, !tbaa !95
  %3184 = fadd float %3183, %3181
  store float %3184, ptr %3182, align 4, !tbaa !95
  br label %3099, !llvm.loop !195

3185:                                             ; preds = %3114, %3103
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #14
  br label %3186

3186:                                             ; preds = %3185
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %152) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #14
  br label %3187

3187:                                             ; preds = %3186, %3052
  %3188 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3189 = trunc i8 %3188 to i1
  br i1 %3189, label %3197, label %3190

3190:                                             ; preds = %3187
  %3191 = load ptr, ptr %134, align 8, !tbaa !5
  %3192 = load ptr, ptr %133, align 8, !tbaa !5
  %3193 = ptrtoint ptr %3191 to i64
  %3194 = ptrtoint ptr %3192 to i64
  %3195 = sub i64 %3193, %3194
  %3196 = icmp slt i64 %3195, 2097152
  br i1 %3196, label %3197, label %3222

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

3218:                                             ; preds = %3197
  br label %3220

3219:                                             ; preds = %3197
  br label %3220

3220:                                             ; preds = %3219, %3218
  %3221 = phi ptr [ null, %3218 ], [ %129, %3219 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3205, ptr noundef %3208, float noundef %3211, ptr noundef nonnull align 4 dereferenceable(8) %167, i32 noundef %3213, ptr noundef %3214, ptr noundef %3215, float noundef 0.000000e+00, ptr noundef %3221)
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #14
  br label %3222

3222:                                             ; preds = %3220, %3190
  %3223 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3224 = trunc i8 %3223 to i1
  br i1 %3224, label %3225, label %3309

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

3238:                                             ; preds = %3225
  %3239 = load ptr, ptr %47, align 8, !tbaa !5
  %3240 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3239, i32 0, i32 13
  %3241 = load float, ptr %3240, align 8, !tbaa !197
  %3242 = fcmp ole float %3241, 0.000000e+00
  br i1 %3242, label %3249, label %3243

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

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

3272:                                             ; preds = %3249
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %173, ptr noundef nonnull align 4 dereferenceable(16) %129)
  %3273 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %172, ptr noundef nonnull align 4 dereferenceable(16) %173)
  br label %3274

3274:                                             ; preds = %3272, %3249
  %3275 = phi i1 [ false, %3249 ], [ %3273, %3272 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #14
  br i1 %3275, label %3276, label %3283

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

3283:                                             ; preds = %3276, %3274
  %3284 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %3285 = trunc i8 %3284 to i1
  br i1 %3285, label %3308, label %3286

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

3308:                                             ; preds = %3286, %3283
  call void @llvm.lifetime.end.p0(i64 16, ptr %172) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %168) #14
  br label %3309

3309:                                             ; preds = %3308, %3222
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #14
  br label %3384

3310:                                             ; preds = %2721
  %3311 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3312 = trunc i8 %3311 to i1
  br i1 %3312, label %3313, label %3323

3313:                                             ; preds = %3310
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #14
  %3314 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %3315 = load float, ptr %3314, align 4, !tbaa !97
  %3316 = load ptr, ptr %133, align 8, !tbaa !5
  %3317 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3316, ptr noundef %134)
  %3318 = sitofp i32 %3317 to float
  %3319 = load ptr, ptr %20, align 8, !tbaa !5
  %3320 = getelementptr inbounds %struct.ImGuiContext, ptr %3319, i32 0, i32 7
  %3321 = load float, ptr %3320, align 8, !tbaa !45
  %3322 = fmul float %3318, %3321
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %176, float noundef %3315, float noundef %3322)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %131, ptr align 4 %176, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #14
  br label %3349

3323:                                             ; preds = %3310
  %3324 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3325 = trunc i8 %3324 to i1
  br i1 %3325, label %3339, label %3326

3326:                                             ; preds = %3323
  %3327 = load ptr, ptr %20, align 8, !tbaa !5
  %3328 = getelementptr inbounds %struct.ImGuiContext, ptr %3327, i32 0, i32 44
  %3329 = load i32, ptr %3328, align 8, !tbaa !108
  %3330 = load i32, ptr %29, align 4, !tbaa !9
  %3331 = icmp eq i32 %3329, %3330
  br i1 %3331, label %3332, label %3339

3332:                                             ; preds = %3326
  %3333 = load ptr, ptr %133, align 8, !tbaa !5
  %3334 = load ptr, ptr %47, align 8, !tbaa !5
  %3335 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3334, i32 0, i32 3
  %3336 = load i32, ptr %3335, align 8, !tbaa !117
  %3337 = sext i32 %3336 to i64
  %3338 = getelementptr inbounds i8, ptr %3333, i64 %3337
  store ptr %3338, ptr %134, align 8, !tbaa !5
  br label %3348

3339:                                             ; preds = %3326, %3323
  %3340 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3341 = trunc i8 %3340 to i1
  br i1 %3341, label %3347, label %3342

3342:                                             ; preds = %3339
  %3343 = load ptr, ptr %133, align 8, !tbaa !5
  %3344 = load ptr, ptr %133, align 8, !tbaa !5
  %3345 = call i64 @strlen(ptr noundef %3344) #16
  %3346 = getelementptr inbounds i8, ptr %3343, i64 %3345
  store ptr %3346, ptr %134, align 8, !tbaa !5
  br label %3347

3347:                                             ; preds = %3342, %3339
  br label %3348

3348:                                             ; preds = %3347, %3332
  br label %3349

3349:                                             ; preds = %3348, %3313
  %3350 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3351 = trunc i8 %3350 to i1
  br i1 %3351, label %3359, label %3352

3352:                                             ; preds = %3349
  %3353 = load ptr, ptr %134, align 8, !tbaa !5
  %3354 = load ptr, ptr %133, align 8, !tbaa !5
  %3355 = ptrtoint ptr %3353 to i64
  %3356 = ptrtoint ptr %3354 to i64
  %3357 = sub i64 %3355, %3356
  %3358 = icmp slt i64 %3357, 2097152
  br i1 %3358, label %3359, label %3383

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

3379:                                             ; preds = %3359
  br label %3381

3380:                                             ; preds = %3359
  br label %3381

3381:                                             ; preds = %3380, %3379
  %3382 = phi ptr [ null, %3379 ], [ %129, %3380 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3367, ptr noundef %3370, float noundef %3373, ptr noundef nonnull align 4 dereferenceable(8) %130, i32 noundef %3374, ptr noundef %3375, ptr noundef %3376, float noundef 0.000000e+00, ptr noundef %3382)
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #14
  br label %3383

3383:                                             ; preds = %3381, %3352
  br label %3384

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

3387:                                             ; preds = %3384
  %3388 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3389 = trunc i8 %3388 to i1
  br i1 %3389, label %3391, label %3390

3390:                                             ; preds = %3387
  call void @_ZN5ImGui7PopFontEv()
  br label %3391

3391:                                             ; preds = %3390, %3387, %3384
  %3392 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3393 = trunc i8 %3392 to i1
  br i1 %3393, label %3394, label %3443

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

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

3442:                                             ; preds = %3427, %3394
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #14
  br label %3443

3443:                                             ; preds = %3442, %3391
  %3444 = load ptr, ptr %20, align 8, !tbaa !5
  %3445 = getelementptr inbounds %struct.ImGuiContext, ptr %3444, i32 0, i32 208
  %3446 = load i8, ptr %3445, align 8, !tbaa !206, !range !40, !noundef !41
  %3447 = trunc i8 %3446 to i1
  br i1 %3447, label %3448, label %3457

3448:                                             ; preds = %3443
  %3449 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3450 = trunc i8 %3449 to i1
  br i1 %3450, label %3451, label %3454

3451:                                             ; preds = %3448
  %3452 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3453 = trunc i8 %3452 to i1
  br i1 %3453, label %3454, label %3457

3454:                                             ; preds = %3451, %3448
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef @.str.25, ptr noundef @.str.26)
  %3455 = load ptr, ptr %133, align 8, !tbaa !5
  %3456 = load ptr, ptr %134, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %130, ptr noundef %3455, ptr noundef %3456)
  br label %3457

3457:                                             ; preds = %3454, %3451, %3443
  %3458 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3459 = load float, ptr %3458, align 4, !tbaa !97
  %3460 = fcmp ogt float %3459, 0.000000e+00
  br i1 %3460, label %3461, label %3480

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

3480:                                             ; preds = %3461, %3457
  %3481 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %3482 = trunc i8 %3481 to i1
  br i1 %3482, label %3483, label %3489

3483:                                             ; preds = %3480
  %3484 = load i32, ptr %15, align 4, !tbaa !9
  %3485 = and i32 %3484, 134217728
  %3486 = icmp ne i32 %3485, 0
  br i1 %3486, label %3489, label %3487

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

3489:                                             ; preds = %3487, %3483, %3480
  %3490 = load ptr, ptr %20, align 8, !tbaa !5
  %3491 = load i32, ptr %15, align 4, !tbaa !9
  %3492 = and i32 %3491, 32
  %3493 = icmp ne i32 %3492, 0
  br i1 %3493, label %3494, label %3497

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

3497:                                             ; preds = %3489
  %3498 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %3499 = trunc i8 %3498 to i1
  store i1 %3499, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3500

3500:                                             ; preds = %3497, %3494
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %129) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #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 %3501

3501:                                             ; preds = %3500, %406, %392
  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 %3502

3502:                                             ; preds = %3501, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  %3503 = load i1, ptr %9, align 1
  ret i1 %3503

3504:                                             ; preds = %2187
  %3505 = load ptr, ptr %114, align 8
  %3506 = load i32, ptr %115, align 4
  %3507 = insertvalue { ptr, i32 } poison, ptr %3505, 0
  %3508 = insertvalue { ptr, i32 } %3507, i32 %3506, 1
  resume { ptr, i32 } %3508

3509:                                             ; preds = %2068, %1395
  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(118), 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(118), 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 15384}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !48, i64 14272, !48, i64 14288, !49, i64 14304, !6, i64 15376, !14, i64 15384, !14, i64 15388, !50, i64 15392, !51, i64 15920, !10, i64 15928, !10, i64 15932, !10, i64 15936, !15, i64 15940, !15, i64 15941, !15, i64 15942, !15, i64 15943, !15, i64 15944, !6, i64 15952, !22, i64 15960, !22, i64 15976, !22, i64 15992, !52, i64 16008, !26, i64 16024, !10, i64 16040, !13, i64 16044, !6, i64 16056, !6, i64 16064, !6, i64 16072, !6, i64 16080, !6, i64 16088, !13, i64 16096, !10, i64 16104, !14, i64 16108, !13, i64 16112, !13, i64 16120, !10, i64 16128, !10, i64 16132, !10, i64 16136, !15, i64 16140, !15, i64 16141, !14, i64 16144, !14, i64 16148, !10, i64 16152, !10, i64 16156, !14, i64 16160, !15, i64 16164, !15, i64 16165, !15, i64 16166, !15, i64 16167, !15, i64 16168, !15, i64 16169, !13, i64 16172, !6, i64 16184, !53, i64 16192, !10, i64 16196, !10, i64 16200, !15, i64 16204, !15, i64 16205, !6, i64 16208, !10, i64 16216, !14, i64 16220, !7, i64 16224, !54, i64 17904, !10, i64 18216, !15, i64 18220, !10, i64 18224, !10, i64 18228, !10, i64 18232, !10, i64 18236, !56, i64 18240, !57, i64 18260, !58, i64 18320, !59, i64 18432, !60, i64 18448, !61, i64 18464, !17, i64 18480, !62, i64 18496, !63, i64 18512, !64, i64 18528, !64, i64 18544, !10, i64 18560, !65, i64 18568, !6, i64 18584, !10, i64 18592, !10, i64 18596, !10, i64 18600, !10, i64 18604, !10, i64 18608, !10, i64 18612, !10, i64 18616, !10, i64 18620, !10, i64 18624, !10, i64 18628, !10, i64 18632, !10, i64 18636, !53, i64 18640, !20, i64 18644, !15, i64 18648, !15, i64 18649, !15, i64 18650, !15, i64 18651, !15, i64 18652, !15, i64 18653, !15, i64 18654, !10, i64 18656, !24, i64 18660, !15, i64 18676, !15, i64 18677, !15, i64 18678, !10, i64 18680, !10, i64 18684, !10, i64 18688, !10, i64 18692, !10, i64 18696, !10, i64 18700, !24, i64 18704, !24, i64 18720, !10, i64 18736, !10, i64 18740, !10, i64 18744, !66, i64 18752, !66, i64 18800, !66, i64 18848, !66, i64 18896, !10, i64 18944, !10, i64 18948, !6, i64 18952, !6, i64 18960, !6, i64 18968, !14, i64 18976, !14, i64 18980, !15, i64 18984, !13, i64 18988, !13, i64 18996, !14, i64 19004, !10, i64 19008, !15, i64 19012, !15, i64 19013, !15, i64 19014, !10, i64 19016, !10, i64 19020, !10, i64 19024, !67, i64 19032, !24, i64 19096, !10, i64 19112, !10, i64 19116, !14, i64 19120, !10, i64 19124, !10, i64 19128, !10, i64 19132, !10, i64 19136, !68, i64 19144, !7, i64 19160, !10, i64 19176, !69, i64 19184, !6, i64 19200, !10, i64 19208, !70, i64 19216, !71, i64 19232, !23, i64 19272, !39, i64 19288, !6, i64 19304, !73, i64 19312, !75, i64 19352, !76, i64 19368, !10, i64 19384, !10, i64 19388, !14, i64 19392, !14, i64 19396, !13, i64 19400, !77, i64 19408, !81, i64 23136, !10, i64 23256, !10, i64 23260, !10, i64 23264, !10, i64 23268, !14, i64 23272, !14, i64 23276, !10, i64 23280, !37, i64 23284, !83, i64 23300, !14, i64 23348, !14, i64 23352, !15, i64 23356, !15, i64 23357, !14, i64 23360, !14, i64 23364, !14, i64 23368, !14, i64 23372, !16, i64 23376, !16, i64 23378, !78, i64 23384, !17, i64 23400, !84, i64 23416, !84, i64 23432, !7, i64 23448, !15, i64 23449, !14, i64 23452, !85, i64 23456, !86, i64 23472, !87, i64 23488, !88, i64 23504, !89, i64 23520, !10, i64 23536, !7, i64 23544, !15, i64 23600, !90, i64 23604, !6, i64 23608, !85, i64 23616, !6, i64 23632, !6, i64 23640, !14, i64 23648, !15, i64 23652, !10, i64 23656, !10, i64 23660, !10, i64 23664, !10, i64 23668, !85, i64 23672, !91, i64 23688, !7, i64 23712, !15, i64 23713, !7, i64 23714, !10, i64 23716, !92, i64 23720, !93, i64 23736, !7, i64 23776, !10, i64 24016, !10, i64 24020, !14, i64 24024, !10, i64 24028, !10, i64 24032, !10, i64 24036, !78, i64 24040}
!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, !14, i64 168, !13, i64 172, !13, i64 180, !13, i64 188, !13, i64 196, !14, i64 204, !15, i64 208, !15, i64 209, !15, i64 210, !14, i64 212, !14, i64 216, !7, i64 220}
!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, !14, i64 88, !14, i64 92, !15, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !10, i64 112, !7, i64 116}
!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, !15, i64 7, !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 18268}
!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 16056}
!104 = !{!12, !20, i64 336}
!105 = !{!12, !16, i64 342}
!106 = !{!12, !14, i64 164}
!107 = !{!46, !10, i64 19008}
!108 = !{!46, !10, i64 16152}
!109 = !{!46, !10, i64 18612}
!110 = !{!46, !10, i64 18600}
!111 = !{!46, !53, i64 18640}
!112 = !{!46, !10, i64 16200}
!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 18616}
!124 = !{!47, !15, i64 3596}
!125 = !{!77, !7, i64 96}
!126 = !{!47, !15, i64 113}
!127 = !{!46, !10, i64 18216}
!128 = !{!77, !10, i64 24}
!129 = !{!7, !7, i64 0}
!130 = !{!46, !6, i64 15376}
!131 = !{!81, !14, i64 20}
!132 = !{!81, !14, i64 100}
!133 = !{!81, !14, i64 104}
!134 = !{!81, !14, i64 108}
!135 = !{!81, !6, i64 64}
!136 = !{!81, !6, i64 56}
!137 = !{!138, !14, i64 4}
!138 = !{!"_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}
!139 = !{!81, !14, i64 16}
!140 = !{!77, !15, i64 3718}
!141 = !{!77, !10, i64 76}
!142 = !{!77, !10, i64 3720}
!143 = !{!46, !15, i64 16165}
!144 = !{!46, !10, i64 24036}
!145 = !{!47, !14, i64 3572}
!146 = !{!24, !14, i64 0}
!147 = !{!49, !14, i64 60}
!148 = !{!47, !14, i64 3576}
!149 = !{!12, !14, i64 252}
!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 16164}
!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 23416}
!200 = !{!46, !14, i64 23428}
!201 = !{!46, !10, i64 18232}
!202 = !{!57, !10, i64 8}
!203 = !{!46, !10, i64 18260}
!204 = !{!57, !10, i64 4}
!205 = !{!46, !10, i64 18264}
!206 = !{!46, !15, i64 23600}
!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 [112 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.57 = 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.58 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.70 = 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 %1494, 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.57, ptr noundef nonnull @.str.4, i32 noundef 4013, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

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

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

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

75:                                               ; preds = %71
  tail call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.4, i32 noundef 4015, 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
  %.not982 = icmp eq i32 %81, 0
  %82 = and i32 %5, 65536
  %83 = icmp eq i32 %82, 0
  %84 = and i32 %5, 262144
  %.not983 = icmp eq i32 %84, 0
  %85 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not983, %85
  br i1 %or.cond17, label %87, label %86

86:                                               ; preds = %76
  tail call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.4, i32 noundef 4028, 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.0535.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 15384
  %95 = load float, ptr %94, align 8, !tbaa !41
  %96 = fmul float %95, 8.000000e+00
  br label %98

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

98:                                               ; preds = %97, %93
  %99 = phi float [ %96, %93 ], [ %.sroa.0536.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.0535.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.0536.0.vec.extract = extractelement <2 x float> %91, i64 0
  %106 = fcmp ogt float %.sroa.0536.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.0536.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.0506.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 18260
  %126 = getelementptr inbounds i8, ptr %77, i64 18268
  %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 14636
  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 16056
  %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.0506.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
  %.not984 = icmp eq i32 %153, 0
  br i1 %.not984, 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 18268
  %158 = load i32, ptr %157, align 4, !tbaa !94
  br label %159

159:                                              ; preds = %136, %156
  %.1899 = phi i32 [ %127, %136 ], [ %158, %156 ]
  %.sroa.0506.2 = phi float [ %150, %136 ], [ %.sroa.0506.0.copyload, %156 ]
  %.2897 = 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 19008
  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 %.1899, 256
  %166 = icmp ne i32 %165, 0
  %167 = getelementptr inbounds i8, ptr %77, i64 16152
  %168 = load i32, ptr %167, align 8, !tbaa !104
  %.not985 = icmp eq i32 %168, %90
  br i1 %.not985, label %181, label %169

169:                                              ; preds = %163
  %170 = getelementptr inbounds i8, ptr %77, i64 18612
  %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 18600
  %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 18640
  %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 %.thread1137

192:                                              ; preds = %190
  %193 = getelementptr inbounds i8, ptr %77, i64 16200
  %194 = load i32, ptr %193, align 8, !tbaa !109
  %195 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2897, i32 noundef 1)
  %196 = icmp eq i32 %194, %195
  %.pre = load i32, ptr %167, align 8, !tbaa !104
  br label %.thread1137

.thread1137:                                      ; 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 %.2897, i32 noundef 1)
  %199 = icmp eq i32 %197, %198
  br label %201

200:                                              ; preds = %187
  br i1 %68, label %201, label %206

201:                                              ; preds = %.thread1137, %200
  %202 = phi i1 [ %199, %.thread1137 ], [ false, %200 ]
  %203 = phi i1 [ %.ph, %.thread1137 ], [ false, %200 ]
  %204 = getelementptr inbounds i8, ptr %.2897, 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 %.thread1138

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.select1128 = select i1 %216, i1 true, i1 %166
  %217 = select i1 %spec.select1128, i1 true, i1 %207
  br i1 %217, label %220, label %223

.thread1138:                                      ; preds = %206
  %brmerge1139 = select i1 %188, i1 true, i1 %208
  %218 = select i1 %brmerge1139, i1 true, i1 %182
  %spec.select11281141 = select i1 %218, i1 true, i1 %166
  %219 = select i1 %spec.select11281141, i1 true, i1 %207
  br i1 %219, label %220, label %.thread1146.thread

220:                                              ; preds = %.thread1138, %210
  %spec.select11281145 = phi i1 [ %spec.select11281141, %.thread1138 ], [ %spec.select1128, %210 ]
  %221 = phi i1 [ false, %.thread1138 ], [ %215, %210 ]
  %222 = load i32, ptr %167, align 8, !tbaa !104
  %.not986 = icmp ne i32 %222, %90
  %brmerge1024 = select i1 %.not986, i1 true, i1 %221
  br i1 %brmerge1024, label %224, label %.thread1146

223:                                              ; preds = %210
  br i1 %215, label %224, label %.thread1146.thread

224:                                              ; preds = %220, %223
  %225 = phi i8 [ 1, %220 ], [ 0, %223 ]
  %spec.select11281143 = phi i1 [ %spec.select11281145, %220 ], [ false, %223 ]
  %226 = phi i1 [ %221, %220 ], [ true, %223 ]
  %227 = getelementptr inbounds i8, ptr %77, i64 19408
  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 19464
  %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 19472
  %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 19416
  %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 19424
  %240 = load i32, ptr %239, align 8, !tbaa !114
  %.not987 = icmp eq i32 %240, %229
  br i1 %.not987, label %241, label %250

241:                                              ; preds = %238
  %242 = getelementptr inbounds i8, ptr %77, i64 19480
  %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 19456
  %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
  %.not988 = icmp eq i32 %249, 0
  br i1 %.not988, label %251, label %250

250:                                              ; preds = %245, %238
  br label %251

251:                                              ; preds = %250, %245, %241, %224
  %.0912.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 19432
  %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 19448
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %254, i32 noundef 0)
  %255 = getelementptr inbounds i8, ptr %77, i64 19480
  store i8 0, ptr %255, align 8, !tbaa !115
  %256 = getelementptr inbounds i8, ptr %77, i64 19440
  %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 19420
  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 19424
  store i32 %264, ptr %265, align 8, !tbaa !114
  br i1 %.0912.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 19488
  store float 0.000000e+00, ptr %268, align 8, !tbaa !119
  %269 = getelementptr inbounds i8, ptr %77, i64 19492
  %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 %.0912.shrunk, label %277, label %281

277:                                              ; preds = %276
  %278 = getelementptr inbounds i8, ptr %77, i64 18616
  %279 = load i32, ptr %278, align 8, !tbaa !120
  %280 = and i32 %279, 4
  %.not990 = icmp eq i32 %280, 0
  br i1 %.not990, label %281, label %282

281:                                              ; preds = %277, %276
  br label %282

282:                                              ; preds = %281, %277, %273
  %.1906 = 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
  %.2907 = phi i8 [ 0, %272 ], [ 1, %288 ], [ %.1906, %284 ], [ %.1906, %283 ]
  %290 = and i32 %5, 8192
  %.not991 = icmp eq i32 %290, 0
  br i1 %.not991, label %293, label %291

291:                                              ; preds = %289
  %292 = getelementptr inbounds i8, ptr %77, i64 19504
  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 %.thread1146

.thread1146.thread:                               ; preds = %223, %.thread1138
  %294 = getelementptr inbounds i8, ptr %77, i64 121
  %295 = load i8, ptr %294, align 1, !tbaa !123, !range !38, !noundef !39
  %296 = trunc nuw i8 %295 to i1
  br label %.sink.split

.thread1146:                                      ; preds = %220, %293
  %297 = phi i8 [ %225, %293 ], [ 1, %220 ]
  %spec.select11281142 = phi i1 [ %spec.select11281143, %293 ], [ %spec.select11281145, %220 ]
  %.3908 = phi i8 [ %.2907, %293 ], [ 0, %220 ]
  %.0900 = phi ptr [ %227, %293 ], [ %164, %220 ]
  %298 = getelementptr inbounds i8, ptr %77, i64 121
  %299 = load i8, ptr %298, align 1, !tbaa !123, !range !38, !noundef !39
  %300 = trunc nuw i8 %299 to i1
  %301 = load i32, ptr %167, align 8, !tbaa !104
  %.not992 = icmp ne i32 %301, %90
  %brmerge1027.not = and i1 %spec.select11281142, %.not992
  br i1 %brmerge1027.not, label %302, label %309

302:                                              ; preds = %.thread1146
  %.not993 = icmp eq ptr %.0900, null
  br i1 %.not993, label %.critedge, label %303

303:                                              ; preds = %302
  %304 = getelementptr inbounds i8, ptr %.0900, i64 8
  %305 = load i32, ptr %304, align 8, !tbaa !113
  %306 = icmp eq i32 %305, %90
  br i1 %306, label %307, label %.critedge

.critedge:                                        ; preds = %302, %303
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.4, i32 noundef 4163, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

307:                                              ; preds = %303
  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 = %307, %.thread1146.thread
  %.ph1259 = phi i1 [ %296, %.thread1146.thread ], [ %300, %307 ]
  %.09001226.ph = phi ptr [ %164, %.thread1146.thread ], [ %.0900, %307 ]
  %.39081225.ph = phi i8 [ 0, %.thread1146.thread ], [ %.3908, %307 ]
  %.ph1260 = phi i8 [ 0, %.thread1146.thread ], [ %297, %307 ]
  %308 = load i32, ptr %167, align 8, !tbaa !104
  br label %309

309:                                              ; preds = %.sink.split, %.thread1146
  %310 = phi i1 [ %300, %.thread1146 ], [ %.ph1259, %.sink.split ]
  %.09001226 = phi ptr [ %.0900, %.thread1146 ], [ %.09001226.ph, %.sink.split ]
  %.39081225 = phi i8 [ %.3908, %.thread1146 ], [ %.39081225.ph, %.sink.split ]
  %311 = phi i8 [ %297, %.thread1146 ], [ %.ph1260, %.sink.split ]
  %312 = phi i32 [ %301, %.thread1146 ], [ %308, %.sink.split ]
  %313 = icmp eq i32 %312, %90
  br i1 %313, label %314, label %324

314:                                              ; preds = %309
  br i1 %188, label %315, label %316

315:                                              ; preds = %314
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 641, i32 noundef %90, i32 noundef 0)
  br label %316

316:                                              ; preds = %315, %314
  %317 = getelementptr inbounds i8, ptr %77, i64 18216
  %318 = load i32, ptr %317, align 8, !tbaa !124
  %brmerge1028.not = icmp eq i32 %69, 0
  %spec.select.v = select i1 %brmerge1028.not, i32 3, i32 15
  %spec.select = or i32 %318, %spec.select.v
  store i32 %spec.select, ptr %317, align 8, !tbaa !124
  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 %319, label %320

319:                                              ; preds = %316
  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 %320

320:                                              ; preds = %319, %316
  br i1 %310, label %321, label %322

321:                                              ; preds = %320
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 16384, i32 noundef %90, i32 noundef 0)
  br label %322

322:                                              ; preds = %321, %320
  %.not994 = icmp eq i32 %74, 0
  br i1 %.not994, label %324, label %323

323:                                              ; preds = %322
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 512, i32 noundef %90, i32 noundef 0)
  br label %324

324:                                              ; preds = %322, %323, %309
  %325 = load i32, ptr %167, align 8, !tbaa !104
  %326 = icmp eq i32 %325, %90
  %327 = icmp eq ptr %.09001226, null
  %or.cond5 = and i1 %327, %326
  br i1 %or.cond5, label %328, label %329

328:                                              ; preds = %324
  call void @_ZN5ImGui13ClearActiveIDEv()
  %.pre1200 = load i32, ptr %167, align 8, !tbaa !104
  br label %329

329:                                              ; preds = %328, %324
  %330 = phi i32 [ %.pre1200, %328 ], [ %325, %324 ]
  %331 = icmp eq i32 %330, %90
  br i1 %331, label %.thread1148, label %334

.thread1148:                                      ; preds = %329
  %332 = getelementptr inbounds i8, ptr %77, i64 14136
  %333 = load i8, ptr %332, align 8, !tbaa !108, !range !38, !noundef !39
  %.not1186 = xor i8 %311, 1
  %not.brmerge1030 = and i8 %333, %.not1186
  br label %337

334:                                              ; preds = %329
  %335 = icmp ne ptr %.09001226, null
  %336 = select i1 %335, i1 %207, i1 false
  br label %337

337:                                              ; preds = %.thread1148, %334
  %.09011150 = phi i8 [ 0, %334 ], [ %not.brmerge1030, %.thread1148 ]
  %338 = phi i1 [ %336, %334 ], [ true, %.thread1148 ]
  %339 = zext i1 %338 to i8
  %340 = icmp ne ptr %.09001226, null
  br i1 %340, label %341, label %.thread1151

341:                                              ; preds = %337
  %342 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br i1 %342, label %345, label %343

343:                                              ; preds = %341
  %344 = trunc i8 %.39081225 to i1
  br i1 %344, label %345, label %346

345:                                              ; preds = %343, %341
  br label %346

346:                                              ; preds = %345, %343
  %347 = phi i1 [ false, %343 ], [ %338, %345 ]
  %brmerge1031 = or i1 %338, %347
  %or.cond1126 = select i1 %80, i1 %brmerge1031, i1 false
  br i1 %or.cond1126, label %348, label %.thread1151

348:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #15
  store ptr null, ptr %19, align 8, !tbaa !40
  %349 = getelementptr inbounds i8, ptr %.09001226, i64 24
  %350 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %349, i32 noundef %350)
  %351 = getelementptr inbounds i8, ptr %.09001226, i64 32
  %352 = load ptr, ptr %351, align 8, !tbaa !117
  %353 = load i32, ptr %349, align 8, !tbaa !125
  %354 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %352, i32 noundef %353, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %19)
  %355 = getelementptr inbounds i8, ptr %.09001226, i64 12
  store i32 %354, ptr %355, align 4, !tbaa !118
  %356 = load ptr, ptr %19, align 8, !tbaa !40
  %357 = ptrtoint ptr %356 to i64
  %358 = ptrtoint ptr %2 to i64
  %359 = sub i64 %357, %358
  %360 = trunc i64 %359 to i32
  %361 = getelementptr inbounds i8, ptr %.09001226, i64 16
  store i32 %360, ptr %361, align 8, !tbaa !114
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  %362 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  %363 = and i1 %347, %362
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #15
  br label %.thread1151

.thread1151:                                      ; preds = %337, %348, %346
  %.0915.in = phi i1 [ %363, %348 ], [ %347, %346 ], [ false, %337 ]
  %.0915 = zext i1 %.0915.in to i8
  %brmerge1032 = select i1 %338, i1 true, i1 %.0915.in
  br i1 %brmerge1032, label %368, label %364

364:                                              ; preds = %.thread1151
  %365 = load i32, ptr %167, align 8, !tbaa !104
  %366 = icmp eq i32 %365, %90
  %.not = xor i1 %80, true
  %367 = and i1 %366, %.not
  %or.cond1033 = and i1 %340, %367
  br i1 %or.cond1033, label %369, label %373

368:                                              ; preds = %.thread1151
  %.not.old = xor i1 %80, true
  %or.cond9.old = and i1 %340, %.not.old
  br i1 %or.cond9.old, label %369, label %373

369:                                              ; preds = %364, %368
  %370 = getelementptr inbounds i8, ptr %.09001226, i64 72
  %371 = load i8, ptr %370, align 8, !tbaa !115, !range !38, !noundef !39
  %372 = trunc nuw i8 %371 to i1
  br label %373

373:                                              ; preds = %369, %368, %364
  %374 = phi i1 [ false, %368 ], [ false, %364 ], [ %372, %369 ]
  %.not995 = icmp eq ptr %1, null
  br i1 %.not995, label %383, label %375

375:                                              ; preds = %373
  br i1 %374, label %376, label %379

376:                                              ; preds = %375
  %377 = getelementptr inbounds i8, ptr %.09001226, i64 48
  %378 = load ptr, ptr %377, align 8, !tbaa !116
  br label %379

379:                                              ; preds = %375, %376
  %380 = phi ptr [ %378, %376 ], [ %2, %375 ]
  %381 = load i8, ptr %380, align 1, !tbaa !126
  %382 = icmp eq i8 %381, 0
  br label %383

383:                                              ; preds = %379, %373
  %384 = phi i1 [ false, %373 ], [ %382, %379 ]
  %brmerge1034 = select i1 %.not982, i1 true, i1 %384
  br i1 %brmerge1034, label %415, label %385

385:                                              ; preds = %383
  %386 = getelementptr inbounds i8, ptr %77, i64 15376
  %387 = load ptr, ptr %386, align 8, !tbaa !127
  %388 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118) %387, i16 noundef zeroext 42)
  %389 = getelementptr inbounds i8, ptr %77, i64 23136
  %390 = load ptr, ptr %386, align 8, !tbaa !127
  %391 = getelementptr inbounds i8, ptr %390, i64 20
  %392 = load float, ptr %391, align 4, !tbaa !128
  %393 = getelementptr inbounds i8, ptr %77, i64 23156
  store float %392, ptr %393, align 4, !tbaa !128
  %394 = getelementptr inbounds i8, ptr %390, i64 100
  %395 = getelementptr inbounds i8, ptr %77, i64 23236
  %396 = load <2 x float>, ptr %394, align 4, !tbaa !93
  store <2 x float> %396, ptr %395, align 4, !tbaa !93
  %397 = getelementptr inbounds i8, ptr %390, i64 108
  %398 = load float, ptr %397, align 4, !tbaa !129
  %399 = getelementptr inbounds i8, ptr %77, i64 23244
  store float %398, ptr %399, align 4, !tbaa !129
  %400 = getelementptr inbounds i8, ptr %390, i64 64
  %401 = load ptr, ptr %400, align 8, !tbaa !130
  %402 = getelementptr inbounds i8, ptr %77, i64 23200
  store ptr %401, ptr %402, align 8, !tbaa !130
  %403 = getelementptr inbounds i8, ptr %77, i64 23192
  store ptr %388, ptr %403, align 8, !tbaa !131
  %404 = getelementptr inbounds i8, ptr %388, i64 4
  %405 = load float, ptr %404, align 4, !tbaa !132
  %406 = getelementptr inbounds i8, ptr %77, i64 23152
  store float %405, ptr %406, align 8, !tbaa !134
  %407 = getelementptr inbounds i8, ptr %77, i64 23176
  %408 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %407)
  br i1 %408, label %409, label %.critedge11

409:                                              ; preds = %385
  %410 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %389)
  br i1 %410, label %411, label %.critedge11

411:                                              ; preds = %409
  %412 = getelementptr inbounds i8, ptr %77, i64 23160
  %413 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %412)
  br i1 %413, label %414, label %.critedge11

.critedge11:                                      ; preds = %409, %385, %411
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.4, i32 noundef 4231, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

414:                                              ; preds = %411
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %389)
  br label %415

415:                                              ; preds = %383, %414
  %416 = load i32, ptr %167, align 8, !tbaa !104
  %417 = icmp eq i32 %416, %90
  br i1 %417, label %418, label %583

418:                                              ; preds = %415
  br i1 %340, label %420, label %419

419:                                              ; preds = %418
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4239, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

420:                                              ; preds = %418
  %421 = getelementptr inbounds i8, ptr %.09001226, i64 16
  %422 = load i32, ptr %421, align 8, !tbaa !114
  %423 = getelementptr inbounds i8, ptr %.09001226, i64 3718
  store i8 0, ptr %423, align 2, !tbaa !135
  %424 = getelementptr inbounds i8, ptr %.09001226, i64 76
  store i32 %3, ptr %424, align 4, !tbaa !136
  %425 = getelementptr inbounds i8, ptr %.09001226, i64 3720
  store i32 %5, ptr %425, align 8, !tbaa !137
  %426 = getelementptr inbounds i8, ptr %77, i64 3588
  %427 = load i8, ptr %426, align 4, !tbaa !108, !range !38, !noundef !39
  %428 = xor i8 %427, 1
  %429 = getelementptr inbounds i8, ptr %77, i64 16165
  store i8 %428, ptr %429, align 1, !tbaa !138
  %430 = getelementptr inbounds i8, ptr %77, i64 24036
  store i32 1, ptr %430, align 4, !tbaa !139
  %431 = getelementptr inbounds i8, ptr %77, i64 3580
  %432 = load float, ptr %431, align 4, !tbaa !140
  %433 = load float, ptr %11, align 8, !tbaa !141
  %434 = fsub float %432, %433
  %435 = load float, ptr %100, align 4, !tbaa !142
  %436 = fsub float %434, %435
  %437 = getelementptr inbounds i8, ptr %.09001226, i64 80
  %438 = load float, ptr %437, align 8, !tbaa !119
  %439 = fadd float %436, %438
  br i1 %68, label %440, label %446

440:                                              ; preds = %420
  %441 = getelementptr inbounds i8, ptr %77, i64 3584
  %442 = load float, ptr %441, align 4, !tbaa !143
  %443 = getelementptr inbounds i8, ptr %.2897, i64 252
  %444 = load float, ptr %443, align 4, !tbaa !144
  %445 = fsub float %442, %444
  br label %450

446:                                              ; preds = %420
  %447 = getelementptr inbounds i8, ptr %77, i64 15384
  %448 = load float, ptr %447, align 8, !tbaa !41
  %449 = fmul float %448, 5.000000e-01
  br label %450

450:                                              ; preds = %446, %440
  %451 = phi float [ %445, %440 ], [ %449, %446 ]
  %452 = trunc i8 %.39081225 to i1
  br i1 %452, label %453, label %455

453:                                              ; preds = %450
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  %454 = getelementptr inbounds i8, ptr %.09001226, i64 3717
  store i8 1, ptr %454, align 1, !tbaa !145
  br label %530

455:                                              ; preds = %450
  br i1 %160, label %456, label %496

456:                                              ; preds = %455
  %457 = getelementptr inbounds i8, ptr %77, i64 14146
  %458 = load i16, ptr %457, align 2, !tbaa !146
  %459 = icmp ugt i16 %458, 1
  br i1 %459, label %460, label %496

460:                                              ; preds = %456
  %461 = getelementptr inbounds i8, ptr %77, i64 3605
  %462 = load i8, ptr %461, align 1, !tbaa !147, !range !38, !noundef !39
  %463 = trunc nuw i8 %462 to i1
  br i1 %463, label %496, label %464

464:                                              ; preds = %460
  %465 = getelementptr inbounds i8, ptr %.09001226, i64 84
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09001226, ptr noundef nonnull %465, float noundef %439, float noundef %451)
  %466 = load i16, ptr %457, align 2, !tbaa !146
  %467 = and i16 %466, 1
  %468 = icmp eq i16 %467, 0
  %469 = load i32, ptr %465, align 4, !tbaa !148
  br i1 %468, label %470, label %486

470:                                              ; preds = %464
  %471 = icmp eq i32 %469, 0
  br i1 %471, label %476, label %472

472:                                              ; preds = %470
  %473 = add nsw i32 %469, -1
  %474 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09001226, i32 noundef %473)
  %475 = icmp eq i16 %474, 10
  br label %476

476:                                              ; preds = %472, %470
  %477 = phi i1 [ true, %470 ], [ %475, %472 ]
  %478 = getelementptr inbounds i8, ptr %.09001226, i64 88
  %479 = load i32, ptr %478, align 4, !tbaa !149
  %480 = getelementptr inbounds i8, ptr %.09001226, i64 92
  %481 = load i32, ptr %480, align 4, !tbaa !150
  %.not996 = icmp eq i32 %479, %481
  %brmerge1036.not = and i1 %477, %.not996
  br i1 %brmerge1036.not, label %.thread1234, label %482

482:                                              ; preds = %476
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef 2097164)
  %.pre1201 = load i32, ptr %478, align 4, !tbaa !149
  %.pre1202 = load i32, ptr %480, align 4, !tbaa !150
  %.not997 = icmp eq i32 %.pre1201, %.pre1202
  br i1 %.not997, label %.thread1234, label %483

.thread1234:                                      ; preds = %476, %482
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef nonnull %465)
  br label %483

483:                                              ; preds = %.thread1234, %482
  %484 = load i32, ptr %465, align 4, !tbaa !148
  %485 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef nonnull %.09001226, i32 noundef %484)
  store i32 %485, ptr %465, align 4, !tbaa !148
  store i32 %485, ptr %480, align 4, !tbaa !150
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09001226, ptr noundef nonnull %465)
  br label %495

486:                                              ; preds = %464
  %487 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09001226, i32 noundef %469)
  %488 = icmp ne i16 %487, 10
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef 2097156)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef 6291461)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef 6291457)
  %brmerge1038.not = and i1 %68, %488
  br i1 %brmerge1038.not, label %489, label %493

489:                                              ; preds = %486
  %490 = getelementptr inbounds i8, ptr %.09001226, i64 88
  %491 = getelementptr inbounds i8, ptr %.09001226, i64 92
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %490, ptr noundef nonnull align 4 dereferenceable(4) %491)
  %492 = load i32, ptr %491, align 4, !tbaa !150
  store i32 %492, ptr %465, align 4, !tbaa !148
  br label %493

493:                                              ; preds = %486, %489
  %494 = getelementptr inbounds i8, ptr %.09001226, i64 3716
  store i8 0, ptr %494, align 4, !tbaa !151
  br label %495

495:                                              ; preds = %493, %483
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br label %530

496:                                              ; preds = %460, %456, %455
  %497 = getelementptr inbounds i8, ptr %77, i64 14136
  %498 = load i8, ptr %497, align 8, !tbaa !108, !range !38, !noundef !39
  %499 = trunc nuw i8 %498 to i1
  br i1 %499, label %500, label %513

500:                                              ; preds = %496
  %501 = getelementptr inbounds i8, ptr %.09001226, i64 3717
  %502 = load i8, ptr %501, align 1, !tbaa !145, !range !38, !noundef !39
  %503 = trunc nuw i8 %502 to i1
  br i1 %503, label %513, label %504

504:                                              ; preds = %500
  br i1 %160, label %505, label %530

505:                                              ; preds = %504
  %506 = getelementptr inbounds i8, ptr %77, i64 3605
  %507 = load i8, ptr %506, align 1, !tbaa !147, !range !38, !noundef !39
  %508 = trunc nuw i8 %507 to i1
  %509 = getelementptr inbounds i8, ptr %.09001226, i64 84
  br i1 %508, label %510, label %511

510:                                              ; preds = %505
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09001226, ptr noundef nonnull %509, float noundef %439, float noundef %451)
  br label %512

511:                                              ; preds = %505
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09001226, ptr noundef nonnull %509, float noundef %439, float noundef %451)
  br label %512

512:                                              ; preds = %511, %510
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br label %530

513:                                              ; preds = %500, %496
  %514 = trunc nuw i8 %427 to i1
  br i1 %514, label %515, label %530

515:                                              ; preds = %513
  %516 = getelementptr inbounds i8, ptr %.09001226, i64 3717
  %517 = load i8, ptr %516, align 1, !tbaa !145, !range !38, !noundef !39
  %518 = trunc nuw i8 %517 to i1
  br i1 %518, label %530, label %519

519:                                              ; preds = %515
  %520 = getelementptr inbounds i8, ptr %77, i64 248
  %521 = load float, ptr %520, align 8, !tbaa !152
  %522 = fcmp une float %521, 0.000000e+00
  br i1 %522, label %527, label %523

523:                                              ; preds = %519
  %524 = getelementptr inbounds i8, ptr %77, i64 252
  %525 = load float, ptr %524, align 4, !tbaa !153
  %526 = fcmp une float %525, 0.000000e+00
  br i1 %526, label %527, label %530

527:                                              ; preds = %523, %519
  %528 = getelementptr inbounds i8, ptr %.09001226, i64 84
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09001226, ptr noundef nonnull %528, float noundef %439, float noundef %451)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  %529 = getelementptr inbounds i8, ptr %.09001226, i64 3716
  store i8 1, ptr %529, align 4, !tbaa !151
  br label %530

530:                                              ; preds = %495, %513, %515, %523, %527, %504, %512, %453
  %531 = getelementptr inbounds i8, ptr %.09001226, i64 3717
  %532 = load i8, ptr %531, align 1, !tbaa !145, !range !38, !noundef !39
  %533 = trunc nuw i8 %532 to i1
  br i1 %533, label %534, label %538

534:                                              ; preds = %530
  %535 = load i8, ptr %426, align 4, !tbaa !108, !range !38, !noundef !39
  %536 = trunc nuw i8 %535 to i1
  br i1 %536, label %538, label %537

537:                                              ; preds = %534
  store i8 0, ptr %531, align 1, !tbaa !145
  br label %538

538:                                              ; preds = %537, %534, %530
  %539 = getelementptr inbounds i8, ptr %77, i64 3604
  %540 = load i8, ptr %539, align 4, !tbaa !121, !range !38, !noundef !39
  %541 = trunc nuw i8 %540 to i1
  br i1 %541, label %542, label %547

542:                                              ; preds = %538
  %543 = getelementptr inbounds i8, ptr %77, i64 3606
  %544 = load i8, ptr %543, align 2, !tbaa !154, !range !38, !noundef !39
  %545 = trunc nuw i8 %544 to i1
  %.not1039 = xor i1 %545, true
  %546 = select i1 %545, i1 %310, i1 false
  br i1 %546, label %548, label %552

547:                                              ; preds = %538
  br i1 %310, label %548, label %552

548:                                              ; preds = %542, %547
  %549 = getelementptr inbounds i8, ptr %77, i64 3607
  %550 = load i8, ptr %549, align 1, !tbaa !155, !range !38, !noundef !39
  %551 = trunc nuw i8 %550 to i1
  br label %552

552:                                              ; preds = %542, %547, %548
  %553 = phi i1 [ %310, %542 ], [ false, %547 ], [ %310, %548 ]
  %554 = phi i1 [ %.not1039, %542 ], [ false, %547 ], [ %551, %548 ]
  br i1 %.not980, label %566, label %555

555:                                              ; preds = %552
  %556 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 512, i1 noundef zeroext true)
  %.not1042 = xor i1 %556, true
  %brmerge1043 = select i1 %.not1042, i1 true, i1 %554
  br i1 %brmerge1043, label %566, label %557

557:                                              ; preds = %555
  %558 = getelementptr inbounds i8, ptr %77, i64 3605
  %559 = load i8, ptr %558, align 1, !tbaa !147, !range !38, !noundef !39
  %560 = trunc nuw i8 %559 to i1
  %brmerge1044 = or i1 %80, %560
  br i1 %brmerge1044, label %566, label %561

561:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #15
  store i32 9, ptr %20, align 4, !tbaa !96
  %562 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %562, label %563, label %565

563:                                              ; preds = %561
  %564 = load i32, ptr %20, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %564)
  br label %565

565:                                              ; preds = %563, %561
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #15
  br label %566

566:                                              ; preds = %557, %555, %565, %552
  %567 = getelementptr inbounds i8, ptr %77, i64 14256
  %568 = load i32, ptr %567, align 8, !tbaa !156
  %569 = icmp sgt i32 %568, 0
  br i1 %569, label %570, label %583

570:                                              ; preds = %566
  %brmerge1045 = or i1 %80, %554
  %brmerge1046 = select i1 %brmerge1045, i1 true, i1 %182
  br i1 %brmerge1046, label %.loopexit1189, label %.lr.ph

.lr.ph:                                           ; preds = %570, %579
  %.09331190 = phi i32 [ %580, %579 ], [ 0, %570 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  %571 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %567, i32 noundef %.09331190)
  %572 = load i16, ptr %571, align 2, !tbaa !146
  %573 = zext i16 %572 to i32
  store i32 %573, ptr %21, align 4, !tbaa !96
  %574 = icmp eq i16 %572, 9
  br i1 %574, label %579, label %575

575:                                              ; preds = %.lr.ph
  %576 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %576, label %577, label %579

577:                                              ; preds = %575
  %578 = load i32, ptr %21, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %578)
  br label %579

579:                                              ; preds = %575, %577, %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  %580 = add nuw nsw i32 %.09331190, 1
  %581 = load i32, ptr %567, align 8, !tbaa !156
  %582 = icmp slt i32 %580, %581
  br i1 %582, label %.lr.ph, label %.loopexit1189, !llvm.loop !157

.loopexit1189:                                    ; preds = %579, %570
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %567, i32 noundef 0)
  br label %583

583:                                              ; preds = %566, %.loopexit1189, %415
  %584 = phi i1 [ %310, %415 ], [ %553, %.loopexit1189 ], [ %553, %566 ]
  %.0932 = phi i32 [ 0, %415 ], [ %422, %.loopexit1189 ], [ %422, %566 ]
  %585 = load i32, ptr %167, align 8, !tbaa !104
  %586 = icmp eq i32 %585, %90
  br i1 %586, label %587, label %884

587:                                              ; preds = %583
  %588 = getelementptr inbounds i8, ptr %77, i64 16164
  %589 = load i8, ptr %588, align 4, !tbaa !159, !range !38, !noundef !39
  %590 = trunc nuw i8 %589 to i1
  br i1 %590, label %.thread1237, label %591

591:                                              ; preds = %587
  %592 = trunc nuw i8 %.09011150 to i1
  br i1 %592, label %.thread1237, label %593

593:                                              ; preds = %591
  br i1 %340, label %595, label %594

594:                                              ; preds = %593
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4348, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

595:                                              ; preds = %593
  %596 = load float, ptr %101, align 4, !tbaa !91
  %597 = fsub float %.sroa.11.0.copyload, %596
  %598 = getelementptr inbounds i8, ptr %77, i64 15384
  %599 = load float, ptr %598, align 8, !tbaa !41
  %600 = fdiv float %597, %599
  %601 = fptosi float %600 to i32
  %602 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %601, i32 noundef 1)
  %603 = getelementptr inbounds i8, ptr %.09001226, i64 84
  %604 = getelementptr inbounds i8, ptr %.09001226, i64 100
  store i32 %602, ptr %604, align 4, !tbaa !160
  %605 = getelementptr inbounds i8, ptr %77, i64 3605
  %606 = load i8, ptr %605, align 1, !tbaa !147, !range !38, !noundef !39
  %607 = trunc nuw i8 %606 to i1
  %608 = select i1 %607, i32 4194304, i32 0
  %609 = getelementptr inbounds i8, ptr %77, i64 3606
  %610 = getelementptr inbounds i8, ptr %77, i64 3604
  %.in.in = select i1 %584, ptr %609, ptr %610
  %.in = load i8, ptr %.in.in, align 2, !tbaa !108, !range !38, !noundef !39
  %611 = trunc nuw i8 %.in to i1
  br i1 %584, label %612, label %623

612:                                              ; preds = %595
  %613 = getelementptr inbounds i8, ptr %77, i64 3607
  %614 = load i8, ptr %613, align 1, !tbaa !155, !range !38, !noundef !39
  %615 = trunc nuw i8 %614 to i1
  br i1 %615, label %616, label %623

616:                                              ; preds = %612
  %617 = load i8, ptr %610, align 4, !tbaa !121, !range !38, !noundef !39
  %618 = trunc nuw i8 %617 to i1
  br i1 %618, label %623, label %619

619:                                              ; preds = %616
  %620 = load i8, ptr %609, align 2, !tbaa !154, !range !38, !noundef !39
  %621 = trunc nuw i8 %620 to i1
  %622 = xor i1 %621, true
  br label %623

623:                                              ; preds = %619, %616, %612, %595
  %624 = phi i1 [ false, %616 ], [ false, %612 ], [ false, %595 ], [ %622, %619 ]
  %625 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2617, i32 noundef %90, i32 noundef 1)
  br i1 %625, label %630, label %626

626:                                              ; preds = %623
  %627 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8714, i32 noundef %90, i32 noundef 1)
  %628 = and i1 %.not982, %627
  %629 = xor i1 %628, true
  %brmerge1049 = or i1 %80, %629
  %.not1055 = xor i1 %68, true
  %brmerge1056 = or i1 %brmerge1049, %.not1055
  %not.brmerge1049 = xor i1 %brmerge1049, true
  br i1 %brmerge1056, label %633, label %631

630:                                              ; preds = %623
  %.not982.not1050 = xor i1 %.not982, true
  %brmerge1051 = or i1 %80, %.not982.not1050
  %.not1052 = xor i1 %68, true
  %brmerge1053 = or i1 %brmerge1051, %.not1052
  %not.brmerge1051 = xor i1 %brmerge1051, true
  br i1 %brmerge1053, label %633, label %631

631:                                              ; preds = %626, %630
  %632 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br label %633

633:                                              ; preds = %626, %630, %631
  %634 = phi i1 [ %not.brmerge1051, %630 ], [ %not.brmerge1049, %626 ], [ %632, %631 ]
  %635 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2596, i32 noundef %90, i32 noundef 0)
  br i1 %635, label %638, label %636

636:                                              ; preds = %633
  %637 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 4617, i32 noundef %90, i32 noundef 0)
  %brmerge1060.demorgan = and i1 %.not982, %637
  %brmerge1062.not = and i1 %68, %brmerge1060.demorgan
  br i1 %brmerge1062.not, label %640, label %642

638:                                              ; preds = %633
  %639 = and i32 %5, 67141632
  %brmerge1066.not = icmp eq i32 %639, 67108864
  br i1 %brmerge1066.not, label %640, label %642

640:                                              ; preds = %638, %636
  %641 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br label %642

642:                                              ; preds = %638, %636, %640
  %643 = phi i1 [ %.not982, %638 ], [ %brmerge1060.demorgan, %636 ], [ %641, %640 ]
  %644 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2615, i32 noundef %90, i32 noundef 1)
  br i1 %644, label %647, label %645

645:                                              ; preds = %642
  %646 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8713, i32 noundef %90, i32 noundef 1)
  br i1 %646, label %647, label %._crit_edge1214

._crit_edge1214:                                  ; preds = %645
  %.pre1215 = xor i1 %80, true
  br label %649

647:                                              ; preds = %645, %642
  %648 = xor i1 %80, true
  br label %649

649:                                              ; preds = %._crit_edge1214, %647
  %not..pre-phi = phi i1 [ %.pre1215, %._crit_edge1214 ], [ %648, %647 ]
  %650 = phi i1 [ false, %._crit_edge1214 ], [ %648, %647 ]
  %651 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2619, i32 noundef %90, i32 noundef 1)
  %spec.select1068 = and i1 %83, %not..pre-phi
  %spec.select1129 = and i1 %spec.select1068, %651
  %652 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2618, i32 noundef %90, i32 noundef 1)
  br i1 %652, label %656, label %653

653:                                              ; preds = %649
  br i1 %584, label %654, label %657

654:                                              ; preds = %653
  %655 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 10811, i32 noundef %90, i32 noundef 1)
  br i1 %655, label %656, label %657

656:                                              ; preds = %654, %649
  br label %657

657:                                              ; preds = %656, %654, %653
  %658 = phi i1 [ false, %654 ], [ false, %653 ], [ %spec.select1068, %656 ]
  %659 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2594, i32 noundef %90, i32 noundef 0)
  %660 = load i32, ptr %78, align 8, !tbaa !161
  %661 = and i32 %660, 2
  %.not998 = icmp eq i32 %661, 0
  br i1 %.not998, label %667, label %662

662:                                              ; preds = %657
  %663 = getelementptr inbounds i8, ptr %77, i64 12
  %664 = load i32, ptr %663, align 4, !tbaa !162
  %665 = and i32 %664, 1
  %666 = icmp ne i32 %665, 0
  br label %667

667:                                              ; preds = %662, %657
  %668 = phi i1 [ false, %657 ], [ %666, %662 ]
  %669 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %669, label %672, label %670

670:                                              ; preds = %667
  %671 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 615, i1 noundef zeroext true)
  br label %672

672:                                              ; preds = %670, %667
  %673 = phi i1 [ true, %667 ], [ %671, %670 ]
  br i1 %668, label %674, label %.sink.split1262

674:                                              ; preds = %672
  %675 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 622, i1 noundef zeroext false)
  br i1 %675, label %678, label %676

676:                                              ; preds = %674
  %677 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 621, i1 noundef zeroext false)
  br label %678

678:                                              ; preds = %674, %676
  %679 = phi i1 [ true, %674 ], [ %677, %676 ]
  %680 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 526, i32 noundef %90, i32 noundef 1)
  br i1 %680, label %682, label %.sink.split1262

.sink.split1262:                                  ; preds = %678, %672
  %.sink = phi i32 [ 526, %672 ], [ 620, %678 ]
  %.ph1263 = phi i1 [ false, %672 ], [ %679, %678 ]
  %681 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef %.sink, i32 noundef %90, i32 noundef 1)
  br label %682

682:                                              ; preds = %.sink.split1262, %678
  %683 = phi i1 [ %679, %678 ], [ %.ph1263, %.sink.split1262 ]
  %684 = phi i1 [ true, %678 ], [ %681, %.sink.split1262 ]
  %685 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %685, label %686, label %689

686:                                              ; preds = %682
  %687 = select i1 %611, i32 2097164, i32 2097152
  %spec.select1073 = select i1 %624, i32 2097156, i32 %687
  %688 = or disjoint i32 %spec.select1073, %608
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %688)
  br label %.thread1159

689:                                              ; preds = %682
  %690 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %690, label %691, label %694

691:                                              ; preds = %689
  %692 = select i1 %611, i32 2097165, i32 2097153
  %spec.select1074 = select i1 %624, i32 2097157, i32 %692
  %693 = or disjoint i32 %spec.select1074, %608
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %693)
  br label %.thread1159

694:                                              ; preds = %689
  %695 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  %.not1076 = xor i1 %68, true
  %brmerge1077.not = and i1 %68, %695
  br i1 %brmerge1077.not, label %696, label %708

696:                                              ; preds = %694
  %697 = load i8, ptr %610, align 4, !tbaa !121, !range !38, !noundef !39
  %698 = trunc nuw i8 %697 to i1
  br i1 %698, label %699, label %705

699:                                              ; preds = %696
  %700 = getelementptr inbounds i8, ptr %.2897, i64 128
  %701 = load float, ptr %700, align 4, !tbaa !110
  %702 = load float, ptr %598, align 8, !tbaa !41
  %703 = fsub float %701, %702
  %704 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %703, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2897, float noundef %704)
  br label %.thread1159

705:                                              ; preds = %696
  %706 = select i1 %624, i32 2097158, i32 2097154
  %707 = or disjoint i32 %706, %608
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %707)
  br label %.thread1159

708:                                              ; preds = %694
  %709 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  %brmerge1080.not = and i1 %68, %709
  br i1 %brmerge1080.not, label %710, label %723

710:                                              ; preds = %708
  %711 = load i8, ptr %610, align 4, !tbaa !121, !range !38, !noundef !39
  %712 = trunc nuw i8 %711 to i1
  br i1 %712, label %713, label %720

713:                                              ; preds = %710
  %714 = getelementptr inbounds i8, ptr %.2897, i64 128
  %715 = load float, ptr %714, align 4, !tbaa !110
  %716 = load float, ptr %598, align 8, !tbaa !41
  %717 = fadd float %715, %716
  %718 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %719 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %717, float noundef %718)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2897, float noundef %719)
  br label %.thread1159

720:                                              ; preds = %710
  %721 = select i1 %624, i32 2097159, i32 2097155
  %722 = or disjoint i32 %721, %608
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %722)
  br label %.thread1159

723:                                              ; preds = %708
  %724 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  %brmerge1083.not = and i1 %68, %724
  br i1 %brmerge1083.not, label %725, label %731

725:                                              ; preds = %723
  %726 = or disjoint i32 %608, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %726)
  %727 = sitofp i32 %602 to float
  %728 = load float, ptr %598, align 8, !tbaa !41
  %729 = fneg float %727
  %730 = call float @llvm.fmuladd.f32(float %729, float %728, float %209)
  br label %.thread1159

731:                                              ; preds = %723
  %732 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  %brmerge1086.not = and i1 %68, %732
  br i1 %brmerge1086.not, label %733, label %738

733:                                              ; preds = %731
  %734 = or disjoint i32 %608, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %734)
  %735 = sitofp i32 %602 to float
  %736 = load float, ptr %598, align 8, !tbaa !41
  %737 = call float @llvm.fmuladd.f32(float %735, float %736, float %209)
  br label %.thread1159

738:                                              ; preds = %731
  %739 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %739, label %740, label %744

740:                                              ; preds = %738
  %741 = load i8, ptr %610, align 4, !tbaa !121, !range !38, !noundef !39
  %742 = trunc nuw i8 %741 to i1
  %.v1005 = select i1 %742, i32 2097158, i32 2097156
  %743 = or disjoint i32 %.v1005, %608
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %743)
  br label %.thread1159

744:                                              ; preds = %738
  %745 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %745, label %746, label %750

746:                                              ; preds = %744
  %747 = load i8, ptr %610, align 4, !tbaa !121, !range !38, !noundef !39
  %748 = trunc nuw i8 %747 to i1
  %.v = select i1 %748, i32 2097159, i32 2097157
  %749 = or disjoint i32 %.v, %608
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %749)
  br label %.thread1159

750:                                              ; preds = %744
  %751 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  %.not1087 = xor i1 %751, true
  %brmerge1088 = or i1 %80, %.not1087
  %brmerge1089 = or i1 %634, %brmerge1088
  br i1 %brmerge1089, label %757, label %752

752:                                              ; preds = %750
  %753 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  %.not1090 = xor i1 %611, true
  %brmerge1091 = select i1 %753, i1 true, i1 %.not1090
  br i1 %brmerge1091, label %755, label %754

754:                                              ; preds = %752
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef 6291469)
  br label %755

755:                                              ; preds = %752, %754
  %756 = or disjoint i32 %608, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %756)
  br label %.thread1159

757:                                              ; preds = %750
  %758 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  %.not1092 = xor i1 %758, true
  %brmerge1093 = or i1 %80, %.not1092
  br i1 %brmerge1093, label %775, label %759

759:                                              ; preds = %757
  %760 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br i1 %760, label %773, label %761

761:                                              ; preds = %759
  br i1 %611, label %.sink.split1265, label %762

762:                                              ; preds = %761
  br i1 %584, label %763, label %773

763:                                              ; preds = %762
  %764 = getelementptr inbounds i8, ptr %77, i64 3607
  %765 = load i8, ptr %764, align 1, !tbaa !155, !range !38, !noundef !39
  %766 = trunc nuw i8 %765 to i1
  br i1 %766, label %767, label %773

767:                                              ; preds = %763
  %768 = load i8, ptr %609, align 2, !tbaa !154, !range !38, !noundef !39
  %769 = trunc nuw i8 %768 to i1
  br i1 %769, label %773, label %770

770:                                              ; preds = %767
  %771 = load i8, ptr %610, align 4, !tbaa !121, !range !38, !noundef !39
  %772 = trunc nuw i8 %771 to i1
  br i1 %772, label %773, label %.sink.split1265

.sink.split1265:                                  ; preds = %770, %761
  %.sink1266 = phi i32 [ 6291468, %761 ], [ 6291460, %770 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %.sink1266)
  br label %773

773:                                              ; preds = %.sink.split1265, %770, %767, %763, %762, %759
  %774 = or disjoint i32 %608, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %774)
  br label %.thread1159

775:                                              ; preds = %757
  %brmerge1094 = or i1 %673, %683
  br i1 %brmerge1094, label %776, label %793

776:                                              ; preds = %775
  %brmerge1096 = or i1 %683, %.not1076
  br i1 %brmerge1096, label %782, label %777

777:                                              ; preds = %776
  %778 = and i32 %5, 2048
  %.not1004 = icmp eq i32 %778, 0
  %779 = load i8, ptr %610, align 4, !tbaa !121, !range !38, !noundef !39
  %780 = trunc nuw i8 %779 to i1
  br i1 %.not1004, label %.critedge1098, label %781

781:                                              ; preds = %777
  br i1 %780, label %787, label %.thread1159

.critedge1098:                                    ; preds = %777
  br i1 %780, label %.thread1159, label %787

782:                                              ; preds = %776
  %783 = getelementptr inbounds i8, ptr %77, i64 124
  %784 = load i8, ptr %783, align 4, !tbaa !163, !range !38, !noundef !39
  %785 = trunc nuw i8 %784 to i1
  %.not1099 = xor i1 %785, true
  %brmerge1100 = or i1 %68, %.not1099
  br i1 %brmerge1100, label %.thread1159, label %786

786:                                              ; preds = %782
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br label %.thread1159

787:                                              ; preds = %781, %.critedge1098
  br i1 %80, label %.thread1159, label %788

788:                                              ; preds = %787
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  store i32 10, ptr %22, align 4, !tbaa !96
  %789 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %789, label %790, label %792

790:                                              ; preds = %788
  %791 = load i32, ptr %22, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %791)
  br label %792

792:                                              ; preds = %790, %788
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  br label %.thread1159

793:                                              ; preds = %775
  br i1 %684, label %794, label %800

794:                                              ; preds = %793
  %795 = and i32 %5, 1048576
  %.not1003 = icmp eq i32 %795, 0
  br i1 %.not1003, label %.thread1159, label %796

796:                                              ; preds = %794
  %797 = getelementptr inbounds i8, ptr %.09001226, i64 16
  %798 = load i32, ptr %797, align 8, !tbaa !114
  %799 = icmp sgt i32 %798, 0
  %.0915.in. = select i1 %799, i1 %.0915.in, i1 false
  %.1102 = select i1 %799, i8 %339, i8 0
  %.0901. = select i1 %799, i8 %.09011150, i8 1
  br label %.thread1159

800:                                              ; preds = %793
  %brmerge1103 = or i1 %spec.select1129, %658
  br i1 %brmerge1103, label %801, label %802

801:                                              ; preds = %800
  %.mux1104 = select i1 %spec.select1129, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226, i32 noundef %.mux1104)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br label %.thread1159

802:                                              ; preds = %800
  br i1 %659, label %803, label %805

803:                                              ; preds = %802
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  %804 = getelementptr inbounds i8, ptr %.09001226, i64 3716
  store i8 1, ptr %804, align 4, !tbaa !151
  br label %.thread1159

805:                                              ; preds = %802
  %brmerge1105 = or i1 %634, %643
  br i1 %brmerge1105, label %806, label %852

806:                                              ; preds = %805
  %807 = getelementptr inbounds i8, ptr %77, i64 184
  %808 = load ptr, ptr %807, align 8, !tbaa !164
  %.not1002 = icmp eq ptr %808, null
  br i1 %.not1002, label %845, label %809

809:                                              ; preds = %806
  %810 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br i1 %810, label %811, label %817

811:                                              ; preds = %809
  %812 = getelementptr inbounds i8, ptr %.09001226, i64 88
  %813 = load i32, ptr %812, align 4, !tbaa !149
  %814 = getelementptr inbounds i8, ptr %.09001226, i64 92
  %815 = load i32, ptr %814, align 4, !tbaa !150
  %816 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %813, i32 noundef %815)
  br label %817

817:                                              ; preds = %809, %811
  %818 = phi i32 [ %816, %811 ], [ 0, %809 ]
  %819 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br i1 %819, label %820, label %826

820:                                              ; preds = %817
  %821 = getelementptr inbounds i8, ptr %.09001226, i64 88
  %822 = load i32, ptr %821, align 4, !tbaa !149
  %823 = getelementptr inbounds i8, ptr %.09001226, i64 92
  %824 = load i32, ptr %823, align 4, !tbaa !150
  %825 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %822, i32 noundef %824)
  br label %829

826:                                              ; preds = %817
  %827 = getelementptr inbounds i8, ptr %.09001226, i64 12
  %828 = load i32, ptr %827, align 4, !tbaa !118
  br label %829

829:                                              ; preds = %826, %820
  %830 = phi i32 [ %825, %820 ], [ %828, %826 ]
  %831 = getelementptr inbounds i8, ptr %.09001226, i64 32
  %832 = load ptr, ptr %831, align 8, !tbaa !117
  %833 = sext i32 %818 to i64
  %834 = getelementptr inbounds i16, ptr %832, i64 %833
  %835 = sext i32 %830 to i64
  %836 = getelementptr inbounds i16, ptr %832, i64 %835
  %837 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %834, ptr noundef %836)
  %838 = add nsw i32 %837, 1
  %839 = sext i32 %838 to i64
  %840 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %839)
  %841 = load ptr, ptr %831, align 8, !tbaa !117
  %842 = getelementptr inbounds i16, ptr %841, i64 %833
  %843 = getelementptr inbounds i16, ptr %841, i64 %835
  %844 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %840, i32 noundef %838, ptr noundef %842, ptr noundef %843)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %840)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %840)
  br label %845

845:                                              ; preds = %829, %806
  br i1 %634, label %846, label %.thread1159

846:                                              ; preds = %845
  %847 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br i1 %847, label %849, label %848

848:                                              ; preds = %846
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br label %849

849:                                              ; preds = %848, %846
  %850 = getelementptr inbounds i8, ptr %.09001226, i64 3716
  store i8 1, ptr %850, align 4, !tbaa !151
  %851 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09001226, ptr noundef nonnull %603)
  br label %.thread1159

852:                                              ; preds = %805
  br i1 %650, label %853, label %.thread1159

853:                                              ; preds = %852
  %854 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not999 = icmp eq ptr %854, null
  br i1 %.not999, label %.thread1159, label %855

855:                                              ; preds = %853
  %856 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %854) #16
  %857 = shl i64 %856, 32
  %sext1000 = add i64 %857, 4294967296
  %858 = ashr exact i64 %sext1000, 31
  %859 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %858)
  %860 = load i8, ptr %854, align 1, !tbaa !126
  %.not10011191 = icmp eq i8 %860, 0
  br i1 %.not10011191, label %._crit_edge.thread, label %.lr.ph1194

._crit_edge.thread:                               ; preds = %855
  store i16 0, ptr %859, align 2, !tbaa !146
  br label %879

._crit_edge:                                      ; preds = %874
  %861 = sext i32 %.1937 to i64
  %862 = getelementptr inbounds i16, ptr %859, i64 %861
  store i16 0, ptr %862, align 2, !tbaa !146
  %863 = icmp sgt i32 %.1937, 0
  br i1 %863, label %876, label %879

.lr.ph1194:                                       ; preds = %855, %874
  %.09361193 = phi i32 [ %.1937, %874 ], [ 0, %855 ]
  %.09381192 = phi ptr [ %866, %874 ], [ %854, %855 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #15
  %864 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %23, ptr noundef nonnull %.09381192, ptr noundef null)
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds i8, ptr %.09381192, i64 %865
  %867 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %23, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 4)
  br i1 %867, label %868, label %874, !llvm.loop !165

868:                                              ; preds = %.lr.ph1194
  %869 = load i32, ptr %23, align 4, !tbaa !96
  %870 = trunc i32 %869 to i16
  %871 = add nsw i32 %.09361193, 1
  %872 = sext i32 %.09361193 to i64
  %873 = getelementptr inbounds i16, ptr %859, i64 %872
  store i16 %870, ptr %873, align 2, !tbaa !146
  br label %874

874:                                              ; preds = %.lr.ph1194, %868
  %.1937 = phi i32 [ %871, %868 ], [ %.09361193, %.lr.ph1194 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #15
  %875 = load i8, ptr %866, align 1, !tbaa !126
  %.not1001 = icmp eq i8 %875, 0
  br i1 %.not1001, label %._crit_edge, label %.lr.ph1194

876:                                              ; preds = %._crit_edge
  %877 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.09001226, ptr noundef nonnull %603, ptr noundef nonnull %859, i32 noundef %.1937)
  %878 = getelementptr inbounds i8, ptr %.09001226, i64 3716
  store i8 1, ptr %878, align 4, !tbaa !151
  br label %879

879:                                              ; preds = %._crit_edge.thread, %876, %._crit_edge
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %859)
  br label %.thread1159

.thread1159:                                      ; preds = %781, %.critedge1098, %853, %879, %794, %796, %786, %792, %787, %782, %691, %720, %713, %733, %746, %773, %803, %852, %845, %849, %801, %755, %740, %725, %699, %705, %686
  %.0934 = phi i1 [ false, %686 ], [ false, %691 ], [ false, %699 ], [ false, %705 ], [ false, %713 ], [ false, %720 ], [ false, %725 ], [ false, %733 ], [ false, %740 ], [ false, %746 ], [ false, %801 ], [ false, %803 ], [ false, %849 ], [ false, %845 ], [ false, %852 ], [ false, %773 ], [ false, %755 ], [ false, %782 ], [ false, %787 ], [ false, %792 ], [ false, %786 ], [ %799, %796 ], [ true, %794 ], [ false, %879 ], [ false, %853 ], [ false, %.critedge1098 ], [ false, %781 ]
  %.1929 = phi i8 [ 0, %686 ], [ 0, %691 ], [ 0, %699 ], [ 0, %705 ], [ 0, %713 ], [ 0, %720 ], [ 0, %725 ], [ 0, %733 ], [ 0, %740 ], [ 0, %746 ], [ 0, %801 ], [ 0, %803 ], [ 0, %849 ], [ 0, %845 ], [ 0, %852 ], [ 0, %773 ], [ 0, %755 ], [ 1, %782 ], [ 0, %787 ], [ 0, %792 ], [ 1, %786 ], [ 0, %796 ], [ 0, %794 ], [ 0, %879 ], [ 0, %853 ], [ 1, %.critedge1098 ], [ 1, %781 ]
  %.1916 = phi i1 [ %.0915.in, %686 ], [ %.0915.in, %691 ], [ %.0915.in, %699 ], [ %.0915.in, %705 ], [ %.0915.in, %713 ], [ %.0915.in, %720 ], [ %.0915.in, %725 ], [ %.0915.in, %733 ], [ %.0915.in, %740 ], [ %.0915.in, %746 ], [ %.0915.in, %801 ], [ %.0915.in, %803 ], [ %.0915.in, %849 ], [ %.0915.in, %845 ], [ %.0915.in, %852 ], [ %.0915.in, %773 ], [ %.0915.in, %755 ], [ %.0915.in, %782 ], [ %.0915.in, %787 ], [ %.0915.in, %792 ], [ %.0915.in, %786 ], [ %.0915.in., %796 ], [ false, %794 ], [ %.0915.in, %879 ], [ %.0915.in, %853 ], [ %.0915.in, %.critedge1098 ], [ %.0915.in, %781 ]
  %.0913 = phi i8 [ %339, %686 ], [ %339, %691 ], [ %339, %699 ], [ %339, %705 ], [ %339, %713 ], [ %339, %720 ], [ %339, %725 ], [ %339, %733 ], [ %339, %740 ], [ %339, %746 ], [ %339, %801 ], [ %339, %803 ], [ %339, %849 ], [ %339, %845 ], [ %339, %852 ], [ %339, %773 ], [ %339, %755 ], [ %339, %782 ], [ %339, %787 ], [ %339, %792 ], [ %339, %786 ], [ %.1102, %796 ], [ 0, %794 ], [ %339, %879 ], [ %339, %853 ], [ %339, %.critedge1098 ], [ %339, %781 ]
  %.0909 = phi float [ %209, %686 ], [ %209, %691 ], [ %209, %699 ], [ %209, %705 ], [ %209, %713 ], [ %209, %720 ], [ %730, %725 ], [ %737, %733 ], [ %209, %740 ], [ %209, %746 ], [ %209, %801 ], [ %209, %803 ], [ %209, %849 ], [ %209, %845 ], [ %209, %852 ], [ %209, %773 ], [ %209, %755 ], [ %209, %782 ], [ %209, %787 ], [ %209, %792 ], [ %209, %786 ], [ %209, %796 ], [ %209, %794 ], [ %209, %879 ], [ %209, %853 ], [ %209, %.critedge1098 ], [ %209, %781 ]
  %.2903 = phi i8 [ %.09011150, %686 ], [ %.09011150, %691 ], [ %.09011150, %699 ], [ %.09011150, %705 ], [ %.09011150, %713 ], [ %.09011150, %720 ], [ %.09011150, %725 ], [ %.09011150, %733 ], [ %.09011150, %740 ], [ %.09011150, %746 ], [ %.09011150, %801 ], [ %.09011150, %803 ], [ %.09011150, %849 ], [ %.09011150, %845 ], [ %.09011150, %852 ], [ %.09011150, %773 ], [ %.09011150, %755 ], [ 1, %782 ], [ %.09011150, %787 ], [ %.09011150, %792 ], [ %.09011150, %786 ], [ %.0901., %796 ], [ 1, %794 ], [ %.09011150, %879 ], [ %.09011150, %853 ], [ 1, %.critedge1098 ], [ 1, %781 ]
  %880 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  %881 = select i1 %880, i8 %.0913, i8 0
  %882 = zext i1 %.1916 to i8
  %883 = or i8 %881, %882
  %.pre1203 = load i32, ptr %167, align 8, !tbaa !104
  br label %884

884:                                              ; preds = %.thread1159, %583
  %885 = phi i32 [ %.pre1203, %.thread1159 ], [ %585, %583 ]
  %.1935 = phi i1 [ %.0934, %.thread1159 ], [ false, %583 ]
  %.2930 = phi i8 [ %.1929, %.thread1159 ], [ 0, %583 ]
  %.2917 = phi i8 [ %883, %.thread1159 ], [ %.0915, %583 ]
  %.1914 = phi i8 [ %.0913, %.thread1159 ], [ %339, %583 ]
  %.1910 = phi float [ %.0909, %.thread1159 ], [ %209, %583 ]
  %.3904 = phi i8 [ %.2903, %.thread1159 ], [ %.09011150, %583 ]
  %886 = icmp eq i32 %885, %90
  br i1 %886, label %.thread1237, label %.thread1177

.thread1237:                                      ; preds = %591, %587, %884
  %.39041257 = phi i8 [ %.3904, %884 ], [ %.09011150, %587 ], [ %.09011150, %591 ]
  %.19101255 = phi float [ %.1910, %884 ], [ %209, %587 ], [ %209, %591 ]
  %.19141253 = phi i8 [ %.1914, %884 ], [ %339, %587 ], [ %339, %591 ]
  %.29171251 = phi i8 [ %.2917, %884 ], [ %.0915, %587 ], [ %.0915, %591 ]
  %.29301247 = phi i8 [ %.2930, %884 ], [ 0, %587 ], [ 0, %591 ]
  %.19351246 = phi i1 [ %.1935, %884 ], [ false, %587 ], [ false, %591 ]
  br i1 %340, label %888, label %887

887:                                              ; preds = %.thread1237
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4508, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

888:                                              ; preds = %.thread1237
  %.1935.not = xor i1 %.19351246, true
  %brmerge1106 = or i1 %80, %.1935.not
  br i1 %brmerge1106, label %923, label %889

889:                                              ; preds = %888
  %890 = and i32 %5, 1048576
  %.not1006 = icmp eq i32 %890, 0
  br i1 %.not1006, label %893, label %891

891:                                              ; preds = %889
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %24) #15
  %892 = getelementptr inbounds i8, ptr %.09001226, i64 84
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.09001226, ptr noundef nonnull %892, ptr noundef nonnull %24, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %24) #15
  br label %.thread1163

893:                                              ; preds = %889
  %894 = getelementptr inbounds i8, ptr %.09001226, i64 64
  %895 = load ptr, ptr %894, align 8, !tbaa !112
  %896 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %895) #16
  %.not1007 = icmp eq i32 %896, 0
  br i1 %.not1007, label %.thread1163, label %897

897:                                              ; preds = %893
  %898 = getelementptr inbounds i8, ptr %.09001226, i64 56
  %899 = load i32, ptr %898, align 8, !tbaa !166
  %900 = add nsw i32 %899, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25)
  %901 = icmp sgt i32 %899, 1
  br i1 %901, label %902, label %915

902:                                              ; preds = %897
  %903 = zext nneg i32 %900 to i64
  %904 = getelementptr inbounds i8, ptr %895, i64 %903
  %905 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %895, ptr noundef %904)
          to label %906 unwind label %913

906:                                              ; preds = %902
  %907 = add nsw i32 %905, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %25, i32 noundef %907)
          to label %908 unwind label %913

908:                                              ; preds = %906
  %909 = getelementptr inbounds i8, ptr %25, i64 8
  %910 = load ptr, ptr %909, align 8, !tbaa !167
  %911 = load i32, ptr %25, align 8, !tbaa !168
  %912 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %910, i32 noundef %911, ptr noundef %895, ptr noundef %904, ptr noundef null)
          to label %915 unwind label %913

913:                                              ; preds = %915, %908, %906, %902
  %914 = 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 } %914

915:                                              ; preds = %908, %897
  %916 = getelementptr inbounds i8, ptr %.09001226, i64 84
  %917 = getelementptr inbounds i8, ptr %25, i64 8
  %918 = load ptr, ptr %917, align 8, !tbaa !167
  %919 = load i32, ptr %25, align 8
  %920 = add nsw i32 %919, -1
  %921 = select i1 %901, i32 %920, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.09001226, ptr noundef nonnull %916, ptr noundef %918, i32 noundef %921)
          to label %922 unwind label %913

922:                                              ; preds = %915
  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

923:                                              ; preds = %888
  br i1 %80, label %936, label %.thread1163

.thread1163:                                      ; preds = %893, %922, %891, %923
  %.09391168 = phi ptr [ null, %923 ], [ null, %893 ], [ %895, %922 ], [ @.str, %891 ]
  %.09421166 = phi i32 [ 0, %923 ], [ 0, %893 ], [ %900, %922 ], [ 0, %891 ]
  %924 = getelementptr inbounds i8, ptr %.09001226, i64 72
  store i8 1, ptr %924, align 8, !tbaa !115
  %925 = getelementptr inbounds i8, ptr %.09001226, i64 40
  %926 = getelementptr inbounds i8, ptr %.09001226, i64 24
  %927 = load i32, ptr %926, align 8, !tbaa !125
  %928 = shl nsw i32 %927, 2
  %929 = or disjoint i32 %928, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %925, i32 noundef %929)
  %930 = getelementptr inbounds i8, ptr %.09001226, i64 48
  %931 = load ptr, ptr %930, align 8, !tbaa !116
  %932 = load i32, ptr %925, align 8, !tbaa !169
  %933 = getelementptr inbounds i8, ptr %.09001226, i64 32
  %934 = load ptr, ptr %933, align 8, !tbaa !117
  %935 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %931, i32 noundef %932, ptr noundef %934, ptr noundef null)
  br label %936

936:                                              ; preds = %.thread1163, %923
  %.09391169 = phi ptr [ %.09391168, %.thread1163 ], [ null, %923 ]
  %.09421167 = phi i32 [ %.09421166, %.thread1163 ], [ 0, %923 ]
  br i1 %.19351246, label %937, label %.critedge1108

937:                                              ; preds = %936
  %938 = trunc nuw i8 %.29301247 to i1
  %939 = and i32 %5, 32
  %940 = icmp ne i32 %939, 0
  %941 = and i1 %940, %938
  br i1 %941, label %.critedge1108, label %1087

.critedge1108:                                    ; preds = %936, %937
  %942 = and i32 %5, 524736
  %.not1008 = icmp eq i32 %942, 0
  br i1 %.not1008, label %1079, label %943

943:                                              ; preds = %.critedge1108
  br i1 %85, label %945, label %944

944:                                              ; preds = %943
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.4, i32 noundef 4557, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

945:                                              ; preds = %943
  br i1 %.not979, label %948, label %946

946:                                              ; preds = %945
  %947 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 512, i1 noundef zeroext true)
  br i1 %947, label %.thread1171, label %948

948:                                              ; preds = %946, %945
  br i1 %.not977.not, label %.critedge1110, label %949

949:                                              ; preds = %948
  %950 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %950, label %.thread1171, label %951

951:                                              ; preds = %949
  %952 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %952, label %.thread1171, label %.critedge1110

.critedge1110:                                    ; preds = %948, %951
  %953 = and i32 %5, 524288
  %.not1009 = icmp eq i32 %953, 0
  br i1 %.not1009, label %958, label %954

954:                                              ; preds = %.critedge1110
  %955 = getelementptr inbounds i8, ptr %.09001226, i64 3718
  %956 = load i8, ptr %955, align 2, !tbaa !135, !range !38, !noundef !39
  %957 = trunc nuw i8 %956 to i1
  br i1 %957, label %.thread1171, label %958

958:                                              ; preds = %.critedge1110, %954
  %959 = and i32 %5, 256
  %.not1010 = icmp eq i32 %959, 0
  br i1 %.not1010, label %1079, label %.thread1171

.thread1171:                                      ; preds = %954, %951, %949, %946, %958
  %.09461176 = phi i32 [ 256, %958 ], [ 524288, %954 ], [ 128, %951 ], [ 128, %949 ], [ 64, %946 ]
  %.09471175 = phi i32 [ 0, %958 ], [ 0, %954 ], [ 516, %951 ], [ 515, %949 ], [ 512, %946 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %26) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %26)
  %960 = getelementptr inbounds i8, ptr %26, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %960, i8 0, i64 40, i1 false)
  store i32 %.09461176, ptr %26, align 8, !tbaa !170
  %961 = getelementptr inbounds i8, ptr %26, i64 4
  store i32 %5, ptr %961, align 4, !tbaa !173
  %962 = getelementptr inbounds i8, ptr %26, i64 8
  store ptr %7, ptr %962, align 8, !tbaa !174
  br i1 %80, label %966, label %963

963:                                              ; preds = %.thread1171
  %964 = getelementptr inbounds i8, ptr %.09001226, i64 48
  %965 = load ptr, ptr %964, align 8, !tbaa !116
  br label %966

966:                                              ; preds = %.thread1171, %963
  %967 = phi ptr [ %965, %963 ], [ %2, %.thread1171 ]
  %968 = getelementptr inbounds i8, ptr %26, i64 20
  store i32 %.09471175, ptr %968, align 4, !tbaa !175
  %969 = getelementptr inbounds i8, ptr %26, i64 24
  store ptr %967, ptr %969, align 8, !tbaa !176
  %970 = getelementptr inbounds i8, ptr %.09001226, i64 16
  %971 = load i32, ptr %970, align 8, !tbaa !114
  %972 = getelementptr inbounds i8, ptr %26, i64 32
  store i32 %971, ptr %972, align 8, !tbaa !177
  %973 = getelementptr inbounds i8, ptr %.09001226, i64 76
  %974 = load i32, ptr %973, align 4, !tbaa !136
  %975 = getelementptr inbounds i8, ptr %26, i64 36
  store i32 %974, ptr %975, align 4, !tbaa !178
  %976 = getelementptr inbounds i8, ptr %26, i64 40
  %977 = getelementptr inbounds i8, ptr %.09001226, i64 24
  %978 = getelementptr inbounds i8, ptr %.09001226, i64 32
  %979 = load ptr, ptr %978, align 8, !tbaa !117
  %980 = getelementptr inbounds i8, ptr %.09001226, i64 84
  %981 = load i32, ptr %980, align 4, !tbaa !148
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds i16, ptr %979, i64 %982
  %984 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %979, ptr noundef %983)
  %985 = getelementptr inbounds i8, ptr %26, i64 44
  store i32 %984, ptr %985, align 4, !tbaa !179
  %986 = getelementptr inbounds i8, ptr %.09001226, i64 88
  %987 = load i32, ptr %986, align 4, !tbaa !149
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds i16, ptr %979, i64 %988
  %990 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %979, ptr noundef %989)
  %991 = getelementptr inbounds i8, ptr %26, i64 48
  store i32 %990, ptr %991, align 8, !tbaa !180
  %992 = getelementptr inbounds i8, ptr %.09001226, i64 92
  %993 = load i32, ptr %992, align 4, !tbaa !150
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds i16, ptr %979, i64 %994
  %996 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %979, ptr noundef %995)
  %997 = getelementptr inbounds i8, ptr %26, i64 52
  store i32 %996, ptr %997, align 4, !tbaa !181
  %998 = call noundef i32 %6(ptr noundef nonnull %26)
  br i1 %80, label %1002, label %999

999:                                              ; preds = %966
  %1000 = getelementptr inbounds i8, ptr %.09001226, i64 48
  %1001 = load ptr, ptr %1000, align 8, !tbaa !116
  br label %1002

1002:                                             ; preds = %966, %999
  %1003 = phi ptr [ %1001, %999 ], [ %2, %966 ]
  %1004 = load ptr, ptr %969, align 8, !tbaa !176
  %1005 = icmp eq ptr %1004, %1003
  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 4612, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1007:                                             ; preds = %1002
  %1008 = load i32, ptr %975, align 4, !tbaa !178
  %1009 = load i32, ptr %973, align 4, !tbaa !136
  %1010 = icmp eq i32 %1008, %1009
  br i1 %1010, label %1012, label %1011

1011:                                             ; preds = %1007
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.4, i32 noundef 4613, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1012:                                             ; preds = %1007
  %1013 = load i32, ptr %961, align 4, !tbaa !173
  %1014 = icmp eq i32 %1013, %5
  br i1 %1014, label %1016, label %1015

1015:                                             ; preds = %1012
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.4, i32 noundef 4614, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1016:                                             ; preds = %1012
  %1017 = load i8, ptr %976, align 8, !tbaa !182, !range !38, !noundef !39
  %1018 = trunc nuw i8 %1017 to i1
  %1019 = load i32, ptr %985, align 4, !tbaa !179
  %.not1012 = icmp ne i32 %1019, %984
  %brmerge1113 = select i1 %.not1012, i1 true, i1 %1018
  br i1 %brmerge1113, label %1020, label %1025

1020:                                             ; preds = %1016
  %1021 = sext i32 %1019 to i64
  %1022 = getelementptr inbounds i8, ptr %1004, i64 %1021
  %1023 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1004, ptr noundef %1022)
  store i32 %1023, ptr %980, align 4, !tbaa !148
  %1024 = getelementptr inbounds i8, ptr %.09001226, i64 3716
  store i8 1, ptr %1024, align 4, !tbaa !151
  br label %1025

1025:                                             ; preds = %1016, %1020
  %1026 = load i32, ptr %991, align 8, !tbaa !180
  %.not1013 = icmp ne i32 %1026, %990
  %brmerge1114 = select i1 %.not1013, i1 true, i1 %1018
  br i1 %brmerge1114, label %1027, label %1039

1027:                                             ; preds = %1025
  %1028 = load i32, ptr %985, align 4, !tbaa !179
  %1029 = icmp eq i32 %1026, %1028
  br i1 %1029, label %1030, label %1032

1030:                                             ; preds = %1027
  %1031 = load i32, ptr %980, align 4, !tbaa !148
  br label %1037

1032:                                             ; preds = %1027
  %1033 = load ptr, ptr %969, align 8, !tbaa !176
  %1034 = sext i32 %1026 to i64
  %1035 = getelementptr inbounds i8, ptr %1033, i64 %1034
  %1036 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1033, ptr noundef %1035)
  br label %1037

1037:                                             ; preds = %1032, %1030
  %1038 = phi i32 [ %1031, %1030 ], [ %1036, %1032 ]
  store i32 %1038, ptr %986, align 4, !tbaa !149
  br label %1039

1039:                                             ; preds = %1025, %1037
  %1040 = load i32, ptr %997, align 4, !tbaa !181
  %.not1014 = icmp ne i32 %1040, %996
  %brmerge1115 = select i1 %.not1014, i1 true, i1 %1018
  br i1 %brmerge1115, label %1041, label %1053

1041:                                             ; preds = %1039
  %1042 = load i32, ptr %991, align 8, !tbaa !180
  %1043 = icmp eq i32 %1040, %1042
  br i1 %1043, label %1044, label %1046

1044:                                             ; preds = %1041
  %1045 = load i32, ptr %986, align 4, !tbaa !149
  br label %1051

1046:                                             ; preds = %1041
  %1047 = load ptr, ptr %969, align 8, !tbaa !176
  %1048 = sext i32 %1040 to i64
  %1049 = getelementptr inbounds i8, ptr %1047, i64 %1048
  %1050 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1047, ptr noundef %1049)
  br label %1051

1051:                                             ; preds = %1046, %1044
  %1052 = phi i32 [ %1045, %1044 ], [ %1050, %1046 ]
  store i32 %1052, ptr %992, align 4, !tbaa !150
  br label %1053

1053:                                             ; preds = %1039, %1051
  br i1 %1018, label %1054, label %1078

1054:                                             ; preds = %1053
  %1055 = icmp eq i32 %79, 0
  br i1 %1055, label %1057, label %1056

1056:                                             ; preds = %1054
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.4, i32 noundef 4621, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1057:                                             ; preds = %1054
  %1058 = load i32, ptr %972, align 8, !tbaa !177
  %1059 = load ptr, ptr %969, align 8, !tbaa !176
  %1060 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1059) #16
  %1061 = trunc i64 %1060 to i32
  %1062 = icmp eq i32 %1058, %1061
  br i1 %1062, label %1064, label %1063

1063:                                             ; preds = %1057
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.4, i32 noundef 4622, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1064:                                             ; preds = %1057
  call void @_ZL44InputTextReconcileUndoStateAfterUserCallbackP19ImGuiInputTextStatePKci(ptr noundef nonnull %.09001226, ptr noundef %1059, i32 noundef %1058)
  %1065 = load i32, ptr %972, align 8, !tbaa !177
  %1066 = icmp sle i32 %1065, %.0932
  %brmerge1117 = or i1 %.not983, %1066
  br i1 %brmerge1117, label %1071, label %1067

1067:                                             ; preds = %1064
  %1068 = load i32, ptr %977, align 8, !tbaa !125
  %1069 = sub i32 %1065, %.0932
  %1070 = add nsw i32 %1069, %1068
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %977, i32 noundef %1070)
  br label %1071

1071:                                             ; preds = %1064, %1067
  %1072 = load ptr, ptr %978, align 8, !tbaa !117
  %1073 = load i32, ptr %977, align 8, !tbaa !125
  %1074 = load ptr, ptr %969, align 8, !tbaa !176
  %1075 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1072, i32 noundef %1073, ptr noundef %1074, ptr noundef null, ptr noundef null)
  %1076 = getelementptr inbounds i8, ptr %.09001226, i64 12
  store i32 %1075, ptr %1076, align 4, !tbaa !118
  %1077 = load i32, ptr %972, align 8, !tbaa !177
  store i32 %1077, ptr %970, align 8, !tbaa !114
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09001226)
  br label %1078

1078:                                             ; preds = %1071, %1053
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %26) #15
  br label %1079

1079:                                             ; preds = %958, %1078, %.critedge1108
  br i1 %80, label %1087, label %1080

1080:                                             ; preds = %1079
  %1081 = getelementptr inbounds i8, ptr %.09001226, i64 48
  %1082 = load ptr, ptr %1081, align 8, !tbaa !116
  %1083 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1082, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not1015 = icmp eq i32 %1083, 0
  br i1 %.not1015, label %1087, label %1084

1084:                                             ; preds = %1080
  %1085 = getelementptr inbounds i8, ptr %.09001226, i64 16
  %1086 = load i32, ptr %1085, align 8, !tbaa !114
  br label %1087

1087:                                             ; preds = %937, %1084, %1080, %1079
  %.2944 = phi i32 [ %.09421167, %1079 ], [ %1086, %1084 ], [ %.09421167, %1080 ], [ %.09421167, %937 ]
  %.2941 = phi ptr [ %.09391169, %1079 ], [ %1082, %1084 ], [ %.09391169, %1080 ], [ %.09391169, %937 ]
  %.not1016.not = icmp eq ptr %.2941, null
  br i1 %.not1016.not, label %.thread1177, label %1088

1088:                                             ; preds = %1087
  %1089 = icmp sgt i32 %.2944, -1
  br i1 %1089, label %1091, label %1090

1090:                                             ; preds = %1088
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.4, i32 noundef 4648, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1091:                                             ; preds = %1088
  br i1 %.not983, label %1108, label %1092

1092:                                             ; preds = %1091
  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
  %1093 = getelementptr inbounds i8, ptr %27, i64 4
  store i32 %5, ptr %1093, align 4, !tbaa !173
  %1094 = getelementptr inbounds i8, ptr %27, i64 24
  store ptr %2, ptr %1094, align 8, !tbaa !176
  %1095 = getelementptr inbounds i8, ptr %27, i64 32
  store i32 %.2944, ptr %1095, align 8, !tbaa !177
  %1096 = add nuw nsw i32 %.2944, 1
  %1097 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1096)
  %1098 = getelementptr inbounds i8, ptr %27, i64 36
  store i32 %1097, ptr %1098, align 4, !tbaa !178
  %1099 = getelementptr inbounds i8, ptr %27, i64 8
  store ptr %7, ptr %1099, align 8, !tbaa !174
  %1100 = call noundef i32 %6(ptr noundef nonnull %27)
  %1101 = load ptr, ptr %1094, align 8, !tbaa !176
  %1102 = load i32, ptr %1098, align 4, !tbaa !178
  %1103 = load i32, ptr %1095, align 8, !tbaa !177
  %1104 = add nsw i32 %1102, -1
  %1105 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1103, i32 noundef %1104)
  %.not1017 = icmp sgt i32 %1105, %1102
  br i1 %.not1017, label %1106, label %1107

1106:                                             ; preds = %1092
  call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.4, i32 noundef 4662, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1107:                                             ; preds = %1092
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #15
  br label %1108

1108:                                             ; preds = %1107, %1091
  %.3945 = phi i32 [ %1105, %1107 ], [ %.2944, %1091 ]
  %.0892 = phi i32 [ %1102, %1107 ], [ %3, %1091 ]
  %.0890 = phi ptr [ %1101, %1107 ], [ %2, %1091 ]
  %1109 = add nsw i32 %.3945, 1
  %1110 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1109, i32 noundef %.0892)
  %1111 = sext i32 %1110 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0890, ptr noundef nonnull %.2941, i64 noundef %1111)
  br label %.thread1177

.thread1177:                                      ; preds = %884, %1108, %1087
  %.39041256 = phi i8 [ %.39041257, %1108 ], [ %.39041257, %1087 ], [ %.3904, %884 ]
  %.19101254 = phi float [ %.19101255, %1108 ], [ %.19101255, %1087 ], [ %.1910, %884 ]
  %.19141252 = phi i8 [ %.19141253, %1108 ], [ %.19141253, %1087 ], [ %.1914, %884 ]
  %.29171250 = phi i8 [ %.29171251, %1108 ], [ %.29171251, %1087 ], [ %.2917, %884 ]
  %.29301248 = phi i8 [ %.29301247, %1108 ], [ %.29301247, %1087 ], [ %.2930, %884 ]
  %.not10161181 = phi i1 [ true, %1108 ], [ false, %1087 ], [ false, %884 ]
  %.1891 = phi ptr [ %.0890, %1108 ], [ %2, %1087 ], [ %2, %884 ]
  %1112 = trunc nuw i8 %.39041256 to i1
  br i1 %1112, label %1113, label %1117

1113:                                             ; preds = %.thread1177
  %1114 = load i32, ptr %167, align 8, !tbaa !104
  %1115 = icmp eq i32 %1114, %90
  br i1 %1115, label %1116, label %1117

1116:                                             ; preds = %1113
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1117

1117:                                             ; preds = %1116, %1113, %.thread1177
  br i1 %68, label %1123, label %1118

1118:                                             ; preds = %1117
  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
  %1119 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %1119, align 8
  %1120 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1121 = getelementptr inbounds i8, ptr %77, i64 14372
  %1122 = load float, ptr %1121, align 4, !tbaa !97
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %1120, i1 noundef zeroext true, float noundef %1122)
  br label %1123

1123:                                             ; preds = %1118, %1117
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #15
  %1124 = load float, ptr %11, align 8, !tbaa !141
  %1125 = getelementptr inbounds i8, ptr %11, i64 4
  %1126 = load float, ptr %1125, align 4, !tbaa !183
  %1127 = fadd float %.sroa.0506.2, %1124
  %1128 = fadd float %.sroa.11.0.copyload, %1126
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef %1124, float noundef %1126, float noundef %1127, float noundef %1128)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  br i1 %68, label %1129, label %1132

1129:                                             ; preds = %1123
  %1130 = getelementptr inbounds i8, ptr %.2897, i64 248
  %1131 = load i64, ptr %1130, align 8
  br label %1135

1132:                                             ; preds = %1123
  %1133 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %100)
  %1134 = bitcast <2 x float> %1133 to i64
  br label %1135

1135:                                             ; preds = %1132, %1129
  %storemerge = phi i64 [ %1131, %1129 ], [ %1134, %1132 ]
  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 %374, label %1136, label %1139

1136:                                             ; preds = %1135
  %1137 = getelementptr inbounds i8, ptr %.09001226, i64 48
  %1138 = load ptr, ptr %1137, align 8, !tbaa !116
  br label %1139

1139:                                             ; preds = %1135, %1136
  %1140 = phi ptr [ %1138, %1136 ], [ %.1891, %1135 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #15
  store ptr null, ptr %31, align 8, !tbaa !40
  br i1 %384, label %1141, label %1144

1141:                                             ; preds = %1139
  %1142 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1143 = getelementptr inbounds i8, ptr %1, i64 %1142
  store ptr %1143, ptr %31, align 8, !tbaa !40
  br label %1144

1144:                                             ; preds = %1141, %1139
  %1145 = phi ptr [ %1143, %1141 ], [ null, %1139 ]
  %.0931 = phi ptr [ %1, %1141 ], [ %1140, %1139 ]
  %1146 = trunc nuw i8 %.19141252 to i1
  br i1 %1146, label %1149, label %1147

1147:                                             ; preds = %1144
  %1148 = trunc nuw i8 %.29171250 to i1
  br i1 %1148, label %1149, label %1411

1149:                                             ; preds = %1147, %1144
  br i1 %340, label %1151, label %1150

1150:                                             ; preds = %1149
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4702, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1151:                                             ; preds = %1149
  br i1 %384, label %1157, label %1152

1152:                                             ; preds = %1151
  %1153 = getelementptr inbounds i8, ptr %.09001226, i64 16
  %1154 = load i32, ptr %1153, align 8, !tbaa !114
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds i8, ptr %.0931, i64 %1155
  store ptr %1156, ptr %31, align 8, !tbaa !40
  br label %1157

1157:                                             ; preds = %1152, %1151
  %.pre12091211 = phi ptr [ %1156, %1152 ], [ %1145, %1151 ]
  %1158 = getelementptr inbounds i8, ptr %.09001226, i64 32
  %1159 = load ptr, ptr %1158, 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 %1146, label %1160, label %1165

1160:                                             ; preds = %1157
  %1161 = getelementptr inbounds i8, ptr %.09001226, i64 84
  %1162 = load i32, ptr %1161, align 4, !tbaa !148
  %1163 = sext i32 %1162 to i64
  %1164 = getelementptr inbounds i16, ptr %1159, i64 %1163
  br label %1165

1165:                                             ; preds = %1160, %1157
  %.sroa.069.0 = phi ptr [ %1164, %1160 ], [ null, %1157 ]
  %.sroa.063.0 = phi i32 [ -1, %1160 ], [ %.sroa.063.0.copyload, %1157 ]
  %.0923 = phi i32 [ 1, %1160 ], [ 0, %1157 ]
  %1166 = trunc nuw i8 %.29171250 to i1
  br i1 %1166, label %1167, label %1176

1167:                                             ; preds = %1165
  %1168 = getelementptr inbounds i8, ptr %.09001226, i64 88
  %1169 = load i32, ptr %1168, align 4, !tbaa !149
  %1170 = getelementptr inbounds i8, ptr %.09001226, i64 92
  %1171 = load i32, ptr %1170, align 4, !tbaa !150
  %1172 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1169, i32 noundef %1171)
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds i16, ptr %1159, i64 %1173
  %1175 = add nuw nsw i32 %.0923, 1
  br label %1176

1176:                                             ; preds = %1167, %1165
  %.sroa.7.0 = phi ptr [ %1174, %1167 ], [ null, %1165 ]
  %.sroa.9.0 = phi i32 [ -1, %1167 ], [ %.sroa.9.0.copyload, %1165 ]
  %.1924 = phi i32 [ %1175, %1167 ], [ %.0923, %1165 ]
  %.lobit = lshr exact i32 %67, 26
  %1177 = add nuw nsw i32 %.1924, %.lobit
  br label %1178

1178:                                             ; preds = %1193, %1176
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1176 ], [ %.sroa.9.2, %1193 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1176 ], [ %.sroa.063.3, %1193 ]
  %.2925 = phi i32 [ %1177, %1176 ], [ %.4927, %1193 ]
  %.0920 = phi i32 [ 0, %1176 ], [ %.1921, %1193 ]
  %.0919 = phi ptr [ %1159, %1176 ], [ %1194, %1193 ]
  %1179 = load i16, ptr %.0919, align 2, !tbaa !146
  switch i16 %1179, label %1193 [
    i16 0, label %1195
    i16 10, label %1180
  ]

1180:                                             ; preds = %1178
  %1181 = add nsw i32 %.0920, 1
  %1182 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1182, label %1183, label %1187

1183:                                             ; preds = %1180
  %.not1019 = icmp ult ptr %.0919, %.sroa.069.0
  br i1 %.not1019, label %1187, label %1184

1184:                                             ; preds = %1183
  %1185 = add nsw i32 %.2925, -1
  %1186 = icmp slt i32 %.2925, 2
  br i1 %1186, label %1195, label %1187

1187:                                             ; preds = %1184, %1183, %1180
  %.sroa.063.2 = phi i32 [ %1181, %1184 ], [ -1, %1183 ], [ %.sroa.063.1, %1180 ]
  %.3926 = phi i32 [ %1185, %1184 ], [ %.2925, %1183 ], [ %.2925, %1180 ]
  %1188 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1188, label %1189, label %1193

1189:                                             ; preds = %1187
  %.not1020 = icmp ult ptr %.0919, %.sroa.7.0
  br i1 %.not1020, label %1193, label %1190

1190:                                             ; preds = %1189
  %1191 = add nsw i32 %.3926, -1
  %1192 = icmp slt i32 %.3926, 2
  br i1 %1192, label %1195, label %1193

1193:                                             ; preds = %1178, %1190, %1189, %1187
  %.sroa.9.2 = phi i32 [ %1181, %1190 ], [ -1, %1189 ], [ %.sroa.9.1, %1187 ], [ %.sroa.9.1, %1178 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1190 ], [ %.sroa.063.2, %1189 ], [ %.sroa.063.2, %1187 ], [ %.sroa.063.1, %1178 ]
  %.4927 = phi i32 [ %1191, %1190 ], [ %.3926, %1189 ], [ %.3926, %1187 ], [ %.2925, %1178 ]
  %.1921 = phi i32 [ %1181, %1190 ], [ %1181, %1189 ], [ %1181, %1187 ], [ %.0920, %1178 ]
  %1194 = getelementptr inbounds i8, ptr %.0919, i64 2
  br label %1178, !llvm.loop !184

1195:                                             ; preds = %1190, %1184, %1178
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1178 ], [ %.sroa.9.1, %1184 ], [ %1181, %1190 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1178 ], [ %1181, %1184 ], [ %.sroa.063.2, %1190 ]
  %.2922 = phi i32 [ %.0920, %1178 ], [ %1181, %1184 ], [ %1181, %1190 ]
  %1196 = add nsw i32 %.2922, 1
  %1197 = icmp eq i32 %.sroa.063.4, -1
  %spec.select1118 = select i1 %1197, i32 %1196, i32 %.sroa.063.4
  %1198 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1198, i32 %1196, i32 %.sroa.9.3
  %1199 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1159)
  %1200 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %77, ptr noundef %1199, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1200, i64 0
  store float %.sroa.045.0.vec.extract, ptr %32, align 4, !tbaa !185
  %1201 = sitofp i32 %spec.select1118 to float
  %1202 = getelementptr inbounds i8, ptr %77, i64 15384
  %1203 = load float, ptr %1202, align 8, !tbaa !41
  %1204 = fmul float %1203, %1201
  %1205 = getelementptr inbounds i8, ptr %32, i64 4
  store float %1204, ptr %1205, align 4, !tbaa !186
  %1206 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1206, label %1207, label %1214

1207:                                             ; preds = %1195
  %1208 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1159)
  %1209 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %77, ptr noundef %1208, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1209, i64 0
  store float %.sroa.044.0.vec.extract, ptr %33, align 4, !tbaa !185
  %1210 = uitofp nneg i32 %.sroa.9.4 to float
  %1211 = load float, ptr %1202, align 8, !tbaa !41
  %1212 = fmul float %1211, %1210
  %1213 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1212, ptr %1213, align 4, !tbaa !186
  br label %1214

1214:                                             ; preds = %1207, %1195
  %1215 = phi float [ %1211, %1207 ], [ %1203, %1195 ]
  br i1 %68, label %1216, label %1220

1216:                                             ; preds = %1214
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #15
  %1217 = sitofp i32 %1196 to float
  %1218 = fmul float %1215, %1217
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %.sroa.0506.2, float noundef %1218)
  %1219 = load i64, ptr %34, align 8
  store i64 %1219, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #15
  br label %1220

1220:                                             ; preds = %1216, %1214
  br i1 %1146, label %1221, label %1281

1221:                                             ; preds = %1220
  %1222 = getelementptr inbounds i8, ptr %.09001226, i64 3716
  %1223 = load i8, ptr %1222, align 4, !tbaa !151, !range !38, !noundef !39
  %1224 = trunc nuw i8 %1223 to i1
  br i1 %1224, label %1225, label %1281

1225:                                             ; preds = %1221
  %1226 = and i32 %5, 4096
  %.not1021 = icmp eq i32 %1226, 0
  br i1 %.not1021, label %1227, label %1247

1227:                                             ; preds = %1225
  %1228 = fmul float %.sroa.0506.2, 2.500000e-01
  %1229 = load float, ptr %32, align 4, !tbaa !185
  %1230 = getelementptr inbounds i8, ptr %.09001226, i64 80
  %1231 = load float, ptr %1230, align 8, !tbaa !119
  %1232 = fcmp olt float %1229, %1231
  br i1 %1232, label %1233, label %1238

1233:                                             ; preds = %1227
  %1234 = fsub float %1229, %1228
  %1235 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1234)
  %1236 = fptosi float %1235 to i32
  %1237 = sitofp i32 %1236 to float
  store float %1237, ptr %1230, align 8, !tbaa !119
  br label %1249

1238:                                             ; preds = %1227
  %1239 = load float, ptr %100, align 4, !tbaa !142
  %1240 = fsub float %.sroa.0506.2, %1239
  %1241 = fsub float %1229, %1240
  %1242 = fcmp ult float %1241, %1231
  br i1 %1242, label %1249, label %1243

1243:                                             ; preds = %1238
  %1244 = fadd float %1228, %1241
  %1245 = fptosi float %1244 to i32
  %1246 = sitofp i32 %1245 to float
  store float %1246, ptr %1230, align 8, !tbaa !119
  br label %1249

1247:                                             ; preds = %1225
  %1248 = getelementptr inbounds i8, ptr %.09001226, i64 80
  store float 0.000000e+00, ptr %1248, align 8, !tbaa !119
  br label %1249

1249:                                             ; preds = %1233, %1243, %1238, %1247
  br i1 %68, label %1250, label %1280

1250:                                             ; preds = %1249
  %1251 = load float, ptr %1205, align 4, !tbaa !186
  %1252 = load float, ptr %1202, align 8, !tbaa !41
  %1253 = fsub float %1251, %1252
  %1254 = fcmp olt float %1253, %.19101254
  br i1 %1254, label %1255, label %1257

1255:                                             ; preds = %1250
  %1256 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1253)
  %.pre1204 = load float, ptr %101, align 4, !tbaa !91
  br label %1266

1257:                                             ; preds = %1250
  %1258 = load float, ptr %101, align 4, !tbaa !91
  %1259 = fneg float %1258
  %1260 = call float @llvm.fmuladd.f32(float %1259, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1261 = fsub float %1251, %1260
  %1262 = fcmp ult float %1261, %.19101254
  br i1 %1262, label %1266, label %1263

1263:                                             ; preds = %1257
  %1264 = fsub float %1251, %.sroa.11.0.copyload
  %1265 = call float @llvm.fmuladd.f32(float %1258, float 2.000000e+00, float %1264)
  br label %1266

1266:                                             ; preds = %1257, %1263, %1255
  %1267 = phi float [ %.pre1204, %1255 ], [ %1258, %1263 ], [ %1258, %1257 ]
  %.2911 = phi float [ %1256, %1255 ], [ %1265, %1263 ], [ %.19101254, %1257 ]
  %1268 = getelementptr inbounds i8, ptr %30, i64 4
  %1269 = load float, ptr %1268, align 4, !tbaa !186
  %1270 = call float @llvm.fmuladd.f32(float %1267, float 2.000000e+00, float %1269)
  %1271 = fsub float %1270, %.sroa.11.0.copyload
  %1272 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1271, float noundef 0.000000e+00)
  %1273 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2911, float noundef 0.000000e+00, float noundef %1272)
  %1274 = getelementptr inbounds i8, ptr %.2897, i64 128
  %1275 = load float, ptr %1274, align 4, !tbaa !110
  %1276 = fsub float %1275, %1273
  %1277 = getelementptr inbounds i8, ptr %29, i64 4
  %1278 = load float, ptr %1277, align 4, !tbaa !186
  %1279 = fadd float %1278, %1276
  store float %1279, ptr %1277, align 4, !tbaa !186
  store float %1273, ptr %1274, align 4, !tbaa !110
  br label %1280

1280:                                             ; preds = %1266, %1249
  store i8 0, ptr %1222, align 4, !tbaa !151
  br label %1281

1281:                                             ; preds = %1280, %1221, %1220
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #15
  %1282 = getelementptr inbounds i8, ptr %.09001226, i64 80
  %1283 = load float, ptr %1282, align 8, !tbaa !119
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1283, float noundef 0.000000e+00)
  br i1 %1166, label %1284, label %1353

1284:                                             ; preds = %1281
  %1285 = getelementptr inbounds i8, ptr %.09001226, i64 88
  %1286 = load i32, ptr %1285, align 4, !tbaa !149
  %1287 = getelementptr inbounds i8, ptr %.09001226, i64 92
  %1288 = load i32, ptr %1287, align 4, !tbaa !150
  %1289 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1286, i32 noundef %1288)
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds i16, ptr %1159, i64 %1290
  %1292 = load i32, ptr %1285, align 4, !tbaa !149
  %1293 = load i32, ptr %1287, align 4, !tbaa !150
  %1294 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1292, i32 noundef %1293)
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds i16, ptr %1159, i64 %1295
  %1297 = select i1 %1146, float 1.000000e+00, float 0x3FE3333340000000
  %1298 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1297)
  %1299 = select i1 %68, float 0.000000e+00, float -1.000000e+00
  %1300 = 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
  %1301 = 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> %1301, ptr %37, align 8
  %1302 = 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> %1302, 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 %1291, ptr %38, align 8, !tbaa !40
  %1303 = getelementptr inbounds i8, ptr %36, i64 4
  %1304 = icmp slt i32 %1289, %1294
  br i1 %1304, label %.lr.ph1196, label %._crit_edge1197

.lr.ph1196:                                       ; preds = %1284
  %1305 = extractelement <2 x float> %1302, i64 1
  %1306 = getelementptr inbounds i8, ptr %28, i64 12
  %1307 = getelementptr inbounds i8, ptr %28, i64 4
  %1308 = getelementptr inbounds i8, ptr %77, i64 15376
  %1309 = getelementptr inbounds i8, ptr %.2897, i64 656
  %1310 = getelementptr inbounds i8, ptr %39, i64 8
  %.pre1205 = load float, ptr %1202, align 8, !tbaa !41
  br label %1311

1311:                                             ; preds = %.lr.ph1196, %.loopexit
  %1312 = phi ptr [ %1291, %.lr.ph1196 ], [ %1345, %.loopexit ]
  %1313 = phi float [ %1305, %.lr.ph1196 ], [ %1351, %.loopexit ]
  %1314 = phi float [ %.pre1205, %.lr.ph1196 ], [ %1347, %.loopexit ]
  %1315 = load float, ptr %1306, align 4, !tbaa !187
  %1316 = fadd float %1315, %1314
  %1317 = fcmp ogt float %1313, %1316
  br i1 %1317, label %._crit_edge1197.loopexit, label %1318

1318:                                             ; preds = %1311
  %1319 = load float, ptr %1307, align 4, !tbaa !188
  %1320 = fcmp olt float %1313, %1319
  br i1 %1320, label %.preheader, label %1327

.preheader:                                       ; preds = %1318, %1323
  %1321 = phi ptr [ %1324, %1323 ], [ %1312, %1318 ]
  %1322 = icmp ult ptr %1321, %1296
  br i1 %1322, label %1323, label %.loopexit

1323:                                             ; preds = %.preheader
  %1324 = getelementptr inbounds i8, ptr %1321, i64 2
  store ptr %1324, ptr %38, align 8, !tbaa !40
  %1325 = load i16, ptr %1321, align 2, !tbaa !146
  %1326 = icmp eq i16 %1325, 10
  br i1 %1326, label %.loopexit, label %.preheader, !llvm.loop !189

1327:                                             ; preds = %1318
  %1328 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %77, ptr noundef %1312, ptr noundef nonnull %1296, ptr noundef nonnull %38, ptr noundef null, i1 noundef zeroext true)
  %.sroa.029.0.vec.extract = extractelement <2 x float> %1328, i64 0
  %1329 = fcmp ugt float %.sroa.029.0.vec.extract, 0.000000e+00
  br i1 %1329, label %1336, label %1330

1330:                                             ; preds = %1327
  %1331 = load ptr, ptr %1308, align 8, !tbaa !127
  %1332 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %1331, i16 noundef zeroext 32)
  %1333 = fmul float %1332, 5.000000e-01
  %1334 = fptosi float %1333 to i32
  %1335 = sitofp i32 %1334 to float
  br label %1336

1336:                                             ; preds = %1330, %1327
  %.sroa.029.0.vec.extract32.pre-phi = phi float [ %1335, %1330 ], [ %.sroa.029.0.vec.extract, %1327 ]
  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
  %1337 = load float, ptr %1202, align 8, !tbaa !41
  %1338 = fsub float %1299, %1337
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef %1338)
  %1339 = 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> %1339, 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 %1300)
  %1340 = 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> %1340, 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)
  %1341 = 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 %1341, label %1342, label %1344

1342:                                             ; preds = %1336
  %1343 = load ptr, ptr %1309, align 8, !tbaa !190
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1343, ptr noundef nonnull align 4 dereferenceable(8) %39, ptr noundef nonnull align 4 dereferenceable(8) %1310, i32 noundef %1298, float noundef 0.000000e+00, i32 noundef 0)
  br label %1344

1344:                                             ; preds = %1342, %1336
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #15
  %.pre1206 = load float, ptr %1202, align 8, !tbaa !41
  %.pre1207 = load float, ptr %1303, align 4, !tbaa !186
  %.pre1208 = load ptr, ptr %38, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1323, %1344
  %1345 = phi ptr [ %.pre1208, %1344 ], [ %1321, %.preheader ], [ %1324, %1323 ]
  %1346 = phi float [ %.pre1207, %1344 ], [ %1313, %1323 ], [ %1313, %.preheader ]
  %1347 = phi float [ %.pre1206, %1344 ], [ %1314, %1323 ], [ %1314, %.preheader ]
  %1348 = load float, ptr %29, align 8, !tbaa !185
  %1349 = load float, ptr %35, align 4, !tbaa !185
  %1350 = fsub float %1348, %1349
  store float %1350, ptr %36, align 8, !tbaa !185
  %1351 = fadd float %1347, %1346
  store float %1351, ptr %1303, align 4, !tbaa !186
  %1352 = icmp ult ptr %1345, %1296
  br i1 %1352, label %1311, label %._crit_edge1197.loopexit, !llvm.loop !191

._crit_edge1197.loopexit:                         ; preds = %1311, %.loopexit
  %.pre1209.pre.pre = load ptr, ptr %31, align 8, !tbaa !40
  br label %._crit_edge1197

._crit_edge1197:                                  ; preds = %._crit_edge1197.loopexit, %1284
  %.pre1209.pre = phi ptr [ %.pre1209.pre.pre, %._crit_edge1197.loopexit ], [ %.pre12091211, %1284 ]
  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 %1353

1353:                                             ; preds = %._crit_edge1197, %1281
  %.pre1209 = phi ptr [ %.pre1209.pre, %._crit_edge1197 ], [ %.pre12091211, %1281 ]
  br i1 %68, label %1359, label %1354

1354:                                             ; preds = %1353
  %1355 = ptrtoint ptr %.pre1209 to i64
  %1356 = ptrtoint ptr %.0931 to i64
  %1357 = sub i64 %1355, %1356
  %1358 = icmp slt i64 %1357, 2097152
  br i1 %1358, label %1359, label %1368

1359:                                             ; preds = %1354, %1353
  %. = phi ptr [ %28, %1354 ], [ null, %1353 ]
  %1360 = zext i1 %384 to i32
  %1361 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1360, float noundef 1.000000e+00)
  %1362 = getelementptr inbounds i8, ptr %.2897, i64 656
  %1363 = load ptr, ptr %1362, align 8, !tbaa !190
  %1364 = getelementptr inbounds i8, ptr %77, i64 15376
  %1365 = load ptr, ptr %1364, align 8, !tbaa !127
  %1366 = load float, ptr %1202, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #15
  %1367 = 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> %1367, ptr %46, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1363, ptr noundef %1365, float noundef %1366, ptr noundef nonnull align 4 dereferenceable(8) %46, i32 noundef %1361, ptr noundef %.0931, ptr noundef %.pre1209, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #15
  br label %1368

1368:                                             ; preds = %1359, %1354
  br i1 %1146, label %1369, label %1410

1369:                                             ; preds = %1368
  %1370 = getelementptr inbounds i8, ptr %77, i64 24
  %1371 = load float, ptr %1370, align 8, !tbaa !192
  %1372 = getelementptr inbounds i8, ptr %.09001226, i64 3712
  %1373 = load float, ptr %1372, align 8, !tbaa !193
  %1374 = fadd float %1371, %1373
  store float %1374, ptr %1372, align 8, !tbaa !193
  %1375 = getelementptr inbounds i8, ptr %77, i64 123
  %1376 = load i8, ptr %1375, align 1, !tbaa !194, !range !38, !noundef !39
  %1377 = trunc nuw i8 %1376 to i1
  %1378 = fcmp ugt float %1374, 0.000000e+00
  %or.cond1119 = select i1 %1377, i1 %1378, i1 false
  br i1 %or.cond1119, label %1379, label %1382

1379:                                             ; preds = %1369
  %1380 = call float @fmodf(float noundef %1374, float noundef 0x3FF3333340000000) #15
  %1381 = fcmp ole float %1380, 0x3FE99999A0000000
  br label %1382

1382:                                             ; preds = %1379, %1369
  %1383 = phi i1 [ true, %1369 ], [ %1381, %1379 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #15
  %1384 = 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> %1384, ptr %48, align 8
  %1385 = 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> %1385, ptr %47, align 8
  %1386 = 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> %1386, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1386, i64 1
  %1387 = load float, ptr %1202, align 8, !tbaa !41
  %1388 = fsub float %.sroa.0.4.vec.extract, %1387
  %1389 = fadd float %1388, 5.000000e-01
  %1390 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1391 = 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 %1389, float noundef %1390, float noundef %1391)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #15
  br i1 %1383, label %1392, label %.critedge13

1392:                                             ; preds = %1382
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1393 = 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 %1393, label %1394, label %1399

1394:                                             ; preds = %1392
  %1395 = getelementptr inbounds i8, ptr %.2897, i64 656
  %1396 = load ptr, ptr %1395, align 8, !tbaa !190
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #15
  %1397 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %49)
  store <2 x float> %1397, ptr %51, align 8
  %1398 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1396, ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef %1398, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #15
  br label %1399

.critedge13:                                      ; preds = %1382
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #15
  br label %1399

1399:                                             ; preds = %.critedge13, %1394, %1392
  br i1 %80, label %1409, label %1400

1400:                                             ; preds = %1399
  %1401 = getelementptr inbounds i8, ptr %77, i64 23416
  store i8 1, ptr %1401, align 8, !tbaa !195
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #15
  %1402 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1403 = load float, ptr %1202, align 8, !tbaa !41
  %1404 = fsub float %.sroa.0.4.vec.extract, %1403
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1402, float noundef %1404)
  %1405 = getelementptr inbounds i8, ptr %77, i64 23420
  %1406 = load i64, ptr %52, align 8
  store i64 %1406, ptr %1405, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #15
  %1407 = load float, ptr %1202, align 8, !tbaa !41
  %1408 = getelementptr inbounds i8, ptr %77, i64 23428
  store float %1407, ptr %1408, align 4, !tbaa !196
  br label %1409

1409:                                             ; preds = %1400, %1399
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #15
  br label %1410

1410:                                             ; preds = %1409, %1368
  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 %1446

1411:                                             ; preds = %1147
  br i1 %68, label %.critedge1121, label %1412

1412:                                             ; preds = %1411
  br i1 %384, label %1430, label %1413

1413:                                             ; preds = %1412
  %1414 = load i32, ptr %167, align 8, !tbaa !104
  %1415 = icmp eq i32 %1414, %90
  br i1 %1415, label %1416, label %1421

1416:                                             ; preds = %1413
  %1417 = getelementptr inbounds i8, ptr %.09001226, i64 16
  %1418 = load i32, ptr %1417, align 8, !tbaa !114
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds i8, ptr %.0931, i64 %1419
  store ptr %1420, ptr %31, align 8, !tbaa !40
  br label %1430

1421:                                             ; preds = %1413
  %1422 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0931) #16
  %1423 = getelementptr inbounds i8, ptr %.0931, i64 %1422
  store ptr %1423, ptr %31, align 8, !tbaa !40
  br label %1430

.critedge1121:                                    ; preds = %1411
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #15
  %1424 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0931, ptr noundef nonnull %31)
  %1425 = sitofp i32 %1424 to float
  %1426 = getelementptr inbounds i8, ptr %77, i64 15384
  %1427 = load float, ptr %1426, align 8, !tbaa !41
  %1428 = fmul float %1427, %1425
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %.sroa.0506.2, float noundef %1428)
  %1429 = load i64, ptr %53, align 8
  store i64 %1429, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #15
  br label %1436

1430:                                             ; preds = %1412, %1416, %1421
  %1431 = phi ptr [ %1145, %1412 ], [ %1420, %1416 ], [ %1423, %1421 ]
  %1432 = ptrtoint ptr %1431 to i64
  %1433 = ptrtoint ptr %.0931 to i64
  %1434 = sub i64 %1432, %1433
  %1435 = icmp slt i64 %1434, 2097152
  br i1 %1435, label %1436, label %1446

1436:                                             ; preds = %.critedge1121, %1430
  %.14 = phi ptr [ %28, %1430 ], [ null, %.critedge1121 ]
  %1437 = zext i1 %384 to i32
  %1438 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1437, float noundef 1.000000e+00)
  %1439 = getelementptr inbounds i8, ptr %.2897, i64 656
  %1440 = load ptr, ptr %1439, align 8, !tbaa !190
  %1441 = getelementptr inbounds i8, ptr %77, i64 15376
  %1442 = load ptr, ptr %1441, align 8, !tbaa !127
  %1443 = getelementptr inbounds i8, ptr %77, i64 15384
  %1444 = load float, ptr %1443, align 8, !tbaa !41
  %1445 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1440, ptr noundef %1442, float noundef %1444, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %1438, ptr noundef %.0931, ptr noundef %1445, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1446

1446:                                             ; preds = %1430, %1436, %1410
  br i1 %brmerge1034, label %1448, label %1447

1447:                                             ; preds = %1446
  call void @_ZN5ImGui7PopFontEv()
  br label %1448

1448:                                             ; preds = %1446, %1447
  br i1 %68, label %1449, label %1471

1449:                                             ; preds = %1448
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #15
  %1450 = load float, ptr %30, align 8, !tbaa !185
  %1451 = getelementptr inbounds i8, ptr %30, i64 4
  %1452 = load float, ptr %1451, align 4, !tbaa !186
  %1453 = load float, ptr %101, align 4, !tbaa !91
  %1454 = fadd float %1452, %1453
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1450, float noundef %1454)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %54)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #15
  %1455 = getelementptr inbounds i8, ptr %77, i64 18232
  %1456 = load i32, ptr %1455, align 8, !tbaa !197
  %1457 = or i32 %1456, 1025
  store i32 %1457, ptr %1455, align 8, !tbaa !197
  call void @_ZN5ImGui8EndChildEv()
  %1458 = getelementptr inbounds i8, ptr %77, i64 18260
  %1459 = getelementptr inbounds i8, ptr %77, i64 18268
  %1460 = load i32, ptr %1459, align 4, !tbaa !94
  %1461 = and i32 %1460, 128
  %1462 = getelementptr inbounds i8, ptr %15, i64 8
  %1463 = load i32, ptr %1462, align 4, !tbaa !198
  %1464 = or i32 %1463, %1461
  store i32 %1464, ptr %1462, align 4, !tbaa !198
  store i32 %1456, ptr %1455, align 8, !tbaa !197
  call void @_ZN5ImGui8EndGroupEv()
  %1465 = load i32, ptr %1458, align 4, !tbaa !199
  %1466 = icmp eq i32 %1465, 0
  br i1 %1466, label %1467, label %1471

1467:                                             ; preds = %1449
  store i32 %90, ptr %1458, align 4, !tbaa !199
  %1468 = getelementptr inbounds i8, ptr %15, i64 4
  %1469 = getelementptr inbounds i8, ptr %77, i64 18264
  %1470 = load <2 x i32>, ptr %1468, align 4, !tbaa !96
  store <2 x i32> %1470, ptr %1469, align 4, !tbaa !96
  br label %1471

1471:                                             ; preds = %1449, %1467, %1448
  %1472 = getelementptr inbounds i8, ptr %77, i64 23600
  %1473 = load i8, ptr %1472, align 8, !tbaa !200, !range !38, !noundef !39
  %1474 = trunc nuw i8 %1473 to i1
  %or.cond1127 = and i1 %brmerge1034, %1474
  br i1 %or.cond1127, label %1475, label %1477

1475:                                             ; preds = %1471
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1476 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %29, ptr noundef %.0931, ptr noundef %1476)
  br label %1477

1477:                                             ; preds = %1475, %1471
  br i1 %106, label %1478, label %1488

1478:                                             ; preds = %1477
  %1479 = getelementptr inbounds i8, ptr %11, i64 8
  %1480 = load float, ptr %1479, align 8, !tbaa !201
  %1481 = getelementptr inbounds i8, ptr %77, i64 14388
  %1482 = load float, ptr %1481, align 4, !tbaa !92
  %1483 = fadd float %1480, %1482
  %1484 = load float, ptr %1125, align 4, !tbaa !183
  %1485 = load float, ptr %101, align 4, !tbaa !91
  %1486 = fadd float %1484, %1485
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef %1483, float noundef %1486)
  %1487 = load <2 x float>, ptr %55, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1487, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1488

1488:                                             ; preds = %1478, %1477
  %1489 = and i32 %5, 134217728
  %.not1022 = icmp eq i32 %1489, 0
  %or.cond1124 = and i1 %.not1022, %.not10161181
  br i1 %or.cond1124, label %1490, label %1491

1490:                                             ; preds = %1488
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %90)
  br label %1491

1491:                                             ; preds = %1490, %1488
  %1492 = and i32 %5, 32
  %.not1023 = icmp eq i32 %1492, 0
  %1493 = trunc nuw i8 %.29301248 to i1
  %.2 = select i1 %.not1023, i1 %.not10161181, i1 %1493
  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, %1491
  %.3 = phi i1 [ %.2, %1491 ], [ 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 %1494

1494:                                             ; 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(118), 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(118), 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 15384}
!42 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !43, i64 8, !44, i64 14272, !44, i64 14288, !45, i64 14304, !7, i64 15376, !12, i64 15384, !12, i64 15388, !46, i64 15392, !47, i64 15920, !10, i64 15928, !10, i64 15932, !10, i64 15936, !13, i64 15940, !13, i64 15941, !13, i64 15942, !13, i64 15943, !13, i64 15944, !7, i64 15952, !20, i64 15960, !20, i64 15976, !20, i64 15992, !48, i64 16008, !24, i64 16024, !10, i64 16040, !11, i64 16044, !7, i64 16056, !7, i64 16064, !7, i64 16072, !7, i64 16080, !7, i64 16088, !11, i64 16096, !10, i64 16104, !12, i64 16108, !11, i64 16112, !11, i64 16120, !10, i64 16128, !10, i64 16132, !10, i64 16136, !13, i64 16140, !13, i64 16141, !12, i64 16144, !12, i64 16148, !10, i64 16152, !10, i64 16156, !12, i64 16160, !13, i64 16164, !13, i64 16165, !13, i64 16166, !13, i64 16167, !13, i64 16168, !13, i64 16169, !11, i64 16172, !7, i64 16184, !49, i64 16192, !10, i64 16196, !10, i64 16200, !13, i64 16204, !13, i64 16205, !7, i64 16208, !10, i64 16216, !12, i64 16220, !8, i64 16224, !50, i64 17904, !10, i64 18216, !13, i64 18220, !10, i64 18224, !10, i64 18228, !10, i64 18232, !10, i64 18236, !52, i64 18240, !53, i64 18260, !54, i64 18320, !55, i64 18432, !56, i64 18448, !57, i64 18464, !15, i64 18480, !58, i64 18496, !59, i64 18512, !60, i64 18528, !60, i64 18544, !10, i64 18560, !61, i64 18568, !7, i64 18584, !10, i64 18592, !10, i64 18596, !10, i64 18600, !10, i64 18604, !10, i64 18608, !10, i64 18612, !10, i64 18616, !10, i64 18620, !10, i64 18624, !10, i64 18628, !10, i64 18632, !10, i64 18636, !49, i64 18640, !18, i64 18644, !13, i64 18648, !13, i64 18649, !13, i64 18650, !13, i64 18651, !13, i64 18652, !13, i64 18653, !13, i64 18654, !10, i64 18656, !22, i64 18660, !13, i64 18676, !13, i64 18677, !13, i64 18678, !10, i64 18680, !10, i64 18684, !10, i64 18688, !10, i64 18692, !10, i64 18696, !10, i64 18700, !22, i64 18704, !22, i64 18720, !10, i64 18736, !10, i64 18740, !10, i64 18744, !62, i64 18752, !62, i64 18800, !62, i64 18848, !62, i64 18896, !10, i64 18944, !10, i64 18948, !7, i64 18952, !7, i64 18960, !7, i64 18968, !12, i64 18976, !12, i64 18980, !13, i64 18984, !11, i64 18988, !11, i64 18996, !12, i64 19004, !10, i64 19008, !13, i64 19012, !13, i64 19013, !13, i64 19014, !10, i64 19016, !10, i64 19020, !10, i64 19024, !63, i64 19032, !22, i64 19096, !10, i64 19112, !10, i64 19116, !12, i64 19120, !10, i64 19124, !10, i64 19128, !10, i64 19132, !10, i64 19136, !64, i64 19144, !8, i64 19160, !10, i64 19176, !65, i64 19184, !7, i64 19200, !10, i64 19208, !66, i64 19216, !67, i64 19232, !21, i64 19272, !37, i64 19288, !7, i64 19304, !69, i64 19312, !71, i64 19352, !72, i64 19368, !10, i64 19384, !10, i64 19388, !12, i64 19392, !12, i64 19396, !11, i64 19400, !73, i64 19408, !77, i64 23136, !10, i64 23256, !10, i64 23260, !10, i64 23264, !10, i64 23268, !12, i64 23272, !12, i64 23276, !10, i64 23280, !35, i64 23284, !79, i64 23300, !12, i64 23348, !12, i64 23352, !13, i64 23356, !13, i64 23357, !12, i64 23360, !12, i64 23364, !12, i64 23368, !12, i64 23372, !14, i64 23376, !14, i64 23378, !74, i64 23384, !15, i64 23400, !80, i64 23416, !80, i64 23432, !8, i64 23448, !13, i64 23449, !12, i64 23452, !81, i64 23456, !82, i64 23472, !83, i64 23488, !84, i64 23504, !85, i64 23520, !10, i64 23536, !8, i64 23544, !13, i64 23600, !86, i64 23604, !7, i64 23608, !81, i64 23616, !7, i64 23632, !7, i64 23640, !12, i64 23648, !13, i64 23652, !10, i64 23656, !10, i64 23660, !10, i64 23664, !10, i64 23668, !81, i64 23672, !87, i64 23688, !8, i64 23712, !13, i64 23713, !8, i64 23714, !10, i64 23716, !88, i64 23720, !89, i64 23736, !8, i64 23776, !10, i64 24016, !10, i64 24020, !12, i64 24024, !10, i64 24028, !10, i64 24032, !10, i64 24036, !74, i64 24040}
!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, !12, i64 168, !11, i64 172, !11, i64 180, !11, i64 188, !11, i64 196, !12, i64 204, !13, i64 208, !13, i64 209, !13, i64 210, !12, i64 212, !12, i64 216, !8, i64 220}
!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, !12, i64 88, !12, i64 92, !13, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !10, i64 112, !8, i64 116}
!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, !13, i64 7, !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 18268}
!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 16056}
!100 = !{!6, !18, i64 336}
!101 = !{!6, !14, i64 342}
!102 = !{!6, !12, i64 164}
!103 = !{!42, !10, i64 19008}
!104 = !{!42, !10, i64 16152}
!105 = !{!42, !10, i64 18612}
!106 = !{!42, !10, i64 18600}
!107 = !{!42, !49, i64 18640}
!108 = !{!13, !13, i64 0}
!109 = !{!42, !10, i64 16200}
!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 18616}
!121 = !{!43, !13, i64 3596}
!122 = !{!73, !8, i64 96}
!123 = !{!43, !13, i64 113}
!124 = !{!42, !10, i64 18216}
!125 = !{!73, !10, i64 24}
!126 = !{!8, !8, i64 0}
!127 = !{!42, !7, i64 15376}
!128 = !{!77, !12, i64 20}
!129 = !{!77, !12, i64 108}
!130 = !{!77, !7, i64 64}
!131 = !{!77, !7, i64 56}
!132 = !{!133, !12, i64 4}
!133 = !{!"_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}
!134 = !{!77, !12, i64 16}
!135 = !{!73, !13, i64 3718}
!136 = !{!73, !10, i64 76}
!137 = !{!73, !10, i64 3720}
!138 = !{!42, !13, i64 16165}
!139 = !{!42, !10, i64 24036}
!140 = !{!43, !12, i64 3572}
!141 = !{!22, !12, i64 0}
!142 = !{!45, !12, i64 60}
!143 = !{!43, !12, i64 3576}
!144 = !{!6, !12, i64 252}
!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 16164}
!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 23416}
!196 = !{!42, !12, i64 23428}
!197 = !{!42, !10, i64 18232}
!198 = !{!53, !10, i64 8}
!199 = !{!42, !10, i64 18260}
!200 = !{!42, !13, i64 23600}
!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