; LLVM IR from hbatagelo/abcg :: abcg/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 { ptr, i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiWindow = type <{ ptr, 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, 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, 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, i8, i8, 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], ptr, %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 [86 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(981), 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 i32, align 4
  %79 = alloca i8, align 1
  %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 36
  %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 %3501

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 4016, 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 4017, 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 4018, 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 4031, 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(981) %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 62
  %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 62
  %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 62
  %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 62
  %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 62
  %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 62
  %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 62
  %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 28
  %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 %3500 [
    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 %3500

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 136
  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 87
  %437 = load i32, ptr %436, align 8, !tbaa !109
  %438 = load i32, ptr %29, align 4, !tbaa !9
  %439 = icmp eq i32 %437, %438
  br i1 %439, label %440, label %453

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

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

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

453:                                              ; preds = %451, %434
  %454 = phi i1 [ false, %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 73
  %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 23
  %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 172
  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 90
  %677 = load i32, ptr %676, align 4, !tbaa !110
  %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 63
  %690 = load i8, ptr %689, align 8, !tbaa !123, !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 !124
  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 !125, !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 4166, 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 %785

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 !126
  %752 = or i32 %751, 3
  store i32 %752, ptr %750, align 8, !tbaa !126
  %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 !126
  %763 = or i32 %762, 12
  store i32 %763, ptr %761, align 8, !tbaa !126
  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 %784

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

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

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

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

794:                                              ; preds = %791
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %795

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

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

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

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

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

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

820:                                              ; preds = %814
  %821 = load ptr, ptr %47, align 8, !tbaa !5
  %822 = icmp ne ptr %821, null
  br i1 %822, label %823, label %826

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

826:                                              ; preds = %823, %820
  %827 = phi i1 [ false, %820 ], [ %825, %823 ]
  br label %828

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

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

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

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

842:                                              ; preds = %839, %836, %828
  %843 = phi i1 [ false, %836 ], [ false, %828 ], [ %841, %839 ]
  %844 = zext i1 %843 to i8
  store i8 %844, 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
  %845 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %846 = trunc i8 %845 to i1
  br i1 %846, label %847, label %891

847:                                              ; preds = %842
  %848 = load ptr, ptr %47, align 8, !tbaa !5
  %849 = icmp ne ptr %848, null
  br i1 %849, label %850, label %891

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

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

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

891:                                              ; preds = %856, %853, %847, %842
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #14
  %892 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %893 = trunc i8 %892 to i1
  br i1 %893, label %903, label %894

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

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

903:                                              ; preds = %897, %894, %891
  %904 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %905 = trunc i8 %904 to i1
  br i1 %905, label %914, label %906

906:                                              ; preds = %903
  %907 = load ptr, ptr %47, align 8, !tbaa !5
  %908 = icmp ne ptr %907, null
  br i1 %908, label %909, label %914

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

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

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

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

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

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

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

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

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

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

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

1004:                                             ; preds = %1000, %996, %943
  %1005 = phi i1 [ false, %996 ], [ false, %943 ], [ %1003, %1000 ]
  br i1 %1005, label %1006, label %1007

1006:                                             ; preds = %1004
  br label %1009

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

1008:                                             ; No predecessors!
  br label %1009

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

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

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

1020:                                             ; preds = %1017
  br label %1023

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

1022:                                             ; No predecessors!
  br label %1023

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

1065:                                             ; preds = %1023
  %1066 = load ptr, ptr %21, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiIO, ptr %1066, i32 0, i32 59
  %1068 = getelementptr inbounds %struct.ImVec2, ptr %1067, i32 0, i32 1
  %1069 = load float, ptr %1068, align 4, !tbaa !147
  %1070 = load ptr, ptr %38, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.ImGuiWindow, ptr %1070, i32 0, i32 62
  %1072 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1071, i32 0, i32 0
  %1073 = getelementptr inbounds %struct.ImVec2, ptr %1072, i32 0, i32 1
  %1074 = load float, ptr %1073, align 4, !tbaa !148
  %1075 = fsub float %1069, %1074
  br label %1081

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

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

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

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

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

1099:                                             ; preds = %1092
  %1100 = load ptr, ptr %21, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.ImGuiIO, ptr %1100, i32 0, i32 64
  %1102 = load i8, ptr %1101, align 1, !tbaa !151, !range !40, !noundef !41
  %1103 = trunc i8 %1102 to i1
  br i1 %1103, label %1222, label %1104

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

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

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

1135:                                             ; preds = %1125, %1119
  %1136 = phi i1 [ true, %1119 ], [ %1134, %1125 ]
  %1137 = zext i1 %1136 to i8
  store i8 %1137, ptr %76, align 1, !tbaa !42
  %1138 = load ptr, ptr %47, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1138, i32 0, i32 12
  %1140 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1139, i32 0, i32 1
  %1141 = load i32, ptr %1140, align 4, !tbaa !153
  %1142 = load ptr, ptr %47, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1142, i32 0, i32 12
  %1144 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1143, i32 0, i32 2
  %1145 = load i32, ptr %1144, align 4, !tbaa !154
  %1146 = icmp ne i32 %1141, %1145
  br i1 %1146, label %1150, label %1147

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

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

1152:                                             ; preds = %1150, %1147
  %1153 = load ptr, ptr %47, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1153, i32 0, i32 12
  %1155 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1154, i32 0, i32 1
  %1156 = load i32, ptr %1155, align 4, !tbaa !153
  %1157 = load ptr, ptr %47, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1157, i32 0, i32 12
  %1159 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1158, i32 0, i32 2
  %1160 = load i32, ptr %1159, align 4, !tbaa !154
  %1161 = icmp ne i32 %1156, %1160
  br i1 %1161, label %1165, label %1162

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

1165:                                             ; preds = %1162, %1152
  %1166 = load ptr, ptr %47, align 8, !tbaa !5
  %1167 = load ptr, ptr %47, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1167, i32 0, i32 12
  %1169 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1168, i32 0, i32 0
  %1170 = load i32, ptr %1169, align 4, !tbaa !152
  %1171 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef %1166, i32 noundef %1170)
  %1172 = load ptr, ptr %47, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1172, i32 0, i32 12
  %1174 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1173, i32 0, i32 0
  store i32 %1171, ptr %1174, align 4, !tbaa !152
  %1175 = load ptr, ptr %47, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1175, i32 0, i32 12
  %1177 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1176, i32 0, i32 0
  %1178 = load i32, ptr %1177, align 4, !tbaa !152
  %1179 = load ptr, ptr %47, align 8, !tbaa !5
  %1180 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1179, i32 0, i32 12
  %1181 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1180, i32 0, i32 2
  store i32 %1178, ptr %1181, align 4, !tbaa !154
  %1182 = load ptr, ptr %47, align 8, !tbaa !5
  %1183 = load ptr, ptr %47, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1183, i32 0, i32 12
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1182, ptr noundef %1184)
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  br label %1220

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

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

1203:                                             ; preds = %1200
  %1204 = load ptr, ptr %47, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1204, i32 0, i32 12
  %1206 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1205, i32 0, i32 1
  %1207 = load ptr, ptr %47, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1207, i32 0, i32 12
  %1209 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1208, i32 0, i32 2
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %1206, ptr noundef nonnull align 4 dereferenceable(4) %1209)
  %1210 = load ptr, ptr %47, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1210, i32 0, i32 12
  %1212 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1211, i32 0, i32 2
  %1213 = load i32, ptr %1212, align 4, !tbaa !154
  %1214 = load ptr, ptr %47, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1214, i32 0, i32 12
  %1216 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1215, i32 0, i32 0
  store i32 %1213, ptr %1216, align 4, !tbaa !152
  br label %1217

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

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

1222:                                             ; preds = %1099, %1092, %1089
  %1223 = load ptr, ptr %21, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.ImGuiIO, ptr %1223, i32 0, i32 73
  %1225 = getelementptr inbounds [5 x i8], ptr %1224, i64 0, i64 0
  %1226 = load i8, ptr %1225, align 8, !tbaa !42, !range !40, !noundef !41
  %1227 = trunc i8 %1226 to i1
  br i1 %1227, label %1228, label %1256

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

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

1236:                                             ; preds = %1233
  %1237 = load ptr, ptr %21, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.ImGuiIO, ptr %1237, i32 0, i32 64
  %1239 = load i8, ptr %1238, align 1, !tbaa !151, !range !40, !noundef !41
  %1240 = trunc i8 %1239 to i1
  br i1 %1240, label %1241, label %1247

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

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

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

1255:                                             ; preds = %1253, %1233
  br label %1289

1256:                                             ; preds = %1228, %1222
  %1257 = load ptr, ptr %21, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ImGuiIO, ptr %1257, i32 0, i32 60
  %1259 = getelementptr inbounds [5 x i8], ptr %1258, i64 0, i64 0
  %1260 = load i8, ptr %1259, align 8, !tbaa !42, !range !40, !noundef !41
  %1261 = trunc i8 %1260 to i1
  br i1 %1261, label %1262, label %1288

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

1267:                                             ; preds = %1262
  %1268 = load ptr, ptr %21, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.ImGuiIO, ptr %1268, i32 0, i32 54
  %1270 = getelementptr inbounds %struct.ImVec2, ptr %1269, i32 0, i32 0
  %1271 = load float, ptr %1270, align 8, !tbaa !156
  %1272 = fcmp une float %1271, 0.000000e+00
  br i1 %1272, label %1279, label %1273

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

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

1288:                                             ; preds = %1279, %1273, %1262, %1256
  br label %1289

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

1290:                                             ; preds = %1289, %1220
  br label %1291

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

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

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

1305:                                             ; preds = %1302, %1296, %1291
  %1306 = load i32, ptr %15, align 4, !tbaa !9
  %1307 = and i32 %1306, 1024
  %1308 = icmp ne i32 %1307, 0
  br i1 %1308, label %1309, label %1324

1309:                                             ; preds = %1305
  %1310 = load i32, ptr %29, align 4, !tbaa !9
  %1311 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %1310, i32 noundef 0)
  br i1 %1311, label %1312, label %1324

1312:                                             ; preds = %1309
  %1313 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1314 = trunc i8 %1313 to i1
  br i1 %1314, label %1324, label %1315

1315:                                             ; preds = %1312
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #14
  store i32 9, ptr %78, align 4, !tbaa !9
  %1316 = load i32, ptr %15, align 4, !tbaa !9
  %1317 = load ptr, ptr %16, align 8, !tbaa !5
  %1318 = load ptr, ptr %17, align 8, !tbaa !5
  %1319 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %78, i32 noundef %1316, ptr noundef %1317, ptr noundef %1318, i32 noundef 2)
  br i1 %1319, label %1320, label %1323

1320:                                             ; preds = %1315
  %1321 = load ptr, ptr %47, align 8, !tbaa !5
  %1322 = load i32, ptr %78, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1321, i32 noundef %1322)
  br label %1323

1323:                                             ; preds = %1320, %1315
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #14
  br label %1324

1324:                                             ; preds = %1323, %1312, %1309, %1305
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #14
  %1325 = load ptr, ptr %21, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.ImGuiIO, ptr %1325, i32 0, i32 63
  %1327 = load i8, ptr %1326, align 8, !tbaa !123, !range !40, !noundef !41
  %1328 = trunc i8 %1327 to i1
  br i1 %1328, label %1329, label %1334

1329:                                             ; preds = %1324
  %1330 = load ptr, ptr %21, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.ImGuiIO, ptr %1330, i32 0, i32 65
  %1332 = load i8, ptr %1331, align 2, !tbaa !158, !range !40, !noundef !41
  %1333 = trunc i8 %1332 to i1
  br i1 %1333, label %1334, label %1344

1334:                                             ; preds = %1329, %1324
  %1335 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %1336 = trunc i8 %1335 to i1
  br i1 %1336, label %1337, label %1342

1337:                                             ; preds = %1334
  %1338 = load ptr, ptr %21, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.ImGuiIO, ptr %1338, i32 0, i32 66
  %1340 = load i8, ptr %1339, align 1, !tbaa !159, !range !40, !noundef !41
  %1341 = trunc i8 %1340 to i1
  br label %1342

1342:                                             ; preds = %1337, %1334
  %1343 = phi i1 [ false, %1334 ], [ %1341, %1337 ]
  br label %1344

1344:                                             ; preds = %1342, %1329
  %1345 = phi i1 [ true, %1329 ], [ %1343, %1342 ]
  %1346 = zext i1 %1345 to i8
  store i8 %1346, ptr %79, align 1, !tbaa !42
  %1347 = load ptr, ptr %21, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ImGuiIO, ptr %1347, i32 0, i32 89
  %1349 = getelementptr inbounds %struct.ImVector.5, ptr %1348, i32 0, i32 0
  %1350 = load i32, ptr %1349, align 8, !tbaa !160
  %1351 = icmp sgt i32 %1350, 0
  br i1 %1351, label %1352, label %1399

1352:                                             ; preds = %1344
  %1353 = load i8, ptr %79, align 1, !tbaa !42, !range !40, !noundef !41
  %1354 = trunc i8 %1353 to i1
  br i1 %1354, label %1396, label %1355

1355:                                             ; preds = %1352
  %1356 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1357 = trunc i8 %1356 to i1
  br i1 %1357, label %1396, label %1358

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

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

1362:                                             ; preds = %1392, %1361
  %1363 = load i32, ptr %80, align 4, !tbaa !9
  %1364 = load ptr, ptr %21, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.ImGuiIO, ptr %1364, i32 0, i32 89
  %1366 = getelementptr inbounds %struct.ImVector.5, ptr %1365, i32 0, i32 0
  %1367 = load i32, ptr %1366, align 8, !tbaa !160
  %1368 = icmp slt i32 %1363, %1367
  br i1 %1368, label %1370, label %1369

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

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

1379:                                             ; preds = %1370
  store i32 4, ptr %19, align 4
  br label %1389

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

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

1388:                                             ; preds = %1385, %1380
  store i32 0, ptr %19, align 4
  br label %1389

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

1391:                                             ; preds = %1389
  br label %1392

1392:                                             ; preds = %1391, %1389
  %1393 = load i32, ptr %80, align 4, !tbaa !9
  %1394 = add nsw i32 %1393, 1
  store i32 %1394, ptr %80, align 4, !tbaa !9
  br label %1362, !llvm.loop !161

1395:                                             ; preds = %1369
  br label %1396

1396:                                             ; preds = %1395, %1358, %1355, %1352
  %1397 = load ptr, ptr %21, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.ImGuiIO, ptr %1397, i32 0, i32 89
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1398, i32 noundef 0)
  br label %1399

1399:                                             ; preds = %1396, %1344
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #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 %1400

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

1406:                                             ; preds = %1400
  %1407 = load ptr, ptr %20, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.ImGuiContext, ptr %1407, i32 0, i32 47
  %1409 = load i8, ptr %1408, align 4, !tbaa !163, !range !40, !noundef !41
  %1410 = trunc i8 %1409 to i1
  br i1 %1410, label %2114, label %1411

1411:                                             ; preds = %1406
  %1412 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %1413 = trunc i8 %1412 to i1
  br i1 %1413, label %2114, label %1414

1414:                                             ; preds = %1411
  %1415 = load ptr, ptr %47, align 8, !tbaa !5
  %1416 = icmp ne ptr %1415, null
  br i1 %1416, label %1417, label %1418

1417:                                             ; preds = %1414
  br label %1420

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

1419:                                             ; No predecessors!
  br label %1420

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

1446:                                             ; preds = %1420
  %1447 = load ptr, ptr %21, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.ImGuiIO, ptr %1447, i32 0, i32 65
  %1449 = load i8, ptr %1448, align 2, !tbaa !158, !range !40, !noundef !41
  %1450 = trunc i8 %1449 to i1
  br label %1456

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

1456:                                             ; preds = %1451, %1446
  %1457 = phi i1 [ %1450, %1446 ], [ %1455, %1451 ]
  %1458 = zext i1 %1457 to i8
  store i8 %1458, ptr %85, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1459 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %1460 = trunc i8 %1459 to i1
  br i1 %1460, label %1461, label %1477

1461:                                             ; preds = %1456
  %1462 = load ptr, ptr %21, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.ImGuiIO, ptr %1462, i32 0, i32 66
  %1464 = load i8, ptr %1463, align 1, !tbaa !159, !range !40, !noundef !41
  %1465 = trunc i8 %1464 to i1
  br i1 %1465, label %1466, label %1477

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

1471:                                             ; preds = %1466
  %1472 = load ptr, ptr %21, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct.ImGuiIO, ptr %1472, i32 0, i32 65
  %1474 = load i8, ptr %1473, align 2, !tbaa !158, !range !40, !noundef !41
  %1475 = trunc i8 %1474 to i1
  %1476 = xor i1 %1475, true
  br label %1477

1477:                                             ; preds = %1471, %1466, %1461, %1456
  %1478 = phi i1 [ false, %1466 ], [ false, %1461 ], [ false, %1456 ], [ %1476, %1471 ]
  %1479 = zext i1 %1478 to i8
  store i8 %1479, 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
  %1480 = load i32, ptr %29, align 4, !tbaa !9
  %1481 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2617, i32 noundef %1480, i32 noundef 1)
  br i1 %1481, label %1485, label %1482

1482:                                             ; preds = %1477
  %1483 = load i32, ptr %29, align 4, !tbaa !9
  %1484 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8714, i32 noundef %1483, i32 noundef 1)
  br i1 %1484, label %1485, label %1499

1485:                                             ; preds = %1482, %1477
  %1486 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1487 = trunc i8 %1486 to i1
  br i1 %1487, label %1499, label %1488

1488:                                             ; preds = %1485
  %1489 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1490 = trunc i8 %1489 to i1
  br i1 %1490, label %1499, label %1491

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

1494:                                             ; preds = %1491
  %1495 = load ptr, ptr %47, align 8, !tbaa !5
  %1496 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1495)
  br label %1497

1497:                                             ; preds = %1494, %1491
  %1498 = phi i1 [ true, %1491 ], [ %1496, %1494 ]
  br label %1499

1499:                                             ; preds = %1497, %1488, %1485, %1482
  %1500 = phi i1 [ false, %1488 ], [ false, %1485 ], [ false, %1482 ], [ %1498, %1497 ]
  %1501 = zext i1 %1500 to i8
  store i8 %1501, ptr %88, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1502 = load i32, ptr %29, align 4, !tbaa !9
  %1503 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2596, i32 noundef %1502, i32 noundef 0)
  br i1 %1503, label %1507, label %1504

1504:                                             ; preds = %1499
  %1505 = load i32, ptr %29, align 4, !tbaa !9
  %1506 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 4617, i32 noundef %1505, i32 noundef 0)
  br i1 %1506, label %1507, label %1518

1507:                                             ; preds = %1504, %1499
  %1508 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1509 = trunc i8 %1508 to i1
  br i1 %1509, label %1518, label %1510

1510:                                             ; preds = %1507
  %1511 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1512 = trunc i8 %1511 to i1
  br i1 %1512, label %1513, label %1516

1513:                                             ; preds = %1510
  %1514 = load ptr, ptr %47, align 8, !tbaa !5
  %1515 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1514)
  br label %1516

1516:                                             ; preds = %1513, %1510
  %1517 = phi i1 [ true, %1510 ], [ %1515, %1513 ]
  br label %1518

1518:                                             ; preds = %1516, %1507, %1504
  %1519 = phi i1 [ false, %1507 ], [ false, %1504 ], [ %1517, %1516 ]
  %1520 = zext i1 %1519 to i8
  store i8 %1520, ptr %89, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1521 = load i32, ptr %29, align 4, !tbaa !9
  %1522 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2615, i32 noundef %1521, i32 noundef 1)
  br i1 %1522, label %1526, label %1523

1523:                                             ; preds = %1518
  %1524 = load i32, ptr %29, align 4, !tbaa !9
  %1525 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8713, i32 noundef %1524, i32 noundef 1)
  br i1 %1525, label %1526, label %1530

1526:                                             ; preds = %1523, %1518
  %1527 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1528 = trunc i8 %1527 to i1
  %1529 = xor i1 %1528, true
  br label %1530

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

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

1538:                                             ; preds = %1535
  %1539 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1540 = trunc i8 %1539 to i1
  br label %1541

1541:                                             ; preds = %1538, %1535, %1530
  %1542 = phi i1 [ false, %1535 ], [ false, %1530 ], [ %1540, %1538 ]
  %1543 = zext i1 %1542 to i8
  store i8 %1543, ptr %91, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #14
  %1544 = load i32, ptr %29, align 4, !tbaa !9
  %1545 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2618, i32 noundef %1544, i32 noundef 1)
  br i1 %1545, label %1552, label %1546

1546:                                             ; preds = %1541
  %1547 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %1548 = trunc i8 %1547 to i1
  br i1 %1548, label %1549, label %1558

1549:                                             ; preds = %1546
  %1550 = load i32, ptr %29, align 4, !tbaa !9
  %1551 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 10811, i32 noundef %1550, i32 noundef 1)
  br i1 %1551, label %1552, label %1558

1552:                                             ; preds = %1549, %1541
  %1553 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1554 = trunc i8 %1553 to i1
  br i1 %1554, label %1558, label %1555

1555:                                             ; preds = %1552
  %1556 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1557 = trunc i8 %1556 to i1
  br label %1558

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

1569:                                             ; preds = %1558
  %1570 = load ptr, ptr %21, align 8, !tbaa !5
  %1571 = getelementptr inbounds %struct.ImGuiIO, ptr %1570, i32 0, i32 1
  %1572 = load i32, ptr %1571, align 4, !tbaa !166
  %1573 = and i32 %1572, 1
  %1574 = icmp ne i32 %1573, 0
  br label %1575

1575:                                             ; preds = %1569, %1558
  %1576 = phi i1 [ false, %1558 ], [ %1574, %1569 ]
  %1577 = zext i1 %1576 to i8
  store i8 %1577, ptr %94, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #14
  %1578 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %1578, label %1581, label %1579

1579:                                             ; preds = %1575
  %1580 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 615, i1 noundef zeroext true)
  br label %1581

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

1586:                                             ; preds = %1581
  %1587 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 622, i1 noundef zeroext false)
  br i1 %1587, label %1590, label %1588

1588:                                             ; preds = %1586
  %1589 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 621, i1 noundef zeroext false)
  br label %1590

1590:                                             ; preds = %1588, %1586
  %1591 = phi i1 [ true, %1586 ], [ %1589, %1588 ]
  br label %1592

1592:                                             ; preds = %1590, %1581
  %1593 = phi i1 [ false, %1581 ], [ %1591, %1590 ]
  %1594 = zext i1 %1593 to i8
  store i8 %1594, ptr %96, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #14
  %1595 = load i32, ptr %29, align 4, !tbaa !9
  %1596 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 526, i32 noundef %1595, i32 noundef 1)
  br i1 %1596, label %1605, label %1597

1597:                                             ; preds = %1592
  %1598 = load i8, ptr %94, align 1, !tbaa !42, !range !40, !noundef !41
  %1599 = trunc i8 %1598 to i1
  br i1 %1599, label %1600, label %1603

1600:                                             ; preds = %1597
  %1601 = load i32, ptr %29, align 4, !tbaa !9
  %1602 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 620, i32 noundef %1601, i32 noundef 1)
  br label %1603

1603:                                             ; preds = %1600, %1597
  %1604 = phi i1 [ false, %1597 ], [ %1602, %1600 ]
  br label %1605

1605:                                             ; preds = %1603, %1592
  %1606 = phi i1 [ true, %1592 ], [ %1604, %1603 ]
  %1607 = zext i1 %1606 to i8
  store i8 %1607, ptr %97, align 1, !tbaa !42
  %1608 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %1608, label %1609, label %1623

1609:                                             ; preds = %1605
  %1610 = load ptr, ptr %47, align 8, !tbaa !5
  %1611 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1612 = trunc i8 %1611 to i1
  br i1 %1612, label %1613, label %1614

1613:                                             ; preds = %1609
  br label %1619

1614:                                             ; preds = %1609
  %1615 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1616 = trunc i8 %1615 to i1
  %1617 = zext i1 %1616 to i64
  %1618 = select i1 %1616, i32 2097164, i32 2097152
  br label %1619

1619:                                             ; preds = %1614, %1613
  %1620 = phi i32 [ 2097156, %1613 ], [ %1618, %1614 ]
  %1621 = load i32, ptr %84, align 4, !tbaa !9
  %1622 = or i32 %1620, %1621
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1610, i32 noundef %1622)
  br label %2099

1623:                                             ; preds = %1605
  %1624 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %1624, label %1625, label %1639

1625:                                             ; preds = %1623
  %1626 = load ptr, ptr %47, align 8, !tbaa !5
  %1627 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1628 = trunc i8 %1627 to i1
  br i1 %1628, label %1629, label %1630

1629:                                             ; preds = %1625
  br label %1635

1630:                                             ; preds = %1625
  %1631 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1632 = trunc i8 %1631 to i1
  %1633 = zext i1 %1632 to i64
  %1634 = select i1 %1632, i32 2097165, i32 2097153
  br label %1635

1635:                                             ; preds = %1630, %1629
  %1636 = phi i32 [ 2097157, %1629 ], [ %1634, %1630 ]
  %1637 = load i32, ptr %84, align 4, !tbaa !9
  %1638 = or i32 %1636, %1637
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1626, i32 noundef %1638)
  br label %2098

1639:                                             ; preds = %1623
  %1640 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1640, label %1641, label %1669

1641:                                             ; preds = %1639
  %1642 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1643 = trunc i8 %1642 to i1
  br i1 %1643, label %1644, label %1669

1644:                                             ; preds = %1641
  %1645 = load ptr, ptr %21, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiIO, ptr %1645, i32 0, i32 63
  %1647 = load i8, ptr %1646, align 8, !tbaa !123, !range !40, !noundef !41
  %1648 = trunc i8 %1647 to i1
  br i1 %1648, label %1649, label %1660

1649:                                             ; preds = %1644
  %1650 = load ptr, ptr %38, align 8, !tbaa !5
  %1651 = load ptr, ptr %38, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.ImGuiWindow, ptr %1651, i32 0, i32 23
  %1653 = getelementptr inbounds %struct.ImVec2, ptr %1652, i32 0, i32 1
  %1654 = load float, ptr %1653, align 4, !tbaa !113
  %1655 = load ptr, ptr %20, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.ImGuiContext, ptr %1655, i32 0, i32 7
  %1657 = load float, ptr %1656, align 8, !tbaa !45
  %1658 = fsub float %1654, %1657
  %1659 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1658, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1650, float noundef %1659)
  br label %1668

1660:                                             ; preds = %1644
  %1661 = load ptr, ptr %47, align 8, !tbaa !5
  %1662 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1663 = trunc i8 %1662 to i1
  %1664 = zext i1 %1663 to i64
  %1665 = select i1 %1663, i32 2097158, i32 2097154
  %1666 = load i32, ptr %84, align 4, !tbaa !9
  %1667 = or i32 %1665, %1666
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1661, i32 noundef %1667)
  br label %1668

1668:                                             ; preds = %1660, %1649
  br label %2097

1669:                                             ; preds = %1641, %1639
  %1670 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1670, label %1671, label %1700

1671:                                             ; preds = %1669
  %1672 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1673 = trunc i8 %1672 to i1
  br i1 %1673, label %1674, label %1700

1674:                                             ; preds = %1671
  %1675 = load ptr, ptr %21, align 8, !tbaa !5
  %1676 = getelementptr inbounds %struct.ImGuiIO, ptr %1675, i32 0, i32 63
  %1677 = load i8, ptr %1676, align 8, !tbaa !123, !range !40, !noundef !41
  %1678 = trunc i8 %1677 to i1
  br i1 %1678, label %1679, label %1691

1679:                                             ; preds = %1674
  %1680 = load ptr, ptr %38, align 8, !tbaa !5
  %1681 = load ptr, ptr %38, align 8, !tbaa !5
  %1682 = getelementptr inbounds %struct.ImGuiWindow, ptr %1681, i32 0, i32 23
  %1683 = getelementptr inbounds %struct.ImVec2, ptr %1682, i32 0, i32 1
  %1684 = load float, ptr %1683, align 4, !tbaa !113
  %1685 = load ptr, ptr %20, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.ImGuiContext, ptr %1685, i32 0, i32 7
  %1687 = load float, ptr %1686, align 8, !tbaa !45
  %1688 = fadd float %1684, %1687
  %1689 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1690 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1688, float noundef %1689)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1680, float noundef %1690)
  br label %1699

1691:                                             ; preds = %1674
  %1692 = load ptr, ptr %47, align 8, !tbaa !5
  %1693 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1694 = trunc i8 %1693 to i1
  %1695 = zext i1 %1694 to i64
  %1696 = select i1 %1694, i32 2097159, i32 2097155
  %1697 = load i32, ptr %84, align 4, !tbaa !9
  %1698 = or i32 %1696, %1697
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1692, i32 noundef %1698)
  br label %1699

1699:                                             ; preds = %1691, %1679
  br label %2096

1700:                                             ; preds = %1671, %1669
  %1701 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  br i1 %1701, label %1702, label %1717

1702:                                             ; preds = %1700
  %1703 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1704 = trunc i8 %1703 to i1
  br i1 %1704, label %1705, label %1717

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

1717:                                             ; preds = %1702, %1700
  %1718 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  br i1 %1718, label %1719, label %1733

1719:                                             ; preds = %1717
  %1720 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1721 = trunc i8 %1720 to i1
  br i1 %1721, label %1722, label %1733

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

1733:                                             ; preds = %1719, %1717
  %1734 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %1734, label %1735, label %1749

1735:                                             ; preds = %1733
  %1736 = load ptr, ptr %47, align 8, !tbaa !5
  %1737 = load ptr, ptr %21, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.ImGuiIO, ptr %1737, i32 0, i32 63
  %1739 = load i8, ptr %1738, align 8, !tbaa !123, !range !40, !noundef !41
  %1740 = trunc i8 %1739 to i1
  br i1 %1740, label %1741, label %1744

1741:                                             ; preds = %1735
  %1742 = load i32, ptr %84, align 4, !tbaa !9
  %1743 = or i32 2097158, %1742
  br label %1747

1744:                                             ; preds = %1735
  %1745 = load i32, ptr %84, align 4, !tbaa !9
  %1746 = or i32 2097156, %1745
  br label %1747

1747:                                             ; preds = %1744, %1741
  %1748 = phi i32 [ %1743, %1741 ], [ %1746, %1744 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1736, i32 noundef %1748)
  br label %2093

1749:                                             ; preds = %1733
  %1750 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %1750, label %1751, label %1765

1751:                                             ; preds = %1749
  %1752 = load ptr, ptr %47, align 8, !tbaa !5
  %1753 = load ptr, ptr %21, align 8, !tbaa !5
  %1754 = getelementptr inbounds %struct.ImGuiIO, ptr %1753, i32 0, i32 63
  %1755 = load i8, ptr %1754, align 8, !tbaa !123, !range !40, !noundef !41
  %1756 = trunc i8 %1755 to i1
  br i1 %1756, label %1757, label %1760

1757:                                             ; preds = %1751
  %1758 = load i32, ptr %84, align 4, !tbaa !9
  %1759 = or i32 2097159, %1758
  br label %1763

1760:                                             ; preds = %1751
  %1761 = load i32, ptr %84, align 4, !tbaa !9
  %1762 = or i32 2097157, %1761
  br label %1763

1763:                                             ; preds = %1760, %1757
  %1764 = phi i32 [ %1759, %1757 ], [ %1762, %1760 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1752, i32 noundef %1764)
  br label %2092

1765:                                             ; preds = %1749
  %1766 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1766, label %1767, label %1786

1767:                                             ; preds = %1765
  %1768 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1769 = trunc i8 %1768 to i1
  br i1 %1769, label %1786, label %1770

1770:                                             ; preds = %1767
  %1771 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1772 = trunc i8 %1771 to i1
  br i1 %1772, label %1786, label %1773

1773:                                             ; preds = %1770
  %1774 = load ptr, ptr %47, align 8, !tbaa !5
  %1775 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1774)
  br i1 %1775, label %1782, label %1776

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

1779:                                             ; preds = %1776
  %1780 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1780, i32 noundef 6291469)
  br label %1781

1781:                                             ; preds = %1779, %1776
  br label %1782

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

1786:                                             ; preds = %1770, %1767, %1765
  %1787 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  br i1 %1787, label %1788, label %1825

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

1791:                                             ; preds = %1788
  %1792 = load ptr, ptr %47, align 8, !tbaa !5
  %1793 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1792)
  br i1 %1793, label %1821, label %1794

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

1797:                                             ; preds = %1794
  %1798 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1798, i32 noundef 6291468)
  br label %1820

1799:                                             ; preds = %1794
  %1800 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %1801 = trunc i8 %1800 to i1
  br i1 %1801, label %1802, label %1819

1802:                                             ; preds = %1799
  %1803 = load ptr, ptr %21, align 8, !tbaa !5
  %1804 = getelementptr inbounds %struct.ImGuiIO, ptr %1803, i32 0, i32 66
  %1805 = load i8, ptr %1804, align 1, !tbaa !159, !range !40, !noundef !41
  %1806 = trunc i8 %1805 to i1
  br i1 %1806, label %1807, label %1819

1807:                                             ; preds = %1802
  %1808 = load ptr, ptr %21, align 8, !tbaa !5
  %1809 = getelementptr inbounds %struct.ImGuiIO, ptr %1808, i32 0, i32 65
  %1810 = load i8, ptr %1809, align 2, !tbaa !158, !range !40, !noundef !41
  %1811 = trunc i8 %1810 to i1
  br i1 %1811, label %1819, label %1812

1812:                                             ; preds = %1807
  %1813 = load ptr, ptr %21, align 8, !tbaa !5
  %1814 = getelementptr inbounds %struct.ImGuiIO, ptr %1813, i32 0, i32 63
  %1815 = load i8, ptr %1814, align 8, !tbaa !123, !range !40, !noundef !41
  %1816 = trunc i8 %1815 to i1
  br i1 %1816, label %1819, label %1817

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

1819:                                             ; preds = %1817, %1812, %1807, %1802, %1799
  br label %1820

1820:                                             ; preds = %1819, %1797
  br label %1821

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

1825:                                             ; preds = %1788, %1786
  %1826 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %1827 = trunc i8 %1826 to i1
  br i1 %1827, label %1831, label %1828

1828:                                             ; preds = %1825
  %1829 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1830 = trunc i8 %1829 to i1
  br i1 %1830, label %1831, label %1883

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

1838:                                             ; preds = %1831
  %1839 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1840 = trunc i8 %1839 to i1
  br i1 %1840, label %1857, label %1841

1841:                                             ; preds = %1838
  %1842 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1843 = trunc i8 %1842 to i1
  br i1 %1843, label %1844, label %1849

1844:                                             ; preds = %1841
  %1845 = load ptr, ptr %21, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.ImGuiIO, ptr %1845, i32 0, i32 63
  %1847 = load i8, ptr %1846, align 8, !tbaa !123, !range !40, !noundef !41
  %1848 = trunc i8 %1847 to i1
  br i1 %1848, label %1849, label %1857

1849:                                             ; preds = %1844, %1841
  %1850 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1851 = trunc i8 %1850 to i1
  br i1 %1851, label %1869, label %1852

1852:                                             ; preds = %1849
  %1853 = load ptr, ptr %21, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.ImGuiIO, ptr %1853, i32 0, i32 63
  %1855 = load i8, ptr %1854, align 8, !tbaa !123, !range !40, !noundef !41
  %1856 = trunc i8 %1855 to i1
  br i1 %1856, label %1857, label %1869

1857:                                             ; preds = %1852, %1844, %1838, %1831
  store i8 1, ptr %66, align 1, !tbaa !42
  %1858 = load ptr, ptr %21, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.ImGuiIO, ptr %1858, i32 0, i32 24
  %1860 = load i8, ptr %1859, align 4, !tbaa !167, !range !40, !noundef !41
  %1861 = trunc i8 %1860 to i1
  br i1 %1861, label %1862, label %1867

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

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

1867:                                             ; preds = %1862, %1857
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %1868

1868:                                             ; preds = %1867, %1865
  br label %1882

1869:                                             ; preds = %1852, %1849
  %1870 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1871 = trunc i8 %1870 to i1
  br i1 %1871, label %1881, label %1872

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

1877:                                             ; preds = %1872
  %1878 = load ptr, ptr %47, align 8, !tbaa !5
  %1879 = load i32, ptr %99, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1878, i32 noundef %1879)
  br label %1880

1880:                                             ; preds = %1877, %1872
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #14
  br label %1881

1881:                                             ; preds = %1880, %1869
  br label %1882

1882:                                             ; preds = %1881, %1868
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #14
  br label %2089

1883:                                             ; preds = %1828
  %1884 = load i8, ptr %97, align 1, !tbaa !42, !range !40, !noundef !41
  %1885 = trunc i8 %1884 to i1
  br i1 %1885, label %1886, label %1900

1886:                                             ; preds = %1883
  %1887 = load i32, ptr %15, align 4, !tbaa !9
  %1888 = and i32 %1887, 1048576
  %1889 = icmp ne i32 %1888, 0
  br i1 %1889, label %1890, label %1898

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

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

1896:                                             ; preds = %1890
  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 %1897

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

1898:                                             ; preds = %1886
  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 %1899

1899:                                             ; preds = %1898, %1897
  br label %2088

1900:                                             ; preds = %1883
  %1901 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1902 = trunc i8 %1901 to i1
  br i1 %1902, label %1906, label %1903

1903:                                             ; preds = %1900
  %1904 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1905 = trunc i8 %1904 to i1
  br i1 %1905, label %1906, label %1913

1906:                                             ; preds = %1903, %1900
  %1907 = load ptr, ptr %47, align 8, !tbaa !5
  %1908 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1909 = trunc i8 %1908 to i1
  %1910 = zext i1 %1909 to i64
  %1911 = select i1 %1909, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1907, i32 noundef %1911)
  %1912 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1912)
  br label %2087

1913:                                             ; preds = %1903
  %1914 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1915 = trunc i8 %1914 to i1
  br i1 %1915, label %1916, label %1920

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

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

1923:                                             ; preds = %1920
  %1924 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1925 = trunc i8 %1924 to i1
  br i1 %1925, label %1926, label %2020

1926:                                             ; preds = %1923, %1920
  %1927 = load ptr, ptr %21, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct.ImGuiIO, ptr %1927, i32 0, i32 37
  %1929 = load ptr, ptr %1928, align 8, !tbaa !168
  %1930 = icmp ne ptr %1929, null
  br i1 %1930, label %1931, label %2004

1931:                                             ; preds = %1926
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #14
  %1932 = load ptr, ptr %47, align 8, !tbaa !5
  %1933 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1932)
  br i1 %1933, label %1934, label %1944

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

1944:                                             ; preds = %1931
  br label %1945

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

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

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

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

2004:                                             ; preds = %1963, %1926
  %2005 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %2006 = trunc i8 %2005 to i1
  br i1 %2006, label %2007, label %2019

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

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

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

2019:                                             ; preds = %2012, %2004
  br label %2085

2020:                                             ; preds = %1923
  %2021 = load i8, ptr %90, align 1, !tbaa !42, !range !40, !noundef !41
  %2022 = trunc i8 %2021 to i1
  br i1 %2022, label %2023, label %2084

2023:                                             ; preds = %2020
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #14
  %2024 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %2024, ptr %104, align 8, !tbaa !5
  %2025 = load ptr, ptr %104, align 8, !tbaa !5
  %2026 = icmp ne ptr %2025, null
  br i1 %2026, label %2027, label %2083

2027:                                             ; preds = %2023
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #14
  %2028 = load ptr, ptr %104, align 8, !tbaa !5
  %2029 = call i64 @strlen(ptr noundef %2028) #16
  %2030 = trunc i64 %2029 to i32
  store i32 %2030, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #14
  %2031 = load i32, ptr %105, align 4, !tbaa !9
  %2032 = add nsw i32 %2031, 1
  %2033 = sext i32 %2032 to i64
  %2034 = mul i64 %2033, 2
  %2035 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %2034)
  store ptr %2035, 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
  %2036 = load ptr, ptr %104, align 8, !tbaa !5
  store ptr %2036, ptr %108, align 8, !tbaa !5
  br label %2037

2037:                                             ; preds = %2064, %2062, %2027
  %2038 = load ptr, ptr %108, align 8, !tbaa !5
  %2039 = load i8, ptr %2038, align 1, !tbaa !128
  %2040 = sext i8 %2039 to i32
  %2041 = icmp ne i32 %2040, 0
  br i1 %2041, label %2043, label %2042

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

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

2053:                                             ; preds = %2043
  store i32 6, ptr %19, align 4
  br label %2062, !llvm.loop !169

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

2062:                                             ; preds = %2054, %2053
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #14
  %2063 = load i32, ptr %19, align 4
  switch i32 %2063, label %3508 [
    i32 0, label %2064
    i32 6, label %2037
  ]

2064:                                             ; preds = %2062
  br label %2037, !llvm.loop !169

2065:                                             ; preds = %2042
  %2066 = load ptr, ptr %106, align 8, !tbaa !5
  %2067 = load i32, ptr %107, align 4, !tbaa !9
  %2068 = sext i32 %2067 to i64
  %2069 = getelementptr inbounds i16, ptr %2066, i64 %2068
  store i16 0, ptr %2069, align 2, !tbaa !150
  %2070 = load i32, ptr %107, align 4, !tbaa !9
  %2071 = icmp sgt i32 %2070, 0
  br i1 %2071, label %2072, label %2081

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

2081:                                             ; preds = %2072, %2065
  %2082 = load ptr, ptr %106, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2082)
  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 %2083

2083:                                             ; preds = %2081, %2023
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #14
  br label %2084

2084:                                             ; preds = %2083, %2020
  br label %2085

2085:                                             ; preds = %2084, %2019
  br label %2086

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

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

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

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

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

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

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

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

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

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

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

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

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

2099:                                             ; preds = %2098, %1619
  %2100 = load ptr, ptr %47, align 8, !tbaa !5
  %2101 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %2100)
  br i1 %2101, label %2102, label %2105

2102:                                             ; preds = %2099
  %2103 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2104 = trunc i8 %2103 to i1
  br label %2105

2105:                                             ; preds = %2102, %2099
  %2106 = phi i1 [ false, %2099 ], [ %2104, %2102 ]
  %2107 = zext i1 %2106 to i32
  %2108 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %2109 = trunc i8 %2108 to i1
  %2110 = zext i1 %2109 to i32
  %2111 = or i32 %2110, %2107
  %2112 = icmp ne i32 %2111, 0
  %2113 = zext i1 %2112 to i8
  store i8 %2113, 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 %2114

2114:                                             ; preds = %2105, %1411, %1406, %1400
  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
  %2115 = load ptr, ptr %20, align 8, !tbaa !5
  %2116 = getelementptr inbounds %struct.ImGuiContext, ptr %2115, i32 0, i32 44
  %2117 = load i32, ptr %2116, align 8, !tbaa !108
  %2118 = load i32, ptr %29, align 4, !tbaa !9
  %2119 = icmp eq i32 %2117, %2118
  br i1 %2119, label %2120, label %2589

2120:                                             ; preds = %2114
  %2121 = load ptr, ptr %47, align 8, !tbaa !5
  %2122 = icmp ne ptr %2121, null
  br i1 %2122, label %2123, label %2124

2123:                                             ; preds = %2120
  br label %2126

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

2125:                                             ; No predecessors!
  br label %2126

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

2129:                                             ; preds = %2126
  %2130 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2131 = trunc i8 %2130 to i1
  br i1 %2131, label %2203, label %2132

2132:                                             ; preds = %2129
  %2133 = load i32, ptr %15, align 4, !tbaa !9
  %2134 = and i32 %2133, 1048576
  %2135 = icmp ne i32 %2134, 0
  br i1 %2135, label %2136, label %2140

2136:                                             ; preds = %2132
  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
  %2137 = load ptr, ptr %47, align 8, !tbaa !5
  %2138 = load ptr, ptr %47, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2138, i32 0, i32 12
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2137, ptr noundef %2139, ptr noundef %112, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 2, ptr %112) #14
  br label %2202

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

2148:                                             ; preds = %2140
  %2149 = load ptr, ptr %47, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2149, i32 0, i32 7
  %2151 = getelementptr inbounds %struct.ImVector.29, ptr %2150, i32 0, i32 2
  %2152 = load ptr, ptr %2151, align 8, !tbaa !115
  store ptr %2152, ptr %110, align 8, !tbaa !5
  %2153 = load ptr, ptr %47, align 8, !tbaa !5
  %2154 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2153, i32 0, i32 7
  %2155 = getelementptr inbounds %struct.ImVector.29, ptr %2154, i32 0, i32 0
  %2156 = load i32, ptr %2155, align 8, !tbaa !170
  %2157 = sub nsw i32 %2156, 1
  store i32 %2157, 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)
  %2158 = load i32, ptr %111, align 4, !tbaa !9
  %2159 = icmp sgt i32 %2158, 0
  br i1 %2159, label %2160, label %2185

2160:                                             ; preds = %2148
  %2161 = load ptr, ptr %110, align 8, !tbaa !5
  %2162 = load ptr, ptr %110, align 8, !tbaa !5
  %2163 = load i32, ptr %111, align 4, !tbaa !9
  %2164 = sext i32 %2163 to i64
  %2165 = getelementptr inbounds i8, ptr %2162, i64 %2164
  %2166 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2161, ptr noundef %2165)
          to label %2167 unwind label %2181

2167:                                             ; preds = %2160
  %2168 = add nsw i32 %2166, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %113, i32 noundef %2168)
          to label %2169 unwind label %2181

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

2180:                                             ; preds = %2169
  br label %2185

2181:                                             ; preds = %2198, %2169, %2167, %2160
  %2182 = landingpad { ptr, i32 }
          cleanup
  %2183 = extractvalue { ptr, i32 } %2182, 0
  store ptr %2183, ptr %114, align 8
  %2184 = extractvalue { ptr, i32 } %2182, 1
  store i32 %2184, 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 %3503

2185:                                             ; preds = %2180, %2148
  %2186 = load ptr, ptr %47, align 8, !tbaa !5
  %2187 = load ptr, ptr %47, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2187, i32 0, i32 12
  %2189 = getelementptr inbounds %struct.ImVector.5, ptr %113, i32 0, i32 2
  %2190 = load ptr, ptr %2189, align 8, !tbaa !171
  %2191 = load i32, ptr %111, align 4, !tbaa !9
  %2192 = icmp sgt i32 %2191, 0
  br i1 %2192, label %2193, label %2197

2193:                                             ; preds = %2185
  %2194 = getelementptr inbounds %struct.ImVector.5, ptr %113, i32 0, i32 0
  %2195 = load i32, ptr %2194, align 8, !tbaa !172
  %2196 = sub nsw i32 %2195, 1
  br label %2198

2197:                                             ; preds = %2185
  br label %2198

2198:                                             ; preds = %2197, %2193
  %2199 = phi i32 [ %2196, %2193 ], [ 0, %2197 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2186, ptr noundef %2188, ptr noundef %2190, i32 noundef %2199)
          to label %2200 unwind label %2181

2200:                                             ; preds = %2198
  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 %2201

2201:                                             ; preds = %2200, %2140
  br label %2202

2202:                                             ; preds = %2201, %2136
  br label %2203

2203:                                             ; preds = %2202, %2129, %2126
  %2204 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2205 = trunc i8 %2204 to i1
  br i1 %2205, label %2230, label %2206

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

2230:                                             ; preds = %2206, %2203
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #14
  %2231 = load i8, ptr %82, align 1, !tbaa !42, !range !40, !noundef !41
  %2232 = trunc i8 %2231 to i1
  br i1 %2232, label %2233, label %2242

2233:                                             ; preds = %2230
  %2234 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %2235 = trunc i8 %2234 to i1
  br i1 %2235, label %2236, label %2240

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

2240:                                             ; preds = %2236, %2233
  %2241 = phi i1 [ false, %2233 ], [ %2239, %2236 ]
  br label %2242

2242:                                             ; preds = %2240, %2230
  %2243 = phi i1 [ true, %2230 ], [ %2241, %2240 ]
  %2244 = zext i1 %2243 to i8
  store i8 %2244, ptr %116, align 1, !tbaa !42
  %2245 = load i8, ptr %116, align 1, !tbaa !42, !range !40, !noundef !41
  %2246 = trunc i8 %2245 to i1
  br i1 %2246, label %2247, label %2588

2247:                                             ; preds = %2242
  %2248 = load i32, ptr %15, align 4, !tbaa !9
  %2249 = and i32 %2248, 524736
  %2250 = icmp ne i32 %2249, 0
  br i1 %2250, label %2251, label %2568

2251:                                             ; preds = %2247
  %2252 = load ptr, ptr %16, align 8, !tbaa !5
  %2253 = icmp ne ptr %2252, null
  br i1 %2253, label %2254, label %2255

2254:                                             ; preds = %2251
  br label %2257

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

2256:                                             ; No predecessors!
  br label %2257

2257:                                             ; preds = %2256, %2254
  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 !174
  %2258 = load i32, ptr %15, align 4, !tbaa !9
  %2259 = and i32 %2258, 64
  %2260 = icmp ne i32 %2259, 0
  br i1 %2260, label %2261, label %2265

2261:                                             ; preds = %2257
  %2262 = load i32, ptr %29, align 4, !tbaa !9
  %2263 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %2262, i32 noundef 0)
  br i1 %2263, label %2264, label %2265

2264:                                             ; preds = %2261
  store i32 64, ptr %117, align 4, !tbaa !9
  store i32 512, ptr %118, align 4, !tbaa !174
  br label %2298

2265:                                             ; preds = %2261, %2257
  %2266 = load i32, ptr %15, align 4, !tbaa !9
  %2267 = and i32 %2266, 128
  %2268 = icmp ne i32 %2267, 0
  br i1 %2268, label %2269, label %2272

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

2271:                                             ; preds = %2269
  store i32 128, ptr %117, align 4, !tbaa !9
  store i32 515, ptr %118, align 4, !tbaa !174
  br label %2297

2272:                                             ; preds = %2269, %2265
  %2273 = load i32, ptr %15, align 4, !tbaa !9
  %2274 = and i32 %2273, 128
  %2275 = icmp ne i32 %2274, 0
  br i1 %2275, label %2276, label %2279

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

2278:                                             ; preds = %2276
  store i32 128, ptr %117, align 4, !tbaa !9
  store i32 516, ptr %118, align 4, !tbaa !174
  br label %2296

2279:                                             ; preds = %2276, %2272
  %2280 = load i32, ptr %15, align 4, !tbaa !9
  %2281 = and i32 %2280, 524288
  %2282 = icmp ne i32 %2281, 0
  br i1 %2282, label %2283, label %2289

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

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

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

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

2294:                                             ; preds = %2293, %2289
  br label %2295

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

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

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

2298:                                             ; preds = %2297, %2264
  %2299 = load i32, ptr %117, align 4, !tbaa !9
  %2300 = icmp ne i32 %2299, 0
  br i1 %2300, label %2301, label %2567

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

2312:                                             ; preds = %2301
  %2313 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2319

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

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

2372:                                             ; preds = %2319
  %2373 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2379

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

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

2385:                                             ; preds = %2379
  br label %2388

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

2387:                                             ; No predecessors!
  br label %2388

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

2395:                                             ; preds = %2388
  br label %2398

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

2397:                                             ; No predecessors!
  br label %2398

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

2403:                                             ; preds = %2398
  br label %2406

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

2405:                                             ; No predecessors!
  br label %2406

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

2415:                                             ; preds = %2406
  %2416 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2417 = trunc i8 %2416 to i1
  br i1 %2417, label %2418, label %2433

2418:                                             ; preds = %2415, %2406
  %2419 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  %2420 = load ptr, ptr %2419, align 8, !tbaa !182
  %2421 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  %2422 = load ptr, ptr %2421, align 8, !tbaa !182
  %2423 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 10
  %2424 = load i32, ptr %2423, align 4, !tbaa !186
  %2425 = sext i32 %2424 to i64
  %2426 = getelementptr inbounds i8, ptr %2422, i64 %2425
  %2427 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2420, ptr noundef %2426)
  %2428 = load ptr, ptr %47, align 8, !tbaa !5
  %2429 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2428, i32 0, i32 12
  %2430 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2429, i32 0, i32 0
  store i32 %2427, ptr %2430, align 4, !tbaa !152
  %2431 = load ptr, ptr %47, align 8, !tbaa !5
  %2432 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2431, i32 0, i32 14
  store i8 1, ptr %2432, align 4, !tbaa !155
  br label %2433

2433:                                             ; preds = %2418, %2415
  %2434 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2435 = load i32, ptr %2434, align 8, !tbaa !187
  %2436 = load i32, ptr %123, align 4, !tbaa !9
  %2437 = icmp ne i32 %2435, %2436
  br i1 %2437, label %2441, label %2438

2438:                                             ; preds = %2433
  %2439 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2440 = trunc i8 %2439 to i1
  br i1 %2440, label %2441, label %2467

2441:                                             ; preds = %2438, %2433
  %2442 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2443 = load i32, ptr %2442, align 8, !tbaa !187
  %2444 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 10
  %2445 = load i32, ptr %2444, align 4, !tbaa !186
  %2446 = icmp eq i32 %2443, %2445
  br i1 %2446, label %2447, label %2452

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

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

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

2467:                                             ; preds = %2462, %2438
  %2468 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 12
  %2469 = load i32, ptr %2468, align 4, !tbaa !188
  %2470 = load i32, ptr %124, align 4, !tbaa !9
  %2471 = icmp ne i32 %2469, %2470
  br i1 %2471, label %2475, label %2472

2472:                                             ; preds = %2467
  %2473 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2474 = trunc i8 %2473 to i1
  br i1 %2474, label %2475, label %2501

2475:                                             ; preds = %2472, %2467
  %2476 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 12
  %2477 = load i32, ptr %2476, align 4, !tbaa !188
  %2478 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2479 = load i32, ptr %2478, align 8, !tbaa !187
  %2480 = icmp eq i32 %2477, %2479
  br i1 %2480, label %2481, label %2486

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

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

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

2501:                                             ; preds = %2496, %2472
  %2502 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2503 = trunc i8 %2502 to i1
  br i1 %2503, label %2504, label %2566

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

2508:                                             ; preds = %2504
  br label %2511

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

2510:                                             ; No predecessors!
  br label %2511

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

2519:                                             ; preds = %2511
  br label %2522

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

2521:                                             ; No predecessors!
  br label %2522

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

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

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

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

2566:                                             ; preds = %2547, %2501
  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 64, ptr %119) #14
  br label %2567

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

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

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

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

2587:                                             ; preds = %2579, %2571, %2568
  br label %2588

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

2589:                                             ; preds = %2588, %2114
  %2590 = load ptr, ptr %110, align 8, !tbaa !5
  %2591 = icmp ne ptr %2590, null
  br i1 %2591, label %2592, label %2644

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

2595:                                             ; preds = %2592
  br label %2598

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

2597:                                             ; No predecessors!
  br label %2598

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

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

2632:                                             ; preds = %2601
  br label %2635

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

2634:                                             ; No predecessors!
  br label %2635

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

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

2644:                                             ; preds = %2636, %2589
  %2645 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %2646 = trunc i8 %2645 to i1
  br i1 %2646, label %2647, label %2654

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

2653:                                             ; preds = %2647
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2654

2654:                                             ; preds = %2653, %2647, %2644
  %2655 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2656 = trunc i8 %2655 to i1
  br i1 %2656, label %2667, label %2657

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

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

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

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

2697:                                             ; preds = %2692, %2688
  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
  %2698 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2699 = trunc i8 %2698 to i1
  br i1 %2699, label %2700, label %2705

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

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

2707:                                             ; preds = %2705, %2700
  %2708 = phi ptr [ %2704, %2700 ], [ %2706, %2705 ]
  store ptr %2708, 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
  %2709 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %2710 = trunc i8 %2709 to i1
  br i1 %2710, label %2711, label %2717

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

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

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

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

2726:                                             ; preds = %2723
  br label %2729

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

2728:                                             ; No predecessors!
  br label %2729

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

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

2739:                                             ; preds = %2732, %2729
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #14
  %2740 = load ptr, ptr %47, align 8, !tbaa !5
  %2741 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2740, i32 0, i32 5
  %2742 = getelementptr inbounds %struct.ImVector.5, ptr %2741, i32 0, i32 2
  %2743 = load ptr, ptr %2742, align 8, !tbaa !120
  store ptr %2743, 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
  %2744 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2745 = trunc i8 %2744 to i1
  br i1 %2745, label %2746, label %2758

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

2758:                                             ; preds = %2746, %2739
  %2759 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %2760 = trunc i8 %2759 to i1
  br i1 %2760, label %2761, label %2778

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

2778:                                             ; preds = %2761, %2758
  %2779 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2780 = trunc i8 %2779 to i1
  %2781 = zext i1 %2780 to i64
  %2782 = select i1 %2780, i32 1, i32 0
  %2783 = load i32, ptr %140, align 4, !tbaa !9
  %2784 = add nsw i32 %2783, %2782
  store i32 %2784, 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
  %2785 = load ptr, ptr %135, align 8, !tbaa !5
  store ptr %2785, ptr %142, align 8, !tbaa !5
  br label %2786

2786:                                             ; preds = %2835, %2778
  %2787 = load ptr, ptr %142, align 8, !tbaa !5
  %2788 = load i16, ptr %2787, align 2, !tbaa !150
  %2789 = zext i16 %2788 to i32
  %2790 = icmp ne i32 %2789, 0
  br i1 %2790, label %2792, label %2791

2791:                                             ; preds = %2786
  store i32 7, ptr %19, align 4
  br label %2838

2792:                                             ; preds = %2786
  %2793 = load ptr, ptr %142, align 8, !tbaa !5
  %2794 = load i16, ptr %2793, align 2, !tbaa !150
  %2795 = zext i16 %2794 to i32
  %2796 = icmp eq i32 %2795, 10
  br i1 %2796, label %2797, label %2834

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

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

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

2814:                                             ; preds = %2808
  store i32 7, ptr %19, align 4
  br label %2838

2815:                                             ; preds = %2808
  br label %2816

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

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

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

2831:                                             ; preds = %2825
  store i32 7, ptr %19, align 4
  br label %2838

2832:                                             ; preds = %2825
  br label %2833

2833:                                             ; preds = %2832, %2820, %2816
  br label %2834

2834:                                             ; preds = %2833, %2792
  br label %2835

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

2838:                                             ; preds = %2831, %2814, %2791
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #14
  br label %2839

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

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

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

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

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

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

2898:                                             ; preds = %2878, %2855
  %2899 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2900 = trunc i8 %2899 to i1
  br i1 %2900, label %2901, label %2910

2901:                                             ; preds = %2898
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #14
  %2902 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2903 = load float, ptr %2902, align 4, !tbaa !97
  %2904 = load i32, ptr %141, align 4, !tbaa !9
  %2905 = sitofp i32 %2904 to float
  %2906 = load ptr, ptr %20, align 8, !tbaa !5
  %2907 = getelementptr inbounds %struct.ImGuiContext, ptr %2906, i32 0, i32 7
  %2908 = load float, ptr %2907, align 8, !tbaa !45
  %2909 = fmul float %2905, %2908
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %145, float noundef %2903, float noundef %2909)
  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 %2910

2910:                                             ; preds = %2901, %2898
  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
  %2911 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2912 = trunc i8 %2911 to i1
  br i1 %2912, label %2913, label %3051

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

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

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

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

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

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

2969:                                             ; preds = %2958, %2949
  br label %2970

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

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

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

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

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

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

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

3019:                                             ; preds = %3008, %2994
  br label %3020

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

3048:                                             ; preds = %3020, %2974
  %3049 = load ptr, ptr %47, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3049, i32 0, i32 14
  store i8 0, ptr %3050, align 4, !tbaa !155
  br label %3051

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

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

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

3102:                                             ; preds = %3098
  store i32 10, ptr %19, align 4
  br label %3184

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

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

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

3120:                                             ; preds = %3114
  br label %3121

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

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

3131:                                             ; preds = %3125
  br label %3133

3132:                                             ; preds = %3125
  br label %3121, !llvm.loop !193

3133:                                             ; preds = %3131, %3121
  br label %3171

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

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

3151:                                             ; preds = %3142, %3134
  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
  %3152 = load float, ptr %153, align 4, !tbaa !44
  %3153 = load ptr, ptr %20, align 8, !tbaa !5
  %3154 = getelementptr inbounds %struct.ImGuiContext, ptr %3153, i32 0, i32 7
  %3155 = load float, ptr %3154, align 8, !tbaa !45
  %3156 = fsub float %3152, %3155
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %161, float noundef 0.000000e+00, float noundef %3156)
  %3157 = 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> %3157, 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
  %3158 = getelementptr inbounds %struct.ImVec2, ptr %158, i32 0, i32 0
  %3159 = load float, ptr %3158, align 4, !tbaa !97
  %3160 = load float, ptr %154, align 4, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %163, float noundef %3159, float noundef %3160)
  %3161 = 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> %3161, 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)
  %3162 = 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 %3162, label %3163, label %3170

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

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

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

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

3185:                                             ; preds = %3184
  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 %3186

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

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

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

3217:                                             ; preds = %3196
  br label %3219

3218:                                             ; preds = %3196
  br label %3219

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

3221:                                             ; preds = %3219, %3189
  %3222 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3223 = trunc i8 %3222 to i1
  br i1 %3223, label %3224, label %3308

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

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

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

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

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

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

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

3282:                                             ; preds = %3275, %3273
  %3283 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %3284 = trunc i8 %3283 to i1
  br i1 %3284, label %3307, label %3285

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

3307:                                             ; preds = %3285, %3282
  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 %3308

3308:                                             ; preds = %3307, %3221
  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 %3383

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

3312:                                             ; preds = %3309
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #14
  %3313 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %3314 = load float, ptr %3313, align 4, !tbaa !97
  %3315 = load ptr, ptr %133, align 8, !tbaa !5
  %3316 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3315, ptr noundef %134)
  %3317 = sitofp i32 %3316 to float
  %3318 = load ptr, ptr %20, align 8, !tbaa !5
  %3319 = getelementptr inbounds %struct.ImGuiContext, ptr %3318, i32 0, i32 7
  %3320 = load float, ptr %3319, align 8, !tbaa !45
  %3321 = fmul float %3317, %3320
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %176, float noundef %3314, float noundef %3321)
  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 %3348

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

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

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

3338:                                             ; preds = %3325, %3322
  %3339 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3340 = trunc i8 %3339 to i1
  br i1 %3340, label %3346, label %3341

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

3346:                                             ; preds = %3341, %3338
  br label %3347

3347:                                             ; preds = %3346, %3331
  br label %3348

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

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

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

3378:                                             ; preds = %3358
  br label %3380

3379:                                             ; preds = %3358
  br label %3380

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

3382:                                             ; preds = %3380, %3351
  br label %3383

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

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

3389:                                             ; preds = %3386
  call void @_ZN5ImGui7PopFontEv()
  br label %3390

3390:                                             ; preds = %3389, %3386, %3383
  %3391 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3392 = trunc i8 %3391 to i1
  br i1 %3392, label %3393, label %3442

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

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

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

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

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

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

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

3456:                                             ; preds = %3453, %3450, %3442
  %3457 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3458 = load float, ptr %3457, align 4, !tbaa !97
  %3459 = fcmp ogt float %3458, 0.000000e+00
  br i1 %3459, label %3460, label %3479

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

3479:                                             ; preds = %3460, %3456
  %3480 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %3481 = trunc i8 %3480 to i1
  br i1 %3481, label %3482, label %3488

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

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

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

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

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

3499:                                             ; preds = %3496, %3493
  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 %3500

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

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

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

3508:                                             ; preds = %2062, %1389
  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

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

; 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 @_ZN5ImGui8ShortcutEiji(i32 noundef, i32 noundef, i32 noundef) #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 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef, i1 noundef zeroext) #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 187}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !14, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !13, i64 132, !13, i64 140, !13, i64 148, !13, i64 156, !13, i64 164, !13, i64 172, !15, i64 180, !15, i64 181, !15, i64 182, !15, i64 183, !15, i64 184, !15, i64 185, !15, i64 186, !15, i64 187, !15, i64 188, !15, i64 189, !15, i64 190, !15, i64 191, !15, i64 192, !7, i64 193, !16, i64 194, !16, i64 196, !16, i64 198, !16, i64 200, !16, i64 202, !10, i64 204, !7, i64 208, !7, i64 209, !7, i64 210, !15, i64 211, !10, i64 212, !7, i64 216, !7, i64 217, !7, i64 218, !7, i64 219, !10, i64 220, !10, i64 221, !10, i64 222, !13, i64 224, !13, i64 232, !17, i64 240, !18, i64 256, !24, i64 488, !24, i64 504, !24, i64 520, !24, i64 536, !24, i64 552, !24, i64 568, !24, i64 584, !25, i64 600, !25, i64 604, !10, i64 608, !14, i64 612, !14, i64 616, !26, i64 624, !28, i64 640, !14, i64 656, !10, i64 660, !6, i64 664, !29, i64 672, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !7, i64 928, !7, i64 936, !10, i64 968, !10, i64 972, !10, i64 976, !15, i64 980}
!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 15400}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !48, i64 14288, !48, i64 14304, !49, i64 14320, !6, i64 15392, !14, i64 15400, !14, i64 15404, !50, i64 15408, !51, i64 15936, !10, i64 15944, !10, i64 15948, !10, i64 15952, !15, i64 15956, !15, i64 15957, !15, i64 15958, !15, i64 15959, !15, i64 15960, !6, i64 15968, !22, i64 15976, !22, i64 15992, !22, i64 16008, !52, i64 16024, !26, i64 16040, !10, i64 16056, !13, i64 16060, !6, i64 16072, !6, i64 16080, !6, i64 16088, !6, i64 16096, !6, i64 16104, !13, i64 16112, !10, i64 16120, !14, i64 16124, !13, i64 16128, !13, i64 16136, !10, i64 16144, !10, i64 16148, !10, i64 16152, !15, i64 16156, !15, i64 16157, !14, i64 16160, !14, i64 16164, !10, i64 16168, !10, i64 16172, !14, i64 16176, !15, i64 16180, !15, i64 16181, !15, i64 16182, !15, i64 16183, !15, i64 16184, !15, i64 16185, !13, i64 16188, !6, i64 16200, !53, i64 16208, !10, i64 16212, !10, i64 16216, !15, i64 16220, !15, i64 16221, !6, i64 16224, !10, i64 16232, !14, i64 16236, !7, i64 16240, !54, i64 17920, !10, i64 18232, !15, i64 18236, !10, i64 18240, !10, i64 18244, !10, i64 18248, !10, i64 18252, !56, i64 18256, !57, i64 18276, !58, i64 18336, !59, i64 18448, !60, i64 18464, !61, i64 18480, !17, i64 18496, !62, i64 18512, !63, i64 18528, !64, i64 18544, !64, i64 18560, !10, i64 18576, !65, i64 18584, !6, i64 18600, !10, i64 18608, !10, i64 18612, !10, i64 18616, !10, i64 18620, !10, i64 18624, !10, i64 18628, !10, i64 18632, !10, i64 18636, !10, i64 18640, !10, i64 18644, !10, i64 18648, !53, i64 18652, !20, i64 18656, !15, i64 18660, !15, i64 18661, !15, i64 18662, !15, i64 18663, !15, i64 18664, !15, i64 18665, !15, i64 18666, !10, i64 18668, !24, i64 18672, !15, i64 18688, !15, i64 18689, !15, i64 18690, !10, i64 18692, !10, i64 18696, !10, i64 18700, !10, i64 18704, !10, i64 18708, !10, i64 18712, !24, i64 18716, !24, i64 18732, !10, i64 18748, !10, i64 18752, !10, i64 18756, !66, i64 18760, !66, i64 18808, !66, i64 18856, !66, i64 18904, !10, i64 18952, !10, i64 18956, !6, i64 18960, !6, i64 18968, !6, i64 18976, !14, i64 18984, !14, i64 18988, !15, i64 18992, !13, i64 18996, !13, i64 19004, !14, i64 19012, !10, i64 19016, !15, i64 19020, !15, i64 19021, !15, i64 19022, !10, i64 19024, !10, i64 19028, !10, i64 19032, !67, i64 19040, !24, i64 19104, !10, i64 19120, !10, i64 19124, !14, i64 19128, !10, i64 19132, !10, i64 19136, !10, i64 19140, !10, i64 19144, !68, i64 19152, !7, i64 19168, !10, i64 19184, !69, i64 19192, !6, i64 19208, !10, i64 19216, !70, i64 19224, !71, i64 19240, !23, i64 19280, !39, i64 19296, !6, i64 19312, !73, i64 19320, !75, i64 19360, !76, i64 19376, !10, i64 19392, !10, i64 19396, !14, i64 19400, !14, i64 19404, !13, i64 19408, !77, i64 19416, !81, i64 23144, !10, i64 23264, !10, i64 23268, !10, i64 23272, !10, i64 23276, !14, i64 23280, !14, i64 23284, !10, i64 23288, !37, i64 23292, !83, i64 23308, !14, i64 23356, !14, i64 23360, !15, i64 23364, !15, i64 23365, !14, i64 23368, !14, i64 23372, !14, i64 23376, !14, i64 23380, !16, i64 23384, !16, i64 23386, !78, i64 23392, !17, i64 23408, !84, i64 23424, !84, i64 23440, !7, i64 23456, !15, i64 23457, !14, i64 23460, !85, i64 23464, !86, i64 23480, !87, i64 23496, !88, i64 23512, !89, i64 23528, !10, i64 23544, !7, i64 23552, !15, i64 23608, !90, i64 23612, !6, i64 23616, !85, i64 23624, !6, i64 23640, !6, i64 23648, !14, i64 23656, !15, i64 23660, !10, i64 23664, !10, i64 23668, !10, i64 23672, !10, i64 23676, !85, i64 23680, !91, i64 23696, !7, i64 23720, !7, i64 23721, !7, i64 23722, !15, i64 23723, !7, i64 23724, !10, i64 23728, !92, i64 23732, !93, i64 23752, !7, i64 23792, !10, i64 24032, !10, i64 24036, !14, i64 24040, !10, i64 24044, !10, i64 24048, !10, i64 24052, !78, i64 24056}
!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, !15, i64 124, !15, i64 125, !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, !6, i64 3576, !13, i64 3584, !7, i64 3592, !14, i64 3600, !14, i64 3604, !15, i64 3608, !15, i64 3609, !15, i64 3610, !15, i64 3611, !10, i64 3612, !7, i64 3616, !15, i64 14048, !13, i64 14052, !7, i64 14060, !7, i64 14104, !7, i64 14144, !7, i64 14149, !7, i64 14154, !7, i64 14164, !7, i64 14174, !7, i64 14179, !7, i64 14184, !7, i64 14192, !7, i64 14212, !7, i64 14232, !14, i64 14252, !15, i64 14256, !15, i64 14257, !7, i64 14258, !15, i64 14259, !16, i64 14260, !31, i64 14264}
!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 18284}
!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 16072}
!104 = !{!12, !20, i64 344}
!105 = !{!12, !16, i64 350}
!106 = !{!12, !14, i64 172}
!107 = !{!46, !10, i64 19016}
!108 = !{!46, !10, i64 16168}
!109 = !{!46, !10, i64 18616}
!110 = !{!46, !10, i64 18628}
!111 = !{!46, !53, i64 18652}
!112 = !{!46, !10, i64 16216}
!113 = !{!12, !14, i64 136}
!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 = !{!47, !15, i64 3608}
!124 = !{!77, !7, i64 96}
!125 = !{!47, !15, i64 113}
!126 = !{!46, !10, i64 18232}
!127 = !{!77, !10, i64 24}
!128 = !{!7, !7, i64 0}
!129 = !{!46, !6, i64 15392}
!130 = !{!81, !14, i64 20}
!131 = !{!81, !14, i64 100}
!132 = !{!81, !14, i64 104}
!133 = !{!81, !14, i64 108}
!134 = !{!81, !6, i64 64}
!135 = !{!81, !6, i64 56}
!136 = !{!137, !14, i64 4}
!137 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 0, !10, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36}
!138 = !{!81, !14, i64 16}
!139 = !{!77, !15, i64 3718}
!140 = !{!77, !10, i64 76}
!141 = !{!77, !10, i64 3720}
!142 = !{!46, !15, i64 16181}
!143 = !{!46, !10, i64 24052}
!144 = !{!47, !14, i64 3584}
!145 = !{!24, !14, i64 0}
!146 = !{!49, !14, i64 60}
!147 = !{!47, !14, i64 3588}
!148 = !{!12, !14, i64 260}
!149 = !{!77, !15, i64 3717}
!150 = !{!16, !16, i64 0}
!151 = !{!47, !15, i64 3609}
!152 = !{!77, !10, i64 84}
!153 = !{!77, !10, i64 88}
!154 = !{!77, !10, i64 92}
!155 = !{!77, !15, i64 3716}
!156 = !{!47, !14, i64 240}
!157 = !{!47, !14, i64 244}
!158 = !{!47, !15, i64 3610}
!159 = !{!47, !15, i64 3611}
!160 = !{!47, !10, i64 14264}
!161 = distinct !{!161, !162}
!162 = !{!"llvm.loop.mustprogress"}
!163 = !{!46, !15, i64 16180}
!164 = !{!77, !10, i64 100}
!165 = !{!47, !10, i64 0}
!166 = !{!47, !10, i64 4}
!167 = !{!47, !15, i64 116}
!168 = !{!47, !6, i64 176}
!169 = distinct !{!169, !162}
!170 = !{!77, !10, i64 56}
!171 = !{!31, !6, i64 8}
!172 = !{!31, !10, i64 0}
!173 = !{!77, !10, i64 40}
!174 = !{!175, !175, i64 0}
!175 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!176 = !{!177, !6, i64 0}
!177 = !{!"_ZTS26ImGuiInputTextCallbackData", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !16, i64 24, !175, i64 28, !6, i64 32, !10, i64 40, !10, i64 44, !15, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!178 = !{!177, !10, i64 8}
!179 = !{!177, !10, i64 12}
!180 = !{!177, !6, i64 16}
!181 = !{!177, !175, i64 28}
!182 = !{!177, !6, i64 32}
!183 = !{!177, !10, i64 40}
!184 = !{!177, !10, i64 44}
!185 = !{!177, !15, i64 48}
!186 = !{!177, !10, i64 52}
!187 = !{!177, !10, i64 56}
!188 = !{!177, !10, i64 60}
!189 = !{!24, !14, i64 4}
!190 = distinct !{!190, !162}
!191 = !{!37, !14, i64 12}
!192 = !{!37, !14, i64 4}
!193 = distinct !{!193, !162}
!194 = !{!12, !6, i64 664}
!195 = distinct !{!195, !162}
!196 = !{!47, !14, i64 16}
!197 = !{!77, !14, i64 3712}
!198 = !{!46, !15, i64 123}
!199 = !{!46, !15, i64 23424}
!200 = !{!46, !14, i64 23436}
!201 = !{!46, !10, i64 18248}
!202 = !{!57, !10, i64 8}
!203 = !{!46, !10, i64 18276}
!204 = !{!57, !10, i64 4}
!205 = !{!46, !10, i64 18280}
!206 = !{!46, !15, i64 23608}
!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 { ptr, 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 [86 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(981), 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 187
  %58 = load i8, ptr %57, align 1, !tbaa !5, !range !38, !noundef !39
  %59 = trunc nuw i8 %58 to i1
  br i1 %59, label %1492, 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 4016, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

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

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

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

75:                                               ; preds = %71
  tail call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.4, i32 noundef 4018, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  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
  %.not984 = icmp eq i32 %81, 0
  %82 = and i32 %5, 65536
  %83 = icmp eq i32 %82, 0
  %84 = and i32 %5, 262144
  %.not985 = icmp eq i32 %84, 0
  %85 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not985, %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 4031, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  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(981) %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) #14
  %.sroa.0534.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 15400
  %95 = load float, ptr %94, align 8, !tbaa !41
  %96 = fmul float %95, 8.000000e+00
  br label %98

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

98:                                               ; preds = %97, %93
  %99 = phi float [ %96, %93 ], [ %.sroa.0535.4.vec.extract, %97 ]
  %100 = getelementptr inbounds i8, ptr %77, i64 14380
  %101 = getelementptr inbounds i8, ptr %77, i64 14384
  %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.0534.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) #14
  %105 = extractelement <2 x float> %104, i64 0
  %.sroa.0535.0.vec.extract = extractelement <2 x float> %91, i64 0
  %106 = fcmp ogt float %.sroa.0535.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 14404
  %110 = load float, ptr %109, align 4, !tbaa !92
  %111 = fadd float %.sroa.0535.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) #14
  %116 = getelementptr inbounds i8, ptr %56, i64 256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %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) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  %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) #14
  %.sroa.0505.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) #14
  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 18276
  %126 = getelementptr inbounds i8, ptr %77, i64 18284
  %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 14652
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %128)
  %129 = getelementptr inbounds i8, ptr %77, i64 14388
  %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 14392
  %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) #14
  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) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  %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) #14
  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 16072
  %138 = load ptr, ptr %137, align 8, !tbaa !99
  %139 = getelementptr inbounds i8, ptr %138, i64 256
  %140 = getelementptr inbounds i8, ptr %138, i64 344
  %141 = load i32, ptr %140, align 8, !tbaa !100
  %142 = shl nuw i32 1, %141
  %143 = getelementptr inbounds i8, ptr %138, i64 350
  %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 172
  %149 = load float, ptr %148, align 4, !tbaa !102
  %150 = fsub float %.sroa.0505.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
  %.not986 = icmp eq i32 %153, 0
  br i1 %.not986, 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 18284
  %158 = load i32, ptr %157, align 4, !tbaa !94
  br label %159

159:                                              ; preds = %136, %156
  %.1900 = phi i32 [ %127, %136 ], [ %158, %156 ]
  %.sroa.0505.2 = phi float [ %150, %136 ], [ %.sroa.0505.0.copyload, %156 ]
  %.2898 = 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 19016
  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 %.1900, 256
  %166 = icmp ne i32 %165, 0
  %167 = getelementptr inbounds i8, ptr %77, i64 16168
  %168 = load i32, ptr %167, align 8, !tbaa !104
  %.not987 = icmp eq i32 %168, %90
  br i1 %.not987, label %181, label %169

169:                                              ; preds = %163
  %170 = getelementptr inbounds i8, ptr %77, i64 18616
  %171 = load i32, ptr %170, align 8, !tbaa !105
  %172 = icmp eq i32 %171, %90
  br i1 %172, label %173, label %181

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %77, i64 18628
  %175 = load i32, ptr %174, align 4, !tbaa !106
  %176 = and i32 %175, 1
  %.not988 = icmp eq i32 %176, 0
  br i1 %.not988, label %177, label %181

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %77, i64 18652
  %179 = load i32, ptr %178, align 4, !tbaa !107
  %180 = icmp eq i32 %179, 2
  br label %181

181:                                              ; preds = %169, %177, %173, %163
  %182 = phi i1 [ false, %163 ], [ false, %169 ], [ true, %173 ], [ %180, %177 ]
  br i1 %160, label %183, label %187

183:                                              ; preds = %181
  %184 = getelementptr inbounds i8, ptr %77, i64 14152
  %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 %.thread1139

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

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

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

201:                                              ; preds = %.thread1139, %200
  %202 = phi i1 [ %199, %.thread1139 ], [ false, %200 ]
  %203 = phi i1 [ %.ph, %.thread1139 ], [ false, %200 ]
  %204 = getelementptr inbounds i8, ptr %.2898, i64 136
  %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 %.thread1140

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

.thread1140:                                      ; preds = %206
  %brmerge1141 = select i1 %188, i1 true, i1 %208
  %218 = select i1 %brmerge1141, i1 true, i1 %182
  %spec.select11301143 = select i1 %218, i1 true, i1 %166
  %219 = select i1 %spec.select11301143, i1 true, i1 %207
  br i1 %219, label %220, label %.thread1148.thread

220:                                              ; preds = %.thread1140, %210
  %spec.select11301147 = phi i1 [ %spec.select11301143, %.thread1140 ], [ %spec.select1130, %210 ]
  %221 = phi i1 [ false, %.thread1140 ], [ %215, %210 ]
  %222 = load i32, ptr %167, align 8, !tbaa !104
  %.not989 = icmp ne i32 %222, %90
  %brmerge1027 = select i1 %.not989, i1 true, i1 %221
  br i1 %brmerge1027, label %224, label %.thread1148

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

224:                                              ; preds = %220, %223
  %225 = phi i8 [ 1, %220 ], [ 0, %223 ]
  %spec.select11301145 = phi i1 [ %spec.select11301147, %220 ], [ false, %223 ]
  %226 = phi i1 [ %221, %220 ], [ true, %223 ]
  %227 = getelementptr inbounds i8, ptr %77, i64 19416
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %227)
  %228 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %229 = trunc i64 %228 to i32
  %230 = getelementptr inbounds i8, ptr %77, i64 19472
  %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 19480
  %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 19424
  %236 = load i32, ptr %235, align 8, !tbaa !113
  %237 = icmp ne i32 %236, %90
  %.not1185 = select i1 %237, i1 true, i1 %226
  br i1 %.not1185, label %251, label %238

238:                                              ; preds = %224
  %239 = getelementptr inbounds i8, ptr %77, i64 19432
  %240 = load i32, ptr %239, align 8, !tbaa !114
  %.not990 = icmp eq i32 %240, %229
  br i1 %.not990, label %241, label %250

241:                                              ; preds = %238
  %242 = getelementptr inbounds i8, ptr %77, i64 19488
  %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 19464
  %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) #15
  %.not991 = icmp eq i32 %249, 0
  br i1 %.not991, label %251, label %250

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

251:                                              ; preds = %250, %245, %241, %224
  %.0913.shrunk = phi i1 [ false, %250 ], [ true, %245 ], [ true, %241 ], [ false, %224 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  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 19440
  %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 19456
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %254, i32 noundef 0)
  %255 = getelementptr inbounds i8, ptr %77, i64 19488
  store i8 0, ptr %255, align 8, !tbaa !115
  %256 = getelementptr inbounds i8, ptr %77, i64 19448
  %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 19428
  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 19432
  store i32 %264, ptr %265, align 8, !tbaa !114
  br i1 %.0913.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 19496
  store float 0.000000e+00, ptr %268, align 8, !tbaa !119
  %269 = getelementptr inbounds i8, ptr %77, i64 19500
  %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 %.0913.shrunk, label %277, label %281

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

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

282:                                              ; preds = %281, %277, %273
  %.1907 = 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 3616
  %286 = load i8, ptr %285, align 8, !tbaa !120, !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
  %.2908 = phi i8 [ 0, %272 ], [ 1, %288 ], [ %.1907, %284 ], [ %.1907, %283 ]
  %290 = and i32 %5, 8192
  %.not994 = icmp eq i32 %290, 0
  br i1 %.not994, label %293, label %291

291:                                              ; preds = %289
  %292 = getelementptr inbounds i8, ptr %77, i64 19512
  store i8 1, ptr %292, align 4, !tbaa !121
  br label %293

293:                                              ; preds = %291, %289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  br label %.thread1148

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

.thread1148:                                      ; preds = %220, %293
  %297 = phi i8 [ %225, %293 ], [ 1, %220 ]
  %spec.select11301144 = phi i1 [ %spec.select11301145, %293 ], [ %spec.select11301147, %220 ]
  %.3909 = phi i8 [ %.2908, %293 ], [ 0, %220 ]
  %.0901 = phi ptr [ %227, %293 ], [ %164, %220 ]
  %298 = getelementptr inbounds i8, ptr %77, i64 121
  %299 = load i8, ptr %298, align 1, !tbaa !122, !range !38, !noundef !39
  %300 = trunc nuw i8 %299 to i1
  %301 = load i32, ptr %167, align 8, !tbaa !104
  %.not995 = icmp ne i32 %301, %90
  %brmerge1030.not = and i1 %spec.select11301144, %.not995
  br i1 %brmerge1030.not, label %302, label %309

302:                                              ; preds = %.thread1148
  %.not996 = icmp eq ptr %.0901, null
  br i1 %.not996, label %.critedge, label %303

303:                                              ; preds = %302
  %304 = getelementptr inbounds i8, ptr %.0901, 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 4166, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  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, %.thread1148.thread
  %.ph1261 = phi i1 [ %296, %.thread1148.thread ], [ %300, %307 ]
  %.09011228.ph = phi ptr [ %164, %.thread1148.thread ], [ %.0901, %307 ]
  %.39091227.ph = phi i8 [ 0, %.thread1148.thread ], [ %.3909, %307 ]
  %.ph1262 = phi i8 [ 0, %.thread1148.thread ], [ %297, %307 ]
  %308 = load i32, ptr %167, align 8, !tbaa !104
  br label %309

309:                                              ; preds = %.sink.split, %.thread1148
  %310 = phi i1 [ %300, %.thread1148 ], [ %.ph1261, %.sink.split ]
  %.09011228 = phi ptr [ %.0901, %.thread1148 ], [ %.09011228.ph, %.sink.split ]
  %.39091227 = phi i8 [ %.3909, %.thread1148 ], [ %.39091227.ph, %.sink.split ]
  %311 = phi i8 [ %297, %.thread1148 ], [ %.ph1262, %.sink.split ]
  %312 = phi i32 [ %301, %.thread1148 ], [ %308, %.sink.split ]
  %313 = icmp eq i32 %312, %90
  br i1 %313, label %314, label %325

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 18232
  %318 = load i32, ptr %317, align 8, !tbaa !123
  %brmerge1031.not = icmp eq i32 %69, 0
  %spec.select.v = select i1 %brmerge1031.not, i32 3, i32 15
  %spec.select = or i32 %318, %spec.select.v
  store i32 %spec.select, ptr %317, align 8, !tbaa !123
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 519, i32 noundef %90, i32 noundef 0)
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 520, i32 noundef %90, i32 noundef 0)
  br i1 %68, label %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
  %.not997 = icmp eq i32 %74, 0
  br i1 %.not997, label %325, label %323

323:                                              ; preds = %322
  %324 = call noundef zeroext i1 @_ZN5ImGui18SetShortcutRoutingEiji(i32 noundef 512, i32 noundef %90, i32 noundef 0)
  br label %325

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

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

330:                                              ; preds = %329, %325
  %331 = phi i32 [ %.pre1202, %329 ], [ %326, %325 ]
  %332 = icmp eq i32 %331, %90
  br i1 %332, label %.thread1150, label %335

.thread1150:                                      ; preds = %330
  %333 = getelementptr inbounds i8, ptr %77, i64 14152
  %334 = load i8, ptr %333, align 8, !tbaa !108, !range !38, !noundef !39
  %.not1188 = xor i8 %311, 1
  %not.brmerge1033 = and i8 %334, %.not1188
  br label %338

335:                                              ; preds = %330
  %336 = icmp ne ptr %.09011228, null
  %337 = select i1 %336, i1 %207, i1 false
  br label %338

338:                                              ; preds = %.thread1150, %335
  %.09021152 = phi i8 [ 0, %335 ], [ %not.brmerge1033, %.thread1150 ]
  %339 = phi i1 [ %337, %335 ], [ true, %.thread1150 ]
  %340 = zext i1 %339 to i8
  %341 = icmp ne ptr %.09011228, null
  br i1 %341, label %342, label %.thread1153

342:                                              ; preds = %338
  %343 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br i1 %343, label %346, label %344

344:                                              ; preds = %342
  %345 = trunc i8 %.39091227 to i1
  br i1 %345, label %346, label %347

346:                                              ; preds = %344, %342
  br label %347

347:                                              ; preds = %346, %344
  %348 = phi i1 [ false, %344 ], [ %339, %346 ]
  %brmerge1034 = or i1 %339, %348
  %or.cond1128 = select i1 %80, i1 %brmerge1034, i1 false
  br i1 %or.cond1128, label %349, label %.thread1153

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

.thread1153:                                      ; preds = %338, %349, %347
  %.0916.in = phi i1 [ %364, %349 ], [ %348, %347 ], [ false, %338 ]
  %.0916 = zext i1 %.0916.in to i8
  %brmerge1035 = select i1 %339, i1 true, i1 %.0916.in
  br i1 %brmerge1035, label %369, label %365

365:                                              ; preds = %.thread1153
  %366 = load i32, ptr %167, align 8, !tbaa !104
  %367 = icmp eq i32 %366, %90
  %.not = xor i1 %80, true
  %368 = and i1 %367, %.not
  %or.cond1036 = and i1 %341, %368
  br i1 %or.cond1036, label %370, label %374

369:                                              ; preds = %.thread1153
  %.not.old = xor i1 %80, true
  %or.cond9.old = and i1 %341, %.not.old
  br i1 %or.cond9.old, label %370, label %374

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

374:                                              ; preds = %370, %369, %365
  %375 = phi i1 [ false, %369 ], [ false, %365 ], [ %373, %370 ]
  %.not998 = icmp eq ptr %1, null
  br i1 %.not998, label %384, label %376

376:                                              ; preds = %374
  br i1 %375, label %377, label %380

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

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

384:                                              ; preds = %380, %374
  %385 = phi i1 [ false, %374 ], [ %383, %380 ]
  %brmerge1037 = select i1 %.not984, i1 true, i1 %385
  br i1 %brmerge1037, label %416, label %386

386:                                              ; preds = %384
  %387 = getelementptr inbounds i8, ptr %77, i64 15392
  %388 = load ptr, ptr %387, align 8, !tbaa !126
  %389 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118) %388, i16 noundef zeroext 42)
  %390 = getelementptr inbounds i8, ptr %77, i64 23144
  %391 = load ptr, ptr %387, align 8, !tbaa !126
  %392 = getelementptr inbounds i8, ptr %391, i64 20
  %393 = load float, ptr %392, align 4, !tbaa !127
  %394 = getelementptr inbounds i8, ptr %77, i64 23164
  store float %393, ptr %394, align 4, !tbaa !127
  %395 = getelementptr inbounds i8, ptr %391, i64 100
  %396 = getelementptr inbounds i8, ptr %77, i64 23244
  %397 = load <2 x float>, ptr %395, align 4, !tbaa !93
  store <2 x float> %397, ptr %396, align 4, !tbaa !93
  %398 = getelementptr inbounds i8, ptr %391, i64 108
  %399 = load float, ptr %398, align 4, !tbaa !128
  %400 = getelementptr inbounds i8, ptr %77, i64 23252
  store float %399, ptr %400, align 4, !tbaa !128
  %401 = getelementptr inbounds i8, ptr %391, i64 64
  %402 = load ptr, ptr %401, align 8, !tbaa !129
  %403 = getelementptr inbounds i8, ptr %77, i64 23208
  store ptr %402, ptr %403, align 8, !tbaa !129
  %404 = getelementptr inbounds i8, ptr %77, i64 23200
  store ptr %389, ptr %404, align 8, !tbaa !130
  %405 = getelementptr inbounds i8, ptr %389, i64 4
  %406 = load float, ptr %405, align 4, !tbaa !131
  %407 = getelementptr inbounds i8, ptr %77, i64 23160
  store float %406, ptr %407, align 8, !tbaa !133
  %408 = getelementptr inbounds i8, ptr %77, i64 23184
  %409 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %408)
  br i1 %409, label %410, label %.critedge11

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

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

.critedge11:                                      ; preds = %410, %386, %412
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.4, i32 noundef 4234, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

415:                                              ; preds = %412
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %390)
  br label %416

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

419:                                              ; preds = %416
  br i1 %341, label %421, label %420

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

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

441:                                              ; preds = %421
  %442 = getelementptr inbounds i8, ptr %77, i64 3596
  %443 = load float, ptr %442, align 4, !tbaa !142
  %444 = getelementptr inbounds i8, ptr %.2898, i64 260
  %445 = load float, ptr %444, align 4, !tbaa !143
  %446 = fsub float %443, %445
  br label %451

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

451:                                              ; preds = %447, %441
  %452 = phi float [ %446, %441 ], [ %450, %447 ]
  %453 = trunc i8 %.39091227 to i1
  br i1 %453, label %454, label %456

454:                                              ; preds = %451
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  %455 = getelementptr inbounds i8, ptr %.09011228, i64 3717
  store i8 1, ptr %455, align 1, !tbaa !144
  br label %531

456:                                              ; preds = %451
  br i1 %160, label %457, label %497

457:                                              ; preds = %456
  %458 = getelementptr inbounds i8, ptr %77, i64 14162
  %459 = load i16, ptr %458, align 2, !tbaa !145
  %460 = icmp ugt i16 %459, 1
  br i1 %460, label %461, label %497

461:                                              ; preds = %457
  %462 = getelementptr inbounds i8, ptr %77, i64 3617
  %463 = load i8, ptr %462, align 1, !tbaa !146, !range !38, !noundef !39
  %464 = trunc nuw i8 %463 to i1
  br i1 %464, label %497, label %465

465:                                              ; preds = %461
  %466 = getelementptr inbounds i8, ptr %.09011228, i64 84
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09011228, ptr noundef nonnull %466, float noundef %440, float noundef %452)
  %467 = load i16, ptr %458, align 2, !tbaa !145
  %468 = and i16 %467, 1
  %469 = icmp eq i16 %468, 0
  %470 = load i32, ptr %466, align 4, !tbaa !147
  br i1 %469, label %471, label %487

471:                                              ; preds = %465
  %472 = icmp eq i32 %470, 0
  br i1 %472, label %477, label %473

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

477:                                              ; preds = %473, %471
  %478 = phi i1 [ true, %471 ], [ %476, %473 ]
  %479 = getelementptr inbounds i8, ptr %.09011228, i64 88
  %480 = load i32, ptr %479, align 4, !tbaa !148
  %481 = getelementptr inbounds i8, ptr %.09011228, i64 92
  %482 = load i32, ptr %481, align 4, !tbaa !149
  %.not999 = icmp eq i32 %480, %482
  %brmerge1039.not = and i1 %478, %.not999
  br i1 %brmerge1039.not, label %.thread1236, label %483

483:                                              ; preds = %477
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef 2097164)
  %.pre1203 = load i32, ptr %479, align 4, !tbaa !148
  %.pre1204 = load i32, ptr %481, align 4, !tbaa !149
  %.not1000 = icmp eq i32 %.pre1203, %.pre1204
  br i1 %.not1000, label %.thread1236, label %484

.thread1236:                                      ; preds = %477, %483
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef nonnull %466)
  br label %484

484:                                              ; preds = %.thread1236, %483
  %485 = load i32, ptr %466, align 4, !tbaa !147
  %486 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef nonnull %.09011228, i32 noundef %485)
  store i32 %486, ptr %466, align 4, !tbaa !147
  store i32 %486, ptr %481, align 4, !tbaa !149
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09011228, ptr noundef nonnull %466)
  br label %496

487:                                              ; preds = %465
  %488 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09011228, i32 noundef %470)
  %489 = icmp ne i16 %488, 10
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef 2097156)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef 6291461)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef 6291457)
  %brmerge1041.not = and i1 %68, %489
  br i1 %brmerge1041.not, label %490, label %494

490:                                              ; preds = %487
  %491 = getelementptr inbounds i8, ptr %.09011228, i64 88
  %492 = getelementptr inbounds i8, ptr %.09011228, i64 92
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %491, ptr noundef nonnull align 4 dereferenceable(4) %492)
  %493 = load i32, ptr %492, align 4, !tbaa !149
  store i32 %493, ptr %466, align 4, !tbaa !147
  br label %494

494:                                              ; preds = %487, %490
  %495 = getelementptr inbounds i8, ptr %.09011228, i64 3716
  store i8 0, ptr %495, align 4, !tbaa !150
  br label %496

496:                                              ; preds = %494, %484
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br label %531

497:                                              ; preds = %461, %457, %456
  %498 = getelementptr inbounds i8, ptr %77, i64 14152
  %499 = load i8, ptr %498, align 8, !tbaa !108, !range !38, !noundef !39
  %500 = trunc nuw i8 %499 to i1
  br i1 %500, label %501, label %514

501:                                              ; preds = %497
  %502 = getelementptr inbounds i8, ptr %.09011228, i64 3717
  %503 = load i8, ptr %502, align 1, !tbaa !144, !range !38, !noundef !39
  %504 = trunc nuw i8 %503 to i1
  br i1 %504, label %514, label %505

505:                                              ; preds = %501
  br i1 %160, label %506, label %531

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

511:                                              ; preds = %506
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09011228, ptr noundef nonnull %510, float noundef %440, float noundef %452)
  br label %513

512:                                              ; preds = %506
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09011228, ptr noundef nonnull %510, float noundef %440, float noundef %452)
  br label %513

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

514:                                              ; preds = %501, %497
  %515 = trunc nuw i8 %428 to i1
  br i1 %515, label %516, label %531

516:                                              ; preds = %514
  %517 = getelementptr inbounds i8, ptr %.09011228, i64 3717
  %518 = load i8, ptr %517, align 1, !tbaa !144, !range !38, !noundef !39
  %519 = trunc nuw i8 %518 to i1
  br i1 %519, label %531, label %520

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

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

528:                                              ; preds = %524, %520
  %529 = getelementptr inbounds i8, ptr %.09011228, i64 84
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09011228, ptr noundef nonnull %529, float noundef %440, float noundef %452)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  %530 = getelementptr inbounds i8, ptr %.09011228, i64 3716
  store i8 1, ptr %530, align 4, !tbaa !150
  br label %531

531:                                              ; preds = %496, %514, %516, %524, %528, %505, %513, %454
  %532 = getelementptr inbounds i8, ptr %.09011228, i64 3717
  %533 = load i8, ptr %532, align 1, !tbaa !144, !range !38, !noundef !39
  %534 = trunc nuw i8 %533 to i1
  br i1 %534, label %535, label %539

535:                                              ; preds = %531
  %536 = load i8, ptr %427, align 8, !tbaa !108, !range !38, !noundef !39
  %537 = trunc nuw i8 %536 to i1
  br i1 %537, label %539, label %538

538:                                              ; preds = %535
  store i8 0, ptr %532, align 1, !tbaa !144
  br label %539

539:                                              ; preds = %538, %535, %531
  br i1 %.not982, label %547, label %540

540:                                              ; preds = %539
  %541 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %90, i32 noundef 0)
  %.not1042 = xor i1 %541, true
  %brmerge1043 = or i1 %80, %.not1042
  br i1 %brmerge1043, label %547, label %542

542:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #14
  store i32 9, ptr %20, align 4, !tbaa !96
  %543 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %543, label %544, label %546

544:                                              ; preds = %542
  %545 = load i32, ptr %20, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %545)
  br label %546

546:                                              ; preds = %544, %542
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #14
  br label %547

547:                                              ; preds = %540, %546, %539
  %548 = getelementptr inbounds i8, ptr %77, i64 3616
  %549 = load i8, ptr %548, align 8, !tbaa !120, !range !38, !noundef !39
  %550 = trunc nuw i8 %549 to i1
  br i1 %550, label %551, label %556

551:                                              ; preds = %547
  %552 = getelementptr inbounds i8, ptr %77, i64 3618
  %553 = load i8, ptr %552, align 2, !tbaa !153, !range !38, !noundef !39
  %554 = trunc nuw i8 %553 to i1
  %.not1044 = xor i1 %554, true
  %555 = select i1 %554, i1 %310, i1 false
  br i1 %555, label %557, label %561

556:                                              ; preds = %547
  br i1 %310, label %557, label %561

557:                                              ; preds = %551, %556
  %558 = getelementptr inbounds i8, ptr %77, i64 3619
  %559 = load i8, ptr %558, align 1, !tbaa !154, !range !38, !noundef !39
  %560 = trunc nuw i8 %559 to i1
  br label %561

561:                                              ; preds = %551, %556, %557
  %562 = phi i1 [ %310, %551 ], [ false, %556 ], [ %310, %557 ]
  %563 = phi i1 [ %.not1044, %551 ], [ false, %556 ], [ %560, %557 ]
  %564 = getelementptr inbounds i8, ptr %77, i64 14272
  %565 = load i32, ptr %564, align 8, !tbaa !155
  %566 = icmp sgt i32 %565, 0
  br i1 %566, label %567, label %580

567:                                              ; preds = %561
  %brmerge1047 = or i1 %80, %563
  %brmerge1048 = select i1 %brmerge1047, i1 true, i1 %182
  br i1 %brmerge1048, label %.loopexit1191, label %.lr.ph

.lr.ph:                                           ; preds = %567, %576
  %.09341192 = phi i32 [ %577, %576 ], [ 0, %567 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #14
  %568 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %564, i32 noundef %.09341192)
  %569 = load i16, ptr %568, align 2, !tbaa !145
  %570 = zext i16 %569 to i32
  store i32 %570, ptr %21, align 4, !tbaa !96
  %571 = icmp eq i16 %569, 9
  br i1 %571, label %576, label %572

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

574:                                              ; preds = %572
  %575 = load i32, ptr %21, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %575)
  br label %576

576:                                              ; preds = %572, %574, %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #14
  %577 = add nuw nsw i32 %.09341192, 1
  %578 = load i32, ptr %564, align 8, !tbaa !155
  %579 = icmp slt i32 %577, %578
  br i1 %579, label %.lr.ph, label %.loopexit1191, !llvm.loop !156

.loopexit1191:                                    ; preds = %576, %567
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %564, i32 noundef 0)
  br label %580

580:                                              ; preds = %561, %.loopexit1191, %416
  %581 = phi i1 [ %310, %416 ], [ %562, %.loopexit1191 ], [ %562, %561 ]
  %.0933 = phi i32 [ 0, %416 ], [ %423, %.loopexit1191 ], [ %423, %561 ]
  %582 = load i32, ptr %167, align 8, !tbaa !104
  %583 = icmp eq i32 %582, %90
  br i1 %583, label %584, label %881

584:                                              ; preds = %580
  %585 = getelementptr inbounds i8, ptr %77, i64 16180
  %586 = load i8, ptr %585, align 4, !tbaa !158, !range !38, !noundef !39
  %587 = trunc nuw i8 %586 to i1
  br i1 %587, label %.thread1239, label %588

588:                                              ; preds = %584
  %589 = trunc nuw i8 %.09021152 to i1
  br i1 %589, label %.thread1239, label %590

590:                                              ; preds = %588
  br i1 %341, label %592, label %591

591:                                              ; preds = %590
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4351, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

592:                                              ; preds = %590
  %593 = load float, ptr %101, align 4, !tbaa !91
  %594 = fsub float %.sroa.11.0.copyload, %593
  %595 = getelementptr inbounds i8, ptr %77, i64 15400
  %596 = load float, ptr %595, align 8, !tbaa !41
  %597 = fdiv float %594, %596
  %598 = fptosi float %597 to i32
  %599 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %598, i32 noundef 1)
  %600 = getelementptr inbounds i8, ptr %.09011228, i64 84
  %601 = getelementptr inbounds i8, ptr %.09011228, i64 100
  store i32 %599, ptr %601, align 4, !tbaa !159
  %602 = getelementptr inbounds i8, ptr %77, i64 3617
  %603 = load i8, ptr %602, align 1, !tbaa !146, !range !38, !noundef !39
  %604 = trunc nuw i8 %603 to i1
  %605 = select i1 %604, i32 4194304, i32 0
  %606 = getelementptr inbounds i8, ptr %77, i64 3618
  %607 = getelementptr inbounds i8, ptr %77, i64 3616
  %.in.in = select i1 %581, ptr %606, ptr %607
  %.in = load i8, ptr %.in.in, align 2, !tbaa !108, !range !38, !noundef !39
  %608 = trunc nuw i8 %.in to i1
  br i1 %581, label %609, label %620

609:                                              ; preds = %592
  %610 = getelementptr inbounds i8, ptr %77, i64 3619
  %611 = load i8, ptr %610, align 1, !tbaa !154, !range !38, !noundef !39
  %612 = trunc nuw i8 %611 to i1
  br i1 %612, label %613, label %620

613:                                              ; preds = %609
  %614 = load i8, ptr %607, align 8, !tbaa !120, !range !38, !noundef !39
  %615 = trunc nuw i8 %614 to i1
  br i1 %615, label %620, label %616

616:                                              ; preds = %613
  %617 = load i8, ptr %606, align 2, !tbaa !153, !range !38, !noundef !39
  %618 = trunc nuw i8 %617 to i1
  %619 = xor i1 %618, true
  br label %620

620:                                              ; preds = %616, %613, %609, %592
  %621 = phi i1 [ false, %613 ], [ false, %609 ], [ false, %592 ], [ %619, %616 ]
  %622 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2617, i32 noundef %90, i32 noundef 1)
  br i1 %622, label %627, label %623

623:                                              ; preds = %620
  %624 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8714, i32 noundef %90, i32 noundef 1)
  %625 = and i1 %.not984, %624
  %626 = xor i1 %625, true
  %brmerge1051 = or i1 %80, %626
  %.not1057 = xor i1 %68, true
  %brmerge1058 = or i1 %brmerge1051, %.not1057
  %not.brmerge1051 = xor i1 %brmerge1051, true
  br i1 %brmerge1058, label %630, label %628

627:                                              ; preds = %620
  %.not984.not1052 = xor i1 %.not984, true
  %brmerge1053 = or i1 %80, %.not984.not1052
  %.not1054 = xor i1 %68, true
  %brmerge1055 = or i1 %brmerge1053, %.not1054
  %not.brmerge1053 = xor i1 %brmerge1053, true
  br i1 %brmerge1055, label %630, label %628

628:                                              ; preds = %623, %627
  %629 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br label %630

630:                                              ; preds = %623, %627, %628
  %631 = phi i1 [ %not.brmerge1053, %627 ], [ %not.brmerge1051, %623 ], [ %629, %628 ]
  %632 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2596, i32 noundef %90, i32 noundef 0)
  br i1 %632, label %635, label %633

633:                                              ; preds = %630
  %634 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 4617, i32 noundef %90, i32 noundef 0)
  %brmerge1062.demorgan = and i1 %.not984, %634
  %brmerge1064.not = and i1 %68, %brmerge1062.demorgan
  br i1 %brmerge1064.not, label %637, label %639

635:                                              ; preds = %630
  %636 = and i32 %5, 67141632
  %brmerge1068.not = icmp eq i32 %636, 67108864
  br i1 %brmerge1068.not, label %637, label %639

637:                                              ; preds = %635, %633
  %638 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br label %639

639:                                              ; preds = %635, %633, %637
  %640 = phi i1 [ %.not984, %635 ], [ %brmerge1062.demorgan, %633 ], [ %638, %637 ]
  %641 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2615, i32 noundef %90, i32 noundef 1)
  br i1 %641, label %644, label %642

642:                                              ; preds = %639
  %643 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8713, i32 noundef %90, i32 noundef 1)
  br i1 %643, label %644, label %._crit_edge1216

._crit_edge1216:                                  ; preds = %642
  %.pre1217 = xor i1 %80, true
  br label %646

644:                                              ; preds = %642, %639
  %645 = xor i1 %80, true
  br label %646

646:                                              ; preds = %._crit_edge1216, %644
  %not..pre-phi = phi i1 [ %.pre1217, %._crit_edge1216 ], [ %645, %644 ]
  %647 = phi i1 [ false, %._crit_edge1216 ], [ %645, %644 ]
  %648 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2619, i32 noundef %90, i32 noundef 1)
  %spec.select1070 = and i1 %83, %not..pre-phi
  %spec.select1131 = and i1 %spec.select1070, %648
  %649 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2618, i32 noundef %90, i32 noundef 1)
  br i1 %649, label %653, label %650

650:                                              ; preds = %646
  br i1 %581, label %651, label %654

651:                                              ; preds = %650
  %652 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 10811, i32 noundef %90, i32 noundef 1)
  br i1 %652, label %653, label %654

653:                                              ; preds = %651, %646
  br label %654

654:                                              ; preds = %653, %651, %650
  %655 = phi i1 [ false, %651 ], [ false, %650 ], [ %spec.select1070, %653 ]
  %656 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2594, i32 noundef %90, i32 noundef 0)
  %657 = load i32, ptr %78, align 8, !tbaa !160
  %658 = and i32 %657, 2
  %.not1001 = icmp eq i32 %658, 0
  br i1 %.not1001, label %664, label %659

659:                                              ; preds = %654
  %660 = getelementptr inbounds i8, ptr %77, i64 12
  %661 = load i32, ptr %660, align 4, !tbaa !161
  %662 = and i32 %661, 1
  %663 = icmp ne i32 %662, 0
  br label %664

664:                                              ; preds = %659, %654
  %665 = phi i1 [ false, %654 ], [ %663, %659 ]
  %666 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %666, label %669, label %667

667:                                              ; preds = %664
  %668 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 615, i1 noundef zeroext true)
  br label %669

669:                                              ; preds = %667, %664
  %670 = phi i1 [ true, %664 ], [ %668, %667 ]
  br i1 %665, label %671, label %.sink.split1264

671:                                              ; preds = %669
  %672 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 622, i1 noundef zeroext false)
  br i1 %672, label %675, label %673

673:                                              ; preds = %671
  %674 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 621, i1 noundef zeroext false)
  br label %675

675:                                              ; preds = %671, %673
  %676 = phi i1 [ true, %671 ], [ %674, %673 ]
  %677 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 526, i32 noundef %90, i32 noundef 1)
  br i1 %677, label %679, label %.sink.split1264

.sink.split1264:                                  ; preds = %675, %669
  %.sink = phi i32 [ 526, %669 ], [ 620, %675 ]
  %.ph1265 = phi i1 [ false, %669 ], [ %676, %675 ]
  %678 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef %.sink, i32 noundef %90, i32 noundef 1)
  br label %679

679:                                              ; preds = %.sink.split1264, %675
  %680 = phi i1 [ %676, %675 ], [ %.ph1265, %.sink.split1264 ]
  %681 = phi i1 [ true, %675 ], [ %678, %.sink.split1264 ]
  %682 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %682, label %683, label %686

683:                                              ; preds = %679
  %684 = select i1 %608, i32 2097164, i32 2097152
  %spec.select1075 = select i1 %621, i32 2097156, i32 %684
  %685 = or disjoint i32 %spec.select1075, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %685)
  br label %.thread1161

686:                                              ; preds = %679
  %687 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %687, label %688, label %691

688:                                              ; preds = %686
  %689 = select i1 %608, i32 2097165, i32 2097153
  %spec.select1076 = select i1 %621, i32 2097157, i32 %689
  %690 = or disjoint i32 %spec.select1076, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %690)
  br label %.thread1161

691:                                              ; preds = %686
  %692 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  %.not1078 = xor i1 %68, true
  %brmerge1079.not = and i1 %68, %692
  br i1 %brmerge1079.not, label %693, label %705

693:                                              ; preds = %691
  %694 = load i8, ptr %607, align 8, !tbaa !120, !range !38, !noundef !39
  %695 = trunc nuw i8 %694 to i1
  br i1 %695, label %696, label %702

696:                                              ; preds = %693
  %697 = getelementptr inbounds i8, ptr %.2898, i64 136
  %698 = load float, ptr %697, align 4, !tbaa !110
  %699 = load float, ptr %595, align 8, !tbaa !41
  %700 = fsub float %698, %699
  %701 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %700, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2898, float noundef %701)
  br label %.thread1161

702:                                              ; preds = %693
  %703 = select i1 %621, i32 2097158, i32 2097154
  %704 = or disjoint i32 %703, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %704)
  br label %.thread1161

705:                                              ; preds = %691
  %706 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  %brmerge1082.not = and i1 %68, %706
  br i1 %brmerge1082.not, label %707, label %720

707:                                              ; preds = %705
  %708 = load i8, ptr %607, align 8, !tbaa !120, !range !38, !noundef !39
  %709 = trunc nuw i8 %708 to i1
  br i1 %709, label %710, label %717

710:                                              ; preds = %707
  %711 = getelementptr inbounds i8, ptr %.2898, i64 136
  %712 = load float, ptr %711, align 4, !tbaa !110
  %713 = load float, ptr %595, align 8, !tbaa !41
  %714 = fadd float %712, %713
  %715 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %716 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %714, float noundef %715)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2898, float noundef %716)
  br label %.thread1161

717:                                              ; preds = %707
  %718 = select i1 %621, i32 2097159, i32 2097155
  %719 = or disjoint i32 %718, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %719)
  br label %.thread1161

720:                                              ; preds = %705
  %721 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  %brmerge1085.not = and i1 %68, %721
  br i1 %brmerge1085.not, label %722, label %728

722:                                              ; preds = %720
  %723 = or disjoint i32 %605, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %723)
  %724 = sitofp i32 %599 to float
  %725 = load float, ptr %595, align 8, !tbaa !41
  %726 = fneg float %724
  %727 = call float @llvm.fmuladd.f32(float %726, float %725, float %209)
  br label %.thread1161

728:                                              ; preds = %720
  %729 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  %brmerge1088.not = and i1 %68, %729
  br i1 %brmerge1088.not, label %730, label %735

730:                                              ; preds = %728
  %731 = or disjoint i32 %605, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %731)
  %732 = sitofp i32 %599 to float
  %733 = load float, ptr %595, align 8, !tbaa !41
  %734 = call float @llvm.fmuladd.f32(float %732, float %733, float %209)
  br label %.thread1161

735:                                              ; preds = %728
  %736 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %736, label %737, label %741

737:                                              ; preds = %735
  %738 = load i8, ptr %607, align 8, !tbaa !120, !range !38, !noundef !39
  %739 = trunc nuw i8 %738 to i1
  %.v1008 = select i1 %739, i32 2097158, i32 2097156
  %740 = or disjoint i32 %.v1008, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %740)
  br label %.thread1161

741:                                              ; preds = %735
  %742 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %742, label %743, label %747

743:                                              ; preds = %741
  %744 = load i8, ptr %607, align 8, !tbaa !120, !range !38, !noundef !39
  %745 = trunc nuw i8 %744 to i1
  %.v = select i1 %745, i32 2097159, i32 2097157
  %746 = or disjoint i32 %.v, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %746)
  br label %.thread1161

747:                                              ; preds = %741
  %748 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  %.not1089 = xor i1 %748, true
  %brmerge1090 = or i1 %80, %.not1089
  %brmerge1091 = or i1 %631, %brmerge1090
  br i1 %brmerge1091, label %754, label %749

749:                                              ; preds = %747
  %750 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  %.not1092 = xor i1 %608, true
  %brmerge1093 = select i1 %750, i1 true, i1 %.not1092
  br i1 %brmerge1093, label %752, label %751

751:                                              ; preds = %749
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef 6291469)
  br label %752

752:                                              ; preds = %749, %751
  %753 = or disjoint i32 %605, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %753)
  br label %.thread1161

754:                                              ; preds = %747
  %755 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  %.not1094 = xor i1 %755, true
  %brmerge1095 = or i1 %80, %.not1094
  br i1 %brmerge1095, label %772, label %756

756:                                              ; preds = %754
  %757 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br i1 %757, label %770, label %758

758:                                              ; preds = %756
  br i1 %608, label %.sink.split1267, label %759

759:                                              ; preds = %758
  br i1 %581, label %760, label %770

760:                                              ; preds = %759
  %761 = getelementptr inbounds i8, ptr %77, i64 3619
  %762 = load i8, ptr %761, align 1, !tbaa !154, !range !38, !noundef !39
  %763 = trunc nuw i8 %762 to i1
  br i1 %763, label %764, label %770

764:                                              ; preds = %760
  %765 = load i8, ptr %606, align 2, !tbaa !153, !range !38, !noundef !39
  %766 = trunc nuw i8 %765 to i1
  br i1 %766, label %770, label %767

767:                                              ; preds = %764
  %768 = load i8, ptr %607, align 8, !tbaa !120, !range !38, !noundef !39
  %769 = trunc nuw i8 %768 to i1
  br i1 %769, label %770, label %.sink.split1267

.sink.split1267:                                  ; preds = %767, %758
  %.sink1268 = phi i32 [ 6291468, %758 ], [ 6291460, %767 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %.sink1268)
  br label %770

770:                                              ; preds = %.sink.split1267, %767, %764, %760, %759, %756
  %771 = or disjoint i32 %605, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %771)
  br label %.thread1161

772:                                              ; preds = %754
  %brmerge1096 = or i1 %670, %680
  br i1 %brmerge1096, label %773, label %790

773:                                              ; preds = %772
  %brmerge1098 = or i1 %680, %.not1078
  br i1 %brmerge1098, label %779, label %774

774:                                              ; preds = %773
  %775 = and i32 %5, 2048
  %.not1007 = icmp eq i32 %775, 0
  %776 = load i8, ptr %607, align 8, !tbaa !120, !range !38, !noundef !39
  %777 = trunc nuw i8 %776 to i1
  br i1 %.not1007, label %.critedge1100, label %778

778:                                              ; preds = %774
  br i1 %777, label %784, label %.thread1161

.critedge1100:                                    ; preds = %774
  br i1 %777, label %.thread1161, label %784

779:                                              ; preds = %773
  %780 = getelementptr inbounds i8, ptr %77, i64 124
  %781 = load i8, ptr %780, align 4, !tbaa !162, !range !38, !noundef !39
  %782 = trunc nuw i8 %781 to i1
  %.not1101 = xor i1 %782, true
  %brmerge1102 = or i1 %68, %.not1101
  br i1 %brmerge1102, label %.thread1161, label %783

783:                                              ; preds = %779
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br label %.thread1161

784:                                              ; preds = %778, %.critedge1100
  br i1 %80, label %.thread1161, label %785

785:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #14
  store i32 10, ptr %22, align 4, !tbaa !96
  %786 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %786, label %787, label %789

787:                                              ; preds = %785
  %788 = load i32, ptr %22, align 4, !tbaa !96
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %788)
  br label %789

789:                                              ; preds = %787, %785
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #14
  br label %.thread1161

790:                                              ; preds = %772
  br i1 %681, label %791, label %797

791:                                              ; preds = %790
  %792 = and i32 %5, 1048576
  %.not1006 = icmp eq i32 %792, 0
  br i1 %.not1006, label %.thread1161, label %793

793:                                              ; preds = %791
  %794 = getelementptr inbounds i8, ptr %.09011228, i64 16
  %795 = load i32, ptr %794, align 8, !tbaa !114
  %796 = icmp sgt i32 %795, 0
  %.0916.in. = select i1 %796, i1 %.0916.in, i1 false
  %.1104 = select i1 %796, i8 %340, i8 0
  %.0902. = select i1 %796, i8 %.09021152, i8 1
  br label %.thread1161

797:                                              ; preds = %790
  %brmerge1105 = or i1 %spec.select1131, %655
  br i1 %brmerge1105, label %798, label %799

798:                                              ; preds = %797
  %.mux1106 = select i1 %spec.select1131, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228, i32 noundef %.mux1106)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br label %.thread1161

799:                                              ; preds = %797
  br i1 %656, label %800, label %802

800:                                              ; preds = %799
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  %801 = getelementptr inbounds i8, ptr %.09011228, i64 3716
  store i8 1, ptr %801, align 4, !tbaa !150
  br label %.thread1161

802:                                              ; preds = %799
  %brmerge1107 = or i1 %631, %640
  br i1 %brmerge1107, label %803, label %849

803:                                              ; preds = %802
  %804 = getelementptr inbounds i8, ptr %77, i64 184
  %805 = load ptr, ptr %804, align 8, !tbaa !163
  %.not1005 = icmp eq ptr %805, null
  br i1 %.not1005, label %842, label %806

806:                                              ; preds = %803
  %807 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br i1 %807, label %808, label %814

808:                                              ; preds = %806
  %809 = getelementptr inbounds i8, ptr %.09011228, i64 88
  %810 = load i32, ptr %809, align 4, !tbaa !148
  %811 = getelementptr inbounds i8, ptr %.09011228, i64 92
  %812 = load i32, ptr %811, align 4, !tbaa !149
  %813 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %810, i32 noundef %812)
  br label %814

814:                                              ; preds = %806, %808
  %815 = phi i32 [ %813, %808 ], [ 0, %806 ]
  %816 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br i1 %816, label %817, label %823

817:                                              ; preds = %814
  %818 = getelementptr inbounds i8, ptr %.09011228, i64 88
  %819 = load i32, ptr %818, align 4, !tbaa !148
  %820 = getelementptr inbounds i8, ptr %.09011228, i64 92
  %821 = load i32, ptr %820, align 4, !tbaa !149
  %822 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %819, i32 noundef %821)
  br label %826

823:                                              ; preds = %814
  %824 = getelementptr inbounds i8, ptr %.09011228, i64 12
  %825 = load i32, ptr %824, align 4, !tbaa !118
  br label %826

826:                                              ; preds = %823, %817
  %827 = phi i32 [ %822, %817 ], [ %825, %823 ]
  %828 = getelementptr inbounds i8, ptr %.09011228, i64 32
  %829 = load ptr, ptr %828, align 8, !tbaa !117
  %830 = sext i32 %815 to i64
  %831 = getelementptr inbounds i16, ptr %829, i64 %830
  %832 = sext i32 %827 to i64
  %833 = getelementptr inbounds i16, ptr %829, i64 %832
  %834 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %831, ptr noundef %833)
  %835 = add nsw i32 %834, 1
  %836 = sext i32 %835 to i64
  %837 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %836)
  %838 = load ptr, ptr %828, align 8, !tbaa !117
  %839 = getelementptr inbounds i16, ptr %838, i64 %830
  %840 = getelementptr inbounds i16, ptr %838, i64 %832
  %841 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %837, i32 noundef %835, ptr noundef %839, ptr noundef %840)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %837)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %837)
  br label %842

842:                                              ; preds = %826, %803
  br i1 %631, label %843, label %.thread1161

843:                                              ; preds = %842
  %844 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br i1 %844, label %846, label %845

845:                                              ; preds = %843
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br label %846

846:                                              ; preds = %845, %843
  %847 = getelementptr inbounds i8, ptr %.09011228, i64 3716
  store i8 1, ptr %847, align 4, !tbaa !150
  %848 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09011228, ptr noundef nonnull %600)
  br label %.thread1161

849:                                              ; preds = %802
  br i1 %647, label %850, label %.thread1161

850:                                              ; preds = %849
  %851 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not1002 = icmp eq ptr %851, null
  br i1 %.not1002, label %.thread1161, label %852

852:                                              ; preds = %850
  %853 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %851) #15
  %854 = shl i64 %853, 32
  %sext1003 = add i64 %854, 4294967296
  %855 = ashr exact i64 %sext1003, 31
  %856 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %855)
  %857 = load i8, ptr %851, align 1, !tbaa !125
  %.not10041193 = icmp eq i8 %857, 0
  br i1 %.not10041193, label %._crit_edge.thread, label %.lr.ph1196

._crit_edge.thread:                               ; preds = %852
  store i16 0, ptr %856, align 2, !tbaa !145
  br label %876

._crit_edge:                                      ; preds = %871
  %858 = sext i32 %.1938 to i64
  %859 = getelementptr inbounds i16, ptr %856, i64 %858
  store i16 0, ptr %859, align 2, !tbaa !145
  %860 = icmp sgt i32 %.1938, 0
  br i1 %860, label %873, label %876

.lr.ph1196:                                       ; preds = %852, %871
  %.09371195 = phi i32 [ %.1938, %871 ], [ 0, %852 ]
  %.09391194 = phi ptr [ %863, %871 ], [ %851, %852 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #14
  %861 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %23, ptr noundef nonnull %.09391194, ptr noundef null)
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds i8, ptr %.09391194, i64 %862
  %864 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %23, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 4)
  br i1 %864, label %865, label %871, !llvm.loop !164

865:                                              ; preds = %.lr.ph1196
  %866 = load i32, ptr %23, align 4, !tbaa !96
  %867 = trunc i32 %866 to i16
  %868 = add nsw i32 %.09371195, 1
  %869 = sext i32 %.09371195 to i64
  %870 = getelementptr inbounds i16, ptr %856, i64 %869
  store i16 %867, ptr %870, align 2, !tbaa !145
  br label %871

871:                                              ; preds = %.lr.ph1196, %865
  %.1938 = phi i32 [ %868, %865 ], [ %.09371195, %.lr.ph1196 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #14
  %872 = load i8, ptr %863, align 1, !tbaa !125
  %.not1004 = icmp eq i8 %872, 0
  br i1 %.not1004, label %._crit_edge, label %.lr.ph1196

873:                                              ; preds = %._crit_edge
  %874 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.09011228, ptr noundef nonnull %600, ptr noundef nonnull %856, i32 noundef %.1938)
  %875 = getelementptr inbounds i8, ptr %.09011228, i64 3716
  store i8 1, ptr %875, align 4, !tbaa !150
  br label %876

876:                                              ; preds = %._crit_edge.thread, %873, %._crit_edge
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %856)
  br label %.thread1161

.thread1161:                                      ; preds = %778, %.critedge1100, %850, %876, %791, %793, %783, %789, %784, %779, %688, %717, %710, %730, %743, %770, %800, %849, %842, %846, %798, %752, %737, %722, %696, %702, %683
  %.0935 = phi i1 [ false, %683 ], [ false, %688 ], [ false, %696 ], [ false, %702 ], [ false, %710 ], [ false, %717 ], [ false, %722 ], [ false, %730 ], [ false, %737 ], [ false, %743 ], [ false, %798 ], [ false, %800 ], [ false, %846 ], [ false, %842 ], [ false, %849 ], [ false, %770 ], [ false, %752 ], [ false, %779 ], [ false, %784 ], [ false, %789 ], [ false, %783 ], [ %796, %793 ], [ true, %791 ], [ false, %876 ], [ false, %850 ], [ false, %.critedge1100 ], [ false, %778 ]
  %.1930 = phi i8 [ 0, %683 ], [ 0, %688 ], [ 0, %696 ], [ 0, %702 ], [ 0, %710 ], [ 0, %717 ], [ 0, %722 ], [ 0, %730 ], [ 0, %737 ], [ 0, %743 ], [ 0, %798 ], [ 0, %800 ], [ 0, %846 ], [ 0, %842 ], [ 0, %849 ], [ 0, %770 ], [ 0, %752 ], [ 1, %779 ], [ 0, %784 ], [ 0, %789 ], [ 1, %783 ], [ 0, %793 ], [ 0, %791 ], [ 0, %876 ], [ 0, %850 ], [ 1, %.critedge1100 ], [ 1, %778 ]
  %.1917 = phi i1 [ %.0916.in, %683 ], [ %.0916.in, %688 ], [ %.0916.in, %696 ], [ %.0916.in, %702 ], [ %.0916.in, %710 ], [ %.0916.in, %717 ], [ %.0916.in, %722 ], [ %.0916.in, %730 ], [ %.0916.in, %737 ], [ %.0916.in, %743 ], [ %.0916.in, %798 ], [ %.0916.in, %800 ], [ %.0916.in, %846 ], [ %.0916.in, %842 ], [ %.0916.in, %849 ], [ %.0916.in, %770 ], [ %.0916.in, %752 ], [ %.0916.in, %779 ], [ %.0916.in, %784 ], [ %.0916.in, %789 ], [ %.0916.in, %783 ], [ %.0916.in., %793 ], [ false, %791 ], [ %.0916.in, %876 ], [ %.0916.in, %850 ], [ %.0916.in, %.critedge1100 ], [ %.0916.in, %778 ]
  %.0914 = phi i8 [ %340, %683 ], [ %340, %688 ], [ %340, %696 ], [ %340, %702 ], [ %340, %710 ], [ %340, %717 ], [ %340, %722 ], [ %340, %730 ], [ %340, %737 ], [ %340, %743 ], [ %340, %798 ], [ %340, %800 ], [ %340, %846 ], [ %340, %842 ], [ %340, %849 ], [ %340, %770 ], [ %340, %752 ], [ %340, %779 ], [ %340, %784 ], [ %340, %789 ], [ %340, %783 ], [ %.1104, %793 ], [ 0, %791 ], [ %340, %876 ], [ %340, %850 ], [ %340, %.critedge1100 ], [ %340, %778 ]
  %.0910 = phi float [ %209, %683 ], [ %209, %688 ], [ %209, %696 ], [ %209, %702 ], [ %209, %710 ], [ %209, %717 ], [ %727, %722 ], [ %734, %730 ], [ %209, %737 ], [ %209, %743 ], [ %209, %798 ], [ %209, %800 ], [ %209, %846 ], [ %209, %842 ], [ %209, %849 ], [ %209, %770 ], [ %209, %752 ], [ %209, %779 ], [ %209, %784 ], [ %209, %789 ], [ %209, %783 ], [ %209, %793 ], [ %209, %791 ], [ %209, %876 ], [ %209, %850 ], [ %209, %.critedge1100 ], [ %209, %778 ]
  %.2904 = phi i8 [ %.09021152, %683 ], [ %.09021152, %688 ], [ %.09021152, %696 ], [ %.09021152, %702 ], [ %.09021152, %710 ], [ %.09021152, %717 ], [ %.09021152, %722 ], [ %.09021152, %730 ], [ %.09021152, %737 ], [ %.09021152, %743 ], [ %.09021152, %798 ], [ %.09021152, %800 ], [ %.09021152, %846 ], [ %.09021152, %842 ], [ %.09021152, %849 ], [ %.09021152, %770 ], [ %.09021152, %752 ], [ 1, %779 ], [ %.09021152, %784 ], [ %.09021152, %789 ], [ %.09021152, %783 ], [ %.0902., %793 ], [ 1, %791 ], [ %.09021152, %876 ], [ %.09021152, %850 ], [ 1, %.critedge1100 ], [ 1, %778 ]
  %877 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  %878 = select i1 %877, i8 %.0914, i8 0
  %879 = zext i1 %.1917 to i8
  %880 = or i8 %878, %879
  %.pre1205 = load i32, ptr %167, align 8, !tbaa !104
  br label %881

881:                                              ; preds = %.thread1161, %580
  %882 = phi i32 [ %.pre1205, %.thread1161 ], [ %582, %580 ]
  %.1936 = phi i1 [ %.0935, %.thread1161 ], [ false, %580 ]
  %.2931 = phi i8 [ %.1930, %.thread1161 ], [ 0, %580 ]
  %.2918 = phi i8 [ %880, %.thread1161 ], [ %.0916, %580 ]
  %.1915 = phi i8 [ %.0914, %.thread1161 ], [ %340, %580 ]
  %.1911 = phi float [ %.0910, %.thread1161 ], [ %209, %580 ]
  %.3905 = phi i8 [ %.2904, %.thread1161 ], [ %.09021152, %580 ]
  %883 = icmp eq i32 %882, %90
  br i1 %883, label %.thread1239, label %.thread1179

.thread1239:                                      ; preds = %588, %584, %881
  %.39051259 = phi i8 [ %.3905, %881 ], [ %.09021152, %584 ], [ %.09021152, %588 ]
  %.19111257 = phi float [ %.1911, %881 ], [ %209, %584 ], [ %209, %588 ]
  %.19151255 = phi i8 [ %.1915, %881 ], [ %340, %584 ], [ %340, %588 ]
  %.29181253 = phi i8 [ %.2918, %881 ], [ %.0916, %584 ], [ %.0916, %588 ]
  %.29311249 = phi i8 [ %.2931, %881 ], [ 0, %584 ], [ 0, %588 ]
  %.19361248 = phi i1 [ %.1936, %881 ], [ false, %584 ], [ false, %588 ]
  br i1 %341, label %885, label %884

884:                                              ; preds = %.thread1239
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4511, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

885:                                              ; preds = %.thread1239
  %.1936.not = xor i1 %.19361248, true
  %brmerge1108 = or i1 %80, %.1936.not
  br i1 %brmerge1108, label %920, label %886

886:                                              ; preds = %885
  %887 = and i32 %5, 1048576
  %.not1009 = icmp eq i32 %887, 0
  br i1 %.not1009, label %890, label %888

888:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %24) #14
  %889 = getelementptr inbounds i8, ptr %.09011228, i64 84
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.09011228, ptr noundef nonnull %889, ptr noundef nonnull %24, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %24) #14
  br label %.thread1165

890:                                              ; preds = %886
  %891 = getelementptr inbounds i8, ptr %.09011228, i64 64
  %892 = load ptr, ptr %891, align 8, !tbaa !112
  %893 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %892) #15
  %.not1010 = icmp eq i32 %893, 0
  br i1 %.not1010, label %.thread1165, label %894

894:                                              ; preds = %890
  %895 = getelementptr inbounds i8, ptr %.09011228, i64 56
  %896 = load i32, ptr %895, align 8, !tbaa !165
  %897 = add nsw i32 %896, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25)
  %898 = icmp sgt i32 %896, 1
  br i1 %898, label %899, label %912

899:                                              ; preds = %894
  %900 = zext nneg i32 %897 to i64
  %901 = getelementptr inbounds i8, ptr %892, i64 %900
  %902 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %892, ptr noundef %901)
          to label %903 unwind label %910

903:                                              ; preds = %899
  %904 = add nsw i32 %902, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %25, i32 noundef %904)
          to label %905 unwind label %910

905:                                              ; preds = %903
  %906 = getelementptr inbounds i8, ptr %25, i64 8
  %907 = load ptr, ptr %906, align 8, !tbaa !166
  %908 = load i32, ptr %25, align 8, !tbaa !167
  %909 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %907, i32 noundef %908, ptr noundef %892, ptr noundef %901, ptr noundef null)
          to label %912 unwind label %910

910:                                              ; preds = %912, %905, %903, %899
  %911 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #14
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  resume { ptr, i32 } %911

912:                                              ; preds = %905, %894
  %913 = getelementptr inbounds i8, ptr %.09011228, i64 84
  %914 = getelementptr inbounds i8, ptr %25, i64 8
  %915 = load ptr, ptr %914, align 8, !tbaa !166
  %916 = load i32, ptr %25, align 8
  %917 = add nsw i32 %916, -1
  %918 = select i1 %898, i32 %917, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.09011228, ptr noundef nonnull %913, ptr noundef %915, i32 noundef %918)
          to label %919 unwind label %910

919:                                              ; preds = %912
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #14
  br label %.thread1165

920:                                              ; preds = %885
  br i1 %80, label %933, label %.thread1165

.thread1165:                                      ; preds = %890, %919, %888, %920
  %.09401170 = phi ptr [ null, %920 ], [ null, %890 ], [ %892, %919 ], [ @.str, %888 ]
  %.09431168 = phi i32 [ 0, %920 ], [ 0, %890 ], [ %897, %919 ], [ 0, %888 ]
  %921 = getelementptr inbounds i8, ptr %.09011228, i64 72
  store i8 1, ptr %921, align 8, !tbaa !115
  %922 = getelementptr inbounds i8, ptr %.09011228, i64 40
  %923 = getelementptr inbounds i8, ptr %.09011228, i64 24
  %924 = load i32, ptr %923, align 8, !tbaa !124
  %925 = shl nsw i32 %924, 2
  %926 = or disjoint i32 %925, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %922, i32 noundef %926)
  %927 = getelementptr inbounds i8, ptr %.09011228, i64 48
  %928 = load ptr, ptr %927, align 8, !tbaa !116
  %929 = load i32, ptr %922, align 8, !tbaa !168
  %930 = getelementptr inbounds i8, ptr %.09011228, i64 32
  %931 = load ptr, ptr %930, align 8, !tbaa !117
  %932 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %928, i32 noundef %929, ptr noundef %931, ptr noundef null)
  br label %933

933:                                              ; preds = %.thread1165, %920
  %.09401171 = phi ptr [ %.09401170, %.thread1165 ], [ null, %920 ]
  %.09431169 = phi i32 [ %.09431168, %.thread1165 ], [ 0, %920 ]
  br i1 %.19361248, label %934, label %.critedge1110

934:                                              ; preds = %933
  %935 = trunc nuw i8 %.29311249 to i1
  %936 = and i32 %5, 32
  %937 = icmp ne i32 %936, 0
  %938 = and i1 %937, %935
  br i1 %938, label %.critedge1110, label %1084

.critedge1110:                                    ; preds = %933, %934
  %939 = and i32 %5, 524736
  %.not1011 = icmp eq i32 %939, 0
  br i1 %.not1011, label %1076, label %940

940:                                              ; preds = %.critedge1110
  br i1 %85, label %942, label %941

941:                                              ; preds = %940
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.4, i32 noundef 4560, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

942:                                              ; preds = %940
  br i1 %.not981, label %945, label %943

943:                                              ; preds = %942
  %944 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %90, i32 noundef 0)
  br i1 %944, label %.thread1173, label %945

945:                                              ; preds = %943, %942
  br i1 %.not979.not, label %.critedge1112, label %946

946:                                              ; preds = %945
  %947 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %947, label %.thread1173, label %948

948:                                              ; preds = %946
  %949 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %949, label %.thread1173, label %.critedge1112

.critedge1112:                                    ; preds = %945, %948
  %950 = and i32 %5, 524288
  %.not1012 = icmp eq i32 %950, 0
  br i1 %.not1012, label %955, label %951

951:                                              ; preds = %.critedge1112
  %952 = getelementptr inbounds i8, ptr %.09011228, i64 3718
  %953 = load i8, ptr %952, align 2, !tbaa !134, !range !38, !noundef !39
  %954 = trunc nuw i8 %953 to i1
  br i1 %954, label %.thread1173, label %955

955:                                              ; preds = %.critedge1112, %951
  %956 = and i32 %5, 256
  %.not1013 = icmp eq i32 %956, 0
  br i1 %.not1013, label %1076, label %.thread1173

.thread1173:                                      ; preds = %951, %948, %946, %943, %955
  %.09471178 = phi i32 [ 256, %955 ], [ 524288, %951 ], [ 128, %948 ], [ 128, %946 ], [ 64, %943 ]
  %.09481177 = phi i32 [ 0, %955 ], [ 0, %951 ], [ 516, %948 ], [ 515, %946 ], [ 512, %943 ]
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %26)
  store ptr %77, ptr %26, align 8, !tbaa !169
  %957 = getelementptr inbounds i8, ptr %26, i64 8
  store i32 %.09471178, ptr %957, align 8, !tbaa !172
  %958 = getelementptr inbounds i8, ptr %26, i64 12
  store i32 %5, ptr %958, align 4, !tbaa !173
  %959 = getelementptr inbounds i8, ptr %26, i64 16
  store ptr %7, ptr %959, align 8, !tbaa !174
  br i1 %80, label %963, label %960

960:                                              ; preds = %.thread1173
  %961 = getelementptr inbounds i8, ptr %.09011228, i64 48
  %962 = load ptr, ptr %961, align 8, !tbaa !116
  br label %963

963:                                              ; preds = %.thread1173, %960
  %964 = phi ptr [ %962, %960 ], [ %2, %.thread1173 ]
  %965 = getelementptr inbounds i8, ptr %26, i64 28
  store i32 %.09481177, ptr %965, align 4, !tbaa !175
  %966 = getelementptr inbounds i8, ptr %26, i64 32
  store ptr %964, ptr %966, align 8, !tbaa !176
  %967 = getelementptr inbounds i8, ptr %.09011228, i64 16
  %968 = load i32, ptr %967, align 8, !tbaa !114
  %969 = getelementptr inbounds i8, ptr %26, i64 40
  store i32 %968, ptr %969, align 8, !tbaa !177
  %970 = getelementptr inbounds i8, ptr %.09011228, i64 76
  %971 = load i32, ptr %970, align 4, !tbaa !135
  %972 = getelementptr inbounds i8, ptr %26, i64 44
  store i32 %971, ptr %972, align 4, !tbaa !178
  %973 = getelementptr inbounds i8, ptr %26, i64 48
  store i8 0, ptr %973, align 8, !tbaa !179
  %974 = getelementptr inbounds i8, ptr %.09011228, i64 24
  %975 = getelementptr inbounds i8, ptr %.09011228, i64 32
  %976 = load ptr, ptr %975, align 8, !tbaa !117
  %977 = getelementptr inbounds i8, ptr %.09011228, i64 84
  %978 = load i32, ptr %977, align 4, !tbaa !147
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds i16, ptr %976, i64 %979
  %981 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %976, ptr noundef %980)
  %982 = getelementptr inbounds i8, ptr %26, i64 52
  store i32 %981, ptr %982, align 4, !tbaa !180
  %983 = getelementptr inbounds i8, ptr %.09011228, i64 88
  %984 = load i32, ptr %983, align 4, !tbaa !148
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds i16, ptr %976, i64 %985
  %987 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %976, ptr noundef %986)
  %988 = getelementptr inbounds i8, ptr %26, i64 56
  store i32 %987, ptr %988, align 8, !tbaa !181
  %989 = getelementptr inbounds i8, ptr %.09011228, i64 92
  %990 = load i32, ptr %989, align 4, !tbaa !149
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds i16, ptr %976, i64 %991
  %993 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %976, ptr noundef %992)
  %994 = getelementptr inbounds i8, ptr %26, i64 60
  store i32 %993, ptr %994, align 4, !tbaa !182
  %995 = call noundef i32 %6(ptr noundef nonnull %26)
  br i1 %80, label %999, label %996

996:                                              ; preds = %963
  %997 = getelementptr inbounds i8, ptr %.09011228, i64 48
  %998 = load ptr, ptr %997, align 8, !tbaa !116
  br label %999

999:                                              ; preds = %963, %996
  %1000 = phi ptr [ %998, %996 ], [ %2, %963 ]
  %1001 = load ptr, ptr %966, align 8, !tbaa !176
  %1002 = icmp eq ptr %1001, %1000
  br i1 %1002, label %1004, label %1003

1003:                                             ; preds = %999
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.4, i32 noundef 4615, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1004:                                             ; preds = %999
  %1005 = load i32, ptr %972, align 4, !tbaa !178
  %1006 = load i32, ptr %970, align 4, !tbaa !135
  %1007 = icmp eq i32 %1005, %1006
  br i1 %1007, label %1009, label %1008

1008:                                             ; preds = %1004
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.4, i32 noundef 4616, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1009:                                             ; preds = %1004
  %1010 = load i32, ptr %958, align 4, !tbaa !173
  %1011 = icmp eq i32 %1010, %5
  br i1 %1011, label %1013, label %1012

1012:                                             ; preds = %1009
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.4, i32 noundef 4617, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1013:                                             ; preds = %1009
  %1014 = load i8, ptr %973, align 8, !tbaa !179, !range !38, !noundef !39
  %1015 = trunc nuw i8 %1014 to i1
  %1016 = load i32, ptr %982, align 4, !tbaa !180
  %.not1015 = icmp ne i32 %1016, %981
  %brmerge1115 = select i1 %.not1015, i1 true, i1 %1015
  br i1 %brmerge1115, label %1017, label %1022

1017:                                             ; preds = %1013
  %1018 = sext i32 %1016 to i64
  %1019 = getelementptr inbounds i8, ptr %1001, i64 %1018
  %1020 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1001, ptr noundef %1019)
  store i32 %1020, ptr %977, align 4, !tbaa !147
  %1021 = getelementptr inbounds i8, ptr %.09011228, i64 3716
  store i8 1, ptr %1021, align 4, !tbaa !150
  br label %1022

1022:                                             ; preds = %1013, %1017
  %1023 = load i32, ptr %988, align 8, !tbaa !181
  %.not1016 = icmp ne i32 %1023, %987
  %brmerge1116 = select i1 %.not1016, i1 true, i1 %1015
  br i1 %brmerge1116, label %1024, label %1036

1024:                                             ; preds = %1022
  %1025 = load i32, ptr %982, align 4, !tbaa !180
  %1026 = icmp eq i32 %1023, %1025
  br i1 %1026, label %1027, label %1029

1027:                                             ; preds = %1024
  %1028 = load i32, ptr %977, align 4, !tbaa !147
  br label %1034

1029:                                             ; preds = %1024
  %1030 = load ptr, ptr %966, align 8, !tbaa !176
  %1031 = sext i32 %1023 to i64
  %1032 = getelementptr inbounds i8, ptr %1030, i64 %1031
  %1033 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1030, ptr noundef %1032)
  br label %1034

1034:                                             ; preds = %1029, %1027
  %1035 = phi i32 [ %1028, %1027 ], [ %1033, %1029 ]
  store i32 %1035, ptr %983, align 4, !tbaa !148
  br label %1036

1036:                                             ; preds = %1022, %1034
  %1037 = load i32, ptr %994, align 4, !tbaa !182
  %.not1017 = icmp ne i32 %1037, %993
  %brmerge1117 = select i1 %.not1017, i1 true, i1 %1015
  br i1 %brmerge1117, label %1038, label %1050

1038:                                             ; preds = %1036
  %1039 = load i32, ptr %988, align 8, !tbaa !181
  %1040 = icmp eq i32 %1037, %1039
  br i1 %1040, label %1041, label %1043

1041:                                             ; preds = %1038
  %1042 = load i32, ptr %983, align 4, !tbaa !148
  br label %1048

1043:                                             ; preds = %1038
  %1044 = load ptr, ptr %966, align 8, !tbaa !176
  %1045 = sext i32 %1037 to i64
  %1046 = getelementptr inbounds i8, ptr %1044, i64 %1045
  %1047 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1044, ptr noundef %1046)
  br label %1048

1048:                                             ; preds = %1043, %1041
  %1049 = phi i32 [ %1042, %1041 ], [ %1047, %1043 ]
  store i32 %1049, ptr %989, align 4, !tbaa !149
  br label %1050

1050:                                             ; preds = %1036, %1048
  br i1 %1015, label %1051, label %1075

1051:                                             ; preds = %1050
  %1052 = icmp eq i32 %79, 0
  br i1 %1052, label %1054, label %1053

1053:                                             ; preds = %1051
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.4, i32 noundef 4624, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1054:                                             ; preds = %1051
  %1055 = load i32, ptr %969, align 8, !tbaa !177
  %1056 = load ptr, ptr %966, align 8, !tbaa !176
  %1057 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1056) #15
  %1058 = trunc i64 %1057 to i32
  %1059 = icmp eq i32 %1055, %1058
  br i1 %1059, label %1061, label %1060

1060:                                             ; preds = %1054
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.4, i32 noundef 4625, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1061:                                             ; preds = %1054
  call void @_ZL44InputTextReconcileUndoStateAfterUserCallbackP19ImGuiInputTextStatePKci(ptr noundef nonnull %.09011228, ptr noundef %1056, i32 noundef %1055)
  %1062 = load i32, ptr %969, align 8, !tbaa !177
  %1063 = icmp sle i32 %1062, %.0933
  %brmerge1119 = or i1 %.not985, %1063
  br i1 %brmerge1119, label %1068, label %1064

1064:                                             ; preds = %1061
  %1065 = load i32, ptr %974, align 8, !tbaa !124
  %1066 = sub i32 %1062, %.0933
  %1067 = add nsw i32 %1066, %1065
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %974, i32 noundef %1067)
  br label %1068

1068:                                             ; preds = %1061, %1064
  %1069 = load ptr, ptr %975, align 8, !tbaa !117
  %1070 = load i32, ptr %974, align 8, !tbaa !124
  %1071 = load ptr, ptr %966, align 8, !tbaa !176
  %1072 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1069, i32 noundef %1070, ptr noundef %1071, ptr noundef null, ptr noundef null)
  %1073 = getelementptr inbounds i8, ptr %.09011228, i64 12
  store i32 %1072, ptr %1073, align 4, !tbaa !118
  %1074 = load i32, ptr %969, align 8, !tbaa !177
  store i32 %1074, ptr %967, align 8, !tbaa !114
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09011228)
  br label %1075

1075:                                             ; preds = %1068, %1050
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #14
  br label %1076

1076:                                             ; preds = %955, %1075, %.critedge1110
  br i1 %80, label %1084, label %1077

1077:                                             ; preds = %1076
  %1078 = getelementptr inbounds i8, ptr %.09011228, i64 48
  %1079 = load ptr, ptr %1078, align 8, !tbaa !116
  %1080 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1079, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not1018 = icmp eq i32 %1080, 0
  br i1 %.not1018, label %1084, label %1081

1081:                                             ; preds = %1077
  %1082 = getelementptr inbounds i8, ptr %.09011228, i64 16
  %1083 = load i32, ptr %1082, align 8, !tbaa !114
  br label %1084

1084:                                             ; preds = %934, %1081, %1077, %1076
  %.2945 = phi i32 [ %.09431169, %1076 ], [ %1083, %1081 ], [ %.09431169, %1077 ], [ %.09431169, %934 ]
  %.2942 = phi ptr [ %.09401171, %1076 ], [ %1079, %1081 ], [ %.09401171, %1077 ], [ %.09401171, %934 ]
  %.not1019.not = icmp eq ptr %.2942, null
  br i1 %.not1019.not, label %.thread1179, label %1085

1085:                                             ; preds = %1084
  %1086 = icmp sgt i32 %.2945, -1
  br i1 %1086, label %1088, label %1087

1087:                                             ; preds = %1085
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.4, i32 noundef 4651, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1088:                                             ; preds = %1085
  br i1 %.not985, label %1106, label %1089

1089:                                             ; preds = %1088
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %27) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %27)
  store ptr %77, ptr %27, align 8, !tbaa !169
  %1090 = getelementptr inbounds i8, ptr %27, i64 8
  store i32 262144, ptr %1090, align 8, !tbaa !172
  %1091 = getelementptr inbounds i8, ptr %27, i64 12
  store i32 %5, ptr %1091, align 4, !tbaa !173
  %1092 = getelementptr inbounds i8, ptr %27, i64 32
  store ptr %2, ptr %1092, align 8, !tbaa !176
  %1093 = getelementptr inbounds i8, ptr %27, i64 40
  store i32 %.2945, ptr %1093, align 8, !tbaa !177
  %1094 = add nuw nsw i32 %.2945, 1
  %1095 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1094)
  %1096 = getelementptr inbounds i8, ptr %27, i64 44
  store i32 %1095, ptr %1096, align 4, !tbaa !178
  %1097 = getelementptr inbounds i8, ptr %27, i64 16
  store ptr %7, ptr %1097, align 8, !tbaa !174
  %1098 = call noundef i32 %6(ptr noundef nonnull %27)
  %1099 = load ptr, ptr %1092, align 8, !tbaa !176
  %1100 = load i32, ptr %1096, align 4, !tbaa !178
  %1101 = load i32, ptr %1093, align 8, !tbaa !177
  %1102 = add nsw i32 %1100, -1
  %1103 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1101, i32 noundef %1102)
  %.not1020 = icmp sgt i32 %1103, %1100
  br i1 %.not1020, label %1104, label %1105

1104:                                             ; preds = %1089
  call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.4, i32 noundef 4666, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1105:                                             ; preds = %1089
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #14
  br label %1106

1106:                                             ; preds = %1105, %1088
  %.3946 = phi i32 [ %1103, %1105 ], [ %.2945, %1088 ]
  %.0893 = phi i32 [ %1100, %1105 ], [ %3, %1088 ]
  %.0891 = phi ptr [ %1099, %1105 ], [ %2, %1088 ]
  %1107 = add nsw i32 %.3946, 1
  %1108 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1107, i32 noundef %.0893)
  %1109 = sext i32 %1108 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0891, ptr noundef nonnull %.2942, i64 noundef %1109)
  br label %.thread1179

.thread1179:                                      ; preds = %881, %1106, %1084
  %.39051258 = phi i8 [ %.39051259, %1106 ], [ %.39051259, %1084 ], [ %.3905, %881 ]
  %.19111256 = phi float [ %.19111257, %1106 ], [ %.19111257, %1084 ], [ %.1911, %881 ]
  %.19151254 = phi i8 [ %.19151255, %1106 ], [ %.19151255, %1084 ], [ %.1915, %881 ]
  %.29181252 = phi i8 [ %.29181253, %1106 ], [ %.29181253, %1084 ], [ %.2918, %881 ]
  %.29311250 = phi i8 [ %.29311249, %1106 ], [ %.29311249, %1084 ], [ %.2931, %881 ]
  %.not10191183 = phi i1 [ true, %1106 ], [ false, %1084 ], [ false, %881 ]
  %.1892 = phi ptr [ %.0891, %1106 ], [ %2, %1084 ], [ %2, %881 ]
  %1110 = trunc nuw i8 %.39051258 to i1
  br i1 %1110, label %1111, label %1115

1111:                                             ; preds = %.thread1179
  %1112 = load i32, ptr %167, align 8, !tbaa !104
  %1113 = icmp eq i32 %1112, %90
  br i1 %1113, label %1114, label %1115

1114:                                             ; preds = %1111
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1115

1115:                                             ; preds = %1114, %1111, %.thread1179
  br i1 %68, label %1121, label %1116

1116:                                             ; preds = %1115
  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
  %1117 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %1117, align 8
  %1118 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1119 = getelementptr inbounds i8, ptr %77, i64 14388
  %1120 = load float, ptr %1119, align 4, !tbaa !97
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %1118, i1 noundef zeroext true, float noundef %1120)
  br label %1121

1121:                                             ; preds = %1116, %1115
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #14
  %1122 = load float, ptr %11, align 8, !tbaa !140
  %1123 = getelementptr inbounds i8, ptr %11, i64 4
  %1124 = load float, ptr %1123, align 4, !tbaa !183
  %1125 = fadd float %.sroa.0505.2, %1122
  %1126 = fadd float %.sroa.11.0.copyload, %1124
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef %1122, float noundef %1124, float noundef %1125, float noundef %1126)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #14
  br i1 %68, label %1127, label %1130

1127:                                             ; preds = %1121
  %1128 = getelementptr inbounds i8, ptr %.2898, i64 256
  %1129 = load i64, ptr %1128, align 8
  br label %1133

1130:                                             ; preds = %1121
  %1131 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %100)
  %1132 = bitcast <2 x float> %1131 to i64
  br label %1133

1133:                                             ; preds = %1130, %1127
  %storemerge = phi i64 [ %1129, %1127 ], [ %1132, %1130 ]
  store i64 %storemerge, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %375, label %1134, label %1137

1134:                                             ; preds = %1133
  %1135 = getelementptr inbounds i8, ptr %.09011228, i64 48
  %1136 = load ptr, ptr %1135, align 8, !tbaa !116
  br label %1137

1137:                                             ; preds = %1133, %1134
  %1138 = phi ptr [ %1136, %1134 ], [ %.1892, %1133 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  store ptr null, ptr %31, align 8, !tbaa !40
  br i1 %385, label %1139, label %1142

1139:                                             ; preds = %1137
  %1140 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #15
  %1141 = getelementptr inbounds i8, ptr %1, i64 %1140
  store ptr %1141, ptr %31, align 8, !tbaa !40
  br label %1142

1142:                                             ; preds = %1139, %1137
  %1143 = phi ptr [ %1141, %1139 ], [ null, %1137 ]
  %.0932 = phi ptr [ %1, %1139 ], [ %1138, %1137 ]
  %1144 = trunc nuw i8 %.19151254 to i1
  br i1 %1144, label %1147, label %1145

1145:                                             ; preds = %1142
  %1146 = trunc nuw i8 %.29181252 to i1
  br i1 %1146, label %1147, label %1409

1147:                                             ; preds = %1145, %1142
  br i1 %341, label %1149, label %1148

1148:                                             ; preds = %1147
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4706, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1149:                                             ; preds = %1147
  br i1 %385, label %1155, label %1150

1150:                                             ; preds = %1149
  %1151 = getelementptr inbounds i8, ptr %.09011228, i64 16
  %1152 = load i32, ptr %1151, align 8, !tbaa !114
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds i8, ptr %.0932, i64 %1153
  store ptr %1154, ptr %31, align 8, !tbaa !40
  br label %1155

1155:                                             ; preds = %1150, %1149
  %.pre12111213 = phi ptr [ %1154, %1150 ], [ %1143, %1149 ]
  %1156 = getelementptr inbounds i8, ptr %.09011228, i64 32
  %1157 = load ptr, ptr %1156, align 8, !tbaa !117
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #14
  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 %1144, label %1158, label %1163

1158:                                             ; preds = %1155
  %1159 = getelementptr inbounds i8, ptr %.09011228, i64 84
  %1160 = load i32, ptr %1159, align 4, !tbaa !147
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds i16, ptr %1157, i64 %1161
  br label %1163

1163:                                             ; preds = %1158, %1155
  %.sroa.069.0 = phi ptr [ %1162, %1158 ], [ null, %1155 ]
  %.sroa.063.0 = phi i32 [ -1, %1158 ], [ %.sroa.063.0.copyload, %1155 ]
  %.0924 = phi i32 [ 1, %1158 ], [ 0, %1155 ]
  %1164 = trunc nuw i8 %.29181252 to i1
  br i1 %1164, label %1165, label %1174

1165:                                             ; preds = %1163
  %1166 = getelementptr inbounds i8, ptr %.09011228, i64 88
  %1167 = load i32, ptr %1166, align 4, !tbaa !148
  %1168 = getelementptr inbounds i8, ptr %.09011228, i64 92
  %1169 = load i32, ptr %1168, align 4, !tbaa !149
  %1170 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1167, i32 noundef %1169)
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds i16, ptr %1157, i64 %1171
  %1173 = add nuw nsw i32 %.0924, 1
  br label %1174

1174:                                             ; preds = %1165, %1163
  %.sroa.7.0 = phi ptr [ %1172, %1165 ], [ null, %1163 ]
  %.sroa.9.0 = phi i32 [ -1, %1165 ], [ %.sroa.9.0.copyload, %1163 ]
  %.1925 = phi i32 [ %1173, %1165 ], [ %.0924, %1163 ]
  %.lobit = lshr exact i32 %67, 26
  %1175 = add nuw nsw i32 %.1925, %.lobit
  br label %1176

1176:                                             ; preds = %1191, %1174
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1174 ], [ %.sroa.9.2, %1191 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1174 ], [ %.sroa.063.3, %1191 ]
  %.2926 = phi i32 [ %1175, %1174 ], [ %.4928, %1191 ]
  %.0921 = phi i32 [ 0, %1174 ], [ %.1922, %1191 ]
  %.0920 = phi ptr [ %1157, %1174 ], [ %1192, %1191 ]
  %1177 = load i16, ptr %.0920, align 2, !tbaa !145
  switch i16 %1177, label %1191 [
    i16 0, label %1193
    i16 10, label %1178
  ]

1178:                                             ; preds = %1176
  %1179 = add nsw i32 %.0921, 1
  %1180 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1180, label %1181, label %1185

1181:                                             ; preds = %1178
  %.not1022 = icmp ult ptr %.0920, %.sroa.069.0
  br i1 %.not1022, label %1185, label %1182

1182:                                             ; preds = %1181
  %1183 = add nsw i32 %.2926, -1
  %1184 = icmp slt i32 %.2926, 2
  br i1 %1184, label %1193, label %1185

1185:                                             ; preds = %1182, %1181, %1178
  %.sroa.063.2 = phi i32 [ %1179, %1182 ], [ -1, %1181 ], [ %.sroa.063.1, %1178 ]
  %.3927 = phi i32 [ %1183, %1182 ], [ %.2926, %1181 ], [ %.2926, %1178 ]
  %1186 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1186, label %1187, label %1191

1187:                                             ; preds = %1185
  %.not1023 = icmp ult ptr %.0920, %.sroa.7.0
  br i1 %.not1023, label %1191, label %1188

1188:                                             ; preds = %1187
  %1189 = add nsw i32 %.3927, -1
  %1190 = icmp slt i32 %.3927, 2
  br i1 %1190, label %1193, label %1191

1191:                                             ; preds = %1176, %1188, %1187, %1185
  %.sroa.9.2 = phi i32 [ %1179, %1188 ], [ -1, %1187 ], [ %.sroa.9.1, %1185 ], [ %.sroa.9.1, %1176 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1188 ], [ %.sroa.063.2, %1187 ], [ %.sroa.063.2, %1185 ], [ %.sroa.063.1, %1176 ]
  %.4928 = phi i32 [ %1189, %1188 ], [ %.3927, %1187 ], [ %.3927, %1185 ], [ %.2926, %1176 ]
  %.1922 = phi i32 [ %1179, %1188 ], [ %1179, %1187 ], [ %1179, %1185 ], [ %.0921, %1176 ]
  %1192 = getelementptr inbounds i8, ptr %.0920, i64 2
  br label %1176, !llvm.loop !184

1193:                                             ; preds = %1188, %1182, %1176
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1176 ], [ %.sroa.9.1, %1182 ], [ %1179, %1188 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1176 ], [ %1179, %1182 ], [ %.sroa.063.2, %1188 ]
  %.2923 = phi i32 [ %.0921, %1176 ], [ %1179, %1182 ], [ %1179, %1188 ]
  %1194 = add nsw i32 %.2923, 1
  %1195 = icmp eq i32 %.sroa.063.4, -1
  %spec.select1120 = select i1 %1195, i32 %1194, i32 %.sroa.063.4
  %1196 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1196, i32 %1194, i32 %.sroa.9.3
  %1197 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1157)
  %1198 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %77, ptr noundef %1197, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1198, i64 0
  store float %.sroa.045.0.vec.extract, ptr %32, align 4, !tbaa !185
  %1199 = sitofp i32 %spec.select1120 to float
  %1200 = getelementptr inbounds i8, ptr %77, i64 15400
  %1201 = load float, ptr %1200, align 8, !tbaa !41
  %1202 = fmul float %1201, %1199
  %1203 = getelementptr inbounds i8, ptr %32, i64 4
  store float %1202, ptr %1203, align 4, !tbaa !186
  %1204 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1204, label %1205, label %1212

1205:                                             ; preds = %1193
  %1206 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1157)
  %1207 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %77, ptr noundef %1206, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1207, i64 0
  store float %.sroa.044.0.vec.extract, ptr %33, align 4, !tbaa !185
  %1208 = uitofp nneg i32 %.sroa.9.4 to float
  %1209 = load float, ptr %1200, align 8, !tbaa !41
  %1210 = fmul float %1209, %1208
  %1211 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1210, ptr %1211, align 4, !tbaa !186
  br label %1212

1212:                                             ; preds = %1205, %1193
  %1213 = phi float [ %1209, %1205 ], [ %1201, %1193 ]
  br i1 %68, label %1214, label %1218

1214:                                             ; preds = %1212
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  %1215 = sitofp i32 %1194 to float
  %1216 = fmul float %1213, %1215
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %.sroa.0505.2, float noundef %1216)
  %1217 = load i64, ptr %34, align 8
  store i64 %1217, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  br label %1218

1218:                                             ; preds = %1214, %1212
  br i1 %1144, label %1219, label %1279

1219:                                             ; preds = %1218
  %1220 = getelementptr inbounds i8, ptr %.09011228, i64 3716
  %1221 = load i8, ptr %1220, align 4, !tbaa !150, !range !38, !noundef !39
  %1222 = trunc nuw i8 %1221 to i1
  br i1 %1222, label %1223, label %1279

1223:                                             ; preds = %1219
  %1224 = and i32 %5, 4096
  %.not1024 = icmp eq i32 %1224, 0
  br i1 %.not1024, label %1225, label %1245

1225:                                             ; preds = %1223
  %1226 = fmul float %.sroa.0505.2, 2.500000e-01
  %1227 = load float, ptr %32, align 4, !tbaa !185
  %1228 = getelementptr inbounds i8, ptr %.09011228, i64 80
  %1229 = load float, ptr %1228, align 8, !tbaa !119
  %1230 = fcmp olt float %1227, %1229
  br i1 %1230, label %1231, label %1236

1231:                                             ; preds = %1225
  %1232 = fsub float %1227, %1226
  %1233 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1232)
  %1234 = fptosi float %1233 to i32
  %1235 = sitofp i32 %1234 to float
  store float %1235, ptr %1228, align 8, !tbaa !119
  br label %1247

1236:                                             ; preds = %1225
  %1237 = load float, ptr %100, align 4, !tbaa !141
  %1238 = fsub float %.sroa.0505.2, %1237
  %1239 = fsub float %1227, %1238
  %1240 = fcmp ult float %1239, %1229
  br i1 %1240, label %1247, label %1241

1241:                                             ; preds = %1236
  %1242 = fadd float %1226, %1239
  %1243 = fptosi float %1242 to i32
  %1244 = sitofp i32 %1243 to float
  store float %1244, ptr %1228, align 8, !tbaa !119
  br label %1247

1245:                                             ; preds = %1223
  %1246 = getelementptr inbounds i8, ptr %.09011228, i64 80
  store float 0.000000e+00, ptr %1246, align 8, !tbaa !119
  br label %1247

1247:                                             ; preds = %1231, %1241, %1236, %1245
  br i1 %68, label %1248, label %1278

1248:                                             ; preds = %1247
  %1249 = load float, ptr %1203, align 4, !tbaa !186
  %1250 = load float, ptr %1200, align 8, !tbaa !41
  %1251 = fsub float %1249, %1250
  %1252 = fcmp olt float %1251, %.19111256
  br i1 %1252, label %1253, label %1255

1253:                                             ; preds = %1248
  %1254 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1251)
  %.pre1206 = load float, ptr %101, align 4, !tbaa !91
  br label %1264

1255:                                             ; preds = %1248
  %1256 = load float, ptr %101, align 4, !tbaa !91
  %1257 = fneg float %1256
  %1258 = call float @llvm.fmuladd.f32(float %1257, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1259 = fsub float %1249, %1258
  %1260 = fcmp ult float %1259, %.19111256
  br i1 %1260, label %1264, label %1261

1261:                                             ; preds = %1255
  %1262 = fsub float %1249, %.sroa.11.0.copyload
  %1263 = call float @llvm.fmuladd.f32(float %1256, float 2.000000e+00, float %1262)
  br label %1264

1264:                                             ; preds = %1255, %1261, %1253
  %1265 = phi float [ %.pre1206, %1253 ], [ %1256, %1261 ], [ %1256, %1255 ]
  %.2912 = phi float [ %1254, %1253 ], [ %1263, %1261 ], [ %.19111256, %1255 ]
  %1266 = getelementptr inbounds i8, ptr %30, i64 4
  %1267 = load float, ptr %1266, align 4, !tbaa !186
  %1268 = call float @llvm.fmuladd.f32(float %1265, float 2.000000e+00, float %1267)
  %1269 = fsub float %1268, %.sroa.11.0.copyload
  %1270 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1269, float noundef 0.000000e+00)
  %1271 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2912, float noundef 0.000000e+00, float noundef %1270)
  %1272 = getelementptr inbounds i8, ptr %.2898, i64 136
  %1273 = load float, ptr %1272, align 4, !tbaa !110
  %1274 = fsub float %1273, %1271
  %1275 = getelementptr inbounds i8, ptr %29, i64 4
  %1276 = load float, ptr %1275, align 4, !tbaa !186
  %1277 = fadd float %1276, %1274
  store float %1277, ptr %1275, align 4, !tbaa !186
  store float %1271, ptr %1272, align 4, !tbaa !110
  br label %1278

1278:                                             ; preds = %1264, %1247
  store i8 0, ptr %1220, align 4, !tbaa !150
  br label %1279

1279:                                             ; preds = %1278, %1219, %1218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %1280 = getelementptr inbounds i8, ptr %.09011228, i64 80
  %1281 = load float, ptr %1280, align 8, !tbaa !119
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1281, float noundef 0.000000e+00)
  br i1 %1164, label %1282, label %1351

1282:                                             ; preds = %1279
  %1283 = getelementptr inbounds i8, ptr %.09011228, i64 88
  %1284 = load i32, ptr %1283, align 4, !tbaa !148
  %1285 = getelementptr inbounds i8, ptr %.09011228, i64 92
  %1286 = load i32, ptr %1285, align 4, !tbaa !149
  %1287 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1284, i32 noundef %1286)
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds i16, ptr %1157, i64 %1288
  %1290 = load i32, ptr %1283, align 4, !tbaa !148
  %1291 = load i32, ptr %1285, align 4, !tbaa !149
  %1292 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1290, i32 noundef %1291)
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds i16, ptr %1157, i64 %1293
  %1295 = select i1 %1144, float 1.000000e+00, float 0x3FE3333340000000
  %1296 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1295)
  %1297 = select i1 %68, float 0.000000e+00, float -1.000000e+00
  %1298 = select i1 %68, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #14
  %1299 = 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> %1299, ptr %37, align 8
  %1300 = 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> %1300, ptr %36, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #14
  store ptr %1289, ptr %38, align 8, !tbaa !40
  %1301 = getelementptr inbounds i8, ptr %36, i64 4
  %1302 = icmp slt i32 %1287, %1292
  br i1 %1302, label %.lr.ph1198, label %._crit_edge1199

.lr.ph1198:                                       ; preds = %1282
  %1303 = extractelement <2 x float> %1300, i64 1
  %1304 = getelementptr inbounds i8, ptr %28, i64 12
  %1305 = getelementptr inbounds i8, ptr %28, i64 4
  %1306 = getelementptr inbounds i8, ptr %77, i64 15392
  %1307 = getelementptr inbounds i8, ptr %.2898, i64 664
  %1308 = getelementptr inbounds i8, ptr %39, i64 8
  %.pre1207 = load float, ptr %1200, align 8, !tbaa !41
  br label %1309

1309:                                             ; preds = %.lr.ph1198, %.loopexit
  %1310 = phi ptr [ %1289, %.lr.ph1198 ], [ %1343, %.loopexit ]
  %1311 = phi float [ %1303, %.lr.ph1198 ], [ %1349, %.loopexit ]
  %1312 = phi float [ %.pre1207, %.lr.ph1198 ], [ %1345, %.loopexit ]
  %1313 = load float, ptr %1304, align 4, !tbaa !187
  %1314 = fadd float %1313, %1312
  %1315 = fcmp ogt float %1311, %1314
  br i1 %1315, label %._crit_edge1199.loopexit, label %1316

1316:                                             ; preds = %1309
  %1317 = load float, ptr %1305, align 4, !tbaa !188
  %1318 = fcmp olt float %1311, %1317
  br i1 %1318, label %.preheader, label %1325

.preheader:                                       ; preds = %1316, %1321
  %1319 = phi ptr [ %1322, %1321 ], [ %1310, %1316 ]
  %1320 = icmp ult ptr %1319, %1294
  br i1 %1320, label %1321, label %.loopexit

1321:                                             ; preds = %.preheader
  %1322 = getelementptr inbounds i8, ptr %1319, i64 2
  store ptr %1322, ptr %38, align 8, !tbaa !40
  %1323 = load i16, ptr %1319, align 2, !tbaa !145
  %1324 = icmp eq i16 %1323, 10
  br i1 %1324, label %.loopexit, label %.preheader, !llvm.loop !189

1325:                                             ; preds = %1316
  %1326 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %77, ptr noundef %1310, ptr noundef nonnull %1294, ptr noundef nonnull %38, ptr noundef null, i1 noundef zeroext true)
  %.sroa.029.0.vec.extract = extractelement <2 x float> %1326, i64 0
  %1327 = fcmp ugt float %.sroa.029.0.vec.extract, 0.000000e+00
  br i1 %1327, label %1334, label %1328

1328:                                             ; preds = %1325
  %1329 = load ptr, ptr %1306, align 8, !tbaa !126
  %1330 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %1329, i16 noundef zeroext 32)
  %1331 = fmul float %1330, 5.000000e-01
  %1332 = fptosi float %1331 to i32
  %1333 = sitofp i32 %1332 to float
  br label %1334

1334:                                             ; preds = %1328, %1325
  %.sroa.029.0.vec.extract32.pre-phi = phi float [ %1333, %1328 ], [ %.sroa.029.0.vec.extract, %1325 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #14
  %1335 = load float, ptr %1200, align 8, !tbaa !41
  %1336 = fsub float %1297, %1335
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef %1336)
  %1337 = 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> %1337, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %.sroa.029.0.vec.extract32.pre-phi, float noundef %1298)
  %1338 = 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> %1338, 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) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #14
  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) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %45, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1339 = 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) #14
  br i1 %1339, label %1340, label %1342

1340:                                             ; preds = %1334
  %1341 = load ptr, ptr %1307, align 8, !tbaa !190
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1341, ptr noundef nonnull align 4 dereferenceable(8) %39, ptr noundef nonnull align 4 dereferenceable(8) %1308, i32 noundef %1296, float noundef 0.000000e+00, i32 noundef 0)
  br label %1342

1342:                                             ; preds = %1340, %1334
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #14
  %.pre1208 = load float, ptr %1200, align 8, !tbaa !41
  %.pre1209 = load float, ptr %1301, align 4, !tbaa !186
  %.pre1210 = load ptr, ptr %38, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1321, %1342
  %1343 = phi ptr [ %.pre1210, %1342 ], [ %1319, %.preheader ], [ %1322, %1321 ]
  %1344 = phi float [ %.pre1209, %1342 ], [ %1311, %1321 ], [ %1311, %.preheader ]
  %1345 = phi float [ %.pre1208, %1342 ], [ %1312, %1321 ], [ %1312, %.preheader ]
  %1346 = load float, ptr %29, align 8, !tbaa !185
  %1347 = load float, ptr %35, align 4, !tbaa !185
  %1348 = fsub float %1346, %1347
  store float %1348, ptr %36, align 8, !tbaa !185
  %1349 = fadd float %1345, %1344
  store float %1349, ptr %1301, align 4, !tbaa !186
  %1350 = icmp ult ptr %1343, %1294
  br i1 %1350, label %1309, label %._crit_edge1199.loopexit, !llvm.loop !191

._crit_edge1199.loopexit:                         ; preds = %1309, %.loopexit
  %.pre1211.pre.pre = load ptr, ptr %31, align 8, !tbaa !40
  br label %._crit_edge1199

._crit_edge1199:                                  ; preds = %._crit_edge1199.loopexit, %1282
  %.pre1211.pre = phi ptr [ %.pre1211.pre.pre, %._crit_edge1199.loopexit ], [ %.pre12111213, %1282 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #14
  br label %1351

1351:                                             ; preds = %._crit_edge1199, %1279
  %.pre1211 = phi ptr [ %.pre1211.pre, %._crit_edge1199 ], [ %.pre12111213, %1279 ]
  br i1 %68, label %1357, label %1352

1352:                                             ; preds = %1351
  %1353 = ptrtoint ptr %.pre1211 to i64
  %1354 = ptrtoint ptr %.0932 to i64
  %1355 = sub i64 %1353, %1354
  %1356 = icmp slt i64 %1355, 2097152
  br i1 %1356, label %1357, label %1366

1357:                                             ; preds = %1352, %1351
  %. = phi ptr [ %28, %1352 ], [ null, %1351 ]
  %1358 = zext i1 %385 to i32
  %1359 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1358, float noundef 1.000000e+00)
  %1360 = getelementptr inbounds i8, ptr %.2898, i64 664
  %1361 = load ptr, ptr %1360, align 8, !tbaa !190
  %1362 = getelementptr inbounds i8, ptr %77, i64 15392
  %1363 = load ptr, ptr %1362, align 8, !tbaa !126
  %1364 = load float, ptr %1200, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #14
  %1365 = 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> %1365, ptr %46, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1361, ptr noundef %1363, float noundef %1364, ptr noundef nonnull align 4 dereferenceable(8) %46, i32 noundef %1359, ptr noundef %.0932, ptr noundef %.pre1211, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #14
  br label %1366

1366:                                             ; preds = %1357, %1352
  br i1 %1144, label %1367, label %1408

1367:                                             ; preds = %1366
  %1368 = getelementptr inbounds i8, ptr %77, i64 24
  %1369 = load float, ptr %1368, align 8, !tbaa !192
  %1370 = getelementptr inbounds i8, ptr %.09011228, i64 3712
  %1371 = load float, ptr %1370, align 8, !tbaa !193
  %1372 = fadd float %1369, %1371
  store float %1372, ptr %1370, align 8, !tbaa !193
  %1373 = getelementptr inbounds i8, ptr %77, i64 123
  %1374 = load i8, ptr %1373, align 1, !tbaa !194, !range !38, !noundef !39
  %1375 = trunc nuw i8 %1374 to i1
  %1376 = fcmp ugt float %1372, 0.000000e+00
  %or.cond1121 = select i1 %1375, i1 %1376, i1 false
  br i1 %or.cond1121, label %1377, label %1380

1377:                                             ; preds = %1367
  %1378 = call float @fmodf(float noundef %1372, float noundef 0x3FF3333340000000) #14
  %1379 = fcmp ole float %1378, 0x3FE99999A0000000
  br label %1380

1380:                                             ; preds = %1377, %1367
  %1381 = phi i1 [ true, %1367 ], [ %1379, %1377 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  %1382 = 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> %1382, ptr %48, align 8
  %1383 = 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> %1383, ptr %47, align 8
  %1384 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %47)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #14
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1384, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1384, i64 1
  %1385 = load float, ptr %1200, align 8, !tbaa !41
  %1386 = fsub float %.sroa.0.4.vec.extract, %1385
  %1387 = fadd float %1386, 5.000000e-01
  %1388 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1389 = 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 %1387, float noundef %1388, float noundef %1389)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #14
  br i1 %1381, label %1390, label %.critedge13

1390:                                             ; preds = %1380
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1391 = 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) #14
  br i1 %1391, label %1392, label %1397

1392:                                             ; preds = %1390
  %1393 = getelementptr inbounds i8, ptr %.2898, i64 664
  %1394 = load ptr, ptr %1393, align 8, !tbaa !190
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #14
  %1395 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %49)
  store <2 x float> %1395, ptr %51, align 8
  %1396 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1394, ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef %1396, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #14
  br label %1397

.critedge13:                                      ; preds = %1380
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #14
  br label %1397

1397:                                             ; preds = %.critedge13, %1392, %1390
  br i1 %80, label %1407, label %1398

1398:                                             ; preds = %1397
  %1399 = getelementptr inbounds i8, ptr %77, i64 23424
  store i8 1, ptr %1399, align 8, !tbaa !195
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #14
  %1400 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1401 = load float, ptr %1200, align 8, !tbaa !41
  %1402 = fsub float %.sroa.0.4.vec.extract, %1401
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1400, float noundef %1402)
  %1403 = getelementptr inbounds i8, ptr %77, i64 23428
  %1404 = load i64, ptr %52, align 8
  store i64 %1404, ptr %1403, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #14
  %1405 = load float, ptr %1200, align 8, !tbaa !41
  %1406 = getelementptr inbounds i8, ptr %77, i64 23436
  store float %1405, ptr %1406, align 4, !tbaa !196
  br label %1407

1407:                                             ; preds = %1398, %1397
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #14
  br label %1408

1408:                                             ; preds = %1407, %1366
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  br label %1444

1409:                                             ; preds = %1145
  br i1 %68, label %.critedge1123, label %1410

1410:                                             ; preds = %1409
  br i1 %385, label %1428, label %1411

1411:                                             ; preds = %1410
  %1412 = load i32, ptr %167, align 8, !tbaa !104
  %1413 = icmp eq i32 %1412, %90
  br i1 %1413, label %1414, label %1419

1414:                                             ; preds = %1411
  %1415 = getelementptr inbounds i8, ptr %.09011228, i64 16
  %1416 = load i32, ptr %1415, align 8, !tbaa !114
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds i8, ptr %.0932, i64 %1417
  store ptr %1418, ptr %31, align 8, !tbaa !40
  br label %1428

1419:                                             ; preds = %1411
  %1420 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0932) #15
  %1421 = getelementptr inbounds i8, ptr %.0932, i64 %1420
  store ptr %1421, ptr %31, align 8, !tbaa !40
  br label %1428

.critedge1123:                                    ; preds = %1409
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #14
  %1422 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0932, ptr noundef nonnull %31)
  %1423 = sitofp i32 %1422 to float
  %1424 = getelementptr inbounds i8, ptr %77, i64 15400
  %1425 = load float, ptr %1424, align 8, !tbaa !41
  %1426 = fmul float %1425, %1423
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %.sroa.0505.2, float noundef %1426)
  %1427 = load i64, ptr %53, align 8
  store i64 %1427, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #14
  br label %1434

1428:                                             ; preds = %1410, %1414, %1419
  %1429 = phi ptr [ %1143, %1410 ], [ %1418, %1414 ], [ %1421, %1419 ]
  %1430 = ptrtoint ptr %1429 to i64
  %1431 = ptrtoint ptr %.0932 to i64
  %1432 = sub i64 %1430, %1431
  %1433 = icmp slt i64 %1432, 2097152
  br i1 %1433, label %1434, label %1444

1434:                                             ; preds = %.critedge1123, %1428
  %.14 = phi ptr [ %28, %1428 ], [ null, %.critedge1123 ]
  %1435 = zext i1 %385 to i32
  %1436 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1435, float noundef 1.000000e+00)
  %1437 = getelementptr inbounds i8, ptr %.2898, i64 664
  %1438 = load ptr, ptr %1437, align 8, !tbaa !190
  %1439 = getelementptr inbounds i8, ptr %77, i64 15392
  %1440 = load ptr, ptr %1439, align 8, !tbaa !126
  %1441 = getelementptr inbounds i8, ptr %77, i64 15400
  %1442 = load float, ptr %1441, align 8, !tbaa !41
  %1443 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1438, ptr noundef %1440, float noundef %1442, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %1436, ptr noundef %.0932, ptr noundef %1443, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1444

1444:                                             ; preds = %1428, %1434, %1408
  br i1 %brmerge1037, label %1446, label %1445

1445:                                             ; preds = %1444
  call void @_ZN5ImGui7PopFontEv()
  br label %1446

1446:                                             ; preds = %1444, %1445
  br i1 %68, label %1447, label %1469

1447:                                             ; preds = %1446
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #14
  %1448 = load float, ptr %30, align 8, !tbaa !185
  %1449 = getelementptr inbounds i8, ptr %30, i64 4
  %1450 = load float, ptr %1449, align 4, !tbaa !186
  %1451 = load float, ptr %101, align 4, !tbaa !91
  %1452 = fadd float %1450, %1451
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1448, float noundef %1452)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %54)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #14
  %1453 = getelementptr inbounds i8, ptr %77, i64 18248
  %1454 = load i32, ptr %1453, align 8, !tbaa !197
  %1455 = or i32 %1454, 1025
  store i32 %1455, ptr %1453, align 8, !tbaa !197
  call void @_ZN5ImGui8EndChildEv()
  %1456 = getelementptr inbounds i8, ptr %77, i64 18276
  %1457 = getelementptr inbounds i8, ptr %77, i64 18284
  %1458 = load i32, ptr %1457, align 4, !tbaa !94
  %1459 = and i32 %1458, 128
  %1460 = getelementptr inbounds i8, ptr %15, i64 8
  %1461 = load i32, ptr %1460, align 4, !tbaa !198
  %1462 = or i32 %1461, %1459
  store i32 %1462, ptr %1460, align 4, !tbaa !198
  store i32 %1454, ptr %1453, align 8, !tbaa !197
  call void @_ZN5ImGui8EndGroupEv()
  %1463 = load i32, ptr %1456, align 4, !tbaa !199
  %1464 = icmp eq i32 %1463, 0
  br i1 %1464, label %1465, label %1469

1465:                                             ; preds = %1447
  store i32 %90, ptr %1456, align 4, !tbaa !199
  %1466 = getelementptr inbounds i8, ptr %15, i64 4
  %1467 = getelementptr inbounds i8, ptr %77, i64 18280
  %1468 = load <2 x i32>, ptr %1466, align 4, !tbaa !96
  store <2 x i32> %1468, ptr %1467, align 4, !tbaa !96
  br label %1469

1469:                                             ; preds = %1447, %1465, %1446
  %1470 = getelementptr inbounds i8, ptr %77, i64 23608
  %1471 = load i8, ptr %1470, align 8, !tbaa !200, !range !38, !noundef !39
  %1472 = trunc nuw i8 %1471 to i1
  %or.cond1129 = and i1 %brmerge1037, %1472
  br i1 %or.cond1129, label %1473, label %1475

1473:                                             ; preds = %1469
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1474 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %29, ptr noundef %.0932, ptr noundef %1474)
  br label %1475

1475:                                             ; preds = %1473, %1469
  br i1 %106, label %1476, label %1486

1476:                                             ; preds = %1475
  %1477 = getelementptr inbounds i8, ptr %11, i64 8
  %1478 = load float, ptr %1477, align 8, !tbaa !201
  %1479 = getelementptr inbounds i8, ptr %77, i64 14404
  %1480 = load float, ptr %1479, align 4, !tbaa !92
  %1481 = fadd float %1478, %1480
  %1482 = load float, ptr %1123, align 4, !tbaa !183
  %1483 = load float, ptr %101, align 4, !tbaa !91
  %1484 = fadd float %1482, %1483
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef %1481, float noundef %1484)
  %1485 = load <2 x float>, ptr %55, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1485, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1486

1486:                                             ; preds = %1476, %1475
  %1487 = and i32 %5, 134217728
  %.not1025 = icmp eq i32 %1487, 0
  %or.cond1126 = and i1 %.not1025, %.not10191183
  br i1 %or.cond1126, label %1488, label %1489

1488:                                             ; preds = %1486
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %90)
  br label %1489

1489:                                             ; preds = %1488, %1486
  %1490 = and i32 %5, 32
  %.not1026 = icmp eq i32 %1490, 0
  %1491 = trunc nuw i8 %.29311250 to i1
  %.2 = select i1 %.not1026, i1 %.not10191183, i1 %1491
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #14
  br label %.thread

.thread:                                          ; preds = %135, %123, %154, %1489
  %.3 = phi i1 [ %.2, %1489 ], [ false, %154 ], [ false, %123 ], [ false, %135 ]
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %1492

1492:                                             ; 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 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 #11 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 #11 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

declare noundef zeroext i1 @_ZN5ImGui18SetShortcutRoutingEiji(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; 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 @_ZN5ImGui8ShortcutEiji(i32 noundef, i32 noundef, i32 noundef) 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 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef, i1 noundef zeroext) 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 #12

; 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 = { 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 #12 = { 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 #13 = { noreturn nounwind }
attributes #14 = { nounwind }
attributes #15 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 187}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !7, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !11, i64 132, !11, i64 140, !11, i64 148, !11, i64 156, !11, i64 164, !11, i64 172, !13, i64 180, !13, i64 181, !13, i64 182, !13, i64 183, !13, i64 184, !13, i64 185, !13, i64 186, !13, i64 187, !13, i64 188, !13, i64 189, !13, i64 190, !13, i64 191, !13, i64 192, !8, i64 193, !14, i64 194, !14, i64 196, !14, i64 198, !14, i64 200, !14, i64 202, !10, i64 204, !8, i64 208, !8, i64 209, !8, i64 210, !13, i64 211, !10, i64 212, !8, i64 216, !8, i64 217, !8, i64 218, !8, i64 219, !10, i64 220, !10, i64 221, !10, i64 222, !11, i64 224, !11, i64 232, !15, i64 240, !16, i64 256, !22, i64 488, !22, i64 504, !22, i64 520, !22, i64 536, !22, i64 552, !22, i64 568, !22, i64 584, !23, i64 600, !23, i64 604, !10, i64 608, !12, i64 612, !12, i64 616, !24, i64 624, !26, i64 640, !12, i64 656, !10, i64 660, !7, i64 664, !27, i64 672, !7, i64 872, !7, i64 880, !7, i64 888, !7, i64 896, !7, i64 904, !7, i64 912, !7, i64 920, !8, i64 928, !8, i64 936, !10, i64 968, !10, i64 972, !10, i64 976, !13, i64 980}
!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 15400}
!42 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !43, i64 8, !44, i64 14288, !44, i64 14304, !45, i64 14320, !7, i64 15392, !12, i64 15400, !12, i64 15404, !46, i64 15408, !47, i64 15936, !10, i64 15944, !10, i64 15948, !10, i64 15952, !13, i64 15956, !13, i64 15957, !13, i64 15958, !13, i64 15959, !13, i64 15960, !7, i64 15968, !20, i64 15976, !20, i64 15992, !20, i64 16008, !48, i64 16024, !24, i64 16040, !10, i64 16056, !11, i64 16060, !7, i64 16072, !7, i64 16080, !7, i64 16088, !7, i64 16096, !7, i64 16104, !11, i64 16112, !10, i64 16120, !12, i64 16124, !11, i64 16128, !11, i64 16136, !10, i64 16144, !10, i64 16148, !10, i64 16152, !13, i64 16156, !13, i64 16157, !12, i64 16160, !12, i64 16164, !10, i64 16168, !10, i64 16172, !12, i64 16176, !13, i64 16180, !13, i64 16181, !13, i64 16182, !13, i64 16183, !13, i64 16184, !13, i64 16185, !11, i64 16188, !7, i64 16200, !49, i64 16208, !10, i64 16212, !10, i64 16216, !13, i64 16220, !13, i64 16221, !7, i64 16224, !10, i64 16232, !12, i64 16236, !8, i64 16240, !50, i64 17920, !10, i64 18232, !13, i64 18236, !10, i64 18240, !10, i64 18244, !10, i64 18248, !10, i64 18252, !52, i64 18256, !53, i64 18276, !54, i64 18336, !55, i64 18448, !56, i64 18464, !57, i64 18480, !15, i64 18496, !58, i64 18512, !59, i64 18528, !60, i64 18544, !60, i64 18560, !10, i64 18576, !61, i64 18584, !7, i64 18600, !10, i64 18608, !10, i64 18612, !10, i64 18616, !10, i64 18620, !10, i64 18624, !10, i64 18628, !10, i64 18632, !10, i64 18636, !10, i64 18640, !10, i64 18644, !10, i64 18648, !49, i64 18652, !18, i64 18656, !13, i64 18660, !13, i64 18661, !13, i64 18662, !13, i64 18663, !13, i64 18664, !13, i64 18665, !13, i64 18666, !10, i64 18668, !22, i64 18672, !13, i64 18688, !13, i64 18689, !13, i64 18690, !10, i64 18692, !10, i64 18696, !10, i64 18700, !10, i64 18704, !10, i64 18708, !10, i64 18712, !22, i64 18716, !22, i64 18732, !10, i64 18748, !10, i64 18752, !10, i64 18756, !62, i64 18760, !62, i64 18808, !62, i64 18856, !62, i64 18904, !10, i64 18952, !10, i64 18956, !7, i64 18960, !7, i64 18968, !7, i64 18976, !12, i64 18984, !12, i64 18988, !13, i64 18992, !11, i64 18996, !11, i64 19004, !12, i64 19012, !10, i64 19016, !13, i64 19020, !13, i64 19021, !13, i64 19022, !10, i64 19024, !10, i64 19028, !10, i64 19032, !63, i64 19040, !22, i64 19104, !10, i64 19120, !10, i64 19124, !12, i64 19128, !10, i64 19132, !10, i64 19136, !10, i64 19140, !10, i64 19144, !64, i64 19152, !8, i64 19168, !10, i64 19184, !65, i64 19192, !7, i64 19208, !10, i64 19216, !66, i64 19224, !67, i64 19240, !21, i64 19280, !37, i64 19296, !7, i64 19312, !69, i64 19320, !71, i64 19360, !72, i64 19376, !10, i64 19392, !10, i64 19396, !12, i64 19400, !12, i64 19404, !11, i64 19408, !73, i64 19416, !77, i64 23144, !10, i64 23264, !10, i64 23268, !10, i64 23272, !10, i64 23276, !12, i64 23280, !12, i64 23284, !10, i64 23288, !35, i64 23292, !79, i64 23308, !12, i64 23356, !12, i64 23360, !13, i64 23364, !13, i64 23365, !12, i64 23368, !12, i64 23372, !12, i64 23376, !12, i64 23380, !14, i64 23384, !14, i64 23386, !74, i64 23392, !15, i64 23408, !80, i64 23424, !80, i64 23440, !8, i64 23456, !13, i64 23457, !12, i64 23460, !81, i64 23464, !82, i64 23480, !83, i64 23496, !84, i64 23512, !85, i64 23528, !10, i64 23544, !8, i64 23552, !13, i64 23608, !86, i64 23612, !7, i64 23616, !81, i64 23624, !7, i64 23640, !7, i64 23648, !12, i64 23656, !13, i64 23660, !10, i64 23664, !10, i64 23668, !10, i64 23672, !10, i64 23676, !81, i64 23680, !87, i64 23696, !8, i64 23720, !8, i64 23721, !8, i64 23722, !13, i64 23723, !8, i64 23724, !10, i64 23728, !88, i64 23732, !89, i64 23752, !8, i64 23792, !10, i64 24032, !10, i64 24036, !12, i64 24040, !10, i64 24044, !10, i64 24048, !10, i64 24052, !74, i64 24056}
!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, !13, i64 124, !13, i64 125, !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, !7, i64 3576, !11, i64 3584, !8, i64 3592, !12, i64 3600, !12, i64 3604, !13, i64 3608, !13, i64 3609, !13, i64 3610, !13, i64 3611, !10, i64 3612, !8, i64 3616, !13, i64 14048, !11, i64 14052, !8, i64 14060, !8, i64 14104, !8, i64 14144, !8, i64 14149, !8, i64 14154, !8, i64 14164, !8, i64 14174, !8, i64 14179, !8, i64 14184, !8, i64 14192, !8, i64 14212, !8, i64 14232, !12, i64 14252, !13, i64 14256, !13, i64 14257, !8, i64 14258, !13, i64 14259, !14, i64 14260, !29, i64 14264}
!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 18284}
!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 16072}
!100 = !{!6, !18, i64 344}
!101 = !{!6, !14, i64 350}
!102 = !{!6, !12, i64 172}
!103 = !{!42, !10, i64 19016}
!104 = !{!42, !10, i64 16168}
!105 = !{!42, !10, i64 18616}
!106 = !{!42, !10, i64 18628}
!107 = !{!42, !49, i64 18652}
!108 = !{!13, !13, i64 0}
!109 = !{!42, !10, i64 16216}
!110 = !{!6, !12, i64 136}
!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 = !{!43, !13, i64 3608}
!121 = !{!73, !8, i64 96}
!122 = !{!43, !13, i64 113}
!123 = !{!42, !10, i64 18232}
!124 = !{!73, !10, i64 24}
!125 = !{!8, !8, i64 0}
!126 = !{!42, !7, i64 15392}
!127 = !{!77, !12, i64 20}
!128 = !{!77, !12, i64 108}
!129 = !{!77, !7, i64 64}
!130 = !{!77, !7, i64 56}
!131 = !{!132, !12, i64 4}
!132 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 0, !10, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36}
!133 = !{!77, !12, i64 16}
!134 = !{!73, !13, i64 3718}
!135 = !{!73, !10, i64 76}
!136 = !{!73, !10, i64 3720}
!137 = !{!42, !13, i64 16181}
!138 = !{!42, !10, i64 24052}
!139 = !{!43, !12, i64 3584}
!140 = !{!22, !12, i64 0}
!141 = !{!45, !12, i64 60}
!142 = !{!43, !12, i64 3588}
!143 = !{!6, !12, i64 260}
!144 = !{!73, !13, i64 3717}
!145 = !{!14, !14, i64 0}
!146 = !{!43, !13, i64 3609}
!147 = !{!73, !10, i64 84}
!148 = !{!73, !10, i64 88}
!149 = !{!73, !10, i64 92}
!150 = !{!73, !13, i64 3716}
!151 = !{!43, !12, i64 240}
!152 = !{!43, !12, i64 244}
!153 = !{!43, !13, i64 3610}
!154 = !{!43, !13, i64 3611}
!155 = !{!43, !10, i64 14264}
!156 = distinct !{!156, !157}
!157 = !{!"llvm.loop.mustprogress"}
!158 = !{!42, !13, i64 16180}
!159 = !{!73, !10, i64 100}
!160 = !{!43, !10, i64 0}
!161 = !{!43, !10, i64 4}
!162 = !{!43, !13, i64 116}
!163 = !{!43, !7, i64 176}
!164 = distinct !{!164, !157}
!165 = !{!73, !10, i64 56}
!166 = !{!29, !7, i64 8}
!167 = !{!29, !10, i64 0}
!168 = !{!73, !10, i64 40}
!169 = !{!170, !7, i64 0}
!170 = !{!"_ZTS26ImGuiInputTextCallbackData", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !14, i64 24, !171, i64 28, !7, i64 32, !10, i64 40, !10, i64 44, !13, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!171 = !{!"_ZTS8ImGuiKey", !8, i64 0}
!172 = !{!170, !10, i64 8}
!173 = !{!170, !10, i64 12}
!174 = !{!170, !7, i64 16}
!175 = !{!170, !171, i64 28}
!176 = !{!170, !7, i64 32}
!177 = !{!170, !10, i64 40}
!178 = !{!170, !10, i64 44}
!179 = !{!170, !13, i64 48}
!180 = !{!170, !10, i64 52}
!181 = !{!170, !10, i64 56}
!182 = !{!170, !10, i64 60}
!183 = !{!22, !12, i64 4}
!184 = distinct !{!184, !157}
!185 = !{!11, !12, i64 0}
!186 = !{!11, !12, i64 4}
!187 = !{!35, !12, i64 12}
!188 = !{!35, !12, i64 4}
!189 = distinct !{!189, !157}
!190 = !{!6, !7, i64 664}
!191 = distinct !{!191, !157}
!192 = !{!43, !12, i64 16}
!193 = !{!73, !12, i64 3712}
!194 = !{!42, !13, i64 123}
!195 = !{!42, !13, i64 23424}
!196 = !{!42, !12, i64 23436}
!197 = !{!42, !10, i64 18248}
!198 = !{!53, !10, i64 8}
!199 = !{!42, !10, i64 18276}
!200 = !{!42, !13, i64 23608}
!201 = !{!22, !12, i64 8}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass