; LLVM IR from Samson-Mano/EM_Propogation_simulation :: EM_Propogation_simulation/src/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, 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.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.11, %struct.ImVector.11, i32, i32, %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.ImGuiInputTextDeactivatedState, %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, i32, 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], 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.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.11 = type { i32, i32, 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.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.29 }
%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 [125 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 %3561

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 4061, 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 4062, 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 4063, 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 3
  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 4076, 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 5
  %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 !97
  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 !98
  %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 !99
  %294 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %295 = load float, ptr %294, align 4, !tbaa !99
  %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 !100
  %302 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %303 = load float, ptr %302, align 4, !tbaa !99
  %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 !97
  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 !98
  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 74
  %338 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %337, i32 0, i32 2
  %339 = load i32, ptr %338, align 4, !tbaa !101
  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 74
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 4 %341, i64 60, i1 false), !tbaa.struct !102
  %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 !103
  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 !104
  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 29
  %365 = load ptr, ptr %364, align 8, !tbaa !105
  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 !106
  %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 !107
  %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 !107
  %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 !108
  %388 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %389 = load float, ptr %388, align 4, !tbaa !99
  %390 = fsub float %389, %387
  store float %390, ptr %388, align 4, !tbaa !99
  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 %3560 [
    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 !98
  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 %3560

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 74
  %411 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %410, i32 0, i32 2
  %412 = load i32, ptr %411, align 4, !tbaa !101
  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 138
  store i32 1, ptr %421, align 8, !tbaa !109
  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 46
  %431 = load i32, ptr %430, align 8, !tbaa !110
  %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 89
  %437 = load i32, ptr %436, align 8, !tbaa !111
  %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 92
  %443 = load i32, ptr %442, align 4, !tbaa !112
  %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 98
  %449 = load i32, ptr %448, align 4, !tbaa !113
  %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 74
  %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 46
  %477 = load i32, ptr %476, align 8, !tbaa !110
  %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 59
  %482 = load i32, ptr %481, align 8, !tbaa !114
  %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 46
  %497 = load i32, ptr %496, align 8, !tbaa !110
  %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 !115
  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 !116
  %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 46
  %557 = load i32, ptr %556, align 8, !tbaa !110
  %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 %706

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

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

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

599:                                              ; preds = %594
  %600 = load ptr, ptr %47, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %600, i32 0, i32 3
  %602 = load i32, ptr %601, align 8, !tbaa !119
  %603 = load i32, ptr %59, align 4, !tbaa !9
  %604 = icmp ne i32 %602, %603
  br i1 %604, label %620, label %605

605:                                              ; preds = %599
  %606 = load ptr, ptr %47, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %606, i32 0, i32 8
  %608 = load i8, ptr %607, align 8, !tbaa !120, !range !40, !noundef !41
  %609 = trunc i8 %608 to i1
  br i1 %609, label %610, label %621

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

620:                                              ; preds = %610, %599
  store i8 0, ptr %60, align 1, !tbaa !42
  br label %621

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

652:                                              ; preds = %621
  %653 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %653)
  br label %663

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

663:                                              ; preds = %654, %652
  %664 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %665 = trunc i8 %664 to i1
  br i1 %665, label %697, label %666

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

670:                                              ; preds = %666
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %671

671:                                              ; preds = %670, %666
  %672 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %673 = trunc i8 %672 to i1
  br i1 %673, label %674, label %684

674:                                              ; preds = %671
  %675 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %676 = trunc i8 %675 to i1
  br i1 %676, label %677, label %683

677:                                              ; preds = %674
  %678 = load ptr, ptr %20, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiContext, ptr %678, i32 0, i32 92
  %680 = load i32, ptr %679, align 4, !tbaa !112
  %681 = and i32 %680, 4
  %682 = icmp ne i32 %681, 0
  br i1 %682, label %684, label %683

683:                                              ; preds = %677, %674
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %684

684:                                              ; preds = %683, %677, %671
  %685 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %686 = trunc i8 %685 to i1
  br i1 %686, label %695, label %687

687:                                              ; preds = %684
  %688 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %689 = trunc i8 %688 to i1
  br i1 %689, label %690, label %696

690:                                              ; preds = %687
  %691 = load ptr, ptr %21, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.ImGuiIO, ptr %691, i32 0, i32 64
  %693 = load i8, ptr %692, align 4, !tbaa !125, !range !40, !noundef !41
  %694 = trunc i8 %693 to i1
  br i1 %694, label %695, label %696

695:                                              ; preds = %690, %684
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %696

696:                                              ; preds = %695, %690, %687
  br label %697

697:                                              ; preds = %696, %663
  %698 = load i32, ptr %15, align 4, !tbaa !9
  %699 = and i32 %698, 8192
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %705

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

705:                                              ; preds = %701, %697
  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 %706

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

717:                                              ; preds = %706
  %718 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %719 = trunc i8 %718 to i1
  br i1 %719, label %720, label %740

720:                                              ; preds = %717
  %721 = load ptr, ptr %47, align 8, !tbaa !5
  %722 = icmp ne ptr %721, null
  br i1 %722, label %723, label %729

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

729:                                              ; preds = %723, %720
  %730 = phi i1 [ false, %720 ], [ %728, %723 ]
  br i1 %730, label %731, label %732

731:                                              ; preds = %729
  br label %734

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

733:                                              ; No predecessors!
  br label %734

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

740:                                              ; preds = %734, %717, %706
  %741 = load ptr, ptr %20, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.ImGuiContext, ptr %741, i32 0, i32 46
  %743 = load i32, ptr %742, align 8, !tbaa !110
  %744 = load i32, ptr %29, align 4, !tbaa !9
  %745 = icmp eq i32 %743, %744
  br i1 %745, label %746, label %788

746:                                              ; preds = %740
  %747 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %748 = trunc i8 %747 to i1
  br i1 %748, label %749, label %751

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

751:                                              ; preds = %749, %746
  %752 = load ptr, ptr %20, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.ImGuiContext, ptr %752, i32 0, i32 67
  %754 = load i32, ptr %753, align 8, !tbaa !128
  %755 = or i32 %754, 3
  store i32 %755, ptr %753, align 8, !tbaa !128
  %756 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %757 = trunc i8 %756 to i1
  br i1 %757, label %762, label %758

758:                                              ; preds = %751
  %759 = load i32, ptr %15, align 4, !tbaa !9
  %760 = and i32 %759, 128
  %761 = icmp ne i32 %760, 0
  br i1 %761, label %762, label %767

762:                                              ; preds = %758, %751
  %763 = load ptr, ptr %20, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.ImGuiContext, ptr %763, i32 0, i32 67
  %765 = load i32, ptr %764, align 8, !tbaa !128
  %766 = or i32 %765, 12
  store i32 %766, ptr %764, align 8, !tbaa !128
  br label %767

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

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

775:                                              ; preds = %772, %767
  %776 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %777 = trunc i8 %776 to i1
  br i1 %777, label %778, label %780

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

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

784:                                              ; preds = %780
  %785 = load i32, ptr %29, align 4, !tbaa !9
  %786 = call noundef zeroext i1 @_ZN5ImGui18SetShortcutRoutingEiji(i32 noundef 512, i32 noundef %785, i32 noundef 0)
  br label %787

787:                                              ; preds = %784, %780
  br label %788

788:                                              ; preds = %787, %740
  %789 = load ptr, ptr %20, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.ImGuiContext, ptr %789, i32 0, i32 46
  %791 = load i32, ptr %790, align 8, !tbaa !110
  %792 = load i32, ptr %29, align 4, !tbaa !9
  %793 = icmp eq i32 %791, %792
  br i1 %793, label %794, label %798

794:                                              ; preds = %788
  %795 = load ptr, ptr %47, align 8, !tbaa !5
  %796 = icmp eq ptr %795, null
  br i1 %796, label %797, label %798

797:                                              ; preds = %794
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %798

798:                                              ; preds = %797, %794, %788
  %799 = load ptr, ptr %20, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.ImGuiContext, ptr %799, i32 0, i32 46
  %801 = load i32, ptr %800, align 8, !tbaa !110
  %802 = load i32, ptr %29, align 4, !tbaa !9
  %803 = icmp eq i32 %801, %802
  br i1 %803, label %804, label %817

804:                                              ; preds = %798
  %805 = load ptr, ptr %21, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.ImGuiIO, ptr %805, i32 0, i32 74
  %807 = getelementptr inbounds [5 x i8], ptr %806, i64 0, i64 0
  %808 = load i8, ptr %807, align 8, !tbaa !42, !range !40, !noundef !41
  %809 = trunc i8 %808 to i1
  br i1 %809, label %810, label %817

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

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

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

817:                                              ; preds = %816, %813, %810, %804, %798
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %818 = load ptr, ptr %20, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.ImGuiContext, ptr %818, i32 0, i32 46
  %820 = load i32, ptr %819, align 8, !tbaa !110
  %821 = load i32, ptr %29, align 4, !tbaa !9
  %822 = icmp eq i32 %820, %821
  br i1 %822, label %831, label %823

823:                                              ; preds = %817
  %824 = load ptr, ptr %47, align 8, !tbaa !5
  %825 = icmp ne ptr %824, null
  br i1 %825, label %826, label %829

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

829:                                              ; preds = %826, %823
  %830 = phi i1 [ false, %823 ], [ %828, %826 ]
  br label %831

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

836:                                              ; preds = %831
  %837 = load ptr, ptr %47, align 8, !tbaa !5
  %838 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %837)
  br i1 %838, label %842, label %839

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

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

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

850:                                              ; preds = %845
  %851 = load ptr, ptr %47, align 8, !tbaa !5
  %852 = icmp ne ptr %851, null
  br i1 %852, label %853, label %894

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

856:                                              ; preds = %853
  %857 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %858 = trunc i8 %857 to i1
  br i1 %858, label %859, label %894

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

894:                                              ; preds = %859, %856, %850, %845
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #14
  %895 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %896 = trunc i8 %895 to i1
  br i1 %896, label %906, label %897

897:                                              ; preds = %894
  %898 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %899 = trunc i8 %898 to i1
  br i1 %899, label %906, label %900

900:                                              ; preds = %897
  %901 = load ptr, ptr %20, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.ImGuiContext, ptr %901, i32 0, i32 46
  %903 = load i32, ptr %902, align 8, !tbaa !110
  %904 = load i32, ptr %29, align 4, !tbaa !9
  %905 = icmp eq i32 %903, %904
  br i1 %905, label %906, label %917

906:                                              ; preds = %900, %897, %894
  %907 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %908 = trunc i8 %907 to i1
  br i1 %908, label %917, label %909

909:                                              ; preds = %906
  %910 = load ptr, ptr %47, align 8, !tbaa !5
  %911 = icmp ne ptr %910, null
  br i1 %911, label %912, label %917

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

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

922:                                              ; preds = %917
  %923 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %924 = trunc i8 %923 to i1
  br i1 %924, label %925, label %930

925:                                              ; preds = %922
  %926 = load ptr, ptr %47, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %926, i32 0, i32 6
  %928 = getelementptr inbounds %struct.ImVector.29, ptr %927, i32 0, i32 2
  %929 = load ptr, ptr %928, align 8, !tbaa !121
  br label %932

930:                                              ; preds = %922
  %931 = load ptr, ptr %12, align 8, !tbaa !5
  br label %932

932:                                              ; preds = %930, %925
  %933 = phi ptr [ %929, %925 ], [ %931, %930 ]
  %934 = getelementptr inbounds i8, ptr %933, i64 0
  %935 = load i8, ptr %934, align 1, !tbaa !130
  %936 = sext i8 %935 to i32
  %937 = icmp eq i32 %936, 0
  br label %938

938:                                              ; preds = %932, %917
  %939 = phi i1 [ false, %917 ], [ %937, %932 ]
  %940 = zext i1 %939 to i8
  store i8 %940, ptr %69, align 1, !tbaa !42
  %941 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %942 = trunc i8 %941 to i1
  br i1 %942, label %943, label %1014

943:                                              ; preds = %938
  %944 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %945 = trunc i8 %944 to i1
  br i1 %945, label %1014, label %946

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

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

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

1007:                                             ; preds = %1003, %999, %946
  %1008 = phi i1 [ false, %999 ], [ false, %946 ], [ %1006, %1003 ]
  br i1 %1008, label %1009, label %1010

1009:                                             ; preds = %1007
  br label %1012

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

1011:                                             ; No predecessors!
  br label %1012

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

1014:                                             ; preds = %1012, %943, %938
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #14
  store i32 0, ptr %72, align 4, !tbaa !9
  %1015 = load ptr, ptr %20, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ImGuiContext, ptr %1015, i32 0, i32 46
  %1017 = load i32, ptr %1016, align 8, !tbaa !110
  %1018 = load i32, ptr %29, align 4, !tbaa !9
  %1019 = icmp eq i32 %1017, %1018
  br i1 %1019, label %1020, label %1401

1020:                                             ; preds = %1014
  %1021 = load ptr, ptr %47, align 8, !tbaa !5
  %1022 = icmp ne ptr %1021, null
  br i1 %1022, label %1023, label %1024

1023:                                             ; preds = %1020
  br label %1026

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

1025:                                             ; No predecessors!
  br label %1026

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

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

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

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

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

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

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

1100:                                             ; preds = %1093
  %1101 = load ptr, ptr %21, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.ImGuiIO, ptr %1101, i32 0, i32 65
  %1103 = load i8, ptr %1102, align 1, !tbaa !152, !range !40, !noundef !41
  %1104 = trunc i8 %1103 to i1
  br i1 %1104, label %1223, label %1105

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1223:                                             ; preds = %1100, %1093, %1090
  %1224 = load ptr, ptr %21, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.ImGuiIO, ptr %1224, i32 0, i32 74
  %1226 = getelementptr inbounds [5 x i8], ptr %1225, i64 0, i64 0
  %1227 = load i8, ptr %1226, align 8, !tbaa !42, !range !40, !noundef !41
  %1228 = trunc i8 %1227 to i1
  br i1 %1228, label %1229, label %1257

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

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

1237:                                             ; preds = %1234
  %1238 = load ptr, ptr %21, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.ImGuiIO, ptr %1238, i32 0, i32 65
  %1240 = load i8, ptr %1239, align 1, !tbaa !152, !range !40, !noundef !41
  %1241 = trunc i8 %1240 to i1
  br i1 %1241, label %1242, label %1248

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

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

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

1256:                                             ; preds = %1254, %1234
  br label %1290

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

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

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

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

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

1289:                                             ; preds = %1280, %1274, %1263, %1257
  br label %1290

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

1291:                                             ; preds = %1290, %1221
  br label %1292

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

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

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

1306:                                             ; preds = %1303, %1297, %1292
  %1307 = load i32, ptr %15, align 4, !tbaa !9
  %1308 = and i32 %1307, 1024
  %1309 = icmp ne i32 %1308, 0
  br i1 %1309, label %1310, label %1325

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

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

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

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

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

1325:                                             ; preds = %1324, %1313, %1310, %1306
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #14
  %1326 = load ptr, ptr %21, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.ImGuiIO, ptr %1326, i32 0, i32 64
  %1328 = load i8, ptr %1327, align 4, !tbaa !125, !range !40, !noundef !41
  %1329 = trunc i8 %1328 to i1
  br i1 %1329, label %1330, label %1335

1330:                                             ; preds = %1325
  %1331 = load ptr, ptr %21, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.ImGuiIO, ptr %1331, i32 0, i32 66
  %1333 = load i8, ptr %1332, align 2, !tbaa !159, !range !40, !noundef !41
  %1334 = trunc i8 %1333 to i1
  br i1 %1334, label %1335, label %1345

1335:                                             ; preds = %1330, %1325
  %1336 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %1337 = trunc i8 %1336 to i1
  br i1 %1337, label %1338, label %1343

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

1343:                                             ; preds = %1338, %1335
  %1344 = phi i1 [ false, %1335 ], [ %1342, %1338 ]
  br label %1345

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

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

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

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

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

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

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

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

1380:                                             ; preds = %1371
  store i32 4, ptr %19, align 4
  br label %1390

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

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

1389:                                             ; preds = %1386, %1381
  store i32 0, ptr %19, align 4
  br label %1390

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

1392:                                             ; preds = %1390
  br label %1393

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

1396:                                             ; preds = %1370
  br label %1397

1397:                                             ; preds = %1396, %1359, %1356, %1353
  %1398 = load ptr, ptr %21, align 8, !tbaa !5
  %1399 = getelementptr inbounds %struct.ImGuiIO, ptr %1398, i32 0, i32 91
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1399, i32 noundef 0)
  br label %1400

1400:                                             ; preds = %1397, %1345
  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 %1401

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

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

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

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

1418:                                             ; preds = %1415
  br label %1421

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

1420:                                             ; No predecessors!
  br label %1421

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

1447:                                             ; preds = %1421
  %1448 = load ptr, ptr %21, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.ImGuiIO, ptr %1448, i32 0, i32 66
  %1450 = load i8, ptr %1449, align 2, !tbaa !159, !range !40, !noundef !41
  %1451 = trunc i8 %1450 to i1
  br label %1457

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

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

1462:                                             ; preds = %1457
  %1463 = load ptr, ptr %21, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.ImGuiIO, ptr %1463, i32 0, i32 67
  %1465 = load i8, ptr %1464, align 1, !tbaa !160, !range !40, !noundef !41
  %1466 = trunc i8 %1465 to i1
  br i1 %1466, label %1467, label %1478

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

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

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

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

1486:                                             ; preds = %1483, %1478
  %1487 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1488 = trunc i8 %1487 to i1
  br i1 %1488, label %1500, label %1489

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

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

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

1498:                                             ; preds = %1495, %1492
  %1499 = phi i1 [ true, %1492 ], [ %1497, %1495 ]
  br label %1500

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

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

1508:                                             ; preds = %1505, %1500
  %1509 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1510 = trunc i8 %1509 to i1
  br i1 %1510, label %1519, label %1511

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

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

1517:                                             ; preds = %1514, %1511
  %1518 = phi i1 [ true, %1511 ], [ %1516, %1514 ]
  br label %1519

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

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

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

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

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

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

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

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

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

1553:                                             ; preds = %1550, %1542
  %1554 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1555 = trunc i8 %1554 to i1
  br i1 %1555, label %1559, label %1556

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

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

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

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

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

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

1587:                                             ; preds = %1582
  %1588 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 622, i1 noundef zeroext false)
  br i1 %1588, label %1591, label %1589

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

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

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

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

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

1604:                                             ; preds = %1601, %1598
  %1605 = phi i1 [ false, %1598 ], [ %1603, %1601 ]
  br label %1606

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

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

1614:                                             ; preds = %1610
  br label %1620

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

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

1624:                                             ; preds = %1606
  %1625 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %1625, label %1626, label %1640

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

1630:                                             ; preds = %1626
  br label %1636

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

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

1640:                                             ; preds = %1624
  %1641 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1641, label %1642, label %1670

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

1645:                                             ; preds = %1642
  %1646 = load ptr, ptr %21, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.ImGuiIO, ptr %1646, i32 0, i32 64
  %1648 = load i8, ptr %1647, align 4, !tbaa !125, !range !40, !noundef !41
  %1649 = trunc i8 %1648 to i1
  br i1 %1649, label %1650, label %1661

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

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

1669:                                             ; preds = %1661, %1650
  br label %2098

1670:                                             ; preds = %1642, %1640
  %1671 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1671, label %1672, label %1701

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

1675:                                             ; preds = %1672
  %1676 = load ptr, ptr %21, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.ImGuiIO, ptr %1676, i32 0, i32 64
  %1678 = load i8, ptr %1677, align 4, !tbaa !125, !range !40, !noundef !41
  %1679 = trunc i8 %1678 to i1
  br i1 %1679, label %1680, label %1692

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

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

1700:                                             ; preds = %1692, %1680
  br label %2097

1701:                                             ; preds = %1672, %1670
  %1702 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  br i1 %1702, label %1703, label %1718

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

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

1718:                                             ; preds = %1703, %1701
  %1719 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  br i1 %1719, label %1720, label %1734

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

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

1734:                                             ; preds = %1720, %1718
  %1735 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %1735, label %1736, label %1750

1736:                                             ; preds = %1734
  %1737 = load ptr, ptr %47, align 8, !tbaa !5
  %1738 = load ptr, ptr %21, align 8, !tbaa !5
  %1739 = getelementptr inbounds %struct.ImGuiIO, ptr %1738, i32 0, i32 64
  %1740 = load i8, ptr %1739, align 4, !tbaa !125, !range !40, !noundef !41
  %1741 = trunc i8 %1740 to i1
  br i1 %1741, label %1742, label %1745

1742:                                             ; preds = %1736
  %1743 = load i32, ptr %84, align 4, !tbaa !9
  %1744 = or i32 2097158, %1743
  br label %1748

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

1748:                                             ; preds = %1745, %1742
  %1749 = phi i32 [ %1744, %1742 ], [ %1747, %1745 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1737, i32 noundef %1749)
  br label %2094

1750:                                             ; preds = %1734
  %1751 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %1751, label %1752, label %1766

1752:                                             ; preds = %1750
  %1753 = load ptr, ptr %47, align 8, !tbaa !5
  %1754 = load ptr, ptr %21, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.ImGuiIO, ptr %1754, i32 0, i32 64
  %1756 = load i8, ptr %1755, align 4, !tbaa !125, !range !40, !noundef !41
  %1757 = trunc i8 %1756 to i1
  br i1 %1757, label %1758, label %1761

1758:                                             ; preds = %1752
  %1759 = load i32, ptr %84, align 4, !tbaa !9
  %1760 = or i32 2097159, %1759
  br label %1764

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

1764:                                             ; preds = %1761, %1758
  %1765 = phi i32 [ %1760, %1758 ], [ %1763, %1761 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1753, i32 noundef %1765)
  br label %2093

1766:                                             ; preds = %1750
  %1767 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1767, label %1768, label %1787

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

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

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

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

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

1782:                                             ; preds = %1780, %1777
  br label %1783

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

1787:                                             ; preds = %1771, %1768, %1766
  %1788 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  br i1 %1788, label %1789, label %1826

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

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

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

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

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

1803:                                             ; preds = %1800
  %1804 = load ptr, ptr %21, align 8, !tbaa !5
  %1805 = getelementptr inbounds %struct.ImGuiIO, ptr %1804, i32 0, i32 67
  %1806 = load i8, ptr %1805, align 1, !tbaa !160, !range !40, !noundef !41
  %1807 = trunc i8 %1806 to i1
  br i1 %1807, label %1808, label %1820

1808:                                             ; preds = %1803
  %1809 = load ptr, ptr %21, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.ImGuiIO, ptr %1809, i32 0, i32 66
  %1811 = load i8, ptr %1810, align 2, !tbaa !159, !range !40, !noundef !41
  %1812 = trunc i8 %1811 to i1
  br i1 %1812, label %1820, label %1813

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

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

1820:                                             ; preds = %1818, %1813, %1808, %1803, %1800
  br label %1821

1821:                                             ; preds = %1820, %1798
  br label %1822

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

1826:                                             ; preds = %1789, %1787
  %1827 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %1828 = trunc i8 %1827 to i1
  br i1 %1828, label %1832, label %1829

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

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

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

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

1845:                                             ; preds = %1842
  %1846 = load ptr, ptr %21, align 8, !tbaa !5
  %1847 = getelementptr inbounds %struct.ImGuiIO, ptr %1846, i32 0, i32 64
  %1848 = load i8, ptr %1847, align 4, !tbaa !125, !range !40, !noundef !41
  %1849 = trunc i8 %1848 to i1
  br i1 %1849, label %1850, label %1858

1850:                                             ; preds = %1845, %1842
  %1851 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1852 = trunc i8 %1851 to i1
  br i1 %1852, label %1870, label %1853

1853:                                             ; preds = %1850
  %1854 = load ptr, ptr %21, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.ImGuiIO, ptr %1854, i32 0, i32 64
  %1856 = load i8, ptr %1855, align 4, !tbaa !125, !range !40, !noundef !41
  %1857 = trunc i8 %1856 to i1
  br i1 %1857, label %1858, label %1870

1858:                                             ; preds = %1853, %1845, %1839, %1832
  store i8 1, ptr %66, align 1, !tbaa !42
  %1859 = load ptr, ptr %21, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.ImGuiIO, ptr %1859, i32 0, i32 24
  %1861 = load i8, ptr %1860, align 4, !tbaa !168, !range !40, !noundef !41
  %1862 = trunc i8 %1861 to i1
  br i1 %1862, label %1863, label %1868

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

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

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

1869:                                             ; preds = %1868, %1866
  br label %1883

1870:                                             ; preds = %1853, %1850
  %1871 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1872 = trunc i8 %1871 to i1
  br i1 %1872, label %1882, label %1873

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

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

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

1882:                                             ; preds = %1881, %1870
  br label %1883

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

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

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

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

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

1897:                                             ; preds = %1891
  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 %1898

1898:                                             ; preds = %1897, %1896
  br label %1900

1899:                                             ; preds = %1887
  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 %1900

1900:                                             ; preds = %1899, %1898
  br label %2089

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

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

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

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

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

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

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

1927:                                             ; preds = %1924, %1921
  %1928 = load ptr, ptr %21, align 8, !tbaa !5
  %1929 = getelementptr inbounds %struct.ImGuiIO, ptr %1928, i32 0, i32 37
  %1930 = load ptr, ptr %1929, align 8, !tbaa !169
  %1931 = icmp ne ptr %1930, null
  br i1 %1931, label %1932, label %2005

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

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

1945:                                             ; preds = %1932
  br label %1946

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

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

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

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

2005:                                             ; preds = %1964, %1927
  %2006 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %2007 = trunc i8 %2006 to i1
  br i1 %2007, label %2008, label %2020

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

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

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

2020:                                             ; preds = %2013, %2005
  br label %2086

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

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

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

2038:                                             ; preds = %2065, %2063, %2028
  %2039 = load ptr, ptr %108, align 8, !tbaa !5
  %2040 = load i8, ptr %2039, align 1, !tbaa !130
  %2041 = sext i8 %2040 to i32
  %2042 = icmp ne i32 %2041, 0
  br i1 %2042, label %2044, label %2043

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2115:                                             ; preds = %2106, %1412, %1407, %1401
  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
  %2116 = load ptr, ptr %20, align 8, !tbaa !5
  %2117 = getelementptr inbounds %struct.ImGuiContext, ptr %2116, i32 0, i32 46
  %2118 = load i32, ptr %2117, align 8, !tbaa !110
  %2119 = load i32, ptr %29, align 4, !tbaa !9
  %2120 = icmp eq i32 %2118, %2119
  br i1 %2120, label %2121, label %2590

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

2124:                                             ; preds = %2121
  br label %2127

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

2126:                                             ; No predecessors!
  br label %2127

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

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

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

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

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

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

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

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

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

2181:                                             ; preds = %2170
  br label %2186

2182:                                             ; preds = %2199, %2170, %2168, %2161
  %2183 = landingpad { ptr, i32 }
          cleanup
  %2184 = extractvalue { ptr, i32 } %2183, 0
  store ptr %2184, ptr %114, align 8
  %2185 = extractvalue { ptr, i32 } %2183, 1
  store i32 %2185, 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 %3563

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

2194:                                             ; preds = %2186
  %2195 = getelementptr inbounds %struct.ImVector.5, ptr %113, i32 0, i32 0
  %2196 = load i32, ptr %2195, align 8, !tbaa !173
  %2197 = sub nsw i32 %2196, 1
  br label %2199

2198:                                             ; preds = %2186
  br label %2199

2199:                                             ; preds = %2198, %2194
  %2200 = phi i32 [ %2197, %2194 ], [ 0, %2198 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2187, ptr noundef %2189, ptr noundef %2191, i32 noundef %2200)
          to label %2201 unwind label %2182

2201:                                             ; preds = %2199
  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 %2202

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

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

2204:                                             ; preds = %2203, %2130, %2127
  %2205 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2206 = trunc i8 %2205 to i1
  br i1 %2206, label %2231, label %2207

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

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

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

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

2241:                                             ; preds = %2237, %2234
  %2242 = phi i1 [ false, %2234 ], [ %2240, %2237 ]
  br label %2243

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

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

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

2255:                                             ; preds = %2252
  br label %2258

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

2257:                                             ; No predecessors!
  br label %2258

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2313:                                             ; preds = %2302
  %2314 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2320

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

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

2373:                                             ; preds = %2320
  %2374 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2380

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

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

2386:                                             ; preds = %2380
  br label %2389

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

2388:                                             ; No predecessors!
  br label %2389

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

2396:                                             ; preds = %2389
  br label %2399

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

2398:                                             ; No predecessors!
  br label %2399

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

2404:                                             ; preds = %2399
  br label %2407

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

2406:                                             ; No predecessors!
  br label %2407

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

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

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

2434:                                             ; preds = %2419, %2416
  %2435 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2436 = load i32, ptr %2435, align 8, !tbaa !188
  %2437 = load i32, ptr %123, align 4, !tbaa !9
  %2438 = icmp ne i32 %2436, %2437
  br i1 %2438, label %2442, label %2439

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

2442:                                             ; preds = %2439, %2434
  %2443 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2444 = load i32, ptr %2443, align 8, !tbaa !188
  %2445 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 10
  %2446 = load i32, ptr %2445, align 4, !tbaa !187
  %2447 = icmp eq i32 %2444, %2446
  br i1 %2447, label %2448, label %2453

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

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

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

2468:                                             ; preds = %2463, %2439
  %2469 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 12
  %2470 = load i32, ptr %2469, align 4, !tbaa !189
  %2471 = load i32, ptr %124, align 4, !tbaa !9
  %2472 = icmp ne i32 %2470, %2471
  br i1 %2472, label %2476, label %2473

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

2476:                                             ; preds = %2473, %2468
  %2477 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 12
  %2478 = load i32, ptr %2477, align 4, !tbaa !189
  %2479 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 11
  %2480 = load i32, ptr %2479, align 8, !tbaa !188
  %2481 = icmp eq i32 %2478, %2480
  br i1 %2481, label %2482, label %2487

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

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

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

2502:                                             ; preds = %2497, %2473
  %2503 = load i8, ptr %125, align 1, !tbaa !42, !range !40, !noundef !41
  %2504 = trunc i8 %2503 to i1
  br i1 %2504, label %2505, label %2567

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

2509:                                             ; preds = %2505
  br label %2512

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

2511:                                             ; No predecessors!
  br label %2512

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

2520:                                             ; preds = %2512
  br label %2523

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

2522:                                             ; No predecessors!
  br label %2523

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

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

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

2548:                                             ; preds = %2536, %2533, %2523
  %2549 = load ptr, ptr %47, align 8, !tbaa !5
  %2550 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2549, i32 0, i32 5
  %2551 = getelementptr inbounds %struct.ImVector.5, ptr %2550, i32 0, i32 2
  %2552 = load ptr, ptr %2551, align 8, !tbaa !122
  %2553 = load ptr, ptr %47, align 8, !tbaa !5
  %2554 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2553, i32 0, i32 5
  %2555 = getelementptr inbounds %struct.ImVector.5, ptr %2554, i32 0, i32 0
  %2556 = load i32, ptr %2555, align 8, !tbaa !129
  %2557 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  %2558 = load ptr, ptr %2557, align 8, !tbaa !183
  %2559 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2552, i32 noundef %2556, ptr noundef %2558, ptr noundef null, ptr noundef null)
  %2560 = load ptr, ptr %47, align 8, !tbaa !5
  %2561 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2560, i32 0, i32 2
  store i32 %2559, ptr %2561, align 4, !tbaa !123
  %2562 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 7
  %2563 = load i32, ptr %2562, align 8, !tbaa !184
  %2564 = load ptr, ptr %47, align 8, !tbaa !5
  %2565 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2564, i32 0, i32 3
  store i32 %2563, ptr %2565, align 8, !tbaa !119
  %2566 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %2566)
  br label %2567

2567:                                             ; preds = %2548, %2502
  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 %2568

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

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

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

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

2588:                                             ; preds = %2580, %2572, %2569
  br label %2589

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

2590:                                             ; preds = %2589, %2115
  %2591 = load ptr, ptr %20, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.ImGuiContext, ptr %2591, i32 0, i32 175
  %2593 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2592, i32 0, i32 0
  %2594 = load i32, ptr %2593, align 8, !tbaa !190
  %2595 = load i32, ptr %29, align 4, !tbaa !9
  %2596 = icmp eq i32 %2594, %2595
  br i1 %2596, label %2597, label %2639

2597:                                             ; preds = %2590
  %2598 = load ptr, ptr %20, align 8, !tbaa !5
  %2599 = getelementptr inbounds %struct.ImGuiContext, ptr %2598, i32 0, i32 46
  %2600 = load i32, ptr %2599, align 8, !tbaa !110
  %2601 = load i32, ptr %29, align 4, !tbaa !9
  %2602 = icmp ne i32 %2600, %2601
  br i1 %2602, label %2603, label %2635

2603:                                             ; preds = %2597
  %2604 = call noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv()
  br i1 %2604, label %2605, label %2635

2605:                                             ; preds = %2603
  %2606 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2607 = trunc i8 %2606 to i1
  br i1 %2607, label %2635, label %2608

2608:                                             ; preds = %2605
  %2609 = load ptr, ptr %20, align 8, !tbaa !5
  %2610 = getelementptr inbounds %struct.ImGuiContext, ptr %2609, i32 0, i32 175
  %2611 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2610, i32 0, i32 1
  %2612 = getelementptr inbounds %struct.ImVector.29, ptr %2611, i32 0, i32 2
  %2613 = load ptr, ptr %2612, align 8, !tbaa !191
  store ptr %2613, ptr %110, align 8, !tbaa !5
  %2614 = load ptr, ptr %20, align 8, !tbaa !5
  %2615 = getelementptr inbounds %struct.ImGuiContext, ptr %2614, i32 0, i32 175
  %2616 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2615, i32 0, i32 1
  %2617 = getelementptr inbounds %struct.ImVector.29, ptr %2616, i32 0, i32 0
  %2618 = load i32, ptr %2617, align 8, !tbaa !192
  %2619 = sub nsw i32 %2618, 1
  store i32 %2619, ptr %111, align 4, !tbaa !9
  %2620 = load ptr, ptr %20, align 8, !tbaa !5
  %2621 = getelementptr inbounds %struct.ImGuiContext, ptr %2620, i32 0, i32 175
  %2622 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2621, i32 0, i32 1
  %2623 = getelementptr inbounds %struct.ImVector.29, ptr %2622, i32 0, i32 2
  %2624 = load ptr, ptr %2623, align 8, !tbaa !191
  %2625 = load ptr, ptr %12, align 8, !tbaa !5
  %2626 = call i32 @strcmp(ptr noundef %2624, ptr noundef %2625) #16
  %2627 = icmp ne i32 %2626, 0
  %2628 = zext i1 %2627 to i32
  %2629 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %2630 = trunc i8 %2629 to i1
  %2631 = zext i1 %2630 to i32
  %2632 = or i32 %2631, %2628
  %2633 = icmp ne i32 %2632, 0
  %2634 = zext i1 %2633 to i8
  store i8 %2634, ptr %65, align 1, !tbaa !42
  br label %2635

2635:                                             ; preds = %2608, %2605, %2603, %2597
  %2636 = load ptr, ptr %20, align 8, !tbaa !5
  %2637 = getelementptr inbounds %struct.ImGuiContext, ptr %2636, i32 0, i32 175
  %2638 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2637, i32 0, i32 0
  store i32 0, ptr %2638, align 8, !tbaa !190
  br label %2639

2639:                                             ; preds = %2635, %2590
  %2640 = load ptr, ptr %110, align 8, !tbaa !5
  %2641 = icmp ne ptr %2640, null
  br i1 %2641, label %2642, label %2694

2642:                                             ; preds = %2639
  %2643 = load i32, ptr %111, align 4, !tbaa !9
  %2644 = icmp sge i32 %2643, 0
  br i1 %2644, label %2645, label %2646

2645:                                             ; preds = %2642
  br label %2648

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

2647:                                             ; No predecessors!
  br label %2648

2648:                                             ; preds = %2647, %2645
  %2649 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2650 = trunc i8 %2649 to i1
  br i1 %2650, label %2651, label %2686

2651:                                             ; preds = %2648
  call void @llvm.lifetime.start.p0(i64 64, ptr %126) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %126)
  %2652 = load ptr, ptr %20, align 8, !tbaa !5
  %2653 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 0
  store ptr %2652, ptr %2653, align 8, !tbaa !177
  %2654 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 1
  store i32 262144, ptr %2654, align 8, !tbaa !179
  %2655 = load i32, ptr %15, align 4, !tbaa !9
  %2656 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 2
  store i32 %2655, ptr %2656, align 4, !tbaa !180
  %2657 = load ptr, ptr %12, align 8, !tbaa !5
  %2658 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 6
  store ptr %2657, ptr %2658, align 8, !tbaa !183
  %2659 = load i32, ptr %111, align 4, !tbaa !9
  %2660 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 7
  store i32 %2659, ptr %2660, align 8, !tbaa !184
  %2661 = load i32, ptr %13, align 4, !tbaa !9
  %2662 = load i32, ptr %111, align 4, !tbaa !9
  %2663 = add nsw i32 %2662, 1
  %2664 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2661, i32 noundef %2663)
  %2665 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 8
  store i32 %2664, ptr %2665, align 4, !tbaa !185
  %2666 = load ptr, ptr %17, align 8, !tbaa !5
  %2667 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 3
  store ptr %2666, ptr %2667, align 8, !tbaa !181
  %2668 = load ptr, ptr %16, align 8, !tbaa !5
  %2669 = call noundef i32 %2668(ptr noundef %126)
  %2670 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 6
  %2671 = load ptr, ptr %2670, align 8, !tbaa !183
  store ptr %2671, ptr %12, align 8, !tbaa !5
  %2672 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 8
  %2673 = load i32, ptr %2672, align 4, !tbaa !185
  store i32 %2673, ptr %13, align 4, !tbaa !9
  %2674 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %126, i32 0, i32 7
  %2675 = load i32, ptr %2674, align 8, !tbaa !184
  %2676 = load i32, ptr %13, align 4, !tbaa !9
  %2677 = sub nsw i32 %2676, 1
  %2678 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2675, i32 noundef %2677)
  store i32 %2678, ptr %111, align 4, !tbaa !9
  %2679 = load i32, ptr %111, align 4, !tbaa !9
  %2680 = load i32, ptr %13, align 4, !tbaa !9
  %2681 = icmp sle i32 %2679, %2680
  br i1 %2681, label %2682, label %2683

2682:                                             ; preds = %2651
  br label %2685

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

2684:                                             ; No predecessors!
  br label %2685

2685:                                             ; preds = %2684, %2682
  call void @llvm.lifetime.end.p0(i64 64, ptr %126) #14
  br label %2686

2686:                                             ; preds = %2685, %2648
  %2687 = load ptr, ptr %12, align 8, !tbaa !5
  %2688 = load ptr, ptr %110, align 8, !tbaa !5
  %2689 = load i32, ptr %111, align 4, !tbaa !9
  %2690 = add nsw i32 %2689, 1
  %2691 = load i32, ptr %13, align 4, !tbaa !9
  %2692 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2690, i32 noundef %2691)
  %2693 = sext i32 %2692 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2687, ptr noundef %2688, i64 noundef %2693)
  br label %2694

2694:                                             ; preds = %2686, %2639
  %2695 = load ptr, ptr %20, align 8, !tbaa !5
  %2696 = getelementptr inbounds %struct.ImGuiContext, ptr %2695, i32 0, i32 46
  %2697 = load i32, ptr %2696, align 8, !tbaa !110
  %2698 = load i32, ptr %29, align 4, !tbaa !9
  %2699 = icmp eq i32 %2697, %2698
  br i1 %2699, label %2700, label %2704

2700:                                             ; preds = %2694
  %2701 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %2702 = trunc i8 %2701 to i1
  br i1 %2702, label %2703, label %2704

2703:                                             ; preds = %2700
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2714

2704:                                             ; preds = %2700, %2694
  %2705 = load ptr, ptr %20, align 8, !tbaa !5
  %2706 = getelementptr inbounds %struct.ImGuiContext, ptr %2705, i32 0, i32 46
  %2707 = load i32, ptr %2706, align 8, !tbaa !110
  %2708 = load i32, ptr %29, align 4, !tbaa !9
  %2709 = icmp eq i32 %2707, %2708
  br i1 %2709, label %2710, label %2713

2710:                                             ; preds = %2704
  %2711 = load ptr, ptr %20, align 8, !tbaa !5
  %2712 = getelementptr inbounds %struct.ImGuiContext, ptr %2711, i32 0, i32 238
  store i32 1, ptr %2712, align 4, !tbaa !193
  br label %2713

2713:                                             ; preds = %2710, %2704
  br label %2714

2714:                                             ; preds = %2713, %2703
  %2715 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2716 = trunc i8 %2715 to i1
  br i1 %2716, label %2727, label %2717

2717:                                             ; preds = %2714
  %2718 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2718, i32 noundef 1)
  %2719 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %127, ptr align 4 %2719, i64 8, i1 false), !tbaa.struct !43
  %2720 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %128, ptr align 4 %2720, i64 8, i1 false), !tbaa.struct !43
  %2721 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2722 = load ptr, ptr %22, align 8, !tbaa !5
  %2723 = getelementptr inbounds %struct.ImGuiStyle, ptr %2722, i32 0, i32 13
  %2724 = load float, ptr %2723, align 4, !tbaa !103
  %2725 = load <2 x float>, ptr %127, align 4
  %2726 = load <2 x float>, ptr %128, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2725, <2 x float> %2726, i32 noundef %2721, i1 noundef zeroext true, float noundef %2724)
  br label %2727

2727:                                             ; preds = %2717, %2714
  call void @llvm.lifetime.start.p0(i64 16, ptr %129) #14
  %2728 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2729 = getelementptr inbounds %struct.ImVec2, ptr %2728, i32 0, i32 0
  %2730 = load float, ptr %2729, align 4, !tbaa !146
  %2731 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2732 = getelementptr inbounds %struct.ImVec2, ptr %2731, i32 0, i32 1
  %2733 = load float, ptr %2732, align 4, !tbaa !194
  %2734 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2735 = getelementptr inbounds %struct.ImVec2, ptr %2734, i32 0, i32 0
  %2736 = load float, ptr %2735, align 4, !tbaa !146
  %2737 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2738 = load float, ptr %2737, align 4, !tbaa !99
  %2739 = fadd float %2736, %2738
  %2740 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2741 = getelementptr inbounds %struct.ImVec2, ptr %2740, i32 0, i32 1
  %2742 = load float, ptr %2741, align 4, !tbaa !194
  %2743 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2744 = load float, ptr %2743, align 4, !tbaa !97
  %2745 = fadd float %2742, %2744
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %129, float noundef %2730, float noundef %2733, float noundef %2739, float noundef %2745)
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #14
  %2746 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2747 = trunc i8 %2746 to i1
  br i1 %2747, label %2748, label %2752

2748:                                             ; preds = %2727
  %2749 = load ptr, ptr %38, align 8, !tbaa !5
  %2750 = getelementptr inbounds %struct.ImGuiWindow, ptr %2749, i32 0, i32 62
  %2751 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2750, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 8 %2751, i64 8, i1 false), !tbaa.struct !43
  br label %2757

2752:                                             ; preds = %2727
  %2753 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2754 = load ptr, ptr %22, align 8, !tbaa !5
  %2755 = getelementptr inbounds %struct.ImGuiStyle, ptr %2754, i32 0, i32 12
  %2756 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2753, ptr noundef nonnull align 4 dereferenceable(8) %2755)
  store <2 x float> %2756, ptr %130, align 4
  br label %2757

2757:                                             ; preds = %2752, %2748
  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
  %2758 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2759 = trunc i8 %2758 to i1
  br i1 %2759, label %2760, label %2765

2760:                                             ; preds = %2757
  %2761 = load ptr, ptr %47, align 8, !tbaa !5
  %2762 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2761, i32 0, i32 6
  %2763 = getelementptr inbounds %struct.ImVector.29, ptr %2762, i32 0, i32 2
  %2764 = load ptr, ptr %2763, align 8, !tbaa !121
  br label %2767

2765:                                             ; preds = %2757
  %2766 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2767

2767:                                             ; preds = %2765, %2760
  %2768 = phi ptr [ %2764, %2760 ], [ %2766, %2765 ]
  store ptr %2768, 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
  %2769 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %2770 = trunc i8 %2769 to i1
  br i1 %2770, label %2771, label %2777

2771:                                             ; preds = %2767
  %2772 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2772, ptr %133, align 8, !tbaa !5
  %2773 = load ptr, ptr %11, align 8, !tbaa !5
  %2774 = load ptr, ptr %11, align 8, !tbaa !5
  %2775 = call i64 @strlen(ptr noundef %2774) #16
  %2776 = getelementptr inbounds i8, ptr %2773, i64 %2775
  store ptr %2776, ptr %134, align 8, !tbaa !5
  br label %2777

2777:                                             ; preds = %2771, %2767
  %2778 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2779 = trunc i8 %2778 to i1
  br i1 %2779, label %2783, label %2780

2780:                                             ; preds = %2777
  %2781 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %2782 = trunc i8 %2781 to i1
  br i1 %2782, label %2783, label %3369

2783:                                             ; preds = %2780, %2777
  %2784 = load ptr, ptr %47, align 8, !tbaa !5
  %2785 = icmp ne ptr %2784, null
  br i1 %2785, label %2786, label %2787

2786:                                             ; preds = %2783
  br label %2789

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

2788:                                             ; No predecessors!
  br label %2789

2789:                                             ; preds = %2788, %2786
  %2790 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %2791 = trunc i8 %2790 to i1
  br i1 %2791, label %2799, label %2792

2792:                                             ; preds = %2789
  %2793 = load ptr, ptr %133, align 8, !tbaa !5
  %2794 = load ptr, ptr %47, align 8, !tbaa !5
  %2795 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2794, i32 0, i32 3
  %2796 = load i32, ptr %2795, align 8, !tbaa !119
  %2797 = sext i32 %2796 to i64
  %2798 = getelementptr inbounds i8, ptr %2793, i64 %2797
  store ptr %2798, ptr %134, align 8, !tbaa !5
  br label %2799

2799:                                             ; preds = %2792, %2789
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #14
  %2800 = load ptr, ptr %47, align 8, !tbaa !5
  %2801 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2800, i32 0, i32 5
  %2802 = getelementptr inbounds %struct.ImVector.5, ptr %2801, i32 0, i32 2
  %2803 = load ptr, ptr %2802, align 8, !tbaa !122
  store ptr %2803, 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
  %2804 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2805 = trunc i8 %2804 to i1
  br i1 %2805, label %2806, label %2818

2806:                                             ; preds = %2799
  %2807 = load ptr, ptr %135, align 8, !tbaa !5
  %2808 = load ptr, ptr %47, align 8, !tbaa !5
  %2809 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2808, i32 0, i32 12
  %2810 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2809, i32 0, i32 0
  %2811 = load i32, ptr %2810, align 4, !tbaa !153
  %2812 = sext i32 %2811 to i64
  %2813 = getelementptr inbounds i16, ptr %2807, i64 %2812
  %2814 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 0
  store ptr %2813, ptr %2814, align 16, !tbaa !5
  %2815 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  store i32 -1, ptr %2815, align 4, !tbaa !9
  %2816 = load i32, ptr %140, align 4, !tbaa !9
  %2817 = add nsw i32 %2816, 1
  store i32 %2817, ptr %140, align 4, !tbaa !9
  br label %2818

2818:                                             ; preds = %2806, %2799
  %2819 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %2820 = trunc i8 %2819 to i1
  br i1 %2820, label %2821, label %2838

2821:                                             ; preds = %2818
  %2822 = load ptr, ptr %135, align 8, !tbaa !5
  %2823 = load ptr, ptr %47, align 8, !tbaa !5
  %2824 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2823, i32 0, i32 12
  %2825 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2824, i32 0, i32 1
  %2826 = load i32, ptr %2825, align 4, !tbaa !154
  %2827 = load ptr, ptr %47, align 8, !tbaa !5
  %2828 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2827, i32 0, i32 12
  %2829 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2828, i32 0, i32 2
  %2830 = load i32, ptr %2829, align 4, !tbaa !155
  %2831 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2826, i32 noundef %2830)
  %2832 = sext i32 %2831 to i64
  %2833 = getelementptr inbounds i16, ptr %2822, i64 %2832
  %2834 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 1
  store ptr %2833, ptr %2834, align 8, !tbaa !5
  %2835 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  store i32 -1, ptr %2835, align 4, !tbaa !9
  %2836 = load i32, ptr %140, align 4, !tbaa !9
  %2837 = add nsw i32 %2836, 1
  store i32 %2837, ptr %140, align 4, !tbaa !9
  br label %2838

2838:                                             ; preds = %2821, %2818
  %2839 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2840 = trunc i8 %2839 to i1
  %2841 = zext i1 %2840 to i64
  %2842 = select i1 %2840, i32 1, i32 0
  %2843 = load i32, ptr %140, align 4, !tbaa !9
  %2844 = add nsw i32 %2843, %2842
  store i32 %2844, 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
  %2845 = load ptr, ptr %135, align 8, !tbaa !5
  store ptr %2845, ptr %142, align 8, !tbaa !5
  br label %2846

2846:                                             ; preds = %2895, %2838
  %2847 = load ptr, ptr %142, align 8, !tbaa !5
  %2848 = load i16, ptr %2847, align 2, !tbaa !151
  %2849 = zext i16 %2848 to i32
  %2850 = icmp ne i32 %2849, 0
  br i1 %2850, label %2852, label %2851

2851:                                             ; preds = %2846
  store i32 7, ptr %19, align 4
  br label %2898

2852:                                             ; preds = %2846
  %2853 = load ptr, ptr %142, align 8, !tbaa !5
  %2854 = load i16, ptr %2853, align 2, !tbaa !151
  %2855 = zext i16 %2854 to i32
  %2856 = icmp eq i32 %2855, 10
  br i1 %2856, label %2857, label %2894

2857:                                             ; preds = %2852
  %2858 = load i32, ptr %141, align 4, !tbaa !9
  %2859 = add nsw i32 %2858, 1
  store i32 %2859, ptr %141, align 4, !tbaa !9
  %2860 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  %2861 = load i32, ptr %2860, align 4, !tbaa !9
  %2862 = icmp eq i32 %2861, -1
  br i1 %2862, label %2863, label %2876

2863:                                             ; preds = %2857
  %2864 = load ptr, ptr %142, align 8, !tbaa !5
  %2865 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 0
  %2866 = load ptr, ptr %2865, align 16, !tbaa !5
  %2867 = icmp uge ptr %2864, %2866
  br i1 %2867, label %2868, label %2876

2868:                                             ; preds = %2863
  %2869 = load i32, ptr %141, align 4, !tbaa !9
  %2870 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  store i32 %2869, ptr %2870, align 4, !tbaa !9
  %2871 = load i32, ptr %140, align 4, !tbaa !9
  %2872 = add nsw i32 %2871, -1
  store i32 %2872, ptr %140, align 4, !tbaa !9
  %2873 = icmp sle i32 %2872, 0
  br i1 %2873, label %2874, label %2875

2874:                                             ; preds = %2868
  store i32 7, ptr %19, align 4
  br label %2898

2875:                                             ; preds = %2868
  br label %2876

2876:                                             ; preds = %2875, %2863, %2857
  %2877 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  %2878 = load i32, ptr %2877, align 4, !tbaa !9
  %2879 = icmp eq i32 %2878, -1
  br i1 %2879, label %2880, label %2893

2880:                                             ; preds = %2876
  %2881 = load ptr, ptr %142, align 8, !tbaa !5
  %2882 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 1
  %2883 = load ptr, ptr %2882, align 8, !tbaa !5
  %2884 = icmp uge ptr %2881, %2883
  br i1 %2884, label %2885, label %2893

2885:                                             ; preds = %2880
  %2886 = load i32, ptr %141, align 4, !tbaa !9
  %2887 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  store i32 %2886, ptr %2887, align 4, !tbaa !9
  %2888 = load i32, ptr %140, align 4, !tbaa !9
  %2889 = add nsw i32 %2888, -1
  store i32 %2889, ptr %140, align 4, !tbaa !9
  %2890 = icmp sle i32 %2889, 0
  br i1 %2890, label %2891, label %2892

2891:                                             ; preds = %2885
  store i32 7, ptr %19, align 4
  br label %2898

2892:                                             ; preds = %2885
  br label %2893

2893:                                             ; preds = %2892, %2880, %2876
  br label %2894

2894:                                             ; preds = %2893, %2852
  br label %2895

2895:                                             ; preds = %2894
  %2896 = load ptr, ptr %142, align 8, !tbaa !5
  %2897 = getelementptr inbounds i16, ptr %2896, i32 1
  store ptr %2897, ptr %142, align 8, !tbaa !5
  br label %2846, !llvm.loop !195

2898:                                             ; preds = %2891, %2874, %2851
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #14
  br label %2899

2899:                                             ; preds = %2898
  %2900 = load i32, ptr %141, align 4, !tbaa !9
  %2901 = add nsw i32 %2900, 1
  store i32 %2901, ptr %141, align 4, !tbaa !9
  %2902 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  %2903 = load i32, ptr %2902, align 4, !tbaa !9
  %2904 = icmp eq i32 %2903, -1
  br i1 %2904, label %2905, label %2908

2905:                                             ; preds = %2899
  %2906 = load i32, ptr %141, align 4, !tbaa !9
  %2907 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  store i32 %2906, ptr %2907, align 4, !tbaa !9
  br label %2908

2908:                                             ; preds = %2905, %2899
  %2909 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  %2910 = load i32, ptr %2909, align 4, !tbaa !9
  %2911 = icmp eq i32 %2910, -1
  br i1 %2911, label %2912, label %2915

2912:                                             ; preds = %2908
  %2913 = load i32, ptr %141, align 4, !tbaa !9
  %2914 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  store i32 %2913, ptr %2914, align 4, !tbaa !9
  br label %2915

2915:                                             ; preds = %2912, %2908
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #14
  %2916 = load ptr, ptr %20, align 8, !tbaa !5
  %2917 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 0
  %2918 = load ptr, ptr %2917, align 16, !tbaa !5
  %2919 = load ptr, ptr %135, align 8, !tbaa !5
  %2920 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2918, ptr noundef %2919)
  %2921 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 0
  %2922 = load ptr, ptr %2921, align 16, !tbaa !5
  %2923 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %2916, ptr noundef %2920, ptr noundef %2922, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2923, ptr %143, align 4
  %2924 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 0
  %2925 = load float, ptr %2924, align 4, !tbaa !99
  %2926 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  store float %2925, ptr %2926, align 4, !tbaa !99
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #14
  %2927 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 0
  %2928 = load i32, ptr %2927, align 4, !tbaa !9
  %2929 = sitofp i32 %2928 to float
  %2930 = load ptr, ptr %20, align 8, !tbaa !5
  %2931 = getelementptr inbounds %struct.ImGuiContext, ptr %2930, i32 0, i32 5
  %2932 = load float, ptr %2931, align 8, !tbaa !45
  %2933 = fmul float %2929, %2932
  %2934 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  store float %2933, ptr %2934, align 4, !tbaa !97
  %2935 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  %2936 = load i32, ptr %2935, align 4, !tbaa !9
  %2937 = icmp sge i32 %2936, 0
  br i1 %2937, label %2938, label %2958

2938:                                             ; preds = %2915
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #14
  %2939 = load ptr, ptr %20, align 8, !tbaa !5
  %2940 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 1
  %2941 = load ptr, ptr %2940, align 8, !tbaa !5
  %2942 = load ptr, ptr %135, align 8, !tbaa !5
  %2943 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2941, ptr noundef %2942)
  %2944 = getelementptr inbounds [2 x ptr], ptr %138, i64 0, i64 1
  %2945 = load ptr, ptr %2944, align 8, !tbaa !5
  %2946 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %2939, ptr noundef %2943, ptr noundef %2945, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2946, ptr %144, align 4
  %2947 = getelementptr inbounds %struct.ImVec2, ptr %144, i32 0, i32 0
  %2948 = load float, ptr %2947, align 4, !tbaa !99
  %2949 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  store float %2948, ptr %2949, align 4, !tbaa !99
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #14
  %2950 = getelementptr inbounds [2 x i32], ptr %139, i64 0, i64 1
  %2951 = load i32, ptr %2950, align 4, !tbaa !9
  %2952 = sitofp i32 %2951 to float
  %2953 = load ptr, ptr %20, align 8, !tbaa !5
  %2954 = getelementptr inbounds %struct.ImGuiContext, ptr %2953, i32 0, i32 5
  %2955 = load float, ptr %2954, align 8, !tbaa !45
  %2956 = fmul float %2952, %2955
  %2957 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 1
  store float %2956, ptr %2957, align 4, !tbaa !97
  br label %2958

2958:                                             ; preds = %2938, %2915
  %2959 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2960 = trunc i8 %2959 to i1
  br i1 %2960, label %2961, label %2970

2961:                                             ; preds = %2958
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #14
  %2962 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2963 = load float, ptr %2962, align 4, !tbaa !99
  %2964 = load i32, ptr %141, align 4, !tbaa !9
  %2965 = sitofp i32 %2964 to float
  %2966 = load ptr, ptr %20, align 8, !tbaa !5
  %2967 = getelementptr inbounds %struct.ImGuiContext, ptr %2966, i32 0, i32 5
  %2968 = load float, ptr %2967, align 8, !tbaa !45
  %2969 = fmul float %2965, %2968
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %145, float noundef %2963, float noundef %2969)
  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 %2970

2970:                                             ; preds = %2961, %2958
  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
  %2971 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2972 = trunc i8 %2971 to i1
  br i1 %2972, label %2973, label %3111

2973:                                             ; preds = %2970
  %2974 = load ptr, ptr %47, align 8, !tbaa !5
  %2975 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2974, i32 0, i32 14
  %2976 = load i8, ptr %2975, align 4, !tbaa !156, !range !40, !noundef !41
  %2977 = trunc i8 %2976 to i1
  br i1 %2977, label %2978, label %3111

2978:                                             ; preds = %2973
  %2979 = load i32, ptr %15, align 4, !tbaa !9
  %2980 = and i32 %2979, 4096
  %2981 = icmp ne i32 %2980, 0
  br i1 %2981, label %3031, label %2982

2982:                                             ; preds = %2978
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #14
  %2983 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2984 = load float, ptr %2983, align 4, !tbaa !99
  %2985 = fmul float %2984, 2.500000e-01
  store float %2985, ptr %146, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #14
  %2986 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2987 = load float, ptr %2986, align 4, !tbaa !99
  %2988 = load ptr, ptr %22, align 8, !tbaa !5
  %2989 = getelementptr inbounds %struct.ImGuiStyle, ptr %2988, i32 0, i32 12
  %2990 = getelementptr inbounds %struct.ImVec2, ptr %2989, i32 0, i32 0
  %2991 = load float, ptr %2990, align 4, !tbaa !147
  %2992 = fsub float %2987, %2991
  store float %2992, ptr %147, align 4, !tbaa !44
  %2993 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  %2994 = load float, ptr %2993, align 4, !tbaa !99
  %2995 = load ptr, ptr %47, align 8, !tbaa !5
  %2996 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2995, i32 0, i32 11
  %2997 = load float, ptr %2996, align 8, !tbaa !124
  %2998 = fcmp olt float %2994, %2997
  br i1 %2998, label %2999, label %3009

2999:                                             ; preds = %2982
  %3000 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  %3001 = load float, ptr %3000, align 4, !tbaa !99
  %3002 = load float, ptr %146, align 4, !tbaa !44
  %3003 = fsub float %3001, %3002
  %3004 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %3003)
  %3005 = fptosi float %3004 to i32
  %3006 = sitofp i32 %3005 to float
  %3007 = load ptr, ptr %47, align 8, !tbaa !5
  %3008 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3007, i32 0, i32 11
  store float %3006, ptr %3008, align 8, !tbaa !124
  br label %3030

3009:                                             ; preds = %2982
  %3010 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  %3011 = load float, ptr %3010, align 4, !tbaa !99
  %3012 = load float, ptr %147, align 4, !tbaa !44
  %3013 = fsub float %3011, %3012
  %3014 = load ptr, ptr %47, align 8, !tbaa !5
  %3015 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3014, i32 0, i32 11
  %3016 = load float, ptr %3015, align 8, !tbaa !124
  %3017 = fcmp oge float %3013, %3016
  br i1 %3017, label %3018, label %3029

3018:                                             ; preds = %3009
  %3019 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  %3020 = load float, ptr %3019, align 4, !tbaa !99
  %3021 = load float, ptr %147, align 4, !tbaa !44
  %3022 = fsub float %3020, %3021
  %3023 = load float, ptr %146, align 4, !tbaa !44
  %3024 = fadd float %3022, %3023
  %3025 = fptosi float %3024 to i32
  %3026 = sitofp i32 %3025 to float
  %3027 = load ptr, ptr %47, align 8, !tbaa !5
  %3028 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3027, i32 0, i32 11
  store float %3026, ptr %3028, align 8, !tbaa !124
  br label %3029

3029:                                             ; preds = %3018, %3009
  br label %3030

3030:                                             ; preds = %3029, %2999
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #14
  br label %3034

3031:                                             ; preds = %2978
  %3032 = load ptr, ptr %47, align 8, !tbaa !5
  %3033 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3032, i32 0, i32 11
  store float 0.000000e+00, ptr %3033, align 8, !tbaa !124
  br label %3034

3034:                                             ; preds = %3031, %3030
  %3035 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3036 = trunc i8 %3035 to i1
  br i1 %3036, label %3037, label %3108

3037:                                             ; preds = %3034
  %3038 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  %3039 = load float, ptr %3038, align 4, !tbaa !97
  %3040 = load ptr, ptr %20, align 8, !tbaa !5
  %3041 = getelementptr inbounds %struct.ImGuiContext, ptr %3040, i32 0, i32 5
  %3042 = load float, ptr %3041, align 8, !tbaa !45
  %3043 = fsub float %3039, %3042
  %3044 = load float, ptr %55, align 4, !tbaa !44
  %3045 = fcmp olt float %3043, %3044
  br i1 %3045, label %3046, label %3054

3046:                                             ; preds = %3037
  %3047 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  %3048 = load float, ptr %3047, align 4, !tbaa !97
  %3049 = load ptr, ptr %20, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiContext, ptr %3049, i32 0, i32 5
  %3051 = load float, ptr %3050, align 8, !tbaa !45
  %3052 = fsub float %3048, %3051
  %3053 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %3052)
  store float %3053, ptr %55, align 4, !tbaa !44
  br label %3080

3054:                                             ; preds = %3037
  %3055 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  %3056 = load float, ptr %3055, align 4, !tbaa !97
  %3057 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %3058 = load float, ptr %3057, align 4, !tbaa !97
  %3059 = load ptr, ptr %22, align 8, !tbaa !5
  %3060 = getelementptr inbounds %struct.ImGuiStyle, ptr %3059, i32 0, i32 12
  %3061 = getelementptr inbounds %struct.ImVec2, ptr %3060, i32 0, i32 1
  %3062 = load float, ptr %3061, align 4, !tbaa !98
  %3063 = fneg float %3062
  %3064 = call float @llvm.fmuladd.f32(float %3063, float 2.000000e+00, float %3058)
  %3065 = fsub float %3056, %3064
  %3066 = load float, ptr %55, align 4, !tbaa !44
  %3067 = fcmp oge float %3065, %3066
  br i1 %3067, label %3068, label %3079

3068:                                             ; preds = %3054
  %3069 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  %3070 = load float, ptr %3069, align 4, !tbaa !97
  %3071 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %3072 = load float, ptr %3071, align 4, !tbaa !97
  %3073 = fsub float %3070, %3072
  %3074 = load ptr, ptr %22, align 8, !tbaa !5
  %3075 = getelementptr inbounds %struct.ImGuiStyle, ptr %3074, i32 0, i32 12
  %3076 = getelementptr inbounds %struct.ImVec2, ptr %3075, i32 0, i32 1
  %3077 = load float, ptr %3076, align 4, !tbaa !98
  %3078 = call float @llvm.fmuladd.f32(float %3077, float 2.000000e+00, float %3073)
  store float %3078, ptr %55, align 4, !tbaa !44
  br label %3079

3079:                                             ; preds = %3068, %3054
  br label %3080

3080:                                             ; preds = %3079, %3046
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #14
  %3081 = getelementptr inbounds %struct.ImVec2, ptr %131, i32 0, i32 1
  %3082 = load float, ptr %3081, align 4, !tbaa !97
  %3083 = load ptr, ptr %22, align 8, !tbaa !5
  %3084 = getelementptr inbounds %struct.ImGuiStyle, ptr %3083, i32 0, i32 12
  %3085 = getelementptr inbounds %struct.ImVec2, ptr %3084, i32 0, i32 1
  %3086 = load float, ptr %3085, align 4, !tbaa !98
  %3087 = call float @llvm.fmuladd.f32(float %3086, float 2.000000e+00, float %3082)
  %3088 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %3089 = load float, ptr %3088, align 4, !tbaa !97
  %3090 = fsub float %3087, %3089
  %3091 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %3090, float noundef 0.000000e+00)
  store float %3091, ptr %148, align 4, !tbaa !44
  %3092 = load float, ptr %55, align 4, !tbaa !44
  %3093 = load float, ptr %148, align 4, !tbaa !44
  %3094 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %3092, float noundef 0.000000e+00, float noundef %3093)
  store float %3094, ptr %55, align 4, !tbaa !44
  %3095 = load ptr, ptr %38, align 8, !tbaa !5
  %3096 = getelementptr inbounds %struct.ImGuiWindow, ptr %3095, i32 0, i32 23
  %3097 = getelementptr inbounds %struct.ImVec2, ptr %3096, i32 0, i32 1
  %3098 = load float, ptr %3097, align 4, !tbaa !115
  %3099 = load float, ptr %55, align 4, !tbaa !44
  %3100 = fsub float %3098, %3099
  %3101 = getelementptr inbounds %struct.ImVec2, ptr %130, i32 0, i32 1
  %3102 = load float, ptr %3101, align 4, !tbaa !97
  %3103 = fadd float %3102, %3100
  store float %3103, ptr %3101, align 4, !tbaa !97
  %3104 = load float, ptr %55, align 4, !tbaa !44
  %3105 = load ptr, ptr %38, align 8, !tbaa !5
  %3106 = getelementptr inbounds %struct.ImGuiWindow, ptr %3105, i32 0, i32 23
  %3107 = getelementptr inbounds %struct.ImVec2, ptr %3106, i32 0, i32 1
  store float %3104, ptr %3107, align 4, !tbaa !115
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #14
  br label %3108

3108:                                             ; preds = %3080, %3034
  %3109 = load ptr, ptr %47, align 8, !tbaa !5
  %3110 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3109, i32 0, i32 14
  store i8 0, ptr %3110, align 4, !tbaa !156
  br label %3111

3111:                                             ; preds = %3108, %2973, %2970
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #14
  %3112 = load ptr, ptr %47, align 8, !tbaa !5
  %3113 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3112, i32 0, i32 11
  %3114 = load float, ptr %3113, align 8, !tbaa !124
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %149, float noundef %3114, float noundef 0.000000e+00)
  %3115 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3116 = trunc i8 %3115 to i1
  br i1 %3116, label %3117, label %3246

3117:                                             ; preds = %3111
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #14
  %3118 = load ptr, ptr %135, align 8, !tbaa !5
  %3119 = load ptr, ptr %47, align 8, !tbaa !5
  %3120 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3119, i32 0, i32 12
  %3121 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3120, i32 0, i32 1
  %3122 = load i32, ptr %3121, align 4, !tbaa !154
  %3123 = load ptr, ptr %47, align 8, !tbaa !5
  %3124 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3123, i32 0, i32 12
  %3125 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3124, i32 0, i32 2
  %3126 = load i32, ptr %3125, align 4, !tbaa !155
  %3127 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %3122, i32 noundef %3126)
  %3128 = sext i32 %3127 to i64
  %3129 = getelementptr inbounds i16, ptr %3118, i64 %3128
  store ptr %3129, ptr %150, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #14
  %3130 = load ptr, ptr %135, align 8, !tbaa !5
  %3131 = load ptr, ptr %47, align 8, !tbaa !5
  %3132 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3131, i32 0, i32 12
  %3133 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3132, i32 0, i32 1
  %3134 = load i32, ptr %3133, align 4, !tbaa !154
  %3135 = load ptr, ptr %47, align 8, !tbaa !5
  %3136 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3135, i32 0, i32 12
  %3137 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3136, i32 0, i32 2
  %3138 = load i32, ptr %3137, align 4, !tbaa !155
  %3139 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3134, i32 noundef %3138)
  %3140 = sext i32 %3139 to i64
  %3141 = getelementptr inbounds i16, ptr %3130, i64 %3140
  store ptr %3141, ptr %151, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #14
  %3142 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3143 = trunc i8 %3142 to i1
  %3144 = zext i1 %3143 to i64
  %3145 = select i1 %3143, float 1.000000e+00, float 0x3FE3333340000000
  %3146 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %3145)
  store i32 %3146, ptr %152, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #14
  %3147 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3148 = trunc i8 %3147 to i1
  %3149 = zext i1 %3148 to i64
  %3150 = select i1 %3148, float 0.000000e+00, float -1.000000e+00
  store float %3150, ptr %153, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #14
  %3151 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3152 = trunc i8 %3151 to i1
  %3153 = zext i1 %3152 to i64
  %3154 = select i1 %3152, float 0.000000e+00, float 2.000000e+00
  store float %3154, 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
  %3155 = 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> %3155, ptr %156, align 4
  %3156 = 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> %3156, 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
  %3157 = load ptr, ptr %150, align 8, !tbaa !5
  store ptr %3157, ptr %157, align 8, !tbaa !5
  br label %3158

3158:                                             ; preds = %3231, %3117
  %3159 = load ptr, ptr %157, align 8, !tbaa !5
  %3160 = load ptr, ptr %151, align 8, !tbaa !5
  %3161 = icmp ult ptr %3159, %3160
  br i1 %3161, label %3163, label %3162

3162:                                             ; preds = %3158
  store i32 10, ptr %19, align 4
  br label %3244

3163:                                             ; preds = %3158
  %3164 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 1
  %3165 = load float, ptr %3164, align 4, !tbaa !97
  %3166 = getelementptr inbounds %struct.ImVec4, ptr %129, i32 0, i32 3
  %3167 = load float, ptr %3166, align 4, !tbaa !196
  %3168 = load ptr, ptr %20, align 8, !tbaa !5
  %3169 = getelementptr inbounds %struct.ImGuiContext, ptr %3168, i32 0, i32 5
  %3170 = load float, ptr %3169, align 8, !tbaa !45
  %3171 = fadd float %3167, %3170
  %3172 = fcmp ogt float %3165, %3171
  br i1 %3172, label %3173, label %3174

3173:                                             ; preds = %3163
  store i32 10, ptr %19, align 4
  br label %3244

3174:                                             ; preds = %3163
  %3175 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 1
  %3176 = load float, ptr %3175, align 4, !tbaa !97
  %3177 = getelementptr inbounds %struct.ImVec4, ptr %129, i32 0, i32 1
  %3178 = load float, ptr %3177, align 4, !tbaa !197
  %3179 = fcmp olt float %3176, %3178
  br i1 %3179, label %3180, label %3194

3180:                                             ; preds = %3174
  br label %3181

3181:                                             ; preds = %3192, %3180
  %3182 = load ptr, ptr %157, align 8, !tbaa !5
  %3183 = load ptr, ptr %151, align 8, !tbaa !5
  %3184 = icmp ult ptr %3182, %3183
  br i1 %3184, label %3185, label %3193

3185:                                             ; preds = %3181
  %3186 = load ptr, ptr %157, align 8, !tbaa !5
  %3187 = getelementptr inbounds i16, ptr %3186, i32 1
  store ptr %3187, ptr %157, align 8, !tbaa !5
  %3188 = load i16, ptr %3186, align 2, !tbaa !151
  %3189 = zext i16 %3188 to i32
  %3190 = icmp eq i32 %3189, 10
  br i1 %3190, label %3191, label %3192

3191:                                             ; preds = %3185
  br label %3193

3192:                                             ; preds = %3185
  br label %3181, !llvm.loop !198

3193:                                             ; preds = %3191, %3181
  br label %3231

3194:                                             ; preds = %3174
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #14
  %3195 = load ptr, ptr %20, align 8, !tbaa !5
  %3196 = load ptr, ptr %157, align 8, !tbaa !5
  %3197 = load ptr, ptr %151, align 8, !tbaa !5
  %3198 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %3195, ptr noundef %3196, ptr noundef %3197, ptr noundef %157, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %3198, ptr %158, align 4
  %3199 = getelementptr inbounds %struct.ImVec2, ptr %158, i32 0, i32 0
  %3200 = load float, ptr %3199, align 4, !tbaa !99
  %3201 = fcmp ole float %3200, 0.000000e+00
  br i1 %3201, label %3202, label %3211

3202:                                             ; preds = %3194
  %3203 = load ptr, ptr %20, align 8, !tbaa !5
  %3204 = getelementptr inbounds %struct.ImGuiContext, ptr %3203, i32 0, i32 4
  %3205 = load ptr, ptr %3204, align 8, !tbaa !131
  %3206 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %3205, i16 noundef zeroext 32)
  %3207 = fmul float %3206, 5.000000e-01
  %3208 = fptosi float %3207 to i32
  %3209 = sitofp i32 %3208 to float
  %3210 = getelementptr inbounds %struct.ImVec2, ptr %158, i32 0, i32 0
  store float %3209, ptr %3210, align 4, !tbaa !99
  br label %3211

3211:                                             ; preds = %3202, %3194
  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
  %3212 = load float, ptr %153, align 4, !tbaa !44
  %3213 = load ptr, ptr %20, align 8, !tbaa !5
  %3214 = getelementptr inbounds %struct.ImGuiContext, ptr %3213, i32 0, i32 5
  %3215 = load float, ptr %3214, align 8, !tbaa !45
  %3216 = fsub float %3212, %3215
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %161, float noundef 0.000000e+00, float noundef %3216)
  %3217 = 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> %3217, 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
  %3218 = getelementptr inbounds %struct.ImVec2, ptr %158, i32 0, i32 0
  %3219 = load float, ptr %3218, align 4, !tbaa !99
  %3220 = load float, ptr %154, align 4, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %163, float noundef %3219, float noundef %3220)
  %3221 = 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> %3221, 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)
  %3222 = 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 %3222, label %3223, label %3230

3223:                                             ; preds = %3211
  %3224 = load ptr, ptr %38, align 8, !tbaa !5
  %3225 = getelementptr inbounds %struct.ImGuiWindow, ptr %3224, i32 0, i32 80
  %3226 = load ptr, ptr %3225, align 8, !tbaa !199
  %3227 = getelementptr inbounds %struct.ImRect, ptr %159, i32 0, i32 0
  %3228 = getelementptr inbounds %struct.ImRect, ptr %159, i32 0, i32 1
  %3229 = load i32, ptr %152, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %3226, ptr noundef nonnull align 4 dereferenceable(8) %3227, ptr noundef nonnull align 4 dereferenceable(8) %3228, i32 noundef %3229, float noundef 0.000000e+00, i32 noundef 0)
  br label %3230

3230:                                             ; preds = %3223, %3211
  call void @llvm.lifetime.end.p0(i64 16, ptr %159) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #14
  br label %3231

3231:                                             ; preds = %3230, %3193
  %3232 = getelementptr inbounds %struct.ImVec2, ptr %130, i32 0, i32 0
  %3233 = load float, ptr %3232, align 4, !tbaa !99
  %3234 = getelementptr inbounds %struct.ImVec2, ptr %149, i32 0, i32 0
  %3235 = load float, ptr %3234, align 4, !tbaa !99
  %3236 = fsub float %3233, %3235
  %3237 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 0
  store float %3236, ptr %3237, align 4, !tbaa !99
  %3238 = load ptr, ptr %20, align 8, !tbaa !5
  %3239 = getelementptr inbounds %struct.ImGuiContext, ptr %3238, i32 0, i32 5
  %3240 = load float, ptr %3239, align 8, !tbaa !45
  %3241 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 1
  %3242 = load float, ptr %3241, align 4, !tbaa !97
  %3243 = fadd float %3242, %3240
  store float %3243, ptr %3241, align 4, !tbaa !97
  br label %3158, !llvm.loop !200

3244:                                             ; preds = %3173, %3162
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #14
  br label %3245

3245:                                             ; preds = %3244
  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 %3246

3246:                                             ; preds = %3245, %3111
  %3247 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3248 = trunc i8 %3247 to i1
  br i1 %3248, label %3256, label %3249

3249:                                             ; preds = %3246
  %3250 = load ptr, ptr %134, align 8, !tbaa !5
  %3251 = load ptr, ptr %133, align 8, !tbaa !5
  %3252 = ptrtoint ptr %3250 to i64
  %3253 = ptrtoint ptr %3251 to i64
  %3254 = sub i64 %3252, %3253
  %3255 = icmp slt i64 %3254, 2097152
  br i1 %3255, label %3256, label %3281

3256:                                             ; preds = %3249, %3246
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #14
  %3257 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3258 = trunc i8 %3257 to i1
  %3259 = zext i1 %3258 to i64
  %3260 = select i1 %3258, i32 1, i32 0
  %3261 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3260, float noundef 1.000000e+00)
  store i32 %3261, ptr %166, align 4, !tbaa !9
  %3262 = load ptr, ptr %38, align 8, !tbaa !5
  %3263 = getelementptr inbounds %struct.ImGuiWindow, ptr %3262, i32 0, i32 80
  %3264 = load ptr, ptr %3263, align 8, !tbaa !199
  %3265 = load ptr, ptr %20, align 8, !tbaa !5
  %3266 = getelementptr inbounds %struct.ImGuiContext, ptr %3265, i32 0, i32 4
  %3267 = load ptr, ptr %3266, align 8, !tbaa !131
  %3268 = load ptr, ptr %20, align 8, !tbaa !5
  %3269 = getelementptr inbounds %struct.ImGuiContext, ptr %3268, i32 0, i32 5
  %3270 = load float, ptr %3269, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #14
  %3271 = 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> %3271, ptr %167, align 4
  %3272 = load i32, ptr %166, align 4, !tbaa !9
  %3273 = load ptr, ptr %133, align 8, !tbaa !5
  %3274 = load ptr, ptr %134, align 8, !tbaa !5
  %3275 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3276 = trunc i8 %3275 to i1
  br i1 %3276, label %3277, label %3278

3277:                                             ; preds = %3256
  br label %3279

3278:                                             ; preds = %3256
  br label %3279

3279:                                             ; preds = %3278, %3277
  %3280 = phi ptr [ null, %3277 ], [ %129, %3278 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3264, ptr noundef %3267, float noundef %3270, ptr noundef nonnull align 4 dereferenceable(8) %167, i32 noundef %3272, ptr noundef %3273, ptr noundef %3274, float noundef 0.000000e+00, ptr noundef %3280)
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #14
  br label %3281

3281:                                             ; preds = %3279, %3249
  %3282 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3283 = trunc i8 %3282 to i1
  br i1 %3283, label %3284, label %3368

3284:                                             ; preds = %3281
  %3285 = load ptr, ptr %21, align 8, !tbaa !5
  %3286 = getelementptr inbounds %struct.ImGuiIO, ptr %3285, i32 0, i32 3
  %3287 = load float, ptr %3286, align 8, !tbaa !201
  %3288 = load ptr, ptr %47, align 8, !tbaa !5
  %3289 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3288, i32 0, i32 13
  %3290 = load float, ptr %3289, align 8, !tbaa !202
  %3291 = fadd float %3290, %3287
  store float %3291, ptr %3289, align 8, !tbaa !202
  call void @llvm.lifetime.start.p0(i64 1, ptr %168) #14
  %3292 = load ptr, ptr %20, align 8, !tbaa !5
  %3293 = getelementptr inbounds %struct.ImGuiContext, ptr %3292, i32 0, i32 2
  %3294 = getelementptr inbounds %struct.ImGuiIO, ptr %3293, i32 0, i32 23
  %3295 = load i8, ptr %3294, align 1, !tbaa !203, !range !40, !noundef !41
  %3296 = trunc i8 %3295 to i1
  br i1 %3296, label %3297, label %3308

3297:                                             ; preds = %3284
  %3298 = load ptr, ptr %47, align 8, !tbaa !5
  %3299 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3298, i32 0, i32 13
  %3300 = load float, ptr %3299, align 8, !tbaa !202
  %3301 = fcmp ole float %3300, 0.000000e+00
  br i1 %3301, label %3308, label %3302

3302:                                             ; preds = %3297
  %3303 = load ptr, ptr %47, align 8, !tbaa !5
  %3304 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3303, i32 0, i32 13
  %3305 = load float, ptr %3304, align 8, !tbaa !202
  %3306 = call float @fmodf(float noundef %3305, float noundef 0x3FF3333340000000) #14
  %3307 = fcmp ole float %3306, 0x3FE99999A0000000
  br label %3308

3308:                                             ; preds = %3302, %3297, %3284
  %3309 = phi i1 [ true, %3297 ], [ true, %3284 ], [ %3307, %3302 ]
  %3310 = zext i1 %3309 to i8
  store i8 %3310, 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
  %3311 = 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> %3311, ptr %171, align 4
  %3312 = 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> %3312, ptr %170, align 4
  %3313 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %170)
  store <2 x float> %3313, 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
  %3314 = getelementptr inbounds %struct.ImVec2, ptr %169, i32 0, i32 0
  %3315 = load float, ptr %3314, align 4, !tbaa !99
  %3316 = getelementptr inbounds %struct.ImVec2, ptr %169, i32 0, i32 1
  %3317 = load float, ptr %3316, align 4, !tbaa !97
  %3318 = load ptr, ptr %20, align 8, !tbaa !5
  %3319 = getelementptr inbounds %struct.ImGuiContext, ptr %3318, i32 0, i32 5
  %3320 = load float, ptr %3319, align 8, !tbaa !45
  %3321 = fsub float %3317, %3320
  %3322 = fadd float %3321, 5.000000e-01
  %3323 = getelementptr inbounds %struct.ImVec2, ptr %169, i32 0, i32 0
  %3324 = load float, ptr %3323, align 4, !tbaa !99
  %3325 = fadd float %3324, 1.000000e+00
  %3326 = getelementptr inbounds %struct.ImVec2, ptr %169, i32 0, i32 1
  %3327 = load float, ptr %3326, align 4, !tbaa !97
  %3328 = fsub float %3327, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %172, float noundef %3315, float noundef %3322, float noundef %3325, float noundef %3328)
  %3329 = load i8, ptr %168, align 1, !tbaa !42, !range !40, !noundef !41
  %3330 = trunc i8 %3329 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %173) #14
  br i1 %3330, label %3331, label %3333

3331:                                             ; preds = %3308
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %173, ptr noundef nonnull align 4 dereferenceable(16) %129)
  %3332 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %172, ptr noundef nonnull align 4 dereferenceable(16) %173)
  br label %3333

3333:                                             ; preds = %3331, %3308
  %3334 = phi i1 [ false, %3308 ], [ %3332, %3331 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %173) #14
  br i1 %3334, label %3335, label %3342

3335:                                             ; preds = %3333
  %3336 = load ptr, ptr %38, align 8, !tbaa !5
  %3337 = getelementptr inbounds %struct.ImGuiWindow, ptr %3336, i32 0, i32 80
  %3338 = load ptr, ptr %3337, align 8, !tbaa !199
  %3339 = getelementptr inbounds %struct.ImRect, ptr %172, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #14
  %3340 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %172)
  store <2 x float> %3340, ptr %174, align 4
  %3341 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %3338, ptr noundef nonnull align 4 dereferenceable(8) %3339, ptr noundef nonnull align 4 dereferenceable(8) %174, i32 noundef %3341, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #14
  br label %3342

3342:                                             ; preds = %3335, %3333
  %3343 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %3344 = trunc i8 %3343 to i1
  br i1 %3344, label %3367, label %3345

3345:                                             ; preds = %3342
  %3346 = load ptr, ptr %20, align 8, !tbaa !5
  %3347 = getelementptr inbounds %struct.ImGuiContext, ptr %3346, i32 0, i32 198
  %3348 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3347, i32 0, i32 0
  store i8 1, ptr %3348, align 8, !tbaa !204
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #14
  %3349 = getelementptr inbounds %struct.ImVec2, ptr %169, i32 0, i32 0
  %3350 = load float, ptr %3349, align 4, !tbaa !99
  %3351 = fsub float %3350, 1.000000e+00
  %3352 = getelementptr inbounds %struct.ImVec2, ptr %169, i32 0, i32 1
  %3353 = load float, ptr %3352, align 4, !tbaa !97
  %3354 = load ptr, ptr %20, align 8, !tbaa !5
  %3355 = getelementptr inbounds %struct.ImGuiContext, ptr %3354, i32 0, i32 5
  %3356 = load float, ptr %3355, align 8, !tbaa !45
  %3357 = fsub float %3353, %3356
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %175, float noundef %3351, float noundef %3357)
  %3358 = load ptr, ptr %20, align 8, !tbaa !5
  %3359 = getelementptr inbounds %struct.ImGuiContext, ptr %3358, i32 0, i32 198
  %3360 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3359, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %3360, ptr align 4 %175, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #14
  %3361 = load ptr, ptr %20, align 8, !tbaa !5
  %3362 = getelementptr inbounds %struct.ImGuiContext, ptr %3361, i32 0, i32 5
  %3363 = load float, ptr %3362, align 8, !tbaa !45
  %3364 = load ptr, ptr %20, align 8, !tbaa !5
  %3365 = getelementptr inbounds %struct.ImGuiContext, ptr %3364, i32 0, i32 198
  %3366 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3365, i32 0, i32 2
  store float %3363, ptr %3366, align 4, !tbaa !205
  br label %3367

3367:                                             ; preds = %3345, %3342
  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 %3368

3368:                                             ; preds = %3367, %3281
  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 %3443

3369:                                             ; preds = %2780
  %3370 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3371 = trunc i8 %3370 to i1
  br i1 %3371, label %3372, label %3382

3372:                                             ; preds = %3369
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #14
  %3373 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %3374 = load float, ptr %3373, align 4, !tbaa !99
  %3375 = load ptr, ptr %133, align 8, !tbaa !5
  %3376 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3375, ptr noundef %134)
  %3377 = sitofp i32 %3376 to float
  %3378 = load ptr, ptr %20, align 8, !tbaa !5
  %3379 = getelementptr inbounds %struct.ImGuiContext, ptr %3378, i32 0, i32 5
  %3380 = load float, ptr %3379, align 8, !tbaa !45
  %3381 = fmul float %3377, %3380
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %176, float noundef %3374, float noundef %3381)
  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 %3408

3382:                                             ; preds = %3369
  %3383 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3384 = trunc i8 %3383 to i1
  br i1 %3384, label %3398, label %3385

3385:                                             ; preds = %3382
  %3386 = load ptr, ptr %20, align 8, !tbaa !5
  %3387 = getelementptr inbounds %struct.ImGuiContext, ptr %3386, i32 0, i32 46
  %3388 = load i32, ptr %3387, align 8, !tbaa !110
  %3389 = load i32, ptr %29, align 4, !tbaa !9
  %3390 = icmp eq i32 %3388, %3389
  br i1 %3390, label %3391, label %3398

3391:                                             ; preds = %3385
  %3392 = load ptr, ptr %133, align 8, !tbaa !5
  %3393 = load ptr, ptr %47, align 8, !tbaa !5
  %3394 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3393, i32 0, i32 3
  %3395 = load i32, ptr %3394, align 8, !tbaa !119
  %3396 = sext i32 %3395 to i64
  %3397 = getelementptr inbounds i8, ptr %3392, i64 %3396
  store ptr %3397, ptr %134, align 8, !tbaa !5
  br label %3407

3398:                                             ; preds = %3385, %3382
  %3399 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3400 = trunc i8 %3399 to i1
  br i1 %3400, label %3406, label %3401

3401:                                             ; preds = %3398
  %3402 = load ptr, ptr %133, align 8, !tbaa !5
  %3403 = load ptr, ptr %133, align 8, !tbaa !5
  %3404 = call i64 @strlen(ptr noundef %3403) #16
  %3405 = getelementptr inbounds i8, ptr %3402, i64 %3404
  store ptr %3405, ptr %134, align 8, !tbaa !5
  br label %3406

3406:                                             ; preds = %3401, %3398
  br label %3407

3407:                                             ; preds = %3406, %3391
  br label %3408

3408:                                             ; preds = %3407, %3372
  %3409 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3410 = trunc i8 %3409 to i1
  br i1 %3410, label %3418, label %3411

3411:                                             ; preds = %3408
  %3412 = load ptr, ptr %134, align 8, !tbaa !5
  %3413 = load ptr, ptr %133, align 8, !tbaa !5
  %3414 = ptrtoint ptr %3412 to i64
  %3415 = ptrtoint ptr %3413 to i64
  %3416 = sub i64 %3414, %3415
  %3417 = icmp slt i64 %3416, 2097152
  br i1 %3417, label %3418, label %3442

3418:                                             ; preds = %3411, %3408
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #14
  %3419 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3420 = trunc i8 %3419 to i1
  %3421 = zext i1 %3420 to i64
  %3422 = select i1 %3420, i32 1, i32 0
  %3423 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3422, float noundef 1.000000e+00)
  store i32 %3423, ptr %177, align 4, !tbaa !9
  %3424 = load ptr, ptr %38, align 8, !tbaa !5
  %3425 = getelementptr inbounds %struct.ImGuiWindow, ptr %3424, i32 0, i32 80
  %3426 = load ptr, ptr %3425, align 8, !tbaa !199
  %3427 = load ptr, ptr %20, align 8, !tbaa !5
  %3428 = getelementptr inbounds %struct.ImGuiContext, ptr %3427, i32 0, i32 4
  %3429 = load ptr, ptr %3428, align 8, !tbaa !131
  %3430 = load ptr, ptr %20, align 8, !tbaa !5
  %3431 = getelementptr inbounds %struct.ImGuiContext, ptr %3430, i32 0, i32 5
  %3432 = load float, ptr %3431, align 8, !tbaa !45
  %3433 = load i32, ptr %177, align 4, !tbaa !9
  %3434 = load ptr, ptr %133, align 8, !tbaa !5
  %3435 = load ptr, ptr %134, align 8, !tbaa !5
  %3436 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3437 = trunc i8 %3436 to i1
  br i1 %3437, label %3438, label %3439

3438:                                             ; preds = %3418
  br label %3440

3439:                                             ; preds = %3418
  br label %3440

3440:                                             ; preds = %3439, %3438
  %3441 = phi ptr [ null, %3438 ], [ %129, %3439 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3426, ptr noundef %3429, float noundef %3432, ptr noundef nonnull align 4 dereferenceable(8) %130, i32 noundef %3433, ptr noundef %3434, ptr noundef %3435, float noundef 0.000000e+00, ptr noundef %3441)
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #14
  br label %3442

3442:                                             ; preds = %3440, %3411
  br label %3443

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

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

3449:                                             ; preds = %3446
  call void @_ZN5ImGui7PopFontEv()
  br label %3450

3450:                                             ; preds = %3449, %3446, %3443
  %3451 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3452 = trunc i8 %3451 to i1
  br i1 %3452, label %3453, label %3502

3453:                                             ; preds = %3450
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #14
  %3454 = getelementptr inbounds %struct.ImVec2, ptr %131, i32 0, i32 0
  %3455 = load float, ptr %3454, align 4, !tbaa !99
  %3456 = getelementptr inbounds %struct.ImVec2, ptr %131, i32 0, i32 1
  %3457 = load float, ptr %3456, align 4, !tbaa !97
  %3458 = load ptr, ptr %22, align 8, !tbaa !5
  %3459 = getelementptr inbounds %struct.ImGuiStyle, ptr %3458, i32 0, i32 12
  %3460 = getelementptr inbounds %struct.ImVec2, ptr %3459, i32 0, i32 1
  %3461 = load float, ptr %3460, align 4, !tbaa !98
  %3462 = fadd float %3457, %3461
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %178, float noundef %3455, float noundef %3462)
  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
  %3463 = load ptr, ptr %20, align 8, !tbaa !5
  %3464 = getelementptr inbounds %struct.ImGuiContext, ptr %3463, i32 0, i32 71
  %3465 = load i32, ptr %3464, align 8, !tbaa !206
  store i32 %3465, ptr %179, align 4, !tbaa !9
  %3466 = load ptr, ptr %20, align 8, !tbaa !5
  %3467 = getelementptr inbounds %struct.ImGuiContext, ptr %3466, i32 0, i32 71
  %3468 = load i32, ptr %3467, align 8, !tbaa !206
  %3469 = or i32 %3468, 1025
  store i32 %3469, ptr %3467, align 8, !tbaa !206
  call void @_ZN5ImGui8EndChildEv()
  %3470 = load ptr, ptr %20, align 8, !tbaa !5
  %3471 = getelementptr inbounds %struct.ImGuiContext, ptr %3470, i32 0, i32 74
  %3472 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3471, i32 0, i32 2
  %3473 = load i32, ptr %3472, align 4, !tbaa !101
  %3474 = and i32 %3473, 128
  %3475 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 2
  %3476 = load i32, ptr %3475, align 4, !tbaa !207
  %3477 = or i32 %3476, %3474
  store i32 %3477, ptr %3475, align 4, !tbaa !207
  %3478 = load i32, ptr %179, align 4, !tbaa !9
  %3479 = load ptr, ptr %20, align 8, !tbaa !5
  %3480 = getelementptr inbounds %struct.ImGuiContext, ptr %3479, i32 0, i32 71
  store i32 %3478, ptr %3480, align 8, !tbaa !206
  call void @_ZN5ImGui8EndGroupEv()
  %3481 = load ptr, ptr %20, align 8, !tbaa !5
  %3482 = getelementptr inbounds %struct.ImGuiContext, ptr %3481, i32 0, i32 74
  %3483 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3482, i32 0, i32 0
  %3484 = load i32, ptr %3483, align 4, !tbaa !208
  %3485 = icmp eq i32 %3484, 0
  br i1 %3485, label %3486, label %3501

3486:                                             ; preds = %3453
  %3487 = load i32, ptr %29, align 4, !tbaa !9
  %3488 = load ptr, ptr %20, align 8, !tbaa !5
  %3489 = getelementptr inbounds %struct.ImGuiContext, ptr %3488, i32 0, i32 74
  %3490 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3489, i32 0, i32 0
  store i32 %3487, ptr %3490, align 4, !tbaa !208
  %3491 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 1
  %3492 = load i32, ptr %3491, align 4, !tbaa !209
  %3493 = load ptr, ptr %20, align 8, !tbaa !5
  %3494 = getelementptr inbounds %struct.ImGuiContext, ptr %3493, i32 0, i32 74
  %3495 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3494, i32 0, i32 1
  store i32 %3492, ptr %3495, align 4, !tbaa !210
  %3496 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 2
  %3497 = load i32, ptr %3496, align 4, !tbaa !207
  %3498 = load ptr, ptr %20, align 8, !tbaa !5
  %3499 = getelementptr inbounds %struct.ImGuiContext, ptr %3498, i32 0, i32 74
  %3500 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3499, i32 0, i32 2
  store i32 %3497, ptr %3500, align 4, !tbaa !101
  br label %3501

3501:                                             ; preds = %3486, %3453
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #14
  br label %3502

3502:                                             ; preds = %3501, %3450
  %3503 = load ptr, ptr %20, align 8, !tbaa !5
  %3504 = getelementptr inbounds %struct.ImGuiContext, ptr %3503, i32 0, i32 210
  %3505 = load i8, ptr %3504, align 8, !tbaa !211, !range !40, !noundef !41
  %3506 = trunc i8 %3505 to i1
  br i1 %3506, label %3507, label %3516

3507:                                             ; preds = %3502
  %3508 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3509 = trunc i8 %3508 to i1
  br i1 %3509, label %3510, label %3513

3510:                                             ; preds = %3507
  %3511 = load i8, ptr %69, align 1, !tbaa !42, !range !40, !noundef !41
  %3512 = trunc i8 %3511 to i1
  br i1 %3512, label %3513, label %3516

3513:                                             ; preds = %3510, %3507
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef @.str.25, ptr noundef @.str.26)
  %3514 = load ptr, ptr %133, align 8, !tbaa !5
  %3515 = load ptr, ptr %134, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %130, ptr noundef %3514, ptr noundef %3515)
  br label %3516

3516:                                             ; preds = %3513, %3510, %3502
  %3517 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3518 = load float, ptr %3517, align 4, !tbaa !99
  %3519 = fcmp ogt float %3518, 0.000000e+00
  br i1 %3519, label %3520, label %3539

3520:                                             ; preds = %3516
  %3521 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  %3522 = getelementptr inbounds %struct.ImVec2, ptr %3521, i32 0, i32 0
  %3523 = load float, ptr %3522, align 4, !tbaa !212
  %3524 = load ptr, ptr %22, align 8, !tbaa !5
  %3525 = getelementptr inbounds %struct.ImGuiStyle, ptr %3524, i32 0, i32 16
  %3526 = getelementptr inbounds %struct.ImVec2, ptr %3525, i32 0, i32 0
  %3527 = load float, ptr %3526, align 4, !tbaa !100
  %3528 = fadd float %3523, %3527
  %3529 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %3530 = getelementptr inbounds %struct.ImVec2, ptr %3529, i32 0, i32 1
  %3531 = load float, ptr %3530, align 4, !tbaa !194
  %3532 = load ptr, ptr %22, align 8, !tbaa !5
  %3533 = getelementptr inbounds %struct.ImGuiStyle, ptr %3532, i32 0, i32 12
  %3534 = getelementptr inbounds %struct.ImVec2, ptr %3533, i32 0, i32 1
  %3535 = load float, ptr %3534, align 4, !tbaa !98
  %3536 = fadd float %3531, %3535
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %180, float noundef %3528, float noundef %3536)
  %3537 = load ptr, ptr %10, align 8, !tbaa !5
  %3538 = load <2 x float>, ptr %180, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3538, ptr noundef %3537, ptr noundef null, i1 noundef zeroext true)
  br label %3539

3539:                                             ; preds = %3520, %3516
  %3540 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %3541 = trunc i8 %3540 to i1
  br i1 %3541, label %3542, label %3548

3542:                                             ; preds = %3539
  %3543 = load i32, ptr %15, align 4, !tbaa !9
  %3544 = and i32 %3543, 134217728
  %3545 = icmp ne i32 %3544, 0
  br i1 %3545, label %3548, label %3546

3546:                                             ; preds = %3542
  %3547 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3547)
  br label %3548

3548:                                             ; preds = %3546, %3542, %3539
  %3549 = load ptr, ptr %20, align 8, !tbaa !5
  %3550 = load i32, ptr %15, align 4, !tbaa !9
  %3551 = and i32 %3550, 32
  %3552 = icmp ne i32 %3551, 0
  br i1 %3552, label %3553, label %3556

3553:                                             ; preds = %3548
  %3554 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %3555 = trunc i8 %3554 to i1
  store i1 %3555, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3559

3556:                                             ; preds = %3548
  %3557 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %3558 = trunc i8 %3557 to i1
  store i1 %3558, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3559

3559:                                             ; preds = %3556, %3553
  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 %3560

3560:                                             ; preds = %3559, %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 %3561

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

3563:                                             ; preds = %2182
  %3564 = load ptr, ptr %114, align 8
  %3565 = load i32, ptr %115, align 4
  %3566 = insertvalue { ptr, i32 } poison, ptr %3564, 0
  %3567 = insertvalue { ptr, i32 } %3566, i32 %3565, 1
  resume { ptr, i32 } %3567

3568:                                             ; preds = %2063, %1390
  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 @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef) #10

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #12 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) #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: 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

declare noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv() #4

; 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, !15, i64 99, !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 15368}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !49, i64 14288, !6, i64 15360, !14, i64 15368, !14, i64 15372, !50, i64 15376, !51, i64 15904, !10, i64 15912, !10, i64 15916, !10, i64 15920, !15, i64 15924, !15, i64 15925, !15, i64 15926, !15, i64 15927, !15, i64 15928, !6, i64 15936, !52, i64 15944, !52, i64 15960, !48, i64 15976, !10, i64 15980, !22, i64 15984, !22, i64 16000, !22, i64 16016, !53, i64 16032, !26, i64 16048, !10, i64 16064, !13, i64 16068, !6, i64 16080, !6, i64 16088, !6, i64 16096, !6, i64 16104, !6, i64 16112, !13, i64 16120, !10, i64 16128, !14, i64 16132, !13, i64 16136, !13, i64 16144, !10, i64 16152, !10, i64 16156, !10, i64 16160, !15, i64 16164, !15, i64 16165, !14, i64 16168, !14, i64 16172, !10, i64 16176, !10, i64 16180, !14, i64 16184, !15, i64 16188, !15, i64 16189, !15, i64 16190, !15, i64 16191, !15, i64 16192, !15, i64 16193, !13, i64 16196, !6, i64 16208, !54, i64 16216, !10, i64 16220, !10, i64 16224, !15, i64 16228, !15, i64 16229, !6, i64 16232, !10, i64 16240, !14, i64 16244, !7, i64 16248, !55, i64 17928, !10, i64 18240, !15, i64 18244, !10, i64 18248, !10, i64 18252, !10, i64 18256, !10, i64 18260, !57, i64 18264, !58, i64 18284, !59, i64 18344, !60, i64 18456, !61, i64 18472, !62, i64 18488, !17, i64 18504, !63, i64 18520, !64, i64 18536, !65, i64 18552, !65, i64 18568, !10, i64 18584, !66, i64 18592, !6, i64 18608, !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, !10, i64 18652, !10, i64 18656, !54, i64 18660, !20, i64 18664, !15, i64 18668, !15, i64 18669, !15, i64 18670, !15, i64 18671, !15, i64 18672, !15, i64 18673, !15, i64 18674, !10, i64 18676, !24, i64 18680, !15, i64 18696, !15, i64 18697, !15, i64 18698, !10, i64 18700, !10, i64 18704, !10, i64 18708, !10, i64 18712, !10, i64 18716, !10, i64 18720, !24, i64 18724, !24, i64 18740, !10, i64 18756, !10, i64 18760, !10, i64 18764, !67, i64 18768, !67, i64 18816, !67, i64 18864, !67, i64 18912, !10, i64 18960, !10, i64 18964, !6, i64 18968, !6, i64 18976, !6, i64 18984, !14, i64 18992, !14, i64 18996, !15, i64 19000, !13, i64 19004, !13, i64 19012, !14, i64 19020, !10, i64 19024, !15, i64 19028, !15, i64 19029, !15, i64 19030, !10, i64 19032, !10, i64 19036, !10, i64 19040, !68, i64 19048, !24, i64 19112, !10, i64 19128, !10, i64 19132, !14, i64 19136, !10, i64 19140, !10, i64 19144, !10, i64 19148, !10, i64 19152, !69, i64 19160, !7, i64 19176, !10, i64 19192, !70, i64 19200, !6, i64 19216, !10, i64 19224, !71, i64 19232, !72, i64 19248, !23, i64 19288, !39, i64 19304, !6, i64 19320, !74, i64 19328, !76, i64 19368, !77, i64 19384, !10, i64 19400, !10, i64 19404, !14, i64 19408, !14, i64 19412, !13, i64 19416, !78, i64 19424, !82, i64 23152, !83, i64 23176, !10, i64 23296, !10, i64 23300, !10, i64 23304, !10, i64 23308, !14, i64 23312, !14, i64 23316, !10, i64 23320, !37, i64 23324, !85, i64 23340, !14, i64 23388, !14, i64 23392, !15, i64 23396, !15, i64 23397, !14, i64 23400, !14, i64 23404, !14, i64 23408, !14, i64 23412, !16, i64 23416, !16, i64 23418, !79, i64 23424, !17, i64 23440, !86, i64 23456, !86, i64 23472, !7, i64 23488, !15, i64 23489, !14, i64 23492, !87, i64 23496, !88, i64 23512, !89, i64 23528, !90, i64 23544, !91, i64 23560, !10, i64 23576, !7, i64 23584, !15, i64 23640, !92, i64 23644, !6, i64 23648, !87, i64 23656, !6, i64 23672, !6, i64 23680, !14, i64 23688, !15, i64 23692, !10, i64 23696, !10, i64 23700, !10, i64 23704, !10, i64 23708, !87, i64 23712, !93, i64 23728, !7, i64 23752, !7, i64 23753, !7, i64 23754, !15, i64 23755, !7, i64 23756, !10, i64 23760, !94, i64 23764, !95, i64 23784, !7, i64 23824, !10, i64 24064, !10, i64 24068, !14, i64 24072, !10, i64 24076, !10, i64 24080, !10, i64 24084, !79, i64 24088}
!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, !48, i64 3608, !15, i64 3612, !15, i64 3613, !15, i64 3614, !15, i64 3615, !10, i64 3616, !7, i64 3620, !15, i64 14052, !13, i64 14056, !7, i64 14064, !7, i64 14104, !7, i64 14144, !7, i64 14149, !7, i64 14154, !7, i64 14164, !7, i64 14174, !7, i64 14179, !7, i64 14184, !15, i64 14189, !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 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!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 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!55 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !56, i64 280, !56, i64 296}
!56 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !15, i64 16}
!58 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !24, i64 12, !24, i64 28, !24, i64 44}
!59 = !{!"_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}
!60 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_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}
!68 = !{!"_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}
!69 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS6ImPoolI10ImGuiTableE", !73, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!73 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !75, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!75 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!78 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !31, i64 24, !79, i64 40, !79, i64 56, !15, i64 72, !10, i64 76, !14, i64 80, !80, i64 84, !14, i64 3712, !15, i64 3716, !15, i64 3717, !15, i64 3718, !10, i64 3720}
!79 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_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, !81, i64 32}
!81 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!82 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !79, i64 8}
!83 = !{!"_ZTS6ImFont", !23, i64 0, !14, i64 16, !14, i64 20, !31, i64 24, !84, 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}
!84 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!85 = !{!"_ZTS21ImGuiComboPreviewData", !24, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!86 = !{!"_ZTS20ImGuiPlatformImeData", !15, i64 0, !13, i64 4, !14, i64 12}
!87 = !{!"_ZTS15ImGuiTextBuffer", !79, i64 0}
!88 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!89 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !79, i64 0}
!90 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !79, i64 0}
!91 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!92 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!93 = !{!"_ZTS14ImGuiTextIndex", !63, i64 0, !10, i64 16}
!94 = !{!"_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}
!95 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !96, i64 16, !15, i64 32, !14, i64 36}
!96 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!97 = !{!13, !14, i64 4}
!98 = !{!49, !14, i64 64}
!99 = !{!13, !14, i64 0}
!100 = !{!49, !14, i64 84}
!101 = !{!46, !10, i64 18292}
!102 = !{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}
!103 = !{!49, !14, i64 68}
!104 = !{!49, !14, i64 72}
!105 = !{!46, !6, i64 16080}
!106 = !{!12, !20, i64 344}
!107 = !{!12, !16, i64 350}
!108 = !{!12, !14, i64 172}
!109 = !{!46, !10, i64 19024}
!110 = !{!46, !10, i64 16176}
!111 = !{!46, !10, i64 18624}
!112 = !{!46, !10, i64 18636}
!113 = !{!46, !54, i64 18660}
!114 = !{!46, !10, i64 16224}
!115 = !{!12, !14, i64 136}
!116 = !{!78, !7, i64 107}
!117 = !{!78, !10, i64 8}
!118 = !{!78, !6, i64 64}
!119 = !{!78, !10, i64 16}
!120 = !{!78, !15, i64 72}
!121 = !{!78, !6, i64 48}
!122 = !{!78, !6, i64 32}
!123 = !{!78, !10, i64 12}
!124 = !{!78, !14, i64 80}
!125 = !{!47, !15, i64 3612}
!126 = !{!78, !7, i64 96}
!127 = !{!47, !15, i64 113}
!128 = !{!46, !10, i64 18240}
!129 = !{!78, !10, i64 24}
!130 = !{!7, !7, i64 0}
!131 = !{!46, !6, i64 15360}
!132 = !{!83, !14, i64 20}
!133 = !{!83, !14, i64 100}
!134 = !{!83, !14, i64 104}
!135 = !{!83, !14, i64 108}
!136 = !{!83, !6, i64 64}
!137 = !{!83, !6, i64 56}
!138 = !{!139, !14, i64 4}
!139 = !{!"_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}
!140 = !{!83, !14, i64 16}
!141 = !{!78, !15, i64 3718}
!142 = !{!78, !10, i64 76}
!143 = !{!78, !10, i64 3720}
!144 = !{!46, !15, i64 16189}
!145 = !{!47, !14, i64 3584}
!146 = !{!24, !14, i64 0}
!147 = !{!49, !14, i64 60}
!148 = !{!47, !14, i64 3588}
!149 = !{!12, !14, i64 260}
!150 = !{!78, !15, i64 3717}
!151 = !{!16, !16, i64 0}
!152 = !{!47, !15, i64 3613}
!153 = !{!78, !10, i64 84}
!154 = !{!78, !10, i64 88}
!155 = !{!78, !10, i64 92}
!156 = !{!78, !15, i64 3716}
!157 = !{!47, !14, i64 240}
!158 = !{!47, !14, i64 244}
!159 = !{!47, !15, i64 3614}
!160 = !{!47, !15, i64 3615}
!161 = !{!47, !10, i64 14264}
!162 = distinct !{!162, !163}
!163 = !{!"llvm.loop.mustprogress"}
!164 = !{!46, !15, i64 16188}
!165 = !{!78, !10, i64 100}
!166 = !{!47, !10, i64 0}
!167 = !{!47, !10, i64 4}
!168 = !{!47, !15, i64 116}
!169 = !{!47, !6, i64 176}
!170 = distinct !{!170, !163}
!171 = !{!78, !10, i64 56}
!172 = !{!31, !6, i64 8}
!173 = !{!31, !10, i64 0}
!174 = !{!78, !10, i64 40}
!175 = !{!176, !176, i64 0}
!176 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!177 = !{!178, !6, i64 0}
!178 = !{!"_ZTS26ImGuiInputTextCallbackData", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !16, i64 24, !176, i64 28, !6, i64 32, !10, i64 40, !10, i64 44, !15, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!179 = !{!178, !10, i64 8}
!180 = !{!178, !10, i64 12}
!181 = !{!178, !6, i64 16}
!182 = !{!178, !176, i64 28}
!183 = !{!178, !6, i64 32}
!184 = !{!178, !10, i64 40}
!185 = !{!178, !10, i64 44}
!186 = !{!178, !15, i64 48}
!187 = !{!178, !10, i64 52}
!188 = !{!178, !10, i64 56}
!189 = !{!178, !10, i64 60}
!190 = !{!46, !10, i64 23152}
!191 = !{!46, !6, i64 23168}
!192 = !{!46, !10, i64 23160}
!193 = !{!46, !10, i64 24084}
!194 = !{!24, !14, i64 4}
!195 = distinct !{!195, !163}
!196 = !{!37, !14, i64 12}
!197 = !{!37, !14, i64 4}
!198 = distinct !{!198, !163}
!199 = !{!12, !6, i64 664}
!200 = distinct !{!200, !163}
!201 = !{!47, !14, i64 16}
!202 = !{!78, !14, i64 3712}
!203 = !{!46, !15, i64 123}
!204 = !{!46, !15, i64 23456}
!205 = !{!46, !14, i64 23468}
!206 = !{!46, !10, i64 18256}
!207 = !{!58, !10, i64 8}
!208 = !{!46, !10, i64 18284}
!209 = !{!58, !10, i64 4}
!210 = !{!46, !10, i64 18288}
!211 = !{!46, !15, i64 23640}
!212 = !{!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 [125 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 %1513, 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 4061, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

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

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

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

75:                                               ; preds = %71
  tail call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.4, i32 noundef 4063, 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
  %.not1006 = icmp eq i32 %81, 0
  %82 = and i32 %5, 65536
  %83 = icmp eq i32 %82, 0
  %84 = and i32 %5, 262144
  %.not1007 = icmp eq i32 %84, 0
  %85 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not1007, %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 4076, 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.0536.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 15368
  %95 = load float, ptr %94, align 8, !tbaa !41
  %96 = fmul float %95, 8.000000e+00
  br label %98

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

98:                                               ; preds = %97, %93
  %99 = phi float [ %96, %93 ], [ %.sroa.0537.4.vec.extract, %97 ]
  %100 = getelementptr inbounds i8, ptr %77, i64 14348
  %101 = getelementptr inbounds i8, ptr %77, i64 14352
  %102 = load float, ptr %101, align 4, !tbaa !93
  %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.0536.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.0537.0.vec.extract = extractelement <2 x float> %91, i64 0
  %106 = fcmp ogt float %.sroa.0537.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 14372
  %110 = load float, ptr %109, align 4, !tbaa !94
  %111 = fadd float %.sroa.0537.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.0507.0.copyload = load float, ptr %9, align 8, !tbaa !95
  %.sroa.11.0.copyload = load float, ptr %115, align 4, !tbaa !95
  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 !93
  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 18284
  %126 = getelementptr inbounds i8, ptr %77, i64 18292
  %127 = load i32, ptr %126, align 4, !tbaa !96
  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 !97
  store i64 %120, ptr %116, align 8
  %128 = getelementptr inbounds i8, ptr %77, i64 14620
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %128)
  %129 = getelementptr inbounds i8, ptr %77, i64 14356
  %130 = load float, ptr %129, align 4, !tbaa !99
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %130)
  %131 = getelementptr inbounds i8, ptr %77, i64 14360
  %132 = load float, ptr %131, align 4, !tbaa !100
  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 16080
  %138 = load ptr, ptr %137, align 8, !tbaa !101
  %139 = getelementptr inbounds i8, ptr %138, i64 256
  %140 = getelementptr inbounds i8, ptr %138, i64 344
  %141 = load i32, ptr %140, align 8, !tbaa !102
  %142 = shl nuw i32 1, %141
  %143 = getelementptr inbounds i8, ptr %138, i64 350
  %144 = load i16, ptr %143, align 2, !tbaa !103
  %145 = trunc i32 %142 to i16
  %146 = or i16 %144, %145
  store i16 %146, ptr %143, align 2, !tbaa !103
  %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 !104
  %150 = fsub float %.sroa.0507.0.copyload, %149
  br label %159

151:                                              ; preds = %112
  %152 = load float, ptr %101, align 4, !tbaa !93
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %152)
  %153 = and i32 %5, 268435456
  %.not1008 = icmp eq i32 %153, 0
  br i1 %.not1008, 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 18292
  %158 = load i32, ptr %157, align 4, !tbaa !96
  br label %159

159:                                              ; preds = %136, %156
  %.1914 = phi i32 [ %127, %136 ], [ %158, %156 ]
  %.sroa.0507.2 = phi float [ %150, %136 ], [ %.sroa.0507.0.copyload, %156 ]
  %.2912 = 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 19024
  store i32 1, ptr %162, align 8, !tbaa !105
  br label %163

163:                                              ; preds = %161, %159
  %164 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %90)
  %165 = and i32 %.1914, 256
  %166 = icmp ne i32 %165, 0
  %167 = getelementptr inbounds i8, ptr %77, i64 16176
  %168 = load i32, ptr %167, align 8, !tbaa !106
  %.not1009 = icmp eq i32 %168, %90
  br i1 %.not1009, label %181, label %169

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

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

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %77, i64 18660
  %179 = load i32, ptr %178, align 4, !tbaa !109
  %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 !110, !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 %.thread1164

192:                                              ; preds = %190
  %193 = getelementptr inbounds i8, ptr %77, i64 16224
  %194 = load i32, ptr %193, align 8, !tbaa !111
  %195 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2912, i32 noundef 1)
  %196 = icmp eq i32 %194, %195
  %.pre = load i32, ptr %167, align 8, !tbaa !106
  br label %.thread1164

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

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

201:                                              ; preds = %.thread1164, %200
  %202 = phi i1 [ %199, %.thread1164 ], [ false, %200 ]
  %203 = phi i1 [ %.ph, %.thread1164 ], [ false, %200 ]
  %204 = getelementptr inbounds i8, ptr %.2912, i64 136
  %205 = load float, ptr %204, align 4, !tbaa !112
  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 %.thread1165

210:                                              ; preds = %206
  %211 = getelementptr inbounds i8, ptr %164, i64 107
  %212 = load i8, ptr %211, align 1, !tbaa !113
  %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.select1155 = select i1 %216, i1 true, i1 %166
  %217 = select i1 %spec.select1155, i1 true, i1 %207
  br i1 %217, label %220, label %223

.thread1165:                                      ; preds = %206
  %brmerge1166 = select i1 %188, i1 true, i1 %208
  %218 = select i1 %brmerge1166, i1 true, i1 %182
  %spec.select11551168 = select i1 %218, i1 true, i1 %166
  %219 = select i1 %spec.select11551168, i1 true, i1 %207
  br i1 %219, label %220, label %.thread1173.thread

220:                                              ; preds = %.thread1165, %210
  %spec.select11551172 = phi i1 [ %spec.select11551168, %.thread1165 ], [ %spec.select1155, %210 ]
  %221 = phi i1 [ false, %.thread1165 ], [ %215, %210 ]
  %222 = load i32, ptr %167, align 8, !tbaa !106
  %.not1011 = icmp ne i32 %222, %90
  %brmerge1050 = select i1 %.not1011, i1 true, i1 %221
  br i1 %brmerge1050, label %224, label %.thread1173

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

224:                                              ; preds = %220, %223
  %225 = phi i8 [ 1, %220 ], [ 0, %223 ]
  %spec.select11551170 = phi i1 [ %spec.select11551172, %220 ], [ false, %223 ]
  %226 = phi i1 [ %221, %220 ], [ true, %223 ]
  %227 = getelementptr inbounds i8, ptr %77, i64 19424
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %227)
  %228 = getelementptr inbounds i8, ptr %77, i64 19432
  %229 = load i32, ptr %228, align 8, !tbaa !114
  call void @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef %229)
  %230 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %231 = trunc i64 %230 to i32
  %232 = getelementptr inbounds i8, ptr %77, i64 19480
  %233 = add nsw i32 %231, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %232, i32 noundef %233)
  %234 = getelementptr inbounds i8, ptr %77, i64 19488
  %235 = load ptr, ptr %234, align 8, !tbaa !115
  %236 = sext i32 %233 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %235, ptr nonnull align 1 %2, i64 %236, i1 false)
  %237 = load i32, ptr %228, align 8, !tbaa !114
  %238 = icmp ne i32 %237, %90
  %.not1209 = select i1 %238, i1 true, i1 %226
  br i1 %.not1209, label %252, label %239

239:                                              ; preds = %224
  %240 = getelementptr inbounds i8, ptr %77, i64 19440
  %241 = load i32, ptr %240, align 8, !tbaa !116
  %.not1012 = icmp eq i32 %241, %231
  br i1 %.not1012, label %242, label %251

242:                                              ; preds = %239
  %243 = getelementptr inbounds i8, ptr %77, i64 19496
  %244 = load i8, ptr %243, align 8, !tbaa !117, !range !38, !noundef !39
  %245 = trunc nuw i8 %244 to i1
  br i1 %245, label %246, label %252

246:                                              ; preds = %242
  %247 = getelementptr inbounds i8, ptr %77, i64 19472
  %248 = load ptr, ptr %247, align 8, !tbaa !118
  %sext = shl i64 %230, 32
  %249 = ashr exact i64 %sext, 32
  %250 = call i32 @strncmp(ptr noundef %248, ptr noundef nonnull %2, i64 noundef %249) #15
  %.not1013 = icmp eq i32 %250, 0
  br i1 %.not1013, label %252, label %251

251:                                              ; preds = %246, %239
  br label %252

252:                                              ; preds = %251, %246, %242, %224
  %.0927.shrunk = phi i1 [ false, %251 ], [ true, %246 ], [ true, %242 ], [ 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 %228, align 8, !tbaa !114
  %253 = getelementptr inbounds i8, ptr %77, i64 19448
  %254 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %253, i32 noundef %254)
  %255 = getelementptr inbounds i8, ptr %77, i64 19464
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %255, i32 noundef 0)
  %256 = getelementptr inbounds i8, ptr %77, i64 19496
  store i8 0, ptr %256, align 8, !tbaa !117
  %257 = getelementptr inbounds i8, ptr %77, i64 19456
  %258 = load ptr, ptr %257, align 8, !tbaa !119
  %259 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %258, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %18)
  %260 = getelementptr inbounds i8, ptr %77, i64 19436
  store i32 %259, ptr %260, align 4, !tbaa !120
  %261 = load ptr, ptr %18, align 8, !tbaa !40
  %262 = ptrtoint ptr %261 to i64
  %263 = ptrtoint ptr %2 to i64
  %264 = sub i64 %262, %263
  %265 = trunc i64 %264 to i32
  %266 = getelementptr inbounds i8, ptr %77, i64 19440
  store i32 %265, ptr %266, align 8, !tbaa !116
  br i1 %.0927.shrunk, label %267, label %268

267:                                              ; preds = %252
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %227)
  br label %273

268:                                              ; preds = %252
  %269 = getelementptr inbounds i8, ptr %77, i64 19504
  store float 0.000000e+00, ptr %269, align 8, !tbaa !121
  %270 = getelementptr inbounds i8, ptr %77, i64 19508
  %271 = xor i1 %68, true
  %272 = zext i1 %271 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %270, i32 noundef %272)
  br label %273

273:                                              ; preds = %268, %267
  br i1 %68, label %290, label %274

274:                                              ; preds = %273
  %275 = trunc i32 %5 to i8
  %276 = lshr i8 %275, 4
  br i1 %182, label %277, label %283

277:                                              ; preds = %274
  br i1 %.0927.shrunk, label %278, label %282

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

282:                                              ; preds = %278, %277
  br label %283

283:                                              ; preds = %282, %278, %274
  %.1921 = phi i8 [ %276, %278 ], [ 1, %282 ], [ %276, %274 ]
  br i1 %166, label %289, label %284

284:                                              ; preds = %283
  br i1 %188, label %285, label %290

285:                                              ; preds = %284
  %286 = getelementptr inbounds i8, ptr %77, i64 3620
  %287 = load i8, ptr %286, align 4, !tbaa !122, !range !38, !noundef !39
  %288 = trunc nuw i8 %287 to i1
  br i1 %288, label %289, label %290

289:                                              ; preds = %285, %283
  br label %290

290:                                              ; preds = %284, %285, %289, %273
  %.2922 = phi i8 [ 0, %273 ], [ 1, %289 ], [ %.1921, %285 ], [ %.1921, %284 ]
  %291 = and i32 %5, 8192
  %.not1016 = icmp eq i32 %291, 0
  br i1 %.not1016, label %294, label %292

292:                                              ; preds = %290
  %293 = getelementptr inbounds i8, ptr %77, i64 19520
  store i8 1, ptr %293, align 4, !tbaa !123
  br label %294

294:                                              ; preds = %292, %290
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  br label %.thread1173

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

.thread1173:                                      ; preds = %220, %294
  %298 = phi i8 [ %225, %294 ], [ 1, %220 ]
  %spec.select11551169 = phi i1 [ %spec.select11551170, %294 ], [ %spec.select11551172, %220 ]
  %.3923 = phi i8 [ %.2922, %294 ], [ 0, %220 ]
  %.0915 = phi ptr [ %227, %294 ], [ %164, %220 ]
  %299 = getelementptr inbounds i8, ptr %77, i64 121
  %300 = load i8, ptr %299, align 1, !tbaa !124, !range !38, !noundef !39
  %301 = trunc nuw i8 %300 to i1
  %302 = load i32, ptr %167, align 8, !tbaa !106
  %.not1017 = icmp ne i32 %302, %90
  %brmerge1053.not = and i1 %spec.select11551169, %.not1017
  br i1 %brmerge1053.not, label %303, label %310

303:                                              ; preds = %.thread1173
  %.not1018 = icmp eq ptr %.0915, null
  br i1 %.not1018, label %.critedge, label %304

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

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

308:                                              ; preds = %304
  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 = %308, %.thread1173.thread
  %.ph1283 = phi i1 [ %297, %.thread1173.thread ], [ %301, %308 ]
  %.09151252.ph = phi ptr [ %164, %.thread1173.thread ], [ %.0915, %308 ]
  %.39231251.ph = phi i8 [ 0, %.thread1173.thread ], [ %.3923, %308 ]
  %.ph1284 = phi i8 [ 0, %.thread1173.thread ], [ %298, %308 ]
  %309 = load i32, ptr %167, align 8, !tbaa !106
  br label %310

310:                                              ; preds = %.sink.split, %.thread1173
  %311 = phi i1 [ %301, %.thread1173 ], [ %.ph1283, %.sink.split ]
  %.09151252 = phi ptr [ %.0915, %.thread1173 ], [ %.09151252.ph, %.sink.split ]
  %.39231251 = phi i8 [ %.3923, %.thread1173 ], [ %.39231251.ph, %.sink.split ]
  %312 = phi i8 [ %298, %.thread1173 ], [ %.ph1284, %.sink.split ]
  %313 = phi i32 [ %302, %.thread1173 ], [ %309, %.sink.split ]
  %314 = icmp eq i32 %313, %90
  br i1 %314, label %315, label %326

315:                                              ; preds = %310
  br i1 %188, label %316, label %317

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

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

320:                                              ; preds = %317
  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 %321

321:                                              ; preds = %320, %317
  br i1 %311, label %322, label %323

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

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

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

326:                                              ; preds = %323, %324, %310
  %327 = load i32, ptr %167, align 8, !tbaa !106
  %328 = icmp eq i32 %327, %90
  %329 = icmp eq ptr %.09151252, null
  %or.cond5 = and i1 %329, %328
  br i1 %or.cond5, label %330, label %331

330:                                              ; preds = %326
  call void @_ZN5ImGui13ClearActiveIDEv()
  %.pre1226 = load i32, ptr %167, align 8, !tbaa !106
  br label %331

331:                                              ; preds = %330, %326
  %332 = phi i32 [ %.pre1226, %330 ], [ %327, %326 ]
  %333 = icmp eq i32 %332, %90
  br i1 %333, label %.thread1175, label %336

.thread1175:                                      ; preds = %331
  %334 = getelementptr inbounds i8, ptr %77, i64 14152
  %335 = load i8, ptr %334, align 8, !tbaa !110, !range !38, !noundef !39
  %.not1212 = xor i8 %312, 1
  %not.brmerge1056 = and i8 %335, %.not1212
  br label %339

336:                                              ; preds = %331
  %337 = icmp ne ptr %.09151252, null
  %338 = select i1 %337, i1 %207, i1 false
  br label %339

339:                                              ; preds = %.thread1175, %336
  %.09161177 = phi i8 [ 0, %336 ], [ %not.brmerge1056, %.thread1175 ]
  %340 = phi i1 [ %338, %336 ], [ true, %.thread1175 ]
  %341 = zext i1 %340 to i8
  %342 = icmp ne ptr %.09151252, null
  br i1 %342, label %343, label %.thread1178

343:                                              ; preds = %339
  %344 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252)
  br i1 %344, label %347, label %345

345:                                              ; preds = %343
  %346 = trunc i8 %.39231251 to i1
  br i1 %346, label %347, label %348

347:                                              ; preds = %345, %343
  br label %348

348:                                              ; preds = %347, %345
  %349 = phi i1 [ false, %345 ], [ %340, %347 ]
  %brmerge1057 = or i1 %340, %349
  %or.cond1153 = select i1 %80, i1 %brmerge1057, i1 false
  br i1 %or.cond1153, label %350, label %.thread1178

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

.thread1178:                                      ; preds = %339, %350, %348
  %.0930.in = phi i1 [ %365, %350 ], [ %349, %348 ], [ false, %339 ]
  %.0930 = zext i1 %.0930.in to i8
  %brmerge1058 = select i1 %340, i1 true, i1 %.0930.in
  br i1 %brmerge1058, label %370, label %366

366:                                              ; preds = %.thread1178
  %367 = load i32, ptr %167, align 8, !tbaa !106
  %368 = icmp eq i32 %367, %90
  %.not = xor i1 %80, true
  %369 = and i1 %368, %.not
  %or.cond1059 = and i1 %342, %369
  br i1 %or.cond1059, label %371, label %375

370:                                              ; preds = %.thread1178
  %.not.old = xor i1 %80, true
  %or.cond9.old = and i1 %342, %.not.old
  br i1 %or.cond9.old, label %371, label %375

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

375:                                              ; preds = %371, %370, %366
  %376 = phi i1 [ false, %370 ], [ false, %366 ], [ %374, %371 ]
  %.not1020 = icmp eq ptr %1, null
  br i1 %.not1020, label %385, label %377

377:                                              ; preds = %375
  br i1 %376, label %378, label %381

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

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

385:                                              ; preds = %381, %375
  %386 = phi i1 [ false, %375 ], [ %384, %381 ]
  %brmerge1060 = select i1 %.not1006, i1 true, i1 %386
  br i1 %brmerge1060, label %417, label %387

387:                                              ; preds = %385
  %388 = getelementptr inbounds i8, ptr %77, i64 15360
  %389 = load ptr, ptr %388, align 8, !tbaa !128
  %390 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118) %389, i16 noundef zeroext 42)
  %391 = getelementptr inbounds i8, ptr %77, i64 23176
  %392 = load ptr, ptr %388, align 8, !tbaa !128
  %393 = getelementptr inbounds i8, ptr %392, i64 20
  %394 = load float, ptr %393, align 4, !tbaa !129
  %395 = getelementptr inbounds i8, ptr %77, i64 23196
  store float %394, ptr %395, align 4, !tbaa !129
  %396 = getelementptr inbounds i8, ptr %392, i64 100
  %397 = getelementptr inbounds i8, ptr %77, i64 23276
  %398 = load <2 x float>, ptr %396, align 4, !tbaa !95
  store <2 x float> %398, ptr %397, align 4, !tbaa !95
  %399 = getelementptr inbounds i8, ptr %392, i64 108
  %400 = load float, ptr %399, align 4, !tbaa !130
  %401 = getelementptr inbounds i8, ptr %77, i64 23284
  store float %400, ptr %401, align 4, !tbaa !130
  %402 = getelementptr inbounds i8, ptr %392, i64 64
  %403 = load ptr, ptr %402, align 8, !tbaa !131
  %404 = getelementptr inbounds i8, ptr %77, i64 23240
  store ptr %403, ptr %404, align 8, !tbaa !131
  %405 = getelementptr inbounds i8, ptr %77, i64 23232
  store ptr %390, ptr %405, align 8, !tbaa !132
  %406 = getelementptr inbounds i8, ptr %390, i64 4
  %407 = load float, ptr %406, align 4, !tbaa !133
  %408 = getelementptr inbounds i8, ptr %77, i64 23192
  store float %407, ptr %408, align 8, !tbaa !135
  %409 = getelementptr inbounds i8, ptr %77, i64 23216
  %410 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %409)
  br i1 %410, label %411, label %.critedge11

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

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

.critedge11:                                      ; preds = %411, %387, %413
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.4, i32 noundef 4282, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

416:                                              ; preds = %413
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %391)
  br label %417

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

420:                                              ; preds = %417
  br i1 %342, label %422, label %421

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

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

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

447:                                              ; preds = %422
  %448 = getelementptr inbounds i8, ptr %77, i64 15368
  %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 %.39231251 to i1
  br i1 %453, label %454, label %456

454:                                              ; preds = %451
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252)
  %455 = getelementptr inbounds i8, ptr %.09151252, i64 3717
  store i8 1, ptr %455, align 1, !tbaa !145
  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 !146
  %460 = icmp ugt i16 %459, 1
  br i1 %460, label %461, label %497

461:                                              ; preds = %457
  %462 = getelementptr inbounds i8, ptr %77, i64 3621
  %463 = load i8, ptr %462, align 1, !tbaa !147, !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 %.09151252, i64 84
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09151252, ptr noundef nonnull %466, float noundef %440, float noundef %452)
  %467 = load i16, ptr %458, align 2, !tbaa !146
  %468 = and i16 %467, 1
  %469 = icmp eq i16 %468, 0
  %470 = load i32, ptr %466, align 4, !tbaa !148
  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 %.09151252, 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 %.09151252, i64 88
  %480 = load i32, ptr %479, align 4, !tbaa !149
  %481 = getelementptr inbounds i8, ptr %.09151252, i64 92
  %482 = load i32, ptr %481, align 4, !tbaa !150
  %.not1021 = icmp eq i32 %480, %482
  %brmerge1062.not = and i1 %478, %.not1021
  br i1 %brmerge1062.not, label %.thread1259, label %483

483:                                              ; preds = %477
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, i32 noundef 2097164)
  %.pre1227 = load i32, ptr %479, align 4, !tbaa !149
  %.pre1228 = load i32, ptr %481, align 4, !tbaa !150
  %.not1022 = icmp eq i32 %.pre1227, %.pre1228
  br i1 %.not1022, label %.thread1259, label %484

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

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

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

490:                                              ; preds = %487
  %491 = getelementptr inbounds i8, ptr %.09151252, i64 88
  %492 = getelementptr inbounds i8, ptr %.09151252, 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 !150
  store i32 %493, ptr %466, align 4, !tbaa !148
  br label %494

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

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

497:                                              ; preds = %461, %457, %456
  %498 = getelementptr inbounds i8, ptr %77, i64 14152
  %499 = load i8, ptr %498, align 8, !tbaa !110, !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 %.09151252, i64 3717
  %503 = load i8, ptr %502, align 1, !tbaa !145, !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 3621
  %508 = load i8, ptr %507, align 1, !tbaa !147, !range !38, !noundef !39
  %509 = trunc nuw i8 %508 to i1
  %510 = getelementptr inbounds i8, ptr %.09151252, i64 84
  br i1 %509, label %511, label %512

511:                                              ; preds = %506
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09151252, 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 %.09151252, 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) %.09151252)
  br label %531

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

516:                                              ; preds = %514
  %517 = getelementptr inbounds i8, ptr %.09151252, i64 3717
  %518 = load i8, ptr %517, align 1, !tbaa !145, !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 !152
  %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 !153
  %527 = fcmp une float %526, 0.000000e+00
  br i1 %527, label %528, label %531

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

531:                                              ; preds = %496, %514, %516, %524, %528, %505, %513, %454
  %532 = getelementptr inbounds i8, ptr %.09151252, i64 3717
  %533 = load i8, ptr %532, align 1, !tbaa !145, !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 %428, align 8, !tbaa !110, !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 !145
  br label %539

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

540:                                              ; preds = %539
  %541 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %90, i32 noundef 0)
  %.not1065 = xor i1 %541, true
  %brmerge1066 = or i1 %80, %.not1065
  br i1 %brmerge1066, 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 !98
  %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 !98
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, 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 3620
  %549 = load i8, ptr %548, align 4, !tbaa !122, !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 3622
  %553 = load i8, ptr %552, align 2, !tbaa !154, !range !38, !noundef !39
  %554 = trunc nuw i8 %553 to i1
  %.not1067 = xor i1 %554, true
  %555 = select i1 %554, i1 %311, i1 false
  br i1 %555, label %557, label %561

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

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

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

567:                                              ; preds = %561
  %brmerge1070 = or i1 %80, %563
  %brmerge1071 = select i1 %brmerge1070, i1 true, i1 %182
  br i1 %brmerge1071, label %.loopexit1215, label %.lr.ph

.lr.ph:                                           ; preds = %567, %576
  %.09521216 = 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 %.09521216)
  %569 = load i16, ptr %568, align 2, !tbaa !146
  %570 = zext i16 %569 to i32
  store i32 %570, ptr %21, align 4, !tbaa !98
  %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 !98
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, 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 %.09521216, 1
  %578 = load i32, ptr %564, align 8, !tbaa !156
  %579 = icmp slt i32 %577, %578
  br i1 %579, label %.lr.ph, label %.loopexit1215, !llvm.loop !157

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

580:                                              ; preds = %561, %.loopexit1215, %417
  %581 = phi i1 [ %311, %417 ], [ %562, %.loopexit1215 ], [ %562, %561 ]
  %.0951 = phi i32 [ 0, %417 ], [ %424, %.loopexit1215 ], [ %424, %561 ]
  %582 = load i32, ptr %167, align 8, !tbaa !106
  %583 = icmp eq i32 %582, %90
  br i1 %583, label %584, label %881

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

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

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

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

592:                                              ; preds = %590
  %593 = load float, ptr %101, align 4, !tbaa !93
  %594 = fsub float %.sroa.11.0.copyload, %593
  %595 = getelementptr inbounds i8, ptr %77, i64 15368
  %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 %.09151252, i64 84
  %601 = getelementptr inbounds i8, ptr %.09151252, i64 100
  store i32 %599, ptr %601, align 4, !tbaa !160
  %602 = getelementptr inbounds i8, ptr %77, i64 3621
  %603 = load i8, ptr %602, align 1, !tbaa !147, !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 3622
  %607 = getelementptr inbounds i8, ptr %77, i64 3620
  %.in.in = select i1 %581, ptr %606, ptr %607
  %.in = load i8, ptr %.in.in, align 2, !tbaa !110, !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 3623
  %611 = load i8, ptr %610, align 1, !tbaa !155, !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 4, !tbaa !122, !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 !154, !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 %.not1006, %624
  %626 = xor i1 %625, true
  %brmerge1074 = or i1 %80, %626
  %.not1080 = xor i1 %68, true
  %brmerge1081 = or i1 %brmerge1074, %.not1080
  %not.brmerge1074 = xor i1 %brmerge1074, true
  br i1 %brmerge1081, label %630, label %628

627:                                              ; preds = %620
  %.not1006.not1075 = xor i1 %.not1006, true
  %brmerge1076 = or i1 %80, %.not1006.not1075
  %.not1077 = xor i1 %68, true
  %brmerge1078 = or i1 %brmerge1076, %.not1077
  %not.brmerge1076 = xor i1 %brmerge1076, true
  br i1 %brmerge1078, label %630, label %628

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

630:                                              ; preds = %623, %627, %628
  %631 = phi i1 [ %not.brmerge1076, %627 ], [ %not.brmerge1074, %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)
  %brmerge1085.demorgan = and i1 %.not1006, %634
  %brmerge1087.not = and i1 %68, %brmerge1085.demorgan
  br i1 %brmerge1087.not, label %637, label %639

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

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

639:                                              ; preds = %635, %633, %637
  %640 = phi i1 [ %.not1006, %635 ], [ %brmerge1085.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_edge1240

._crit_edge1240:                                  ; preds = %642
  %.pre1241 = xor i1 %80, true
  br label %646

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

646:                                              ; preds = %._crit_edge1240, %644
  %not..pre-phi = phi i1 [ %.pre1241, %._crit_edge1240 ], [ %645, %644 ]
  %647 = phi i1 [ false, %._crit_edge1240 ], [ %645, %644 ]
  %648 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2619, i32 noundef %90, i32 noundef 1)
  %spec.select1093 = and i1 %83, %not..pre-phi
  %spec.select1156 = and i1 %spec.select1093, %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.select1093, %653 ]
  %656 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2594, i32 noundef %90, i32 noundef 0)
  %657 = load i32, ptr %78, align 8, !tbaa !161
  %658 = and i32 %657, 2
  %.not1023 = icmp eq i32 %658, 0
  br i1 %.not1023, label %664, label %659

659:                                              ; preds = %654
  %660 = getelementptr inbounds i8, ptr %77, i64 12
  %661 = load i32, ptr %660, align 4, !tbaa !162
  %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.split1286

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.split1286

.sink.split1286:                                  ; preds = %675, %669
  %.sink = phi i32 [ 526, %669 ], [ 620, %675 ]
  %.ph1287 = 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.split1286, %675
  %680 = phi i1 [ %676, %675 ], [ %.ph1287, %.sink.split1286 ]
  %681 = phi i1 [ true, %675 ], [ %678, %.sink.split1286 ]
  %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.select1098 = select i1 %621, i32 2097156, i32 %684
  %685 = or disjoint i32 %spec.select1098, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, i32 noundef %685)
  br label %.thread1186

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.select1099 = select i1 %621, i32 2097157, i32 %689
  %690 = or disjoint i32 %spec.select1099, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, i32 noundef %690)
  br label %.thread1186

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

693:                                              ; preds = %691
  %694 = load i8, ptr %607, align 4, !tbaa !122, !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 %.2912, i64 136
  %698 = load float, ptr %697, align 4, !tbaa !112
  %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 %.2912, float noundef %701)
  br label %.thread1186

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) %.09151252, i32 noundef %704)
  br label %.thread1186

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

707:                                              ; preds = %705
  %708 = load i8, ptr %607, align 4, !tbaa !122, !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 %.2912, i64 136
  %712 = load float, ptr %711, align 4, !tbaa !112
  %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 %.2912, float noundef %716)
  br label %.thread1186

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) %.09151252, i32 noundef %719)
  br label %.thread1186

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

722:                                              ; preds = %720
  %723 = or disjoint i32 %605, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, 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 %.thread1186

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

730:                                              ; preds = %728
  %731 = or disjoint i32 %605, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, 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 %.thread1186

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 4, !tbaa !122, !range !38, !noundef !39
  %739 = trunc nuw i8 %738 to i1
  %.v1030 = select i1 %739, i32 2097158, i32 2097156
  %740 = or disjoint i32 %.v1030, %605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, i32 noundef %740)
  br label %.thread1186

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 4, !tbaa !122, !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) %.09151252, i32 noundef %746)
  br label %.thread1186

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

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

751:                                              ; preds = %749
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, 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) %.09151252, i32 noundef %753)
  br label %.thread1186

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

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

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

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

760:                                              ; preds = %759
  %761 = getelementptr inbounds i8, ptr %77, i64 3623
  %762 = load i8, ptr %761, align 1, !tbaa !155, !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 !154, !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 4, !tbaa !122, !range !38, !noundef !39
  %769 = trunc nuw i8 %768 to i1
  br i1 %769, label %770, label %.sink.split1289

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

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

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

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

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

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

.critedge1123:                                    ; preds = %774
  br i1 %777, label %.thread1186, label %784

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

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

784:                                              ; preds = %778, %.critedge1123
  br i1 %80, label %.thread1186, 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 !98
  %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 !98
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, i32 noundef %788)
  br label %789

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

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

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

793:                                              ; preds = %791
  %794 = getelementptr inbounds i8, ptr %.09151252, i64 16
  %795 = load i32, ptr %794, align 8, !tbaa !116
  %796 = icmp sgt i32 %795, 0
  %.0930.in. = select i1 %796, i1 %.0930.in, i1 false
  %.1127 = select i1 %796, i8 %341, i8 0
  %.0916. = select i1 %796, i8 %.09161177, i8 1
  br label %.thread1186

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

798:                                              ; preds = %797
  %.mux1129 = select i1 %spec.select1156, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252, i32 noundef %.mux1129)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252)
  br label %.thread1186

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

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

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

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

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

808:                                              ; preds = %806
  %809 = getelementptr inbounds i8, ptr %.09151252, i64 88
  %810 = load i32, ptr %809, align 4, !tbaa !149
  %811 = getelementptr inbounds i8, ptr %.09151252, i64 92
  %812 = load i32, ptr %811, align 4, !tbaa !150
  %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) %.09151252)
  br i1 %816, label %817, label %823

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

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

826:                                              ; preds = %823, %817
  %827 = phi i32 [ %822, %817 ], [ %825, %823 ]
  %828 = getelementptr inbounds i8, ptr %.09151252, i64 32
  %829 = load ptr, ptr %828, align 8, !tbaa !119
  %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 !119
  %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 %.thread1186

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

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

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

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

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

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

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

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

.lr.ph1220:                                       ; preds = %852, %871
  %.09551219 = phi i32 [ %.1956, %871 ], [ 0, %852 ]
  %.09571218 = 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 %.09571218, ptr noundef null)
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds i8, ptr %.09571218, 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 !165

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

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

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

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

.thread1186:                                      ; preds = %778, %.critedge1123, %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
  %.0953 = 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, %.critedge1123 ], [ false, %778 ]
  %.1948 = 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, %.critedge1123 ], [ 1, %778 ]
  %.1931 = phi i1 [ %.0930.in, %683 ], [ %.0930.in, %688 ], [ %.0930.in, %696 ], [ %.0930.in, %702 ], [ %.0930.in, %710 ], [ %.0930.in, %717 ], [ %.0930.in, %722 ], [ %.0930.in, %730 ], [ %.0930.in, %737 ], [ %.0930.in, %743 ], [ %.0930.in, %798 ], [ %.0930.in, %800 ], [ %.0930.in, %846 ], [ %.0930.in, %842 ], [ %.0930.in, %849 ], [ %.0930.in, %770 ], [ %.0930.in, %752 ], [ %.0930.in, %779 ], [ %.0930.in, %784 ], [ %.0930.in, %789 ], [ %.0930.in, %783 ], [ %.0930.in., %793 ], [ false, %791 ], [ %.0930.in, %876 ], [ %.0930.in, %850 ], [ %.0930.in, %.critedge1123 ], [ %.0930.in, %778 ]
  %.0928 = phi i8 [ %341, %683 ], [ %341, %688 ], [ %341, %696 ], [ %341, %702 ], [ %341, %710 ], [ %341, %717 ], [ %341, %722 ], [ %341, %730 ], [ %341, %737 ], [ %341, %743 ], [ %341, %798 ], [ %341, %800 ], [ %341, %846 ], [ %341, %842 ], [ %341, %849 ], [ %341, %770 ], [ %341, %752 ], [ %341, %779 ], [ %341, %784 ], [ %341, %789 ], [ %341, %783 ], [ %.1127, %793 ], [ 0, %791 ], [ %341, %876 ], [ %341, %850 ], [ %341, %.critedge1123 ], [ %341, %778 ]
  %.0924 = 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, %.critedge1123 ], [ %209, %778 ]
  %.2918 = phi i8 [ %.09161177, %683 ], [ %.09161177, %688 ], [ %.09161177, %696 ], [ %.09161177, %702 ], [ %.09161177, %710 ], [ %.09161177, %717 ], [ %.09161177, %722 ], [ %.09161177, %730 ], [ %.09161177, %737 ], [ %.09161177, %743 ], [ %.09161177, %798 ], [ %.09161177, %800 ], [ %.09161177, %846 ], [ %.09161177, %842 ], [ %.09161177, %849 ], [ %.09161177, %770 ], [ %.09161177, %752 ], [ 1, %779 ], [ %.09161177, %784 ], [ %.09161177, %789 ], [ %.09161177, %783 ], [ %.0916., %793 ], [ 1, %791 ], [ %.09161177, %876 ], [ %.09161177, %850 ], [ 1, %.critedge1123 ], [ 1, %778 ]
  %877 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252)
  %878 = select i1 %877, i8 %.0928, i8 0
  %879 = zext i1 %.1931 to i8
  %880 = or i8 %878, %879
  %.pre1229 = load i32, ptr %167, align 8, !tbaa !106
  br label %881

881:                                              ; preds = %.thread1186, %580
  %882 = phi i32 [ %.pre1229, %.thread1186 ], [ %582, %580 ]
  %.1954 = phi i1 [ %.0953, %.thread1186 ], [ false, %580 ]
  %.2949 = phi i8 [ %.1948, %.thread1186 ], [ 0, %580 ]
  %.2932 = phi i8 [ %880, %.thread1186 ], [ %.0930, %580 ]
  %.1929 = phi i8 [ %.0928, %.thread1186 ], [ %341, %580 ]
  %.1925 = phi float [ %.0924, %.thread1186 ], [ %209, %580 ]
  %.3919 = phi i8 [ %.2918, %.thread1186 ], [ %.09161177, %580 ]
  %883 = icmp eq i32 %882, %90
  br i1 %883, label %.thread1262, label %1084

.thread1262:                                      ; preds = %588, %584, %881
  %.39191281 = phi i8 [ %.3919, %881 ], [ %.09161177, %584 ], [ %.09161177, %588 ]
  %.19251279 = phi float [ %.1925, %881 ], [ %209, %584 ], [ %209, %588 ]
  %.19291277 = phi i8 [ %.1929, %881 ], [ %341, %584 ], [ %341, %588 ]
  %.29321275 = phi i8 [ %.2932, %881 ], [ %.0930, %584 ], [ %.0930, %588 ]
  %.29491272 = phi i8 [ %.2949, %881 ], [ 0, %584 ], [ 0, %588 ]
  %.19541271 = phi i1 [ %.1954, %881 ], [ false, %584 ], [ false, %588 ]
  br i1 %342, label %885, label %884

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

885:                                              ; preds = %.thread1262
  %.1954.not = xor i1 %.19541271, true
  %brmerge1131 = or i1 %80, %.1954.not
  br i1 %brmerge1131, label %920, label %886

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

888:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %24) #14
  %889 = getelementptr inbounds i8, ptr %.09151252, i64 84
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.09151252, 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 %.thread1190

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

894:                                              ; preds = %890
  %895 = getelementptr inbounds i8, ptr %.09151252, i64 56
  %896 = load i32, ptr %895, align 8, !tbaa !166
  %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 !167
  %908 = load i32, ptr %25, align 8, !tbaa !168
  %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 %.09151252, i64 84
  %914 = getelementptr inbounds i8, ptr %25, i64 8
  %915 = load ptr, ptr %914, align 8, !tbaa !167
  %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 %.09151252, 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 %.thread1190

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

.thread1190:                                      ; preds = %890, %919, %888, %920
  %.09331198 = phi i1 [ false, %920 ], [ false, %890 ], [ true, %919 ], [ false, %888 ]
  %.09581196 = phi ptr [ null, %920 ], [ null, %890 ], [ %892, %919 ], [ @.str, %888 ]
  %.09631194 = phi i32 [ 0, %920 ], [ 0, %890 ], [ %897, %919 ], [ 0, %888 ]
  %921 = getelementptr inbounds i8, ptr %.09151252, i64 72
  store i8 1, ptr %921, align 8, !tbaa !117
  %922 = getelementptr inbounds i8, ptr %.09151252, i64 40
  %923 = getelementptr inbounds i8, ptr %.09151252, i64 24
  %924 = load i32, ptr %923, align 8, !tbaa !126
  %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 %.09151252, i64 48
  %928 = load ptr, ptr %927, align 8, !tbaa !118
  %929 = load i32, ptr %922, align 8, !tbaa !169
  %930 = getelementptr inbounds i8, ptr %.09151252, i64 32
  %931 = load ptr, ptr %930, align 8, !tbaa !119
  %932 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %928, i32 noundef %929, ptr noundef %931, ptr noundef null)
  br label %933

933:                                              ; preds = %.thread1190, %920
  %.09331199 = phi i1 [ %.09331198, %.thread1190 ], [ false, %920 ]
  %.09581197 = phi ptr [ %.09581196, %.thread1190 ], [ null, %920 ]
  %.09631195 = phi i32 [ %.09631194, %.thread1190 ], [ 0, %920 ]
  br i1 %.19541271, label %934, label %.critedge1133

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

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

940:                                              ; preds = %.critedge1133
  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 4608, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

942:                                              ; preds = %940
  br i1 %.not1003, 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 %.thread1201, label %945

945:                                              ; preds = %943, %942
  br i1 %.not1001.not, label %.critedge1135, label %946

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

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

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

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

955:                                              ; preds = %.critedge1135, %951
  %956 = and i32 %5, 256
  %.not1035 = icmp eq i32 %956, 0
  br i1 %.not1035, label %1076, label %.thread1201

.thread1201:                                      ; preds = %951, %948, %946, %943, %955
  %.09681206 = phi i32 [ 256, %955 ], [ 524288, %951 ], [ 128, %948 ], [ 128, %946 ], [ 64, %943 ]
  %.09691205 = 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 !170
  %957 = getelementptr inbounds i8, ptr %26, i64 8
  store i32 %.09681206, ptr %957, align 8, !tbaa !173
  %958 = getelementptr inbounds i8, ptr %26, i64 12
  store i32 %5, ptr %958, align 4, !tbaa !174
  %959 = getelementptr inbounds i8, ptr %26, i64 16
  store ptr %7, ptr %959, align 8, !tbaa !175
  br i1 %80, label %963, label %960

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

963:                                              ; preds = %.thread1201, %960
  %964 = phi ptr [ %962, %960 ], [ %2, %.thread1201 ]
  %965 = getelementptr inbounds i8, ptr %26, i64 28
  store i32 %.09691205, ptr %965, align 4, !tbaa !176
  %966 = getelementptr inbounds i8, ptr %26, i64 32
  store ptr %964, ptr %966, align 8, !tbaa !177
  %967 = getelementptr inbounds i8, ptr %.09151252, i64 16
  %968 = load i32, ptr %967, align 8, !tbaa !116
  %969 = getelementptr inbounds i8, ptr %26, i64 40
  store i32 %968, ptr %969, align 8, !tbaa !178
  %970 = getelementptr inbounds i8, ptr %.09151252, i64 76
  %971 = load i32, ptr %970, align 4, !tbaa !137
  %972 = getelementptr inbounds i8, ptr %26, i64 44
  store i32 %971, ptr %972, align 4, !tbaa !179
  %973 = getelementptr inbounds i8, ptr %26, i64 48
  store i8 0, ptr %973, align 8, !tbaa !180
  %974 = getelementptr inbounds i8, ptr %.09151252, i64 24
  %975 = getelementptr inbounds i8, ptr %.09151252, i64 32
  %976 = load ptr, ptr %975, align 8, !tbaa !119
  %977 = getelementptr inbounds i8, ptr %.09151252, i64 84
  %978 = load i32, ptr %977, align 4, !tbaa !148
  %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 !181
  %983 = getelementptr inbounds i8, ptr %.09151252, i64 88
  %984 = load i32, ptr %983, align 4, !tbaa !149
  %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 !182
  %989 = getelementptr inbounds i8, ptr %.09151252, i64 92
  %990 = load i32, ptr %989, align 4, !tbaa !150
  %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 !183
  %995 = call noundef i32 %6(ptr noundef nonnull %26)
  br i1 %80, label %999, label %996

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

999:                                              ; preds = %963, %996
  %1000 = phi ptr [ %998, %996 ], [ %2, %963 ]
  %1001 = load ptr, ptr %966, align 8, !tbaa !177
  %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 4663, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1004:                                             ; preds = %999
  %1005 = load i32, ptr %972, align 4, !tbaa !179
  %1006 = load i32, ptr %970, align 4, !tbaa !137
  %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 4664, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1009:                                             ; preds = %1004
  %1010 = load i32, ptr %958, align 4, !tbaa !174
  %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 4665, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1013:                                             ; preds = %1009
  %1014 = load i8, ptr %973, align 8, !tbaa !180, !range !38, !noundef !39
  %1015 = trunc nuw i8 %1014 to i1
  %1016 = load i32, ptr %982, align 4, !tbaa !181
  %.not1037 = icmp ne i32 %1016, %981
  %brmerge1138 = select i1 %.not1037, i1 true, i1 %1015
  br i1 %brmerge1138, 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 !148
  %1021 = getelementptr inbounds i8, ptr %.09151252, i64 3716
  store i8 1, ptr %1021, align 4, !tbaa !151
  br label %1022

1022:                                             ; preds = %1013, %1017
  %1023 = load i32, ptr %988, align 8, !tbaa !182
  %.not1038 = icmp ne i32 %1023, %987
  %brmerge1139 = select i1 %.not1038, i1 true, i1 %1015
  br i1 %brmerge1139, label %1024, label %1036

1024:                                             ; preds = %1022
  %1025 = load i32, ptr %982, align 4, !tbaa !181
  %1026 = icmp eq i32 %1023, %1025
  br i1 %1026, label %1027, label %1029

1027:                                             ; preds = %1024
  %1028 = load i32, ptr %977, align 4, !tbaa !148
  br label %1034

1029:                                             ; preds = %1024
  %1030 = load ptr, ptr %966, align 8, !tbaa !177
  %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 !149
  br label %1036

1036:                                             ; preds = %1022, %1034
  %1037 = load i32, ptr %994, align 4, !tbaa !183
  %.not1039 = icmp ne i32 %1037, %993
  %brmerge1140 = select i1 %.not1039, i1 true, i1 %1015
  br i1 %brmerge1140, label %1038, label %1050

1038:                                             ; preds = %1036
  %1039 = load i32, ptr %988, align 8, !tbaa !182
  %1040 = icmp eq i32 %1037, %1039
  br i1 %1040, label %1041, label %1043

1041:                                             ; preds = %1038
  %1042 = load i32, ptr %983, align 4, !tbaa !149
  br label %1048

1043:                                             ; preds = %1038
  %1044 = load ptr, ptr %966, align 8, !tbaa !177
  %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 !150
  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 4672, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1054:                                             ; preds = %1051
  %1055 = load i32, ptr %969, align 8, !tbaa !178
  %1056 = load ptr, ptr %966, align 8, !tbaa !177
  %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 4673, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1061:                                             ; preds = %1054
  call void @_ZL44InputTextReconcileUndoStateAfterUserCallbackP19ImGuiInputTextStatePKci(ptr noundef nonnull %.09151252, ptr noundef %1056, i32 noundef %1055)
  %1062 = load i32, ptr %969, align 8, !tbaa !178
  %1063 = icmp sle i32 %1062, %.0951
  %brmerge1142 = or i1 %.not1007, %1063
  br i1 %brmerge1142, label %1068, label %1064

1064:                                             ; preds = %1061
  %1065 = load i32, ptr %974, align 8, !tbaa !126
  %1066 = sub i32 %1062, %.0951
  %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 !119
  %1070 = load i32, ptr %974, align 8, !tbaa !126
  %1071 = load ptr, ptr %966, align 8, !tbaa !177
  %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 %.09151252, i64 12
  store i32 %1072, ptr %1073, align 4, !tbaa !120
  %1074 = load i32, ptr %969, align 8, !tbaa !178
  store i32 %1074, ptr %967, align 8, !tbaa !116
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09151252)
  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, %.critedge1133
  br i1 %80, label %1084, label %1077

1077:                                             ; preds = %1076
  %1078 = getelementptr inbounds i8, ptr %.09151252, i64 48
  %1079 = load ptr, ptr %1078, align 8, !tbaa !118
  %1080 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1079, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not1040 = icmp eq i32 %1080, 0
  br i1 %.not1040, label %1084, label %1081

1081:                                             ; preds = %1077
  %1082 = getelementptr inbounds i8, ptr %.09151252, i64 16
  %1083 = load i32, ptr %1082, align 8, !tbaa !116
  br label %1084

1084:                                             ; preds = %934, %1081, %1077, %1076, %881
  %.39191280 = phi i8 [ %.3919, %881 ], [ %.39191281, %1076 ], [ %.39191281, %1081 ], [ %.39191281, %1077 ], [ %.39191281, %934 ]
  %.19251278 = phi float [ %.1925, %881 ], [ %.19251279, %1076 ], [ %.19251279, %1081 ], [ %.19251279, %1077 ], [ %.19251279, %934 ]
  %.19291276 = phi i8 [ %.1929, %881 ], [ %.19291277, %1076 ], [ %.19291277, %1081 ], [ %.19291277, %1077 ], [ %.19291277, %934 ]
  %.29321274 = phi i8 [ %.2932, %881 ], [ %.29321275, %1076 ], [ %.29321275, %1081 ], [ %.29321275, %1077 ], [ %.29321275, %934 ]
  %.29491273 = phi i8 [ %.2949, %881 ], [ %.29491272, %1076 ], [ %.29491272, %1081 ], [ %.29491272, %1077 ], [ %.29491272, %934 ]
  %.2965 = phi i32 [ 0, %881 ], [ %.09631195, %1076 ], [ %1083, %1081 ], [ %.09631195, %1077 ], [ %.09631195, %934 ]
  %.2960 = phi ptr [ null, %881 ], [ %.09581197, %1076 ], [ %1079, %1081 ], [ %.09581197, %1077 ], [ %.09581197, %934 ]
  %.2935 = phi i1 [ false, %881 ], [ %.09331199, %1076 ], [ true, %1081 ], [ %.09331199, %1077 ], [ %.09331199, %934 ]
  %1085 = getelementptr inbounds i8, ptr %77, i64 23152
  %1086 = load i32, ptr %1085, align 8, !tbaa !184
  %1087 = icmp eq i32 %1086, %90
  br i1 %1087, label %1088, label %1102

1088:                                             ; preds = %1084
  %1089 = load i32, ptr %167, align 8, !tbaa !106
  %.not1041 = icmp eq i32 %1089, %90
  br i1 %.not1041, label %1101, label %1090

1090:                                             ; preds = %1088
  %1091 = call noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv()
  %.not1143 = xor i1 %1091, true
  %brmerge1144 = or i1 %80, %.not1143
  br i1 %brmerge1144, label %1101, label %1092

1092:                                             ; preds = %1090
  %1093 = getelementptr inbounds i8, ptr %77, i64 23160
  %1094 = getelementptr inbounds i8, ptr %77, i64 23168
  %1095 = load ptr, ptr %1094, align 8, !tbaa !185
  %1096 = load i32, ptr %1093, align 8, !tbaa !186
  %1097 = add nsw i32 %1096, -1
  %1098 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1095, ptr noundef nonnull dereferenceable(1) %2) #15
  %1099 = icmp ne i32 %1098, 0
  %1100 = or i1 %.2935, %1099
  br label %1101

1101:                                             ; preds = %1090, %1092, %1088
  %.3966 = phi i32 [ %1097, %1092 ], [ %.2965, %1090 ], [ %.2965, %1088 ]
  %.3961 = phi ptr [ %1095, %1092 ], [ %.2960, %1090 ], [ %.2960, %1088 ]
  %.3936 = phi i1 [ %1100, %1092 ], [ %.2935, %1090 ], [ %.2935, %1088 ]
  store i32 0, ptr %1085, align 8, !tbaa !184
  br label %1102

1102:                                             ; preds = %1101, %1084
  %.4967 = phi i32 [ %.3966, %1101 ], [ %.2965, %1084 ]
  %.4962 = phi ptr [ %.3961, %1101 ], [ %.2960, %1084 ]
  %.4937 = phi i1 [ %.3936, %1101 ], [ %.2935, %1084 ]
  %.not1042 = icmp eq ptr %.4962, null
  br i1 %.not1042, label %1128, label %1103

1103:                                             ; preds = %1102
  %1104 = icmp sgt i32 %.4967, -1
  br i1 %1104, label %1106, label %1105

1105:                                             ; preds = %1103
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.4, i32 noundef 4713, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1106:                                             ; preds = %1103
  br i1 %.not1007, label %1124, label %1107

1107:                                             ; preds = %1106
  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 !170
  %1108 = getelementptr inbounds i8, ptr %27, i64 8
  store i32 262144, ptr %1108, align 8, !tbaa !173
  %1109 = getelementptr inbounds i8, ptr %27, i64 12
  store i32 %5, ptr %1109, align 4, !tbaa !174
  %1110 = getelementptr inbounds i8, ptr %27, i64 32
  store ptr %2, ptr %1110, align 8, !tbaa !177
  %1111 = getelementptr inbounds i8, ptr %27, i64 40
  store i32 %.4967, ptr %1111, align 8, !tbaa !178
  %1112 = add nuw nsw i32 %.4967, 1
  %1113 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1112)
  %1114 = getelementptr inbounds i8, ptr %27, i64 44
  store i32 %1113, ptr %1114, align 4, !tbaa !179
  %1115 = getelementptr inbounds i8, ptr %27, i64 16
  store ptr %7, ptr %1115, align 8, !tbaa !175
  %1116 = call noundef i32 %6(ptr noundef nonnull %27)
  %1117 = load ptr, ptr %1110, align 8, !tbaa !177
  %1118 = load i32, ptr %1114, align 4, !tbaa !179
  %1119 = load i32, ptr %1111, align 8, !tbaa !178
  %1120 = add nsw i32 %1118, -1
  %1121 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1119, i32 noundef %1120)
  %.not1043 = icmp sgt i32 %1121, %1118
  br i1 %.not1043, label %1122, label %1123

1122:                                             ; preds = %1107
  call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.4, i32 noundef 4728, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1123:                                             ; preds = %1107
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #14
  br label %1124

1124:                                             ; preds = %1123, %1106
  %.5 = phi i32 [ %1121, %1123 ], [ %.4967, %1106 ]
  %.0907 = phi i32 [ %1118, %1123 ], [ %3, %1106 ]
  %.0905 = phi ptr [ %1117, %1123 ], [ %2, %1106 ]
  %1125 = add nsw i32 %.5, 1
  %1126 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1125, i32 noundef %.0907)
  %1127 = sext i32 %1126 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0905, ptr noundef nonnull %.4962, i64 noundef %1127)
  br label %1128

1128:                                             ; preds = %1124, %1102
  %.1906 = phi ptr [ %.0905, %1124 ], [ %2, %1102 ]
  %1129 = load i32, ptr %167, align 8, !tbaa !106
  %1130 = icmp eq i32 %1129, %90
  br i1 %1130, label %1131, label %1136

1131:                                             ; preds = %1128
  %1132 = trunc nuw i8 %.39191280 to i1
  br i1 %1132, label %1133, label %1134

1133:                                             ; preds = %1131
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1136

1134:                                             ; preds = %1131
  %1135 = getelementptr inbounds i8, ptr %77, i64 24084
  store i32 1, ptr %1135, align 4, !tbaa !187
  br label %1136

1136:                                             ; preds = %1128, %1134, %1133
  br i1 %68, label %1142, label %1137

1137:                                             ; preds = %1136
  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
  %1138 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %1138, align 8
  %1139 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1140 = getelementptr inbounds i8, ptr %77, i64 14356
  %1141 = load float, ptr %1140, align 4, !tbaa !99
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %1139, i1 noundef zeroext true, float noundef %1141)
  br label %1142

1142:                                             ; preds = %1137, %1136
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #14
  %1143 = load float, ptr %11, align 8, !tbaa !141
  %1144 = getelementptr inbounds i8, ptr %11, i64 4
  %1145 = load float, ptr %1144, align 4, !tbaa !188
  %1146 = fadd float %.sroa.0507.2, %1143
  %1147 = fadd float %.sroa.11.0.copyload, %1145
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef %1143, float noundef %1145, float noundef %1146, float noundef %1147)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #14
  br i1 %68, label %1148, label %1151

1148:                                             ; preds = %1142
  %1149 = getelementptr inbounds i8, ptr %.2912, i64 256
  %1150 = load i64, ptr %1149, align 8
  br label %1154

1151:                                             ; preds = %1142
  %1152 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %100)
  %1153 = bitcast <2 x float> %1152 to i64
  br label %1154

1154:                                             ; preds = %1151, %1148
  %storemerge = phi i64 [ %1150, %1148 ], [ %1153, %1151 ]
  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 %376, label %1155, label %1158

1155:                                             ; preds = %1154
  %1156 = getelementptr inbounds i8, ptr %.09151252, i64 48
  %1157 = load ptr, ptr %1156, align 8, !tbaa !118
  br label %1158

1158:                                             ; preds = %1154, %1155
  %1159 = phi ptr [ %1157, %1155 ], [ %.1906, %1154 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  store ptr null, ptr %31, align 8, !tbaa !40
  br i1 %386, label %1160, label %1163

1160:                                             ; preds = %1158
  %1161 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #15
  %1162 = getelementptr inbounds i8, ptr %1, i64 %1161
  store ptr %1162, ptr %31, align 8, !tbaa !40
  br label %1163

1163:                                             ; preds = %1160, %1158
  %1164 = phi ptr [ %1162, %1160 ], [ null, %1158 ]
  %.0950 = phi ptr [ %1, %1160 ], [ %1159, %1158 ]
  %1165 = trunc nuw i8 %.19291276 to i1
  br i1 %1165, label %1168, label %1166

1166:                                             ; preds = %1163
  %1167 = trunc nuw i8 %.29321274 to i1
  br i1 %1167, label %1168, label %1430

1168:                                             ; preds = %1166, %1163
  br i1 %342, label %1170, label %1169

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

1170:                                             ; preds = %1168
  br i1 %386, label %1176, label %1171

1171:                                             ; preds = %1170
  %1172 = getelementptr inbounds i8, ptr %.09151252, i64 16
  %1173 = load i32, ptr %1172, align 8, !tbaa !116
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds i8, ptr %.0950, i64 %1174
  store ptr %1175, ptr %31, align 8, !tbaa !40
  br label %1176

1176:                                             ; preds = %1171, %1170
  %.pre12351237 = phi ptr [ %1175, %1171 ], [ %1164, %1170 ]
  %1177 = getelementptr inbounds i8, ptr %.09151252, i64 32
  %1178 = load ptr, ptr %1177, align 8, !tbaa !119
  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 %1165, label %1179, label %1184

1179:                                             ; preds = %1176
  %1180 = getelementptr inbounds i8, ptr %.09151252, i64 84
  %1181 = load i32, ptr %1180, align 4, !tbaa !148
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds i16, ptr %1178, i64 %1182
  br label %1184

1184:                                             ; preds = %1179, %1176
  %.sroa.069.0 = phi ptr [ %1183, %1179 ], [ null, %1176 ]
  %.sroa.063.0 = phi i32 [ -1, %1179 ], [ %.sroa.063.0.copyload, %1176 ]
  %.0942 = phi i32 [ 1, %1179 ], [ 0, %1176 ]
  %1185 = trunc nuw i8 %.29321274 to i1
  br i1 %1185, label %1186, label %1195

1186:                                             ; preds = %1184
  %1187 = getelementptr inbounds i8, ptr %.09151252, i64 88
  %1188 = load i32, ptr %1187, align 4, !tbaa !149
  %1189 = getelementptr inbounds i8, ptr %.09151252, i64 92
  %1190 = load i32, ptr %1189, align 4, !tbaa !150
  %1191 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1188, i32 noundef %1190)
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds i16, ptr %1178, i64 %1192
  %1194 = add nuw nsw i32 %.0942, 1
  br label %1195

1195:                                             ; preds = %1186, %1184
  %.sroa.7.0 = phi ptr [ %1193, %1186 ], [ null, %1184 ]
  %.sroa.9.0 = phi i32 [ -1, %1186 ], [ %.sroa.9.0.copyload, %1184 ]
  %.1943 = phi i32 [ %1194, %1186 ], [ %.0942, %1184 ]
  %.lobit = lshr exact i32 %67, 26
  %1196 = add nuw nsw i32 %.1943, %.lobit
  br label %1197

1197:                                             ; preds = %1212, %1195
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1195 ], [ %.sroa.9.2, %1212 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1195 ], [ %.sroa.063.3, %1212 ]
  %.2944 = phi i32 [ %1196, %1195 ], [ %.4946, %1212 ]
  %.0939 = phi i32 [ 0, %1195 ], [ %.1940, %1212 ]
  %.0938 = phi ptr [ %1178, %1195 ], [ %1213, %1212 ]
  %1198 = load i16, ptr %.0938, align 2, !tbaa !146
  switch i16 %1198, label %1212 [
    i16 0, label %1214
    i16 10, label %1199
  ]

1199:                                             ; preds = %1197
  %1200 = add nsw i32 %.0939, 1
  %1201 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1201, label %1202, label %1206

1202:                                             ; preds = %1199
  %.not1045 = icmp ult ptr %.0938, %.sroa.069.0
  br i1 %.not1045, label %1206, label %1203

1203:                                             ; preds = %1202
  %1204 = add nsw i32 %.2944, -1
  %1205 = icmp slt i32 %.2944, 2
  br i1 %1205, label %1214, label %1206

1206:                                             ; preds = %1203, %1202, %1199
  %.sroa.063.2 = phi i32 [ %1200, %1203 ], [ -1, %1202 ], [ %.sroa.063.1, %1199 ]
  %.3945 = phi i32 [ %1204, %1203 ], [ %.2944, %1202 ], [ %.2944, %1199 ]
  %1207 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1207, label %1208, label %1212

1208:                                             ; preds = %1206
  %.not1046 = icmp ult ptr %.0938, %.sroa.7.0
  br i1 %.not1046, label %1212, label %1209

1209:                                             ; preds = %1208
  %1210 = add nsw i32 %.3945, -1
  %1211 = icmp slt i32 %.3945, 2
  br i1 %1211, label %1214, label %1212

1212:                                             ; preds = %1197, %1209, %1208, %1206
  %.sroa.9.2 = phi i32 [ %1200, %1209 ], [ -1, %1208 ], [ %.sroa.9.1, %1206 ], [ %.sroa.9.1, %1197 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1209 ], [ %.sroa.063.2, %1208 ], [ %.sroa.063.2, %1206 ], [ %.sroa.063.1, %1197 ]
  %.4946 = phi i32 [ %1210, %1209 ], [ %.3945, %1208 ], [ %.3945, %1206 ], [ %.2944, %1197 ]
  %.1940 = phi i32 [ %1200, %1209 ], [ %1200, %1208 ], [ %1200, %1206 ], [ %.0939, %1197 ]
  %1213 = getelementptr inbounds i8, ptr %.0938, i64 2
  br label %1197, !llvm.loop !189

1214:                                             ; preds = %1209, %1203, %1197
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1197 ], [ %.sroa.9.1, %1203 ], [ %1200, %1209 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1197 ], [ %1200, %1203 ], [ %.sroa.063.2, %1209 ]
  %.2941 = phi i32 [ %.0939, %1197 ], [ %1200, %1203 ], [ %1200, %1209 ]
  %1215 = add nsw i32 %.2941, 1
  %1216 = icmp eq i32 %.sroa.063.4, -1
  %spec.select1145 = select i1 %1216, i32 %1215, i32 %.sroa.063.4
  %1217 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1217, i32 %1215, i32 %.sroa.9.3
  %1218 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1178)
  %1219 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %77, ptr noundef %1218, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1219, i64 0
  store float %.sroa.045.0.vec.extract, ptr %32, align 4, !tbaa !190
  %1220 = sitofp i32 %spec.select1145 to float
  %1221 = getelementptr inbounds i8, ptr %77, i64 15368
  %1222 = load float, ptr %1221, align 8, !tbaa !41
  %1223 = fmul float %1222, %1220
  %1224 = getelementptr inbounds i8, ptr %32, i64 4
  store float %1223, ptr %1224, align 4, !tbaa !191
  %1225 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1225, label %1226, label %1233

1226:                                             ; preds = %1214
  %1227 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1178)
  %1228 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %77, ptr noundef %1227, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1228, i64 0
  store float %.sroa.044.0.vec.extract, ptr %33, align 4, !tbaa !190
  %1229 = uitofp nneg i32 %.sroa.9.4 to float
  %1230 = load float, ptr %1221, align 8, !tbaa !41
  %1231 = fmul float %1230, %1229
  %1232 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1231, ptr %1232, align 4, !tbaa !191
  br label %1233

1233:                                             ; preds = %1226, %1214
  %1234 = phi float [ %1230, %1226 ], [ %1222, %1214 ]
  br i1 %68, label %1235, label %1239

1235:                                             ; preds = %1233
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  %1236 = sitofp i32 %1215 to float
  %1237 = fmul float %1234, %1236
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %.sroa.0507.2, float noundef %1237)
  %1238 = load i64, ptr %34, align 8
  store i64 %1238, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  br label %1239

1239:                                             ; preds = %1235, %1233
  br i1 %1165, label %1240, label %1300

1240:                                             ; preds = %1239
  %1241 = getelementptr inbounds i8, ptr %.09151252, i64 3716
  %1242 = load i8, ptr %1241, align 4, !tbaa !151, !range !38, !noundef !39
  %1243 = trunc nuw i8 %1242 to i1
  br i1 %1243, label %1244, label %1300

1244:                                             ; preds = %1240
  %1245 = and i32 %5, 4096
  %.not1047 = icmp eq i32 %1245, 0
  br i1 %.not1047, label %1246, label %1266

1246:                                             ; preds = %1244
  %1247 = fmul float %.sroa.0507.2, 2.500000e-01
  %1248 = load float, ptr %32, align 4, !tbaa !190
  %1249 = getelementptr inbounds i8, ptr %.09151252, i64 80
  %1250 = load float, ptr %1249, align 8, !tbaa !121
  %1251 = fcmp olt float %1248, %1250
  br i1 %1251, label %1252, label %1257

1252:                                             ; preds = %1246
  %1253 = fsub float %1248, %1247
  %1254 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1253)
  %1255 = fptosi float %1254 to i32
  %1256 = sitofp i32 %1255 to float
  store float %1256, ptr %1249, align 8, !tbaa !121
  br label %1268

1257:                                             ; preds = %1246
  %1258 = load float, ptr %100, align 4, !tbaa !142
  %1259 = fsub float %.sroa.0507.2, %1258
  %1260 = fsub float %1248, %1259
  %1261 = fcmp ult float %1260, %1250
  br i1 %1261, label %1268, label %1262

1262:                                             ; preds = %1257
  %1263 = fadd float %1247, %1260
  %1264 = fptosi float %1263 to i32
  %1265 = sitofp i32 %1264 to float
  store float %1265, ptr %1249, align 8, !tbaa !121
  br label %1268

1266:                                             ; preds = %1244
  %1267 = getelementptr inbounds i8, ptr %.09151252, i64 80
  store float 0.000000e+00, ptr %1267, align 8, !tbaa !121
  br label %1268

1268:                                             ; preds = %1252, %1262, %1257, %1266
  br i1 %68, label %1269, label %1299

1269:                                             ; preds = %1268
  %1270 = load float, ptr %1224, align 4, !tbaa !191
  %1271 = load float, ptr %1221, align 8, !tbaa !41
  %1272 = fsub float %1270, %1271
  %1273 = fcmp olt float %1272, %.19251278
  br i1 %1273, label %1274, label %1276

1274:                                             ; preds = %1269
  %1275 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1272)
  %.pre1230 = load float, ptr %101, align 4, !tbaa !93
  br label %1285

1276:                                             ; preds = %1269
  %1277 = load float, ptr %101, align 4, !tbaa !93
  %1278 = fneg float %1277
  %1279 = call float @llvm.fmuladd.f32(float %1278, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1280 = fsub float %1270, %1279
  %1281 = fcmp ult float %1280, %.19251278
  br i1 %1281, label %1285, label %1282

1282:                                             ; preds = %1276
  %1283 = fsub float %1270, %.sroa.11.0.copyload
  %1284 = call float @llvm.fmuladd.f32(float %1277, float 2.000000e+00, float %1283)
  br label %1285

1285:                                             ; preds = %1276, %1282, %1274
  %1286 = phi float [ %.pre1230, %1274 ], [ %1277, %1282 ], [ %1277, %1276 ]
  %.2926 = phi float [ %1275, %1274 ], [ %1284, %1282 ], [ %.19251278, %1276 ]
  %1287 = getelementptr inbounds i8, ptr %30, i64 4
  %1288 = load float, ptr %1287, align 4, !tbaa !191
  %1289 = call float @llvm.fmuladd.f32(float %1286, float 2.000000e+00, float %1288)
  %1290 = fsub float %1289, %.sroa.11.0.copyload
  %1291 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1290, float noundef 0.000000e+00)
  %1292 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2926, float noundef 0.000000e+00, float noundef %1291)
  %1293 = getelementptr inbounds i8, ptr %.2912, i64 136
  %1294 = load float, ptr %1293, align 4, !tbaa !112
  %1295 = fsub float %1294, %1292
  %1296 = getelementptr inbounds i8, ptr %29, i64 4
  %1297 = load float, ptr %1296, align 4, !tbaa !191
  %1298 = fadd float %1297, %1295
  store float %1298, ptr %1296, align 4, !tbaa !191
  store float %1292, ptr %1293, align 4, !tbaa !112
  br label %1299

1299:                                             ; preds = %1285, %1268
  store i8 0, ptr %1241, align 4, !tbaa !151
  br label %1300

1300:                                             ; preds = %1299, %1240, %1239
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %1301 = getelementptr inbounds i8, ptr %.09151252, i64 80
  %1302 = load float, ptr %1301, align 8, !tbaa !121
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1302, float noundef 0.000000e+00)
  br i1 %1185, label %1303, label %1372

1303:                                             ; preds = %1300
  %1304 = getelementptr inbounds i8, ptr %.09151252, i64 88
  %1305 = load i32, ptr %1304, align 4, !tbaa !149
  %1306 = getelementptr inbounds i8, ptr %.09151252, i64 92
  %1307 = load i32, ptr %1306, align 4, !tbaa !150
  %1308 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1305, i32 noundef %1307)
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds i16, ptr %1178, i64 %1309
  %1311 = load i32, ptr %1304, align 4, !tbaa !149
  %1312 = load i32, ptr %1306, align 4, !tbaa !150
  %1313 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1311, i32 noundef %1312)
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds i16, ptr %1178, i64 %1314
  %1316 = select i1 %1165, float 1.000000e+00, float 0x3FE3333340000000
  %1317 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1316)
  %1318 = select i1 %68, float 0.000000e+00, float -1.000000e+00
  %1319 = 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
  %1320 = 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> %1320, ptr %37, align 8
  %1321 = 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> %1321, 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 %1310, ptr %38, align 8, !tbaa !40
  %1322 = getelementptr inbounds i8, ptr %36, i64 4
  %1323 = icmp slt i32 %1308, %1313
  br i1 %1323, label %.lr.ph1222, label %._crit_edge1223

.lr.ph1222:                                       ; preds = %1303
  %1324 = extractelement <2 x float> %1321, i64 1
  %1325 = getelementptr inbounds i8, ptr %28, i64 12
  %1326 = getelementptr inbounds i8, ptr %28, i64 4
  %1327 = getelementptr inbounds i8, ptr %77, i64 15360
  %1328 = getelementptr inbounds i8, ptr %.2912, i64 664
  %1329 = getelementptr inbounds i8, ptr %39, i64 8
  %.pre1231 = load float, ptr %1221, align 8, !tbaa !41
  br label %1330

1330:                                             ; preds = %.lr.ph1222, %.loopexit
  %1331 = phi ptr [ %1310, %.lr.ph1222 ], [ %1364, %.loopexit ]
  %1332 = phi float [ %1324, %.lr.ph1222 ], [ %1370, %.loopexit ]
  %1333 = phi float [ %.pre1231, %.lr.ph1222 ], [ %1366, %.loopexit ]
  %1334 = load float, ptr %1325, align 4, !tbaa !192
  %1335 = fadd float %1334, %1333
  %1336 = fcmp ogt float %1332, %1335
  br i1 %1336, label %._crit_edge1223.loopexit, label %1337

1337:                                             ; preds = %1330
  %1338 = load float, ptr %1326, align 4, !tbaa !193
  %1339 = fcmp olt float %1332, %1338
  br i1 %1339, label %.preheader, label %1346

.preheader:                                       ; preds = %1337, %1342
  %1340 = phi ptr [ %1343, %1342 ], [ %1331, %1337 ]
  %1341 = icmp ult ptr %1340, %1315
  br i1 %1341, label %1342, label %.loopexit

1342:                                             ; preds = %.preheader
  %1343 = getelementptr inbounds i8, ptr %1340, i64 2
  store ptr %1343, ptr %38, align 8, !tbaa !40
  %1344 = load i16, ptr %1340, align 2, !tbaa !146
  %1345 = icmp eq i16 %1344, 10
  br i1 %1345, label %.loopexit, label %.preheader, !llvm.loop !194

1346:                                             ; preds = %1337
  %1347 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %77, ptr noundef %1331, ptr noundef nonnull %1315, ptr noundef nonnull %38, ptr noundef null, i1 noundef zeroext true)
  %.sroa.029.0.vec.extract = extractelement <2 x float> %1347, i64 0
  %1348 = fcmp ugt float %.sroa.029.0.vec.extract, 0.000000e+00
  br i1 %1348, label %1355, label %1349

1349:                                             ; preds = %1346
  %1350 = load ptr, ptr %1327, align 8, !tbaa !128
  %1351 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %1350, i16 noundef zeroext 32)
  %1352 = fmul float %1351, 5.000000e-01
  %1353 = fptosi float %1352 to i32
  %1354 = sitofp i32 %1353 to float
  br label %1355

1355:                                             ; preds = %1349, %1346
  %.sroa.029.0.vec.extract32.pre-phi = phi float [ %1354, %1349 ], [ %.sroa.029.0.vec.extract, %1346 ]
  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
  %1356 = load float, ptr %1221, align 8, !tbaa !41
  %1357 = fsub float %1318, %1356
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef %1357)
  %1358 = 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> %1358, 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 %1319)
  %1359 = 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> %1359, 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)
  %1360 = 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 %1360, label %1361, label %1363

1361:                                             ; preds = %1355
  %1362 = load ptr, ptr %1328, align 8, !tbaa !195
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1362, ptr noundef nonnull align 4 dereferenceable(8) %39, ptr noundef nonnull align 4 dereferenceable(8) %1329, i32 noundef %1317, float noundef 0.000000e+00, i32 noundef 0)
  br label %1363

1363:                                             ; preds = %1361, %1355
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #14
  %.pre1232 = load float, ptr %1221, align 8, !tbaa !41
  %.pre1233 = load float, ptr %1322, align 4, !tbaa !191
  %.pre1234 = load ptr, ptr %38, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1342, %1363
  %1364 = phi ptr [ %.pre1234, %1363 ], [ %1340, %.preheader ], [ %1343, %1342 ]
  %1365 = phi float [ %.pre1233, %1363 ], [ %1332, %1342 ], [ %1332, %.preheader ]
  %1366 = phi float [ %.pre1232, %1363 ], [ %1333, %1342 ], [ %1333, %.preheader ]
  %1367 = load float, ptr %29, align 8, !tbaa !190
  %1368 = load float, ptr %35, align 4, !tbaa !190
  %1369 = fsub float %1367, %1368
  store float %1369, ptr %36, align 8, !tbaa !190
  %1370 = fadd float %1366, %1365
  store float %1370, ptr %1322, align 4, !tbaa !191
  %1371 = icmp ult ptr %1364, %1315
  br i1 %1371, label %1330, label %._crit_edge1223.loopexit, !llvm.loop !196

._crit_edge1223.loopexit:                         ; preds = %1330, %.loopexit
  %.pre1235.pre.pre = load ptr, ptr %31, align 8, !tbaa !40
  br label %._crit_edge1223

._crit_edge1223:                                  ; preds = %._crit_edge1223.loopexit, %1303
  %.pre1235.pre = phi ptr [ %.pre1235.pre.pre, %._crit_edge1223.loopexit ], [ %.pre12351237, %1303 ]
  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 %1372

1372:                                             ; preds = %._crit_edge1223, %1300
  %.pre1235 = phi ptr [ %.pre1235.pre, %._crit_edge1223 ], [ %.pre12351237, %1300 ]
  br i1 %68, label %1378, label %1373

1373:                                             ; preds = %1372
  %1374 = ptrtoint ptr %.pre1235 to i64
  %1375 = ptrtoint ptr %.0950 to i64
  %1376 = sub i64 %1374, %1375
  %1377 = icmp slt i64 %1376, 2097152
  br i1 %1377, label %1378, label %1387

1378:                                             ; preds = %1373, %1372
  %. = phi ptr [ %28, %1373 ], [ null, %1372 ]
  %1379 = zext i1 %386 to i32
  %1380 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1379, float noundef 1.000000e+00)
  %1381 = getelementptr inbounds i8, ptr %.2912, i64 664
  %1382 = load ptr, ptr %1381, align 8, !tbaa !195
  %1383 = getelementptr inbounds i8, ptr %77, i64 15360
  %1384 = load ptr, ptr %1383, align 8, !tbaa !128
  %1385 = load float, ptr %1221, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #14
  %1386 = 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> %1386, ptr %46, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1382, ptr noundef %1384, float noundef %1385, ptr noundef nonnull align 4 dereferenceable(8) %46, i32 noundef %1380, ptr noundef %.0950, ptr noundef %.pre1235, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #14
  br label %1387

1387:                                             ; preds = %1378, %1373
  br i1 %1165, label %1388, label %1429

1388:                                             ; preds = %1387
  %1389 = getelementptr inbounds i8, ptr %77, i64 24
  %1390 = load float, ptr %1389, align 8, !tbaa !197
  %1391 = getelementptr inbounds i8, ptr %.09151252, i64 3712
  %1392 = load float, ptr %1391, align 8, !tbaa !198
  %1393 = fadd float %1390, %1392
  store float %1393, ptr %1391, align 8, !tbaa !198
  %1394 = getelementptr inbounds i8, ptr %77, i64 123
  %1395 = load i8, ptr %1394, align 1, !tbaa !199, !range !38, !noundef !39
  %1396 = trunc nuw i8 %1395 to i1
  %1397 = fcmp ugt float %1393, 0.000000e+00
  %or.cond1146 = select i1 %1396, i1 %1397, i1 false
  br i1 %or.cond1146, label %1398, label %1401

1398:                                             ; preds = %1388
  %1399 = call float @fmodf(float noundef %1393, float noundef 0x3FF3333340000000) #14
  %1400 = fcmp ole float %1399, 0x3FE99999A0000000
  br label %1401

1401:                                             ; preds = %1398, %1388
  %1402 = phi i1 [ true, %1388 ], [ %1400, %1398 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  %1403 = 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> %1403, ptr %48, align 8
  %1404 = 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> %1404, ptr %47, align 8
  %1405 = 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> %1405, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1405, i64 1
  %1406 = load float, ptr %1221, align 8, !tbaa !41
  %1407 = fsub float %.sroa.0.4.vec.extract, %1406
  %1408 = fadd float %1407, 5.000000e-01
  %1409 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1410 = 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 %1408, float noundef %1409, float noundef %1410)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #14
  br i1 %1402, label %1411, label %.critedge13

1411:                                             ; preds = %1401
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1412 = 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 %1412, label %1413, label %1418

1413:                                             ; preds = %1411
  %1414 = getelementptr inbounds i8, ptr %.2912, i64 664
  %1415 = load ptr, ptr %1414, align 8, !tbaa !195
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #14
  %1416 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %49)
  store <2 x float> %1416, ptr %51, align 8
  %1417 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1415, ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef %1417, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #14
  br label %1418

.critedge13:                                      ; preds = %1401
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #14
  br label %1418

1418:                                             ; preds = %.critedge13, %1413, %1411
  br i1 %80, label %1428, label %1419

1419:                                             ; preds = %1418
  %1420 = getelementptr inbounds i8, ptr %77, i64 23456
  store i8 1, ptr %1420, align 8, !tbaa !200
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #14
  %1421 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1422 = load float, ptr %1221, align 8, !tbaa !41
  %1423 = fsub float %.sroa.0.4.vec.extract, %1422
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1421, float noundef %1423)
  %1424 = getelementptr inbounds i8, ptr %77, i64 23460
  %1425 = load i64, ptr %52, align 8
  store i64 %1425, ptr %1424, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #14
  %1426 = load float, ptr %1221, align 8, !tbaa !41
  %1427 = getelementptr inbounds i8, ptr %77, i64 23468
  store float %1426, ptr %1427, align 4, !tbaa !201
  br label %1428

1428:                                             ; preds = %1419, %1418
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #14
  br label %1429

1429:                                             ; preds = %1428, %1387
  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 %1465

1430:                                             ; preds = %1166
  br i1 %68, label %.critedge1148, label %1431

1431:                                             ; preds = %1430
  br i1 %386, label %1449, label %1432

1432:                                             ; preds = %1431
  %1433 = load i32, ptr %167, align 8, !tbaa !106
  %1434 = icmp eq i32 %1433, %90
  br i1 %1434, label %1435, label %1440

1435:                                             ; preds = %1432
  %1436 = getelementptr inbounds i8, ptr %.09151252, i64 16
  %1437 = load i32, ptr %1436, align 8, !tbaa !116
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds i8, ptr %.0950, i64 %1438
  store ptr %1439, ptr %31, align 8, !tbaa !40
  br label %1449

1440:                                             ; preds = %1432
  %1441 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0950) #15
  %1442 = getelementptr inbounds i8, ptr %.0950, i64 %1441
  store ptr %1442, ptr %31, align 8, !tbaa !40
  br label %1449

.critedge1148:                                    ; preds = %1430
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #14
  %1443 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0950, ptr noundef nonnull %31)
  %1444 = sitofp i32 %1443 to float
  %1445 = getelementptr inbounds i8, ptr %77, i64 15368
  %1446 = load float, ptr %1445, align 8, !tbaa !41
  %1447 = fmul float %1446, %1444
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %.sroa.0507.2, float noundef %1447)
  %1448 = load i64, ptr %53, align 8
  store i64 %1448, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #14
  br label %1455

1449:                                             ; preds = %1431, %1435, %1440
  %1450 = phi ptr [ %1164, %1431 ], [ %1439, %1435 ], [ %1442, %1440 ]
  %1451 = ptrtoint ptr %1450 to i64
  %1452 = ptrtoint ptr %.0950 to i64
  %1453 = sub i64 %1451, %1452
  %1454 = icmp slt i64 %1453, 2097152
  br i1 %1454, label %1455, label %1465

1455:                                             ; preds = %.critedge1148, %1449
  %.14 = phi ptr [ %28, %1449 ], [ null, %.critedge1148 ]
  %1456 = zext i1 %386 to i32
  %1457 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1456, float noundef 1.000000e+00)
  %1458 = getelementptr inbounds i8, ptr %.2912, i64 664
  %1459 = load ptr, ptr %1458, align 8, !tbaa !195
  %1460 = getelementptr inbounds i8, ptr %77, i64 15360
  %1461 = load ptr, ptr %1460, align 8, !tbaa !128
  %1462 = getelementptr inbounds i8, ptr %77, i64 15368
  %1463 = load float, ptr %1462, align 8, !tbaa !41
  %1464 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1459, ptr noundef %1461, float noundef %1463, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %1457, ptr noundef %.0950, ptr noundef %1464, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1465

1465:                                             ; preds = %1449, %1455, %1429
  br i1 %brmerge1060, label %1467, label %1466

1466:                                             ; preds = %1465
  call void @_ZN5ImGui7PopFontEv()
  br label %1467

1467:                                             ; preds = %1465, %1466
  br i1 %68, label %1468, label %1490

1468:                                             ; preds = %1467
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #14
  %1469 = load float, ptr %30, align 8, !tbaa !190
  %1470 = getelementptr inbounds i8, ptr %30, i64 4
  %1471 = load float, ptr %1470, align 4, !tbaa !191
  %1472 = load float, ptr %101, align 4, !tbaa !93
  %1473 = fadd float %1471, %1472
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1469, float noundef %1473)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %54)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #14
  %1474 = getelementptr inbounds i8, ptr %77, i64 18256
  %1475 = load i32, ptr %1474, align 8, !tbaa !202
  %1476 = or i32 %1475, 1025
  store i32 %1476, ptr %1474, align 8, !tbaa !202
  call void @_ZN5ImGui8EndChildEv()
  %1477 = getelementptr inbounds i8, ptr %77, i64 18284
  %1478 = getelementptr inbounds i8, ptr %77, i64 18292
  %1479 = load i32, ptr %1478, align 4, !tbaa !96
  %1480 = and i32 %1479, 128
  %1481 = getelementptr inbounds i8, ptr %15, i64 8
  %1482 = load i32, ptr %1481, align 4, !tbaa !203
  %1483 = or i32 %1482, %1480
  store i32 %1483, ptr %1481, align 4, !tbaa !203
  store i32 %1475, ptr %1474, align 8, !tbaa !202
  call void @_ZN5ImGui8EndGroupEv()
  %1484 = load i32, ptr %1477, align 4, !tbaa !204
  %1485 = icmp eq i32 %1484, 0
  br i1 %1485, label %1486, label %1490

1486:                                             ; preds = %1468
  store i32 %90, ptr %1477, align 4, !tbaa !204
  %1487 = getelementptr inbounds i8, ptr %15, i64 4
  %1488 = getelementptr inbounds i8, ptr %77, i64 18288
  %1489 = load <2 x i32>, ptr %1487, align 4, !tbaa !98
  store <2 x i32> %1489, ptr %1488, align 4, !tbaa !98
  br label %1490

1490:                                             ; preds = %1468, %1486, %1467
  %1491 = getelementptr inbounds i8, ptr %77, i64 23640
  %1492 = load i8, ptr %1491, align 8, !tbaa !205, !range !38, !noundef !39
  %1493 = trunc nuw i8 %1492 to i1
  %or.cond1154 = and i1 %brmerge1060, %1493
  br i1 %or.cond1154, label %1494, label %1496

1494:                                             ; preds = %1490
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1495 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %29, ptr noundef %.0950, ptr noundef %1495)
  br label %1496

1496:                                             ; preds = %1494, %1490
  br i1 %106, label %1497, label %1507

1497:                                             ; preds = %1496
  %1498 = getelementptr inbounds i8, ptr %11, i64 8
  %1499 = load float, ptr %1498, align 8, !tbaa !206
  %1500 = getelementptr inbounds i8, ptr %77, i64 14372
  %1501 = load float, ptr %1500, align 4, !tbaa !94
  %1502 = fadd float %1499, %1501
  %1503 = load float, ptr %1144, align 4, !tbaa !188
  %1504 = load float, ptr %101, align 4, !tbaa !93
  %1505 = fadd float %1503, %1504
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef %1502, float noundef %1505)
  %1506 = load <2 x float>, ptr %55, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1506, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1507

1507:                                             ; preds = %1497, %1496
  %1508 = and i32 %5, 134217728
  %.not1048 = icmp eq i32 %1508, 0
  %or.cond1151 = and i1 %.not1048, %.4937
  br i1 %or.cond1151, label %1509, label %1510

1509:                                             ; preds = %1507
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %90)
  br label %1510

1510:                                             ; preds = %1509, %1507
  %1511 = and i32 %5, 32
  %.not1049 = icmp eq i32 %1511, 0
  %1512 = trunc nuw i8 %.29491273 to i1
  %.2 = select i1 %.not1049, i1 %.4937, i1 %1512
  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, %1510
  %.3 = phi i1 [ %.2, %1510 ], [ 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 %1513

1513:                                             ; 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 @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef) local_unnamed_addr #10

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

declare noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv() local_unnamed_addr #4

; 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, !13, i64 99, !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 15368}
!42 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !43, i64 8, !45, i64 14288, !7, i64 15360, !12, i64 15368, !12, i64 15372, !46, i64 15376, !47, i64 15904, !10, i64 15912, !10, i64 15916, !10, i64 15920, !13, i64 15924, !13, i64 15925, !13, i64 15926, !13, i64 15927, !13, i64 15928, !7, i64 15936, !48, i64 15944, !48, i64 15960, !44, i64 15976, !10, i64 15980, !20, i64 15984, !20, i64 16000, !20, i64 16016, !49, i64 16032, !24, i64 16048, !10, i64 16064, !11, i64 16068, !7, i64 16080, !7, i64 16088, !7, i64 16096, !7, i64 16104, !7, i64 16112, !11, i64 16120, !10, i64 16128, !12, i64 16132, !11, i64 16136, !11, i64 16144, !10, i64 16152, !10, i64 16156, !10, i64 16160, !13, i64 16164, !13, i64 16165, !12, i64 16168, !12, i64 16172, !10, i64 16176, !10, i64 16180, !12, i64 16184, !13, i64 16188, !13, i64 16189, !13, i64 16190, !13, i64 16191, !13, i64 16192, !13, i64 16193, !11, i64 16196, !7, i64 16208, !50, i64 16216, !10, i64 16220, !10, i64 16224, !13, i64 16228, !13, i64 16229, !7, i64 16232, !10, i64 16240, !12, i64 16244, !8, i64 16248, !51, i64 17928, !10, i64 18240, !13, i64 18244, !10, i64 18248, !10, i64 18252, !10, i64 18256, !10, i64 18260, !53, i64 18264, !54, i64 18284, !55, i64 18344, !56, i64 18456, !57, i64 18472, !58, i64 18488, !15, i64 18504, !59, i64 18520, !60, i64 18536, !61, i64 18552, !61, i64 18568, !10, i64 18584, !62, i64 18592, !7, i64 18608, !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, !10, i64 18652, !10, i64 18656, !50, i64 18660, !18, i64 18664, !13, i64 18668, !13, i64 18669, !13, i64 18670, !13, i64 18671, !13, i64 18672, !13, i64 18673, !13, i64 18674, !10, i64 18676, !22, i64 18680, !13, i64 18696, !13, i64 18697, !13, i64 18698, !10, i64 18700, !10, i64 18704, !10, i64 18708, !10, i64 18712, !10, i64 18716, !10, i64 18720, !22, i64 18724, !22, i64 18740, !10, i64 18756, !10, i64 18760, !10, i64 18764, !63, i64 18768, !63, i64 18816, !63, i64 18864, !63, i64 18912, !10, i64 18960, !10, i64 18964, !7, i64 18968, !7, i64 18976, !7, i64 18984, !12, i64 18992, !12, i64 18996, !13, i64 19000, !11, i64 19004, !11, i64 19012, !12, i64 19020, !10, i64 19024, !13, i64 19028, !13, i64 19029, !13, i64 19030, !10, i64 19032, !10, i64 19036, !10, i64 19040, !64, i64 19048, !22, i64 19112, !10, i64 19128, !10, i64 19132, !12, i64 19136, !10, i64 19140, !10, i64 19144, !10, i64 19148, !10, i64 19152, !65, i64 19160, !8, i64 19176, !10, i64 19192, !66, i64 19200, !7, i64 19216, !10, i64 19224, !67, i64 19232, !68, i64 19248, !21, i64 19288, !37, i64 19304, !7, i64 19320, !70, i64 19328, !72, i64 19368, !73, i64 19384, !10, i64 19400, !10, i64 19404, !12, i64 19408, !12, i64 19412, !11, i64 19416, !74, i64 19424, !78, i64 23152, !79, i64 23176, !10, i64 23296, !10, i64 23300, !10, i64 23304, !10, i64 23308, !12, i64 23312, !12, i64 23316, !10, i64 23320, !35, i64 23324, !81, i64 23340, !12, i64 23388, !12, i64 23392, !13, i64 23396, !13, i64 23397, !12, i64 23400, !12, i64 23404, !12, i64 23408, !12, i64 23412, !14, i64 23416, !14, i64 23418, !75, i64 23424, !15, i64 23440, !82, i64 23456, !82, i64 23472, !8, i64 23488, !13, i64 23489, !12, i64 23492, !83, i64 23496, !84, i64 23512, !85, i64 23528, !86, i64 23544, !87, i64 23560, !10, i64 23576, !8, i64 23584, !13, i64 23640, !88, i64 23644, !7, i64 23648, !83, i64 23656, !7, i64 23672, !7, i64 23680, !12, i64 23688, !13, i64 23692, !10, i64 23696, !10, i64 23700, !10, i64 23704, !10, i64 23708, !83, i64 23712, !89, i64 23728, !8, i64 23752, !8, i64 23753, !8, i64 23754, !13, i64 23755, !8, i64 23756, !10, i64 23760, !90, i64 23764, !91, i64 23784, !8, i64 23824, !10, i64 24064, !10, i64 24068, !12, i64 24072, !10, i64 24076, !10, i64 24080, !10, i64 24084, !75, i64 24088}
!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, !44, i64 3608, !13, i64 3612, !13, i64 3613, !13, i64 3614, !13, i64 3615, !10, i64 3616, !8, i64 3620, !13, i64 14052, !11, i64 14056, !8, i64 14064, !8, i64 14104, !8, i64 14144, !8, i64 14149, !8, i64 14154, !8, i64 14164, !8, i64 14174, !8, i64 14179, !8, i64 14184, !13, i64 14189, !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 = !{!"_ZTS16ImGuiMouseSource", !8, i64 0}
!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 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !7, i64 8}
!49 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!50 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!51 = !{!"_ZTS20ImGuiKeyRoutingTable", !8, i64 0, !52, i64 280, !52, i64 296}
!52 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!53 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !10, i64 8, !10, i64 12, !13, i64 16}
!54 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !22, i64 12, !22, i64 28, !22, i64 44}
!55 = !{!"_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}
!56 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!57 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!58 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!59 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!61 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!62 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!63 = !{!"_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}
!64 = !{!"_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}
!65 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!67 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!68 = !{!"_ZTS6ImPoolI10ImGuiTableE", !69, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!69 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !71, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!71 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!73 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!74 = !{!"_ZTS19ImGuiInputTextState", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !29, i64 24, !75, i64 40, !75, i64 56, !13, i64 72, !10, i64 76, !12, i64 80, !76, i64 84, !12, i64 3712, !13, i64 3716, !13, i64 3717, !13, i64 3718, !10, i64 3720}
!75 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!76 = !{!"_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, !77, i64 32}
!77 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!78 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !75, i64 8}
!79 = !{!"_ZTS6ImFont", !21, i64 0, !12, i64 16, !12, i64 20, !29, i64 24, !80, 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}
!80 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!81 = !{!"_ZTS21ImGuiComboPreviewData", !22, i64 0, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !10, i64 44}
!82 = !{!"_ZTS20ImGuiPlatformImeData", !13, i64 0, !11, i64 4, !12, i64 12}
!83 = !{!"_ZTS15ImGuiTextBuffer", !75, i64 0}
!84 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!85 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !75, i64 0}
!86 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !75, i64 0}
!87 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!88 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!89 = !{!"_ZTS14ImGuiTextIndex", !59, i64 0, !10, i64 16}
!90 = !{!"_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}
!91 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !92, i64 16, !13, i64 32, !12, i64 36}
!92 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!93 = !{!45, !12, i64 64}
!94 = !{!45, !12, i64 84}
!95 = !{!12, !12, i64 0}
!96 = !{!42, !10, i64 18292}
!97 = !{i64 0, i64 4, !98, i64 4, i64 4, !98, i64 8, i64 4, !98, i64 12, i64 4, !95, i64 16, i64 4, !95, i64 20, i64 4, !95, i64 24, i64 4, !95, i64 28, i64 4, !95, i64 32, i64 4, !95, i64 36, i64 4, !95, i64 40, i64 4, !95, i64 44, i64 4, !95, i64 48, i64 4, !95, i64 52, i64 4, !95, i64 56, i64 4, !95}
!98 = !{!10, !10, i64 0}
!99 = !{!45, !12, i64 68}
!100 = !{!45, !12, i64 72}
!101 = !{!42, !7, i64 16080}
!102 = !{!6, !18, i64 344}
!103 = !{!6, !14, i64 350}
!104 = !{!6, !12, i64 172}
!105 = !{!42, !10, i64 19024}
!106 = !{!42, !10, i64 16176}
!107 = !{!42, !10, i64 18624}
!108 = !{!42, !10, i64 18636}
!109 = !{!42, !50, i64 18660}
!110 = !{!13, !13, i64 0}
!111 = !{!42, !10, i64 16224}
!112 = !{!6, !12, i64 136}
!113 = !{!74, !8, i64 107}
!114 = !{!74, !10, i64 8}
!115 = !{!74, !7, i64 64}
!116 = !{!74, !10, i64 16}
!117 = !{!74, !13, i64 72}
!118 = !{!74, !7, i64 48}
!119 = !{!74, !7, i64 32}
!120 = !{!74, !10, i64 12}
!121 = !{!74, !12, i64 80}
!122 = !{!43, !13, i64 3612}
!123 = !{!74, !8, i64 96}
!124 = !{!43, !13, i64 113}
!125 = !{!42, !10, i64 18240}
!126 = !{!74, !10, i64 24}
!127 = !{!8, !8, i64 0}
!128 = !{!42, !7, i64 15360}
!129 = !{!79, !12, i64 20}
!130 = !{!79, !12, i64 108}
!131 = !{!79, !7, i64 64}
!132 = !{!79, !7, i64 56}
!133 = !{!134, !12, i64 4}
!134 = !{!"_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}
!135 = !{!79, !12, i64 16}
!136 = !{!74, !13, i64 3718}
!137 = !{!74, !10, i64 76}
!138 = !{!74, !10, i64 3720}
!139 = !{!42, !13, i64 16189}
!140 = !{!43, !12, i64 3584}
!141 = !{!22, !12, i64 0}
!142 = !{!45, !12, i64 60}
!143 = !{!43, !12, i64 3588}
!144 = !{!6, !12, i64 260}
!145 = !{!74, !13, i64 3717}
!146 = !{!14, !14, i64 0}
!147 = !{!43, !13, i64 3613}
!148 = !{!74, !10, i64 84}
!149 = !{!74, !10, i64 88}
!150 = !{!74, !10, i64 92}
!151 = !{!74, !13, i64 3716}
!152 = !{!43, !12, i64 240}
!153 = !{!43, !12, i64 244}
!154 = !{!43, !13, i64 3614}
!155 = !{!43, !13, i64 3615}
!156 = !{!43, !10, i64 14264}
!157 = distinct !{!157, !158}
!158 = !{!"llvm.loop.mustprogress"}
!159 = !{!42, !13, i64 16188}
!160 = !{!74, !10, i64 100}
!161 = !{!43, !10, i64 0}
!162 = !{!43, !10, i64 4}
!163 = !{!43, !13, i64 116}
!164 = !{!43, !7, i64 176}
!165 = distinct !{!165, !158}
!166 = !{!74, !10, i64 56}
!167 = !{!29, !7, i64 8}
!168 = !{!29, !10, i64 0}
!169 = !{!74, !10, i64 40}
!170 = !{!171, !7, i64 0}
!171 = !{!"_ZTS26ImGuiInputTextCallbackData", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !14, i64 24, !172, i64 28, !7, i64 32, !10, i64 40, !10, i64 44, !13, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!172 = !{!"_ZTS8ImGuiKey", !8, i64 0}
!173 = !{!171, !10, i64 8}
!174 = !{!171, !10, i64 12}
!175 = !{!171, !7, i64 16}
!176 = !{!171, !172, i64 28}
!177 = !{!171, !7, i64 32}
!178 = !{!171, !10, i64 40}
!179 = !{!171, !10, i64 44}
!180 = !{!171, !13, i64 48}
!181 = !{!171, !10, i64 52}
!182 = !{!171, !10, i64 56}
!183 = !{!171, !10, i64 60}
!184 = !{!42, !10, i64 23152}
!185 = !{!42, !7, i64 23168}
!186 = !{!42, !10, i64 23160}
!187 = !{!42, !10, i64 24084}
!188 = !{!22, !12, i64 4}
!189 = distinct !{!189, !158}
!190 = !{!11, !12, i64 0}
!191 = !{!11, !12, i64 4}
!192 = !{!35, !12, i64 12}
!193 = !{!35, !12, i64 4}
!194 = distinct !{!194, !158}
!195 = !{!6, !7, i64 664}
!196 = distinct !{!196, !158}
!197 = !{!43, !12, i64 16}
!198 = !{!74, !12, i64 3712}
!199 = !{!42, !13, i64 123}
!200 = !{!42, !13, i64 23456}
!201 = !{!42, !12, i64 23468}
!202 = !{!42, !10, i64 18256}
!203 = !{!54, !10, i64 8}
!204 = !{!42, !10, i64 18284}
!205 = !{!42, !13, i64 23640}
!206 = !{!22, !12, i64 8}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass