; LLVM IR from syby119/CG-projects :: external/imgui (imgui_widgets)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiWindow = type <{ ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, 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, [2 x i8], 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, [2 x i32], [2 x %struct.ImRect], i32, i32, i8, [7 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, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, i32, i16, i16, i32, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.0, ptr, ptr, i32, 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, [6 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, [7 x i8], ptr, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.11, %struct.ImGuiStorage, i32, %struct.ImVec2, [4 x i8], ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i32, i32, i8, i8, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i64, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, [2 x i8], ptr, i32, float, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, [4 x i8], %struct.ImGuiNextWindowData, %struct.ImVector.12, %struct.ImVector.13, %struct.ImVector.14, %struct.ImVector, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector.17, %struct.ImVector.17, %struct.ImVector.18, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, ptr, ptr, ptr, float, float, i8, [7 x i8], ptr, ptr, i32, i32, i8, [3 x i8], float, i32, i8, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, [4 x i8], %struct.ImVector.19, [16 x i8], ptr, i32, [4 x i8], %struct.ImPool, %struct.ImVector.21, %struct.ImVector.1, %struct.ImVector.10, ptr, %struct.ImPool.22, %struct.ImVector.24, %struct.ImVector.25, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, float, i8, i8, [2 x i8], float, float, float, float, i16, i16, float, [4 x i8], %struct.ImVector.26, %struct.ImVector, %struct.ImVec2, %struct.ImVec2, i8, i8, [2 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.28, %struct.ImChunkStream, %struct.ImChunkStream.29, %struct.ImVector.30, i32, i8, [3 x i8], i32, [4 x i8], ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, %struct.ImGuiMetricsConfig, [4 x i8], %struct.ImGuiStackTool, [120 x float], i32, i32, float, i32, i32, i32, [3073 x i8], [7 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [22 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [512 x i8], [20 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, i8, i32, i32, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [20 x float], [20 x float], float, i8, i16, %struct.ImVector.5 }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [53 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%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.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%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.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.19 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.20, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImPool.22 = type { %struct.ImVector.23, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { i32, i32, i32, %struct.ImVector.5, %struct.ImVector.26, %struct.ImVector.26, i8, i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i32, ptr, ptr }
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.1, float, float, %struct.ImVector.5, %struct.ImVector.27, ptr, ptr, ptr, i16, i16, i16, i16, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.26 }
%struct.ImChunkStream.29 = type { %struct.ImVector.26 }
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.26 }
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.31 }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImFontGlyph = type { i32, float, float, float, float, float, float, float, float, float }

@GImGui = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.61 = 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.62 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.76 = 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

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

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

declare <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) #5

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

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

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

; 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

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) #5

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #5

declare void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) #5

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

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) #5

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() #5

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

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

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(921), ptr noundef, ptr noundef) #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) #10 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) #5

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

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

; 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 @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #5

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

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) #5

; 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

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

declare void @_ZN5ImGui10BeginGroupEv() #5

declare void @_ZN5ImGui8EndGroupEv() #5

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

; 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) #10 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.ImVec2, align 4
  %42 = alloca i8, align 1
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca i8, align 1
  %45 = alloca ptr, align 8
  %46 = alloca i8, align 1
  %47 = alloca i8, align 1
  %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 float, align 4
  %54 = alloca i8, align 1
  %55 = alloca i8, align 1
  %56 = alloca i8, align 1
  %57 = alloca i32, align 4
  %58 = alloca ptr, align 8
  %59 = alloca i8, align 1
  %60 = alloca i8, align 1
  %61 = alloca i8, align 1
  %62 = alloca i8, align 1
  %63 = alloca i8, align 1
  %64 = alloca ptr, align 8
  %65 = alloca i8, align 1
  %66 = alloca i8, align 1
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca i32, align 4
  %70 = alloca float, align 4
  %71 = alloca float, align 4
  %72 = alloca i8, align 1
  %73 = alloca i8, align 1
  %74 = alloca i16, align 2
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i8, align 1
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i8, align 1
  %82 = alloca i8, align 1
  %83 = alloca i8, align 1
  %84 = alloca i8, align 1
  %85 = alloca i8, align 1
  %86 = alloca i8, align 1
  %87 = alloca i8, align 1
  %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 i32, align 4
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca ptr, align 8
  %102 = alloca ptr, align 8
  %103 = alloca i32, align 4
  %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 %struct.ImVector.5, align 8
  %111 = alloca ptr, align 8
  %112 = alloca i32, align 4
  %113 = alloca i8, align 1
  %114 = alloca i32, align 4
  %115 = alloca i32, align 4
  %116 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %117 = alloca ptr, align 8
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca i8, align 1
  %122 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %123 = alloca %struct.ImVec2, align 4
  %124 = alloca %struct.ImVec2, align 4
  %125 = alloca %struct.ImVec4, align 4
  %126 = alloca %struct.ImVec2, align 4
  %127 = alloca %struct.ImVec2, align 4
  %128 = alloca i32, align 4
  %129 = alloca ptr, align 8
  %130 = alloca ptr, align 8
  %131 = alloca ptr, align 8
  %132 = alloca %struct.ImVec2, align 4
  %133 = alloca %struct.ImVec2, align 4
  %134 = alloca [2 x ptr], align 16
  %135 = alloca [2 x i32], align 4
  %136 = alloca i32, align 4
  %137 = alloca i32, align 4
  %138 = alloca ptr, align 8
  %139 = alloca %struct.ImVec2, align 4
  %140 = alloca %struct.ImVec2, align 4
  %141 = alloca %struct.ImVec2, align 4
  %142 = alloca float, align 4
  %143 = alloca float, align 4
  %144 = alloca float, align 4
  %145 = alloca %struct.ImVec2, align 4
  %146 = alloca ptr, align 8
  %147 = alloca ptr, align 8
  %148 = alloca i32, align 4
  %149 = alloca float, align 4
  %150 = alloca float, align 4
  %151 = alloca %struct.ImVec2, align 4
  %152 = alloca %struct.ImVec2, align 4
  %153 = alloca ptr, align 8
  %154 = alloca %struct.ImVec2, align 4
  %155 = alloca %struct.ImRect, align 4
  %156 = alloca %struct.ImVec2, align 4
  %157 = alloca %struct.ImVec2, align 4
  %158 = alloca %struct.ImVec2, align 4
  %159 = alloca %struct.ImVec2, align 4
  %160 = alloca %struct.ImRect, align 4
  %161 = alloca %struct.ImRect, align 4
  %162 = alloca i32, align 4
  %163 = alloca %struct.ImVec2, align 4
  %164 = alloca i8, align 1
  %165 = alloca %struct.ImVec2, align 4
  %166 = alloca %struct.ImVec2, align 4
  %167 = alloca %struct.ImVec2, align 4
  %168 = alloca %struct.ImRect, align 4
  %169 = alloca %struct.ImRect, align 4
  %170 = alloca %struct.ImVec2, align 4
  %171 = alloca %struct.ImVec2, align 4
  %172 = alloca %struct.ImVec2, align 4
  %173 = alloca i32, align 4
  %174 = alloca %struct.ImVec2, align 4
  %175 = 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
  %176 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %176, ptr %18, align 8, !tbaa !5
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.ImGuiWindow, ptr %177, i32 0, i32 28
  %179 = load i8, ptr %178, align 1, !tbaa !11, !range !40, !noundef !41
  %180 = trunc i8 %179 to i1
  br i1 %180, label %181, label %182

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

182:                                              ; preds = %8
  %183 = load ptr, ptr %12, align 8, !tbaa !5
  %184 = icmp ne ptr %183, null
  br i1 %184, label %185, label %188

185:                                              ; preds = %182
  %186 = load i32, ptr %13, align 4, !tbaa !9
  %187 = icmp sge i32 %186, 0
  br label %188

188:                                              ; preds = %185, %182
  %189 = phi i1 [ false, %182 ], [ %187, %185 ]
  br i1 %189, label %190, label %191

190:                                              ; preds = %188
  br label %193

191:                                              ; preds = %188
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.2, i32 noundef 3950, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

192:                                              ; No predecessors!
  br label %193

193:                                              ; preds = %192, %190
  %194 = load i32, ptr %15, align 4, !tbaa !9
  %195 = and i32 %194, 128
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %197, label %201

197:                                              ; preds = %193
  %198 = load i32, ptr %15, align 4, !tbaa !9
  %199 = and i32 %198, 67108864
  %200 = icmp ne i32 %199, 0
  br label %201

201:                                              ; preds = %197, %193
  %202 = phi i1 [ false, %193 ], [ %200, %197 ]
  %203 = xor i1 %202, true
  br i1 %203, label %204, label %205

204:                                              ; preds = %201
  br label %207

205:                                              ; preds = %201
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.2, i32 noundef 3951, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

206:                                              ; No predecessors!
  br label %207

207:                                              ; preds = %206, %204
  %208 = load i32, ptr %15, align 4, !tbaa !9
  %209 = and i32 %208, 64
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %211, label %215

211:                                              ; preds = %207
  %212 = load i32, ptr %15, align 4, !tbaa !9
  %213 = and i32 %212, 1024
  %214 = icmp ne i32 %213, 0
  br label %215

215:                                              ; preds = %211, %207
  %216 = phi i1 [ false, %207 ], [ %214, %211 ]
  %217 = xor i1 %216, true
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  br label %221

219:                                              ; preds = %215
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.2, i32 noundef 3952, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

220:                                              ; No predecessors!
  br label %221

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

249:                                              ; preds = %221
  %250 = load ptr, ptr %16, align 8, !tbaa !5
  %251 = icmp ne ptr %250, null
  br i1 %251, label %252, label %253

252:                                              ; preds = %249
  br label %255

253:                                              ; preds = %249
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.2, i32 noundef 3965, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

254:                                              ; No predecessors!
  br label %255

255:                                              ; preds = %254, %252
  br label %256

256:                                              ; preds = %255, %221
  %257 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %258 = trunc i8 %257 to i1
  br i1 %258, label %259, label %260

259:                                              ; preds = %256
  call void @_ZN5ImGui10BeginGroupEv()
  br label %260

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

270:                                              ; preds = %260
  %271 = load ptr, ptr %20, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.ImGuiContext, ptr %271, i32 0, i32 6
  %273 = load float, ptr %272, align 8, !tbaa !45
  %274 = fmul float %273, 8.000000e+00
  br label %278

275:                                              ; preds = %260
  %276 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 1
  %277 = load float, ptr %276, align 4, !tbaa !90
  br label %278

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

292:                                              ; preds = %278
  %293 = load ptr, ptr %22, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.ImGuiStyle, ptr %293, i32 0, i32 16
  %295 = getelementptr inbounds %struct.ImVec2, ptr %294, i32 0, i32 0
  %296 = load float, ptr %295, align 4, !tbaa !93
  %297 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %298 = load float, ptr %297, align 4, !tbaa !92
  %299 = fadd float %296, %298
  br label %301

300:                                              ; preds = %278
  br label %301

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

319:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #14
  %320 = load ptr, ptr %18, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.ImGuiWindow, ptr %320, i32 0, i32 54
  %322 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %321, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 8 %322, i64 8, i1 false), !tbaa.struct !43
  %323 = load ptr, ptr %22, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ImGuiStyle, ptr %323, i32 0, i32 12
  %325 = getelementptr inbounds %struct.ImVec2, ptr %324, i32 0, i32 1
  %326 = load float, ptr %325, align 4, !tbaa !91
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %326)
  %327 = load i32, ptr %29, align 4, !tbaa !9
  %328 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %327, ptr noundef %34, i32 noundef 256)
  br i1 %328, label %330, label %329

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

330:                                              ; preds = %319
  %331 = load ptr, ptr %20, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ImGuiContext, ptr %331, i32 0, i32 71
  %333 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %332, i32 0, i32 2
  %334 = load i32, ptr %333, align 8, !tbaa !94
  store i32 %334, ptr %40, align 4, !tbaa !9
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImGuiWindow, ptr %335, i32 0, i32 54
  %337 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %336, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %337, ptr align 4 %41, i64 8, i1 false), !tbaa.struct !43
  %338 = load ptr, ptr %22, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.ImGuiStyle, ptr %338, i32 0, i32 40
  %340 = getelementptr inbounds [53 x %struct.ImVec4], ptr %339, i64 0, i64 7
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %340)
  %341 = load ptr, ptr %22, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiStyle, ptr %341, i32 0, i32 13
  %343 = load float, ptr %342, align 4, !tbaa !95
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %343)
  %344 = load ptr, ptr %22, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.ImGuiStyle, ptr %344, i32 0, i32 14
  %346 = load float, ptr %345, align 4, !tbaa !96
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %346)
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #14
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  %348 = load i32, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #14
  %349 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %34)
  store <2 x float> %349, ptr %43, align 4
  %350 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %347, i32 noundef %348, ptr noundef nonnull align 4 dereferenceable(8) %43, i1 noundef zeroext true, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  %351 = zext i1 %350 to i8
  store i8 %351, ptr %42, align 1, !tbaa !42
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 2)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  %352 = load i8, ptr %42, align 1, !tbaa !42, !range !40, !noundef !41
  %353 = trunc i8 %352 to i1
  br i1 %353, label %355, label %354

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

355:                                              ; preds = %330
  %356 = load ptr, ptr %20, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImGuiContext, ptr %356, i32 0, i32 28
  %358 = load ptr, ptr %357, align 8, !tbaa !97
  store ptr %358, ptr %38, align 8, !tbaa !5
  %359 = load ptr, ptr %38, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.ImGuiWindow, ptr %359, i32 0, i32 54
  %361 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %360, i32 0, i32 12
  %362 = load i32, ptr %361, align 4, !tbaa !98
  %363 = shl i32 1, %362
  %364 = load ptr, ptr %38, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiWindow, ptr %364, i32 0, i32 54
  %366 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %365, i32 0, i32 14
  %367 = load i16, ptr %366, align 2, !tbaa !99
  %368 = sext i16 %367 to i32
  %369 = or i32 %368, %363
  %370 = trunc i32 %369 to i16
  store i16 %370, ptr %366, align 2, !tbaa !99
  %371 = load ptr, ptr %22, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.ImGuiStyle, ptr %371, i32 0, i32 12
  %373 = load ptr, ptr %38, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.ImGuiWindow, ptr %373, i32 0, i32 54
  %375 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %374, i32 0, i32 0
  %376 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %375, ptr noundef nonnull align 4 dereferenceable(8) %372)
  %377 = load ptr, ptr %38, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.ImGuiWindow, ptr %377, i32 0, i32 20
  %379 = getelementptr inbounds %struct.ImVec2, ptr %378, i32 0, i32 0
  %380 = load float, ptr %379, align 4, !tbaa !100
  %381 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %382 = load float, ptr %381, align 4, !tbaa !92
  %383 = fsub float %382, %380
  store float %383, ptr %381, align 4, !tbaa !92
  store i32 0, ptr %19, align 4
  br label %384

384:                                              ; preds = %355, %354
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #14
  br label %385

385:                                              ; preds = %384, %329
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #14
  %386 = load i32, ptr %19, align 4
  switch i32 %386, label %3291 [
    i32 0, label %387
  ]

387:                                              ; preds = %385
  br label %406

388:                                              ; preds = %301
  %389 = load ptr, ptr %22, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.ImGuiStyle, ptr %389, i32 0, i32 12
  %391 = getelementptr inbounds %struct.ImVec2, ptr %390, i32 0, i32 1
  %392 = load float, ptr %391, align 4, !tbaa !91
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %392)
  %393 = load i32, ptr %15, align 4, !tbaa !9
  %394 = and i32 %393, 268435456
  %395 = icmp ne i32 %394, 0
  br i1 %395, label %401, label %396

396:                                              ; preds = %388
  %397 = load i32, ptr %29, align 4, !tbaa !9
  %398 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %397, ptr noundef %34, i32 noundef 256)
  br i1 %398, label %400, label %399

399:                                              ; preds = %396
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3291

400:                                              ; preds = %396
  br label %401

401:                                              ; preds = %400, %388
  %402 = load ptr, ptr %20, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.ImGuiContext, ptr %402, i32 0, i32 71
  %404 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %403, i32 0, i32 2
  %405 = load i32, ptr %404, align 8, !tbaa !94
  store i32 %405, ptr %40, align 4, !tbaa !9
  br label %406

406:                                              ; preds = %401, %387
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #14
  %407 = load i32, ptr %29, align 4, !tbaa !9
  %408 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %407)
  %409 = zext i1 %408 to i8
  store i8 %409, ptr %44, align 1, !tbaa !42
  %410 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %411 = trunc i8 %410 to i1
  br i1 %411, label %412, label %415

412:                                              ; preds = %406
  %413 = load ptr, ptr %20, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.ImGuiContext, ptr %413, i32 0, i32 140
  store i32 1, ptr %414, align 8, !tbaa !101
  br label %415

415:                                              ; preds = %412, %406
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #14
  %416 = load i32, ptr %29, align 4, !tbaa !9
  %417 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %416)
  store ptr %417, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #14
  %418 = load i32, ptr %40, align 4, !tbaa !9
  %419 = and i32 %418, 256
  %420 = icmp ne i32 %419, 0
  %421 = zext i1 %420 to i8
  store i8 %421, ptr %46, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #14
  %422 = load ptr, ptr %20, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.ImGuiContext, ptr %422, i32 0, i32 44
  %424 = load i32, ptr %423, align 4, !tbaa !102
  %425 = load i32, ptr %29, align 4, !tbaa !9
  %426 = icmp ne i32 %424, %425
  br i1 %426, label %427, label %448

427:                                              ; preds = %415
  %428 = load ptr, ptr %20, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.ImGuiContext, ptr %428, i32 0, i32 89
  %430 = load i32, ptr %429, align 4, !tbaa !103
  %431 = load i32, ptr %29, align 4, !tbaa !9
  %432 = icmp eq i32 %430, %431
  br i1 %432, label %446, label %433

433:                                              ; preds = %427
  %434 = load ptr, ptr %20, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.ImGuiContext, ptr %434, i32 0, i32 86
  %436 = load i32, ptr %435, align 8, !tbaa !104
  %437 = load i32, ptr %29, align 4, !tbaa !9
  %438 = icmp eq i32 %436, %437
  br i1 %438, label %439, label %444

439:                                              ; preds = %433
  %440 = load ptr, ptr %20, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ImGuiContext, ptr %440, i32 0, i32 97
  %442 = load i32, ptr %441, align 4, !tbaa !105
  %443 = icmp eq i32 %442, 2
  br label %444

444:                                              ; preds = %439, %433
  %445 = phi i1 [ false, %433 ], [ %443, %439 ]
  br label %446

446:                                              ; preds = %444, %427
  %447 = phi i1 [ true, %427 ], [ %445, %444 ]
  br label %448

448:                                              ; preds = %446, %415
  %449 = phi i1 [ false, %415 ], [ %447, %446 ]
  %450 = zext i1 %449 to i8
  store i8 %450, ptr %47, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #14
  %451 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %452 = trunc i8 %451 to i1
  br i1 %452, label %453, label %459

453:                                              ; preds = %448
  %454 = load ptr, ptr %21, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.ImGuiIO, ptr %454, i32 0, i32 66
  %456 = getelementptr inbounds [5 x i8], ptr %455, i64 0, i64 0
  %457 = load i8, ptr %456, align 8, !tbaa !42, !range !40, !noundef !41
  %458 = trunc i8 %457 to i1
  br label %459

459:                                              ; preds = %453, %448
  %460 = phi i1 [ false, %448 ], [ %458, %453 ]
  %461 = zext i1 %460 to i8
  store i8 %461, ptr %48, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #14
  %462 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %463 = trunc i8 %462 to i1
  br i1 %463, label %464, label %479

464:                                              ; preds = %459
  %465 = load ptr, ptr %45, align 8, !tbaa !5
  %466 = icmp ne ptr %465, null
  br i1 %466, label %467, label %479

467:                                              ; preds = %464
  %468 = load ptr, ptr %20, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.ImGuiContext, ptr %468, i32 0, i32 44
  %470 = load i32, ptr %469, align 4, !tbaa !102
  %471 = icmp eq i32 %470, 0
  br i1 %471, label %472, label %479

472:                                              ; preds = %467
  %473 = load ptr, ptr %20, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.ImGuiContext, ptr %473, i32 0, i32 62
  %475 = load i32, ptr %474, align 8, !tbaa !106
  %476 = load ptr, ptr %38, align 8, !tbaa !5
  %477 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %476, i32 noundef 1)
  %478 = icmp eq i32 %475, %477
  br label %479

479:                                              ; preds = %472, %467, %464, %459
  %480 = phi i1 [ false, %467 ], [ false, %464 ], [ false, %459 ], [ %478, %472 ]
  %481 = zext i1 %480 to i8
  store i8 %481, ptr %49, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #14
  %482 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %483 = trunc i8 %482 to i1
  br i1 %483, label %484, label %494

484:                                              ; preds = %479
  %485 = load ptr, ptr %45, align 8, !tbaa !5
  %486 = icmp ne ptr %485, null
  br i1 %486, label %487, label %494

487:                                              ; preds = %484
  %488 = load ptr, ptr %20, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.ImGuiContext, ptr %488, i32 0, i32 44
  %490 = load i32, ptr %489, align 4, !tbaa !102
  %491 = load ptr, ptr %38, align 8, !tbaa !5
  %492 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %491, i32 noundef 1)
  %493 = icmp eq i32 %490, %492
  br label %494

494:                                              ; preds = %487, %484, %479
  %495 = phi i1 [ false, %484 ], [ false, %479 ], [ %493, %487 ]
  %496 = zext i1 %495 to i8
  store i8 %496, ptr %50, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #14
  store i8 0, ptr %51, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #14
  store i8 0, ptr %52, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #14
  %497 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %498 = trunc i8 %497 to i1
  br i1 %498, label %499, label %504

499:                                              ; preds = %494
  %500 = load ptr, ptr %38, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.ImGuiWindow, ptr %500, i32 0, i32 15
  %502 = getelementptr inbounds %struct.ImVec2, ptr %501, i32 0, i32 1
  %503 = load float, ptr %502, align 4, !tbaa !107
  br label %505

504:                                              ; preds = %494
  br label %505

505:                                              ; preds = %504, %499
  %506 = phi float [ %503, %499 ], [ 0x47EFFFFFE0000000, %504 ]
  store float %506, ptr %53, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #14
  %507 = load ptr, ptr %45, align 8, !tbaa !5
  %508 = icmp ne ptr %507, null
  br i1 %508, label %509, label %520

509:                                              ; preds = %505
  %510 = load ptr, ptr %45, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %510, i32 0, i32 9
  %512 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %511, i32 0, i32 8
  %513 = load i8, ptr %512, align 1, !tbaa !108
  %514 = zext i8 %513 to i32
  %515 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %516 = trunc i8 %515 to i1
  %517 = xor i1 %516, true
  %518 = zext i1 %517 to i32
  %519 = icmp ne i32 %514, %518
  br label %520

520:                                              ; preds = %509, %505
  %521 = phi i1 [ false, %505 ], [ %519, %509 ]
  %522 = zext i1 %521 to i8
  store i8 %522, ptr %54, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #14
  %523 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %524 = trunc i8 %523 to i1
  br i1 %524, label %534, label %525

525:                                              ; preds = %520
  %526 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %527 = trunc i8 %526 to i1
  br i1 %527, label %534, label %528

528:                                              ; preds = %525
  %529 = load i8, ptr %47, align 1, !tbaa !42, !range !40, !noundef !41
  %530 = trunc i8 %529 to i1
  br i1 %530, label %534, label %531

531:                                              ; preds = %528
  %532 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %533 = trunc i8 %532 to i1
  br label %534

534:                                              ; preds = %531, %528, %525, %520
  %535 = phi i1 [ true, %528 ], [ true, %525 ], [ true, %520 ], [ %533, %531 ]
  %536 = zext i1 %535 to i8
  store i8 %536, ptr %55, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #14
  %537 = load i8, ptr %55, align 1, !tbaa !42, !range !40, !noundef !41
  %538 = trunc i8 %537 to i1
  br i1 %538, label %542, label %539

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

542:                                              ; preds = %539, %534
  %543 = phi i1 [ true, %534 ], [ %541, %539 ]
  %544 = zext i1 %543 to i8
  store i8 %544, ptr %56, align 1, !tbaa !42
  %545 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %546 = trunc i8 %545 to i1
  br i1 %546, label %547, label %553

547:                                              ; preds = %542
  %548 = load ptr, ptr %20, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.ImGuiContext, ptr %548, i32 0, i32 44
  %550 = load i32, ptr %549, align 4, !tbaa !102
  %551 = load i32, ptr %29, align 4, !tbaa !9
  %552 = icmp ne i32 %550, %551
  br i1 %552, label %556, label %553

553:                                              ; preds = %547, %542
  %554 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %555 = trunc i8 %554 to i1
  br i1 %555, label %556, label %671

556:                                              ; preds = %553, %547
  %557 = load ptr, ptr %20, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.ImGuiContext, ptr %557, i32 0, i32 173
  store ptr %558, ptr %45, align 8, !tbaa !5
  %559 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %559)
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #14
  %560 = load ptr, ptr %12, align 8, !tbaa !5
  %561 = call i64 @strlen(ptr noundef %560) #16
  %562 = trunc i64 %561 to i32
  store i32 %562, ptr %57, align 4, !tbaa !9
  %563 = load ptr, ptr %45, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %563, i32 0, i32 5
  %565 = load i32, ptr %57, align 4, !tbaa !9
  %566 = add nsw i32 %565, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %564, i32 noundef %566)
  %567 = load ptr, ptr %45, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %567, i32 0, i32 5
  %569 = getelementptr inbounds %struct.ImVector.26, ptr %568, i32 0, i32 2
  %570 = load ptr, ptr %569, align 8, !tbaa !109
  %571 = load ptr, ptr %12, align 8, !tbaa !5
  %572 = load i32, ptr %57, align 4, !tbaa !9
  %573 = add nsw i32 %572, 1
  %574 = sext i32 %573 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %570, ptr align 1 %571, i64 %574, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #14
  store ptr null, ptr %58, align 8, !tbaa !5
  %575 = load ptr, ptr %45, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %575, i32 0, i32 3
  %577 = load i32, ptr %13, align 4, !tbaa !9
  %578 = add nsw i32 %577, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %576, i32 noundef %578)
  %579 = load ptr, ptr %45, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %579, i32 0, i32 4
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %580, i32 noundef 0)
  %581 = load ptr, ptr %45, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %581, i32 0, i32 6
  store i8 0, ptr %582, align 8, !tbaa !110
  %583 = load ptr, ptr %45, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %583, i32 0, i32 3
  %585 = getelementptr inbounds %struct.ImVector.5, ptr %584, i32 0, i32 2
  %586 = load ptr, ptr %585, align 8, !tbaa !111
  %587 = load i32, ptr %13, align 4, !tbaa !9
  %588 = load ptr, ptr %12, align 8, !tbaa !5
  %589 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %586, i32 noundef %587, ptr noundef %588, ptr noundef null, ptr noundef %58)
  %590 = load ptr, ptr %45, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %590, i32 0, i32 1
  store i32 %589, ptr %591, align 4, !tbaa !112
  %592 = load ptr, ptr %58, align 8, !tbaa !5
  %593 = load ptr, ptr %12, align 8, !tbaa !5
  %594 = ptrtoint ptr %592 to i64
  %595 = ptrtoint ptr %593 to i64
  %596 = sub i64 %594, %595
  %597 = trunc i64 %596 to i32
  %598 = load ptr, ptr %45, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %598, i32 0, i32 2
  store i32 %597, ptr %599, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #14
  %600 = load ptr, ptr %45, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %600, i32 0, i32 0
  %602 = load i32, ptr %601, align 8, !tbaa !114
  %603 = load i32, ptr %29, align 4, !tbaa !9
  %604 = icmp eq i32 %602, %603
  br i1 %604, label %605, label %609

605:                                              ; preds = %556
  %606 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %607 = trunc i8 %606 to i1
  %608 = xor i1 %607, true
  br label %609

609:                                              ; preds = %605, %556
  %610 = phi i1 [ false, %556 ], [ %608, %605 ]
  %611 = zext i1 %610 to i8
  store i8 %611, ptr %59, align 1, !tbaa !42
  %612 = load i8, ptr %59, align 1, !tbaa !42, !range !40, !noundef !41
  %613 = trunc i8 %612 to i1
  br i1 %613, label %614, label %616

614:                                              ; preds = %609
  %615 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3736) %615)
  br label %628

616:                                              ; preds = %609
  %617 = load i32, ptr %29, align 4, !tbaa !9
  %618 = load ptr, ptr %45, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %618, i32 0, i32 0
  store i32 %617, ptr %619, align 8, !tbaa !114
  %620 = load ptr, ptr %45, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %620, i32 0, i32 8
  store float 0.000000e+00, ptr %621, align 8, !tbaa !115
  %622 = load ptr, ptr %45, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %622, i32 0, i32 9
  %624 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %625 = trunc i8 %624 to i1
  %626 = xor i1 %625, true
  %627 = zext i1 %626 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %623, i32 noundef %627)
  br label %628

628:                                              ; preds = %616, %614
  %629 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %630 = trunc i8 %629 to i1
  br i1 %630, label %662, label %631

631:                                              ; preds = %628
  %632 = load i32, ptr %15, align 4, !tbaa !9
  %633 = and i32 %632, 16
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %635, label %636

635:                                              ; preds = %631
  store i8 1, ptr %52, align 1, !tbaa !42
  br label %636

636:                                              ; preds = %635, %631
  %637 = load i8, ptr %47, align 1, !tbaa !42, !range !40, !noundef !41
  %638 = trunc i8 %637 to i1
  br i1 %638, label %639, label %649

639:                                              ; preds = %636
  %640 = load i8, ptr %59, align 1, !tbaa !42, !range !40, !noundef !41
  %641 = trunc i8 %640 to i1
  br i1 %641, label %642, label %648

642:                                              ; preds = %639
  %643 = load ptr, ptr %20, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.ImGuiContext, ptr %643, i32 0, i32 90
  %645 = load i32, ptr %644, align 8, !tbaa !116
  %646 = and i32 %645, 4
  %647 = icmp ne i32 %646, 0
  br i1 %647, label %649, label %648

648:                                              ; preds = %642, %639
  store i8 1, ptr %52, align 1, !tbaa !42
  br label %649

649:                                              ; preds = %648, %642, %636
  %650 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %651 = trunc i8 %650 to i1
  br i1 %651, label %660, label %652

652:                                              ; preds = %649
  %653 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %654 = trunc i8 %653 to i1
  br i1 %654, label %655, label %661

655:                                              ; preds = %652
  %656 = load ptr, ptr %21, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.ImGuiIO, ptr %656, i32 0, i32 40
  %658 = load i8, ptr %657, align 8, !tbaa !117, !range !40, !noundef !41
  %659 = trunc i8 %658 to i1
  br i1 %659, label %660, label %661

660:                                              ; preds = %655, %649
  store i8 1, ptr %52, align 1, !tbaa !42
  br label %661

661:                                              ; preds = %660, %655, %652
  br label %662

662:                                              ; preds = %661, %628
  %663 = load i32, ptr %15, align 4, !tbaa !9
  %664 = and i32 %663, 8192
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %666, label %670

666:                                              ; preds = %662
  %667 = load ptr, ptr %45, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %667, i32 0, i32 9
  %669 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %668, i32 0, i32 3
  store i8 1, ptr %669, align 4, !tbaa !118
  br label %670

670:                                              ; preds = %666, %662
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #14
  br label %671

671:                                              ; preds = %670, %553
  %672 = load ptr, ptr %20, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.ImGuiContext, ptr %672, i32 0, i32 44
  %674 = load i32, ptr %673, align 4, !tbaa !102
  %675 = load i32, ptr %29, align 4, !tbaa !9
  %676 = icmp ne i32 %674, %675
  br i1 %676, label %677, label %741

677:                                              ; preds = %671
  %678 = load i8, ptr %55, align 1, !tbaa !42, !range !40, !noundef !41
  %679 = trunc i8 %678 to i1
  br i1 %679, label %680, label %741

680:                                              ; preds = %677
  %681 = load ptr, ptr %45, align 8, !tbaa !5
  %682 = icmp ne ptr %681, null
  br i1 %682, label %683, label %689

683:                                              ; preds = %680
  %684 = load ptr, ptr %45, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %684, i32 0, i32 0
  %686 = load i32, ptr %685, align 8, !tbaa !114
  %687 = load i32, ptr %29, align 4, !tbaa !9
  %688 = icmp eq i32 %686, %687
  br label %689

689:                                              ; preds = %683, %680
  %690 = phi i1 [ false, %680 ], [ %688, %683 ]
  br i1 %690, label %691, label %692

691:                                              ; preds = %689
  br label %694

692:                                              ; preds = %689
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.2, i32 noundef 4093, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

693:                                              ; No predecessors!
  br label %694

694:                                              ; preds = %693, %691
  %695 = load i32, ptr %29, align 4, !tbaa !9
  %696 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %695, ptr noundef %696)
  %697 = load i32, ptr %29, align 4, !tbaa !9
  %698 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %697, ptr noundef %698)
  %699 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %699)
  %700 = load ptr, ptr %20, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.ImGuiContext, ptr %700, i32 0, i32 55
  %702 = load i32, ptr %701, align 8, !tbaa !119
  %703 = or i32 %702, 3
  store i32 %703, ptr %701, align 8, !tbaa !119
  %704 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %705 = trunc i8 %704 to i1
  br i1 %705, label %710, label %706

706:                                              ; preds = %694
  %707 = load i32, ptr %15, align 4, !tbaa !9
  %708 = and i32 %707, 128
  %709 = icmp ne i32 %708, 0
  br i1 %709, label %710, label %715

710:                                              ; preds = %706, %694
  %711 = load ptr, ptr %20, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.ImGuiContext, ptr %711, i32 0, i32 55
  %713 = load i32, ptr %712, align 8, !tbaa !119
  %714 = or i32 %713, 12
  store i32 %714, ptr %712, align 8, !tbaa !119
  br label %715

715:                                              ; preds = %710, %706
  %716 = load ptr, ptr %20, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.ImGuiContext, ptr %716, i32 0, i32 56
  %718 = load i32, ptr %717, align 4, !tbaa !120
  %719 = or i32 %718, 2
  store i32 %719, ptr %717, align 4, !tbaa !120
  %720 = load ptr, ptr %20, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.ImGuiContext, ptr %720, i32 0, i32 57
  %722 = load i64, ptr %721, align 8, !tbaa !121
  %723 = or i64 %722, 384
  store i64 %723, ptr %721, align 8, !tbaa !121
  %724 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %725 = trunc i8 %724 to i1
  br i1 %725, label %726, label %731

726:                                              ; preds = %715
  %727 = load ptr, ptr %20, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.ImGuiContext, ptr %727, i32 0, i32 57
  %729 = load i64, ptr %728, align 8, !tbaa !121
  %730 = or i64 %729, 96
  store i64 %730, ptr %728, align 8, !tbaa !121
  br label %731

731:                                              ; preds = %726, %715
  %732 = load i32, ptr %15, align 4, !tbaa !9
  %733 = and i32 %732, 1088
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %740

735:                                              ; preds = %731
  %736 = load ptr, ptr %20, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiContext, ptr %736, i32 0, i32 57
  %738 = load i64, ptr %737, align 8, !tbaa !121
  %739 = or i64 %738, 1
  store i64 %739, ptr %737, align 8, !tbaa !121
  br label %740

740:                                              ; preds = %735, %731
  br label %741

741:                                              ; preds = %740, %677, %671
  %742 = load ptr, ptr %20, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.ImGuiContext, ptr %742, i32 0, i32 44
  %744 = load i32, ptr %743, align 4, !tbaa !102
  %745 = load i32, ptr %29, align 4, !tbaa !9
  %746 = icmp eq i32 %744, %745
  br i1 %746, label %747, label %751

747:                                              ; preds = %741
  %748 = load ptr, ptr %45, align 8, !tbaa !5
  %749 = icmp eq ptr %748, null
  br i1 %749, label %750, label %751

750:                                              ; preds = %747
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %751

751:                                              ; preds = %750, %747, %741
  %752 = load ptr, ptr %20, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.ImGuiContext, ptr %752, i32 0, i32 44
  %754 = load i32, ptr %753, align 4, !tbaa !102
  %755 = load i32, ptr %29, align 4, !tbaa !9
  %756 = icmp eq i32 %754, %755
  br i1 %756, label %757, label %770

757:                                              ; preds = %751
  %758 = load ptr, ptr %21, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.ImGuiIO, ptr %758, i32 0, i32 66
  %760 = getelementptr inbounds [5 x i8], ptr %759, i64 0, i64 0
  %761 = load i8, ptr %760, align 8, !tbaa !42, !range !40, !noundef !41
  %762 = trunc i8 %761 to i1
  br i1 %762, label %763, label %770

763:                                              ; preds = %757
  %764 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %765 = trunc i8 %764 to i1
  br i1 %765, label %770, label %766

766:                                              ; preds = %763
  %767 = load i8, ptr %55, align 1, !tbaa !42, !range !40, !noundef !41
  %768 = trunc i8 %767 to i1
  br i1 %768, label %770, label %769

769:                                              ; preds = %766
  store i8 1, ptr %51, align 1, !tbaa !42
  br label %770

770:                                              ; preds = %769, %766, %763, %757, %751
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #14
  %771 = load ptr, ptr %20, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.ImGuiContext, ptr %771, i32 0, i32 44
  %773 = load i32, ptr %772, align 4, !tbaa !102
  %774 = load i32, ptr %29, align 4, !tbaa !9
  %775 = icmp eq i32 %773, %774
  br i1 %775, label %784, label %776

776:                                              ; preds = %770
  %777 = load ptr, ptr %45, align 8, !tbaa !5
  %778 = icmp ne ptr %777, null
  br i1 %778, label %779, label %782

779:                                              ; preds = %776
  %780 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %781 = trunc i8 %780 to i1
  br label %782

782:                                              ; preds = %779, %776
  %783 = phi i1 [ false, %776 ], [ %781, %779 ]
  br label %784

784:                                              ; preds = %782, %770
  %785 = phi i1 [ true, %770 ], [ %783, %782 ]
  %786 = zext i1 %785 to i8
  store i8 %786, ptr %60, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #14
  %787 = load ptr, ptr %45, align 8, !tbaa !5
  %788 = icmp ne ptr %787, null
  br i1 %788, label %789, label %798

789:                                              ; preds = %784
  %790 = load ptr, ptr %45, align 8, !tbaa !5
  %791 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %790)
  br i1 %791, label %795, label %792

792:                                              ; preds = %789
  %793 = load i8, ptr %52, align 1, !tbaa !42, !range !40, !noundef !41
  %794 = trunc i8 %793 to i1
  br i1 %794, label %795, label %798

795:                                              ; preds = %792, %789
  %796 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %797 = trunc i8 %796 to i1
  br label %798

798:                                              ; preds = %795, %792, %784
  %799 = phi i1 [ false, %792 ], [ false, %784 ], [ %797, %795 ]
  %800 = zext i1 %799 to i8
  store i8 %800, ptr %61, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #14
  store i8 0, ptr %62, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  store i8 0, ptr %63, align 1, !tbaa !42
  %801 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %802 = trunc i8 %801 to i1
  br i1 %802, label %803, label %847

803:                                              ; preds = %798
  %804 = load ptr, ptr %45, align 8, !tbaa !5
  %805 = icmp ne ptr %804, null
  br i1 %805, label %806, label %847

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

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

812:                                              ; preds = %809, %806
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #14
  store ptr null, ptr %64, align 8, !tbaa !5
  %813 = load ptr, ptr %45, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %813, i32 0, i32 3
  %815 = load i32, ptr %13, align 4, !tbaa !9
  %816 = add nsw i32 %815, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %814, i32 noundef %816)
  %817 = load ptr, ptr %45, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %817, i32 0, i32 3
  %819 = getelementptr inbounds %struct.ImVector.5, ptr %818, i32 0, i32 2
  %820 = load ptr, ptr %819, align 8, !tbaa !111
  %821 = load ptr, ptr %45, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %821, i32 0, i32 3
  %823 = getelementptr inbounds %struct.ImVector.5, ptr %822, i32 0, i32 0
  %824 = load i32, ptr %823, align 8, !tbaa !122
  %825 = load ptr, ptr %12, align 8, !tbaa !5
  %826 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %820, i32 noundef %824, ptr noundef %825, ptr noundef null, ptr noundef %64)
  %827 = load ptr, ptr %45, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %827, i32 0, i32 1
  store i32 %826, ptr %828, align 4, !tbaa !112
  %829 = load ptr, ptr %64, align 8, !tbaa !5
  %830 = load ptr, ptr %12, align 8, !tbaa !5
  %831 = ptrtoint ptr %829 to i64
  %832 = ptrtoint ptr %830 to i64
  %833 = sub i64 %831, %832
  %834 = trunc i64 %833 to i32
  %835 = load ptr, ptr %45, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %835, i32 0, i32 2
  store i32 %834, ptr %836, align 8, !tbaa !113
  %837 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3736) %837)
  %838 = load ptr, ptr %45, align 8, !tbaa !5
  %839 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %838)
  %840 = zext i1 %839 to i32
  %841 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %842 = trunc i8 %841 to i1
  %843 = zext i1 %842 to i32
  %844 = and i32 %843, %840
  %845 = icmp ne i32 %844, 0
  %846 = zext i1 %845 to i8
  store i8 %846, ptr %61, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #14
  br label %847

847:                                              ; preds = %812, %809, %803, %798
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #14
  %848 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %849 = trunc i8 %848 to i1
  br i1 %849, label %859, label %850

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

853:                                              ; preds = %850
  %854 = load ptr, ptr %20, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.ImGuiContext, ptr %854, i32 0, i32 44
  %856 = load i32, ptr %855, align 4, !tbaa !102
  %857 = load i32, ptr %29, align 4, !tbaa !9
  %858 = icmp eq i32 %856, %857
  br i1 %858, label %859, label %870

859:                                              ; preds = %853, %850, %847
  %860 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %861 = trunc i8 %860 to i1
  br i1 %861, label %870, label %862

862:                                              ; preds = %859
  %863 = load ptr, ptr %45, align 8, !tbaa !5
  %864 = icmp ne ptr %863, null
  br i1 %864, label %865, label %870

865:                                              ; preds = %862
  %866 = load ptr, ptr %45, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %866, i32 0, i32 6
  %868 = load i8, ptr %867, align 8, !tbaa !110, !range !40, !noundef !41
  %869 = trunc i8 %868 to i1
  br label %870

870:                                              ; preds = %865, %862, %859, %853
  %871 = phi i1 [ false, %862 ], [ false, %859 ], [ false, %853 ], [ %869, %865 ]
  %872 = zext i1 %871 to i8
  store i8 %872, ptr %65, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #14
  %873 = load ptr, ptr %11, align 8, !tbaa !5
  %874 = icmp ne ptr %873, null
  br i1 %874, label %875, label %891

875:                                              ; preds = %870
  %876 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %877 = trunc i8 %876 to i1
  br i1 %877, label %878, label %883

878:                                              ; preds = %875
  %879 = load ptr, ptr %45, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %879, i32 0, i32 4
  %881 = getelementptr inbounds %struct.ImVector.26, ptr %880, i32 0, i32 2
  %882 = load ptr, ptr %881, align 8, !tbaa !123
  br label %885

883:                                              ; preds = %875
  %884 = load ptr, ptr %12, align 8, !tbaa !5
  br label %885

885:                                              ; preds = %883, %878
  %886 = phi ptr [ %882, %878 ], [ %884, %883 ]
  %887 = getelementptr inbounds i8, ptr %886, i64 0
  %888 = load i8, ptr %887, align 1, !tbaa !124
  %889 = sext i8 %888 to i32
  %890 = icmp eq i32 %889, 0
  br label %891

891:                                              ; preds = %885, %870
  %892 = phi i1 [ false, %870 ], [ %890, %885 ]
  %893 = zext i1 %892 to i8
  store i8 %893, ptr %66, align 1, !tbaa !42
  %894 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %895 = trunc i8 %894 to i1
  br i1 %895, label %896, label %967

896:                                              ; preds = %891
  %897 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %898 = trunc i8 %897 to i1
  br i1 %898, label %967, label %899

899:                                              ; preds = %896
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #14
  %900 = load ptr, ptr %20, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.ImGuiContext, ptr %900, i32 0, i32 5
  %902 = load ptr, ptr %901, align 8, !tbaa !125
  %903 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110) %902, i16 noundef zeroext 42)
  store ptr %903, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #14
  %904 = load ptr, ptr %20, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.ImGuiContext, ptr %904, i32 0, i32 174
  store ptr %905, ptr %68, align 8, !tbaa !5
  %906 = load ptr, ptr %20, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.ImGuiContext, ptr %906, i32 0, i32 5
  %908 = load ptr, ptr %907, align 8, !tbaa !125
  %909 = getelementptr inbounds %struct.ImFont, ptr %908, i32 0, i32 2
  %910 = load float, ptr %909, align 4, !tbaa !126
  %911 = load ptr, ptr %68, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.ImFont, ptr %911, i32 0, i32 2
  store float %910, ptr %912, align 4, !tbaa !126
  %913 = load ptr, ptr %20, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImGuiContext, ptr %913, i32 0, i32 5
  %915 = load ptr, ptr %914, align 8, !tbaa !125
  %916 = getelementptr inbounds %struct.ImFont, ptr %915, i32 0, i32 14
  %917 = load float, ptr %916, align 4, !tbaa !127
  %918 = load ptr, ptr %68, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.ImFont, ptr %918, i32 0, i32 14
  store float %917, ptr %919, align 4, !tbaa !127
  %920 = load ptr, ptr %20, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.ImGuiContext, ptr %920, i32 0, i32 5
  %922 = load ptr, ptr %921, align 8, !tbaa !125
  %923 = getelementptr inbounds %struct.ImFont, ptr %922, i32 0, i32 15
  %924 = load float, ptr %923, align 8, !tbaa !128
  %925 = load ptr, ptr %68, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.ImFont, ptr %925, i32 0, i32 15
  store float %924, ptr %926, align 8, !tbaa !128
  %927 = load ptr, ptr %20, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImGuiContext, ptr %927, i32 0, i32 5
  %929 = load ptr, ptr %928, align 8, !tbaa !125
  %930 = getelementptr inbounds %struct.ImFont, ptr %929, i32 0, i32 16
  %931 = load float, ptr %930, align 4, !tbaa !129
  %932 = load ptr, ptr %68, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.ImFont, ptr %932, i32 0, i32 16
  store float %931, ptr %933, align 4, !tbaa !129
  %934 = load ptr, ptr %20, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.ImGuiContext, ptr %934, i32 0, i32 5
  %936 = load ptr, ptr %935, align 8, !tbaa !125
  %937 = getelementptr inbounds %struct.ImFont, ptr %936, i32 0, i32 6
  %938 = load ptr, ptr %937, align 8, !tbaa !130
  %939 = load ptr, ptr %68, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.ImFont, ptr %939, i32 0, i32 6
  store ptr %938, ptr %940, align 8, !tbaa !130
  %941 = load ptr, ptr %67, align 8, !tbaa !5
  %942 = load ptr, ptr %68, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.ImFont, ptr %942, i32 0, i32 5
  store ptr %941, ptr %943, align 8, !tbaa !131
  %944 = load ptr, ptr %67, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.ImFontGlyph, ptr %944, i32 0, i32 1
  %946 = load float, ptr %945, align 4, !tbaa !132
  %947 = load ptr, ptr %68, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ImFont, ptr %947, i32 0, i32 1
  store float %946, ptr %948, align 8, !tbaa !134
  %949 = load ptr, ptr %68, align 8, !tbaa !5
  %950 = getelementptr inbounds %struct.ImFont, ptr %949, i32 0, i32 4
  %951 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %950)
  br i1 %951, label %952, label %960

952:                                              ; preds = %899
  %953 = load ptr, ptr %68, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ImFont, ptr %953, i32 0, i32 0
  %955 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %954)
  br i1 %955, label %956, label %960

956:                                              ; preds = %952
  %957 = load ptr, ptr %68, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.ImFont, ptr %957, i32 0, i32 3
  %959 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %958)
  br label %960

960:                                              ; preds = %956, %952, %899
  %961 = phi i1 [ false, %952 ], [ false, %899 ], [ %959, %956 ]
  br i1 %961, label %962, label %963

962:                                              ; preds = %960
  br label %965

963:                                              ; preds = %960
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.2, i32 noundef 4153, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

964:                                              ; No predecessors!
  br label %965

965:                                              ; preds = %964, %962
  %966 = load ptr, ptr %68, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %966)
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #14
  br label %967

967:                                              ; preds = %965, %896, %891
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #14
  store i32 0, ptr %69, align 4, !tbaa !9
  %968 = load ptr, ptr %20, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiContext, ptr %968, i32 0, i32 44
  %970 = load i32, ptr %969, align 4, !tbaa !102
  %971 = load i32, ptr %29, align 4, !tbaa !9
  %972 = icmp eq i32 %970, %971
  br i1 %972, label %973, label %1267

973:                                              ; preds = %967
  %974 = load ptr, ptr %45, align 8, !tbaa !5
  %975 = icmp ne ptr %974, null
  br i1 %975, label %976, label %977

976:                                              ; preds = %973
  br label %979

977:                                              ; preds = %973
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.2, i32 noundef 4161, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

978:                                              ; No predecessors!
  br label %979

979:                                              ; preds = %978, %976
  %980 = load ptr, ptr %45, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %980, i32 0, i32 2
  %982 = load i32, ptr %981, align 8, !tbaa !113
  store i32 %982, ptr %69, align 4, !tbaa !9
  %983 = load ptr, ptr %45, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %983, i32 0, i32 13
  store i8 0, ptr %984, align 2, !tbaa !135
  %985 = load i32, ptr %13, align 4, !tbaa !9
  %986 = load ptr, ptr %45, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %986, i32 0, i32 7
  store i32 %985, ptr %987, align 4, !tbaa !136
  %988 = load i32, ptr %15, align 4, !tbaa !9
  %989 = load ptr, ptr %45, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %989, i32 0, i32 14
  store i32 %988, ptr %990, align 8, !tbaa !137
  %991 = load ptr, ptr %16, align 8, !tbaa !5
  %992 = load ptr, ptr %45, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %992, i32 0, i32 15
  store ptr %991, ptr %993, align 8, !tbaa !138
  %994 = load ptr, ptr %17, align 8, !tbaa !5
  %995 = load ptr, ptr %45, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %995, i32 0, i32 16
  store ptr %994, ptr %996, align 8, !tbaa !139
  %997 = load ptr, ptr %21, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.ImGuiIO, ptr %997, i32 0, i32 37
  %999 = getelementptr inbounds [5 x i8], ptr %998, i64 0, i64 0
  %1000 = load i8, ptr %999, align 8, !tbaa !42, !range !40, !noundef !41
  %1001 = trunc i8 %1000 to i1
  %1002 = xor i1 %1001, true
  %1003 = load ptr, ptr %20, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.ImGuiContext, ptr %1003, i32 0, i32 48
  %1005 = zext i1 %1002 to i8
  store i8 %1005, ptr %1004, align 1, !tbaa !140
  %1006 = load ptr, ptr %20, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiContext, ptr %1006, i32 0, i32 234
  store i32 1, ptr %1007, align 4, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #14
  %1008 = load ptr, ptr %21, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.ImGuiIO, ptr %1008, i32 0, i32 36
  %1010 = getelementptr inbounds %struct.ImVec2, ptr %1009, i32 0, i32 0
  %1011 = load float, ptr %1010, align 8, !tbaa !142
  %1012 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %1013 = getelementptr inbounds %struct.ImVec2, ptr %1012, i32 0, i32 0
  %1014 = load float, ptr %1013, align 4, !tbaa !143
  %1015 = fsub float %1011, %1014
  %1016 = load ptr, ptr %22, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.ImGuiStyle, ptr %1016, i32 0, i32 12
  %1018 = getelementptr inbounds %struct.ImVec2, ptr %1017, i32 0, i32 0
  %1019 = load float, ptr %1018, align 4, !tbaa !144
  %1020 = fsub float %1015, %1019
  %1021 = load ptr, ptr %45, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1021, i32 0, i32 8
  %1023 = load float, ptr %1022, align 8, !tbaa !115
  %1024 = fadd float %1020, %1023
  store float %1024, ptr %70, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #14
  %1025 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1026 = trunc i8 %1025 to i1
  br i1 %1026, label %1027, label %1038

1027:                                             ; preds = %979
  %1028 = load ptr, ptr %21, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.ImGuiIO, ptr %1028, i32 0, i32 36
  %1030 = getelementptr inbounds %struct.ImVec2, ptr %1029, i32 0, i32 1
  %1031 = load float, ptr %1030, align 4, !tbaa !145
  %1032 = load ptr, ptr %38, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.ImGuiWindow, ptr %1032, i32 0, i32 54
  %1034 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1033, i32 0, i32 0
  %1035 = getelementptr inbounds %struct.ImVec2, ptr %1034, i32 0, i32 1
  %1036 = load float, ptr %1035, align 4, !tbaa !146
  %1037 = fsub float %1031, %1036
  br label %1043

1038:                                             ; preds = %979
  %1039 = load ptr, ptr %20, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.ImGuiContext, ptr %1039, i32 0, i32 6
  %1041 = load float, ptr %1040, align 8, !tbaa !45
  %1042 = fmul float %1041, 5.000000e-01
  br label %1043

1043:                                             ; preds = %1038, %1027
  %1044 = phi float [ %1037, %1027 ], [ %1042, %1038 ]
  store float %1044, ptr %71, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #14
  %1045 = load ptr, ptr %21, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.ImGuiIO, ptr %1045, i32 0, i32 20
  %1047 = load i8, ptr %1046, align 1, !tbaa !147, !range !40, !noundef !41
  %1048 = trunc i8 %1047 to i1
  %1049 = zext i1 %1048 to i8
  store i8 %1049, ptr %72, align 1, !tbaa !42
  %1050 = load i8, ptr %52, align 1, !tbaa !42, !range !40, !noundef !41
  %1051 = trunc i8 %1050 to i1
  br i1 %1051, label %1064, label %1052

1052:                                             ; preds = %1043
  %1053 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %1054 = trunc i8 %1053 to i1
  br i1 %1054, label %1055, label %1068

1055:                                             ; preds = %1052
  %1056 = load i8, ptr %72, align 1, !tbaa !42, !range !40, !noundef !41
  %1057 = trunc i8 %1056 to i1
  br i1 %1057, label %1068, label %1058

1058:                                             ; preds = %1055
  %1059 = load ptr, ptr %21, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.ImGuiIO, ptr %1059, i32 0, i32 67
  %1061 = getelementptr inbounds [5 x i8], ptr %1060, i64 0, i64 0
  %1062 = load i8, ptr %1061, align 1, !tbaa !42, !range !40, !noundef !41
  %1063 = trunc i8 %1062 to i1
  br i1 %1063, label %1064, label %1068

1064:                                             ; preds = %1058, %1043
  %1065 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %1065)
  %1066 = load ptr, ptr %45, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1066, i32 0, i32 12
  store i8 1, ptr %1067, align 1, !tbaa !148
  br label %1140

1068:                                             ; preds = %1058, %1055, %1052
  %1069 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %1070 = trunc i8 %1069 to i1
  br i1 %1070, label %1071, label %1083

1071:                                             ; preds = %1068
  %1072 = load i8, ptr %72, align 1, !tbaa !42, !range !40, !noundef !41
  %1073 = trunc i8 %1072 to i1
  br i1 %1073, label %1074, label %1083

1074:                                             ; preds = %1071
  %1075 = load ptr, ptr %21, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ImGuiIO, ptr %1075, i32 0, i32 67
  %1077 = getelementptr inbounds [5 x i8], ptr %1076, i64 0, i64 0
  %1078 = load i8, ptr %1077, align 1, !tbaa !42, !range !40, !noundef !41
  %1079 = trunc i8 %1078 to i1
  br i1 %1079, label %1080, label %1083

1080:                                             ; preds = %1074
  %1081 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1081, i32 noundef 2097164)
  %1082 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1082, i32 noundef 6291469)
  br label %1139

1083:                                             ; preds = %1074, %1071, %1068
  %1084 = load ptr, ptr %21, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.ImGuiIO, ptr %1084, i32 0, i32 66
  %1086 = getelementptr inbounds [5 x i8], ptr %1085, i64 0, i64 0
  %1087 = load i8, ptr %1086, align 8, !tbaa !42, !range !40, !noundef !41
  %1088 = trunc i8 %1087 to i1
  br i1 %1088, label %1089, label %1105

1089:                                             ; preds = %1083
  %1090 = load ptr, ptr %45, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1090, i32 0, i32 12
  %1092 = load i8, ptr %1091, align 1, !tbaa !148, !range !40, !noundef !41
  %1093 = trunc i8 %1092 to i1
  br i1 %1093, label %1105, label %1094

1094:                                             ; preds = %1089
  %1095 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %1096 = trunc i8 %1095 to i1
  br i1 %1096, label %1097, label %1104

1097:                                             ; preds = %1094
  %1098 = load ptr, ptr %45, align 8, !tbaa !5
  %1099 = load ptr, ptr %45, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1099, i32 0, i32 9
  %1101 = load float, ptr %70, align 4, !tbaa !44
  %1102 = load float, ptr %71, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1098, ptr noundef %1100, float noundef %1101, float noundef %1102)
  %1103 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %1103)
  br label %1104

1104:                                             ; preds = %1097, %1094
  br label %1138

1105:                                             ; preds = %1089, %1083
  %1106 = load ptr, ptr %21, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.ImGuiIO, ptr %1106, i32 0, i32 37
  %1108 = getelementptr inbounds [5 x i8], ptr %1107, i64 0, i64 0
  %1109 = load i8, ptr %1108, align 8, !tbaa !42, !range !40, !noundef !41
  %1110 = trunc i8 %1109 to i1
  br i1 %1110, label %1111, label %1137

1111:                                             ; preds = %1105
  %1112 = load ptr, ptr %45, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1112, i32 0, i32 12
  %1114 = load i8, ptr %1113, align 1, !tbaa !148, !range !40, !noundef !41
  %1115 = trunc i8 %1114 to i1
  br i1 %1115, label %1137, label %1116

1116:                                             ; preds = %1111
  %1117 = load ptr, ptr %21, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.ImGuiIO, ptr %1117, i32 0, i32 59
  %1119 = getelementptr inbounds %struct.ImVec2, ptr %1118, i32 0, i32 0
  %1120 = load float, ptr %1119, align 4, !tbaa !149
  %1121 = fcmp une float %1120, 0.000000e+00
  br i1 %1121, label %1128, label %1122

1122:                                             ; preds = %1116
  %1123 = load ptr, ptr %21, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ImGuiIO, ptr %1123, i32 0, i32 59
  %1125 = getelementptr inbounds %struct.ImVec2, ptr %1124, i32 0, i32 1
  %1126 = load float, ptr %1125, align 4, !tbaa !150
  %1127 = fcmp une float %1126, 0.000000e+00
  br i1 %1127, label %1128, label %1137

1128:                                             ; preds = %1122, %1116
  %1129 = load ptr, ptr %45, align 8, !tbaa !5
  %1130 = load ptr, ptr %45, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1130, i32 0, i32 9
  %1132 = load float, ptr %70, align 4, !tbaa !44
  %1133 = load float, ptr %71, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1129, ptr noundef %1131, float noundef %1132, float noundef %1133)
  %1134 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %1134)
  %1135 = load ptr, ptr %45, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1135, i32 0, i32 11
  store i8 1, ptr %1136, align 4, !tbaa !151
  br label %1137

1137:                                             ; preds = %1128, %1122, %1111, %1105
  br label %1138

1138:                                             ; preds = %1137, %1104
  br label %1139

1139:                                             ; preds = %1138, %1080
  br label %1140

1140:                                             ; preds = %1139, %1064
  %1141 = load ptr, ptr %45, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1141, i32 0, i32 12
  %1143 = load i8, ptr %1142, align 1, !tbaa !148, !range !40, !noundef !41
  %1144 = trunc i8 %1143 to i1
  br i1 %1144, label %1145, label %1154

1145:                                             ; preds = %1140
  %1146 = load ptr, ptr %21, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.ImGuiIO, ptr %1146, i32 0, i32 37
  %1148 = getelementptr inbounds [5 x i8], ptr %1147, i64 0, i64 0
  %1149 = load i8, ptr %1148, align 8, !tbaa !42, !range !40, !noundef !41
  %1150 = trunc i8 %1149 to i1
  br i1 %1150, label %1154, label %1151

1151:                                             ; preds = %1145
  %1152 = load ptr, ptr %45, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1152, i32 0, i32 12
  store i8 0, ptr %1153, align 1, !tbaa !148
  br label %1154

1154:                                             ; preds = %1151, %1145, %1140
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #14
  %1155 = load ptr, ptr %21, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.ImGuiIO, ptr %1155, i32 0, i32 40
  %1157 = load i8, ptr %1156, align 8, !tbaa !117, !range !40, !noundef !41
  %1158 = trunc i8 %1157 to i1
  br i1 %1158, label %1159, label %1164

1159:                                             ; preds = %1154
  %1160 = load ptr, ptr %21, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.ImGuiIO, ptr %1160, i32 0, i32 42
  %1162 = load i8, ptr %1161, align 2, !tbaa !152, !range !40, !noundef !41
  %1163 = trunc i8 %1162 to i1
  br i1 %1163, label %1164, label %1174

1164:                                             ; preds = %1159, %1154
  %1165 = load i8, ptr %72, align 1, !tbaa !42, !range !40, !noundef !41
  %1166 = trunc i8 %1165 to i1
  br i1 %1166, label %1167, label %1172

1167:                                             ; preds = %1164
  %1168 = load ptr, ptr %21, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImGuiIO, ptr %1168, i32 0, i32 43
  %1170 = load i8, ptr %1169, align 1, !tbaa !153, !range !40, !noundef !41
  %1171 = trunc i8 %1170 to i1
  br label %1172

1172:                                             ; preds = %1167, %1164
  %1173 = phi i1 [ false, %1164 ], [ %1171, %1167 ]
  br label %1174

1174:                                             ; preds = %1172, %1159
  %1175 = phi i1 [ true, %1159 ], [ %1173, %1172 ]
  %1176 = zext i1 %1175 to i8
  store i8 %1176, ptr %73, align 1, !tbaa !42
  %1177 = load i32, ptr %15, align 4, !tbaa !9
  %1178 = and i32 %1177, 1024
  %1179 = icmp ne i32 %1178, 0
  br i1 %1179, label %1180, label %1208

1180:                                             ; preds = %1174
  %1181 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1181, label %1182, label %1208

1182:                                             ; preds = %1180
  %1183 = load i8, ptr %73, align 1, !tbaa !42, !range !40, !noundef !41
  %1184 = trunc i8 %1183 to i1
  br i1 %1184, label %1208, label %1185

1185:                                             ; preds = %1182
  %1186 = load ptr, ptr %21, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.ImGuiIO, ptr %1186, i32 0, i32 41
  %1188 = load i8, ptr %1187, align 1, !tbaa !154, !range !40, !noundef !41
  %1189 = trunc i8 %1188 to i1
  br i1 %1189, label %1208, label %1190

1190:                                             ; preds = %1185
  %1191 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1192 = trunc i8 %1191 to i1
  br i1 %1192, label %1208, label %1193

1193:                                             ; preds = %1190
  %1194 = load ptr, ptr %21, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.ImGuiIO, ptr %1194, i32 0, i32 83
  call void @llvm.lifetime.start.p0(i64 2, ptr %74) #14
  store i16 9, ptr %74, align 2, !tbaa !155
  %1196 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %1195, ptr noundef nonnull align 2 dereferenceable(2) %74)
  %1197 = xor i1 %1196, true
  call void @llvm.lifetime.end.p0(i64 2, ptr %74) #14
  br i1 %1197, label %1198, label %1207

1198:                                             ; preds = %1193
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  store i32 9, ptr %75, align 4, !tbaa !9
  %1199 = load i32, ptr %15, align 4, !tbaa !9
  %1200 = load ptr, ptr %16, align 8, !tbaa !5
  %1201 = load ptr, ptr %17, align 8, !tbaa !5
  %1202 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %75, i32 noundef %1199, ptr noundef %1200, ptr noundef %1201, i32 noundef 2)
  br i1 %1202, label %1203, label %1206

1203:                                             ; preds = %1198
  %1204 = load ptr, ptr %45, align 8, !tbaa !5
  %1205 = load i32, ptr %75, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1204, i32 noundef %1205)
  br label %1206

1206:                                             ; preds = %1203, %1198
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  br label %1207

1207:                                             ; preds = %1206, %1193
  br label %1208

1208:                                             ; preds = %1207, %1190, %1185, %1182, %1180, %1174
  %1209 = load ptr, ptr %21, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ImGuiIO, ptr %1209, i32 0, i32 83
  %1211 = getelementptr inbounds %struct.ImVector.5, ptr %1210, i32 0, i32 0
  %1212 = load i32, ptr %1211, align 8, !tbaa !156
  %1213 = icmp sgt i32 %1212, 0
  br i1 %1213, label %1214, label %1266

1214:                                             ; preds = %1208
  %1215 = load i8, ptr %73, align 1, !tbaa !42, !range !40, !noundef !41
  %1216 = trunc i8 %1215 to i1
  br i1 %1216, label %1263, label %1217

1217:                                             ; preds = %1214
  %1218 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1219 = trunc i8 %1218 to i1
  br i1 %1219, label %1263, label %1220

1220:                                             ; preds = %1217
  %1221 = load i8, ptr %47, align 1, !tbaa !42, !range !40, !noundef !41
  %1222 = trunc i8 %1221 to i1
  br i1 %1222, label %1263, label %1223

1223:                                             ; preds = %1220
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #14
  store i32 0, ptr %76, align 4, !tbaa !9
  br label %1224

1224:                                             ; preds = %1259, %1223
  %1225 = load i32, ptr %76, align 4, !tbaa !9
  %1226 = load ptr, ptr %21, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.ImGuiIO, ptr %1226, i32 0, i32 83
  %1228 = getelementptr inbounds %struct.ImVector.5, ptr %1227, i32 0, i32 0
  %1229 = load i32, ptr %1228, align 8, !tbaa !156
  %1230 = icmp slt i32 %1225, %1229
  br i1 %1230, label %1232, label %1231

1231:                                             ; preds = %1224
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #14
  br label %1262

1232:                                             ; preds = %1224
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #14
  %1233 = load ptr, ptr %21, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.ImGuiIO, ptr %1233, i32 0, i32 83
  %1235 = load i32, ptr %76, align 4, !tbaa !9
  %1236 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1234, i32 noundef %1235)
  %1237 = load i16, ptr %1236, align 2, !tbaa !155
  %1238 = zext i16 %1237 to i32
  store i32 %1238, ptr %77, align 4, !tbaa !9
  %1239 = load i32, ptr %77, align 4, !tbaa !9
  %1240 = icmp eq i32 %1239, 9
  br i1 %1240, label %1241, label %1247

1241:                                             ; preds = %1232
  %1242 = load ptr, ptr %21, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.ImGuiIO, ptr %1242, i32 0, i32 41
  %1244 = load i8, ptr %1243, align 1, !tbaa !154, !range !40, !noundef !41
  %1245 = trunc i8 %1244 to i1
  br i1 %1245, label %1246, label %1247

1246:                                             ; preds = %1241
  store i32 4, ptr %19, align 4
  br label %1256

1247:                                             ; preds = %1241, %1232
  %1248 = load i32, ptr %15, align 4, !tbaa !9
  %1249 = load ptr, ptr %16, align 8, !tbaa !5
  %1250 = load ptr, ptr %17, align 8, !tbaa !5
  %1251 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %77, i32 noundef %1248, ptr noundef %1249, ptr noundef %1250, i32 noundef 2)
  br i1 %1251, label %1252, label %1255

1252:                                             ; preds = %1247
  %1253 = load ptr, ptr %45, align 8, !tbaa !5
  %1254 = load i32, ptr %77, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1253, i32 noundef %1254)
  br label %1255

1255:                                             ; preds = %1252, %1247
  store i32 0, ptr %19, align 4
  br label %1256

1256:                                             ; preds = %1255, %1246
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #14
  %1257 = load i32, ptr %19, align 4
  switch i32 %1257, label %3299 [
    i32 0, label %1258
    i32 4, label %1259
  ]

1258:                                             ; preds = %1256
  br label %1259

1259:                                             ; preds = %1258, %1256
  %1260 = load i32, ptr %76, align 4, !tbaa !9
  %1261 = add nsw i32 %1260, 1
  store i32 %1261, ptr %76, align 4, !tbaa !9
  br label %1224, !llvm.loop !157

1262:                                             ; preds = %1231
  br label %1263

1263:                                             ; preds = %1262, %1220, %1217, %1214
  %1264 = load ptr, ptr %21, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.ImGuiIO, ptr %1264, i32 0, i32 83
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1265, i32 noundef 0)
  br label %1266

1266:                                             ; preds = %1263, %1208
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #14
  br label %1267

1267:                                             ; preds = %1266, %967
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  store i8 0, ptr %78, align 1, !tbaa !42
  %1268 = load ptr, ptr %20, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.ImGuiContext, ptr %1268, i32 0, i32 44
  %1270 = load i32, ptr %1269, align 4, !tbaa !102
  %1271 = load i32, ptr %29, align 4, !tbaa !9
  %1272 = icmp eq i32 %1270, %1271
  br i1 %1272, label %1273, label %2000

1273:                                             ; preds = %1267
  %1274 = load ptr, ptr %20, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.ImGuiContext, ptr %1274, i32 0, i32 47
  %1276 = load i8, ptr %1275, align 8, !tbaa !159, !range !40, !noundef !41
  %1277 = trunc i8 %1276 to i1
  br i1 %1277, label %2000, label %1278

1278:                                             ; preds = %1273
  %1279 = load i8, ptr %51, align 1, !tbaa !42, !range !40, !noundef !41
  %1280 = trunc i8 %1279 to i1
  br i1 %1280, label %2000, label %1281

1281:                                             ; preds = %1278
  %1282 = load ptr, ptr %45, align 8, !tbaa !5
  %1283 = icmp ne ptr %1282, null
  br i1 %1283, label %1284, label %1285

1284:                                             ; preds = %1281
  br label %1287

1285:                                             ; preds = %1281
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.2, i32 noundef 4242, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1286:                                             ; No predecessors!
  br label %1287

1287:                                             ; preds = %1286, %1284
  %1288 = load ptr, ptr %21, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.ImGuiIO, ptr %1288, i32 0, i32 61
  %1290 = load i32, ptr %1289, align 8, !tbaa !160
  %1291 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %1292 = icmp eq i32 %1290, %1291
  br i1 %1292, label %1293, label %1294

1293:                                             ; preds = %1287
  br label %1294

1294:                                             ; preds = %1293, %1287
  %1295 = phi i1 [ false, %1287 ], [ true, %1293 ]
  br i1 %1295, label %1296, label %1297

1296:                                             ; preds = %1294
  br label %1299

1297:                                             ; preds = %1294
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.2, i32 noundef 4243, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1298:                                             ; No predecessors!
  br label %1299

1299:                                             ; preds = %1298, %1296
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #14
  %1300 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %1301 = load float, ptr %1300, align 4, !tbaa !90
  %1302 = load ptr, ptr %22, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.ImGuiStyle, ptr %1302, i32 0, i32 12
  %1304 = getelementptr inbounds %struct.ImVec2, ptr %1303, i32 0, i32 1
  %1305 = load float, ptr %1304, align 4, !tbaa !91
  %1306 = fsub float %1301, %1305
  %1307 = load ptr, ptr %20, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct.ImGuiContext, ptr %1307, i32 0, i32 6
  %1309 = load float, ptr %1308, align 8, !tbaa !45
  %1310 = fdiv float %1306, %1309
  %1311 = fptosi float %1310 to i32
  %1312 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1311, i32 noundef 1)
  store i32 %1312, ptr %79, align 4, !tbaa !9
  %1313 = load i32, ptr %79, align 4, !tbaa !9
  %1314 = load ptr, ptr %45, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1314, i32 0, i32 9
  %1316 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1315, i32 0, i32 4
  store i32 %1313, ptr %1316, align 4, !tbaa !161
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #14
  %1317 = load ptr, ptr %21, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.ImGuiIO, ptr %1317, i32 0, i32 41
  %1319 = load i8, ptr %1318, align 1, !tbaa !154, !range !40, !noundef !41
  %1320 = trunc i8 %1319 to i1
  %1321 = zext i1 %1320 to i64
  %1322 = select i1 %1320, i32 4194304, i32 0
  store i32 %1322, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #14
  %1323 = load ptr, ptr %21, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiIO, ptr %1323, i32 0, i32 20
  %1325 = load i8, ptr %1324, align 1, !tbaa !147, !range !40, !noundef !41
  %1326 = trunc i8 %1325 to i1
  %1327 = zext i1 %1326 to i8
  store i8 %1327, ptr %81, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #14
  %1328 = load i8, ptr %81, align 1, !tbaa !42, !range !40, !noundef !41
  %1329 = trunc i8 %1328 to i1
  br i1 %1329, label %1330, label %1335

1330:                                             ; preds = %1299
  %1331 = load ptr, ptr %21, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.ImGuiIO, ptr %1331, i32 0, i32 61
  %1333 = load i32, ptr %1332, align 8, !tbaa !160
  %1334 = icmp eq i32 %1333, 10
  br label %1335

1335:                                             ; preds = %1330, %1299
  %1336 = phi i1 [ false, %1299 ], [ %1334, %1330 ]
  %1337 = zext i1 %1336 to i8
  store i8 %1337, ptr %82, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #14
  %1338 = load i8, ptr %81, align 1, !tbaa !42, !range !40, !noundef !41
  %1339 = trunc i8 %1338 to i1
  br i1 %1339, label %1340, label %1345

1340:                                             ; preds = %1335
  %1341 = load ptr, ptr %21, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.ImGuiIO, ptr %1341, i32 0, i32 42
  %1343 = load i8, ptr %1342, align 2, !tbaa !152, !range !40, !noundef !41
  %1344 = trunc i8 %1343 to i1
  br label %1350

1345:                                             ; preds = %1335
  %1346 = load ptr, ptr %21, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.ImGuiIO, ptr %1346, i32 0, i32 40
  %1348 = load i8, ptr %1347, align 8, !tbaa !117, !range !40, !noundef !41
  %1349 = trunc i8 %1348 to i1
  br label %1350

1350:                                             ; preds = %1345, %1340
  %1351 = phi i1 [ %1344, %1340 ], [ %1349, %1345 ]
  %1352 = zext i1 %1351 to i8
  store i8 %1352, ptr %83, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #14
  %1353 = load i8, ptr %81, align 1, !tbaa !42, !range !40, !noundef !41
  %1354 = trunc i8 %1353 to i1
  br i1 %1354, label %1355, label %1371

1355:                                             ; preds = %1350
  %1356 = load ptr, ptr %21, align 8, !tbaa !5
  %1357 = getelementptr inbounds %struct.ImGuiIO, ptr %1356, i32 0, i32 43
  %1358 = load i8, ptr %1357, align 1, !tbaa !153, !range !40, !noundef !41
  %1359 = trunc i8 %1358 to i1
  br i1 %1359, label %1360, label %1371

1360:                                             ; preds = %1355
  %1361 = load ptr, ptr %21, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct.ImGuiIO, ptr %1361, i32 0, i32 40
  %1363 = load i8, ptr %1362, align 8, !tbaa !117, !range !40, !noundef !41
  %1364 = trunc i8 %1363 to i1
  br i1 %1364, label %1371, label %1365

1365:                                             ; preds = %1360
  %1366 = load ptr, ptr %21, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.ImGuiIO, ptr %1366, i32 0, i32 42
  %1368 = load i8, ptr %1367, align 2, !tbaa !152, !range !40, !noundef !41
  %1369 = trunc i8 %1368 to i1
  %1370 = xor i1 %1369, true
  br label %1371

1371:                                             ; preds = %1365, %1360, %1355, %1350
  %1372 = phi i1 [ false, %1360 ], [ false, %1355 ], [ false, %1350 ], [ %1370, %1365 ]
  %1373 = zext i1 %1372 to i8
  store i8 %1373, ptr %84, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #14
  %1374 = load ptr, ptr %21, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.ImGuiIO, ptr %1374, i32 0, i32 61
  %1376 = load i32, ptr %1375, align 8, !tbaa !160
  %1377 = icmp eq i32 %1376, 1
  %1378 = zext i1 %1377 to i8
  store i8 %1378, ptr %85, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1379 = load ptr, ptr %21, align 8, !tbaa !5
  %1380 = getelementptr inbounds %struct.ImGuiIO, ptr %1379, i32 0, i32 61
  %1381 = load i32, ptr %1380, align 8, !tbaa !160
  %1382 = icmp eq i32 %1381, 2
  %1383 = zext i1 %1382 to i8
  store i8 %1383, ptr %86, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #14
  %1384 = load ptr, ptr %20, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.ImGuiContext, ptr %1384, i32 0, i32 3
  %1386 = getelementptr inbounds %struct.ImGuiIO, ptr %1385, i32 0, i32 20
  %1387 = load i8, ptr %1386, align 1, !tbaa !162, !range !40, !noundef !41
  %1388 = trunc i8 %1387 to i1
  br i1 %1388, label %1389, label %1394

1389:                                             ; preds = %1371
  %1390 = load ptr, ptr %21, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.ImGuiIO, ptr %1390, i32 0, i32 61
  %1392 = load i32, ptr %1391, align 8, !tbaa !160
  %1393 = icmp eq i32 %1392, 8
  br label %1399

1394:                                             ; preds = %1371
  %1395 = load ptr, ptr %21, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.ImGuiIO, ptr %1395, i32 0, i32 61
  %1397 = load i32, ptr %1396, align 8, !tbaa !160
  %1398 = icmp eq i32 %1397, 1
  br label %1399

1399:                                             ; preds = %1394, %1389
  %1400 = phi i1 [ %1393, %1389 ], [ %1398, %1394 ]
  %1401 = zext i1 %1400 to i8
  store i8 %1401, ptr %87, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1402 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1403 = trunc i8 %1402 to i1
  br i1 %1403, label %1404, label %1406

1404:                                             ; preds = %1399
  %1405 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %1405, label %1411, label %1406

1406:                                             ; preds = %1404, %1399
  %1407 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1408 = trunc i8 %1407 to i1
  br i1 %1408, label %1409, label %1425

1409:                                             ; preds = %1406
  %1410 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1410, label %1411, label %1425

1411:                                             ; preds = %1409, %1404
  %1412 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1413 = trunc i8 %1412 to i1
  br i1 %1413, label %1425, label %1414

1414:                                             ; preds = %1411
  %1415 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1416 = trunc i8 %1415 to i1
  br i1 %1416, label %1425, label %1417

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

1420:                                             ; preds = %1417
  %1421 = load ptr, ptr %45, align 8, !tbaa !5
  %1422 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1421)
  br label %1423

1423:                                             ; preds = %1420, %1417
  %1424 = phi i1 [ true, %1417 ], [ %1422, %1420 ]
  br label %1425

1425:                                             ; preds = %1423, %1414, %1411, %1409, %1406
  %1426 = phi i1 [ false, %1414 ], [ false, %1411 ], [ false, %1409 ], [ false, %1406 ], [ %1424, %1423 ]
  %1427 = zext i1 %1426 to i8
  store i8 %1427, ptr %88, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1428 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1429 = trunc i8 %1428 to i1
  br i1 %1429, label %1430, label %1432

1430:                                             ; preds = %1425
  %1431 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1431, label %1437, label %1432

1432:                                             ; preds = %1430, %1425
  %1433 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1434 = trunc i8 %1433 to i1
  br i1 %1434, label %1435, label %1448

1435:                                             ; preds = %1432
  %1436 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1436, label %1437, label %1448

1437:                                             ; preds = %1435, %1430
  %1438 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1439 = trunc i8 %1438 to i1
  br i1 %1439, label %1448, label %1440

1440:                                             ; preds = %1437
  %1441 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1442 = trunc i8 %1441 to i1
  br i1 %1442, label %1443, label %1446

1443:                                             ; preds = %1440
  %1444 = load ptr, ptr %45, align 8, !tbaa !5
  %1445 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1444)
  br label %1446

1446:                                             ; preds = %1443, %1440
  %1447 = phi i1 [ true, %1440 ], [ %1445, %1443 ]
  br label %1448

1448:                                             ; preds = %1446, %1437, %1435, %1432
  %1449 = phi i1 [ false, %1437 ], [ false, %1435 ], [ false, %1432 ], [ %1447, %1446 ]
  %1450 = zext i1 %1449 to i8
  store i8 %1450, ptr %89, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1451 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1452 = trunc i8 %1451 to i1
  br i1 %1452, label %1453, label %1455

1453:                                             ; preds = %1448
  %1454 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1454, label %1460, label %1455

1455:                                             ; preds = %1453, %1448
  %1456 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1457 = trunc i8 %1456 to i1
  br i1 %1457, label %1458, label %1464

1458:                                             ; preds = %1455
  %1459 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1459, label %1460, label %1464

1460:                                             ; preds = %1458, %1453
  %1461 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1462 = trunc i8 %1461 to i1
  %1463 = xor i1 %1462, true
  br label %1464

1464:                                             ; preds = %1460, %1458, %1455
  %1465 = phi i1 [ false, %1458 ], [ false, %1455 ], [ %1463, %1460 ]
  %1466 = zext i1 %1465 to i8
  store i8 %1466, ptr %90, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #14
  %1467 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1468 = trunc i8 %1467 to i1
  br i1 %1468, label %1469, label %1477

1469:                                             ; preds = %1464
  %1470 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1470, label %1471, label %1477

1471:                                             ; preds = %1469
  %1472 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1473 = trunc i8 %1472 to i1
  br i1 %1473, label %1477, label %1474

1474:                                             ; preds = %1471
  %1475 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1476 = trunc i8 %1475 to i1
  br label %1477

1477:                                             ; preds = %1474, %1471, %1469, %1464
  %1478 = phi i1 [ false, %1471 ], [ false, %1469 ], [ false, %1464 ], [ %1476, %1474 ]
  %1479 = zext i1 %1478 to i8
  store i8 %1479, ptr %91, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #14
  %1480 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1481 = trunc i8 %1480 to i1
  br i1 %1481, label %1482, label %1484

1482:                                             ; preds = %1477
  %1483 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1483, label %1489, label %1484

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

1487:                                             ; preds = %1484
  %1488 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1488, label %1489, label %1495

1489:                                             ; preds = %1487, %1482
  %1490 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1491 = trunc i8 %1490 to i1
  br i1 %1491, label %1495, label %1492

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

1495:                                             ; preds = %1492, %1489, %1487, %1484
  %1496 = phi i1 [ false, %1489 ], [ false, %1487 ], [ false, %1484 ], [ %1494, %1492 ]
  %1497 = zext i1 %1496 to i8
  store i8 %1497, ptr %92, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #14
  %1498 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1498, label %1501, label %1499

1499:                                             ; preds = %1495
  %1500 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br label %1501

1501:                                             ; preds = %1499, %1495
  %1502 = phi i1 [ true, %1495 ], [ %1500, %1499 ]
  %1503 = zext i1 %1502 to i8
  store i8 %1503, ptr %93, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #14
  %1504 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 0, i32 noundef 1)
  br i1 %1504, label %1505, label %1507

1505:                                             ; preds = %1501
  %1506 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 12, i1 noundef zeroext true)
  br i1 %1506, label %1507, label %1509

1507:                                             ; preds = %1505, %1501
  %1508 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 2, i32 noundef 1)
  br label %1509

1509:                                             ; preds = %1507, %1505
  %1510 = phi i1 [ true, %1505 ], [ %1508, %1507 ]
  %1511 = zext i1 %1510 to i8
  store i8 %1511, ptr %94, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #14
  %1512 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1512, label %1515, label %1513

1513:                                             ; preds = %1509
  %1514 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 1, i32 noundef 1)
  br label %1515

1515:                                             ; preds = %1513, %1509
  %1516 = phi i1 [ true, %1509 ], [ %1514, %1513 ]
  %1517 = zext i1 %1516 to i8
  store i8 %1517, ptr %95, align 1, !tbaa !42
  %1518 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1518, label %1519, label %1533

1519:                                             ; preds = %1515
  %1520 = load ptr, ptr %45, align 8, !tbaa !5
  %1521 = load i8, ptr %84, align 1, !tbaa !42, !range !40, !noundef !41
  %1522 = trunc i8 %1521 to i1
  br i1 %1522, label %1523, label %1524

1523:                                             ; preds = %1519
  br label %1529

1524:                                             ; preds = %1519
  %1525 = load i8, ptr %83, align 1, !tbaa !42, !range !40, !noundef !41
  %1526 = trunc i8 %1525 to i1
  %1527 = zext i1 %1526 to i64
  %1528 = select i1 %1526, i32 2097164, i32 2097152
  br label %1529

1529:                                             ; preds = %1524, %1523
  %1530 = phi i32 [ 2097156, %1523 ], [ %1528, %1524 ]
  %1531 = load i32, ptr %80, align 4, !tbaa !9
  %1532 = or i32 %1530, %1531
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1520, i32 noundef %1532)
  br label %1985

1533:                                             ; preds = %1515
  %1534 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1534, label %1535, label %1549

1535:                                             ; preds = %1533
  %1536 = load ptr, ptr %45, align 8, !tbaa !5
  %1537 = load i8, ptr %84, align 1, !tbaa !42, !range !40, !noundef !41
  %1538 = trunc i8 %1537 to i1
  br i1 %1538, label %1539, label %1540

1539:                                             ; preds = %1535
  br label %1545

1540:                                             ; preds = %1535
  %1541 = load i8, ptr %83, align 1, !tbaa !42, !range !40, !noundef !41
  %1542 = trunc i8 %1541 to i1
  %1543 = zext i1 %1542 to i64
  %1544 = select i1 %1542, i32 2097165, i32 2097153
  br label %1545

1545:                                             ; preds = %1540, %1539
  %1546 = phi i32 [ 2097157, %1539 ], [ %1544, %1540 ]
  %1547 = load i32, ptr %80, align 4, !tbaa !9
  %1548 = or i32 %1546, %1547
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1536, i32 noundef %1548)
  br label %1984

1549:                                             ; preds = %1533
  %1550 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1550, label %1551, label %1579

1551:                                             ; preds = %1549
  %1552 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1553 = trunc i8 %1552 to i1
  br i1 %1553, label %1554, label %1579

1554:                                             ; preds = %1551
  %1555 = load ptr, ptr %21, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.ImGuiIO, ptr %1555, i32 0, i32 40
  %1557 = load i8, ptr %1556, align 8, !tbaa !117, !range !40, !noundef !41
  %1558 = trunc i8 %1557 to i1
  br i1 %1558, label %1559, label %1570

1559:                                             ; preds = %1554
  %1560 = load ptr, ptr %38, align 8, !tbaa !5
  %1561 = load ptr, ptr %38, align 8, !tbaa !5
  %1562 = getelementptr inbounds %struct.ImGuiWindow, ptr %1561, i32 0, i32 15
  %1563 = getelementptr inbounds %struct.ImVec2, ptr %1562, i32 0, i32 1
  %1564 = load float, ptr %1563, align 4, !tbaa !107
  %1565 = load ptr, ptr %20, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.ImGuiContext, ptr %1565, i32 0, i32 6
  %1567 = load float, ptr %1566, align 8, !tbaa !45
  %1568 = fsub float %1564, %1567
  %1569 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1568, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1560, float noundef %1569)
  br label %1578

1570:                                             ; preds = %1554
  %1571 = load ptr, ptr %45, align 8, !tbaa !5
  %1572 = load i8, ptr %84, align 1, !tbaa !42, !range !40, !noundef !41
  %1573 = trunc i8 %1572 to i1
  %1574 = zext i1 %1573 to i64
  %1575 = select i1 %1573, i32 2097158, i32 2097154
  %1576 = load i32, ptr %80, align 4, !tbaa !9
  %1577 = or i32 %1575, %1576
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1571, i32 noundef %1577)
  br label %1578

1578:                                             ; preds = %1570, %1559
  br label %1983

1579:                                             ; preds = %1551, %1549
  %1580 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1580, label %1581, label %1610

1581:                                             ; preds = %1579
  %1582 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1583 = trunc i8 %1582 to i1
  br i1 %1583, label %1584, label %1610

1584:                                             ; preds = %1581
  %1585 = load ptr, ptr %21, align 8, !tbaa !5
  %1586 = getelementptr inbounds %struct.ImGuiIO, ptr %1585, i32 0, i32 40
  %1587 = load i8, ptr %1586, align 8, !tbaa !117, !range !40, !noundef !41
  %1588 = trunc i8 %1587 to i1
  br i1 %1588, label %1589, label %1601

1589:                                             ; preds = %1584
  %1590 = load ptr, ptr %38, align 8, !tbaa !5
  %1591 = load ptr, ptr %38, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.ImGuiWindow, ptr %1591, i32 0, i32 15
  %1593 = getelementptr inbounds %struct.ImVec2, ptr %1592, i32 0, i32 1
  %1594 = load float, ptr %1593, align 4, !tbaa !107
  %1595 = load ptr, ptr %20, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.ImGuiContext, ptr %1595, i32 0, i32 6
  %1597 = load float, ptr %1596, align 8, !tbaa !45
  %1598 = fadd float %1594, %1597
  %1599 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1600 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1598, float noundef %1599)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1590, float noundef %1600)
  br label %1609

1601:                                             ; preds = %1584
  %1602 = load ptr, ptr %45, align 8, !tbaa !5
  %1603 = load i8, ptr %84, align 1, !tbaa !42, !range !40, !noundef !41
  %1604 = trunc i8 %1603 to i1
  %1605 = zext i1 %1604 to i64
  %1606 = select i1 %1604, i32 2097159, i32 2097155
  %1607 = load i32, ptr %80, align 4, !tbaa !9
  %1608 = or i32 %1606, %1607
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1602, i32 noundef %1608)
  br label %1609

1609:                                             ; preds = %1601, %1589
  br label %1982

1610:                                             ; preds = %1581, %1579
  %1611 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 5, i1 noundef zeroext true)
  br i1 %1611, label %1612, label %1627

1612:                                             ; preds = %1610
  %1613 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1614 = trunc i8 %1613 to i1
  br i1 %1614, label %1615, label %1627

1615:                                             ; preds = %1612
  %1616 = load ptr, ptr %45, align 8, !tbaa !5
  %1617 = load i32, ptr %80, align 4, !tbaa !9
  %1618 = or i32 2097166, %1617
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1616, i32 noundef %1618)
  %1619 = load i32, ptr %79, align 4, !tbaa !9
  %1620 = sitofp i32 %1619 to float
  %1621 = load ptr, ptr %20, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.ImGuiContext, ptr %1621, i32 0, i32 6
  %1623 = load float, ptr %1622, align 8, !tbaa !45
  %1624 = load float, ptr %53, align 4, !tbaa !44
  %1625 = fneg float %1620
  %1626 = call float @llvm.fmuladd.f32(float %1625, float %1623, float %1624)
  store float %1626, ptr %53, align 4, !tbaa !44
  br label %1981

1627:                                             ; preds = %1612, %1610
  %1628 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 6, i1 noundef zeroext true)
  br i1 %1628, label %1629, label %1643

1629:                                             ; preds = %1627
  %1630 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1631 = trunc i8 %1630 to i1
  br i1 %1631, label %1632, label %1643

1632:                                             ; preds = %1629
  %1633 = load ptr, ptr %45, align 8, !tbaa !5
  %1634 = load i32, ptr %80, align 4, !tbaa !9
  %1635 = or i32 2097167, %1634
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1633, i32 noundef %1635)
  %1636 = load i32, ptr %79, align 4, !tbaa !9
  %1637 = sitofp i32 %1636 to float
  %1638 = load ptr, ptr %20, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.ImGuiContext, ptr %1638, i32 0, i32 6
  %1640 = load float, ptr %1639, align 8, !tbaa !45
  %1641 = load float, ptr %53, align 4, !tbaa !44
  %1642 = call float @llvm.fmuladd.f32(float %1637, float %1640, float %1641)
  store float %1642, ptr %53, align 4, !tbaa !44
  br label %1980

1643:                                             ; preds = %1629, %1627
  %1644 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1644, label %1645, label %1659

1645:                                             ; preds = %1643
  %1646 = load ptr, ptr %45, align 8, !tbaa !5
  %1647 = load ptr, ptr %21, align 8, !tbaa !5
  %1648 = getelementptr inbounds %struct.ImGuiIO, ptr %1647, i32 0, i32 40
  %1649 = load i8, ptr %1648, align 8, !tbaa !117, !range !40, !noundef !41
  %1650 = trunc i8 %1649 to i1
  br i1 %1650, label %1651, label %1654

1651:                                             ; preds = %1645
  %1652 = load i32, ptr %80, align 4, !tbaa !9
  %1653 = or i32 2097158, %1652
  br label %1657

1654:                                             ; preds = %1645
  %1655 = load i32, ptr %80, align 4, !tbaa !9
  %1656 = or i32 2097156, %1655
  br label %1657

1657:                                             ; preds = %1654, %1651
  %1658 = phi i32 [ %1653, %1651 ], [ %1656, %1654 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1646, i32 noundef %1658)
  br label %1979

1659:                                             ; preds = %1643
  %1660 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1660, label %1661, label %1675

1661:                                             ; preds = %1659
  %1662 = load ptr, ptr %45, align 8, !tbaa !5
  %1663 = load ptr, ptr %21, align 8, !tbaa !5
  %1664 = getelementptr inbounds %struct.ImGuiIO, ptr %1663, i32 0, i32 40
  %1665 = load i8, ptr %1664, align 8, !tbaa !117, !range !40, !noundef !41
  %1666 = trunc i8 %1665 to i1
  br i1 %1666, label %1667, label %1670

1667:                                             ; preds = %1661
  %1668 = load i32, ptr %80, align 4, !tbaa !9
  %1669 = or i32 2097159, %1668
  br label %1673

1670:                                             ; preds = %1661
  %1671 = load i32, ptr %80, align 4, !tbaa !9
  %1672 = or i32 2097157, %1671
  br label %1673

1673:                                             ; preds = %1670, %1667
  %1674 = phi i32 [ %1669, %1667 ], [ %1672, %1670 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1662, i32 noundef %1674)
  br label %1978

1675:                                             ; preds = %1659
  %1676 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1676, label %1677, label %1684

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

1680:                                             ; preds = %1677
  %1681 = load ptr, ptr %45, align 8, !tbaa !5
  %1682 = load i32, ptr %80, align 4, !tbaa !9
  %1683 = or i32 2097160, %1682
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1681, i32 noundef %1683)
  br label %1977

1684:                                             ; preds = %1677, %1675
  %1685 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1685, label %1686, label %1723

1686:                                             ; preds = %1684
  %1687 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1688 = trunc i8 %1687 to i1
  br i1 %1688, label %1723, label %1689

1689:                                             ; preds = %1686
  %1690 = load ptr, ptr %45, align 8, !tbaa !5
  %1691 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1690)
  br i1 %1691, label %1719, label %1692

1692:                                             ; preds = %1689
  %1693 = load i8, ptr %83, align 1, !tbaa !42, !range !40, !noundef !41
  %1694 = trunc i8 %1693 to i1
  br i1 %1694, label %1695, label %1697

1695:                                             ; preds = %1692
  %1696 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1696, i32 noundef 6291468)
  br label %1718

1697:                                             ; preds = %1692
  %1698 = load i8, ptr %81, align 1, !tbaa !42, !range !40, !noundef !41
  %1699 = trunc i8 %1698 to i1
  br i1 %1699, label %1700, label %1717

1700:                                             ; preds = %1697
  %1701 = load ptr, ptr %21, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.ImGuiIO, ptr %1701, i32 0, i32 43
  %1703 = load i8, ptr %1702, align 1, !tbaa !153, !range !40, !noundef !41
  %1704 = trunc i8 %1703 to i1
  br i1 %1704, label %1705, label %1717

1705:                                             ; preds = %1700
  %1706 = load ptr, ptr %21, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.ImGuiIO, ptr %1706, i32 0, i32 42
  %1708 = load i8, ptr %1707, align 2, !tbaa !152, !range !40, !noundef !41
  %1709 = trunc i8 %1708 to i1
  br i1 %1709, label %1717, label %1710

1710:                                             ; preds = %1705
  %1711 = load ptr, ptr %21, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.ImGuiIO, ptr %1711, i32 0, i32 40
  %1713 = load i8, ptr %1712, align 8, !tbaa !117, !range !40, !noundef !41
  %1714 = trunc i8 %1713 to i1
  br i1 %1714, label %1717, label %1715

1715:                                             ; preds = %1710
  %1716 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1716, i32 noundef 6291460)
  br label %1717

1717:                                             ; preds = %1715, %1710, %1705, %1700, %1697
  br label %1718

1718:                                             ; preds = %1717, %1695
  br label %1719

1719:                                             ; preds = %1718, %1689
  %1720 = load ptr, ptr %45, align 8, !tbaa !5
  %1721 = load i32, ptr %80, align 4, !tbaa !9
  %1722 = or i32 2097161, %1721
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1720, i32 noundef %1722)
  br label %1976

1723:                                             ; preds = %1686, %1684
  %1724 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1725 = trunc i8 %1724 to i1
  br i1 %1725, label %1726, label %1764

1726:                                             ; preds = %1723
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #14
  %1727 = load i32, ptr %15, align 4, !tbaa !9
  %1728 = and i32 %1727, 2048
  %1729 = icmp ne i32 %1728, 0
  %1730 = zext i1 %1729 to i8
  store i8 %1730, ptr %96, align 1, !tbaa !42
  %1731 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1732 = trunc i8 %1731 to i1
  br i1 %1732, label %1733, label %1749

1733:                                             ; preds = %1726
  %1734 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1735 = trunc i8 %1734 to i1
  br i1 %1735, label %1736, label %1741

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

1741:                                             ; preds = %1736, %1733
  %1742 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1743 = trunc i8 %1742 to i1
  br i1 %1743, label %1750, label %1744

1744:                                             ; preds = %1741
  %1745 = load ptr, ptr %21, align 8, !tbaa !5
  %1746 = getelementptr inbounds %struct.ImGuiIO, ptr %1745, i32 0, i32 40
  %1747 = load i8, ptr %1746, align 8, !tbaa !117, !range !40, !noundef !41
  %1748 = trunc i8 %1747 to i1
  br i1 %1748, label %1749, label %1750

1749:                                             ; preds = %1744, %1736, %1726
  store i8 1, ptr %51, align 1, !tbaa !42
  store i8 1, ptr %63, align 1, !tbaa !42
  br label %1763

1750:                                             ; preds = %1744, %1741
  %1751 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1752 = trunc i8 %1751 to i1
  br i1 %1752, label %1762, label %1753

1753:                                             ; preds = %1750
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #14
  store i32 10, ptr %97, align 4, !tbaa !9
  %1754 = load i32, ptr %15, align 4, !tbaa !9
  %1755 = load ptr, ptr %16, align 8, !tbaa !5
  %1756 = load ptr, ptr %17, align 8, !tbaa !5
  %1757 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %97, i32 noundef %1754, ptr noundef %1755, ptr noundef %1756, i32 noundef 2)
  br i1 %1757, label %1758, label %1761

1758:                                             ; preds = %1753
  %1759 = load ptr, ptr %45, align 8, !tbaa !5
  %1760 = load i32, ptr %97, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1759, i32 noundef %1760)
  br label %1761

1761:                                             ; preds = %1758, %1753
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #14
  br label %1762

1762:                                             ; preds = %1761, %1750
  br label %1763

1763:                                             ; preds = %1762, %1749
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #14
  br label %1975

1764:                                             ; preds = %1723
  %1765 = load i8, ptr %94, align 1, !tbaa !42, !range !40, !noundef !41
  %1766 = trunc i8 %1765 to i1
  br i1 %1766, label %1767, label %1775

1767:                                             ; preds = %1764
  %1768 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1769 = trunc i8 %1768 to i1
  %1770 = xor i1 %1769, true
  br i1 %1770, label %1771, label %1772

1771:                                             ; preds = %1767
  br label %1774

1772:                                             ; preds = %1767
  call void @__assert_fail(ptr noundef @.str.70, ptr noundef @.str.2, i32 noundef 4304, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1773:                                             ; No predecessors!
  br label %1774

1774:                                             ; preds = %1773, %1771
  store i8 1, ptr %51, align 1, !tbaa !42
  store i8 1, ptr %63, align 1, !tbaa !42
  br label %1974

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

1778:                                             ; preds = %1775
  store i8 1, ptr %78, align 1, !tbaa !42
  store i8 1, ptr %51, align 1, !tbaa !42
  br label %1973

1779:                                             ; preds = %1775
  %1780 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1781 = trunc i8 %1780 to i1
  br i1 %1781, label %1785, label %1782

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

1785:                                             ; preds = %1782, %1779
  %1786 = load ptr, ptr %45, align 8, !tbaa !5
  %1787 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1788 = trunc i8 %1787 to i1
  %1789 = zext i1 %1788 to i64
  %1790 = select i1 %1788, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1786, i32 noundef %1790)
  %1791 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1791)
  br label %1972

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

1795:                                             ; preds = %1792
  %1796 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1796, label %1797, label %1801

1797:                                             ; preds = %1795
  %1798 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %1798)
  %1799 = load ptr, ptr %45, align 8, !tbaa !5
  %1800 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1799, i32 0, i32 11
  store i8 1, ptr %1800, align 4, !tbaa !151
  br label %1971

1801:                                             ; preds = %1795, %1792
  %1802 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1803 = trunc i8 %1802 to i1
  br i1 %1803, label %1807, label %1804

1804:                                             ; preds = %1801
  %1805 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1806 = trunc i8 %1805 to i1
  br i1 %1806, label %1807, label %1901

1807:                                             ; preds = %1804, %1801
  %1808 = load ptr, ptr %21, align 8, !tbaa !5
  %1809 = getelementptr inbounds %struct.ImGuiIO, ptr %1808, i32 0, i32 32
  %1810 = load ptr, ptr %1809, align 8, !tbaa !163
  %1811 = icmp ne ptr %1810, null
  br i1 %1811, label %1812, label %1885

1812:                                             ; preds = %1807
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #14
  %1813 = load ptr, ptr %45, align 8, !tbaa !5
  %1814 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1813)
  br i1 %1814, label %1815, label %1825

1815:                                             ; preds = %1812
  %1816 = load ptr, ptr %45, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1816, i32 0, i32 9
  %1818 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1817, i32 0, i32 1
  %1819 = load i32, ptr %1818, align 4, !tbaa !164
  %1820 = load ptr, ptr %45, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1820, i32 0, i32 9
  %1822 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1821, i32 0, i32 2
  %1823 = load i32, ptr %1822, align 4, !tbaa !165
  %1824 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1819, i32 noundef %1823)
  br label %1826

1825:                                             ; preds = %1812
  br label %1826

1826:                                             ; preds = %1825, %1815
  %1827 = phi i32 [ %1824, %1815 ], [ 0, %1825 ]
  store i32 %1827, ptr %98, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #14
  %1828 = load ptr, ptr %45, align 8, !tbaa !5
  %1829 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1828)
  br i1 %1829, label %1830, label %1840

1830:                                             ; preds = %1826
  %1831 = load ptr, ptr %45, align 8, !tbaa !5
  %1832 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1831, i32 0, i32 9
  %1833 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1832, i32 0, i32 1
  %1834 = load i32, ptr %1833, align 4, !tbaa !164
  %1835 = load ptr, ptr %45, align 8, !tbaa !5
  %1836 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1835, i32 0, i32 9
  %1837 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1836, i32 0, i32 2
  %1838 = load i32, ptr %1837, align 4, !tbaa !165
  %1839 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1834, i32 noundef %1838)
  br label %1844

1840:                                             ; preds = %1826
  %1841 = load ptr, ptr %45, align 8, !tbaa !5
  %1842 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1841, i32 0, i32 1
  %1843 = load i32, ptr %1842, align 4, !tbaa !112
  br label %1844

1844:                                             ; preds = %1840, %1830
  %1845 = phi i32 [ %1839, %1830 ], [ %1843, %1840 ]
  store i32 %1845, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #14
  %1846 = load ptr, ptr %45, align 8, !tbaa !5
  %1847 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1846, i32 0, i32 3
  %1848 = getelementptr inbounds %struct.ImVector.5, ptr %1847, i32 0, i32 2
  %1849 = load ptr, ptr %1848, align 8, !tbaa !111
  %1850 = load i32, ptr %98, align 4, !tbaa !9
  %1851 = sext i32 %1850 to i64
  %1852 = getelementptr inbounds i16, ptr %1849, i64 %1851
  %1853 = load ptr, ptr %45, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1853, i32 0, i32 3
  %1855 = getelementptr inbounds %struct.ImVector.5, ptr %1854, i32 0, i32 2
  %1856 = load ptr, ptr %1855, align 8, !tbaa !111
  %1857 = load i32, ptr %99, align 4, !tbaa !9
  %1858 = sext i32 %1857 to i64
  %1859 = getelementptr inbounds i16, ptr %1856, i64 %1858
  %1860 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1852, ptr noundef %1859)
  %1861 = add nsw i32 %1860, 1
  store i32 %1861, ptr %100, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #14
  %1862 = load i32, ptr %100, align 4, !tbaa !9
  %1863 = sext i32 %1862 to i64
  %1864 = mul i64 %1863, 1
  %1865 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1864)
  store ptr %1865, ptr %101, align 8, !tbaa !5
  %1866 = load ptr, ptr %101, align 8, !tbaa !5
  %1867 = load i32, ptr %100, align 4, !tbaa !9
  %1868 = load ptr, ptr %45, align 8, !tbaa !5
  %1869 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1868, i32 0, i32 3
  %1870 = getelementptr inbounds %struct.ImVector.5, ptr %1869, i32 0, i32 2
  %1871 = load ptr, ptr %1870, align 8, !tbaa !111
  %1872 = load i32, ptr %98, align 4, !tbaa !9
  %1873 = sext i32 %1872 to i64
  %1874 = getelementptr inbounds i16, ptr %1871, i64 %1873
  %1875 = load ptr, ptr %45, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1875, i32 0, i32 3
  %1877 = getelementptr inbounds %struct.ImVector.5, ptr %1876, i32 0, i32 2
  %1878 = load ptr, ptr %1877, align 8, !tbaa !111
  %1879 = load i32, ptr %99, align 4, !tbaa !9
  %1880 = sext i32 %1879 to i64
  %1881 = getelementptr inbounds i16, ptr %1878, i64 %1880
  %1882 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1866, i32 noundef %1867, ptr noundef %1874, ptr noundef %1881)
  %1883 = load ptr, ptr %101, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1883)
  %1884 = load ptr, ptr %101, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1884)
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #14
  br label %1885

1885:                                             ; preds = %1844, %1807
  %1886 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1887 = trunc i8 %1886 to i1
  br i1 %1887, label %1888, label %1900

1888:                                             ; preds = %1885
  %1889 = load ptr, ptr %45, align 8, !tbaa !5
  %1890 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1889)
  br i1 %1890, label %1893, label %1891

1891:                                             ; preds = %1888
  %1892 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %1892)
  br label %1893

1893:                                             ; preds = %1891, %1888
  %1894 = load ptr, ptr %45, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1894, i32 0, i32 11
  store i8 1, ptr %1895, align 4, !tbaa !151
  %1896 = load ptr, ptr %45, align 8, !tbaa !5
  %1897 = load ptr, ptr %45, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1897, i32 0, i32 9
  %1899 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1896, ptr noundef %1898)
  br label %1900

1900:                                             ; preds = %1893, %1885
  br label %1970

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

1904:                                             ; preds = %1901
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #14
  %1905 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %1905, ptr %102, align 8, !tbaa !5
  %1906 = load ptr, ptr %102, align 8, !tbaa !5
  %1907 = icmp ne ptr %1906, null
  br i1 %1907, label %1908, label %1968

1908:                                             ; preds = %1904
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #14
  %1909 = load ptr, ptr %102, align 8, !tbaa !5
  %1910 = call i64 @strlen(ptr noundef %1909) #16
  %1911 = trunc i64 %1910 to i32
  store i32 %1911, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #14
  %1912 = load i32, ptr %103, align 4, !tbaa !9
  %1913 = add nsw i32 %1912, 1
  %1914 = sext i32 %1913 to i64
  %1915 = mul i64 %1914, 2
  %1916 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1915)
  store ptr %1916, ptr %104, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #14
  store i32 0, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #14
  %1917 = load ptr, ptr %102, align 8, !tbaa !5
  store ptr %1917, ptr %106, align 8, !tbaa !5
  br label %1918

1918:                                             ; preds = %1948, %1946, %1908
  %1919 = load ptr, ptr %106, align 8, !tbaa !5
  %1920 = load i8, ptr %1919, align 1, !tbaa !124
  %1921 = icmp ne i8 %1920, 0
  br i1 %1921, label %1923, label %1922

1922:                                             ; preds = %1918
  store i32 5, ptr %19, align 4
  br label %1949

1923:                                             ; preds = %1918
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #14
  %1924 = load ptr, ptr %106, align 8, !tbaa !5
  %1925 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %107, ptr noundef %1924, ptr noundef null)
  %1926 = load ptr, ptr %106, align 8, !tbaa !5
  %1927 = sext i32 %1925 to i64
  %1928 = getelementptr inbounds i8, ptr %1926, i64 %1927
  store ptr %1928, ptr %106, align 8, !tbaa !5
  %1929 = load i32, ptr %107, align 4, !tbaa !9
  %1930 = icmp eq i32 %1929, 0
  br i1 %1930, label %1931, label %1932

1931:                                             ; preds = %1923
  store i32 5, ptr %19, align 4
  br label %1946

1932:                                             ; preds = %1923
  %1933 = load i32, ptr %15, align 4, !tbaa !9
  %1934 = load ptr, ptr %16, align 8, !tbaa !5
  %1935 = load ptr, ptr %17, align 8, !tbaa !5
  %1936 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %107, i32 noundef %1933, ptr noundef %1934, ptr noundef %1935, i32 noundef 5)
  br i1 %1936, label %1938, label %1937

1937:                                             ; preds = %1932
  store i32 6, ptr %19, align 4
  br label %1946, !llvm.loop !166

1938:                                             ; preds = %1932
  %1939 = load i32, ptr %107, align 4, !tbaa !9
  %1940 = trunc i32 %1939 to i16
  %1941 = load ptr, ptr %104, align 8, !tbaa !5
  %1942 = load i32, ptr %105, align 4, !tbaa !9
  %1943 = add nsw i32 %1942, 1
  store i32 %1943, ptr %105, align 4, !tbaa !9
  %1944 = sext i32 %1942 to i64
  %1945 = getelementptr inbounds i16, ptr %1941, i64 %1944
  store i16 %1940, ptr %1945, align 2, !tbaa !155
  store i32 0, ptr %19, align 4
  br label %1946

1946:                                             ; preds = %1938, %1937, %1931
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #14
  %1947 = load i32, ptr %19, align 4
  switch i32 %1947, label %1949 [
    i32 0, label %1948
    i32 6, label %1918
  ]

1948:                                             ; preds = %1946
  br label %1918, !llvm.loop !166

1949:                                             ; preds = %1946, %1922
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #14
  br label %1950

1950:                                             ; preds = %1949
  %1951 = load ptr, ptr %104, align 8, !tbaa !5
  %1952 = load i32, ptr %105, align 4, !tbaa !9
  %1953 = sext i32 %1952 to i64
  %1954 = getelementptr inbounds i16, ptr %1951, i64 %1953
  store i16 0, ptr %1954, align 2, !tbaa !155
  %1955 = load i32, ptr %105, align 4, !tbaa !9
  %1956 = icmp sgt i32 %1955, 0
  br i1 %1956, label %1957, label %1966

1957:                                             ; preds = %1950
  %1958 = load ptr, ptr %45, align 8, !tbaa !5
  %1959 = load ptr, ptr %45, align 8, !tbaa !5
  %1960 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1959, i32 0, i32 9
  %1961 = load ptr, ptr %104, align 8, !tbaa !5
  %1962 = load i32, ptr %105, align 4, !tbaa !9
  %1963 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1958, ptr noundef %1960, ptr noundef %1961, i32 noundef %1962)
  %1964 = load ptr, ptr %45, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1964, i32 0, i32 11
  store i8 1, ptr %1965, align 4, !tbaa !151
  br label %1966

1966:                                             ; preds = %1957, %1950
  %1967 = load ptr, ptr %104, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1967)
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  br label %1968

1968:                                             ; preds = %1966, %1904
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #14
  br label %1969

1969:                                             ; preds = %1968, %1901
  br label %1970

1970:                                             ; preds = %1969, %1900
  br label %1971

1971:                                             ; preds = %1970, %1797
  br label %1972

1972:                                             ; preds = %1971, %1785
  br label %1973

1973:                                             ; preds = %1972, %1778
  br label %1974

1974:                                             ; preds = %1973, %1774
  br label %1975

1975:                                             ; preds = %1974, %1763
  br label %1976

1976:                                             ; preds = %1975, %1719
  br label %1977

1977:                                             ; preds = %1976, %1680
  br label %1978

1978:                                             ; preds = %1977, %1673
  br label %1979

1979:                                             ; preds = %1978, %1657
  br label %1980

1980:                                             ; preds = %1979, %1632
  br label %1981

1981:                                             ; preds = %1980, %1615
  br label %1982

1982:                                             ; preds = %1981, %1609
  br label %1983

1983:                                             ; preds = %1982, %1578
  br label %1984

1984:                                             ; preds = %1983, %1545
  br label %1985

1985:                                             ; preds = %1984, %1529
  %1986 = load ptr, ptr %45, align 8, !tbaa !5
  %1987 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1986)
  br i1 %1987, label %1988, label %1991

1988:                                             ; preds = %1985
  %1989 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %1990 = trunc i8 %1989 to i1
  br label %1991

1991:                                             ; preds = %1988, %1985
  %1992 = phi i1 [ false, %1985 ], [ %1990, %1988 ]
  %1993 = zext i1 %1992 to i32
  %1994 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %1995 = trunc i8 %1994 to i1
  %1996 = zext i1 %1995 to i32
  %1997 = or i32 %1996, %1993
  %1998 = icmp ne i32 %1997, 0
  %1999 = zext i1 %1998 to i8
  store i8 %1999, ptr %61, align 1, !tbaa !42
  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 1, ptr %87) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #14
  br label %2000

2000:                                             ; preds = %1991, %1278, %1273, %1267
  %2001 = load ptr, ptr %20, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.ImGuiContext, ptr %2001, i32 0, i32 44
  %2003 = load i32, ptr %2002, align 4, !tbaa !102
  %2004 = load i32, ptr %29, align 4, !tbaa !9
  %2005 = icmp eq i32 %2003, %2004
  br i1 %2005, label %2006, label %2494

2006:                                             ; preds = %2000
  %2007 = load ptr, ptr %45, align 8, !tbaa !5
  %2008 = icmp ne ptr %2007, null
  br i1 %2008, label %2009, label %2010

2009:                                             ; preds = %2006
  br label %2012

2010:                                             ; preds = %2006
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.2, i32 noundef 4377, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2011:                                             ; No predecessors!
  br label %2012

2012:                                             ; preds = %2011, %2009
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #14
  store ptr null, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #14
  store i32 0, ptr %109, align 4, !tbaa !9
  %2013 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %2014 = trunc i8 %2013 to i1
  br i1 %2014, label %2015, label %2080

2015:                                             ; preds = %2012
  %2016 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2017 = trunc i8 %2016 to i1
  br i1 %2017, label %2079, label %2018

2018:                                             ; preds = %2015
  %2019 = load ptr, ptr %12, align 8, !tbaa !5
  %2020 = load ptr, ptr %45, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2020, i32 0, i32 5
  %2022 = getelementptr inbounds %struct.ImVector.26, ptr %2021, i32 0, i32 2
  %2023 = load ptr, ptr %2022, align 8, !tbaa !109
  %2024 = call i32 @strcmp(ptr noundef %2019, ptr noundef %2023) #16
  %2025 = icmp ne i32 %2024, 0
  br i1 %2025, label %2026, label %2079

2026:                                             ; preds = %2018
  %2027 = load ptr, ptr %45, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2027, i32 0, i32 5
  %2029 = getelementptr inbounds %struct.ImVector.26, ptr %2028, i32 0, i32 2
  %2030 = load ptr, ptr %2029, align 8, !tbaa !109
  store ptr %2030, ptr %108, align 8, !tbaa !5
  %2031 = load ptr, ptr %45, align 8, !tbaa !5
  %2032 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2031, i32 0, i32 5
  %2033 = getelementptr inbounds %struct.ImVector.26, ptr %2032, i32 0, i32 0
  %2034 = load i32, ptr %2033, align 8, !tbaa !167
  %2035 = sub nsw i32 %2034, 1
  store i32 %2035, ptr %109, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110)
  %2036 = load i32, ptr %109, align 4, !tbaa !9
  %2037 = icmp sgt i32 %2036, 0
  br i1 %2037, label %2038, label %2063

2038:                                             ; preds = %2026
  %2039 = load ptr, ptr %108, align 8, !tbaa !5
  %2040 = load ptr, ptr %108, align 8, !tbaa !5
  %2041 = load i32, ptr %109, align 4, !tbaa !9
  %2042 = sext i32 %2041 to i64
  %2043 = getelementptr inbounds i8, ptr %2040, i64 %2042
  %2044 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2039, ptr noundef %2043)
          to label %2045 unwind label %2059

2045:                                             ; preds = %2038
  %2046 = add nsw i32 %2044, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %110, i32 noundef %2046)
          to label %2047 unwind label %2059

2047:                                             ; preds = %2045
  %2048 = getelementptr inbounds %struct.ImVector.5, ptr %110, i32 0, i32 2
  %2049 = load ptr, ptr %2048, align 8, !tbaa !168
  %2050 = getelementptr inbounds %struct.ImVector.5, ptr %110, i32 0, i32 0
  %2051 = load i32, ptr %2050, align 8, !tbaa !169
  %2052 = load ptr, ptr %108, align 8, !tbaa !5
  %2053 = load ptr, ptr %108, align 8, !tbaa !5
  %2054 = load i32, ptr %109, align 4, !tbaa !9
  %2055 = sext i32 %2054 to i64
  %2056 = getelementptr inbounds i8, ptr %2053, i64 %2055
  %2057 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2049, i32 noundef %2051, ptr noundef %2052, ptr noundef %2056, ptr noundef null)
          to label %2058 unwind label %2059

2058:                                             ; preds = %2047
  br label %2063

2059:                                             ; preds = %2076, %2047, %2045, %2038
  %2060 = landingpad { ptr, i32 }
          cleanup
  %2061 = extractvalue { ptr, i32 } %2060, 0
  store ptr %2061, ptr %111, align 8
  %2062 = extractvalue { ptr, i32 } %2060, 1
  store i32 %2062, ptr %112, align 4
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #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 %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 4, 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 1, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #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 %3294

2063:                                             ; preds = %2058, %2026
  %2064 = load ptr, ptr %45, align 8, !tbaa !5
  %2065 = load ptr, ptr %45, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2065, i32 0, i32 9
  %2067 = getelementptr inbounds %struct.ImVector.5, ptr %110, i32 0, i32 2
  %2068 = load ptr, ptr %2067, align 8, !tbaa !168
  %2069 = load i32, ptr %109, align 4, !tbaa !9
  %2070 = icmp sgt i32 %2069, 0
  br i1 %2070, label %2071, label %2075

2071:                                             ; preds = %2063
  %2072 = getelementptr inbounds %struct.ImVector.5, ptr %110, i32 0, i32 0
  %2073 = load i32, ptr %2072, align 8, !tbaa !169
  %2074 = sub nsw i32 %2073, 1
  br label %2076

2075:                                             ; preds = %2063
  br label %2076

2076:                                             ; preds = %2075, %2071
  %2077 = phi i32 [ %2074, %2071 ], [ 0, %2075 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2064, ptr noundef %2066, ptr noundef %2068, i32 noundef %2077)
          to label %2078 unwind label %2059

2078:                                             ; preds = %2076
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %110) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #14
  br label %2079

2079:                                             ; preds = %2078, %2018, %2015
  br label %2080

2080:                                             ; preds = %2079, %2012
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #14
  %2081 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %2082 = trunc i8 %2081 to i1
  br i1 %2082, label %2083, label %2092

2083:                                             ; preds = %2080
  %2084 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2085 = trunc i8 %2084 to i1
  br i1 %2085, label %2086, label %2090

2086:                                             ; preds = %2083
  %2087 = load i32, ptr %15, align 4, !tbaa !9
  %2088 = and i32 %2087, 32
  %2089 = icmp ne i32 %2088, 0
  br label %2090

2090:                                             ; preds = %2086, %2083
  %2091 = phi i1 [ false, %2083 ], [ %2089, %2086 ]
  br label %2092

2092:                                             ; preds = %2090, %2080
  %2093 = phi i1 [ true, %2080 ], [ %2091, %2090 ]
  %2094 = zext i1 %2093 to i8
  store i8 %2094, ptr %113, align 1, !tbaa !42
  %2095 = load i8, ptr %113, align 1, !tbaa !42, !range !40, !noundef !41
  %2096 = trunc i8 %2095 to i1
  br i1 %2096, label %2097, label %2434

2097:                                             ; preds = %2092
  %2098 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2099 = trunc i8 %2098 to i1
  br i1 %2099, label %2124, label %2100

2100:                                             ; preds = %2097
  %2101 = load ptr, ptr %45, align 8, !tbaa !5
  %2102 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2101, i32 0, i32 6
  store i8 1, ptr %2102, align 8, !tbaa !110
  %2103 = load ptr, ptr %45, align 8, !tbaa !5
  %2104 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2103, i32 0, i32 4
  %2105 = load ptr, ptr %45, align 8, !tbaa !5
  %2106 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2105, i32 0, i32 3
  %2107 = getelementptr inbounds %struct.ImVector.5, ptr %2106, i32 0, i32 0
  %2108 = load i32, ptr %2107, align 8, !tbaa !122
  %2109 = mul nsw i32 %2108, 4
  %2110 = add nsw i32 %2109, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2104, i32 noundef %2110)
  %2111 = load ptr, ptr %45, align 8, !tbaa !5
  %2112 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2111, i32 0, i32 4
  %2113 = getelementptr inbounds %struct.ImVector.26, ptr %2112, i32 0, i32 2
  %2114 = load ptr, ptr %2113, align 8, !tbaa !123
  %2115 = load ptr, ptr %45, align 8, !tbaa !5
  %2116 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2115, i32 0, i32 4
  %2117 = getelementptr inbounds %struct.ImVector.26, ptr %2116, i32 0, i32 0
  %2118 = load i32, ptr %2117, align 8, !tbaa !170
  %2119 = load ptr, ptr %45, align 8, !tbaa !5
  %2120 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2119, i32 0, i32 3
  %2121 = getelementptr inbounds %struct.ImVector.5, ptr %2120, i32 0, i32 2
  %2122 = load ptr, ptr %2121, align 8, !tbaa !111
  %2123 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2114, i32 noundef %2118, ptr noundef %2122, ptr noundef null)
  br label %2124

2124:                                             ; preds = %2100, %2097
  %2125 = load i32, ptr %15, align 4, !tbaa !9
  %2126 = and i32 %2125, 524736
  %2127 = icmp ne i32 %2126, 0
  br i1 %2127, label %2128, label %2414

2128:                                             ; preds = %2124
  %2129 = load ptr, ptr %16, align 8, !tbaa !5
  %2130 = icmp ne ptr %2129, null
  br i1 %2130, label %2131, label %2132

2131:                                             ; preds = %2128
  br label %2134

2132:                                             ; preds = %2128
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.2, i32 noundef 4418, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2133:                                             ; No predecessors!
  br label %2134

2134:                                             ; preds = %2133, %2131
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #14
  store i32 0, ptr %114, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #14
  store i32 22, ptr %115, align 4, !tbaa !9
  %2135 = load i32, ptr %15, align 4, !tbaa !9
  %2136 = and i32 %2135, 64
  %2137 = icmp ne i32 %2136, 0
  br i1 %2137, label %2138, label %2141

2138:                                             ; preds = %2134
  %2139 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %2139, label %2140, label %2141

2140:                                             ; preds = %2138
  store i32 64, ptr %114, align 4, !tbaa !9
  store i32 0, ptr %115, align 4, !tbaa !9
  br label %2174

2141:                                             ; preds = %2138, %2134
  %2142 = load i32, ptr %15, align 4, !tbaa !9
  %2143 = and i32 %2142, 128
  %2144 = icmp ne i32 %2143, 0
  br i1 %2144, label %2145, label %2148

2145:                                             ; preds = %2141
  %2146 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %2146, label %2147, label %2148

2147:                                             ; preds = %2145
  store i32 128, ptr %114, align 4, !tbaa !9
  store i32 3, ptr %115, align 4, !tbaa !9
  br label %2173

2148:                                             ; preds = %2145, %2141
  %2149 = load i32, ptr %15, align 4, !tbaa !9
  %2150 = and i32 %2149, 128
  %2151 = icmp ne i32 %2150, 0
  br i1 %2151, label %2152, label %2155

2152:                                             ; preds = %2148
  %2153 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %2153, label %2154, label %2155

2154:                                             ; preds = %2152
  store i32 128, ptr %114, align 4, !tbaa !9
  store i32 4, ptr %115, align 4, !tbaa !9
  br label %2172

2155:                                             ; preds = %2152, %2148
  %2156 = load i32, ptr %15, align 4, !tbaa !9
  %2157 = and i32 %2156, 524288
  %2158 = icmp ne i32 %2157, 0
  br i1 %2158, label %2159, label %2165

2159:                                             ; preds = %2155
  %2160 = load ptr, ptr %45, align 8, !tbaa !5
  %2161 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2160, i32 0, i32 13
  %2162 = load i8, ptr %2161, align 2, !tbaa !135, !range !40, !noundef !41
  %2163 = trunc i8 %2162 to i1
  br i1 %2163, label %2164, label %2165

2164:                                             ; preds = %2159
  store i32 524288, ptr %114, align 4, !tbaa !9
  br label %2171

2165:                                             ; preds = %2159, %2155
  %2166 = load i32, ptr %15, align 4, !tbaa !9
  %2167 = and i32 %2166, 256
  %2168 = icmp ne i32 %2167, 0
  br i1 %2168, label %2169, label %2170

2169:                                             ; preds = %2165
  store i32 256, ptr %114, align 4, !tbaa !9
  br label %2170

2170:                                             ; preds = %2169, %2165
  br label %2171

2171:                                             ; preds = %2170, %2164
  br label %2172

2172:                                             ; preds = %2171, %2154
  br label %2173

2173:                                             ; preds = %2172, %2147
  br label %2174

2174:                                             ; preds = %2173, %2140
  %2175 = load i32, ptr %114, align 4, !tbaa !9
  %2176 = icmp ne i32 %2175, 0
  br i1 %2176, label %2177, label %2413

2177:                                             ; preds = %2174
  call void @llvm.lifetime.start.p0(i64 56, ptr %116) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %116)
  call void @llvm.memset.p0.i64(ptr align 8 %116, i8 0, i64 56, i1 false)
  %2178 = load i32, ptr %114, align 4, !tbaa !9
  %2179 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 0
  store i32 %2178, ptr %2179, align 8, !tbaa !171
  %2180 = load i32, ptr %15, align 4, !tbaa !9
  %2181 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 1
  store i32 %2180, ptr %2181, align 4, !tbaa !173
  %2182 = load ptr, ptr %17, align 8, !tbaa !5
  %2183 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 2
  store ptr %2182, ptr %2183, align 8, !tbaa !174
  %2184 = load i32, ptr %115, align 4, !tbaa !9
  %2185 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 4
  store i32 %2184, ptr %2185, align 4, !tbaa !175
  %2186 = load ptr, ptr %45, align 8, !tbaa !5
  %2187 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2186, i32 0, i32 4
  %2188 = getelementptr inbounds %struct.ImVector.26, ptr %2187, i32 0, i32 2
  %2189 = load ptr, ptr %2188, align 8, !tbaa !123
  %2190 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  store ptr %2189, ptr %2190, align 8, !tbaa !176
  %2191 = load ptr, ptr %45, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2191, i32 0, i32 2
  %2193 = load i32, ptr %2192, align 8, !tbaa !113
  %2194 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 6
  store i32 %2193, ptr %2194, align 8, !tbaa !177
  %2195 = load ptr, ptr %45, align 8, !tbaa !5
  %2196 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2195, i32 0, i32 7
  %2197 = load i32, ptr %2196, align 4, !tbaa !136
  %2198 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 7
  store i32 %2197, ptr %2198, align 4, !tbaa !178
  %2199 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 8
  store i8 0, ptr %2199, align 8, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #14
  %2200 = load ptr, ptr %45, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2200, i32 0, i32 3
  %2202 = getelementptr inbounds %struct.ImVector.5, ptr %2201, i32 0, i32 2
  %2203 = load ptr, ptr %2202, align 8, !tbaa !111
  store ptr %2203, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #14
  %2204 = load ptr, ptr %117, align 8, !tbaa !5
  %2205 = load ptr, ptr %117, align 8, !tbaa !5
  %2206 = load ptr, ptr %45, align 8, !tbaa !5
  %2207 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2206, i32 0, i32 9
  %2208 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2207, i32 0, i32 0
  %2209 = load i32, ptr %2208, align 4, !tbaa !180
  %2210 = sext i32 %2209 to i64
  %2211 = getelementptr inbounds i16, ptr %2205, i64 %2210
  %2212 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2204, ptr noundef %2211)
  %2213 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 9
  store i32 %2212, ptr %2213, align 4, !tbaa !181
  store i32 %2212, ptr %118, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #14
  %2214 = load ptr, ptr %117, align 8, !tbaa !5
  %2215 = load ptr, ptr %117, align 8, !tbaa !5
  %2216 = load ptr, ptr %45, align 8, !tbaa !5
  %2217 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2216, i32 0, i32 9
  %2218 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2217, i32 0, i32 1
  %2219 = load i32, ptr %2218, align 4, !tbaa !164
  %2220 = sext i32 %2219 to i64
  %2221 = getelementptr inbounds i16, ptr %2215, i64 %2220
  %2222 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2214, ptr noundef %2221)
  %2223 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 10
  store i32 %2222, ptr %2223, align 8, !tbaa !182
  store i32 %2222, ptr %119, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #14
  %2224 = load ptr, ptr %117, align 8, !tbaa !5
  %2225 = load ptr, ptr %117, align 8, !tbaa !5
  %2226 = load ptr, ptr %45, align 8, !tbaa !5
  %2227 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2226, i32 0, i32 9
  %2228 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2227, i32 0, i32 2
  %2229 = load i32, ptr %2228, align 4, !tbaa !165
  %2230 = sext i32 %2229 to i64
  %2231 = getelementptr inbounds i16, ptr %2225, i64 %2230
  %2232 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2224, ptr noundef %2231)
  %2233 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 11
  store i32 %2232, ptr %2233, align 4, !tbaa !183
  store i32 %2232, ptr %120, align 4, !tbaa !9
  %2234 = load ptr, ptr %16, align 8, !tbaa !5
  %2235 = call noundef i32 %2234(ptr noundef %116)
  %2236 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2237 = load ptr, ptr %2236, align 8, !tbaa !176
  %2238 = load ptr, ptr %45, align 8, !tbaa !5
  %2239 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2238, i32 0, i32 4
  %2240 = getelementptr inbounds %struct.ImVector.26, ptr %2239, i32 0, i32 2
  %2241 = load ptr, ptr %2240, align 8, !tbaa !123
  %2242 = icmp eq ptr %2237, %2241
  br i1 %2242, label %2243, label %2244

2243:                                             ; preds = %2177
  br label %2246

2244:                                             ; preds = %2177
  call void @__assert_fail(ptr noundef @.str.71, ptr noundef @.str.2, i32 noundef 4471, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2245:                                             ; No predecessors!
  br label %2246

2246:                                             ; preds = %2245, %2243
  %2247 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 7
  %2248 = load i32, ptr %2247, align 4, !tbaa !178
  %2249 = load ptr, ptr %45, align 8, !tbaa !5
  %2250 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2249, i32 0, i32 7
  %2251 = load i32, ptr %2250, align 4, !tbaa !136
  %2252 = icmp eq i32 %2248, %2251
  br i1 %2252, label %2253, label %2254

2253:                                             ; preds = %2246
  br label %2256

2254:                                             ; preds = %2246
  call void @__assert_fail(ptr noundef @.str.72, ptr noundef @.str.2, i32 noundef 4472, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2255:                                             ; No predecessors!
  br label %2256

2256:                                             ; preds = %2255, %2253
  %2257 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 1
  %2258 = load i32, ptr %2257, align 4, !tbaa !173
  %2259 = load i32, ptr %15, align 4, !tbaa !9
  %2260 = icmp eq i32 %2258, %2259
  br i1 %2260, label %2261, label %2262

2261:                                             ; preds = %2256
  br label %2264

2262:                                             ; preds = %2256
  call void @__assert_fail(ptr noundef @.str.73, ptr noundef @.str.2, i32 noundef 4473, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2263:                                             ; No predecessors!
  br label %2264

2264:                                             ; preds = %2263, %2261
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #14
  %2265 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 8
  %2266 = load i8, ptr %2265, align 8, !tbaa !179, !range !40, !noundef !41
  %2267 = trunc i8 %2266 to i1
  %2268 = zext i1 %2267 to i8
  store i8 %2268, ptr %121, align 1, !tbaa !42
  %2269 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 9
  %2270 = load i32, ptr %2269, align 4, !tbaa !181
  %2271 = load i32, ptr %118, align 4, !tbaa !9
  %2272 = icmp ne i32 %2270, %2271
  br i1 %2272, label %2276, label %2273

2273:                                             ; preds = %2264
  %2274 = load i8, ptr %121, align 1, !tbaa !42, !range !40, !noundef !41
  %2275 = trunc i8 %2274 to i1
  br i1 %2275, label %2276, label %2291

2276:                                             ; preds = %2273, %2264
  %2277 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2278 = load ptr, ptr %2277, align 8, !tbaa !176
  %2279 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2280 = load ptr, ptr %2279, align 8, !tbaa !176
  %2281 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 9
  %2282 = load i32, ptr %2281, align 4, !tbaa !181
  %2283 = sext i32 %2282 to i64
  %2284 = getelementptr inbounds i8, ptr %2280, i64 %2283
  %2285 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2278, ptr noundef %2284)
  %2286 = load ptr, ptr %45, align 8, !tbaa !5
  %2287 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2286, i32 0, i32 9
  %2288 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2287, i32 0, i32 0
  store i32 %2285, ptr %2288, align 4, !tbaa !180
  %2289 = load ptr, ptr %45, align 8, !tbaa !5
  %2290 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2289, i32 0, i32 11
  store i8 1, ptr %2290, align 4, !tbaa !151
  br label %2291

2291:                                             ; preds = %2276, %2273
  %2292 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 10
  %2293 = load i32, ptr %2292, align 8, !tbaa !182
  %2294 = load i32, ptr %119, align 4, !tbaa !9
  %2295 = icmp ne i32 %2293, %2294
  br i1 %2295, label %2299, label %2296

2296:                                             ; preds = %2291
  %2297 = load i8, ptr %121, align 1, !tbaa !42, !range !40, !noundef !41
  %2298 = trunc i8 %2297 to i1
  br i1 %2298, label %2299, label %2325

2299:                                             ; preds = %2296, %2291
  %2300 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 10
  %2301 = load i32, ptr %2300, align 8, !tbaa !182
  %2302 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 9
  %2303 = load i32, ptr %2302, align 4, !tbaa !181
  %2304 = icmp eq i32 %2301, %2303
  br i1 %2304, label %2305, label %2310

2305:                                             ; preds = %2299
  %2306 = load ptr, ptr %45, align 8, !tbaa !5
  %2307 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2306, i32 0, i32 9
  %2308 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2307, i32 0, i32 0
  %2309 = load i32, ptr %2308, align 4, !tbaa !180
  br label %2320

2310:                                             ; preds = %2299
  %2311 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2312 = load ptr, ptr %2311, align 8, !tbaa !176
  %2313 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2314 = load ptr, ptr %2313, align 8, !tbaa !176
  %2315 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 10
  %2316 = load i32, ptr %2315, align 8, !tbaa !182
  %2317 = sext i32 %2316 to i64
  %2318 = getelementptr inbounds i8, ptr %2314, i64 %2317
  %2319 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2312, ptr noundef %2318)
  br label %2320

2320:                                             ; preds = %2310, %2305
  %2321 = phi i32 [ %2309, %2305 ], [ %2319, %2310 ]
  %2322 = load ptr, ptr %45, align 8, !tbaa !5
  %2323 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2322, i32 0, i32 9
  %2324 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2323, i32 0, i32 1
  store i32 %2321, ptr %2324, align 4, !tbaa !164
  br label %2325

2325:                                             ; preds = %2320, %2296
  %2326 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 11
  %2327 = load i32, ptr %2326, align 4, !tbaa !183
  %2328 = load i32, ptr %120, align 4, !tbaa !9
  %2329 = icmp ne i32 %2327, %2328
  br i1 %2329, label %2333, label %2330

2330:                                             ; preds = %2325
  %2331 = load i8, ptr %121, align 1, !tbaa !42, !range !40, !noundef !41
  %2332 = trunc i8 %2331 to i1
  br i1 %2332, label %2333, label %2359

2333:                                             ; preds = %2330, %2325
  %2334 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 11
  %2335 = load i32, ptr %2334, align 4, !tbaa !183
  %2336 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 10
  %2337 = load i32, ptr %2336, align 8, !tbaa !182
  %2338 = icmp eq i32 %2335, %2337
  br i1 %2338, label %2339, label %2344

2339:                                             ; preds = %2333
  %2340 = load ptr, ptr %45, align 8, !tbaa !5
  %2341 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2340, i32 0, i32 9
  %2342 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2341, i32 0, i32 1
  %2343 = load i32, ptr %2342, align 4, !tbaa !164
  br label %2354

2344:                                             ; preds = %2333
  %2345 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2346 = load ptr, ptr %2345, align 8, !tbaa !176
  %2347 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2348 = load ptr, ptr %2347, align 8, !tbaa !176
  %2349 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 11
  %2350 = load i32, ptr %2349, align 4, !tbaa !183
  %2351 = sext i32 %2350 to i64
  %2352 = getelementptr inbounds i8, ptr %2348, i64 %2351
  %2353 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2346, ptr noundef %2352)
  br label %2354

2354:                                             ; preds = %2344, %2339
  %2355 = phi i32 [ %2343, %2339 ], [ %2353, %2344 ]
  %2356 = load ptr, ptr %45, align 8, !tbaa !5
  %2357 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2356, i32 0, i32 9
  %2358 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2357, i32 0, i32 2
  store i32 %2355, ptr %2358, align 4, !tbaa !165
  br label %2359

2359:                                             ; preds = %2354, %2330
  %2360 = load i8, ptr %121, align 1, !tbaa !42, !range !40, !noundef !41
  %2361 = trunc i8 %2360 to i1
  br i1 %2361, label %2362, label %2412

2362:                                             ; preds = %2359
  %2363 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 6
  %2364 = load i32, ptr %2363, align 8, !tbaa !177
  %2365 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2366 = load ptr, ptr %2365, align 8, !tbaa !176
  %2367 = call i64 @strlen(ptr noundef %2366) #16
  %2368 = trunc i64 %2367 to i32
  %2369 = icmp eq i32 %2364, %2368
  br i1 %2369, label %2370, label %2371

2370:                                             ; preds = %2362
  br label %2373

2371:                                             ; preds = %2362
  call void @__assert_fail(ptr noundef @.str.74, ptr noundef @.str.2, i32 noundef 4480, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2372:                                             ; No predecessors!
  br label %2373

2373:                                             ; preds = %2372, %2370
  %2374 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 6
  %2375 = load i32, ptr %2374, align 8, !tbaa !177
  %2376 = load i32, ptr %69, align 4, !tbaa !9
  %2377 = icmp sgt i32 %2375, %2376
  br i1 %2377, label %2378, label %2393

2378:                                             ; preds = %2373
  %2379 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2380 = trunc i8 %2379 to i1
  br i1 %2380, label %2381, label %2393

2381:                                             ; preds = %2378
  %2382 = load ptr, ptr %45, align 8, !tbaa !5
  %2383 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2382, i32 0, i32 3
  %2384 = load ptr, ptr %45, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2384, i32 0, i32 3
  %2386 = getelementptr inbounds %struct.ImVector.5, ptr %2385, i32 0, i32 0
  %2387 = load i32, ptr %2386, align 8, !tbaa !122
  %2388 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 6
  %2389 = load i32, ptr %2388, align 8, !tbaa !177
  %2390 = load i32, ptr %69, align 4, !tbaa !9
  %2391 = sub nsw i32 %2389, %2390
  %2392 = add nsw i32 %2387, %2391
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2383, i32 noundef %2392)
  br label %2393

2393:                                             ; preds = %2381, %2378, %2373
  %2394 = load ptr, ptr %45, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2394, i32 0, i32 3
  %2396 = getelementptr inbounds %struct.ImVector.5, ptr %2395, i32 0, i32 2
  %2397 = load ptr, ptr %2396, align 8, !tbaa !111
  %2398 = load ptr, ptr %45, align 8, !tbaa !5
  %2399 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2398, i32 0, i32 3
  %2400 = getelementptr inbounds %struct.ImVector.5, ptr %2399, i32 0, i32 0
  %2401 = load i32, ptr %2400, align 8, !tbaa !122
  %2402 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 5
  %2403 = load ptr, ptr %2402, align 8, !tbaa !176
  %2404 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2397, i32 noundef %2401, ptr noundef %2403, ptr noundef null, ptr noundef null)
  %2405 = load ptr, ptr %45, align 8, !tbaa !5
  %2406 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2405, i32 0, i32 1
  store i32 %2404, ptr %2406, align 4, !tbaa !112
  %2407 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %116, i32 0, i32 6
  %2408 = load i32, ptr %2407, align 8, !tbaa !177
  %2409 = load ptr, ptr %45, align 8, !tbaa !5
  %2410 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2409, i32 0, i32 2
  store i32 %2408, ptr %2410, align 8, !tbaa !113
  %2411 = load ptr, ptr %45, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %2411)
  br label %2412

2412:                                             ; preds = %2393, %2359
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #14
  call void @llvm.lifetime.end.p0(i64 56, ptr %116) #14
  br label %2413

2413:                                             ; preds = %2412, %2174
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #14
  br label %2414

2414:                                             ; preds = %2413, %2124
  %2415 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2416 = trunc i8 %2415 to i1
  br i1 %2416, label %2433, label %2417

2417:                                             ; preds = %2414
  %2418 = load ptr, ptr %45, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2418, i32 0, i32 4
  %2420 = getelementptr inbounds %struct.ImVector.26, ptr %2419, i32 0, i32 2
  %2421 = load ptr, ptr %2420, align 8, !tbaa !123
  %2422 = load ptr, ptr %12, align 8, !tbaa !5
  %2423 = call i32 @strcmp(ptr noundef %2421, ptr noundef %2422) #16
  %2424 = icmp ne i32 %2423, 0
  br i1 %2424, label %2425, label %2433

2425:                                             ; preds = %2417
  %2426 = load ptr, ptr %45, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2426, i32 0, i32 4
  %2428 = getelementptr inbounds %struct.ImVector.26, ptr %2427, i32 0, i32 2
  %2429 = load ptr, ptr %2428, align 8, !tbaa !123
  store ptr %2429, ptr %108, align 8, !tbaa !5
  %2430 = load ptr, ptr %45, align 8, !tbaa !5
  %2431 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2430, i32 0, i32 2
  %2432 = load i32, ptr %2431, align 8, !tbaa !113
  store i32 %2432, ptr %109, align 4, !tbaa !9
  br label %2433

2433:                                             ; preds = %2425, %2417, %2414
  br label %2434

2434:                                             ; preds = %2433, %2092
  %2435 = load ptr, ptr %108, align 8, !tbaa !5
  %2436 = icmp ne ptr %2435, null
  br i1 %2436, label %2437, label %2487

2437:                                             ; preds = %2434
  %2438 = load i32, ptr %109, align 4, !tbaa !9
  %2439 = icmp sge i32 %2438, 0
  br i1 %2439, label %2440, label %2441

2440:                                             ; preds = %2437
  br label %2443

2441:                                             ; preds = %2437
  call void @__assert_fail(ptr noundef @.str.75, ptr noundef @.str.2, i32 noundef 4504, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2442:                                             ; No predecessors!
  br label %2443

2443:                                             ; preds = %2442, %2440
  %2444 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2445 = trunc i8 %2444 to i1
  br i1 %2445, label %2446, label %2479

2446:                                             ; preds = %2443
  call void @llvm.lifetime.start.p0(i64 56, ptr %122) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %122)
  %2447 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 0
  store i32 262144, ptr %2447, align 8, !tbaa !171
  %2448 = load i32, ptr %15, align 4, !tbaa !9
  %2449 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 1
  store i32 %2448, ptr %2449, align 4, !tbaa !173
  %2450 = load ptr, ptr %12, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 5
  store ptr %2450, ptr %2451, align 8, !tbaa !176
  %2452 = load i32, ptr %109, align 4, !tbaa !9
  %2453 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 6
  store i32 %2452, ptr %2453, align 8, !tbaa !177
  %2454 = load i32, ptr %13, align 4, !tbaa !9
  %2455 = load i32, ptr %109, align 4, !tbaa !9
  %2456 = add nsw i32 %2455, 1
  %2457 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2454, i32 noundef %2456)
  %2458 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 7
  store i32 %2457, ptr %2458, align 4, !tbaa !178
  %2459 = load ptr, ptr %17, align 8, !tbaa !5
  %2460 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 2
  store ptr %2459, ptr %2460, align 8, !tbaa !174
  %2461 = load ptr, ptr %16, align 8, !tbaa !5
  %2462 = call noundef i32 %2461(ptr noundef %122)
  %2463 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 5
  %2464 = load ptr, ptr %2463, align 8, !tbaa !176
  store ptr %2464, ptr %12, align 8, !tbaa !5
  %2465 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 7
  %2466 = load i32, ptr %2465, align 4, !tbaa !178
  store i32 %2466, ptr %13, align 4, !tbaa !9
  %2467 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 6
  %2468 = load i32, ptr %2467, align 8, !tbaa !177
  %2469 = load i32, ptr %13, align 4, !tbaa !9
  %2470 = sub nsw i32 %2469, 1
  %2471 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2468, i32 noundef %2470)
  store i32 %2471, ptr %109, align 4, !tbaa !9
  %2472 = load i32, ptr %109, align 4, !tbaa !9
  %2473 = load i32, ptr %13, align 4, !tbaa !9
  %2474 = icmp sle i32 %2472, %2473
  br i1 %2474, label %2475, label %2476

2475:                                             ; preds = %2446
  br label %2478

2476:                                             ; preds = %2446
  call void @__assert_fail(ptr noundef @.str.76, ptr noundef @.str.2, i32 noundef 4518, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2477:                                             ; No predecessors!
  br label %2478

2478:                                             ; preds = %2477, %2475
  call void @llvm.lifetime.end.p0(i64 56, ptr %122) #14
  br label %2479

2479:                                             ; preds = %2478, %2443
  %2480 = load ptr, ptr %12, align 8, !tbaa !5
  %2481 = load ptr, ptr %108, align 8, !tbaa !5
  %2482 = load i32, ptr %109, align 4, !tbaa !9
  %2483 = add nsw i32 %2482, 1
  %2484 = load i32, ptr %13, align 4, !tbaa !9
  %2485 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2483, i32 noundef %2484)
  %2486 = sext i32 %2485 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2480, ptr noundef %2481, i64 noundef %2486)
  store i8 1, ptr %62, align 1, !tbaa !42
  br label %2487

2487:                                             ; preds = %2479, %2434
  %2488 = load ptr, ptr %45, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2488, i32 0, i32 14
  store i32 0, ptr %2489, align 8, !tbaa !137
  %2490 = load ptr, ptr %45, align 8, !tbaa !5
  %2491 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2490, i32 0, i32 15
  store ptr null, ptr %2491, align 8, !tbaa !138
  %2492 = load ptr, ptr %45, align 8, !tbaa !5
  %2493 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2492, i32 0, i32 16
  store ptr null, ptr %2493, align 8, !tbaa !139
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #14
  br label %2494

2494:                                             ; preds = %2487, %2000
  %2495 = load i8, ptr %51, align 1, !tbaa !42, !range !40, !noundef !41
  %2496 = trunc i8 %2495 to i1
  br i1 %2496, label %2497, label %2504

2497:                                             ; preds = %2494
  %2498 = load ptr, ptr %20, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.ImGuiContext, ptr %2498, i32 0, i32 44
  %2500 = load i32, ptr %2499, align 4, !tbaa !102
  %2501 = load i32, ptr %29, align 4, !tbaa !9
  %2502 = icmp eq i32 %2500, %2501
  br i1 %2502, label %2503, label %2504

2503:                                             ; preds = %2497
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2504

2504:                                             ; preds = %2503, %2497, %2494
  %2505 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2506 = trunc i8 %2505 to i1
  br i1 %2506, label %2517, label %2507

2507:                                             ; preds = %2504
  %2508 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2508, i32 noundef 1)
  %2509 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %123, ptr align 4 %2509, i64 8, i1 false), !tbaa.struct !43
  %2510 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %124, ptr align 4 %2510, i64 8, i1 false), !tbaa.struct !43
  %2511 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2512 = load ptr, ptr %22, align 8, !tbaa !5
  %2513 = getelementptr inbounds %struct.ImGuiStyle, ptr %2512, i32 0, i32 13
  %2514 = load float, ptr %2513, align 4, !tbaa !95
  %2515 = load <2 x float>, ptr %123, align 4
  %2516 = load <2 x float>, ptr %124, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2515, <2 x float> %2516, i32 noundef %2511, i1 noundef zeroext true, float noundef %2514)
  br label %2517

2517:                                             ; preds = %2507, %2504
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #14
  %2518 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2519 = getelementptr inbounds %struct.ImVec2, ptr %2518, i32 0, i32 0
  %2520 = load float, ptr %2519, align 4, !tbaa !143
  %2521 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2522 = getelementptr inbounds %struct.ImVec2, ptr %2521, i32 0, i32 1
  %2523 = load float, ptr %2522, align 4, !tbaa !184
  %2524 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2525 = getelementptr inbounds %struct.ImVec2, ptr %2524, i32 0, i32 0
  %2526 = load float, ptr %2525, align 4, !tbaa !143
  %2527 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2528 = load float, ptr %2527, align 4, !tbaa !92
  %2529 = fadd float %2526, %2528
  %2530 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2531 = getelementptr inbounds %struct.ImVec2, ptr %2530, i32 0, i32 1
  %2532 = load float, ptr %2531, align 4, !tbaa !184
  %2533 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2534 = load float, ptr %2533, align 4, !tbaa !90
  %2535 = fadd float %2532, %2534
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %125, float noundef %2520, float noundef %2523, float noundef %2529, float noundef %2535)
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #14
  %2536 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2537 = trunc i8 %2536 to i1
  br i1 %2537, label %2538, label %2542

2538:                                             ; preds = %2517
  %2539 = load ptr, ptr %38, align 8, !tbaa !5
  %2540 = getelementptr inbounds %struct.ImGuiWindow, ptr %2539, i32 0, i32 54
  %2541 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2540, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %126, ptr align 8 %2541, i64 8, i1 false), !tbaa.struct !43
  br label %2547

2542:                                             ; preds = %2517
  %2543 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2544 = load ptr, ptr %22, align 8, !tbaa !5
  %2545 = getelementptr inbounds %struct.ImGuiStyle, ptr %2544, i32 0, i32 12
  %2546 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2543, ptr noundef nonnull align 4 dereferenceable(8) %2545)
  store <2 x float> %2546, ptr %126, align 4
  br label %2547

2547:                                             ; preds = %2542, %2538
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %127, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #14
  store i32 2097152, ptr %128, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #14
  %2548 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %2549 = trunc i8 %2548 to i1
  br i1 %2549, label %2550, label %2555

2550:                                             ; preds = %2547
  %2551 = load ptr, ptr %45, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2551, i32 0, i32 4
  %2553 = getelementptr inbounds %struct.ImVector.26, ptr %2552, i32 0, i32 2
  %2554 = load ptr, ptr %2553, align 8, !tbaa !123
  br label %2557

2555:                                             ; preds = %2547
  %2556 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2557

2557:                                             ; preds = %2555, %2550
  %2558 = phi ptr [ %2554, %2550 ], [ %2556, %2555 ]
  store ptr %2558, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #14
  store ptr null, ptr %130, align 8, !tbaa !5
  %2559 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %2560 = trunc i8 %2559 to i1
  br i1 %2560, label %2561, label %2567

2561:                                             ; preds = %2557
  %2562 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2562, ptr %129, align 8, !tbaa !5
  %2563 = load ptr, ptr %11, align 8, !tbaa !5
  %2564 = load ptr, ptr %11, align 8, !tbaa !5
  %2565 = call i64 @strlen(ptr noundef %2564) #16
  %2566 = getelementptr inbounds i8, ptr %2563, i64 %2565
  store ptr %2566, ptr %130, align 8, !tbaa !5
  br label %2567

2567:                                             ; preds = %2561, %2557
  %2568 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %2569 = trunc i8 %2568 to i1
  br i1 %2569, label %2573, label %2570

2570:                                             ; preds = %2567
  %2571 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %2572 = trunc i8 %2571 to i1
  br i1 %2572, label %2573, label %3140

2573:                                             ; preds = %2570, %2567
  %2574 = load ptr, ptr %45, align 8, !tbaa !5
  %2575 = icmp ne ptr %2574, null
  br i1 %2575, label %2576, label %2577

2576:                                             ; preds = %2573
  br label %2579

2577:                                             ; preds = %2573
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.2, i32 noundef 4564, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2578:                                             ; No predecessors!
  br label %2579

2579:                                             ; preds = %2578, %2576
  %2580 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %2581 = trunc i8 %2580 to i1
  br i1 %2581, label %2589, label %2582

2582:                                             ; preds = %2579
  %2583 = load ptr, ptr %129, align 8, !tbaa !5
  %2584 = load ptr, ptr %45, align 8, !tbaa !5
  %2585 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2584, i32 0, i32 2
  %2586 = load i32, ptr %2585, align 8, !tbaa !113
  %2587 = sext i32 %2586 to i64
  %2588 = getelementptr inbounds i8, ptr %2583, i64 %2587
  store ptr %2588, ptr %130, align 8, !tbaa !5
  br label %2589

2589:                                             ; preds = %2582, %2579
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #14
  %2590 = load ptr, ptr %45, align 8, !tbaa !5
  %2591 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2590, i32 0, i32 3
  %2592 = getelementptr inbounds %struct.ImVector.5, ptr %2591, i32 0, i32 2
  %2593 = load ptr, ptr %2592, align 8, !tbaa !111
  store ptr %2593, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %132)
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %133)
  call void @llvm.lifetime.start.p0(i64 16, ptr %134) #14
  call void @llvm.memset.p0.i64(ptr align 16 %134, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %135, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #14
  store i32 0, ptr %136, align 4, !tbaa !9
  %2594 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %2595 = trunc i8 %2594 to i1
  br i1 %2595, label %2596, label %2608

2596:                                             ; preds = %2589
  %2597 = load ptr, ptr %131, align 8, !tbaa !5
  %2598 = load ptr, ptr %45, align 8, !tbaa !5
  %2599 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2598, i32 0, i32 9
  %2600 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2599, i32 0, i32 0
  %2601 = load i32, ptr %2600, align 4, !tbaa !180
  %2602 = sext i32 %2601 to i64
  %2603 = getelementptr inbounds i16, ptr %2597, i64 %2602
  %2604 = getelementptr inbounds [2 x ptr], ptr %134, i64 0, i64 0
  store ptr %2603, ptr %2604, align 16, !tbaa !5
  %2605 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 0
  store i32 -1, ptr %2605, align 4, !tbaa !9
  %2606 = load i32, ptr %136, align 4, !tbaa !9
  %2607 = add nsw i32 %2606, 1
  store i32 %2607, ptr %136, align 4, !tbaa !9
  br label %2608

2608:                                             ; preds = %2596, %2589
  %2609 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %2610 = trunc i8 %2609 to i1
  br i1 %2610, label %2611, label %2628

2611:                                             ; preds = %2608
  %2612 = load ptr, ptr %131, align 8, !tbaa !5
  %2613 = load ptr, ptr %45, align 8, !tbaa !5
  %2614 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2613, i32 0, i32 9
  %2615 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2614, i32 0, i32 1
  %2616 = load i32, ptr %2615, align 4, !tbaa !164
  %2617 = load ptr, ptr %45, align 8, !tbaa !5
  %2618 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2617, i32 0, i32 9
  %2619 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2618, i32 0, i32 2
  %2620 = load i32, ptr %2619, align 4, !tbaa !165
  %2621 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2616, i32 noundef %2620)
  %2622 = sext i32 %2621 to i64
  %2623 = getelementptr inbounds i16, ptr %2612, i64 %2622
  %2624 = getelementptr inbounds [2 x ptr], ptr %134, i64 0, i64 1
  store ptr %2623, ptr %2624, align 8, !tbaa !5
  %2625 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 1
  store i32 -1, ptr %2625, align 4, !tbaa !9
  %2626 = load i32, ptr %136, align 4, !tbaa !9
  %2627 = add nsw i32 %2626, 1
  store i32 %2627, ptr %136, align 4, !tbaa !9
  br label %2628

2628:                                             ; preds = %2611, %2608
  %2629 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2630 = trunc i8 %2629 to i1
  %2631 = zext i1 %2630 to i64
  %2632 = select i1 %2630, i32 1, i32 0
  %2633 = load i32, ptr %136, align 4, !tbaa !9
  %2634 = add nsw i32 %2633, %2632
  store i32 %2634, ptr %136, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #14
  store i32 0, ptr %137, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  %2635 = load ptr, ptr %131, align 8, !tbaa !5
  store ptr %2635, ptr %138, align 8, !tbaa !5
  br label %2636

2636:                                             ; preds = %2685, %2628
  %2637 = load ptr, ptr %138, align 8, !tbaa !5
  %2638 = load i16, ptr %2637, align 2, !tbaa !155
  %2639 = zext i16 %2638 to i32
  %2640 = icmp ne i32 %2639, 0
  br i1 %2640, label %2642, label %2641

2641:                                             ; preds = %2636
  store i32 7, ptr %19, align 4
  br label %2688

2642:                                             ; preds = %2636
  %2643 = load ptr, ptr %138, align 8, !tbaa !5
  %2644 = load i16, ptr %2643, align 2, !tbaa !155
  %2645 = zext i16 %2644 to i32
  %2646 = icmp eq i32 %2645, 10
  br i1 %2646, label %2647, label %2684

2647:                                             ; preds = %2642
  %2648 = load i32, ptr %137, align 4, !tbaa !9
  %2649 = add nsw i32 %2648, 1
  store i32 %2649, ptr %137, align 4, !tbaa !9
  %2650 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 0
  %2651 = load i32, ptr %2650, align 4, !tbaa !9
  %2652 = icmp eq i32 %2651, -1
  br i1 %2652, label %2653, label %2666

2653:                                             ; preds = %2647
  %2654 = load ptr, ptr %138, align 8, !tbaa !5
  %2655 = getelementptr inbounds [2 x ptr], ptr %134, i64 0, i64 0
  %2656 = load ptr, ptr %2655, align 16, !tbaa !5
  %2657 = icmp uge ptr %2654, %2656
  br i1 %2657, label %2658, label %2666

2658:                                             ; preds = %2653
  %2659 = load i32, ptr %137, align 4, !tbaa !9
  %2660 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 0
  store i32 %2659, ptr %2660, align 4, !tbaa !9
  %2661 = load i32, ptr %136, align 4, !tbaa !9
  %2662 = add nsw i32 %2661, -1
  store i32 %2662, ptr %136, align 4, !tbaa !9
  %2663 = icmp sle i32 %2662, 0
  br i1 %2663, label %2664, label %2665

2664:                                             ; preds = %2658
  store i32 7, ptr %19, align 4
  br label %2688

2665:                                             ; preds = %2658
  br label %2666

2666:                                             ; preds = %2665, %2653, %2647
  %2667 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 1
  %2668 = load i32, ptr %2667, align 4, !tbaa !9
  %2669 = icmp eq i32 %2668, -1
  br i1 %2669, label %2670, label %2683

2670:                                             ; preds = %2666
  %2671 = load ptr, ptr %138, align 8, !tbaa !5
  %2672 = getelementptr inbounds [2 x ptr], ptr %134, i64 0, i64 1
  %2673 = load ptr, ptr %2672, align 8, !tbaa !5
  %2674 = icmp uge ptr %2671, %2673
  br i1 %2674, label %2675, label %2683

2675:                                             ; preds = %2670
  %2676 = load i32, ptr %137, align 4, !tbaa !9
  %2677 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 1
  store i32 %2676, ptr %2677, align 4, !tbaa !9
  %2678 = load i32, ptr %136, align 4, !tbaa !9
  %2679 = add nsw i32 %2678, -1
  store i32 %2679, ptr %136, align 4, !tbaa !9
  %2680 = icmp sle i32 %2679, 0
  br i1 %2680, label %2681, label %2682

2681:                                             ; preds = %2675
  store i32 7, ptr %19, align 4
  br label %2688

2682:                                             ; preds = %2675
  br label %2683

2683:                                             ; preds = %2682, %2670, %2666
  br label %2684

2684:                                             ; preds = %2683, %2642
  br label %2685

2685:                                             ; preds = %2684
  %2686 = load ptr, ptr %138, align 8, !tbaa !5
  %2687 = getelementptr inbounds i16, ptr %2686, i32 1
  store ptr %2687, ptr %138, align 8, !tbaa !5
  br label %2636, !llvm.loop !185

2688:                                             ; preds = %2681, %2664, %2641
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #14
  br label %2689

2689:                                             ; preds = %2688
  %2690 = load i32, ptr %137, align 4, !tbaa !9
  %2691 = add nsw i32 %2690, 1
  store i32 %2691, ptr %137, align 4, !tbaa !9
  %2692 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 0
  %2693 = load i32, ptr %2692, align 4, !tbaa !9
  %2694 = icmp eq i32 %2693, -1
  br i1 %2694, label %2695, label %2698

2695:                                             ; preds = %2689
  %2696 = load i32, ptr %137, align 4, !tbaa !9
  %2697 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 0
  store i32 %2696, ptr %2697, align 4, !tbaa !9
  br label %2698

2698:                                             ; preds = %2695, %2689
  %2699 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 1
  %2700 = load i32, ptr %2699, align 4, !tbaa !9
  %2701 = icmp eq i32 %2700, -1
  br i1 %2701, label %2702, label %2705

2702:                                             ; preds = %2698
  %2703 = load i32, ptr %137, align 4, !tbaa !9
  %2704 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 1
  store i32 %2703, ptr %2704, align 4, !tbaa !9
  br label %2705

2705:                                             ; preds = %2702, %2698
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #14
  %2706 = getelementptr inbounds [2 x ptr], ptr %134, i64 0, i64 0
  %2707 = load ptr, ptr %2706, align 16, !tbaa !5
  %2708 = load ptr, ptr %131, align 8, !tbaa !5
  %2709 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2707, ptr noundef %2708)
  %2710 = getelementptr inbounds [2 x ptr], ptr %134, i64 0, i64 0
  %2711 = load ptr, ptr %2710, align 16, !tbaa !5
  %2712 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2709, ptr noundef %2711, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2712, ptr %139, align 4
  %2713 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 0
  %2714 = load float, ptr %2713, align 4, !tbaa !92
  %2715 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  store float %2714, ptr %2715, align 4, !tbaa !92
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #14
  %2716 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 0
  %2717 = load i32, ptr %2716, align 4, !tbaa !9
  %2718 = sitofp i32 %2717 to float
  %2719 = load ptr, ptr %20, align 8, !tbaa !5
  %2720 = getelementptr inbounds %struct.ImGuiContext, ptr %2719, i32 0, i32 6
  %2721 = load float, ptr %2720, align 8, !tbaa !45
  %2722 = fmul float %2718, %2721
  %2723 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  store float %2722, ptr %2723, align 4, !tbaa !90
  %2724 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 1
  %2725 = load i32, ptr %2724, align 4, !tbaa !9
  %2726 = icmp sge i32 %2725, 0
  br i1 %2726, label %2727, label %2746

2727:                                             ; preds = %2705
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #14
  %2728 = getelementptr inbounds [2 x ptr], ptr %134, i64 0, i64 1
  %2729 = load ptr, ptr %2728, align 8, !tbaa !5
  %2730 = load ptr, ptr %131, align 8, !tbaa !5
  %2731 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2729, ptr noundef %2730)
  %2732 = getelementptr inbounds [2 x ptr], ptr %134, i64 0, i64 1
  %2733 = load ptr, ptr %2732, align 8, !tbaa !5
  %2734 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2731, ptr noundef %2733, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2734, ptr %140, align 4
  %2735 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  %2736 = load float, ptr %2735, align 4, !tbaa !92
  %2737 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 0
  store float %2736, ptr %2737, align 4, !tbaa !92
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #14
  %2738 = getelementptr inbounds [2 x i32], ptr %135, i64 0, i64 1
  %2739 = load i32, ptr %2738, align 4, !tbaa !9
  %2740 = sitofp i32 %2739 to float
  %2741 = load ptr, ptr %20, align 8, !tbaa !5
  %2742 = getelementptr inbounds %struct.ImGuiContext, ptr %2741, i32 0, i32 6
  %2743 = load float, ptr %2742, align 8, !tbaa !45
  %2744 = fmul float %2740, %2743
  %2745 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 1
  store float %2744, ptr %2745, align 4, !tbaa !90
  br label %2746

2746:                                             ; preds = %2727, %2705
  %2747 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2748 = trunc i8 %2747 to i1
  br i1 %2748, label %2749, label %2758

2749:                                             ; preds = %2746
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #14
  %2750 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2751 = load float, ptr %2750, align 4, !tbaa !92
  %2752 = load i32, ptr %137, align 4, !tbaa !9
  %2753 = sitofp i32 %2752 to float
  %2754 = load ptr, ptr %20, align 8, !tbaa !5
  %2755 = getelementptr inbounds %struct.ImGuiContext, ptr %2754, i32 0, i32 6
  %2756 = load float, ptr %2755, align 8, !tbaa !45
  %2757 = fmul float %2753, %2756
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %141, float noundef %2751, float noundef %2757)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %127, ptr align 4 %141, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #14
  br label %2758

2758:                                             ; preds = %2749, %2746
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %134) #14
  %2759 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %2760 = trunc i8 %2759 to i1
  br i1 %2760, label %2761, label %2893

2761:                                             ; preds = %2758
  %2762 = load ptr, ptr %45, align 8, !tbaa !5
  %2763 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2762, i32 0, i32 11
  %2764 = load i8, ptr %2763, align 4, !tbaa !151, !range !40, !noundef !41
  %2765 = trunc i8 %2764 to i1
  br i1 %2765, label %2766, label %2893

2766:                                             ; preds = %2761
  %2767 = load i32, ptr %15, align 4, !tbaa !9
  %2768 = and i32 %2767, 4096
  %2769 = icmp ne i32 %2768, 0
  br i1 %2769, label %2819, label %2770

2770:                                             ; preds = %2766
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #14
  %2771 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2772 = load float, ptr %2771, align 4, !tbaa !92
  %2773 = fmul float %2772, 2.500000e-01
  store float %2773, ptr %142, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #14
  %2774 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2775 = load float, ptr %2774, align 4, !tbaa !92
  %2776 = load ptr, ptr %22, align 8, !tbaa !5
  %2777 = getelementptr inbounds %struct.ImGuiStyle, ptr %2776, i32 0, i32 12
  %2778 = getelementptr inbounds %struct.ImVec2, ptr %2777, i32 0, i32 0
  %2779 = load float, ptr %2778, align 4, !tbaa !144
  %2780 = fsub float %2775, %2779
  store float %2780, ptr %143, align 4, !tbaa !44
  %2781 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2782 = load float, ptr %2781, align 4, !tbaa !92
  %2783 = load ptr, ptr %45, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2783, i32 0, i32 8
  %2785 = load float, ptr %2784, align 8, !tbaa !115
  %2786 = fcmp olt float %2782, %2785
  br i1 %2786, label %2787, label %2797

2787:                                             ; preds = %2770
  %2788 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2789 = load float, ptr %2788, align 4, !tbaa !92
  %2790 = load float, ptr %142, align 4, !tbaa !44
  %2791 = fsub float %2789, %2790
  %2792 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2791)
  %2793 = fptosi float %2792 to i32
  %2794 = sitofp i32 %2793 to float
  %2795 = load ptr, ptr %45, align 8, !tbaa !5
  %2796 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2795, i32 0, i32 8
  store float %2794, ptr %2796, align 8, !tbaa !115
  br label %2818

2797:                                             ; preds = %2770
  %2798 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2799 = load float, ptr %2798, align 4, !tbaa !92
  %2800 = load float, ptr %143, align 4, !tbaa !44
  %2801 = fsub float %2799, %2800
  %2802 = load ptr, ptr %45, align 8, !tbaa !5
  %2803 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2802, i32 0, i32 8
  %2804 = load float, ptr %2803, align 8, !tbaa !115
  %2805 = fcmp oge float %2801, %2804
  br i1 %2805, label %2806, label %2817

2806:                                             ; preds = %2797
  %2807 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2808 = load float, ptr %2807, align 4, !tbaa !92
  %2809 = load float, ptr %143, align 4, !tbaa !44
  %2810 = fsub float %2808, %2809
  %2811 = load float, ptr %142, align 4, !tbaa !44
  %2812 = fadd float %2810, %2811
  %2813 = fptosi float %2812 to i32
  %2814 = sitofp i32 %2813 to float
  %2815 = load ptr, ptr %45, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2815, i32 0, i32 8
  store float %2814, ptr %2816, align 8, !tbaa !115
  br label %2817

2817:                                             ; preds = %2806, %2797
  br label %2818

2818:                                             ; preds = %2817, %2787
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #14
  br label %2822

2819:                                             ; preds = %2766
  %2820 = load ptr, ptr %45, align 8, !tbaa !5
  %2821 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2820, i32 0, i32 8
  store float 0.000000e+00, ptr %2821, align 8, !tbaa !115
  br label %2822

2822:                                             ; preds = %2819, %2818
  %2823 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2824 = trunc i8 %2823 to i1
  br i1 %2824, label %2825, label %2890

2825:                                             ; preds = %2822
  %2826 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %2827 = load float, ptr %2826, align 4, !tbaa !90
  %2828 = load ptr, ptr %20, align 8, !tbaa !5
  %2829 = getelementptr inbounds %struct.ImGuiContext, ptr %2828, i32 0, i32 6
  %2830 = load float, ptr %2829, align 8, !tbaa !45
  %2831 = fsub float %2827, %2830
  %2832 = load float, ptr %53, align 4, !tbaa !44
  %2833 = fcmp olt float %2831, %2832
  br i1 %2833, label %2834, label %2842

2834:                                             ; preds = %2825
  %2835 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %2836 = load float, ptr %2835, align 4, !tbaa !90
  %2837 = load ptr, ptr %20, align 8, !tbaa !5
  %2838 = getelementptr inbounds %struct.ImGuiContext, ptr %2837, i32 0, i32 6
  %2839 = load float, ptr %2838, align 8, !tbaa !45
  %2840 = fsub float %2836, %2839
  %2841 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2840)
  store float %2841, ptr %53, align 4, !tbaa !44
  br label %2862

2842:                                             ; preds = %2825
  %2843 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %2844 = load float, ptr %2843, align 4, !tbaa !90
  %2845 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2846 = load float, ptr %2845, align 4, !tbaa !90
  %2847 = fsub float %2844, %2846
  %2848 = load float, ptr %53, align 4, !tbaa !44
  %2849 = fcmp oge float %2847, %2848
  br i1 %2849, label %2850, label %2861

2850:                                             ; preds = %2842
  %2851 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %2852 = load float, ptr %2851, align 4, !tbaa !90
  %2853 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2854 = load float, ptr %2853, align 4, !tbaa !90
  %2855 = fsub float %2852, %2854
  %2856 = load ptr, ptr %22, align 8, !tbaa !5
  %2857 = getelementptr inbounds %struct.ImGuiStyle, ptr %2856, i32 0, i32 12
  %2858 = getelementptr inbounds %struct.ImVec2, ptr %2857, i32 0, i32 1
  %2859 = load float, ptr %2858, align 4, !tbaa !91
  %2860 = call float @llvm.fmuladd.f32(float %2859, float 2.000000e+00, float %2855)
  store float %2860, ptr %53, align 4, !tbaa !44
  br label %2861

2861:                                             ; preds = %2850, %2842
  br label %2862

2862:                                             ; preds = %2861, %2834
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #14
  %2863 = getelementptr inbounds %struct.ImVec2, ptr %127, i32 0, i32 1
  %2864 = load float, ptr %2863, align 4, !tbaa !90
  %2865 = load ptr, ptr %22, align 8, !tbaa !5
  %2866 = getelementptr inbounds %struct.ImGuiStyle, ptr %2865, i32 0, i32 12
  %2867 = getelementptr inbounds %struct.ImVec2, ptr %2866, i32 0, i32 1
  %2868 = load float, ptr %2867, align 4, !tbaa !91
  %2869 = call float @llvm.fmuladd.f32(float %2868, float 2.000000e+00, float %2864)
  %2870 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2871 = load float, ptr %2870, align 4, !tbaa !90
  %2872 = fsub float %2869, %2871
  %2873 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2872, float noundef 0.000000e+00)
  store float %2873, ptr %144, align 4, !tbaa !44
  %2874 = load float, ptr %53, align 4, !tbaa !44
  %2875 = load float, ptr %144, align 4, !tbaa !44
  %2876 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %2874, float noundef 0.000000e+00, float noundef %2875)
  store float %2876, ptr %53, align 4, !tbaa !44
  %2877 = load ptr, ptr %38, align 8, !tbaa !5
  %2878 = getelementptr inbounds %struct.ImGuiWindow, ptr %2877, i32 0, i32 15
  %2879 = getelementptr inbounds %struct.ImVec2, ptr %2878, i32 0, i32 1
  %2880 = load float, ptr %2879, align 4, !tbaa !107
  %2881 = load float, ptr %53, align 4, !tbaa !44
  %2882 = fsub float %2880, %2881
  %2883 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 1
  %2884 = load float, ptr %2883, align 4, !tbaa !90
  %2885 = fadd float %2884, %2882
  store float %2885, ptr %2883, align 4, !tbaa !90
  %2886 = load float, ptr %53, align 4, !tbaa !44
  %2887 = load ptr, ptr %38, align 8, !tbaa !5
  %2888 = getelementptr inbounds %struct.ImGuiWindow, ptr %2887, i32 0, i32 15
  %2889 = getelementptr inbounds %struct.ImVec2, ptr %2888, i32 0, i32 1
  store float %2886, ptr %2889, align 4, !tbaa !107
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #14
  br label %2890

2890:                                             ; preds = %2862, %2822
  %2891 = load ptr, ptr %45, align 8, !tbaa !5
  %2892 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2891, i32 0, i32 11
  store i8 0, ptr %2892, align 4, !tbaa !151
  br label %2893

2893:                                             ; preds = %2890, %2761, %2758
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #14
  %2894 = load ptr, ptr %45, align 8, !tbaa !5
  %2895 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2894, i32 0, i32 8
  %2896 = load float, ptr %2895, align 8, !tbaa !115
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %145, float noundef %2896, float noundef 0.000000e+00)
  %2897 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %2898 = trunc i8 %2897 to i1
  br i1 %2898, label %2899, label %3027

2899:                                             ; preds = %2893
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #14
  %2900 = load ptr, ptr %131, align 8, !tbaa !5
  %2901 = load ptr, ptr %45, align 8, !tbaa !5
  %2902 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2901, i32 0, i32 9
  %2903 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2902, i32 0, i32 1
  %2904 = load i32, ptr %2903, align 4, !tbaa !164
  %2905 = load ptr, ptr %45, align 8, !tbaa !5
  %2906 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2905, i32 0, i32 9
  %2907 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2906, i32 0, i32 2
  %2908 = load i32, ptr %2907, align 4, !tbaa !165
  %2909 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2904, i32 noundef %2908)
  %2910 = sext i32 %2909 to i64
  %2911 = getelementptr inbounds i16, ptr %2900, i64 %2910
  store ptr %2911, ptr %146, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #14
  %2912 = load ptr, ptr %131, align 8, !tbaa !5
  %2913 = load ptr, ptr %45, align 8, !tbaa !5
  %2914 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2913, i32 0, i32 9
  %2915 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2914, i32 0, i32 1
  %2916 = load i32, ptr %2915, align 4, !tbaa !164
  %2917 = load ptr, ptr %45, align 8, !tbaa !5
  %2918 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2917, i32 0, i32 9
  %2919 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2918, i32 0, i32 2
  %2920 = load i32, ptr %2919, align 4, !tbaa !165
  %2921 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2916, i32 noundef %2920)
  %2922 = sext i32 %2921 to i64
  %2923 = getelementptr inbounds i16, ptr %2912, i64 %2922
  store ptr %2923, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #14
  %2924 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %2925 = trunc i8 %2924 to i1
  %2926 = zext i1 %2925 to i64
  %2927 = select i1 %2925, float 1.000000e+00, float 0x3FE3333340000000
  %2928 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %2927)
  store i32 %2928, ptr %148, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #14
  %2929 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2930 = trunc i8 %2929 to i1
  %2931 = zext i1 %2930 to i64
  %2932 = select i1 %2930, float 0.000000e+00, float -1.000000e+00
  store float %2932, ptr %149, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #14
  %2933 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2934 = trunc i8 %2933 to i1
  %2935 = zext i1 %2934 to i64
  %2936 = select i1 %2934, float 0.000000e+00, float 2.000000e+00
  store float %2936, ptr %150, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #14
  %2937 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %126, ptr noundef nonnull align 4 dereferenceable(8) %133)
  store <2 x float> %2937, ptr %152, align 4
  %2938 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %152, ptr noundef nonnull align 4 dereferenceable(8) %145)
  store <2 x float> %2938, ptr %151, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #14
  %2939 = load ptr, ptr %146, align 8, !tbaa !5
  store ptr %2939, ptr %153, align 8, !tbaa !5
  br label %2940

2940:                                             ; preds = %3012, %2899
  %2941 = load ptr, ptr %153, align 8, !tbaa !5
  %2942 = load ptr, ptr %147, align 8, !tbaa !5
  %2943 = icmp ult ptr %2941, %2942
  br i1 %2943, label %2945, label %2944

2944:                                             ; preds = %2940
  store i32 10, ptr %19, align 4
  br label %3025

2945:                                             ; preds = %2940
  %2946 = getelementptr inbounds %struct.ImVec2, ptr %151, i32 0, i32 1
  %2947 = load float, ptr %2946, align 4, !tbaa !90
  %2948 = getelementptr inbounds %struct.ImVec4, ptr %125, i32 0, i32 3
  %2949 = load float, ptr %2948, align 4, !tbaa !186
  %2950 = load ptr, ptr %20, align 8, !tbaa !5
  %2951 = getelementptr inbounds %struct.ImGuiContext, ptr %2950, i32 0, i32 6
  %2952 = load float, ptr %2951, align 8, !tbaa !45
  %2953 = fadd float %2949, %2952
  %2954 = fcmp ogt float %2947, %2953
  br i1 %2954, label %2955, label %2956

2955:                                             ; preds = %2945
  store i32 10, ptr %19, align 4
  br label %3025

2956:                                             ; preds = %2945
  %2957 = getelementptr inbounds %struct.ImVec2, ptr %151, i32 0, i32 1
  %2958 = load float, ptr %2957, align 4, !tbaa !90
  %2959 = getelementptr inbounds %struct.ImVec4, ptr %125, i32 0, i32 1
  %2960 = load float, ptr %2959, align 4, !tbaa !187
  %2961 = fcmp olt float %2958, %2960
  br i1 %2961, label %2962, label %2976

2962:                                             ; preds = %2956
  br label %2963

2963:                                             ; preds = %2974, %2962
  %2964 = load ptr, ptr %153, align 8, !tbaa !5
  %2965 = load ptr, ptr %147, align 8, !tbaa !5
  %2966 = icmp ult ptr %2964, %2965
  br i1 %2966, label %2967, label %2975

2967:                                             ; preds = %2963
  %2968 = load ptr, ptr %153, align 8, !tbaa !5
  %2969 = getelementptr inbounds i16, ptr %2968, i32 1
  store ptr %2969, ptr %153, align 8, !tbaa !5
  %2970 = load i16, ptr %2968, align 2, !tbaa !155
  %2971 = zext i16 %2970 to i32
  %2972 = icmp eq i32 %2971, 10
  br i1 %2972, label %2973, label %2974

2973:                                             ; preds = %2967
  br label %2975

2974:                                             ; preds = %2967
  br label %2963, !llvm.loop !188

2975:                                             ; preds = %2973, %2963
  br label %3012

2976:                                             ; preds = %2956
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #14
  %2977 = load ptr, ptr %153, align 8, !tbaa !5
  %2978 = load ptr, ptr %147, align 8, !tbaa !5
  %2979 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2977, ptr noundef %2978, ptr noundef %153, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %2979, ptr %154, align 4
  %2980 = getelementptr inbounds %struct.ImVec2, ptr %154, i32 0, i32 0
  %2981 = load float, ptr %2980, align 4, !tbaa !92
  %2982 = fcmp ole float %2981, 0.000000e+00
  br i1 %2982, label %2983, label %2992

2983:                                             ; preds = %2976
  %2984 = load ptr, ptr %20, align 8, !tbaa !5
  %2985 = getelementptr inbounds %struct.ImGuiContext, ptr %2984, i32 0, i32 5
  %2986 = load ptr, ptr %2985, align 8, !tbaa !125
  %2987 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110) %2986, i16 noundef zeroext 32)
  %2988 = fmul float %2987, 5.000000e-01
  %2989 = fptosi float %2988 to i32
  %2990 = sitofp i32 %2989 to float
  %2991 = getelementptr inbounds %struct.ImVec2, ptr %154, i32 0, i32 0
  store float %2990, ptr %2991, align 4, !tbaa !92
  br label %2992

2992:                                             ; preds = %2983, %2976
  call void @llvm.lifetime.start.p0(i64 16, ptr %155) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #14
  %2993 = load float, ptr %149, align 4, !tbaa !44
  %2994 = load ptr, ptr %20, align 8, !tbaa !5
  %2995 = getelementptr inbounds %struct.ImGuiContext, ptr %2994, i32 0, i32 6
  %2996 = load float, ptr %2995, align 8, !tbaa !45
  %2997 = fsub float %2993, %2996
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %157, float noundef 0.000000e+00, float noundef %2997)
  %2998 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %151, ptr noundef nonnull align 4 dereferenceable(8) %157)
  store <2 x float> %2998, ptr %156, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #14
  %2999 = getelementptr inbounds %struct.ImVec2, ptr %154, i32 0, i32 0
  %3000 = load float, ptr %2999, align 4, !tbaa !92
  %3001 = load float, ptr %150, align 4, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %159, float noundef %3000, float noundef %3001)
  %3002 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %151, ptr noundef nonnull align 4 dereferenceable(8) %159)
  store <2 x float> %3002, ptr %158, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %155, ptr noundef nonnull align 4 dereferenceable(8) %156, ptr noundef nonnull align 4 dereferenceable(8) %158)
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %160, ptr noundef nonnull align 4 dereferenceable(16) %125)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %155, ptr noundef nonnull align 4 dereferenceable(16) %160)
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %161) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %161, ptr noundef nonnull align 4 dereferenceable(16) %125)
  %3003 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %155, ptr noundef nonnull align 4 dereferenceable(16) %161)
  call void @llvm.lifetime.end.p0(i64 16, ptr %161) #14
  br i1 %3003, label %3004, label %3011

3004:                                             ; preds = %2992
  %3005 = load ptr, ptr %38, align 8, !tbaa !5
  %3006 = getelementptr inbounds %struct.ImGuiWindow, ptr %3005, i32 0, i32 72
  %3007 = load ptr, ptr %3006, align 8, !tbaa !189
  %3008 = getelementptr inbounds %struct.ImRect, ptr %155, i32 0, i32 0
  %3009 = getelementptr inbounds %struct.ImRect, ptr %155, i32 0, i32 1
  %3010 = load i32, ptr %148, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %3007, ptr noundef nonnull align 4 dereferenceable(8) %3008, ptr noundef nonnull align 4 dereferenceable(8) %3009, i32 noundef %3010, float noundef 0.000000e+00, i32 noundef 0)
  br label %3011

3011:                                             ; preds = %3004, %2992
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #14
  br label %3012

3012:                                             ; preds = %3011, %2975
  %3013 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 0
  %3014 = load float, ptr %3013, align 4, !tbaa !92
  %3015 = getelementptr inbounds %struct.ImVec2, ptr %145, i32 0, i32 0
  %3016 = load float, ptr %3015, align 4, !tbaa !92
  %3017 = fsub float %3014, %3016
  %3018 = getelementptr inbounds %struct.ImVec2, ptr %151, i32 0, i32 0
  store float %3017, ptr %3018, align 4, !tbaa !92
  %3019 = load ptr, ptr %20, align 8, !tbaa !5
  %3020 = getelementptr inbounds %struct.ImGuiContext, ptr %3019, i32 0, i32 6
  %3021 = load float, ptr %3020, align 8, !tbaa !45
  %3022 = getelementptr inbounds %struct.ImVec2, ptr %151, i32 0, i32 1
  %3023 = load float, ptr %3022, align 4, !tbaa !90
  %3024 = fadd float %3023, %3021
  store float %3024, ptr %3022, align 4, !tbaa !90
  br label %2940, !llvm.loop !190

3025:                                             ; preds = %2955, %2944
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #14
  br label %3026

3026:                                             ; preds = %3025
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #14
  br label %3027

3027:                                             ; preds = %3026, %2893
  %3028 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3029 = trunc i8 %3028 to i1
  br i1 %3029, label %3037, label %3030

3030:                                             ; preds = %3027
  %3031 = load ptr, ptr %130, align 8, !tbaa !5
  %3032 = load ptr, ptr %129, align 8, !tbaa !5
  %3033 = ptrtoint ptr %3031 to i64
  %3034 = ptrtoint ptr %3032 to i64
  %3035 = sub i64 %3033, %3034
  %3036 = icmp slt i64 %3035, 2097152
  br i1 %3036, label %3037, label %3062

3037:                                             ; preds = %3030, %3027
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #14
  %3038 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %3039 = trunc i8 %3038 to i1
  %3040 = zext i1 %3039 to i64
  %3041 = select i1 %3039, i32 1, i32 0
  %3042 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3041, float noundef 1.000000e+00)
  store i32 %3042, ptr %162, align 4, !tbaa !9
  %3043 = load ptr, ptr %38, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.ImGuiWindow, ptr %3043, i32 0, i32 72
  %3045 = load ptr, ptr %3044, align 8, !tbaa !189
  %3046 = load ptr, ptr %20, align 8, !tbaa !5
  %3047 = getelementptr inbounds %struct.ImGuiContext, ptr %3046, i32 0, i32 5
  %3048 = load ptr, ptr %3047, align 8, !tbaa !125
  %3049 = load ptr, ptr %20, align 8, !tbaa !5
  %3050 = getelementptr inbounds %struct.ImGuiContext, ptr %3049, i32 0, i32 6
  %3051 = load float, ptr %3050, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #14
  %3052 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %126, ptr noundef nonnull align 4 dereferenceable(8) %145)
  store <2 x float> %3052, ptr %163, align 4
  %3053 = load i32, ptr %162, align 4, !tbaa !9
  %3054 = load ptr, ptr %129, align 8, !tbaa !5
  %3055 = load ptr, ptr %130, align 8, !tbaa !5
  %3056 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3057 = trunc i8 %3056 to i1
  br i1 %3057, label %3058, label %3059

3058:                                             ; preds = %3037
  br label %3060

3059:                                             ; preds = %3037
  br label %3060

3060:                                             ; preds = %3059, %3058
  %3061 = phi ptr [ null, %3058 ], [ %125, %3059 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3045, ptr noundef %3048, float noundef %3051, ptr noundef nonnull align 4 dereferenceable(8) %163, i32 noundef %3053, ptr noundef %3054, ptr noundef %3055, float noundef 0.000000e+00, ptr noundef %3061)
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #14
  br label %3062

3062:                                             ; preds = %3060, %3030
  %3063 = load i8, ptr %60, align 1, !tbaa !42, !range !40, !noundef !41
  %3064 = trunc i8 %3063 to i1
  br i1 %3064, label %3065, label %3139

3065:                                             ; preds = %3062
  %3066 = load ptr, ptr %21, align 8, !tbaa !5
  %3067 = getelementptr inbounds %struct.ImGuiIO, ptr %3066, i32 0, i32 3
  %3068 = load float, ptr %3067, align 8, !tbaa !191
  %3069 = load ptr, ptr %45, align 8, !tbaa !5
  %3070 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3069, i32 0, i32 10
  %3071 = load float, ptr %3070, align 8, !tbaa !192
  %3072 = fadd float %3071, %3068
  store float %3072, ptr %3070, align 8, !tbaa !192
  call void @llvm.lifetime.start.p0(i64 1, ptr %164) #14
  %3073 = load ptr, ptr %20, align 8, !tbaa !5
  %3074 = getelementptr inbounds %struct.ImGuiContext, ptr %3073, i32 0, i32 3
  %3075 = getelementptr inbounds %struct.ImGuiIO, ptr %3074, i32 0, i32 21
  %3076 = load i8, ptr %3075, align 2, !tbaa !193, !range !40, !noundef !41
  %3077 = trunc i8 %3076 to i1
  br i1 %3077, label %3078, label %3089

3078:                                             ; preds = %3065
  %3079 = load ptr, ptr %45, align 8, !tbaa !5
  %3080 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3079, i32 0, i32 10
  %3081 = load float, ptr %3080, align 8, !tbaa !192
  %3082 = fcmp ole float %3081, 0.000000e+00
  br i1 %3082, label %3089, label %3083

3083:                                             ; preds = %3078
  %3084 = load ptr, ptr %45, align 8, !tbaa !5
  %3085 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3084, i32 0, i32 10
  %3086 = load float, ptr %3085, align 8, !tbaa !192
  %3087 = call float @fmodf(float noundef %3086, float noundef 0x3FF3333340000000) #14
  %3088 = fcmp ole float %3087, 0x3FE99999A0000000
  br label %3089

3089:                                             ; preds = %3083, %3078, %3065
  %3090 = phi i1 [ true, %3078 ], [ true, %3065 ], [ %3088, %3083 ]
  %3091 = zext i1 %3090 to i8
  store i8 %3091, ptr %164, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #14
  %3092 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %126, ptr noundef nonnull align 4 dereferenceable(8) %132)
  store <2 x float> %3092, ptr %167, align 4
  %3093 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %167, ptr noundef nonnull align 4 dereferenceable(8) %145)
  store <2 x float> %3093, ptr %166, align 4
  %3094 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %166)
  store <2 x float> %3094, ptr %165, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %168) #14
  %3095 = getelementptr inbounds %struct.ImVec2, ptr %165, i32 0, i32 0
  %3096 = load float, ptr %3095, align 4, !tbaa !92
  %3097 = getelementptr inbounds %struct.ImVec2, ptr %165, i32 0, i32 1
  %3098 = load float, ptr %3097, align 4, !tbaa !90
  %3099 = load ptr, ptr %20, align 8, !tbaa !5
  %3100 = getelementptr inbounds %struct.ImGuiContext, ptr %3099, i32 0, i32 6
  %3101 = load float, ptr %3100, align 8, !tbaa !45
  %3102 = fsub float %3098, %3101
  %3103 = fadd float %3102, 5.000000e-01
  %3104 = getelementptr inbounds %struct.ImVec2, ptr %165, i32 0, i32 0
  %3105 = load float, ptr %3104, align 4, !tbaa !92
  %3106 = fadd float %3105, 1.000000e+00
  %3107 = getelementptr inbounds %struct.ImVec2, ptr %165, i32 0, i32 1
  %3108 = load float, ptr %3107, align 4, !tbaa !90
  %3109 = fsub float %3108, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %168, float noundef %3096, float noundef %3103, float noundef %3106, float noundef %3109)
  %3110 = load i8, ptr %164, align 1, !tbaa !42, !range !40, !noundef !41
  %3111 = trunc i8 %3110 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %169) #14
  br i1 %3111, label %3112, label %3114

3112:                                             ; preds = %3089
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %169, ptr noundef nonnull align 4 dereferenceable(16) %125)
  %3113 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %168, ptr noundef nonnull align 4 dereferenceable(16) %169)
  br label %3114

3114:                                             ; preds = %3112, %3089
  %3115 = phi i1 [ false, %3089 ], [ %3113, %3112 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %169) #14
  br i1 %3115, label %3116, label %3123

3116:                                             ; preds = %3114
  %3117 = load ptr, ptr %38, align 8, !tbaa !5
  %3118 = getelementptr inbounds %struct.ImGuiWindow, ptr %3117, i32 0, i32 72
  %3119 = load ptr, ptr %3118, align 8, !tbaa !189
  %3120 = getelementptr inbounds %struct.ImRect, ptr %168, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #14
  %3121 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %168)
  store <2 x float> %3121, ptr %170, align 4
  %3122 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %3119, ptr noundef nonnull align 4 dereferenceable(8) %3120, ptr noundef nonnull align 4 dereferenceable(8) %170, i32 noundef %3122, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #14
  br label %3123

3123:                                             ; preds = %3116, %3114
  %3124 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %3125 = trunc i8 %3124 to i1
  br i1 %3125, label %3138, label %3126

3126:                                             ; preds = %3123
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #14
  %3127 = getelementptr inbounds %struct.ImVec2, ptr %165, i32 0, i32 0
  %3128 = load float, ptr %3127, align 4, !tbaa !92
  %3129 = fsub float %3128, 1.000000e+00
  %3130 = getelementptr inbounds %struct.ImVec2, ptr %165, i32 0, i32 1
  %3131 = load float, ptr %3130, align 4, !tbaa !90
  %3132 = load ptr, ptr %20, align 8, !tbaa !5
  %3133 = getelementptr inbounds %struct.ImGuiContext, ptr %3132, i32 0, i32 6
  %3134 = load float, ptr %3133, align 8, !tbaa !45
  %3135 = fsub float %3131, %3134
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %171, float noundef %3129, float noundef %3135)
  %3136 = load ptr, ptr %20, align 8, !tbaa !5
  %3137 = getelementptr inbounds %struct.ImGuiContext, ptr %3136, i32 0, i32 196
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3137, ptr align 4 %171, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #14
  br label %3138

3138:                                             ; preds = %3126, %3123
  call void @llvm.lifetime.end.p0(i64 16, ptr %168) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #14
  br label %3139

3139:                                             ; preds = %3138, %3062
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #14
  br label %3214

3140:                                             ; preds = %2570
  %3141 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3142 = trunc i8 %3141 to i1
  br i1 %3142, label %3143, label %3153

3143:                                             ; preds = %3140
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #14
  %3144 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %3145 = load float, ptr %3144, align 4, !tbaa !92
  %3146 = load ptr, ptr %129, align 8, !tbaa !5
  %3147 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3146, ptr noundef %130)
  %3148 = sitofp i32 %3147 to float
  %3149 = load ptr, ptr %20, align 8, !tbaa !5
  %3150 = getelementptr inbounds %struct.ImGuiContext, ptr %3149, i32 0, i32 6
  %3151 = load float, ptr %3150, align 8, !tbaa !45
  %3152 = fmul float %3148, %3151
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %172, float noundef %3145, float noundef %3152)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %127, ptr align 4 %172, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #14
  br label %3179

3153:                                             ; preds = %3140
  %3154 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %3155 = trunc i8 %3154 to i1
  br i1 %3155, label %3169, label %3156

3156:                                             ; preds = %3153
  %3157 = load ptr, ptr %20, align 8, !tbaa !5
  %3158 = getelementptr inbounds %struct.ImGuiContext, ptr %3157, i32 0, i32 44
  %3159 = load i32, ptr %3158, align 4, !tbaa !102
  %3160 = load i32, ptr %29, align 4, !tbaa !9
  %3161 = icmp eq i32 %3159, %3160
  br i1 %3161, label %3162, label %3169

3162:                                             ; preds = %3156
  %3163 = load ptr, ptr %129, align 8, !tbaa !5
  %3164 = load ptr, ptr %45, align 8, !tbaa !5
  %3165 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3164, i32 0, i32 2
  %3166 = load i32, ptr %3165, align 8, !tbaa !113
  %3167 = sext i32 %3166 to i64
  %3168 = getelementptr inbounds i8, ptr %3163, i64 %3167
  store ptr %3168, ptr %130, align 8, !tbaa !5
  br label %3178

3169:                                             ; preds = %3156, %3153
  %3170 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %3171 = trunc i8 %3170 to i1
  br i1 %3171, label %3177, label %3172

3172:                                             ; preds = %3169
  %3173 = load ptr, ptr %129, align 8, !tbaa !5
  %3174 = load ptr, ptr %129, align 8, !tbaa !5
  %3175 = call i64 @strlen(ptr noundef %3174) #16
  %3176 = getelementptr inbounds i8, ptr %3173, i64 %3175
  store ptr %3176, ptr %130, align 8, !tbaa !5
  br label %3177

3177:                                             ; preds = %3172, %3169
  br label %3178

3178:                                             ; preds = %3177, %3162
  br label %3179

3179:                                             ; preds = %3178, %3143
  %3180 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3181 = trunc i8 %3180 to i1
  br i1 %3181, label %3189, label %3182

3182:                                             ; preds = %3179
  %3183 = load ptr, ptr %130, align 8, !tbaa !5
  %3184 = load ptr, ptr %129, align 8, !tbaa !5
  %3185 = ptrtoint ptr %3183 to i64
  %3186 = ptrtoint ptr %3184 to i64
  %3187 = sub i64 %3185, %3186
  %3188 = icmp slt i64 %3187, 2097152
  br i1 %3188, label %3189, label %3213

3189:                                             ; preds = %3182, %3179
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #14
  %3190 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %3191 = trunc i8 %3190 to i1
  %3192 = zext i1 %3191 to i64
  %3193 = select i1 %3191, i32 1, i32 0
  %3194 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3193, float noundef 1.000000e+00)
  store i32 %3194, ptr %173, align 4, !tbaa !9
  %3195 = load ptr, ptr %38, align 8, !tbaa !5
  %3196 = getelementptr inbounds %struct.ImGuiWindow, ptr %3195, i32 0, i32 72
  %3197 = load ptr, ptr %3196, align 8, !tbaa !189
  %3198 = load ptr, ptr %20, align 8, !tbaa !5
  %3199 = getelementptr inbounds %struct.ImGuiContext, ptr %3198, i32 0, i32 5
  %3200 = load ptr, ptr %3199, align 8, !tbaa !125
  %3201 = load ptr, ptr %20, align 8, !tbaa !5
  %3202 = getelementptr inbounds %struct.ImGuiContext, ptr %3201, i32 0, i32 6
  %3203 = load float, ptr %3202, align 8, !tbaa !45
  %3204 = load i32, ptr %173, align 4, !tbaa !9
  %3205 = load ptr, ptr %129, align 8, !tbaa !5
  %3206 = load ptr, ptr %130, align 8, !tbaa !5
  %3207 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3208 = trunc i8 %3207 to i1
  br i1 %3208, label %3209, label %3210

3209:                                             ; preds = %3189
  br label %3211

3210:                                             ; preds = %3189
  br label %3211

3211:                                             ; preds = %3210, %3209
  %3212 = phi ptr [ null, %3209 ], [ %125, %3210 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3197, ptr noundef %3200, float noundef %3203, ptr noundef nonnull align 4 dereferenceable(8) %126, i32 noundef %3204, ptr noundef %3205, ptr noundef %3206, float noundef 0.000000e+00, ptr noundef %3212)
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #14
  br label %3213

3213:                                             ; preds = %3211, %3182
  br label %3214

3214:                                             ; preds = %3213, %3139
  %3215 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3216 = trunc i8 %3215 to i1
  br i1 %3216, label %3217, label %3221

3217:                                             ; preds = %3214
  %3218 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %3219 = trunc i8 %3218 to i1
  br i1 %3219, label %3221, label %3220

3220:                                             ; preds = %3217
  call void @_ZN5ImGui7PopFontEv()
  br label %3221

3221:                                             ; preds = %3220, %3217, %3214
  %3222 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3223 = trunc i8 %3222 to i1
  br i1 %3223, label %3224, label %3234

3224:                                             ; preds = %3221
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #14
  %3225 = getelementptr inbounds %struct.ImVec2, ptr %127, i32 0, i32 0
  %3226 = load float, ptr %3225, align 4, !tbaa !92
  %3227 = getelementptr inbounds %struct.ImVec2, ptr %127, i32 0, i32 1
  %3228 = load float, ptr %3227, align 4, !tbaa !90
  %3229 = load ptr, ptr %22, align 8, !tbaa !5
  %3230 = getelementptr inbounds %struct.ImGuiStyle, ptr %3229, i32 0, i32 12
  %3231 = getelementptr inbounds %struct.ImVec2, ptr %3230, i32 0, i32 1
  %3232 = load float, ptr %3231, align 4, !tbaa !91
  %3233 = fadd float %3228, %3232
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %174, float noundef %3226, float noundef %3233)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %174)
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #14
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %3234

3234:                                             ; preds = %3224, %3221
  %3235 = load ptr, ptr %20, align 8, !tbaa !5
  %3236 = getelementptr inbounds %struct.ImGuiContext, ptr %3235, i32 0, i32 208
  %3237 = load i8, ptr %3236, align 4, !tbaa !194, !range !40, !noundef !41
  %3238 = trunc i8 %3237 to i1
  br i1 %3238, label %3239, label %3248

3239:                                             ; preds = %3234
  %3240 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3241 = trunc i8 %3240 to i1
  br i1 %3241, label %3242, label %3245

3242:                                             ; preds = %3239
  %3243 = load i8, ptr %66, align 1, !tbaa !42, !range !40, !noundef !41
  %3244 = trunc i8 %3243 to i1
  br i1 %3244, label %3245, label %3248

3245:                                             ; preds = %3242, %3239
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef @.str.25, ptr noundef @.str.26)
  %3246 = load ptr, ptr %129, align 8, !tbaa !5
  %3247 = load ptr, ptr %130, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %126, ptr noundef %3246, ptr noundef %3247)
  br label %3248

3248:                                             ; preds = %3245, %3242, %3234
  %3249 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3250 = load float, ptr %3249, align 4, !tbaa !92
  %3251 = fcmp ogt float %3250, 0.000000e+00
  br i1 %3251, label %3252, label %3271

3252:                                             ; preds = %3248
  %3253 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  %3254 = getelementptr inbounds %struct.ImVec2, ptr %3253, i32 0, i32 0
  %3255 = load float, ptr %3254, align 4, !tbaa !195
  %3256 = load ptr, ptr %22, align 8, !tbaa !5
  %3257 = getelementptr inbounds %struct.ImGuiStyle, ptr %3256, i32 0, i32 16
  %3258 = getelementptr inbounds %struct.ImVec2, ptr %3257, i32 0, i32 0
  %3259 = load float, ptr %3258, align 4, !tbaa !93
  %3260 = fadd float %3255, %3259
  %3261 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %3262 = getelementptr inbounds %struct.ImVec2, ptr %3261, i32 0, i32 1
  %3263 = load float, ptr %3262, align 4, !tbaa !184
  %3264 = load ptr, ptr %22, align 8, !tbaa !5
  %3265 = getelementptr inbounds %struct.ImGuiStyle, ptr %3264, i32 0, i32 12
  %3266 = getelementptr inbounds %struct.ImVec2, ptr %3265, i32 0, i32 1
  %3267 = load float, ptr %3266, align 4, !tbaa !91
  %3268 = fadd float %3263, %3267
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %175, float noundef %3260, float noundef %3268)
  %3269 = load ptr, ptr %10, align 8, !tbaa !5
  %3270 = load <2 x float>, ptr %175, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3270, ptr noundef %3269, ptr noundef null, i1 noundef zeroext true)
  br label %3271

3271:                                             ; preds = %3252, %3248
  %3272 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3273 = trunc i8 %3272 to i1
  br i1 %3273, label %3274, label %3280

3274:                                             ; preds = %3271
  %3275 = load i32, ptr %15, align 4, !tbaa !9
  %3276 = and i32 %3275, 134217728
  %3277 = icmp ne i32 %3276, 0
  br i1 %3277, label %3280, label %3278

3278:                                             ; preds = %3274
  %3279 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3279)
  br label %3280

3280:                                             ; preds = %3278, %3274, %3271
  %3281 = load i32, ptr %15, align 4, !tbaa !9
  %3282 = and i32 %3281, 32
  %3283 = icmp ne i32 %3282, 0
  br i1 %3283, label %3284, label %3287

3284:                                             ; preds = %3280
  %3285 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3286 = trunc i8 %3285 to i1
  store i1 %3286, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3290

3287:                                             ; preds = %3280
  %3288 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3289 = trunc i8 %3288 to i1
  store i1 %3289, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3290

3290:                                             ; preds = %3287, %3284
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #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 %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 4, 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 1, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #14
  br label %3291

3291:                                             ; preds = %3290, %399, %385
  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 %3292

3292:                                             ; preds = %3291, %181
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  %3293 = load i1, ptr %9, align 1
  ret i1 %3293

3294:                                             ; preds = %2059
  %3295 = load ptr, ptr %111, align 8
  %3296 = load i32, ptr %112, align 4
  %3297 = insertvalue { ptr, i32 } poison, ptr %3295, 0
  %3298 = insertvalue { ptr, i32 } %3297, i32 %3296, 1
  resume { ptr, i32 } %3298

3299:                                             ; preds = %1256
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736)) #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) #12

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

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

declare void @_ZN5ImGui8EndChildEv() #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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 i32 @_ZN5ImGui20GetMergedKeyModFlagsEv() #5

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #5

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #5

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #5

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) #5

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() #5

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; 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 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> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) #10

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110), i16 noundef zeroext) #11 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)) #10 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 #11 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) #5

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

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { "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 nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 #8 = { 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 #9 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 147}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !14, i64 72, !14, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !13, i64 92, !13, i64 100, !13, i64 108, !13, i64 116, !13, i64 124, !13, i64 132, !15, i64 140, !15, i64 141, !15, i64 142, !15, i64 143, !15, i64 144, !15, i64 145, !15, i64 146, !15, i64 147, !15, i64 148, !15, i64 149, !15, i64 150, !15, i64 151, !7, i64 152, !16, i64 154, !16, i64 156, !16, i64 158, !16, i64 160, !10, i64 164, !7, i64 168, !7, i64 169, !7, i64 170, !15, i64 171, !10, i64 172, !7, i64 176, !7, i64 177, !7, i64 178, !7, i64 179, !10, i64 180, !10, i64 181, !10, i64 182, !13, i64 184, !13, i64 192, !17, i64 200, !18, i64 216, !24, i64 440, !24, i64 456, !24, i64 472, !24, i64 488, !24, i64 504, !24, i64 520, !24, i64 536, !25, i64 552, !25, i64 556, !10, i64 560, !14, i64 564, !14, i64 568, !26, i64 576, !28, i64 592, !14, i64 608, !10, i64 612, !6, i64 616, !29, i64 624, !6, i64 824, !6, i64 832, !6, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !7, i64 872, !7, i64 880, !10, i64 912, !10, i64 916, !15, i64 920}
!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, !19, i64 64, !19, i64 68, !19, i64 72, !20, i64 76, !16, i64 80, !16, i64 82, !10, i64 84, !15, i64 88, !15, i64 89, !15, i64 90, !13, i64 92, !21, i64 100, !10, i64 128, !10, i64 132, !22, i64 136, !6, i64 152, !6, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !14, i64 184, !14, i64 188, !23, i64 192, !23, i64 208}
!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 6528}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !48, i64 5472, !6, i64 6520, !14, i64 6528, !14, i64 6532, !49, i64 6536, !50, i64 7048, !10, i64 7056, !10, i64 7060, !10, i64 7064, !15, i64 7068, !15, i64 7069, !15, i64 7070, !15, i64 7071, !15, i64 7072, !6, i64 7080, !22, i64 7088, !22, i64 7104, !22, i64 7120, !51, i64 7136, !26, i64 7152, !10, i64 7168, !13, i64 7172, !6, i64 7184, !6, i64 7192, !6, i64 7200, !6, i64 7208, !6, i64 7216, !13, i64 7224, !14, i64 7232, !10, i64 7236, !10, i64 7240, !10, i64 7244, !15, i64 7248, !15, i64 7249, !15, i64 7250, !15, i64 7251, !14, i64 7252, !14, i64 7256, !10, i64 7260, !10, i64 7264, !14, i64 7268, !15, i64 7272, !15, i64 7273, !15, i64 7274, !15, i64 7275, !15, i64 7276, !15, i64 7277, !15, i64 7278, !10, i64 7280, !10, i64 7284, !52, i64 7288, !13, i64 7296, !6, i64 7304, !53, i64 7312, !10, i64 7316, !10, i64 7320, !15, i64 7324, !15, i64 7325, !6, i64 7328, !10, i64 7336, !14, i64 7340, !10, i64 7344, !54, i64 7348, !55, i64 7368, !56, i64 7432, !57, i64 7544, !58, i64 7560, !59, i64 7576, !17, i64 7592, !60, i64 7608, !61, i64 7624, !62, i64 7640, !62, i64 7656, !63, i64 7672, !6, i64 7688, !10, i64 7696, !10, i64 7700, !10, i64 7704, !10, i64 7708, !10, i64 7712, !10, i64 7716, !10, i64 7720, !10, i64 7724, !10, i64 7728, !10, i64 7732, !10, i64 7736, !10, i64 7740, !10, i64 7744, !53, i64 7748, !20, i64 7752, !10, i64 7756, !15, i64 7760, !15, i64 7761, !15, i64 7762, !15, i64 7763, !15, i64 7764, !15, i64 7765, !15, i64 7766, !10, i64 7768, !24, i64 7772, !15, i64 7788, !15, i64 7789, !15, i64 7790, !10, i64 7792, !10, i64 7796, !10, i64 7800, !10, i64 7804, !10, i64 7808, !10, i64 7812, !24, i64 7816, !10, i64 7832, !10, i64 7836, !64, i64 7840, !64, i64 7888, !64, i64 7936, !6, i64 7984, !6, i64 7992, !6, i64 8000, !14, i64 8008, !14, i64 8012, !15, i64 8016, !6, i64 8024, !6, i64 8032, !10, i64 8040, !10, i64 8044, !15, i64 8048, !14, i64 8052, !10, i64 8056, !15, i64 8060, !15, i64 8061, !15, i64 8062, !10, i64 8064, !10, i64 8068, !10, i64 8072, !65, i64 8080, !24, i64 8144, !10, i64 8160, !10, i64 8164, !14, i64 8168, !10, i64 8172, !10, i64 8176, !10, i64 8180, !10, i64 8184, !66, i64 8192, !7, i64 8208, !6, i64 8224, !10, i64 8232, !67, i64 8240, !69, i64 8280, !23, i64 8296, !39, i64 8312, !6, i64 8328, !70, i64 8336, !72, i64 8376, !73, i64 8392, !13, i64 8408, !74, i64 8416, !78, i64 12152, !10, i64 12264, !10, i64 12268, !14, i64 12272, !14, i64 12276, !10, i64 12280, !37, i64 12284, !80, i64 12300, !14, i64 12348, !15, i64 12352, !15, i64 12353, !14, i64 12356, !14, i64 12360, !14, i64 12364, !14, i64 12368, !16, i64 12372, !16, i64 12374, !14, i64 12376, !75, i64 12384, !17, i64 12400, !13, i64 12416, !13, i64 12424, !7, i64 12432, !15, i64 12433, !14, i64 12436, !81, i64 12440, !82, i64 12456, !83, i64 12472, !84, i64 12488, !85, i64 12504, !10, i64 12520, !15, i64 12524, !86, i64 12528, !6, i64 12536, !81, i64 12544, !6, i64 12560, !6, i64 12568, !14, i64 12576, !15, i64 12580, !10, i64 12584, !10, i64 12588, !10, i64 12592, !15, i64 12596, !10, i64 12600, !87, i64 12604, !88, i64 12624, !7, i64 12656, !10, i64 13136, !10, i64 13140, !14, i64 13144, !10, i64 13148, !10, i64 13152, !10, i64 13156, !7, i64 13160}
!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, !7, i64 52, !14, i64 140, !14, i64 144, !6, i64 152, !6, i64 160, !14, i64 168, !15, i64 172, !6, i64 176, !13, i64 184, !15, i64 192, !15, i64 193, !15, i64 194, !15, i64 195, !15, i64 196, !15, i64 197, !14, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !13, i64 288, !7, i64 296, !14, i64 304, !14, i64 308, !15, i64 312, !15, i64 313, !15, i64 314, !15, i64 315, !7, i64 316, !7, i64 828, !15, i64 908, !15, i64 909, !15, i64 910, !15, i64 911, !15, i64 912, !15, i64 913, !15, i64 914, !14, i64 916, !10, i64 920, !10, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !13, i64 940, !15, i64 948, !10, i64 952, !10, i64 956, !13, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1073, !7, i64 1080, !7, i64 1100, !7, i64 1120, !7, i64 1160, !7, i64 1180, !7, i64 3228, !7, i64 5276, !7, i64 5356, !14, i64 5436, !15, i64 5440, !16, i64 5442, !31, i64 5448}
!48 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !14, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !13, i64 24, !13, i64 32, !10, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !13, i64 60, !14, i64 68, !14, i64 72, !13, i64 76, !13, i64 84, !13, i64 92, !13, i64 100, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !14, i64 140, !14, i64 144, !10, i64 148, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !14, i64 184, !15, i64 188, !15, i64 189, !15, i64 190, !14, i64 192, !14, i64 196, !7, i64 200}
!49 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !37, i64 28, !10, i64 44, !7, i64 48, !14, i64 432, !7, i64 436, !6, i64 504}
!50 = !{!"double", !7, i64 0}
!51 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!52 = !{!"long long", !7, i64 0}
!53 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!54 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !15, i64 16}
!55 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !24, i64 12, !24, i64 28, !24, i64 44}
!56 = !{!"_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}
!57 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_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}
!65 = !{!"_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}
!66 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS6ImPoolI10ImGuiTableE", !68, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!68 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !71, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!71 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !31, i64 16, !75, i64 32, !75, i64 48, !15, i64 64, !10, i64 68, !14, i64 72, !76, i64 76, !14, i64 3704, !15, i64 3708, !15, i64 3709, !15, i64 3710, !10, i64 3712, !6, i64 3720, !6, i64 3728}
!75 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_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, !77, i64 32}
!77 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!78 = !{!"_ZTS6ImFont", !23, i64 0, !14, i64 16, !14, i64 20, !31, i64 24, !79, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !16, i64 80, !16, i64 82, !16, i64 84, !16, i64 86, !15, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !10, i64 104, !7, i64 108}
!79 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS21ImGuiComboPreviewData", !24, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!81 = !{!"_ZTS15ImGuiTextBuffer", !75, i64 0}
!82 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !75, i64 0}
!84 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !75, i64 0}
!85 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!86 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!87 = !{!"_ZTS18ImGuiMetricsConfig", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !15, i64 4, !15, i64 5, !10, i64 8, !10, i64 12}
!88 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !89, i64 16}
!89 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!90 = !{!13, !14, i64 4}
!91 = !{!48, !14, i64 64}
!92 = !{!13, !14, i64 0}
!93 = !{!48, !14, i64 84}
!94 = !{!46, !10, i64 7376}
!95 = !{!48, !14, i64 68}
!96 = !{!48, !14, i64 72}
!97 = !{!46, !6, i64 7184}
!98 = !{!12, !20, i64 292}
!99 = !{!12, !16, i64 298}
!100 = !{!12, !14, i64 132}
!101 = !{!46, !10, i64 8056}
!102 = !{!46, !10, i64 7260}
!103 = !{!46, !10, i64 7716}
!104 = !{!46, !10, i64 7704}
!105 = !{!46, !53, i64 7748}
!106 = !{!46, !10, i64 7320}
!107 = !{!12, !14, i64 96}
!108 = !{!74, !7, i64 99}
!109 = !{!74, !6, i64 56}
!110 = !{!74, !15, i64 64}
!111 = !{!74, !6, i64 24}
!112 = !{!74, !10, i64 4}
!113 = !{!74, !10, i64 8}
!114 = !{!74, !10, i64 0}
!115 = !{!74, !14, i64 72}
!116 = !{!46, !10, i64 7720}
!117 = !{!47, !15, i64 312}
!118 = !{!74, !7, i64 88}
!119 = !{!46, !10, i64 7280}
!120 = !{!46, !10, i64 7284}
!121 = !{!46, !52, i64 7288}
!122 = !{!74, !10, i64 16}
!123 = !{!74, !6, i64 40}
!124 = !{!7, !7, i64 0}
!125 = !{!46, !6, i64 6520}
!126 = !{!78, !14, i64 20}
!127 = !{!78, !14, i64 92}
!128 = !{!78, !14, i64 96}
!129 = !{!78, !14, i64 100}
!130 = !{!78, !6, i64 64}
!131 = !{!78, !6, i64 56}
!132 = !{!133, !14, i64 4}
!133 = !{!"_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}
!134 = !{!78, !14, i64 16}
!135 = !{!74, !15, i64 3710}
!136 = !{!74, !10, i64 68}
!137 = !{!74, !10, i64 3712}
!138 = !{!74, !6, i64 3720}
!139 = !{!74, !6, i64 3728}
!140 = !{!46, !15, i64 7273}
!141 = !{!46, !10, i64 13156}
!142 = !{!47, !14, i64 288}
!143 = !{!24, !14, i64 0}
!144 = !{!48, !14, i64 60}
!145 = !{!47, !14, i64 292}
!146 = !{!12, !14, i64 220}
!147 = !{!47, !15, i64 193}
!148 = !{!74, !15, i64 3709}
!149 = !{!47, !14, i64 940}
!150 = !{!47, !14, i64 944}
!151 = !{!74, !15, i64 3708}
!152 = !{!47, !15, i64 314}
!153 = !{!47, !15, i64 315}
!154 = !{!47, !15, i64 313}
!155 = !{!16, !16, i64 0}
!156 = !{!47, !10, i64 5448}
!157 = distinct !{!157, !158}
!158 = !{!"llvm.loop.mustprogress"}
!159 = !{!46, !15, i64 7272}
!160 = !{!47, !10, i64 952}
!161 = !{!74, !10, i64 92}
!162 = !{!46, !15, i64 201}
!163 = !{!47, !6, i64 256}
!164 = !{!74, !10, i64 80}
!165 = !{!74, !10, i64 84}
!166 = distinct !{!166, !158}
!167 = !{!74, !10, i64 48}
!168 = !{!31, !6, i64 8}
!169 = !{!31, !10, i64 0}
!170 = !{!74, !10, i64 32}
!171 = !{!172, !10, i64 0}
!172 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !6, i64 8, !16, i64 16, !10, i64 20, !6, i64 24, !10, i64 32, !10, i64 36, !15, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!173 = !{!172, !10, i64 4}
!174 = !{!172, !6, i64 8}
!175 = !{!172, !10, i64 20}
!176 = !{!172, !6, i64 24}
!177 = !{!172, !10, i64 32}
!178 = !{!172, !10, i64 36}
!179 = !{!172, !15, i64 40}
!180 = !{!74, !10, i64 76}
!181 = !{!172, !10, i64 44}
!182 = !{!172, !10, i64 48}
!183 = !{!172, !10, i64 52}
!184 = !{!24, !14, i64 4}
!185 = distinct !{!185, !158}
!186 = !{!37, !14, i64 12}
!187 = !{!37, !14, i64 4}
!188 = distinct !{!188, !158}
!189 = !{!12, !6, i64 616}
!190 = distinct !{!190, !158}
!191 = !{!47, !14, i64 16}
!192 = !{!74, !14, i64 3704}
!193 = !{!46, !15, i64 202}
!194 = !{!46, !15, i64 12524}
!195 = !{!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.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.61 = 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.62 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.76 = 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

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

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

declare <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #5

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

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

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

; 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

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) local_unnamed_addr #5

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #5

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

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) local_unnamed_addr #5

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef, i32 noundef) local_unnamed_addr #8

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

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(921), ptr noundef, ptr noundef) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #10 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 #5

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

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

; 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 @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #5

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

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) local_unnamed_addr #5

; 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

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

declare void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #5

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #5

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

; 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 #10 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.ImVec2, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i16, align 2
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %struct.ImVector.5, align 8
  %24 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %25 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %26 = alloca %struct.ImVec4, align 4
  %27 = alloca %struct.ImVec2, align 8
  %28 = alloca %struct.ImVec2, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 8
  %33 = alloca %struct.ImVec2, align 4
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImVec2, align 8
  %36 = alloca ptr, align 8
  %37 = alloca %struct.ImRect, align 4
  %38 = alloca %struct.ImVec2, align 8
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca %struct.ImVec2, align 8
  %41 = alloca %struct.ImVec2, align 4
  %42 = alloca %struct.ImRect, align 4
  %43 = alloca %struct.ImRect, align 4
  %44 = alloca %struct.ImVec2, align 8
  %45 = alloca %struct.ImVec2, align 8
  %46 = alloca %struct.ImVec2, align 8
  %47 = alloca %struct.ImRect, align 4
  %48 = alloca %struct.ImRect, align 4
  %49 = alloca %struct.ImVec2, align 8
  %50 = alloca %struct.ImVec2, align 8
  %51 = alloca %struct.ImVec2, align 8
  %52 = alloca %struct.ImVec2, align 4
  %53 = alloca %struct.ImVec2, align 8
  %54 = tail call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %55 = getelementptr inbounds i8, ptr %54, i64 147
  %56 = load i8, ptr %55, align 1, !tbaa !5, !range !38, !noundef !39
  %57 = trunc nuw i8 %56 to i1
  br i1 %57, label %1424, label %58

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

62:                                               ; preds = %58
  tail call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.2, i32 noundef 3950, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

63:                                               ; preds = %58
  %64 = and i32 %5, 128
  %.not895.not = icmp eq i32 %64, 0
  %65 = and i32 %5, 67108864
  %66 = icmp ne i32 %65, 0
  %67 = and i32 %5, 67108992
  %.not896 = icmp eq i32 %67, 67108992
  br i1 %.not896, label %68, label %69

68:                                               ; preds = %63
  tail call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.2, i32 noundef 3951, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

69:                                               ; preds = %63
  %70 = and i32 %5, 64
  %.not897 = icmp eq i32 %70, 0
  %71 = and i32 %5, 1024
  %.not898 = icmp eq i32 %71, 0
  %72 = and i32 %5, 1088
  %.not899 = icmp eq i32 %72, 1088
  br i1 %.not899, label %73, label %74

73:                                               ; preds = %69
  tail call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.2, i32 noundef 3952, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

74:                                               ; preds = %69
  %75 = load ptr, ptr @GImGui, align 8, !tbaa !40
  %76 = and i32 %5, 16384
  %77 = icmp ne i32 %76, 0
  %78 = and i32 %5, 32768
  %.not900 = icmp eq i32 %78, 0
  %79 = and i32 %5, 65536
  %80 = icmp eq i32 %79, 0
  %81 = and i32 %5, 262144
  %.not901 = icmp eq i32 %81, 0
  %82 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not901, %82
  br i1 %or.cond17, label %84, label %83

83:                                               ; preds = %74
  tail call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.2, i32 noundef 3965, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

84:                                               ; preds = %74
  br i1 %66, label %85, label %86

85:                                               ; preds = %84
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %86

86:                                               ; preds = %85, %84
  %87 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(921) %54, ptr noundef %0, ptr noundef null)
  %88 = tail call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %0, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #15
  %.sroa.0494.0.copyload = load <2 x float>, ptr %4, align 4
  %89 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %66, label %90, label %94

90:                                               ; preds = %86
  %91 = getelementptr inbounds i8, ptr %75, i64 6528
  %92 = load float, ptr %91, align 8, !tbaa !41
  %93 = fmul float %92, 8.000000e+00
  br label %95

94:                                               ; preds = %86
  %.sroa.0495.4.vec.extract = extractelement <2 x float> %88, i64 1
  br label %95

95:                                               ; preds = %94, %90
  %96 = phi float [ %93, %90 ], [ %.sroa.0495.4.vec.extract, %94 ]
  %97 = getelementptr inbounds i8, ptr %75, i64 5532
  %98 = getelementptr inbounds i8, ptr %75, i64 5536
  %99 = load float, ptr %98, align 4, !tbaa !86
  %100 = tail call float @llvm.fmuladd.f32(float %99, float 2.000000e+00, float %96)
  %101 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0494.0.copyload, float noundef %89, float noundef %100)
  store <2 x float> %101, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #15
  %102 = extractelement <2 x float> %101, i64 0
  %.sroa.0495.0.vec.extract = extractelement <2 x float> %88, i64 0
  %103 = fcmp ogt float %.sroa.0495.0.vec.extract, 0.000000e+00
  %104 = extractelement <2 x float> %101, i64 1
  br i1 %103, label %105, label %109

105:                                              ; preds = %95
  %106 = getelementptr inbounds i8, ptr %75, i64 5556
  %107 = load float, ptr %106, align 4, !tbaa !87
  %108 = fadd float %.sroa.0495.0.vec.extract, %107
  br label %109

109:                                              ; preds = %95, %105
  %110 = phi float [ %108, %105 ], [ 0.000000e+00, %95 ]
  %111 = fadd float %102, %110
  %112 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %111, float noundef %104)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #15
  %113 = getelementptr inbounds i8, ptr %54, i64 216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15
  %114 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %113, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %114, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %113, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #15
  %115 = 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> %115, ptr %14, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %14)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #15
  %.sroa.0465.0.copyload = load float, ptr %9, align 8, !tbaa !88
  %.sroa.11.0.copyload = load float, ptr %112, align 4, !tbaa !88
  br i1 %66, label %116, label %147

116:                                              ; preds = %109
  %117 = load i64, ptr %113, align 8
  %118 = load float, ptr %98, align 4, !tbaa !86
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %118)
  %119 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %87, ptr noundef nonnull %11, i32 noundef 256)
  br i1 %119, label %121, label %120

120:                                              ; preds = %116
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread

121:                                              ; preds = %116
  %122 = getelementptr inbounds i8, ptr %75, i64 7376
  %123 = load i32, ptr %122, align 8, !tbaa !89
  store i64 %117, ptr %113, align 8
  %124 = getelementptr inbounds i8, ptr %75, i64 5784
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %124)
  %125 = getelementptr inbounds i8, ptr %75, i64 5540
  %126 = load float, ptr %125, align 4, !tbaa !90
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %126)
  %127 = getelementptr inbounds i8, ptr %75, i64 5544
  %128 = load float, ptr %127, align 4, !tbaa !91
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %128)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #15
  %129 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %129, ptr %15, align 8
  %130 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %0, i32 noundef %87, ptr noundef nonnull align 4 dereferenceable(8) %15, i1 noundef zeroext true, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #15
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 2)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  br i1 %130, label %132, label %131

131:                                              ; preds = %121
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread

132:                                              ; preds = %121
  %133 = getelementptr inbounds i8, ptr %75, i64 7184
  %134 = load ptr, ptr %133, align 8, !tbaa !92
  %135 = getelementptr inbounds i8, ptr %134, i64 216
  %136 = getelementptr inbounds i8, ptr %134, i64 292
  %137 = load i32, ptr %136, align 4, !tbaa !93
  %138 = shl nuw i32 1, %137
  %139 = getelementptr inbounds i8, ptr %134, i64 298
  %140 = load i16, ptr %139, align 2, !tbaa !94
  %141 = trunc i32 %138 to i16
  %142 = or i16 %140, %141
  store i16 %142, ptr %139, align 2, !tbaa !94
  %143 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %135, ptr noundef nonnull align 4 dereferenceable(8) %97)
  %144 = getelementptr inbounds i8, ptr %134, i64 132
  %145 = load float, ptr %144, align 4, !tbaa !95
  %146 = fsub float %.sroa.0465.0.copyload, %145
  br label %155

147:                                              ; preds = %109
  %148 = load float, ptr %98, align 4, !tbaa !86
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %148)
  %149 = and i32 %5, 268435456
  %.not902 = icmp eq i32 %149, 0
  br i1 %.not902, label %150, label %152

150:                                              ; preds = %147
  %151 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %87, ptr noundef nonnull %11, i32 noundef 256)
  br i1 %151, label %152, label %.thread

152:                                              ; preds = %150, %147
  %153 = getelementptr inbounds i8, ptr %75, i64 7376
  %154 = load i32, ptr %153, align 8, !tbaa !89
  br label %155

155:                                              ; preds = %132, %152
  %.1823 = phi i32 [ %123, %132 ], [ %154, %152 ]
  %.sroa.0465.2 = phi float [ %146, %132 ], [ %.sroa.0465.0.copyload, %152 ]
  %.2821 = phi ptr [ %134, %132 ], [ %54, %152 ]
  %156 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %87)
  br i1 %156, label %157, label %159

157:                                              ; preds = %155
  %158 = getelementptr inbounds i8, ptr %75, i64 8056
  store i32 1, ptr %158, align 8, !tbaa !96
  br label %159

159:                                              ; preds = %157, %155
  %160 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %87)
  %161 = and i32 %.1823, 256
  %162 = icmp ne i32 %161, 0
  %163 = getelementptr inbounds i8, ptr %75, i64 7260
  %164 = load i32, ptr %163, align 4, !tbaa !97
  %.not903 = icmp eq i32 %164, %87
  br i1 %.not903, label %177, label %165

165:                                              ; preds = %159
  %166 = getelementptr inbounds i8, ptr %75, i64 7716
  %167 = load i32, ptr %166, align 4, !tbaa !98
  %168 = icmp eq i32 %167, %87
  br i1 %168, label %177, label %169

169:                                              ; preds = %165
  %170 = getelementptr inbounds i8, ptr %75, i64 7704
  %171 = load i32, ptr %170, align 8, !tbaa !99
  %172 = icmp eq i32 %171, %87
  br i1 %172, label %173, label %177

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %75, i64 7748
  %175 = load i32, ptr %174, align 4, !tbaa !100
  %176 = icmp eq i32 %175, 2
  br label %177

177:                                              ; preds = %165, %173, %169, %159
  %178 = phi i1 [ false, %159 ], [ true, %165 ], [ false, %169 ], [ %176, %173 ]
  br i1 %156, label %179, label %183

179:                                              ; preds = %177
  %180 = getelementptr inbounds i8, ptr %75, i64 1056
  %181 = load i8, ptr %180, align 8, !tbaa !101, !range !38, !noundef !39
  %182 = trunc nuw i8 %181 to i1
  br label %183

183:                                              ; preds = %179, %177
  %184 = phi i1 [ false, %177 ], [ %182, %179 ]
  %185 = icmp ne ptr %160, null
  %or.cond = and i1 %66, %185
  br i1 %or.cond, label %186, label %196

186:                                              ; preds = %183
  %187 = icmp eq i32 %164, 0
  br i1 %187, label %188, label %.thread1043

188:                                              ; preds = %186
  %189 = getelementptr inbounds i8, ptr %75, i64 7320
  %190 = load i32, ptr %189, align 8, !tbaa !102
  %191 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2821, i32 noundef 1)
  %192 = icmp eq i32 %190, %191
  %.pre = load i32, ptr %163, align 4, !tbaa !97
  br label %.thread1043

.thread1043:                                      ; preds = %186, %188
  %193 = phi i32 [ %.pre, %188 ], [ %164, %186 ]
  %.ph = phi i1 [ %192, %188 ], [ false, %186 ]
  %194 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2821, i32 noundef 1)
  %195 = icmp eq i32 %193, %194
  br label %197

196:                                              ; preds = %183
  br i1 %66, label %197, label %202

197:                                              ; preds = %.thread1043, %196
  %198 = phi i1 [ %195, %.thread1043 ], [ false, %196 ]
  %199 = phi i1 [ %.ph, %.thread1043 ], [ false, %196 ]
  %200 = getelementptr inbounds i8, ptr %.2821, i64 96
  %201 = load float, ptr %200, align 4, !tbaa !103
  br label %202

202:                                              ; preds = %196, %197
  %203 = phi i1 [ %198, %197 ], [ false, %196 ]
  %204 = phi i1 [ %199, %197 ], [ false, %196 ]
  %205 = phi float [ %201, %197 ], [ 0x47EFFFFFE0000000, %196 ]
  br i1 %185, label %206, label %.thread1044

206:                                              ; preds = %202
  %207 = getelementptr inbounds i8, ptr %160, i64 99
  %208 = load i8, ptr %207, align 1, !tbaa !104
  %209 = xor i1 %66, true
  %210 = zext i1 %209 to i8
  %211 = icmp ne i8 %208, %210
  %brmerge = select i1 %184, i1 true, i1 %204
  %212 = select i1 %brmerge, i1 true, i1 %178
  %spec.select1034 = select i1 %212, i1 true, i1 %162
  %213 = select i1 %spec.select1034, i1 true, i1 %203
  br i1 %213, label %216, label %219

.thread1044:                                      ; preds = %202
  %brmerge1045 = select i1 %184, i1 true, i1 %204
  %214 = select i1 %brmerge1045, i1 true, i1 %178
  %spec.select10341047 = select i1 %214, i1 true, i1 %162
  %215 = select i1 %spec.select10341047, i1 true, i1 %203
  br i1 %215, label %216, label %.thread1052.thread

216:                                              ; preds = %.thread1044, %206
  %spec.select10341051 = phi i1 [ %spec.select10341047, %.thread1044 ], [ %spec.select1034, %206 ]
  %217 = phi i1 [ false, %.thread1044 ], [ %211, %206 ]
  %218 = load i32, ptr %163, align 4, !tbaa !97
  %.not904 = icmp ne i32 %218, %87
  %brmerge937 = select i1 %.not904, i1 true, i1 %217
  br i1 %brmerge937, label %220, label %.thread1052

219:                                              ; preds = %206
  br i1 %211, label %220, label %.thread1052.thread

220:                                              ; preds = %216, %219
  %221 = phi i8 [ 1, %216 ], [ 0, %219 ]
  %spec.select10341049 = phi i1 [ %spec.select10341051, %216 ], [ false, %219 ]
  %222 = phi i1 [ %217, %216 ], [ true, %219 ]
  %223 = getelementptr inbounds i8, ptr %75, i64 8416
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %223)
  %224 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16
  %225 = trunc i64 %224 to i32
  %226 = getelementptr inbounds i8, ptr %75, i64 8464
  %227 = add nsw i32 %225, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %226, i32 noundef %227)
  %228 = getelementptr inbounds i8, ptr %75, i64 8472
  %229 = load ptr, ptr %228, align 8, !tbaa !105
  %230 = sext i32 %227 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %229, ptr nonnull align 1 %2, i64 %230, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #15
  store ptr null, ptr %16, align 8, !tbaa !40
  %231 = getelementptr inbounds i8, ptr %75, i64 8432
  %232 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %231, i32 noundef %232)
  %233 = getelementptr inbounds i8, ptr %75, i64 8448
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %233, i32 noundef 0)
  %234 = getelementptr inbounds i8, ptr %75, i64 8480
  store i8 0, ptr %234, align 8, !tbaa !106
  %235 = getelementptr inbounds i8, ptr %75, i64 8440
  %236 = load ptr, ptr %235, align 8, !tbaa !107
  %237 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %236, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %16)
  %238 = getelementptr inbounds i8, ptr %75, i64 8420
  store i32 %237, ptr %238, align 4, !tbaa !108
  %239 = load ptr, ptr %16, align 8, !tbaa !40
  %240 = ptrtoint ptr %239 to i64
  %241 = ptrtoint ptr %2 to i64
  %242 = sub i64 %240, %241
  %243 = trunc i64 %242 to i32
  %244 = getelementptr inbounds i8, ptr %75, i64 8424
  store i32 %243, ptr %244, align 8, !tbaa !109
  %245 = load i32, ptr %223, align 8, !tbaa !110
  %246 = icmp ne i32 %245, %87
  %.not906 = select i1 %246, i1 true, i1 %222
  br i1 %.not906, label %248, label %247

247:                                              ; preds = %220
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3736) %223)
  br label %253

248:                                              ; preds = %220
  store i32 %87, ptr %223, align 8, !tbaa !110
  %249 = getelementptr inbounds i8, ptr %75, i64 8488
  store float 0.000000e+00, ptr %249, align 8, !tbaa !111
  %250 = getelementptr inbounds i8, ptr %75, i64 8492
  %251 = xor i1 %66, true
  %252 = zext i1 %251 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %250, i32 noundef %252)
  br label %253

253:                                              ; preds = %248, %247
  br i1 %66, label %270, label %254

254:                                              ; preds = %253
  %255 = trunc i32 %5 to i8
  %256 = lshr i8 %255, 4
  br i1 %178, label %257, label %263

257:                                              ; preds = %254
  br i1 %.not906, label %262, label %258

258:                                              ; preds = %257
  %259 = getelementptr inbounds i8, ptr %75, i64 7720
  %260 = load i32, ptr %259, align 8, !tbaa !112
  %261 = and i32 %260, 4
  %.not908 = icmp eq i32 %261, 0
  br i1 %.not908, label %262, label %263

262:                                              ; preds = %258, %257
  br label %263

263:                                              ; preds = %262, %258, %254
  %.1830 = phi i8 [ %256, %258 ], [ 1, %262 ], [ %256, %254 ]
  br i1 %162, label %269, label %264

264:                                              ; preds = %263
  br i1 %184, label %265, label %270

265:                                              ; preds = %264
  %266 = getelementptr inbounds i8, ptr %75, i64 320
  %267 = load i8, ptr %266, align 8, !tbaa !113, !range !38, !noundef !39
  %268 = trunc nuw i8 %267 to i1
  br i1 %268, label %269, label %270

269:                                              ; preds = %265, %263
  br label %270

270:                                              ; preds = %264, %265, %269, %253
  %.2831 = phi i8 [ 0, %253 ], [ 1, %269 ], [ %.1830, %265 ], [ %.1830, %264 ]
  %271 = and i32 %5, 8192
  %.not909 = icmp eq i32 %271, 0
  br i1 %.not909, label %274, label %272

272:                                              ; preds = %270
  %273 = getelementptr inbounds i8, ptr %75, i64 8504
  store i8 1, ptr %273, align 4, !tbaa !114
  br label %274

274:                                              ; preds = %272, %270
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #15
  br label %.thread1052

.thread1052.thread:                               ; preds = %219, %.thread1044
  %275 = load i32, ptr %163, align 4, !tbaa !97
  br label %291

.thread1052:                                      ; preds = %216, %274
  %276 = phi i8 [ %221, %274 ], [ 1, %216 ]
  %spec.select10341048 = phi i1 [ %spec.select10341049, %274 ], [ %spec.select10341051, %216 ]
  %.3832 = phi i8 [ %.2831, %274 ], [ 0, %216 ]
  %.0824 = phi ptr [ %223, %274 ], [ %160, %216 ]
  %277 = load i32, ptr %163, align 4, !tbaa !97
  %.not910 = icmp ne i32 %277, %87
  %brmerge940.not = and i1 %spec.select10341048, %.not910
  br i1 %brmerge940.not, label %278, label %291

278:                                              ; preds = %.thread1052
  %.not911 = icmp eq ptr %.0824, null
  br i1 %.not911, label %.critedge, label %279

279:                                              ; preds = %278
  %280 = load i32, ptr %.0824, align 8, !tbaa !110
  %281 = icmp eq i32 %280, %87
  br i1 %281, label %282, label %.critedge

.critedge:                                        ; preds = %278, %279
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.2, i32 noundef 4093, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

282:                                              ; preds = %279
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %87, ptr noundef nonnull %54)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %87, ptr noundef nonnull %54)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %54)
  %283 = getelementptr inbounds i8, ptr %75, i64 7280
  %brmerge941.not = icmp eq i32 %67, 0
  %spec.select.v = select i1 %brmerge941.not, i32 3, i32 15
  %284 = load <2 x i32>, ptr %283, align 8, !tbaa !115
  %285 = insertelement <2 x i32> <i32 poison, i32 2>, i32 %spec.select.v, i64 0
  %286 = or <2 x i32> %284, %285
  store <2 x i32> %286, ptr %283, align 8, !tbaa !115
  %287 = getelementptr inbounds i8, ptr %75, i64 7288
  %288 = load i64, ptr %287, align 8, !tbaa !116
  %spec.select942.v = select i1 %66, i64 480, i64 384
  %spec.select942 = or i64 %288, %spec.select942.v
  store i64 %spec.select942, ptr %287, align 8, !tbaa !116
  %.not912 = icmp eq i32 %72, 0
  br i1 %.not912, label %.thread1055, label %289

289:                                              ; preds = %282
  %290 = or i64 %spec.select942, 1
  store i64 %290, ptr %287, align 8, !tbaa !116
  br label %.thread1055

291:                                              ; preds = %.thread1052.thread, %.thread1052
  %292 = phi i32 [ %275, %.thread1052.thread ], [ %277, %.thread1052 ]
  %.08241125 = phi ptr [ %160, %.thread1052.thread ], [ %.0824, %.thread1052 ]
  %.38321124 = phi i8 [ 0, %.thread1052.thread ], [ %.3832, %.thread1052 ]
  %293 = phi i8 [ 0, %.thread1052.thread ], [ %276, %.thread1052 ]
  %294 = icmp eq i32 %292, %87
  %295 = icmp eq ptr %.08241125, null
  %or.cond5 = and i1 %295, %294
  br i1 %or.cond5, label %296, label %.thread1055

296:                                              ; preds = %291
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %.thread1055

.thread1055:                                      ; preds = %289, %282, %296, %291
  %.08241126 = phi ptr [ %.0824, %289 ], [ %.0824, %282 ], [ null, %296 ], [ %.08241125, %291 ]
  %.38321123 = phi i8 [ %.3832, %289 ], [ %.3832, %282 ], [ %.38321124, %296 ], [ %.38321124, %291 ]
  %297 = phi i8 [ %276, %289 ], [ %276, %282 ], [ %293, %296 ], [ %293, %291 ]
  %298 = load i32, ptr %163, align 4, !tbaa !97
  %299 = icmp eq i32 %298, %87
  br i1 %299, label %.thread1057, label %302

.thread1057:                                      ; preds = %.thread1055
  %300 = getelementptr inbounds i8, ptr %75, i64 1056
  %301 = load i8, ptr %300, align 8, !tbaa !101, !range !38, !noundef !39
  %.not1081 = xor i8 %297, 1
  %not.brmerge944 = and i8 %301, %.not1081
  br label %305

302:                                              ; preds = %.thread1055
  %303 = icmp ne ptr %.08241126, null
  %304 = select i1 %303, i1 %203, i1 false
  br label %305

305:                                              ; preds = %.thread1057, %302
  %.08251059 = phi i8 [ 0, %302 ], [ %not.brmerge944, %.thread1057 ]
  %306 = phi i1 [ %304, %302 ], [ true, %.thread1057 ]
  %307 = icmp ne ptr %.08241126, null
  br i1 %307, label %308, label %.thread1060

308:                                              ; preds = %305
  %309 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br i1 %309, label %312, label %310

310:                                              ; preds = %308
  %311 = trunc i8 %.38321123 to i1
  br i1 %311, label %312, label %313

312:                                              ; preds = %310, %308
  br label %313

313:                                              ; preds = %312, %310
  %314 = phi i1 [ false, %310 ], [ %306, %312 ]
  %brmerge945 = or i1 %306, %314
  %or.cond1032 = select i1 %77, i1 %brmerge945, i1 false
  br i1 %or.cond1032, label %315, label %.thread1060

315:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #15
  store ptr null, ptr %17, align 8, !tbaa !40
  %316 = getelementptr inbounds i8, ptr %.08241126, i64 16
  %317 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %316, i32 noundef %317)
  %318 = getelementptr inbounds i8, ptr %.08241126, i64 24
  %319 = load ptr, ptr %318, align 8, !tbaa !107
  %320 = load i32, ptr %316, align 8, !tbaa !117
  %321 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %319, i32 noundef %320, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %17)
  %322 = getelementptr inbounds i8, ptr %.08241126, i64 4
  store i32 %321, ptr %322, align 4, !tbaa !108
  %323 = load ptr, ptr %17, align 8, !tbaa !40
  %324 = ptrtoint ptr %323 to i64
  %325 = ptrtoint ptr %2 to i64
  %326 = sub i64 %324, %325
  %327 = trunc i64 %326 to i32
  %328 = getelementptr inbounds i8, ptr %.08241126, i64 8
  store i32 %327, ptr %328, align 8, !tbaa !109
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  %329 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  %330 = and i1 %314, %329
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #15
  br label %.thread1060

.thread1060:                                      ; preds = %305, %315, %313
  %.0836.in = phi i1 [ %330, %315 ], [ %314, %313 ], [ false, %305 ]
  %brmerge946 = select i1 %306, i1 true, i1 %.0836.in
  br i1 %brmerge946, label %335, label %331

331:                                              ; preds = %.thread1060
  %332 = load i32, ptr %163, align 4, !tbaa !97
  %333 = icmp eq i32 %332, %87
  %.not = xor i1 %77, true
  %334 = and i1 %333, %.not
  %or.cond947 = and i1 %307, %334
  br i1 %or.cond947, label %336, label %340

335:                                              ; preds = %.thread1060
  %.not.old = xor i1 %77, true
  %or.cond9.old = and i1 %307, %.not.old
  br i1 %or.cond9.old, label %336, label %340

336:                                              ; preds = %331, %335
  %337 = getelementptr inbounds i8, ptr %.08241126, i64 64
  %338 = load i8, ptr %337, align 8, !tbaa !106, !range !38, !noundef !39
  %339 = trunc nuw i8 %338 to i1
  br label %340

340:                                              ; preds = %336, %335, %331
  %341 = phi i1 [ false, %335 ], [ false, %331 ], [ %339, %336 ]
  %.not913 = icmp eq ptr %1, null
  br i1 %.not913, label %350, label %342

342:                                              ; preds = %340
  br i1 %341, label %343, label %346

343:                                              ; preds = %342
  %344 = getelementptr inbounds i8, ptr %.08241126, i64 40
  %345 = load ptr, ptr %344, align 8, !tbaa !118
  br label %346

346:                                              ; preds = %342, %343
  %347 = phi ptr [ %345, %343 ], [ %2, %342 ]
  %348 = load i8, ptr %347, align 1, !tbaa !119
  %349 = icmp eq i8 %348, 0
  br label %350

350:                                              ; preds = %346, %340
  %351 = phi i1 [ false, %340 ], [ %349, %346 ]
  %brmerge948 = select i1 %.not900, i1 true, i1 %351
  br i1 %brmerge948, label %382, label %352

352:                                              ; preds = %350
  %353 = getelementptr inbounds i8, ptr %75, i64 6520
  %354 = load ptr, ptr %353, align 8, !tbaa !120
  %355 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110) %354, i16 noundef zeroext 42)
  %356 = getelementptr inbounds i8, ptr %75, i64 12152
  %357 = load ptr, ptr %353, align 8, !tbaa !120
  %358 = getelementptr inbounds i8, ptr %357, i64 20
  %359 = load float, ptr %358, align 4, !tbaa !121
  %360 = getelementptr inbounds i8, ptr %75, i64 12172
  store float %359, ptr %360, align 4, !tbaa !121
  %361 = getelementptr inbounds i8, ptr %357, i64 92
  %362 = getelementptr inbounds i8, ptr %75, i64 12244
  %363 = load <2 x float>, ptr %361, align 4, !tbaa !88
  store <2 x float> %363, ptr %362, align 4, !tbaa !88
  %364 = getelementptr inbounds i8, ptr %357, i64 100
  %365 = load float, ptr %364, align 4, !tbaa !122
  %366 = getelementptr inbounds i8, ptr %75, i64 12252
  store float %365, ptr %366, align 4, !tbaa !122
  %367 = getelementptr inbounds i8, ptr %357, i64 64
  %368 = load ptr, ptr %367, align 8, !tbaa !123
  %369 = getelementptr inbounds i8, ptr %75, i64 12216
  store ptr %368, ptr %369, align 8, !tbaa !123
  %370 = getelementptr inbounds i8, ptr %75, i64 12208
  store ptr %355, ptr %370, align 8, !tbaa !124
  %371 = getelementptr inbounds i8, ptr %355, i64 4
  %372 = load float, ptr %371, align 4, !tbaa !125
  %373 = getelementptr inbounds i8, ptr %75, i64 12168
  store float %372, ptr %373, align 8, !tbaa !127
  %374 = getelementptr inbounds i8, ptr %75, i64 12192
  %375 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %374)
  br i1 %375, label %376, label %.critedge11

376:                                              ; preds = %352
  %377 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %356)
  br i1 %377, label %378, label %.critedge11

378:                                              ; preds = %376
  %379 = getelementptr inbounds i8, ptr %75, i64 12176
  %380 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %379)
  br i1 %380, label %381, label %.critedge11

.critedge11:                                      ; preds = %376, %352, %378
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.2, i32 noundef 4153, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

381:                                              ; preds = %378
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %356)
  br label %382

382:                                              ; preds = %350, %381
  %383 = load i32, ptr %163, align 4, !tbaa !97
  %384 = icmp eq i32 %383, %87
  br i1 %384, label %385, label %527

385:                                              ; preds = %382
  br i1 %307, label %387, label %386

386:                                              ; preds = %385
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4161, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

387:                                              ; preds = %385
  %388 = getelementptr inbounds i8, ptr %.08241126, i64 8
  %389 = load i32, ptr %388, align 8, !tbaa !109
  %390 = getelementptr inbounds i8, ptr %.08241126, i64 3710
  store i8 0, ptr %390, align 2, !tbaa !128
  %391 = getelementptr inbounds i8, ptr %.08241126, i64 68
  store i32 %3, ptr %391, align 4, !tbaa !129
  %392 = getelementptr inbounds i8, ptr %.08241126, i64 3712
  store i32 %5, ptr %392, align 8, !tbaa !130
  %393 = getelementptr inbounds i8, ptr %.08241126, i64 3720
  store ptr %6, ptr %393, align 8, !tbaa !131
  %394 = getelementptr inbounds i8, ptr %.08241126, i64 3728
  store ptr %7, ptr %394, align 8, !tbaa !132
  %395 = getelementptr inbounds i8, ptr %75, i64 304
  %396 = load i8, ptr %395, align 8, !tbaa !101, !range !38, !noundef !39
  %397 = xor i8 %396, 1
  %398 = getelementptr inbounds i8, ptr %75, i64 7273
  store i8 %397, ptr %398, align 1, !tbaa !133
  %399 = getelementptr inbounds i8, ptr %75, i64 13156
  store i32 1, ptr %399, align 4, !tbaa !134
  %400 = getelementptr inbounds i8, ptr %75, i64 296
  %401 = load float, ptr %400, align 8, !tbaa !135
  %402 = load float, ptr %11, align 8, !tbaa !136
  %403 = fsub float %401, %402
  %404 = load float, ptr %97, align 4, !tbaa !137
  %405 = fsub float %403, %404
  %406 = getelementptr inbounds i8, ptr %.08241126, i64 72
  %407 = load float, ptr %406, align 8, !tbaa !111
  %408 = fadd float %405, %407
  br i1 %66, label %409, label %415

409:                                              ; preds = %387
  %410 = getelementptr inbounds i8, ptr %75, i64 300
  %411 = load float, ptr %410, align 4, !tbaa !138
  %412 = getelementptr inbounds i8, ptr %.2821, i64 220
  %413 = load float, ptr %412, align 4, !tbaa !139
  %414 = fsub float %411, %413
  br label %419

415:                                              ; preds = %387
  %416 = getelementptr inbounds i8, ptr %75, i64 6528
  %417 = load float, ptr %416, align 8, !tbaa !41
  %418 = fmul float %417, 5.000000e-01
  br label %419

419:                                              ; preds = %415, %409
  %420 = phi float [ %414, %409 ], [ %418, %415 ]
  %421 = getelementptr inbounds i8, ptr %75, i64 201
  %422 = load i8, ptr %421, align 1, !tbaa !140, !range !38, !noundef !39
  %423 = trunc nuw i8 %422 to i1
  %424 = trunc i8 %.38321123 to i1
  br i1 %424, label %430, label %425

425:                                              ; preds = %419
  %.not949 = xor i1 %156, true
  %brmerge950 = select i1 %.not949, i1 true, i1 %423
  br i1 %brmerge950, label %432, label %426

426:                                              ; preds = %425
  %427 = getelementptr inbounds i8, ptr %75, i64 1061
  %428 = load i8, ptr %427, align 1, !tbaa !101, !range !38, !noundef !39
  %429 = trunc nuw i8 %428 to i1
  br i1 %429, label %430, label %432

430:                                              ; preds = %426, %419
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  %431 = getelementptr inbounds i8, ptr %.08241126, i64 3709
  store i8 1, ptr %431, align 1, !tbaa !141
  br label %467

432:                                              ; preds = %425, %426
  %433 = select i1 %156, i1 %423, i1 false
  br i1 %433, label %434, label %439

434:                                              ; preds = %432
  %435 = getelementptr inbounds i8, ptr %75, i64 1061
  %436 = load i8, ptr %435, align 1, !tbaa !101, !range !38, !noundef !39
  %437 = trunc nuw i8 %436 to i1
  br i1 %437, label %438, label %439

438:                                              ; preds = %434
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef 2097164)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef 6291469)
  br label %467

439:                                              ; preds = %432, %434
  %440 = getelementptr inbounds i8, ptr %75, i64 1056
  %441 = load i8, ptr %440, align 8, !tbaa !101, !range !38, !noundef !39
  %442 = trunc nuw i8 %441 to i1
  br i1 %442, label %443, label %450

443:                                              ; preds = %439
  %444 = getelementptr inbounds i8, ptr %.08241126, i64 3709
  %445 = load i8, ptr %444, align 1, !tbaa !141, !range !38, !noundef !39
  %446 = trunc nuw i8 %445 to i1
  br i1 %446, label %450, label %447

447:                                              ; preds = %443
  br i1 %156, label %448, label %467

448:                                              ; preds = %447
  %449 = getelementptr inbounds i8, ptr %.08241126, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08241126, ptr noundef nonnull %449, float noundef %408, float noundef %420)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br label %467

450:                                              ; preds = %443, %439
  %451 = trunc nuw i8 %396 to i1
  br i1 %451, label %452, label %467

452:                                              ; preds = %450
  %453 = getelementptr inbounds i8, ptr %.08241126, i64 3709
  %454 = load i8, ptr %453, align 1, !tbaa !141, !range !38, !noundef !39
  %455 = trunc nuw i8 %454 to i1
  br i1 %455, label %467, label %456

456:                                              ; preds = %452
  %457 = getelementptr inbounds i8, ptr %75, i64 948
  %458 = load float, ptr %457, align 4, !tbaa !142
  %459 = fcmp une float %458, 0.000000e+00
  br i1 %459, label %464, label %460

460:                                              ; preds = %456
  %461 = getelementptr inbounds i8, ptr %75, i64 952
  %462 = load float, ptr %461, align 4, !tbaa !143
  %463 = fcmp une float %462, 0.000000e+00
  br i1 %463, label %464, label %467

464:                                              ; preds = %460, %456
  %465 = getelementptr inbounds i8, ptr %.08241126, i64 76
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08241126, ptr noundef nonnull %465, float noundef %408, float noundef %420)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  %466 = getelementptr inbounds i8, ptr %.08241126, i64 3708
  store i8 1, ptr %466, align 4, !tbaa !144
  br label %467

467:                                              ; preds = %438, %450, %452, %460, %464, %447, %448, %430
  %468 = getelementptr inbounds i8, ptr %.08241126, i64 3709
  %469 = load i8, ptr %468, align 1, !tbaa !141, !range !38, !noundef !39
  %470 = trunc nuw i8 %469 to i1
  br i1 %470, label %471, label %475

471:                                              ; preds = %467
  %472 = load i8, ptr %395, align 8, !tbaa !101, !range !38, !noundef !39
  %473 = trunc nuw i8 %472 to i1
  br i1 %473, label %475, label %474

474:                                              ; preds = %471
  store i8 0, ptr %468, align 1, !tbaa !141
  br label %475

475:                                              ; preds = %474, %471, %467
  %476 = getelementptr inbounds i8, ptr %75, i64 320
  %477 = load i8, ptr %476, align 8, !tbaa !113, !range !38, !noundef !39
  %478 = trunc nuw i8 %477 to i1
  br i1 %478, label %479, label %484

479:                                              ; preds = %475
  %480 = getelementptr inbounds i8, ptr %75, i64 322
  %481 = load i8, ptr %480, align 2, !tbaa !145, !range !38, !noundef !39
  %482 = trunc nuw i8 %481 to i1
  %.not954 = xor i1 %482, true
  %483 = select i1 %482, i1 %423, i1 false
  br i1 %483, label %485, label %489

484:                                              ; preds = %475
  br i1 %423, label %485, label %489

485:                                              ; preds = %479, %484
  %486 = getelementptr inbounds i8, ptr %75, i64 323
  %487 = load i8, ptr %486, align 1, !tbaa !146, !range !38, !noundef !39
  %488 = trunc nuw i8 %487 to i1
  br label %489

489:                                              ; preds = %479, %484, %485
  %490 = phi i1 [ %.not954, %479 ], [ false, %484 ], [ %488, %485 ]
  br i1 %.not898, label %505, label %491

491:                                              ; preds = %489
  %492 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  %.not957 = xor i1 %492, true
  %brmerge958 = select i1 %.not957, i1 true, i1 %490
  br i1 %brmerge958, label %505, label %493

493:                                              ; preds = %491
  %494 = getelementptr inbounds i8, ptr %75, i64 321
  %495 = load i8, ptr %494, align 1, !tbaa !147, !range !38, !noundef !39
  %496 = trunc nuw i8 %495 to i1
  %brmerge959 = or i1 %77, %496
  br i1 %brmerge959, label %505, label %497

497:                                              ; preds = %493
  %498 = getelementptr inbounds i8, ptr %75, i64 5456
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #15
  store i16 9, ptr %18, align 2, !tbaa !148
  %499 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %498, ptr noundef nonnull align 2 dereferenceable(2) %18)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #15
  br i1 %499, label %505, label %500

500:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #15
  store i32 9, ptr %19, align 4, !tbaa !115
  %501 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %19, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %501, label %502, label %504

502:                                              ; preds = %500
  %503 = load i32, ptr %19, align 4, !tbaa !115
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %503)
  br label %504

504:                                              ; preds = %502, %500
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #15
  br label %505

505:                                              ; preds = %493, %491, %497, %504, %489
  %506 = getelementptr inbounds i8, ptr %75, i64 5456
  %507 = load i32, ptr %506, align 8, !tbaa !149
  %508 = icmp sgt i32 %507, 0
  br i1 %508, label %509, label %527

509:                                              ; preds = %505
  %brmerge960 = or i1 %77, %490
  %brmerge961 = select i1 %brmerge960, i1 true, i1 %178
  br i1 %brmerge961, label %.loopexit1087, label %.lr.ph

.lr.ph:                                           ; preds = %509
  %510 = getelementptr inbounds i8, ptr %75, i64 321
  br label %511

511:                                              ; preds = %.lr.ph, %523
  %.08541090 = phi i32 [ 0, %.lr.ph ], [ %524, %523 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #15
  %512 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %506, i32 noundef %.08541090)
  %513 = load i16, ptr %512, align 2, !tbaa !148
  %514 = zext i16 %513 to i32
  store i32 %514, ptr %20, align 4, !tbaa !115
  %515 = icmp eq i16 %513, 9
  br i1 %515, label %516, label %519

516:                                              ; preds = %511
  %517 = load i8, ptr %510, align 1, !tbaa !147, !range !38, !noundef !39
  %518 = trunc nuw i8 %517 to i1
  br i1 %518, label %523, label %519

519:                                              ; preds = %516, %511
  %520 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %520, label %521, label %523

521:                                              ; preds = %519
  %522 = load i32, ptr %20, align 4, !tbaa !115
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %522)
  br label %523

523:                                              ; preds = %519, %521, %516
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #15
  %524 = add nuw nsw i32 %.08541090, 1
  %525 = load i32, ptr %506, align 8, !tbaa !149
  %526 = icmp slt i32 %524, %525
  br i1 %526, label %511, label %.loopexit1087, !llvm.loop !150

.loopexit1087:                                    ; preds = %523, %509
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %506, i32 noundef 0)
  br label %527

527:                                              ; preds = %505, %.loopexit1087, %382
  %.0852 = phi i32 [ 0, %382 ], [ %389, %.loopexit1087 ], [ %389, %505 ]
  %528 = load i32, ptr %163, align 4, !tbaa !97
  %529 = icmp eq i32 %528, %87
  br i1 %529, label %530, label %851

530:                                              ; preds = %527
  %531 = getelementptr inbounds i8, ptr %75, i64 7272
  %532 = load i8, ptr %531, align 8, !tbaa !152, !range !38, !noundef !39
  %533 = trunc nuw i8 %532 to i1
  br i1 %533, label %.thread1136, label %534

534:                                              ; preds = %530
  %535 = trunc nuw i8 %.08251059 to i1
  br i1 %535, label %.thread1136, label %536

536:                                              ; preds = %534
  br i1 %307, label %538, label %537

537:                                              ; preds = %536
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4242, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

538:                                              ; preds = %536
  %539 = getelementptr inbounds i8, ptr %75, i64 960
  %540 = load i32, ptr %539, align 8, !tbaa !153
  %541 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %542 = icmp eq i32 %540, %541
  br i1 %542, label %544, label %543

543:                                              ; preds = %538
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 4243, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

544:                                              ; preds = %538
  %545 = load float, ptr %98, align 4, !tbaa !86
  %546 = fsub float %.sroa.11.0.copyload, %545
  %547 = getelementptr inbounds i8, ptr %75, i64 6528
  %548 = load float, ptr %547, align 8, !tbaa !41
  %549 = fdiv float %546, %548
  %550 = fptosi float %549 to i32
  %551 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %550, i32 noundef 1)
  %552 = getelementptr inbounds i8, ptr %.08241126, i64 76
  %553 = getelementptr inbounds i8, ptr %.08241126, i64 92
  store i32 %551, ptr %553, align 4, !tbaa !154
  %554 = getelementptr inbounds i8, ptr %75, i64 321
  %555 = load i8, ptr %554, align 1, !tbaa !147, !range !38, !noundef !39
  %556 = trunc nuw i8 %555 to i1
  %557 = select i1 %556, i32 4194304, i32 0
  %558 = getelementptr inbounds i8, ptr %75, i64 201
  %559 = load i8, ptr %558, align 1, !tbaa !140, !range !38, !noundef !39
  %560 = trunc nuw i8 %559 to i1
  br i1 %560, label %564, label %561

561:                                              ; preds = %544
  %562 = getelementptr inbounds i8, ptr %75, i64 322
  %563 = getelementptr inbounds i8, ptr %75, i64 320
  %.in = load i8, ptr %563, align 2, !tbaa !101, !range !38, !noundef !39
  %.pre1098 = load i32, ptr %539, align 8, !tbaa !153
  br label %578

564:                                              ; preds = %544
  %565 = load i32, ptr %539, align 8, !tbaa !153
  %566 = icmp eq i32 %565, 10
  %567 = getelementptr inbounds i8, ptr %75, i64 322
  %568 = getelementptr inbounds i8, ptr %75, i64 320
  %.in1066 = load i8, ptr %567, align 2, !tbaa !101, !range !38, !noundef !39
  %569 = getelementptr inbounds i8, ptr %75, i64 323
  %570 = load i8, ptr %569, align 1, !tbaa !146, !range !38, !noundef !39
  %571 = trunc nuw i8 %570 to i1
  br i1 %571, label %572, label %578

572:                                              ; preds = %564
  %573 = load i8, ptr %568, align 8, !tbaa !113, !range !38, !noundef !39
  %574 = trunc nuw i8 %573 to i1
  br i1 %574, label %578, label %575

575:                                              ; preds = %572
  %576 = trunc nuw i8 %.in1066 to i1
  %577 = xor i1 %576, true
  br label %578

578:                                              ; preds = %561, %575, %572, %564
  %579 = phi i32 [ %565, %572 ], [ %565, %564 ], [ %.pre1098, %561 ], [ %565, %575 ]
  %.v1083 = phi i32 [ 8, %572 ], [ 8, %564 ], [ 1, %561 ], [ 8, %575 ]
  %.in1082 = phi i8 [ %.in1066, %572 ], [ %.in1066, %564 ], [ %.in, %561 ], [ %.in1066, %575 ]
  %580 = phi ptr [ %568, %572 ], [ %568, %564 ], [ %563, %561 ], [ %568, %575 ]
  %581 = phi ptr [ %567, %572 ], [ %567, %564 ], [ %562, %561 ], [ %567, %575 ]
  %582 = phi i1 [ %566, %572 ], [ %566, %564 ], [ false, %561 ], [ %566, %575 ]
  %583 = phi i1 [ false, %572 ], [ false, %564 ], [ false, %561 ], [ %577, %575 ]
  %584 = trunc nuw i8 %.in1082 to i1
  %585 = icmp eq i32 %579, 1
  %586 = icmp eq i32 %579, 2
  %587 = icmp eq i32 %579, %.v1083
  br i1 %587, label %588, label %590

588:                                              ; preds = %578
  %589 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %589, label %595, label %590

590:                                              ; preds = %588, %578
  br i1 %586, label %591, label %598

591:                                              ; preds = %590
  %592 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %593 = and i1 %.not900, %592
  %594 = xor i1 %593, true
  %brmerge964 = or i1 %77, %594
  %.not970 = xor i1 %66, true
  %brmerge971 = or i1 %brmerge964, %.not970
  %not.brmerge964 = xor i1 %brmerge964, true
  br i1 %brmerge971, label %598, label %596

595:                                              ; preds = %588
  %.not900.not965 = xor i1 %.not900, true
  %brmerge966 = or i1 %77, %.not900.not965
  %.not967 = xor i1 %66, true
  %brmerge968 = or i1 %brmerge966, %.not967
  %not.brmerge966 = xor i1 %brmerge966, true
  br i1 %brmerge968, label %.thread1067, label %596

596:                                              ; preds = %591, %595
  %597 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br label %598

598:                                              ; preds = %591, %596, %590
  %599 = phi i1 [ %not.brmerge964, %591 ], [ false, %590 ], [ %597, %596 ]
  br i1 %587, label %.thread1067, label %602

.thread1067:                                      ; preds = %595, %598
  %600 = phi i1 [ %599, %598 ], [ %not.brmerge966, %595 ]
  %601 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %601, label %606, label %602

602:                                              ; preds = %.thread1067, %598
  %603 = phi i1 [ %600, %.thread1067 ], [ %599, %598 ]
  br i1 %585, label %604, label %611

604:                                              ; preds = %602
  %605 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %brmerge975.demorgan = and i1 %.not900, %605
  %brmerge977.not = and i1 %66, %brmerge975.demorgan
  br i1 %brmerge977.not, label %608, label %611

606:                                              ; preds = %.thread1067
  %607 = and i32 %5, 67141632
  %brmerge981.not = icmp eq i32 %607, 67108864
  br i1 %brmerge981.not, label %608, label %.thread1068

608:                                              ; preds = %606, %604
  %609 = phi i1 [ %600, %606 ], [ %603, %604 ]
  %610 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br label %611

611:                                              ; preds = %604, %608, %602
  %612 = phi i1 [ %603, %604 ], [ %603, %602 ], [ %609, %608 ]
  %613 = phi i1 [ %brmerge975.demorgan, %604 ], [ false, %602 ], [ %610, %608 ]
  br i1 %587, label %.thread1068, label %617

.thread1068:                                      ; preds = %606, %611
  %614 = phi i1 [ %613, %611 ], [ %.not900, %606 ]
  %615 = phi i1 [ %612, %611 ], [ %600, %606 ]
  %616 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %616, label %622, label %617

617:                                              ; preds = %.thread1068, %611
  %618 = phi i1 [ %614, %.thread1068 ], [ %613, %611 ]
  %619 = phi i1 [ %615, %.thread1068 ], [ %612, %611 ]
  br i1 %586, label %620, label %626

620:                                              ; preds = %617
  %621 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %621, label %622, label %626

622:                                              ; preds = %620, %.thread1068
  %623 = phi i1 [ %618, %620 ], [ %614, %.thread1068 ]
  %624 = phi i1 [ %619, %620 ], [ %615, %.thread1068 ]
  %625 = xor i1 %77, true
  br label %626

626:                                              ; preds = %622, %620, %617
  %627 = phi i1 [ %618, %620 ], [ %618, %617 ], [ %623, %622 ]
  %628 = phi i1 [ %619, %620 ], [ %619, %617 ], [ %624, %622 ]
  %629 = phi i1 [ false, %620 ], [ false, %617 ], [ %625, %622 ]
  br i1 %587, label %630, label %634

630:                                              ; preds = %626
  %631 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  %not. = xor i1 %77, true
  %632 = and i1 %631, %not.
  %spec.select1035 = and i1 %80, %632
  %633 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %633, label %638, label %634

634:                                              ; preds = %626, %630
  %635 = phi i1 [ %spec.select1035, %630 ], [ false, %626 ]
  br i1 %582, label %636, label %640

636:                                              ; preds = %634
  %637 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %637, label %._crit_edge1112, label %640

._crit_edge1112:                                  ; preds = %636
  %.pre1113 = xor i1 %77, true
  br label %638

638:                                              ; preds = %._crit_edge1112, %630
  %not.1084.pre-phi = phi i1 [ %.pre1113, %._crit_edge1112 ], [ %not., %630 ]
  %639 = phi i1 [ %635, %._crit_edge1112 ], [ %spec.select1035, %630 ]
  %spec.select984 = and i1 %80, %not.1084.pre-phi
  br label %640

640:                                              ; preds = %638, %636, %634
  %641 = phi i1 [ %635, %636 ], [ %635, %634 ], [ %639, %638 ]
  %642 = phi i1 [ false, %636 ], [ false, %634 ], [ %spec.select984, %638 ]
  %643 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %643, label %646, label %644

644:                                              ; preds = %640
  %645 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br label %646

646:                                              ; preds = %644, %640
  %647 = phi i1 [ true, %640 ], [ %645, %644 ]
  %648 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 0, i32 noundef 1)
  br i1 %648, label %649, label %651

649:                                              ; preds = %646
  %650 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 12, i1 noundef zeroext true)
  br i1 %650, label %651, label %653

651:                                              ; preds = %649, %646
  %652 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 2, i32 noundef 1)
  br label %653

653:                                              ; preds = %651, %649
  %654 = phi i1 [ true, %649 ], [ %652, %651 ]
  %655 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %655, label %658, label %656

656:                                              ; preds = %653
  %657 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 1, i32 noundef 1)
  br label %658

658:                                              ; preds = %656, %653
  %659 = phi i1 [ true, %653 ], [ %657, %656 ]
  %660 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %660, label %661, label %664

661:                                              ; preds = %658
  %662 = select i1 %584, i32 2097164, i32 2097152
  %spec.select985 = select i1 %583, i32 2097156, i32 %662
  %663 = or disjoint i32 %spec.select985, %557
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %663)
  br label %847

664:                                              ; preds = %658
  %665 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %665, label %666, label %669

666:                                              ; preds = %664
  %667 = select i1 %584, i32 2097165, i32 2097153
  %spec.select986 = select i1 %583, i32 2097157, i32 %667
  %668 = or disjoint i32 %spec.select986, %557
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %668)
  br label %847

669:                                              ; preds = %664
  %670 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  %brmerge989.not = and i1 %66, %670
  br i1 %brmerge989.not, label %671, label %683

671:                                              ; preds = %669
  %672 = load i8, ptr %580, align 8, !tbaa !113, !range !38, !noundef !39
  %673 = trunc nuw i8 %672 to i1
  br i1 %673, label %674, label %680

674:                                              ; preds = %671
  %675 = getelementptr inbounds i8, ptr %.2821, i64 96
  %676 = load float, ptr %675, align 4, !tbaa !103
  %677 = load float, ptr %547, align 8, !tbaa !41
  %678 = fsub float %676, %677
  %679 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %678, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2821, float noundef %679)
  br label %847

680:                                              ; preds = %671
  %681 = select i1 %583, i32 2097158, i32 2097154
  %682 = or disjoint i32 %681, %557
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %682)
  br label %847

683:                                              ; preds = %669
  %684 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  %brmerge992.not = and i1 %66, %684
  br i1 %brmerge992.not, label %685, label %698

685:                                              ; preds = %683
  %686 = load i8, ptr %580, align 8, !tbaa !113, !range !38, !noundef !39
  %687 = trunc nuw i8 %686 to i1
  br i1 %687, label %688, label %695

688:                                              ; preds = %685
  %689 = getelementptr inbounds i8, ptr %.2821, i64 96
  %690 = load float, ptr %689, align 4, !tbaa !103
  %691 = load float, ptr %547, align 8, !tbaa !41
  %692 = fadd float %690, %691
  %693 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %694 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %692, float noundef %693)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2821, float noundef %694)
  br label %847

695:                                              ; preds = %685
  %696 = select i1 %583, i32 2097159, i32 2097155
  %697 = or disjoint i32 %696, %557
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %697)
  br label %847

698:                                              ; preds = %683
  %699 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 5, i1 noundef zeroext true)
  %brmerge995.not = and i1 %66, %699
  br i1 %brmerge995.not, label %700, label %706

700:                                              ; preds = %698
  %701 = or disjoint i32 %557, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %701)
  %702 = sitofp i32 %551 to float
  %703 = load float, ptr %547, align 8, !tbaa !41
  %704 = fneg float %702
  %705 = call float @llvm.fmuladd.f32(float %704, float %703, float %205)
  br label %847

706:                                              ; preds = %698
  %707 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 6, i1 noundef zeroext true)
  %brmerge998.demorgan = and i1 %66, %707
  br i1 %brmerge998.demorgan, label %708, label %713

708:                                              ; preds = %706
  %709 = or disjoint i32 %557, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %709)
  %710 = sitofp i32 %551 to float
  %711 = load float, ptr %547, align 8, !tbaa !41
  %712 = call float @llvm.fmuladd.f32(float %710, float %711, float %205)
  br label %847

713:                                              ; preds = %706
  %714 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %714, label %715, label %719

715:                                              ; preds = %713
  %716 = load i8, ptr %580, align 8, !tbaa !113, !range !38, !noundef !39
  %717 = trunc nuw i8 %716 to i1
  %.v918 = select i1 %717, i32 2097158, i32 2097156
  %718 = or disjoint i32 %.v918, %557
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %718)
  br label %847

719:                                              ; preds = %713
  %720 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %720, label %721, label %725

721:                                              ; preds = %719
  %722 = load i8, ptr %580, align 8, !tbaa !113, !range !38, !noundef !39
  %723 = trunc nuw i8 %722 to i1
  %.v = select i1 %723, i32 2097159, i32 2097157
  %724 = or disjoint i32 %.v, %557
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %724)
  br label %847

725:                                              ; preds = %719
  %726 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %.not999 = xor i1 %726, true
  %brmerge1000 = or i1 %77, %.not999
  br i1 %brmerge1000, label %729, label %727

727:                                              ; preds = %725
  %728 = or disjoint i32 %557, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %728)
  br label %847

729:                                              ; preds = %725
  %730 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  %.not1001 = xor i1 %730, true
  %brmerge1002 = or i1 %77, %.not1001
  br i1 %brmerge1002, label %747, label %731

731:                                              ; preds = %729
  %732 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br i1 %732, label %745, label %733

733:                                              ; preds = %731
  br i1 %584, label %.sink.split, label %734

734:                                              ; preds = %733
  br i1 %560, label %735, label %745

735:                                              ; preds = %734
  %736 = getelementptr inbounds i8, ptr %75, i64 323
  %737 = load i8, ptr %736, align 1, !tbaa !146, !range !38, !noundef !39
  %738 = trunc nuw i8 %737 to i1
  br i1 %738, label %739, label %745

739:                                              ; preds = %735
  %740 = load i8, ptr %581, align 2, !tbaa !145, !range !38, !noundef !39
  %741 = trunc nuw i8 %740 to i1
  br i1 %741, label %745, label %742

742:                                              ; preds = %739
  %743 = load i8, ptr %580, align 8, !tbaa !113, !range !38, !noundef !39
  %744 = trunc nuw i8 %743 to i1
  br i1 %744, label %745, label %.sink.split

.sink.split:                                      ; preds = %742, %733
  %.sink = phi i32 [ 6291468, %733 ], [ 6291460, %742 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %.sink)
  br label %745

745:                                              ; preds = %.sink.split, %742, %739, %735, %734, %731
  %746 = or disjoint i32 %557, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %746)
  br label %847

747:                                              ; preds = %729
  br i1 %647, label %748, label %760

748:                                              ; preds = %747
  br i1 %66, label %749, label %847

749:                                              ; preds = %748
  %750 = and i32 %5, 2048
  %.not917 = icmp eq i32 %750, 0
  %751 = load i8, ptr %580, align 8, !tbaa !113, !range !38, !noundef !39
  %752 = trunc nuw i8 %751 to i1
  br i1 %.not917, label %.critedge1004, label %753

753:                                              ; preds = %749
  br i1 %752, label %754, label %847

.critedge1004:                                    ; preds = %749
  %brmerge1005 = or i1 %77, %752
  %.mux1007 = select i1 %752, i8 1, i8 %.08251059
  br i1 %brmerge1005, label %847, label %755

754:                                              ; preds = %753
  br i1 %77, label %847, label %755

755:                                              ; preds = %.critedge1004, %754
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  store i32 10, ptr %21, align 4, !tbaa !115
  %756 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %756, label %757, label %759

757:                                              ; preds = %755
  %758 = load i32, ptr %21, align 4, !tbaa !115
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %758)
  br label %759

759:                                              ; preds = %757, %755
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  br label %847

760:                                              ; preds = %747
  br i1 %654, label %847, label %761

761:                                              ; preds = %760
  br i1 %659, label %847, label %762

762:                                              ; preds = %761
  %brmerge1008 = or i1 %641, %642
  br i1 %brmerge1008, label %763, label %764

763:                                              ; preds = %762
  %.mux1009 = select i1 %641, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126, i32 noundef %.mux1009)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br label %847

764:                                              ; preds = %762
  br i1 %587, label %765, label %769

765:                                              ; preds = %764
  %766 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %766, label %767, label %769

767:                                              ; preds = %765
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  %768 = getelementptr inbounds i8, ptr %.08241126, i64 3708
  store i8 1, ptr %768, align 4, !tbaa !144
  br label %847

769:                                              ; preds = %765, %764
  %brmerge1010 = or i1 %627, %628
  br i1 %brmerge1010, label %770, label %816

770:                                              ; preds = %769
  %771 = getelementptr inbounds i8, ptr %75, i64 264
  %772 = load ptr, ptr %771, align 8, !tbaa !155
  %.not916 = icmp eq ptr %772, null
  br i1 %.not916, label %809, label %773

773:                                              ; preds = %770
  %774 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br i1 %774, label %775, label %781

775:                                              ; preds = %773
  %776 = getelementptr inbounds i8, ptr %.08241126, i64 80
  %777 = load i32, ptr %776, align 4, !tbaa !156
  %778 = getelementptr inbounds i8, ptr %.08241126, i64 84
  %779 = load i32, ptr %778, align 4, !tbaa !157
  %780 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %777, i32 noundef %779)
  br label %781

781:                                              ; preds = %773, %775
  %782 = phi i32 [ %780, %775 ], [ 0, %773 ]
  %783 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br i1 %783, label %784, label %790

784:                                              ; preds = %781
  %785 = getelementptr inbounds i8, ptr %.08241126, i64 80
  %786 = load i32, ptr %785, align 4, !tbaa !156
  %787 = getelementptr inbounds i8, ptr %.08241126, i64 84
  %788 = load i32, ptr %787, align 4, !tbaa !157
  %789 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %786, i32 noundef %788)
  br label %793

790:                                              ; preds = %781
  %791 = getelementptr inbounds i8, ptr %.08241126, i64 4
  %792 = load i32, ptr %791, align 4, !tbaa !108
  br label %793

793:                                              ; preds = %790, %784
  %794 = phi i32 [ %789, %784 ], [ %792, %790 ]
  %795 = getelementptr inbounds i8, ptr %.08241126, i64 24
  %796 = load ptr, ptr %795, align 8, !tbaa !107
  %797 = sext i32 %782 to i64
  %798 = getelementptr inbounds i16, ptr %796, i64 %797
  %799 = sext i32 %794 to i64
  %800 = getelementptr inbounds i16, ptr %796, i64 %799
  %801 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %798, ptr noundef %800)
  %802 = add nsw i32 %801, 1
  %803 = sext i32 %802 to i64
  %804 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %803)
  %805 = load ptr, ptr %795, align 8, !tbaa !107
  %806 = getelementptr inbounds i16, ptr %805, i64 %797
  %807 = getelementptr inbounds i16, ptr %805, i64 %799
  %808 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %804, i32 noundef %802, ptr noundef %806, ptr noundef %807)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %804)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %804)
  br label %809

809:                                              ; preds = %793, %770
  br i1 %628, label %810, label %847

810:                                              ; preds = %809
  %811 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br i1 %811, label %813, label %812

812:                                              ; preds = %810
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br label %813

813:                                              ; preds = %812, %810
  %814 = getelementptr inbounds i8, ptr %.08241126, i64 3708
  store i8 1, ptr %814, align 4, !tbaa !144
  %815 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.08241126, ptr noundef nonnull %552)
  br label %847

816:                                              ; preds = %769
  br i1 %629, label %817, label %847

817:                                              ; preds = %816
  %818 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not914 = icmp eq ptr %818, null
  br i1 %.not914, label %847, label %819

819:                                              ; preds = %817
  %820 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %818) #16
  %821 = shl i64 %820, 32
  %sext = add i64 %821, 4294967296
  %822 = ashr exact i64 %sext, 31
  %823 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %822)
  %824 = load i8, ptr %818, align 1, !tbaa !119
  %.not9151091 = icmp eq i8 %824, 0
  br i1 %.not9151091, label %.loopexit1085.thread, label %.lr.ph1094

.loopexit1085.thread:                             ; preds = %819
  store i16 0, ptr %823, align 2, !tbaa !148
  br label %846

.lr.ph1094:                                       ; preds = %819, %838
  %.08571093 = phi i32 [ %.1858, %838 ], [ 0, %819 ]
  %.08601092 = phi ptr [ %827, %838 ], [ %818, %819 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  %825 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %22, ptr noundef nonnull %.08601092, ptr noundef null)
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds i8, ptr %.08601092, i64 %826
  %828 = load i32, ptr %22, align 4, !tbaa !115
  %829 = icmp eq i32 %828, 0
  br i1 %829, label %.thread1070, label %830

.thread1070:                                      ; preds = %.lr.ph1094
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  br label %.loopexit1085

830:                                              ; preds = %.lr.ph1094
  %831 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 5)
  br i1 %831, label %832, label %838, !llvm.loop !158

832:                                              ; preds = %830
  %833 = load i32, ptr %22, align 4, !tbaa !115
  %834 = trunc i32 %833 to i16
  %835 = add nsw i32 %.08571093, 1
  %836 = sext i32 %.08571093 to i64
  %837 = getelementptr inbounds i16, ptr %823, i64 %836
  store i16 %834, ptr %837, align 2, !tbaa !148
  br label %838

838:                                              ; preds = %830, %832
  %.1858 = phi i32 [ %835, %832 ], [ %.08571093, %830 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  %839 = load i8, ptr %827, align 1, !tbaa !119
  %.not915 = icmp eq i8 %839, 0
  br i1 %.not915, label %.loopexit1085, label %.lr.ph1094

.loopexit1085:                                    ; preds = %838, %.thread1070
  %.08571089 = phi i32 [ %.08571093, %.thread1070 ], [ %.1858, %838 ]
  %840 = sext i32 %.08571089 to i64
  %841 = getelementptr inbounds i16, ptr %823, i64 %840
  store i16 0, ptr %841, align 2, !tbaa !148
  %842 = icmp sgt i32 %.08571089, 0
  br i1 %842, label %843, label %846

843:                                              ; preds = %.loopexit1085
  %844 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.08241126, ptr noundef nonnull %552, ptr noundef nonnull %823, i32 noundef %.08571089)
  %845 = getelementptr inbounds i8, ptr %.08241126, i64 3708
  store i8 1, ptr %845, align 4, !tbaa !144
  br label %846

846:                                              ; preds = %.loopexit1085.thread, %843, %.loopexit1085
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %823)
  br label %847

847:                                              ; preds = %817, %846, %761, %760, %759, %754, %753, %748, %.critedge1004, %666, %695, %688, %708, %721, %745, %763, %813, %809, %816, %767, %727, %715, %700, %674, %680, %661
  %.0855 = phi i1 [ false, %661 ], [ false, %666 ], [ false, %674 ], [ false, %680 ], [ false, %688 ], [ false, %695 ], [ false, %700 ], [ false, %708 ], [ false, %715 ], [ false, %721 ], [ false, %763 ], [ false, %767 ], [ false, %813 ], [ false, %809 ], [ false, %816 ], [ false, %745 ], [ false, %727 ], [ false, %.critedge1004 ], [ false, %748 ], [ false, %753 ], [ false, %754 ], [ false, %759 ], [ false, %760 ], [ true, %761 ], [ false, %846 ], [ false, %817 ]
  %.1841 = phi i8 [ 0, %661 ], [ 0, %666 ], [ 0, %674 ], [ 0, %680 ], [ 0, %688 ], [ 0, %695 ], [ 0, %700 ], [ 0, %708 ], [ 0, %715 ], [ 0, %721 ], [ 0, %763 ], [ 0, %767 ], [ 0, %813 ], [ 0, %809 ], [ 0, %816 ], [ 0, %745 ], [ 0, %727 ], [ %751, %.critedge1004 ], [ 1, %748 ], [ 1, %753 ], [ 0, %754 ], [ 0, %759 ], [ 1, %760 ], [ 0, %761 ], [ 0, %846 ], [ 0, %817 ]
  %.0833 = phi float [ %205, %661 ], [ %205, %666 ], [ %205, %674 ], [ %205, %680 ], [ %205, %688 ], [ %205, %695 ], [ %705, %700 ], [ %712, %708 ], [ %205, %715 ], [ %205, %721 ], [ %205, %763 ], [ %205, %767 ], [ %205, %813 ], [ %205, %809 ], [ %205, %816 ], [ %205, %745 ], [ %205, %727 ], [ %205, %.critedge1004 ], [ %205, %748 ], [ %205, %753 ], [ %205, %754 ], [ %205, %759 ], [ %205, %760 ], [ %205, %761 ], [ %205, %846 ], [ %205, %817 ]
  %.2827 = phi i8 [ %.08251059, %661 ], [ %.08251059, %666 ], [ %.08251059, %674 ], [ %.08251059, %680 ], [ %.08251059, %688 ], [ %.08251059, %695 ], [ %.08251059, %700 ], [ %.08251059, %708 ], [ %.08251059, %715 ], [ %.08251059, %721 ], [ %.08251059, %763 ], [ %.08251059, %767 ], [ %.08251059, %813 ], [ %.08251059, %809 ], [ %.08251059, %816 ], [ %.08251059, %745 ], [ %.08251059, %727 ], [ %.mux1007, %.critedge1004 ], [ 1, %748 ], [ 1, %753 ], [ %.08251059, %754 ], [ %.08251059, %759 ], [ 1, %760 ], [ 1, %761 ], [ %.08251059, %846 ], [ %.08251059, %817 ]
  %848 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  %849 = select i1 %848, i1 %306, i1 false
  %850 = or i1 %.0836.in, %849
  %.pre1099 = load i32, ptr %163, align 4, !tbaa !97
  br label %851

851:                                              ; preds = %847, %527
  %852 = phi i32 [ %.pre1099, %847 ], [ %528, %527 ]
  %.1856 = phi i1 [ %.0855, %847 ], [ false, %527 ]
  %.2842 = phi i8 [ %.1841, %847 ], [ 0, %527 ]
  %.1837.in = phi i1 [ %850, %847 ], [ %.0836.in, %527 ]
  %.1834 = phi float [ %.0833, %847 ], [ %205, %527 ]
  %.3828 = phi i8 [ %.2827, %847 ], [ %.08251059, %527 ]
  %853 = icmp eq i32 %852, %87
  br i1 %853, label %.thread1136, label %1068

.thread1136:                                      ; preds = %534, %530, %851
  %.38281153 = phi i8 [ %.3828, %851 ], [ %.08251059, %530 ], [ %.08251059, %534 ]
  %.18341151 = phi float [ %.1834, %851 ], [ %205, %530 ], [ %205, %534 ]
  %.1837.in1149 = phi i1 [ %.1837.in, %851 ], [ %.0836.in, %530 ], [ %.0836.in, %534 ]
  %.28421145 = phi i8 [ %.2842, %851 ], [ 0, %530 ], [ 0, %534 ]
  %.18561144 = phi i1 [ %.1856, %851 ], [ false, %530 ], [ false, %534 ]
  br i1 %307, label %855, label %854

854:                                              ; preds = %.thread1136
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4377, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

855:                                              ; preds = %.thread1136
  %.1856.not = xor i1 %.18561144, true
  %brmerge1011 = or i1 %77, %.1856.not
  br i1 %brmerge1011, label %886, label %856

856:                                              ; preds = %855
  %857 = getelementptr inbounds i8, ptr %.08241126, i64 56
  %858 = load ptr, ptr %857, align 8, !tbaa !105
  %859 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %858) #16
  %.not919 = icmp eq i32 %859, 0
  br i1 %.not919, label %886, label %860

860:                                              ; preds = %856
  %861 = getelementptr inbounds i8, ptr %.08241126, i64 48
  %862 = load i32, ptr %861, align 8, !tbaa !159
  %863 = add nsw i32 %862, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23)
  %864 = icmp sgt i32 %862, 1
  br i1 %864, label %865, label %878

865:                                              ; preds = %860
  %866 = zext nneg i32 %863 to i64
  %867 = getelementptr inbounds i8, ptr %858, i64 %866
  %868 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %858, ptr noundef %867)
          to label %869 unwind label %876

869:                                              ; preds = %865
  %870 = add nsw i32 %868, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %23, i32 noundef %870)
          to label %871 unwind label %876

871:                                              ; preds = %869
  %872 = getelementptr inbounds i8, ptr %23, i64 8
  %873 = load ptr, ptr %872, align 8, !tbaa !160
  %874 = load i32, ptr %23, align 8, !tbaa !161
  %875 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %873, i32 noundef %874, ptr noundef %858, ptr noundef %867, ptr noundef null)
          to label %878 unwind label %876

876:                                              ; preds = %878, %871, %869, %865
  %877 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  resume { ptr, i32 } %877

878:                                              ; preds = %871, %860
  %879 = getelementptr inbounds i8, ptr %.08241126, i64 76
  %880 = getelementptr inbounds i8, ptr %23, i64 8
  %881 = load ptr, ptr %880, align 8, !tbaa !160
  %882 = load i32, ptr %23, align 8
  %883 = add nsw i32 %882, -1
  %884 = select i1 %864, i32 %883, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.08241126, ptr noundef nonnull %879, ptr noundef %881, i32 noundef %884)
          to label %885 unwind label %876

885:                                              ; preds = %878
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #15
  br label %886

886:                                              ; preds = %855, %856, %885
  %.0863 = phi i32 [ %863, %885 ], [ 0, %856 ], [ 0, %855 ]
  %.0861 = phi ptr [ %858, %885 ], [ null, %856 ], [ null, %855 ]
  br i1 %.18561144, label %887, label %.critedge1013

887:                                              ; preds = %886
  %888 = trunc nuw i8 %.28421145 to i1
  %889 = and i32 %5, 32
  %890 = icmp ne i32 %889, 0
  %891 = and i1 %890, %888
  br i1 %891, label %.critedge1013, label %1040

.critedge1013:                                    ; preds = %886, %887
  br i1 %77, label %905, label %892

892:                                              ; preds = %.critedge1013
  %893 = getelementptr inbounds i8, ptr %.08241126, i64 64
  store i8 1, ptr %893, align 8, !tbaa !106
  %894 = getelementptr inbounds i8, ptr %.08241126, i64 32
  %895 = getelementptr inbounds i8, ptr %.08241126, i64 16
  %896 = load i32, ptr %895, align 8, !tbaa !117
  %897 = shl nsw i32 %896, 2
  %898 = or disjoint i32 %897, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %894, i32 noundef %898)
  %899 = getelementptr inbounds i8, ptr %.08241126, i64 40
  %900 = load ptr, ptr %899, align 8, !tbaa !118
  %901 = load i32, ptr %894, align 8, !tbaa !162
  %902 = getelementptr inbounds i8, ptr %.08241126, i64 24
  %903 = load ptr, ptr %902, align 8, !tbaa !107
  %904 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %900, i32 noundef %901, ptr noundef %903, ptr noundef null)
  br label %905

905:                                              ; preds = %892, %.critedge1013
  %906 = and i32 %5, 524736
  %.not920 = icmp eq i32 %906, 0
  br i1 %.not920, label %1032, label %907

907:                                              ; preds = %905
  br i1 %82, label %909, label %908

908:                                              ; preds = %907
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.2, i32 noundef 4418, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

909:                                              ; preds = %907
  br i1 %.not897, label %912, label %910

910:                                              ; preds = %909
  %911 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %911, label %.thread1074, label %912

912:                                              ; preds = %910, %909
  br i1 %.not895.not, label %.critedge1015, label %913

913:                                              ; preds = %912
  %914 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %914, label %.thread1074, label %915

915:                                              ; preds = %913
  %916 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %916, label %.thread1074, label %.critedge1015

.critedge1015:                                    ; preds = %912, %915
  %917 = and i32 %5, 524288
  %.not921 = icmp eq i32 %917, 0
  br i1 %.not921, label %922, label %918

918:                                              ; preds = %.critedge1015
  %919 = getelementptr inbounds i8, ptr %.08241126, i64 3710
  %920 = load i8, ptr %919, align 2, !tbaa !128, !range !38, !noundef !39
  %921 = trunc nuw i8 %920 to i1
  br i1 %921, label %.thread1074, label %922

922:                                              ; preds = %.critedge1015, %918
  %923 = and i32 %5, 256
  %.not922 = icmp eq i32 %923, 0
  br i1 %.not922, label %1032, label %.thread1074

.thread1074:                                      ; preds = %918, %915, %913, %910, %922
  %.08661079 = phi i32 [ 256, %922 ], [ 524288, %918 ], [ 128, %915 ], [ 128, %913 ], [ 64, %910 ]
  %.08671078 = phi i32 [ 22, %922 ], [ 22, %918 ], [ 4, %915 ], [ 3, %913 ], [ 0, %910 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %24)
  %924 = getelementptr inbounds i8, ptr %24, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %924, i8 0, i64 40, i1 false)
  store i32 %.08661079, ptr %24, align 8, !tbaa !163
  %925 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 %5, ptr %925, align 4, !tbaa !165
  %926 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %7, ptr %926, align 8, !tbaa !166
  %927 = getelementptr inbounds i8, ptr %24, i64 20
  store i32 %.08671078, ptr %927, align 4, !tbaa !167
  %928 = getelementptr inbounds i8, ptr %.08241126, i64 40
  %929 = load ptr, ptr %928, align 8, !tbaa !118
  %930 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %929, ptr %930, align 8, !tbaa !168
  %931 = getelementptr inbounds i8, ptr %.08241126, i64 8
  %932 = load i32, ptr %931, align 8, !tbaa !109
  %933 = getelementptr inbounds i8, ptr %24, i64 32
  store i32 %932, ptr %933, align 8, !tbaa !169
  %934 = getelementptr inbounds i8, ptr %.08241126, i64 68
  %935 = load i32, ptr %934, align 4, !tbaa !129
  %936 = getelementptr inbounds i8, ptr %24, i64 36
  store i32 %935, ptr %936, align 4, !tbaa !170
  %937 = getelementptr inbounds i8, ptr %24, i64 40
  %938 = getelementptr inbounds i8, ptr %.08241126, i64 16
  %939 = getelementptr inbounds i8, ptr %.08241126, i64 24
  %940 = load ptr, ptr %939, align 8, !tbaa !107
  %941 = getelementptr inbounds i8, ptr %.08241126, i64 76
  %942 = load i32, ptr %941, align 4, !tbaa !171
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds i16, ptr %940, i64 %943
  %945 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %940, ptr noundef %944)
  %946 = getelementptr inbounds i8, ptr %24, i64 44
  store i32 %945, ptr %946, align 4, !tbaa !172
  %947 = getelementptr inbounds i8, ptr %.08241126, i64 80
  %948 = load i32, ptr %947, align 4, !tbaa !156
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds i16, ptr %940, i64 %949
  %951 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %940, ptr noundef %950)
  %952 = getelementptr inbounds i8, ptr %24, i64 48
  store i32 %951, ptr %952, align 8, !tbaa !173
  %953 = getelementptr inbounds i8, ptr %.08241126, i64 84
  %954 = load i32, ptr %953, align 4, !tbaa !157
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds i16, ptr %940, i64 %955
  %957 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %940, ptr noundef %956)
  %958 = getelementptr inbounds i8, ptr %24, i64 52
  store i32 %957, ptr %958, align 4, !tbaa !174
  %959 = call noundef i32 %6(ptr noundef nonnull %24)
  %960 = load ptr, ptr %930, align 8, !tbaa !168
  %961 = load ptr, ptr %928, align 8, !tbaa !118
  %962 = icmp eq ptr %960, %961
  br i1 %962, label %964, label %963

963:                                              ; preds = %.thread1074
  call void @__assert_fail(ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.2, i32 noundef 4471, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

964:                                              ; preds = %.thread1074
  %965 = load i32, ptr %936, align 4, !tbaa !170
  %966 = load i32, ptr %934, align 4, !tbaa !129
  %967 = icmp eq i32 %965, %966
  br i1 %967, label %969, label %968

968:                                              ; preds = %964
  call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.2, i32 noundef 4472, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

969:                                              ; preds = %964
  %970 = load i32, ptr %925, align 4, !tbaa !165
  %971 = icmp eq i32 %970, %5
  br i1 %971, label %973, label %972

972:                                              ; preds = %969
  call void @__assert_fail(ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.2, i32 noundef 4473, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

973:                                              ; preds = %969
  %974 = load i8, ptr %937, align 8, !tbaa !175, !range !38, !noundef !39
  %975 = trunc nuw i8 %974 to i1
  %976 = load i32, ptr %946, align 4, !tbaa !172
  %.not924 = icmp ne i32 %976, %945
  %brmerge1018 = select i1 %.not924, i1 true, i1 %975
  br i1 %brmerge1018, label %977, label %982

977:                                              ; preds = %973
  %978 = sext i32 %976 to i64
  %979 = getelementptr inbounds i8, ptr %960, i64 %978
  %980 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %960, ptr noundef %979)
  store i32 %980, ptr %941, align 4, !tbaa !171
  %981 = getelementptr inbounds i8, ptr %.08241126, i64 3708
  store i8 1, ptr %981, align 4, !tbaa !144
  br label %982

982:                                              ; preds = %973, %977
  %983 = load i32, ptr %952, align 8, !tbaa !173
  %.not925 = icmp ne i32 %983, %951
  %brmerge1019 = select i1 %.not925, i1 true, i1 %975
  br i1 %brmerge1019, label %984, label %996

984:                                              ; preds = %982
  %985 = load i32, ptr %946, align 4, !tbaa !172
  %986 = icmp eq i32 %983, %985
  br i1 %986, label %987, label %989

987:                                              ; preds = %984
  %988 = load i32, ptr %941, align 4, !tbaa !171
  br label %994

989:                                              ; preds = %984
  %990 = load ptr, ptr %930, align 8, !tbaa !168
  %991 = sext i32 %983 to i64
  %992 = getelementptr inbounds i8, ptr %990, i64 %991
  %993 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %990, ptr noundef %992)
  br label %994

994:                                              ; preds = %989, %987
  %995 = phi i32 [ %988, %987 ], [ %993, %989 ]
  store i32 %995, ptr %947, align 4, !tbaa !156
  br label %996

996:                                              ; preds = %982, %994
  %997 = load i32, ptr %958, align 4, !tbaa !174
  %.not926 = icmp ne i32 %997, %957
  %brmerge1020 = select i1 %.not926, i1 true, i1 %975
  br i1 %brmerge1020, label %998, label %1010

998:                                              ; preds = %996
  %999 = load i32, ptr %952, align 8, !tbaa !173
  %1000 = icmp eq i32 %997, %999
  br i1 %1000, label %1001, label %1003

1001:                                             ; preds = %998
  %1002 = load i32, ptr %947, align 4, !tbaa !156
  br label %1008

1003:                                             ; preds = %998
  %1004 = load ptr, ptr %930, align 8, !tbaa !168
  %1005 = sext i32 %997 to i64
  %1006 = getelementptr inbounds i8, ptr %1004, i64 %1005
  %1007 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1004, ptr noundef %1006)
  br label %1008

1008:                                             ; preds = %1003, %1001
  %1009 = phi i32 [ %1002, %1001 ], [ %1007, %1003 ]
  store i32 %1009, ptr %953, align 4, !tbaa !157
  br label %1010

1010:                                             ; preds = %996, %1008
  br i1 %975, label %1011, label %1031

1011:                                             ; preds = %1010
  %1012 = load i32, ptr %933, align 8, !tbaa !169
  %1013 = load ptr, ptr %930, align 8, !tbaa !168
  %1014 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1013) #16
  %1015 = trunc i64 %1014 to i32
  %1016 = icmp eq i32 %1012, %1015
  br i1 %1016, label %1018, label %1017

1017:                                             ; preds = %1011
  call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.2, i32 noundef 4480, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1018:                                             ; preds = %1011
  %1019 = icmp sle i32 %1012, %.0852
  %brmerge1022 = or i1 %.not901, %1019
  br i1 %brmerge1022, label %1024, label %1020

1020:                                             ; preds = %1018
  %1021 = load i32, ptr %938, align 8, !tbaa !117
  %1022 = sub i32 %1012, %.0852
  %1023 = add nsw i32 %1022, %1021
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %938, i32 noundef %1023)
  %.pre1100 = load ptr, ptr %930, align 8, !tbaa !168
  br label %1024

1024:                                             ; preds = %1018, %1020
  %1025 = phi ptr [ %1013, %1018 ], [ %.pre1100, %1020 ]
  %1026 = load ptr, ptr %939, align 8, !tbaa !107
  %1027 = load i32, ptr %938, align 8, !tbaa !117
  %1028 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1026, i32 noundef %1027, ptr noundef %1025, ptr noundef null, ptr noundef null)
  %1029 = getelementptr inbounds i8, ptr %.08241126, i64 4
  store i32 %1028, ptr %1029, align 4, !tbaa !108
  %1030 = load i32, ptr %933, align 8, !tbaa !169
  store i32 %1030, ptr %931, align 8, !tbaa !109
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08241126)
  br label %1031

1031:                                             ; preds = %1024, %1010
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #15
  br label %1032

1032:                                             ; preds = %922, %1031, %905
  br i1 %77, label %1040, label %1033

1033:                                             ; preds = %1032
  %1034 = getelementptr inbounds i8, ptr %.08241126, i64 40
  %1035 = load ptr, ptr %1034, align 8, !tbaa !118
  %1036 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1035, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not927 = icmp eq i32 %1036, 0
  br i1 %.not927, label %1040, label %1037

1037:                                             ; preds = %1033
  %1038 = getelementptr inbounds i8, ptr %.08241126, i64 8
  %1039 = load i32, ptr %1038, align 8, !tbaa !109
  br label %1040

1040:                                             ; preds = %1032, %1033, %1037, %887
  %.1864 = phi i32 [ %.0863, %1032 ], [ %1039, %1037 ], [ %.0863, %1033 ], [ %.0863, %887 ]
  %.1862 = phi ptr [ %.0861, %1032 ], [ %1035, %1037 ], [ %.0861, %1033 ], [ %.0861, %887 ]
  %.not928 = icmp ne ptr %.1862, null
  br i1 %.not928, label %1041, label %1065

1041:                                             ; preds = %1040
  %1042 = icmp sgt i32 %.1864, -1
  br i1 %1042, label %1044, label %1043

1043:                                             ; preds = %1041
  call void @__assert_fail(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.2, i32 noundef 4504, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1044:                                             ; preds = %1041
  br i1 %.not901, label %1061, label %1045

1045:                                             ; preds = %1044
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %25) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %25)
  store i32 262144, ptr %25, align 8, !tbaa !163
  %1046 = getelementptr inbounds i8, ptr %25, i64 4
  store i32 %5, ptr %1046, align 4, !tbaa !165
  %1047 = getelementptr inbounds i8, ptr %25, i64 24
  store ptr %2, ptr %1047, align 8, !tbaa !168
  %1048 = getelementptr inbounds i8, ptr %25, i64 32
  store i32 %.1864, ptr %1048, align 8, !tbaa !169
  %1049 = add nuw nsw i32 %.1864, 1
  %1050 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1049)
  %1051 = getelementptr inbounds i8, ptr %25, i64 36
  store i32 %1050, ptr %1051, align 4, !tbaa !170
  %1052 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %7, ptr %1052, align 8, !tbaa !166
  %1053 = call noundef i32 %6(ptr noundef nonnull %25)
  %1054 = load ptr, ptr %1047, align 8, !tbaa !168
  %1055 = load i32, ptr %1051, align 4, !tbaa !170
  %1056 = load i32, ptr %1048, align 8, !tbaa !169
  %1057 = add nsw i32 %1055, -1
  %1058 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1056, i32 noundef %1057)
  %.not929 = icmp sgt i32 %1058, %1055
  br i1 %.not929, label %1059, label %1060

1059:                                             ; preds = %1045
  call void @__assert_fail(ptr noundef nonnull @.str.76, ptr noundef nonnull @.str.2, i32 noundef 4518, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1060:                                             ; preds = %1045
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #15
  br label %1061

1061:                                             ; preds = %1060, %1044
  %.2865 = phi i32 [ %1058, %1060 ], [ %.1864, %1044 ]
  %.0815 = phi i32 [ %1055, %1060 ], [ %3, %1044 ]
  %.0812 = phi ptr [ %1054, %1060 ], [ %2, %1044 ]
  %1062 = add nsw i32 %.2865, 1
  %1063 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1062, i32 noundef %.0815)
  %1064 = sext i32 %1063 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0812, ptr noundef nonnull %.1862, i64 noundef %1064)
  br label %1065

1065:                                             ; preds = %1061, %1040
  %.1813 = phi ptr [ %.0812, %1061 ], [ %2, %1040 ]
  %1066 = getelementptr inbounds i8, ptr %.08241126, i64 3712
  store i32 0, ptr %1066, align 8, !tbaa !130
  %1067 = getelementptr inbounds i8, ptr %.08241126, i64 3720
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1067, i8 0, i64 16, i1 false)
  br label %1068

1068:                                             ; preds = %1065, %851
  %.38281152 = phi i8 [ %.38281153, %1065 ], [ %.3828, %851 ]
  %.18341150 = phi float [ %.18341151, %1065 ], [ %.1834, %851 ]
  %.1837.in1148 = phi i1 [ %.1837.in1149, %1065 ], [ %.1837.in, %851 ]
  %.28421146 = phi i8 [ %.28421145, %1065 ], [ %.2842, %851 ]
  %.1839 = phi i1 [ %.not928, %1065 ], [ false, %851 ]
  %.2814 = phi ptr [ %.1813, %1065 ], [ %2, %851 ]
  %1069 = trunc nuw i8 %.38281152 to i1
  br i1 %1069, label %1070, label %1074

1070:                                             ; preds = %1068
  %1071 = load i32, ptr %163, align 4, !tbaa !97
  %1072 = icmp eq i32 %1071, %87
  br i1 %1072, label %1073, label %1074

1073:                                             ; preds = %1070
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1074

1074:                                             ; preds = %1073, %1070, %1068
  br i1 %66, label %1080, label %1075

1075:                                             ; preds = %1074
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %87, i32 noundef 1)
  %.sroa.091.0.copyload = load <2 x float>, ptr %11, align 8
  %1076 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.090.0.copyload = load <2 x float>, ptr %1076, align 8
  %1077 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1078 = getelementptr inbounds i8, ptr %75, i64 5540
  %1079 = load float, ptr %1078, align 4, !tbaa !90
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.091.0.copyload, <2 x float> %.sroa.090.0.copyload, i32 noundef %1077, i1 noundef zeroext true, float noundef %1079)
  br label %1080

1080:                                             ; preds = %1075, %1074
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #15
  %1081 = load float, ptr %11, align 8, !tbaa !136
  %1082 = getelementptr inbounds i8, ptr %11, i64 4
  %1083 = load float, ptr %1082, align 4, !tbaa !176
  %1084 = fadd float %.sroa.0465.2, %1081
  %1085 = fadd float %.sroa.11.0.copyload, %1083
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %26, float noundef %1081, float noundef %1083, float noundef %1084, float noundef %1085)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #15
  br i1 %66, label %1086, label %1089

1086:                                             ; preds = %1080
  %1087 = getelementptr inbounds i8, ptr %.2821, i64 216
  %1088 = load i64, ptr %1087, align 8
  br label %1092

1089:                                             ; preds = %1080
  %1090 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %97)
  %1091 = bitcast <2 x float> %1090 to i64
  br label %1092

1092:                                             ; preds = %1089, %1086
  %storemerge930 = phi i64 [ %1088, %1086 ], [ %1091, %1089 ]
  store i64 %storemerge930, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %341, label %1093, label %1096

1093:                                             ; preds = %1092
  %1094 = getelementptr inbounds i8, ptr %.08241126, i64 40
  %1095 = load ptr, ptr %1094, align 8, !tbaa !118
  br label %1096

1096:                                             ; preds = %1092, %1093
  %1097 = phi ptr [ %1095, %1093 ], [ %.2814, %1092 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  store ptr null, ptr %29, align 8, !tbaa !40
  br i1 %351, label %1098, label %1101

1098:                                             ; preds = %1096
  %1099 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1100 = getelementptr inbounds i8, ptr %1, i64 %1099
  store ptr %1100, ptr %29, align 8, !tbaa !40
  br label %1101

1101:                                             ; preds = %1098, %1096
  %1102 = phi ptr [ %1100, %1098 ], [ null, %1096 ]
  %.0853 = phi ptr [ %1, %1098 ], [ %1097, %1096 ]
  %brmerge1023 = select i1 %306, i1 true, i1 %.1837.in1148
  br i1 %brmerge1023, label %1103, label %1357

1103:                                             ; preds = %1101
  br i1 %307, label %1105, label %1104

1104:                                             ; preds = %1103
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4564, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1105:                                             ; preds = %1103
  br i1 %351, label %1111, label %1106

1106:                                             ; preds = %1105
  %1107 = getelementptr inbounds i8, ptr %.08241126, i64 8
  %1108 = load i32, ptr %1107, align 8, !tbaa !109
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds i8, ptr %.0853, i64 %1109
  store ptr %1110, ptr %29, align 8, !tbaa !40
  br label %1111

1111:                                             ; preds = %1106, %1105
  %.pre11071109 = phi ptr [ %1110, %1106 ], [ %1102, %1105 ]
  %1112 = getelementptr inbounds i8, ptr %.08241126, i64 24
  %1113 = load ptr, ptr %1112, align 8, !tbaa !107
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %30)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %31)
  %.sroa.062.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 %306, label %1114, label %1119

1114:                                             ; preds = %1111
  %1115 = getelementptr inbounds i8, ptr %.08241126, i64 76
  %1116 = load i32, ptr %1115, align 4, !tbaa !171
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds i16, ptr %1113, i64 %1117
  br label %1119

1119:                                             ; preds = %1114, %1111
  %.sroa.068.0 = phi ptr [ %1118, %1114 ], [ null, %1111 ]
  %.sroa.062.0 = phi i32 [ -1, %1114 ], [ %.sroa.062.0.copyload, %1111 ]
  %.0847 = phi i32 [ 1, %1114 ], [ 0, %1111 ]
  br i1 %.1837.in1148, label %1120, label %1129

1120:                                             ; preds = %1119
  %1121 = getelementptr inbounds i8, ptr %.08241126, i64 80
  %1122 = load i32, ptr %1121, align 4, !tbaa !156
  %1123 = getelementptr inbounds i8, ptr %.08241126, i64 84
  %1124 = load i32, ptr %1123, align 4, !tbaa !157
  %1125 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1122, i32 noundef %1124)
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds i16, ptr %1113, i64 %1126
  %1128 = add nuw nsw i32 %.0847, 1
  br label %1129

1129:                                             ; preds = %1120, %1119
  %.sroa.7.0 = phi ptr [ %1127, %1120 ], [ null, %1119 ]
  %.sroa.9.0 = phi i32 [ -1, %1120 ], [ %.sroa.9.0.copyload, %1119 ]
  %.1848 = phi i32 [ %1128, %1120 ], [ %.0847, %1119 ]
  %.lobit = lshr exact i32 %65, 26
  %1130 = add nuw nsw i32 %.1848, %.lobit
  br label %1131

1131:                                             ; preds = %1146, %1129
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1129 ], [ %.sroa.9.2, %1146 ]
  %.sroa.062.1 = phi i32 [ %.sroa.062.0, %1129 ], [ %.sroa.062.3, %1146 ]
  %.2849 = phi i32 [ %1130, %1129 ], [ %.4851, %1146 ]
  %.0844 = phi i32 [ 0, %1129 ], [ %.1845, %1146 ]
  %.0843 = phi ptr [ %1113, %1129 ], [ %1147, %1146 ]
  %1132 = load i16, ptr %.0843, align 2, !tbaa !148
  switch i16 %1132, label %1146 [
    i16 0, label %1148
    i16 10, label %1133
  ]

1133:                                             ; preds = %1131
  %1134 = add nsw i32 %.0844, 1
  %1135 = icmp eq i32 %.sroa.062.1, -1
  br i1 %1135, label %1136, label %1140

1136:                                             ; preds = %1133
  %.not932 = icmp ult ptr %.0843, %.sroa.068.0
  br i1 %.not932, label %1140, label %1137

1137:                                             ; preds = %1136
  %1138 = add nsw i32 %.2849, -1
  %1139 = icmp slt i32 %.2849, 2
  br i1 %1139, label %1148, label %1140

1140:                                             ; preds = %1137, %1136, %1133
  %.sroa.062.2 = phi i32 [ %1134, %1137 ], [ -1, %1136 ], [ %.sroa.062.1, %1133 ]
  %.3850 = phi i32 [ %1138, %1137 ], [ %.2849, %1136 ], [ %.2849, %1133 ]
  %1141 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1141, label %1142, label %1146

1142:                                             ; preds = %1140
  %.not933 = icmp ult ptr %.0843, %.sroa.7.0
  br i1 %.not933, label %1146, label %1143

1143:                                             ; preds = %1142
  %1144 = add nsw i32 %.3850, -1
  %1145 = icmp slt i32 %.3850, 2
  br i1 %1145, label %1148, label %1146

1146:                                             ; preds = %1131, %1143, %1142, %1140
  %.sroa.9.2 = phi i32 [ %1134, %1143 ], [ -1, %1142 ], [ %.sroa.9.1, %1140 ], [ %.sroa.9.1, %1131 ]
  %.sroa.062.3 = phi i32 [ %.sroa.062.2, %1143 ], [ %.sroa.062.2, %1142 ], [ %.sroa.062.2, %1140 ], [ %.sroa.062.1, %1131 ]
  %.4851 = phi i32 [ %1144, %1143 ], [ %.3850, %1142 ], [ %.3850, %1140 ], [ %.2849, %1131 ]
  %.1845 = phi i32 [ %1134, %1143 ], [ %1134, %1142 ], [ %1134, %1140 ], [ %.0844, %1131 ]
  %1147 = getelementptr inbounds i8, ptr %.0843, i64 2
  br label %1131, !llvm.loop !177

1148:                                             ; preds = %1143, %1137, %1131
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1131 ], [ %.sroa.9.1, %1137 ], [ %1134, %1143 ]
  %.sroa.062.4 = phi i32 [ %.sroa.062.1, %1131 ], [ %1134, %1137 ], [ %.sroa.062.2, %1143 ]
  %.2846 = phi i32 [ %.0844, %1131 ], [ %1134, %1137 ], [ %1134, %1143 ]
  %1149 = add nsw i32 %.2846, 1
  %1150 = icmp eq i32 %.sroa.062.4, -1
  %spec.select1024 = select i1 %1150, i32 %1149, i32 %.sroa.062.4
  %1151 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1151, i32 %1149, i32 %.sroa.9.3
  %1152 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.068.0, ptr noundef %1113)
  %1153 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1152, ptr noundef %.sroa.068.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1153, i64 0
  store float %.sroa.044.0.vec.extract, ptr %30, align 4, !tbaa !178
  %1154 = sitofp i32 %spec.select1024 to float
  %1155 = getelementptr inbounds i8, ptr %75, i64 6528
  %1156 = load float, ptr %1155, align 8, !tbaa !41
  %1157 = fmul float %1156, %1154
  %1158 = getelementptr inbounds i8, ptr %30, i64 4
  store float %1157, ptr %1158, align 4, !tbaa !179
  %1159 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1159, label %1160, label %1167

1160:                                             ; preds = %1148
  %1161 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1113)
  %1162 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1161, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.043.0.vec.extract = extractelement <2 x float> %1162, i64 0
  store float %.sroa.043.0.vec.extract, ptr %31, align 4, !tbaa !178
  %1163 = uitofp nneg i32 %.sroa.9.4 to float
  %1164 = load float, ptr %1155, align 8, !tbaa !41
  %1165 = fmul float %1164, %1163
  %1166 = getelementptr inbounds i8, ptr %31, i64 4
  store float %1165, ptr %1166, align 4, !tbaa !179
  br label %1167

1167:                                             ; preds = %1160, %1148
  %1168 = phi float [ %1164, %1160 ], [ %1156, %1148 ]
  br i1 %66, label %1169, label %1173

1169:                                             ; preds = %1167
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  %1170 = sitofp i32 %1149 to float
  %1171 = fmul float %1168, %1170
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %.sroa.0465.2, float noundef %1171)
  %1172 = load i64, ptr %32, align 8
  store i64 %1172, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  br label %1173

1173:                                             ; preds = %1169, %1167
  br i1 %306, label %1174, label %1230

1174:                                             ; preds = %1173
  %1175 = getelementptr inbounds i8, ptr %.08241126, i64 3708
  %1176 = load i8, ptr %1175, align 4, !tbaa !144, !range !38, !noundef !39
  %1177 = trunc nuw i8 %1176 to i1
  br i1 %1177, label %1178, label %1230

1178:                                             ; preds = %1174
  %1179 = and i32 %5, 4096
  %.not934 = icmp eq i32 %1179, 0
  br i1 %.not934, label %1180, label %1200

1180:                                             ; preds = %1178
  %1181 = fmul float %.sroa.0465.2, 2.500000e-01
  %1182 = load float, ptr %30, align 4, !tbaa !178
  %1183 = getelementptr inbounds i8, ptr %.08241126, i64 72
  %1184 = load float, ptr %1183, align 8, !tbaa !111
  %1185 = fcmp olt float %1182, %1184
  br i1 %1185, label %1186, label %1191

1186:                                             ; preds = %1180
  %1187 = fsub float %1182, %1181
  %1188 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1187)
  %1189 = fptosi float %1188 to i32
  %1190 = sitofp i32 %1189 to float
  store float %1190, ptr %1183, align 8, !tbaa !111
  br label %1202

1191:                                             ; preds = %1180
  %1192 = load float, ptr %97, align 4, !tbaa !137
  %1193 = fsub float %.sroa.0465.2, %1192
  %1194 = fsub float %1182, %1193
  %1195 = fcmp ult float %1194, %1184
  br i1 %1195, label %1202, label %1196

1196:                                             ; preds = %1191
  %1197 = fadd float %1181, %1194
  %1198 = fptosi float %1197 to i32
  %1199 = sitofp i32 %1198 to float
  store float %1199, ptr %1183, align 8, !tbaa !111
  br label %1202

1200:                                             ; preds = %1178
  %1201 = getelementptr inbounds i8, ptr %.08241126, i64 72
  store float 0.000000e+00, ptr %1201, align 8, !tbaa !111
  br label %1202

1202:                                             ; preds = %1186, %1196, %1191, %1200
  br i1 %66, label %1203, label %1229

1203:                                             ; preds = %1202
  %1204 = load float, ptr %1158, align 4, !tbaa !179
  %1205 = load float, ptr %1155, align 8, !tbaa !41
  %1206 = fsub float %1204, %1205
  %1207 = fcmp olt float %1206, %.18341150
  br i1 %1207, label %1208, label %1210

1208:                                             ; preds = %1203
  %1209 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1206)
  %.pre1101 = load float, ptr %98, align 4, !tbaa !86
  br label %1215

1210:                                             ; preds = %1203
  %1211 = fsub float %1204, %.sroa.11.0.copyload
  %1212 = fcmp ult float %1211, %.18341150
  %.pre1102 = load float, ptr %98, align 4, !tbaa !86
  br i1 %1212, label %1215, label %1213

1213:                                             ; preds = %1210
  %1214 = call float @llvm.fmuladd.f32(float %.pre1102, float 2.000000e+00, float %1211)
  br label %1215

1215:                                             ; preds = %1210, %1213, %1208
  %1216 = phi float [ %.pre1101, %1208 ], [ %.pre1102, %1213 ], [ %.pre1102, %1210 ]
  %.2835 = phi float [ %1209, %1208 ], [ %1214, %1213 ], [ %.18341150, %1210 ]
  %1217 = getelementptr inbounds i8, ptr %28, i64 4
  %1218 = load float, ptr %1217, align 4, !tbaa !179
  %1219 = call float @llvm.fmuladd.f32(float %1216, float 2.000000e+00, float %1218)
  %1220 = fsub float %1219, %.sroa.11.0.copyload
  %1221 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1220, float noundef 0.000000e+00)
  %1222 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2835, float noundef 0.000000e+00, float noundef %1221)
  %1223 = getelementptr inbounds i8, ptr %.2821, i64 96
  %1224 = load float, ptr %1223, align 4, !tbaa !103
  %1225 = fsub float %1224, %1222
  %1226 = getelementptr inbounds i8, ptr %27, i64 4
  %1227 = load float, ptr %1226, align 4, !tbaa !179
  %1228 = fadd float %1227, %1225
  store float %1228, ptr %1226, align 4, !tbaa !179
  store float %1222, ptr %1223, align 4, !tbaa !103
  br label %1229

1229:                                             ; preds = %1215, %1202
  store i8 0, ptr %1175, align 4, !tbaa !144
  br label %1230

1230:                                             ; preds = %1229, %1174, %1173
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #15
  %1231 = getelementptr inbounds i8, ptr %.08241126, i64 72
  %1232 = load float, ptr %1231, align 8, !tbaa !111
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %1232, float noundef 0.000000e+00)
  br i1 %.1837.in1148, label %1233, label %1302

1233:                                             ; preds = %1230
  %1234 = getelementptr inbounds i8, ptr %.08241126, i64 80
  %1235 = load i32, ptr %1234, align 4, !tbaa !156
  %1236 = getelementptr inbounds i8, ptr %.08241126, i64 84
  %1237 = load i32, ptr %1236, align 4, !tbaa !157
  %1238 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1235, i32 noundef %1237)
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds i16, ptr %1113, i64 %1239
  %1241 = load i32, ptr %1234, align 4, !tbaa !156
  %1242 = load i32, ptr %1236, align 4, !tbaa !157
  %1243 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1241, i32 noundef %1242)
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds i16, ptr %1113, i64 %1244
  %1246 = select i1 %306, float 1.000000e+00, float 0x3FE3333340000000
  %1247 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1246)
  %1248 = select i1 %66, float 0.000000e+00, float -1.000000e+00
  %1249 = select i1 %66, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #15
  %1250 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %1250, ptr %35, align 8
  %1251 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %35, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1251, ptr %34, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #15
  store ptr %1240, ptr %36, align 8, !tbaa !40
  %1252 = getelementptr inbounds i8, ptr %34, i64 4
  %1253 = icmp slt i32 %1238, %1243
  br i1 %1253, label %.lr.ph1095, label %._crit_edge

.lr.ph1095:                                       ; preds = %1233
  %1254 = extractelement <2 x float> %1251, i64 1
  %1255 = getelementptr inbounds i8, ptr %26, i64 12
  %1256 = getelementptr inbounds i8, ptr %26, i64 4
  %1257 = getelementptr inbounds i8, ptr %75, i64 6520
  %1258 = getelementptr inbounds i8, ptr %.2821, i64 616
  %1259 = getelementptr inbounds i8, ptr %37, i64 8
  %.pre1103 = load float, ptr %1155, align 8, !tbaa !41
  br label %1260

1260:                                             ; preds = %.lr.ph1095, %.loopexit
  %1261 = phi ptr [ %1240, %.lr.ph1095 ], [ %1294, %.loopexit ]
  %1262 = phi float [ %1254, %.lr.ph1095 ], [ %1300, %.loopexit ]
  %1263 = phi float [ %.pre1103, %.lr.ph1095 ], [ %1296, %.loopexit ]
  %1264 = load float, ptr %1255, align 4, !tbaa !180
  %1265 = fadd float %1264, %1263
  %1266 = fcmp ogt float %1262, %1265
  br i1 %1266, label %._crit_edge.loopexit, label %1267

1267:                                             ; preds = %1260
  %1268 = load float, ptr %1256, align 4, !tbaa !181
  %1269 = fcmp olt float %1262, %1268
  br i1 %1269, label %.preheader, label %1276

.preheader:                                       ; preds = %1267, %1272
  %1270 = phi ptr [ %1273, %1272 ], [ %1261, %1267 ]
  %1271 = icmp ult ptr %1270, %1245
  br i1 %1271, label %1272, label %.loopexit

1272:                                             ; preds = %.preheader
  %1273 = getelementptr inbounds i8, ptr %1270, i64 2
  store ptr %1273, ptr %36, align 8, !tbaa !40
  %1274 = load i16, ptr %1270, align 2, !tbaa !148
  %1275 = icmp eq i16 %1274, 10
  br i1 %1275, label %.loopexit, label %.preheader, !llvm.loop !182

1276:                                             ; preds = %1267
  %1277 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1261, ptr noundef nonnull %1245, ptr noundef nonnull %36, ptr noundef null, i1 noundef zeroext true)
  %.sroa.028.0.vec.extract = extractelement <2 x float> %1277, i64 0
  %1278 = fcmp ugt float %.sroa.028.0.vec.extract, 0.000000e+00
  br i1 %1278, label %1285, label %1279

1279:                                             ; preds = %1276
  %1280 = load ptr, ptr %1257, align 8, !tbaa !120
  %1281 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110) %1280, i16 noundef zeroext 32)
  %1282 = fmul float %1281, 5.000000e-01
  %1283 = fptosi float %1282 to i32
  %1284 = sitofp i32 %1283 to float
  br label %1285

1285:                                             ; preds = %1279, %1276
  %.sroa.028.0.vec.extract31.pre-phi = phi float [ %1284, %1279 ], [ %.sroa.028.0.vec.extract, %1276 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #15
  %1286 = load float, ptr %1155, align 8, !tbaa !41
  %1287 = fsub float %1248, %1286
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef %1287)
  %1288 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %39)
  store <2 x float> %1288, ptr %38, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef %.sroa.028.0.vec.extract31.pre-phi, float noundef %1249)
  %1289 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %41)
  store <2 x float> %1289, ptr %40, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef nonnull align 4 dereferenceable(8) %40)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %42, ptr noundef nonnull align 4 dereferenceable(16) %26)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %42)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %43, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %1290 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %43)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #15
  br i1 %1290, label %1291, label %1293

1291:                                             ; preds = %1285
  %1292 = load ptr, ptr %1258, align 8, !tbaa !183
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1292, ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1259, i32 noundef %1247, float noundef 0.000000e+00, i32 noundef 0)
  br label %1293

1293:                                             ; preds = %1291, %1285
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #15
  %.pre1104 = load float, ptr %1155, align 8, !tbaa !41
  %.pre1105 = load float, ptr %1252, align 4, !tbaa !179
  %.pre1106 = load ptr, ptr %36, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1272, %1293
  %1294 = phi ptr [ %.pre1106, %1293 ], [ %1270, %.preheader ], [ %1273, %1272 ]
  %1295 = phi float [ %.pre1105, %1293 ], [ %1262, %1272 ], [ %1262, %.preheader ]
  %1296 = phi float [ %.pre1104, %1293 ], [ %1263, %1272 ], [ %1263, %.preheader ]
  %1297 = load float, ptr %27, align 8, !tbaa !178
  %1298 = load float, ptr %33, align 4, !tbaa !178
  %1299 = fsub float %1297, %1298
  store float %1299, ptr %34, align 8, !tbaa !178
  %1300 = fadd float %1296, %1295
  store float %1300, ptr %1252, align 4, !tbaa !179
  %1301 = icmp ult ptr %1294, %1245
  br i1 %1301, label %1260, label %._crit_edge.loopexit, !llvm.loop !184

._crit_edge.loopexit:                             ; preds = %1260, %.loopexit
  %.pre1107.pre.pre = load ptr, ptr %29, align 8, !tbaa !40
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1233
  %.pre1107.pre = phi ptr [ %.pre1107.pre.pre, %._crit_edge.loopexit ], [ %.pre11071109, %1233 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #15
  br label %1302

1302:                                             ; preds = %._crit_edge, %1230
  %.pre1107 = phi ptr [ %.pre1107.pre, %._crit_edge ], [ %.pre11071109, %1230 ]
  br i1 %66, label %1308, label %1303

1303:                                             ; preds = %1302
  %1304 = ptrtoint ptr %.pre1107 to i64
  %1305 = ptrtoint ptr %.0853 to i64
  %1306 = sub i64 %1304, %1305
  %1307 = icmp slt i64 %1306, 2097152
  br i1 %1307, label %1308, label %1317

1308:                                             ; preds = %1303, %1302
  %. = phi ptr [ %26, %1303 ], [ null, %1302 ]
  %1309 = zext i1 %351 to i32
  %1310 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1309, float noundef 1.000000e+00)
  %1311 = getelementptr inbounds i8, ptr %.2821, i64 616
  %1312 = load ptr, ptr %1311, align 8, !tbaa !183
  %1313 = getelementptr inbounds i8, ptr %75, i64 6520
  %1314 = load ptr, ptr %1313, align 8, !tbaa !120
  %1315 = load float, ptr %1155, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #15
  %1316 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1316, ptr %44, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1312, ptr noundef %1314, float noundef %1315, ptr noundef nonnull align 4 dereferenceable(8) %44, i32 noundef %1310, ptr noundef %.0853, ptr noundef %.pre1107, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #15
  br label %1317

1317:                                             ; preds = %1308, %1303
  br i1 %306, label %1318, label %1356

1318:                                             ; preds = %1317
  %1319 = getelementptr inbounds i8, ptr %75, i64 24
  %1320 = load float, ptr %1319, align 8, !tbaa !185
  %1321 = getelementptr inbounds i8, ptr %.08241126, i64 3704
  %1322 = load float, ptr %1321, align 8, !tbaa !186
  %1323 = fadd float %1320, %1322
  store float %1323, ptr %1321, align 8, !tbaa !186
  %1324 = getelementptr inbounds i8, ptr %75, i64 202
  %1325 = load i8, ptr %1324, align 2, !tbaa !187, !range !38, !noundef !39
  %1326 = trunc nuw i8 %1325 to i1
  %1327 = fcmp ugt float %1323, 0.000000e+00
  %or.cond1025 = select i1 %1326, i1 %1327, i1 false
  br i1 %or.cond1025, label %1328, label %1331

1328:                                             ; preds = %1318
  %1329 = call float @fmodf(float noundef %1323, float noundef 0x3FF3333340000000) #15
  %1330 = fcmp ole float %1329, 0x3FE99999A0000000
  br label %1331

1331:                                             ; preds = %1328, %1318
  %1332 = phi i1 [ true, %1318 ], [ %1330, %1328 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #15
  %1333 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %1333, ptr %46, align 8
  %1334 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %46, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1334, ptr %45, align 8
  %1335 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %45)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #15
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1335, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1335, i64 1
  %1336 = load float, ptr %1155, align 8, !tbaa !41
  %1337 = fsub float %.sroa.0.4.vec.extract, %1336
  %1338 = fadd float %1337, 5.000000e-01
  %1339 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1340 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %47, float noundef %.sroa.0.0.vec.extract, float noundef %1338, float noundef %1339, float noundef %1340)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #15
  br i1 %1332, label %1341, label %.critedge13

1341:                                             ; preds = %1331
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %48, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %1342 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %47, ptr noundef nonnull align 4 dereferenceable(16) %48)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #15
  br i1 %1342, label %1343, label %1348

1343:                                             ; preds = %1341
  %1344 = getelementptr inbounds i8, ptr %.2821, i64 616
  %1345 = load ptr, ptr %1344, align 8, !tbaa !183
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #15
  %1346 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %47)
  store <2 x float> %1346, ptr %49, align 8
  %1347 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1345, ptr noundef nonnull align 4 dereferenceable(8) %47, ptr noundef nonnull align 4 dereferenceable(8) %49, i32 noundef %1347, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #15
  br label %1348

.critedge13:                                      ; preds = %1331
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #15
  br label %1348

1348:                                             ; preds = %.critedge13, %1343, %1341
  br i1 %77, label %1355, label %1349

1349:                                             ; preds = %1348
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #15
  %1350 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1351 = load float, ptr %1155, align 8, !tbaa !41
  %1352 = fsub float %.sroa.0.4.vec.extract, %1351
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %50, float noundef %1350, float noundef %1352)
  %1353 = getelementptr inbounds i8, ptr %75, i64 12416
  %1354 = load i64, ptr %50, align 8
  store i64 %1354, ptr %1353, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #15
  br label %1355

1355:                                             ; preds = %1349, %1348
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #15
  br label %1356

1356:                                             ; preds = %1355, %1317
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #15
  br label %1392

1357:                                             ; preds = %1101
  br i1 %66, label %.critedge1027, label %1358

1358:                                             ; preds = %1357
  br i1 %351, label %1376, label %1359

1359:                                             ; preds = %1358
  %1360 = load i32, ptr %163, align 4, !tbaa !97
  %1361 = icmp eq i32 %1360, %87
  br i1 %1361, label %1362, label %1367

1362:                                             ; preds = %1359
  %1363 = getelementptr inbounds i8, ptr %.08241126, i64 8
  %1364 = load i32, ptr %1363, align 8, !tbaa !109
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds i8, ptr %.0853, i64 %1365
  store ptr %1366, ptr %29, align 8, !tbaa !40
  br label %1376

1367:                                             ; preds = %1359
  %1368 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0853) #16
  %1369 = getelementptr inbounds i8, ptr %.0853, i64 %1368
  store ptr %1369, ptr %29, align 8, !tbaa !40
  br label %1376

.critedge1027:                                    ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #15
  %1370 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0853, ptr noundef nonnull %29)
  %1371 = sitofp i32 %1370 to float
  %1372 = getelementptr inbounds i8, ptr %75, i64 6528
  %1373 = load float, ptr %1372, align 8, !tbaa !41
  %1374 = fmul float %1373, %1371
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %51, float noundef %.sroa.0465.2, float noundef %1374)
  %1375 = load i64, ptr %51, align 8
  store i64 %1375, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #15
  br label %1382

1376:                                             ; preds = %1358, %1362, %1367
  %1377 = phi ptr [ %1102, %1358 ], [ %1366, %1362 ], [ %1369, %1367 ]
  %1378 = ptrtoint ptr %1377 to i64
  %1379 = ptrtoint ptr %.0853 to i64
  %1380 = sub i64 %1378, %1379
  %1381 = icmp slt i64 %1380, 2097152
  br i1 %1381, label %1382, label %1392

1382:                                             ; preds = %.critedge1027, %1376
  %.14 = phi ptr [ %26, %1376 ], [ null, %.critedge1027 ]
  %1383 = zext i1 %351 to i32
  %1384 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1383, float noundef 1.000000e+00)
  %1385 = getelementptr inbounds i8, ptr %.2821, i64 616
  %1386 = load ptr, ptr %1385, align 8, !tbaa !183
  %1387 = getelementptr inbounds i8, ptr %75, i64 6520
  %1388 = load ptr, ptr %1387, align 8, !tbaa !120
  %1389 = getelementptr inbounds i8, ptr %75, i64 6528
  %1390 = load float, ptr %1389, align 8, !tbaa !41
  %1391 = load ptr, ptr %29, align 8, !tbaa !40
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1386, ptr noundef %1388, float noundef %1390, ptr noundef nonnull align 4 dereferenceable(8) %27, i32 noundef %1384, ptr noundef %.0853, ptr noundef %1391, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1392

1392:                                             ; preds = %1376, %1382, %1356
  br i1 %brmerge948, label %1394, label %1393

1393:                                             ; preds = %1392
  call void @_ZN5ImGui7PopFontEv()
  br label %1394

1394:                                             ; preds = %1392, %1393
  br i1 %66, label %1395, label %1401

1395:                                             ; preds = %1394
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #15
  %1396 = load float, ptr %28, align 8, !tbaa !178
  %1397 = getelementptr inbounds i8, ptr %28, i64 4
  %1398 = load float, ptr %1397, align 4, !tbaa !179
  %1399 = load float, ptr %98, align 4, !tbaa !86
  %1400 = fadd float %1398, %1399
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1396, float noundef %1400)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %52)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #15
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1401

1401:                                             ; preds = %1395, %1394
  %1402 = getelementptr inbounds i8, ptr %75, i64 12524
  %1403 = load i8, ptr %1402, align 4, !tbaa !188, !range !38, !noundef !39
  %1404 = trunc nuw i8 %1403 to i1
  %or.cond1033 = and i1 %brmerge948, %1404
  br i1 %or.cond1033, label %1405, label %1407

1405:                                             ; preds = %1401
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1406 = load ptr, ptr %29, align 8, !tbaa !40
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %27, ptr noundef %.0853, ptr noundef %1406)
  br label %1407

1407:                                             ; preds = %1405, %1401
  br i1 %103, label %1408, label %1418

1408:                                             ; preds = %1407
  %1409 = getelementptr inbounds i8, ptr %11, i64 8
  %1410 = load float, ptr %1409, align 8, !tbaa !189
  %1411 = getelementptr inbounds i8, ptr %75, i64 5556
  %1412 = load float, ptr %1411, align 4, !tbaa !87
  %1413 = fadd float %1410, %1412
  %1414 = load float, ptr %1082, align 4, !tbaa !176
  %1415 = load float, ptr %98, align 4, !tbaa !86
  %1416 = fadd float %1414, %1415
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %1413, float noundef %1416)
  %1417 = load <2 x float>, ptr %53, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1417, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1418

1418:                                             ; preds = %1408, %1407
  %1419 = and i32 %5, 134217728
  %.not935 = icmp eq i32 %1419, 0
  %or.cond1030 = and i1 %.not935, %.1839
  br i1 %or.cond1030, label %1420, label %1421

1420:                                             ; preds = %1418
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %87)
  br label %1421

1421:                                             ; preds = %1420, %1418
  %1422 = and i32 %5, 32
  %.not936 = icmp eq i32 %1422, 0
  %1423 = trunc nuw i8 %.28421146 to i1
  %.2 = select i1 %.not936, i1 %.1839, i1 %1423
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #15
  br label %.thread

.thread:                                          ; preds = %131, %120, %150, %1421
  %.3 = phi i1 [ %.2, %1421 ], [ false, %150 ], [ false, %120 ], [ false, %131 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  br label %1424

1424:                                             ; 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(3736), i32 noundef) local_unnamed_addr #11 align 2

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

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

declare void @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) local_unnamed_addr #5

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

declare void @_ZN5ImGui8EndChildEv() local_unnamed_addr #5

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

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

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

declare noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736)) 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 #11

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef, i1 noundef zeroext) local_unnamed_addr #8

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

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

; 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 i32 @_ZN5ImGui20GetMergedKeyModFlagsEv() local_unnamed_addr #5

declare void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef, float noundef) local_unnamed_addr #5

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #5

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

declare noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #5

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #5

declare noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #5

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #5

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #5

declare noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

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

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

declare i32 @__gxx_personality_v0(...)

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

; 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 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> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #10

declare noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110), i16 noundef zeroext) local_unnamed_addr #11 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 #10 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 #11 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 #5

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @fmodf(float noundef, float noundef) local_unnamed_addr #13

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

declare void @_ZN5ImGui7PopFontEv() local_unnamed_addr #5

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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { "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 nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 #8 = { 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 #9 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { 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 nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #13 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #14 = { noreturn nounwind }
attributes #15 = { nounwind }
attributes #16 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 147}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !12, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !11, i64 92, !11, i64 100, !11, i64 108, !11, i64 116, !11, i64 124, !11, i64 132, !13, i64 140, !13, i64 141, !13, i64 142, !13, i64 143, !13, i64 144, !13, i64 145, !13, i64 146, !13, i64 147, !13, i64 148, !13, i64 149, !13, i64 150, !13, i64 151, !8, i64 152, !14, i64 154, !14, i64 156, !14, i64 158, !14, i64 160, !10, i64 164, !8, i64 168, !8, i64 169, !8, i64 170, !13, i64 171, !10, i64 172, !8, i64 176, !8, i64 177, !8, i64 178, !8, i64 179, !10, i64 180, !10, i64 181, !10, i64 182, !11, i64 184, !11, i64 192, !15, i64 200, !16, i64 216, !22, i64 440, !22, i64 456, !22, i64 472, !22, i64 488, !22, i64 504, !22, i64 520, !22, i64 536, !23, i64 552, !23, i64 556, !10, i64 560, !12, i64 564, !12, i64 568, !24, i64 576, !26, i64 592, !12, i64 608, !10, i64 612, !7, i64 616, !27, i64 624, !7, i64 824, !7, i64 832, !7, i64 840, !7, i64 848, !7, i64 856, !7, i64 864, !8, i64 872, !8, i64 880, !10, i64 912, !10, i64 916, !13, i64 920}
!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, !17, i64 64, !17, i64 68, !17, i64 72, !18, i64 76, !14, i64 80, !14, i64 82, !10, i64 84, !13, i64 88, !13, i64 89, !13, i64 90, !11, i64 92, !19, i64 100, !10, i64 128, !10, i64 132, !20, i64 136, !7, i64 152, !7, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !12, i64 184, !12, i64 188, !21, i64 192, !21, i64 208}
!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 6528}
!42 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !43, i64 8, !44, i64 5472, !7, i64 6520, !12, i64 6528, !12, i64 6532, !45, i64 6536, !46, i64 7048, !10, i64 7056, !10, i64 7060, !10, i64 7064, !13, i64 7068, !13, i64 7069, !13, i64 7070, !13, i64 7071, !13, i64 7072, !7, i64 7080, !20, i64 7088, !20, i64 7104, !20, i64 7120, !47, i64 7136, !24, i64 7152, !10, i64 7168, !11, i64 7172, !7, i64 7184, !7, i64 7192, !7, i64 7200, !7, i64 7208, !7, i64 7216, !11, i64 7224, !12, i64 7232, !10, i64 7236, !10, i64 7240, !10, i64 7244, !13, i64 7248, !13, i64 7249, !13, i64 7250, !13, i64 7251, !12, i64 7252, !12, i64 7256, !10, i64 7260, !10, i64 7264, !12, i64 7268, !13, i64 7272, !13, i64 7273, !13, i64 7274, !13, i64 7275, !13, i64 7276, !13, i64 7277, !13, i64 7278, !10, i64 7280, !10, i64 7284, !48, i64 7288, !11, i64 7296, !7, i64 7304, !49, i64 7312, !10, i64 7316, !10, i64 7320, !13, i64 7324, !13, i64 7325, !7, i64 7328, !10, i64 7336, !12, i64 7340, !10, i64 7344, !50, i64 7348, !51, i64 7368, !52, i64 7432, !53, i64 7544, !54, i64 7560, !55, i64 7576, !15, i64 7592, !56, i64 7608, !57, i64 7624, !58, i64 7640, !58, i64 7656, !59, i64 7672, !7, i64 7688, !10, i64 7696, !10, i64 7700, !10, i64 7704, !10, i64 7708, !10, i64 7712, !10, i64 7716, !10, i64 7720, !10, i64 7724, !10, i64 7728, !10, i64 7732, !10, i64 7736, !10, i64 7740, !10, i64 7744, !49, i64 7748, !18, i64 7752, !10, i64 7756, !13, i64 7760, !13, i64 7761, !13, i64 7762, !13, i64 7763, !13, i64 7764, !13, i64 7765, !13, i64 7766, !10, i64 7768, !22, i64 7772, !13, i64 7788, !13, i64 7789, !13, i64 7790, !10, i64 7792, !10, i64 7796, !10, i64 7800, !10, i64 7804, !10, i64 7808, !10, i64 7812, !22, i64 7816, !10, i64 7832, !10, i64 7836, !60, i64 7840, !60, i64 7888, !60, i64 7936, !7, i64 7984, !7, i64 7992, !7, i64 8000, !12, i64 8008, !12, i64 8012, !13, i64 8016, !7, i64 8024, !7, i64 8032, !10, i64 8040, !10, i64 8044, !13, i64 8048, !12, i64 8052, !10, i64 8056, !13, i64 8060, !13, i64 8061, !13, i64 8062, !10, i64 8064, !10, i64 8068, !10, i64 8072, !61, i64 8080, !22, i64 8144, !10, i64 8160, !10, i64 8164, !12, i64 8168, !10, i64 8172, !10, i64 8176, !10, i64 8180, !10, i64 8184, !62, i64 8192, !8, i64 8208, !7, i64 8224, !10, i64 8232, !63, i64 8240, !65, i64 8280, !21, i64 8296, !37, i64 8312, !7, i64 8328, !66, i64 8336, !68, i64 8376, !69, i64 8392, !11, i64 8408, !70, i64 8416, !74, i64 12152, !10, i64 12264, !10, i64 12268, !12, i64 12272, !12, i64 12276, !10, i64 12280, !35, i64 12284, !76, i64 12300, !12, i64 12348, !13, i64 12352, !13, i64 12353, !12, i64 12356, !12, i64 12360, !12, i64 12364, !12, i64 12368, !14, i64 12372, !14, i64 12374, !12, i64 12376, !71, i64 12384, !15, i64 12400, !11, i64 12416, !11, i64 12424, !8, i64 12432, !13, i64 12433, !12, i64 12436, !77, i64 12440, !78, i64 12456, !79, i64 12472, !80, i64 12488, !81, i64 12504, !10, i64 12520, !13, i64 12524, !82, i64 12528, !7, i64 12536, !77, i64 12544, !7, i64 12560, !7, i64 12568, !12, i64 12576, !13, i64 12580, !10, i64 12584, !10, i64 12588, !10, i64 12592, !13, i64 12596, !10, i64 12600, !83, i64 12604, !84, i64 12624, !8, i64 12656, !10, i64 13136, !10, i64 13140, !12, i64 13144, !10, i64 13148, !10, i64 13152, !10, i64 13156, !8, i64 13160}
!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, !8, i64 52, !12, i64 140, !12, i64 144, !7, i64 152, !7, i64 160, !12, i64 168, !13, i64 172, !7, i64 176, !11, i64 184, !13, i64 192, !13, i64 193, !13, i64 194, !13, i64 195, !13, i64 196, !13, i64 197, !12, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !11, i64 288, !8, i64 296, !12, i64 304, !12, i64 308, !13, i64 312, !13, i64 313, !13, i64 314, !13, i64 315, !8, i64 316, !8, i64 828, !13, i64 908, !13, i64 909, !13, i64 910, !13, i64 911, !13, i64 912, !13, i64 913, !13, i64 914, !12, i64 916, !10, i64 920, !10, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !11, i64 940, !13, i64 948, !10, i64 952, !10, i64 956, !11, i64 960, !8, i64 968, !8, i64 1008, !8, i64 1048, !8, i64 1053, !8, i64 1058, !8, i64 1063, !8, i64 1068, !8, i64 1073, !8, i64 1080, !8, i64 1100, !8, i64 1120, !8, i64 1160, !8, i64 1180, !8, i64 3228, !8, i64 5276, !8, i64 5356, !12, i64 5436, !13, i64 5440, !14, i64 5442, !29, i64 5448}
!44 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !12, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 32, !10, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !11, i64 60, !12, i64 68, !12, i64 72, !11, i64 76, !11, i64 84, !11, i64 92, !11, i64 100, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !10, i64 148, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !12, i64 184, !13, i64 188, !13, i64 189, !13, i64 190, !12, i64 192, !12, i64 196, !8, i64 200}
!45 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !35, i64 28, !10, i64 44, !8, i64 48, !12, i64 432, !8, i64 436, !7, i64 504}
!46 = !{!"double", !8, i64 0}
!47 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!48 = !{!"long long", !8, i64 0}
!49 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!50 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !10, i64 8, !10, i64 12, !13, i64 16}
!51 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !22, i64 12, !22, i64 28, !22, i64 44}
!52 = !{!"_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}
!53 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!54 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!55 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!56 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!57 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!58 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!59 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_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}
!61 = !{!"_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}
!62 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!63 = !{!"_ZTS6ImPoolI10ImGuiTableE", !64, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!64 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !67, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!67 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!68 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !29, i64 16, !71, i64 32, !71, i64 48, !13, i64 64, !10, i64 68, !12, i64 72, !72, i64 76, !12, i64 3704, !13, i64 3708, !13, i64 3709, !13, i64 3710, !10, i64 3712, !7, i64 3720, !7, i64 3728}
!71 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_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, !73, i64 32}
!73 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!74 = !{!"_ZTS6ImFont", !21, i64 0, !12, i64 16, !12, i64 20, !29, i64 24, !75, i64 40, !7, i64 56, !7, i64 64, !7, i64 72, !14, i64 80, !14, i64 82, !14, i64 84, !14, i64 86, !13, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !10, i64 104, !8, i64 108}
!75 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!76 = !{!"_ZTS21ImGuiComboPreviewData", !22, i64 0, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !10, i64 44}
!77 = !{!"_ZTS15ImGuiTextBuffer", !71, i64 0}
!78 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!79 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !71, i64 0}
!80 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !71, i64 0}
!81 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!82 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!83 = !{!"_ZTS18ImGuiMetricsConfig", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !13, i64 5, !10, i64 8, !10, i64 12}
!84 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !85, i64 16}
!85 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!86 = !{!44, !12, i64 64}
!87 = !{!44, !12, i64 84}
!88 = !{!12, !12, i64 0}
!89 = !{!42, !10, i64 7376}
!90 = !{!44, !12, i64 68}
!91 = !{!44, !12, i64 72}
!92 = !{!42, !7, i64 7184}
!93 = !{!6, !18, i64 292}
!94 = !{!6, !14, i64 298}
!95 = !{!6, !12, i64 132}
!96 = !{!42, !10, i64 8056}
!97 = !{!42, !10, i64 7260}
!98 = !{!42, !10, i64 7716}
!99 = !{!42, !10, i64 7704}
!100 = !{!42, !49, i64 7748}
!101 = !{!13, !13, i64 0}
!102 = !{!42, !10, i64 7320}
!103 = !{!6, !12, i64 96}
!104 = !{!70, !8, i64 99}
!105 = !{!70, !7, i64 56}
!106 = !{!70, !13, i64 64}
!107 = !{!70, !7, i64 24}
!108 = !{!70, !10, i64 4}
!109 = !{!70, !10, i64 8}
!110 = !{!70, !10, i64 0}
!111 = !{!70, !12, i64 72}
!112 = !{!42, !10, i64 7720}
!113 = !{!43, !13, i64 312}
!114 = !{!70, !8, i64 88}
!115 = !{!10, !10, i64 0}
!116 = !{!42, !48, i64 7288}
!117 = !{!70, !10, i64 16}
!118 = !{!70, !7, i64 40}
!119 = !{!8, !8, i64 0}
!120 = !{!42, !7, i64 6520}
!121 = !{!74, !12, i64 20}
!122 = !{!74, !12, i64 100}
!123 = !{!74, !7, i64 64}
!124 = !{!74, !7, i64 56}
!125 = !{!126, !12, i64 4}
!126 = !{!"_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}
!127 = !{!74, !12, i64 16}
!128 = !{!70, !13, i64 3710}
!129 = !{!70, !10, i64 68}
!130 = !{!70, !10, i64 3712}
!131 = !{!70, !7, i64 3720}
!132 = !{!70, !7, i64 3728}
!133 = !{!42, !13, i64 7273}
!134 = !{!42, !10, i64 13156}
!135 = !{!43, !12, i64 288}
!136 = !{!22, !12, i64 0}
!137 = !{!44, !12, i64 60}
!138 = !{!43, !12, i64 292}
!139 = !{!6, !12, i64 220}
!140 = !{!43, !13, i64 193}
!141 = !{!70, !13, i64 3709}
!142 = !{!43, !12, i64 940}
!143 = !{!43, !12, i64 944}
!144 = !{!70, !13, i64 3708}
!145 = !{!43, !13, i64 314}
!146 = !{!43, !13, i64 315}
!147 = !{!43, !13, i64 313}
!148 = !{!14, !14, i64 0}
!149 = !{!43, !10, i64 5448}
!150 = distinct !{!150, !151}
!151 = !{!"llvm.loop.mustprogress"}
!152 = !{!42, !13, i64 7272}
!153 = !{!43, !10, i64 952}
!154 = !{!70, !10, i64 92}
!155 = !{!43, !7, i64 256}
!156 = !{!70, !10, i64 80}
!157 = !{!70, !10, i64 84}
!158 = distinct !{!158, !151}
!159 = !{!70, !10, i64 48}
!160 = !{!29, !7, i64 8}
!161 = !{!29, !10, i64 0}
!162 = !{!70, !10, i64 32}
!163 = !{!164, !10, i64 0}
!164 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !7, i64 8, !14, i64 16, !10, i64 20, !7, i64 24, !10, i64 32, !10, i64 36, !13, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!165 = !{!164, !10, i64 4}
!166 = !{!164, !7, i64 8}
!167 = !{!164, !10, i64 20}
!168 = !{!164, !7, i64 24}
!169 = !{!164, !10, i64 32}
!170 = !{!164, !10, i64 36}
!171 = !{!70, !10, i64 76}
!172 = !{!164, !10, i64 44}
!173 = !{!164, !10, i64 48}
!174 = !{!164, !10, i64 52}
!175 = !{!164, !13, i64 40}
!176 = !{!22, !12, i64 4}
!177 = distinct !{!177, !151}
!178 = !{!11, !12, i64 0}
!179 = !{!11, !12, i64 4}
!180 = !{!35, !12, i64 12}
!181 = !{!35, !12, i64 4}
!182 = distinct !{!182, !151}
!183 = !{!6, !7, i64 616}
!184 = distinct !{!184, !151}
!185 = !{!43, !12, i64 16}
!186 = !{!70, !12, i64 3704}
!187 = !{!42, !13, i64 202}
!188 = !{!42, !13, i64 12524}
!189 = !{!22, !12, i64 8}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass