; LLVM IR from BrunoLevy/learn-fpga :: LiteX/software/Libs/imgui (imgui_widgets)

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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiWindow = type <{ ptr, i32, i32, %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, 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, %struct.ImVec2, i32, i16, i16, i32, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.0, ptr, ptr, i32, i32, i32, float, float, %struct.ImVector.1, %struct.ImVector.1 }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type <{ i32, i32, i16, i16, i16, i16, i16, [4 x i16], [2 x i8] }>
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVec2ih = type { i16, i16 }
%struct.ImGuiStorage = type { %struct.ImVector.2 }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.10 }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImGuiContext = type <{ i8, i8, [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, i32, [4 x i8], %struct.ImVector.18, ptr, 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, %struct.ImRect, i32, i32, i32, [4 x i8], %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, ptr, ptr, ptr, float, float, 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], i32, [4 x i8], %struct.ImVector.20, ptr, i32, [4 x i8], %struct.ImVector.21, %struct.ImPool, %struct.ImVector.1, %struct.ImVector.10, ptr, %struct.ImPool.23, %struct.ImVector.25, %struct.ImVector.26, %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.27, %struct.ImVector, %struct.ImVec2, %struct.ImVec2, i8, i8, [2 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.29, %struct.ImChunkStream, %struct.ImChunkStream.30, %struct.ImVector.31, 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 i16], [5 x i16], [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.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.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.22, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImPool.23 = type { %struct.ImVector.24, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ i32, i32, i32, [4 x i8], %struct.ImVector.5, %struct.ImVector.27, %struct.ImVector.27, i8, [3 x i8], i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type <{ %struct.ImVector.1, float, float, %struct.ImVector.5, %struct.ImVector.28, ptr, ptr, ptr, i16, i16, i16, i16, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.27 }
%struct.ImChunkStream.30 = type { %struct.ImVector.27 }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.27 }
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiStackTool = type { i32, i32, i32, %struct.ImVector.32 }
%struct.ImVector.32 = 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 [98 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 [34 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(937), 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 @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8)) #5

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

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

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

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

195:                                              ; preds = %192, %189
  %196 = phi i1 [ false, %189 ], [ %194, %192 ]
  br i1 %196, label %197, label %198

197:                                              ; preds = %195
  br label %200

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

199:                                              ; No predecessors!
  br label %200

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

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

208:                                              ; preds = %204, %200
  %209 = phi i1 [ false, %200 ], [ %207, %204 ]
  %210 = xor i1 %209, true
  br i1 %210, label %211, label %212

211:                                              ; preds = %208
  br label %214

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

213:                                              ; No predecessors!
  br label %214

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

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

222:                                              ; preds = %218, %214
  %223 = phi i1 [ false, %214 ], [ %221, %218 ]
  %224 = xor i1 %223, true
  br i1 %224, label %225, label %226

225:                                              ; preds = %222
  br label %228

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

227:                                              ; No predecessors!
  br label %228

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

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

259:                                              ; preds = %256
  br label %262

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

261:                                              ; No predecessors!
  br label %262

262:                                              ; preds = %261, %259
  br label %263

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

266:                                              ; preds = %263
  call void @_ZN5ImGui10BeginGroupEv()
  br label %267

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

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

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

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

299:                                              ; preds = %285
  %300 = load ptr, ptr %22, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.ImGuiStyle, ptr %300, i32 0, i32 16
  %302 = getelementptr inbounds %struct.ImVec2, ptr %301, i32 0, i32 0
  %303 = load float, ptr %302, align 4, !tbaa !94
  %304 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %305 = load float, ptr %304, align 4, !tbaa !93
  %306 = fadd float %303, %305
  br label %308

307:                                              ; preds = %285
  br label %308

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

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

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

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

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

364:                                              ; preds = %337
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.ImGuiContext, ptr %365, i32 0, i32 28
  %367 = load ptr, ptr %366, align 8, !tbaa !99
  store ptr %367, ptr %38, align 8, !tbaa !5
  %368 = load ptr, ptr %38, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.ImGuiWindow, ptr %368, i32 0, i32 54
  %370 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %369, i32 0, i32 13
  %371 = load i32, ptr %370, align 4, !tbaa !100
  %372 = shl i32 1, %371
  %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 15
  %376 = load i16, ptr %375, align 2, !tbaa !101
  %377 = sext i16 %376 to i32
  %378 = or i32 %377, %372
  %379 = trunc i32 %378 to i16
  store i16 %379, ptr %375, align 2, !tbaa !101
  %380 = load ptr, ptr %22, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.ImGuiStyle, ptr %380, i32 0, i32 12
  %382 = load ptr, ptr %38, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.ImGuiWindow, ptr %382, i32 0, i32 54
  %384 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %383, i32 0, i32 0
  %385 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %384, ptr noundef nonnull align 4 dereferenceable(8) %381)
  %386 = load ptr, ptr %38, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.ImGuiWindow, ptr %386, i32 0, i32 20
  %388 = getelementptr inbounds %struct.ImVec2, ptr %387, i32 0, i32 0
  %389 = load float, ptr %388, align 4, !tbaa !102
  %390 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %391 = load float, ptr %390, align 4, !tbaa !93
  %392 = fsub float %391, %389
  store float %392, ptr %390, align 4, !tbaa !93
  store i32 0, ptr %19, align 4
  br label %393

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

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

396:                                              ; preds = %394
  br label %415

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

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

408:                                              ; preds = %405
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3460

409:                                              ; preds = %405
  br label %410

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

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

421:                                              ; preds = %415
  %422 = load ptr, ptr %20, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.ImGuiContext, ptr %422, i32 0, i32 138
  store i32 1, ptr %423, align 8, !tbaa !103
  br label %424

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

436:                                              ; preds = %424
  %437 = load ptr, ptr %20, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.ImGuiContext, ptr %437, i32 0, i32 91
  %439 = load i32, ptr %438, align 4, !tbaa !105
  %440 = load i32, ptr %29, align 4, !tbaa !9
  %441 = icmp eq i32 %439, %440
  br i1 %441, label %455, label %442

442:                                              ; preds = %436
  %443 = load ptr, ptr %20, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.ImGuiContext, ptr %443, i32 0, i32 88
  %445 = load i32, ptr %444, align 8, !tbaa !106
  %446 = load i32, ptr %29, align 4, !tbaa !9
  %447 = icmp eq i32 %445, %446
  br i1 %447, label %448, label %453

448:                                              ; preds = %442
  %449 = load ptr, ptr %20, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.ImGuiContext, ptr %449, i32 0, i32 98
  %451 = load i32, ptr %450, align 8, !tbaa !107
  %452 = icmp eq i32 %451, 2
  br label %453

453:                                              ; preds = %448, %442
  %454 = phi i1 [ false, %442 ], [ %452, %448 ]
  br label %455

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

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

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

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

473:                                              ; preds = %468
  %474 = load ptr, ptr %47, align 8, !tbaa !5
  %475 = icmp ne ptr %474, null
  br i1 %475, label %476, label %488

476:                                              ; preds = %473
  %477 = load ptr, ptr %20, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.ImGuiContext, ptr %477, i32 0, i32 44
  %479 = load i32, ptr %478, align 4, !tbaa !104
  %480 = icmp eq i32 %479, 0
  br i1 %480, label %481, label %488

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

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

493:                                              ; preds = %488
  %494 = load ptr, ptr %47, align 8, !tbaa !5
  %495 = icmp ne ptr %494, null
  br i1 %495, label %496, label %503

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

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

508:                                              ; preds = %503
  %509 = load ptr, ptr %38, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.ImGuiWindow, ptr %509, i32 0, i32 15
  %511 = getelementptr inbounds %struct.ImVec2, ptr %510, i32 0, i32 1
  %512 = load float, ptr %511, align 4, !tbaa !109
  br label %514

513:                                              ; preds = %503
  br label %514

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

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

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

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

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

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

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

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

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

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

562:                                              ; preds = %556, %551
  %563 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %564 = trunc i8 %563 to i1
  br i1 %564, label %565, label %680

565:                                              ; preds = %562, %556
  %566 = load ptr, ptr %20, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiContext, ptr %566, i32 0, i32 174
  store ptr %567, ptr %47, align 8, !tbaa !5
  %568 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %568)
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #14
  %569 = load ptr, ptr %12, align 8, !tbaa !5
  %570 = call i64 @strlen(ptr noundef %569) #16
  %571 = trunc i64 %570 to i32
  store i32 %571, ptr %59, align 4, !tbaa !9
  %572 = load ptr, ptr %47, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %572, i32 0, i32 6
  %574 = load i32, ptr %59, align 4, !tbaa !9
  %575 = add nsw i32 %574, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %573, i32 noundef %575)
  %576 = load ptr, ptr %47, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %576, i32 0, i32 6
  %578 = getelementptr inbounds %struct.ImVector.27, ptr %577, i32 0, i32 2
  %579 = load ptr, ptr %578, align 8, !tbaa !111
  %580 = load ptr, ptr %12, align 8, !tbaa !5
  %581 = load i32, ptr %59, align 4, !tbaa !9
  %582 = add nsw i32 %581, 1
  %583 = sext i32 %582 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %579, ptr align 1 %580, i64 %583, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #14
  store ptr null, ptr %60, align 8, !tbaa !5
  %584 = load ptr, ptr %47, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %584, i32 0, i32 4
  %586 = load i32, ptr %13, align 4, !tbaa !9
  %587 = add nsw i32 %586, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %585, i32 noundef %587)
  %588 = load ptr, ptr %47, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %588, i32 0, i32 5
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %589, i32 noundef 0)
  %590 = load ptr, ptr %47, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %590, i32 0, i32 7
  store i8 0, ptr %591, align 8, !tbaa !112
  %592 = load ptr, ptr %47, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %592, i32 0, i32 4
  %594 = getelementptr inbounds %struct.ImVector.5, ptr %593, i32 0, i32 2
  %595 = load ptr, ptr %594, align 8, !tbaa !113
  %596 = load i32, ptr %13, align 4, !tbaa !9
  %597 = load ptr, ptr %12, align 8, !tbaa !5
  %598 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %595, i32 noundef %596, ptr noundef %597, ptr noundef null, ptr noundef %60)
  %599 = load ptr, ptr %47, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %599, i32 0, i32 1
  store i32 %598, ptr %600, align 4, !tbaa !114
  %601 = load ptr, ptr %60, align 8, !tbaa !5
  %602 = load ptr, ptr %12, align 8, !tbaa !5
  %603 = ptrtoint ptr %601 to i64
  %604 = ptrtoint ptr %602 to i64
  %605 = sub i64 %603, %604
  %606 = trunc i64 %605 to i32
  %607 = load ptr, ptr %47, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %607, i32 0, i32 2
  store i32 %606, ptr %608, align 8, !tbaa !115
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #14
  %609 = load ptr, ptr %47, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %609, i32 0, i32 0
  %611 = load i32, ptr %610, align 8, !tbaa !116
  %612 = load i32, ptr %29, align 4, !tbaa !9
  %613 = icmp eq i32 %611, %612
  br i1 %613, label %614, label %618

614:                                              ; preds = %565
  %615 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %616 = trunc i8 %615 to i1
  %617 = xor i1 %616, true
  br label %618

618:                                              ; preds = %614, %565
  %619 = phi i1 [ false, %565 ], [ %617, %614 ]
  %620 = zext i1 %619 to i8
  store i8 %620, ptr %61, align 1, !tbaa !42
  %621 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %622 = trunc i8 %621 to i1
  br i1 %622, label %623, label %625

623:                                              ; preds = %618
  %624 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3716) %624)
  br label %637

625:                                              ; preds = %618
  %626 = load i32, ptr %29, align 4, !tbaa !9
  %627 = load ptr, ptr %47, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %627, i32 0, i32 0
  store i32 %626, ptr %628, align 8, !tbaa !116
  %629 = load ptr, ptr %47, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %629, i32 0, i32 10
  store float 0.000000e+00, ptr %630, align 8, !tbaa !117
  %631 = load ptr, ptr %47, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %631, i32 0, i32 11
  %633 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %634 = trunc i8 %633 to i1
  %635 = xor i1 %634, true
  %636 = zext i1 %635 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %632, i32 noundef %636)
  br label %637

637:                                              ; preds = %625, %623
  %638 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %639 = trunc i8 %638 to i1
  br i1 %639, label %671, label %640

640:                                              ; preds = %637
  %641 = load i32, ptr %15, align 4, !tbaa !9
  %642 = and i32 %641, 16
  %643 = icmp ne i32 %642, 0
  br i1 %643, label %644, label %645

644:                                              ; preds = %640
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %645

645:                                              ; preds = %644, %640
  %646 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %647 = trunc i8 %646 to i1
  br i1 %647, label %648, label %658

648:                                              ; preds = %645
  %649 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %650 = trunc i8 %649 to i1
  br i1 %650, label %651, label %657

651:                                              ; preds = %648
  %652 = load ptr, ptr %20, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.ImGuiContext, ptr %652, i32 0, i32 92
  %654 = load i32, ptr %653, align 8, !tbaa !118
  %655 = and i32 %654, 4
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %658, label %657

657:                                              ; preds = %651, %648
  store i8 1, ptr %54, align 1, !tbaa !42
  br label %658

658:                                              ; preds = %657, %651, %645
  %659 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %660 = trunc i8 %659 to i1
  br i1 %660, label %669, label %661

661:                                              ; preds = %658
  %662 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %663 = trunc i8 %662 to i1
  br i1 %663, label %664, label %670

664:                                              ; preds = %661
  %665 = load ptr, ptr %21, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.ImGuiIO, ptr %665, i32 0, i32 40
  %667 = load i8, ptr %666, align 8, !tbaa !119, !range !40, !noundef !41
  %668 = trunc i8 %667 to i1
  br i1 %668, label %669, label %670

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

670:                                              ; preds = %669, %664, %661
  br label %671

671:                                              ; preds = %670, %637
  %672 = load i32, ptr %15, align 4, !tbaa !9
  %673 = and i32 %672, 8192
  %674 = icmp ne i32 %673, 0
  br i1 %674, label %675, label %679

675:                                              ; preds = %671
  %676 = load ptr, ptr %47, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %676, i32 0, i32 11
  %678 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %677, i32 0, i32 3
  store i8 1, ptr %678, align 4, !tbaa !120
  br label %679

679:                                              ; preds = %675, %671
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #14
  br label %680

680:                                              ; preds = %679, %562
  %681 = load ptr, ptr %20, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.ImGuiContext, ptr %681, i32 0, i32 44
  %683 = load i32, ptr %682, align 4, !tbaa !104
  %684 = load i32, ptr %29, align 4, !tbaa !9
  %685 = icmp ne i32 %683, %684
  br i1 %685, label %686, label %750

686:                                              ; preds = %680
  %687 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %688 = trunc i8 %687 to i1
  br i1 %688, label %689, label %750

689:                                              ; preds = %686
  %690 = load ptr, ptr %47, align 8, !tbaa !5
  %691 = icmp ne ptr %690, null
  br i1 %691, label %692, label %698

692:                                              ; preds = %689
  %693 = load ptr, ptr %47, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %693, i32 0, i32 0
  %695 = load i32, ptr %694, align 8, !tbaa !116
  %696 = load i32, ptr %29, align 4, !tbaa !9
  %697 = icmp eq i32 %695, %696
  br label %698

698:                                              ; preds = %692, %689
  %699 = phi i1 [ false, %689 ], [ %697, %692 ]
  br i1 %699, label %700, label %701

700:                                              ; preds = %698
  br label %703

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

702:                                              ; No predecessors!
  br label %703

703:                                              ; preds = %702, %700
  %704 = load i32, ptr %29, align 4, !tbaa !9
  %705 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %704, ptr noundef %705)
  %706 = load i32, ptr %29, align 4, !tbaa !9
  %707 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %706, ptr noundef %707)
  %708 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %708)
  %709 = load ptr, ptr %20, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ImGuiContext, ptr %709, i32 0, i32 55
  %711 = load i32, ptr %710, align 8, !tbaa !121
  %712 = or i32 %711, 3
  store i32 %712, ptr %710, align 8, !tbaa !121
  %713 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %714 = trunc i8 %713 to i1
  br i1 %714, label %719, label %715

715:                                              ; preds = %703
  %716 = load i32, ptr %15, align 4, !tbaa !9
  %717 = and i32 %716, 128
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %724

719:                                              ; preds = %715, %703
  %720 = load ptr, ptr %20, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.ImGuiContext, ptr %720, i32 0, i32 55
  %722 = load i32, ptr %721, align 8, !tbaa !121
  %723 = or i32 %722, 12
  store i32 %723, ptr %721, align 8, !tbaa !121
  br label %724

724:                                              ; preds = %719, %715
  %725 = load ptr, ptr %20, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.ImGuiContext, ptr %725, i32 0, i32 56
  %727 = load i32, ptr %726, align 4, !tbaa !122
  %728 = or i32 %727, 2
  store i32 %728, ptr %726, align 4, !tbaa !122
  %729 = load ptr, ptr %20, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.ImGuiContext, ptr %729, i32 0, i32 57
  %731 = load i64, ptr %730, align 8, !tbaa !123
  %732 = or i64 %731, 384
  store i64 %732, ptr %730, align 8, !tbaa !123
  %733 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %734 = trunc i8 %733 to i1
  br i1 %734, label %735, label %740

735:                                              ; preds = %724
  %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 !123
  %739 = or i64 %738, 96
  store i64 %739, ptr %737, align 8, !tbaa !123
  br label %740

740:                                              ; preds = %735, %724
  %741 = load i32, ptr %15, align 4, !tbaa !9
  %742 = and i32 %741, 1088
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %744, label %749

744:                                              ; preds = %740
  %745 = load ptr, ptr %20, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.ImGuiContext, ptr %745, i32 0, i32 57
  %747 = load i64, ptr %746, align 8, !tbaa !123
  %748 = or i64 %747, 1
  store i64 %748, ptr %746, align 8, !tbaa !123
  br label %749

749:                                              ; preds = %744, %740
  br label %750

750:                                              ; preds = %749, %686, %680
  %751 = load ptr, ptr %20, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.ImGuiContext, ptr %751, i32 0, i32 44
  %753 = load i32, ptr %752, align 4, !tbaa !104
  %754 = load i32, ptr %29, align 4, !tbaa !9
  %755 = icmp eq i32 %753, %754
  br i1 %755, label %756, label %760

756:                                              ; preds = %750
  %757 = load ptr, ptr %47, align 8, !tbaa !5
  %758 = icmp eq ptr %757, null
  br i1 %758, label %759, label %760

759:                                              ; preds = %756
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %760

760:                                              ; preds = %759, %756, %750
  %761 = load ptr, ptr %20, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.ImGuiContext, ptr %761, i32 0, i32 44
  %763 = load i32, ptr %762, align 4, !tbaa !104
  %764 = load i32, ptr %29, align 4, !tbaa !9
  %765 = icmp eq i32 %763, %764
  br i1 %765, label %766, label %779

766:                                              ; preds = %760
  %767 = load ptr, ptr %21, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.ImGuiIO, ptr %767, i32 0, i32 66
  %769 = getelementptr inbounds [5 x i8], ptr %768, i64 0, i64 0
  %770 = load i8, ptr %769, align 8, !tbaa !42, !range !40, !noundef !41
  %771 = trunc i8 %770 to i1
  br i1 %771, label %772, label %779

772:                                              ; preds = %766
  %773 = load i8, ptr %58, align 1, !tbaa !42, !range !40, !noundef !41
  %774 = trunc i8 %773 to i1
  br i1 %774, label %779, label %775

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

778:                                              ; preds = %775
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %779

779:                                              ; preds = %778, %775, %772, %766, %760
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #14
  %780 = load ptr, ptr %20, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.ImGuiContext, ptr %780, i32 0, i32 44
  %782 = load i32, ptr %781, align 4, !tbaa !104
  %783 = load i32, ptr %29, align 4, !tbaa !9
  %784 = icmp eq i32 %782, %783
  br i1 %784, label %793, label %785

785:                                              ; preds = %779
  %786 = load ptr, ptr %47, align 8, !tbaa !5
  %787 = icmp ne ptr %786, null
  br i1 %787, label %788, label %791

788:                                              ; preds = %785
  %789 = load i8, ptr %52, align 1, !tbaa !42, !range !40, !noundef !41
  %790 = trunc i8 %789 to i1
  br label %791

791:                                              ; preds = %788, %785
  %792 = phi i1 [ false, %785 ], [ %790, %788 ]
  br label %793

793:                                              ; preds = %791, %779
  %794 = phi i1 [ true, %779 ], [ %792, %791 ]
  %795 = zext i1 %794 to i8
  store i8 %795, ptr %62, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %796 = load ptr, ptr %47, align 8, !tbaa !5
  %797 = icmp ne ptr %796, null
  br i1 %797, label %798, label %807

798:                                              ; preds = %793
  %799 = load ptr, ptr %47, align 8, !tbaa !5
  %800 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %799)
  br i1 %800, label %804, label %801

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

804:                                              ; preds = %801, %798
  %805 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %806 = trunc i8 %805 to i1
  br label %807

807:                                              ; preds = %804, %801, %793
  %808 = phi i1 [ false, %801 ], [ false, %793 ], [ %806, %804 ]
  %809 = zext i1 %808 to i8
  store i8 %809, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #14
  store i8 0, ptr %64, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #14
  store i8 0, ptr %65, align 1, !tbaa !42
  %810 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %811 = trunc i8 %810 to i1
  br i1 %811, label %812, label %856

812:                                              ; preds = %807
  %813 = load ptr, ptr %47, align 8, !tbaa !5
  %814 = icmp ne ptr %813, null
  br i1 %814, label %815, label %856

815:                                              ; preds = %812
  %816 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %817 = trunc i8 %816 to i1
  br i1 %817, label %821, label %818

818:                                              ; preds = %815
  %819 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %820 = trunc i8 %819 to i1
  br i1 %820, label %821, label %856

821:                                              ; preds = %818, %815
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #14
  store ptr null, ptr %66, align 8, !tbaa !5
  %822 = load ptr, ptr %47, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %822, i32 0, i32 4
  %824 = load i32, ptr %13, align 4, !tbaa !9
  %825 = add nsw i32 %824, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %823, i32 noundef %825)
  %826 = load ptr, ptr %47, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %826, i32 0, i32 4
  %828 = getelementptr inbounds %struct.ImVector.5, ptr %827, i32 0, i32 2
  %829 = load ptr, ptr %828, align 8, !tbaa !113
  %830 = load ptr, ptr %47, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %830, i32 0, i32 4
  %832 = getelementptr inbounds %struct.ImVector.5, ptr %831, i32 0, i32 0
  %833 = load i32, ptr %832, align 8, !tbaa !124
  %834 = load ptr, ptr %12, align 8, !tbaa !5
  %835 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %829, i32 noundef %833, ptr noundef %834, ptr noundef null, ptr noundef %66)
  %836 = load ptr, ptr %47, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %836, i32 0, i32 1
  store i32 %835, ptr %837, align 4, !tbaa !114
  %838 = load ptr, ptr %66, align 8, !tbaa !5
  %839 = load ptr, ptr %12, align 8, !tbaa !5
  %840 = ptrtoint ptr %838 to i64
  %841 = ptrtoint ptr %839 to i64
  %842 = sub i64 %840, %841
  %843 = trunc i64 %842 to i32
  %844 = load ptr, ptr %47, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %844, i32 0, i32 2
  store i32 %843, ptr %845, align 8, !tbaa !115
  %846 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3716) %846)
  %847 = load ptr, ptr %47, align 8, !tbaa !5
  %848 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %847)
  %849 = zext i1 %848 to i32
  %850 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %851 = trunc i8 %850 to i1
  %852 = zext i1 %851 to i32
  %853 = and i32 %852, %849
  %854 = icmp ne i32 %853, 0
  %855 = zext i1 %854 to i8
  store i8 %855, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #14
  br label %856

856:                                              ; preds = %821, %818, %812, %807
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #14
  %857 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %858 = trunc i8 %857 to i1
  br i1 %858, label %868, label %859

859:                                              ; preds = %856
  %860 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %861 = trunc i8 %860 to i1
  br i1 %861, label %868, label %862

862:                                              ; preds = %859
  %863 = load ptr, ptr %20, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.ImGuiContext, ptr %863, i32 0, i32 44
  %865 = load i32, ptr %864, align 4, !tbaa !104
  %866 = load i32, ptr %29, align 4, !tbaa !9
  %867 = icmp eq i32 %865, %866
  br i1 %867, label %868, label %879

868:                                              ; preds = %862, %859, %856
  %869 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %870 = trunc i8 %869 to i1
  br i1 %870, label %879, label %871

871:                                              ; preds = %868
  %872 = load ptr, ptr %47, align 8, !tbaa !5
  %873 = icmp ne ptr %872, null
  br i1 %873, label %874, label %879

874:                                              ; preds = %871
  %875 = load ptr, ptr %47, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %875, i32 0, i32 7
  %877 = load i8, ptr %876, align 8, !tbaa !112, !range !40, !noundef !41
  %878 = trunc i8 %877 to i1
  br label %879

879:                                              ; preds = %874, %871, %868, %862
  %880 = phi i1 [ false, %871 ], [ false, %868 ], [ false, %862 ], [ %878, %874 ]
  %881 = zext i1 %880 to i8
  store i8 %881, ptr %67, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #14
  %882 = load ptr, ptr %11, align 8, !tbaa !5
  %883 = icmp ne ptr %882, null
  br i1 %883, label %884, label %900

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

887:                                              ; preds = %884
  %888 = load ptr, ptr %47, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %888, i32 0, i32 5
  %890 = getelementptr inbounds %struct.ImVector.27, ptr %889, i32 0, i32 2
  %891 = load ptr, ptr %890, align 8, !tbaa !125
  br label %894

892:                                              ; preds = %884
  %893 = load ptr, ptr %12, align 8, !tbaa !5
  br label %894

894:                                              ; preds = %892, %887
  %895 = phi ptr [ %891, %887 ], [ %893, %892 ]
  %896 = getelementptr inbounds i8, ptr %895, i64 0
  %897 = load i8, ptr %896, align 1, !tbaa !126
  %898 = sext i8 %897 to i32
  %899 = icmp eq i32 %898, 0
  br label %900

900:                                              ; preds = %894, %879
  %901 = phi i1 [ false, %879 ], [ %899, %894 ]
  %902 = zext i1 %901 to i8
  store i8 %902, ptr %68, align 1, !tbaa !42
  %903 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %904 = trunc i8 %903 to i1
  br i1 %904, label %905, label %976

905:                                              ; preds = %900
  %906 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %907 = trunc i8 %906 to i1
  br i1 %907, label %976, label %908

908:                                              ; preds = %905
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #14
  %909 = load ptr, ptr %20, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.ImGuiContext, ptr %909, i32 0, i32 5
  %911 = load ptr, ptr %910, align 8, !tbaa !127
  %912 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110) %911, i16 noundef zeroext 42)
  store ptr %912, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #14
  %913 = load ptr, ptr %20, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImGuiContext, ptr %913, i32 0, i32 175
  store ptr %914, ptr %70, align 8, !tbaa !5
  %915 = load ptr, ptr %20, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImGuiContext, ptr %915, i32 0, i32 5
  %917 = load ptr, ptr %916, align 8, !tbaa !127
  %918 = getelementptr inbounds %struct.ImFont, ptr %917, i32 0, i32 2
  %919 = load float, ptr %918, align 4, !tbaa !128
  %920 = load ptr, ptr %70, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.ImFont, ptr %920, i32 0, i32 2
  store float %919, ptr %921, align 4, !tbaa !128
  %922 = load ptr, ptr %20, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.ImGuiContext, ptr %922, i32 0, i32 5
  %924 = load ptr, ptr %923, align 8, !tbaa !127
  %925 = getelementptr inbounds %struct.ImFont, ptr %924, i32 0, i32 14
  %926 = load float, ptr %925, align 4, !tbaa !129
  %927 = load ptr, ptr %70, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImFont, ptr %927, i32 0, i32 14
  store float %926, ptr %928, align 4, !tbaa !129
  %929 = load ptr, ptr %20, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.ImGuiContext, ptr %929, i32 0, i32 5
  %931 = load ptr, ptr %930, align 8, !tbaa !127
  %932 = getelementptr inbounds %struct.ImFont, ptr %931, i32 0, i32 15
  %933 = load float, ptr %932, align 8, !tbaa !130
  %934 = load ptr, ptr %70, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.ImFont, ptr %934, i32 0, i32 15
  store float %933, ptr %935, align 8, !tbaa !130
  %936 = load ptr, ptr %20, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.ImGuiContext, ptr %936, i32 0, i32 5
  %938 = load ptr, ptr %937, align 8, !tbaa !127
  %939 = getelementptr inbounds %struct.ImFont, ptr %938, i32 0, i32 16
  %940 = load float, ptr %939, align 4, !tbaa !131
  %941 = load ptr, ptr %70, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ImFont, ptr %941, i32 0, i32 16
  store float %940, ptr %942, align 4, !tbaa !131
  %943 = load ptr, ptr %20, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.ImGuiContext, ptr %943, i32 0, i32 5
  %945 = load ptr, ptr %944, align 8, !tbaa !127
  %946 = getelementptr inbounds %struct.ImFont, ptr %945, i32 0, i32 6
  %947 = load ptr, ptr %946, align 8, !tbaa !132
  %948 = load ptr, ptr %70, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.ImFont, ptr %948, i32 0, i32 6
  store ptr %947, ptr %949, align 8, !tbaa !132
  %950 = load ptr, ptr %69, align 8, !tbaa !5
  %951 = load ptr, ptr %70, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.ImFont, ptr %951, i32 0, i32 5
  store ptr %950, ptr %952, align 8, !tbaa !133
  %953 = load ptr, ptr %69, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ImFontGlyph, ptr %953, i32 0, i32 1
  %955 = load float, ptr %954, align 4, !tbaa !134
  %956 = load ptr, ptr %70, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.ImFont, ptr %956, i32 0, i32 1
  store float %955, ptr %957, align 8, !tbaa !136
  %958 = load ptr, ptr %70, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.ImFont, ptr %958, i32 0, i32 4
  %960 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %959)
  br i1 %960, label %961, label %969

961:                                              ; preds = %908
  %962 = load ptr, ptr %70, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.ImFont, ptr %962, i32 0, i32 0
  %964 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %963)
  br i1 %964, label %965, label %969

965:                                              ; preds = %961
  %966 = load ptr, ptr %70, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImFont, ptr %966, i32 0, i32 3
  %968 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %967)
  br label %969

969:                                              ; preds = %965, %961, %908
  %970 = phi i1 [ false, %961 ], [ false, %908 ], [ %968, %965 ]
  br i1 %970, label %971, label %972

971:                                              ; preds = %969
  br label %974

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

973:                                              ; No predecessors!
  br label %974

974:                                              ; preds = %973, %971
  %975 = load ptr, ptr %70, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %975)
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #14
  br label %976

976:                                              ; preds = %974, %905, %900
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #14
  store i32 0, ptr %71, align 4, !tbaa !9
  %977 = load ptr, ptr %20, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiContext, ptr %977, i32 0, i32 44
  %979 = load i32, ptr %978, align 4, !tbaa !104
  %980 = load i32, ptr %29, align 4, !tbaa !9
  %981 = icmp eq i32 %979, %980
  br i1 %981, label %982, label %1376

982:                                              ; preds = %976
  %983 = load ptr, ptr %47, align 8, !tbaa !5
  %984 = icmp ne ptr %983, null
  br i1 %984, label %985, label %986

985:                                              ; preds = %982
  br label %988

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

987:                                              ; No predecessors!
  br label %988

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

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

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

1046:                                             ; preds = %1041, %1030
  %1047 = phi float [ %1040, %1030 ], [ %1045, %1041 ]
  store float %1047, ptr %73, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #14
  %1048 = load ptr, ptr %21, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.ImGuiIO, ptr %1048, i32 0, i32 20
  %1050 = load i8, ptr %1049, align 1, !tbaa !147, !range !40, !noundef !41
  %1051 = trunc i8 %1050 to i1
  %1052 = zext i1 %1051 to i8
  store i8 %1052, ptr %74, align 1, !tbaa !42
  %1053 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %1054 = trunc i8 %1053 to i1
  br i1 %1054, label %1055, label %1059

1055:                                             ; preds = %1046
  %1056 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %1056)
  %1057 = load ptr, ptr %47, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1057, i32 0, i32 14
  store i8 1, ptr %1058, align 1, !tbaa !148
  br label %1249

1059:                                             ; preds = %1046
  %1060 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %1061 = trunc i8 %1060 to i1
  br i1 %1061, label %1062, label %1192

1062:                                             ; preds = %1059
  %1063 = load ptr, ptr %21, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.ImGuiIO, ptr %1063, i32 0, i32 68
  %1065 = getelementptr inbounds [5 x i16], ptr %1064, i64 0, i64 0
  %1066 = load i16, ptr %1065, align 2, !tbaa !149
  %1067 = zext i16 %1066 to i32
  %1068 = icmp sge i32 %1067, 2
  br i1 %1068, label %1069, label %1192

1069:                                             ; preds = %1062
  %1070 = load ptr, ptr %21, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct.ImGuiIO, ptr %1070, i32 0, i32 41
  %1072 = load i8, ptr %1071, align 1, !tbaa !150, !range !40, !noundef !41
  %1073 = trunc i8 %1072 to i1
  br i1 %1073, label %1192, label %1074

1074:                                             ; preds = %1069
  %1075 = load ptr, ptr %47, align 8, !tbaa !5
  %1076 = load ptr, ptr %47, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1076, i32 0, i32 11
  %1078 = load float, ptr %72, align 4, !tbaa !44
  %1079 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1075, ptr noundef %1077, float noundef %1078, float noundef %1079)
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  %1080 = load ptr, ptr %21, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.ImGuiIO, ptr %1080, i32 0, i32 68
  %1082 = getelementptr inbounds [5 x i16], ptr %1081, i64 0, i64 0
  %1083 = load i16, ptr %1082, align 2, !tbaa !149
  %1084 = zext i16 %1083 to i32
  %1085 = sub nsw i32 %1084, 2
  store i32 %1085, ptr %75, align 4, !tbaa !9
  %1086 = load i32, ptr %75, align 4, !tbaa !9
  %1087 = srem i32 %1086, 2
  %1088 = icmp eq i32 %1087, 0
  br i1 %1088, label %1089, label %1155

1089:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #14
  %1090 = load ptr, ptr %47, align 8, !tbaa !5
  %1091 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1090, i32 0, i32 11
  %1092 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1091, i32 0, i32 0
  %1093 = load i32, ptr %1092, align 4, !tbaa !151
  %1094 = icmp eq i32 %1093, 0
  br i1 %1094, label %1105, label %1095

1095:                                             ; preds = %1089
  %1096 = load ptr, ptr %47, align 8, !tbaa !5
  %1097 = load ptr, ptr %47, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1097, i32 0, i32 11
  %1099 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1098, i32 0, i32 0
  %1100 = load i32, ptr %1099, align 4, !tbaa !151
  %1101 = sub nsw i32 %1100, 1
  %1102 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1096, i32 noundef %1101)
  %1103 = zext i16 %1102 to i32
  %1104 = icmp eq i32 %1103, 10
  br label %1105

1105:                                             ; preds = %1095, %1089
  %1106 = phi i1 [ true, %1089 ], [ %1104, %1095 ]
  %1107 = zext i1 %1106 to i8
  store i8 %1107, ptr %76, align 1, !tbaa !42
  %1108 = load ptr, ptr %47, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1108, i32 0, i32 11
  %1110 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1109, i32 0, i32 1
  %1111 = load i32, ptr %1110, align 4, !tbaa !152
  %1112 = load ptr, ptr %47, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1112, i32 0, i32 11
  %1114 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1113, i32 0, i32 2
  %1115 = load i32, ptr %1114, align 4, !tbaa !153
  %1116 = icmp ne i32 %1111, %1115
  br i1 %1116, label %1120, label %1117

1117:                                             ; preds = %1105
  %1118 = load i8, ptr %76, align 1, !tbaa !42, !range !40, !noundef !41
  %1119 = trunc i8 %1118 to i1
  br i1 %1119, label %1122, label %1120

1120:                                             ; preds = %1117, %1105
  %1121 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1121, i32 noundef 2097164)
  br label %1122

1122:                                             ; preds = %1120, %1117
  %1123 = load ptr, ptr %47, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1123, i32 0, i32 11
  %1125 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1124, i32 0, i32 1
  %1126 = load i32, ptr %1125, align 4, !tbaa !152
  %1127 = load ptr, ptr %47, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1127, i32 0, i32 11
  %1129 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1128, i32 0, i32 2
  %1130 = load i32, ptr %1129, align 4, !tbaa !153
  %1131 = icmp ne i32 %1126, %1130
  br i1 %1131, label %1135, label %1132

1132:                                             ; preds = %1122
  %1133 = load ptr, ptr %47, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1133, i32 0, i32 11
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef %1134)
  br label %1135

1135:                                             ; preds = %1132, %1122
  %1136 = load ptr, ptr %47, align 8, !tbaa !5
  %1137 = load ptr, ptr %47, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1137, i32 0, i32 11
  %1139 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1138, i32 0, i32 0
  %1140 = load i32, ptr %1139, align 4, !tbaa !151
  %1141 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef %1136, i32 noundef %1140)
  %1142 = load ptr, ptr %47, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1142, i32 0, i32 11
  %1144 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1143, i32 0, i32 0
  store i32 %1141, ptr %1144, align 4, !tbaa !151
  %1145 = load ptr, ptr %47, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1145, i32 0, i32 11
  %1147 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1146, i32 0, i32 0
  %1148 = load i32, ptr %1147, align 4, !tbaa !151
  %1149 = load ptr, ptr %47, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1149, i32 0, i32 11
  %1151 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1150, i32 0, i32 2
  store i32 %1148, ptr %1151, align 4, !tbaa !153
  %1152 = load ptr, ptr %47, align 8, !tbaa !5
  %1153 = load ptr, ptr %47, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1153, i32 0, i32 11
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1152, ptr noundef %1154)
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  br label %1190

1155:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #14
  %1156 = load ptr, ptr %47, align 8, !tbaa !5
  %1157 = load ptr, ptr %47, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1157, i32 0, i32 11
  %1159 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1158, i32 0, i32 0
  %1160 = load i32, ptr %1159, align 4, !tbaa !151
  %1161 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1156, i32 noundef %1160)
  %1162 = zext i16 %1161 to i32
  %1163 = icmp eq i32 %1162, 10
  %1164 = zext i1 %1163 to i8
  store i8 %1164, ptr %77, align 1, !tbaa !42
  %1165 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1165, i32 noundef 2097156)
  %1166 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1166, i32 noundef 6291461)
  %1167 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1167, i32 noundef 6291457)
  %1168 = load i8, ptr %77, align 1, !tbaa !42, !range !40, !noundef !41
  %1169 = trunc i8 %1168 to i1
  br i1 %1169, label %1187, label %1170

1170:                                             ; preds = %1155
  %1171 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1172 = trunc i8 %1171 to i1
  br i1 %1172, label %1173, label %1187

1173:                                             ; preds = %1170
  %1174 = load ptr, ptr %47, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1174, i32 0, i32 11
  %1176 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1175, i32 0, i32 1
  %1177 = load ptr, ptr %47, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1177, i32 0, i32 11
  %1179 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1178, i32 0, i32 2
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %1176, ptr noundef nonnull align 4 dereferenceable(4) %1179)
  %1180 = load ptr, ptr %47, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1180, i32 0, i32 11
  %1182 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1181, i32 0, i32 2
  %1183 = load i32, ptr %1182, align 4, !tbaa !153
  %1184 = load ptr, ptr %47, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1184, i32 0, i32 11
  %1186 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1185, i32 0, i32 0
  store i32 %1183, ptr %1186, align 4, !tbaa !151
  br label %1187

1187:                                             ; preds = %1173, %1170, %1155
  %1188 = load ptr, ptr %47, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1188, i32 0, i32 13
  store i8 0, ptr %1189, align 4, !tbaa !154
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #14
  br label %1190

1190:                                             ; preds = %1187, %1135
  %1191 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %1191)
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  br label %1248

1192:                                             ; preds = %1069, %1062, %1059
  %1193 = load ptr, ptr %21, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.ImGuiIO, ptr %1193, i32 0, i32 66
  %1195 = getelementptr inbounds [5 x i8], ptr %1194, i64 0, i64 0
  %1196 = load i8, ptr %1195, align 8, !tbaa !42, !range !40, !noundef !41
  %1197 = trunc i8 %1196 to i1
  br i1 %1197, label %1198, label %1214

1198:                                             ; preds = %1192
  %1199 = load ptr, ptr %47, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1199, i32 0, i32 14
  %1201 = load i8, ptr %1200, align 1, !tbaa !148, !range !40, !noundef !41
  %1202 = trunc i8 %1201 to i1
  br i1 %1202, label %1214, label %1203

1203:                                             ; preds = %1198
  %1204 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %1205 = trunc i8 %1204 to i1
  br i1 %1205, label %1206, label %1213

1206:                                             ; preds = %1203
  %1207 = load ptr, ptr %47, align 8, !tbaa !5
  %1208 = load ptr, ptr %47, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1208, i32 0, i32 11
  %1210 = load float, ptr %72, align 4, !tbaa !44
  %1211 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1207, ptr noundef %1209, float noundef %1210, float noundef %1211)
  %1212 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %1212)
  br label %1213

1213:                                             ; preds = %1206, %1203
  br label %1247

1214:                                             ; preds = %1198, %1192
  %1215 = load ptr, ptr %21, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.ImGuiIO, ptr %1215, i32 0, i32 37
  %1217 = getelementptr inbounds [5 x i8], ptr %1216, i64 0, i64 0
  %1218 = load i8, ptr %1217, align 8, !tbaa !42, !range !40, !noundef !41
  %1219 = trunc i8 %1218 to i1
  br i1 %1219, label %1220, label %1246

1220:                                             ; preds = %1214
  %1221 = load ptr, ptr %47, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1221, i32 0, i32 14
  %1223 = load i8, ptr %1222, align 1, !tbaa !148, !range !40, !noundef !41
  %1224 = trunc i8 %1223 to i1
  br i1 %1224, label %1246, label %1225

1225:                                             ; preds = %1220
  %1226 = load ptr, ptr %21, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.ImGuiIO, ptr %1226, i32 0, i32 59
  %1228 = getelementptr inbounds %struct.ImVec2, ptr %1227, i32 0, i32 0
  %1229 = load float, ptr %1228, align 4, !tbaa !155
  %1230 = fcmp une float %1229, 0.000000e+00
  br i1 %1230, label %1237, label %1231

1231:                                             ; preds = %1225
  %1232 = load ptr, ptr %21, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiIO, ptr %1232, i32 0, i32 59
  %1234 = getelementptr inbounds %struct.ImVec2, ptr %1233, i32 0, i32 1
  %1235 = load float, ptr %1234, align 4, !tbaa !156
  %1236 = fcmp une float %1235, 0.000000e+00
  br i1 %1236, label %1237, label %1246

1237:                                             ; preds = %1231, %1225
  %1238 = load ptr, ptr %47, align 8, !tbaa !5
  %1239 = load ptr, ptr %47, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1239, i32 0, i32 11
  %1241 = load float, ptr %72, align 4, !tbaa !44
  %1242 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1238, ptr noundef %1240, float noundef %1241, float noundef %1242)
  %1243 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %1243)
  %1244 = load ptr, ptr %47, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1244, i32 0, i32 13
  store i8 1, ptr %1245, align 4, !tbaa !154
  br label %1246

1246:                                             ; preds = %1237, %1231, %1220, %1214
  br label %1247

1247:                                             ; preds = %1246, %1213
  br label %1248

1248:                                             ; preds = %1247, %1190
  br label %1249

1249:                                             ; preds = %1248, %1055
  %1250 = load ptr, ptr %47, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1250, i32 0, i32 14
  %1252 = load i8, ptr %1251, align 1, !tbaa !148, !range !40, !noundef !41
  %1253 = trunc i8 %1252 to i1
  br i1 %1253, label %1254, label %1263

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

1260:                                             ; preds = %1254
  %1261 = load ptr, ptr %47, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1261, i32 0, i32 14
  store i8 0, ptr %1262, align 1, !tbaa !148
  br label %1263

1263:                                             ; preds = %1260, %1254, %1249
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  %1264 = load ptr, ptr %21, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.ImGuiIO, ptr %1264, i32 0, i32 40
  %1266 = load i8, ptr %1265, align 8, !tbaa !119, !range !40, !noundef !41
  %1267 = trunc i8 %1266 to i1
  br i1 %1267, label %1268, label %1273

1268:                                             ; preds = %1263
  %1269 = load ptr, ptr %21, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.ImGuiIO, ptr %1269, i32 0, i32 42
  %1271 = load i8, ptr %1270, align 2, !tbaa !157, !range !40, !noundef !41
  %1272 = trunc i8 %1271 to i1
  br i1 %1272, label %1273, label %1283

1273:                                             ; preds = %1268, %1263
  %1274 = load i8, ptr %74, align 1, !tbaa !42, !range !40, !noundef !41
  %1275 = trunc i8 %1274 to i1
  br i1 %1275, label %1276, label %1281

1276:                                             ; preds = %1273
  %1277 = load ptr, ptr %21, align 8, !tbaa !5
  %1278 = getelementptr inbounds %struct.ImGuiIO, ptr %1277, i32 0, i32 43
  %1279 = load i8, ptr %1278, align 1, !tbaa !158, !range !40, !noundef !41
  %1280 = trunc i8 %1279 to i1
  br label %1281

1281:                                             ; preds = %1276, %1273
  %1282 = phi i1 [ false, %1273 ], [ %1280, %1276 ]
  br label %1283

1283:                                             ; preds = %1281, %1268
  %1284 = phi i1 [ true, %1268 ], [ %1282, %1281 ]
  %1285 = zext i1 %1284 to i8
  store i8 %1285, ptr %78, align 1, !tbaa !42
  %1286 = load i32, ptr %15, align 4, !tbaa !9
  %1287 = and i32 %1286, 1024
  %1288 = icmp ne i32 %1287, 0
  br i1 %1288, label %1289, label %1317

1289:                                             ; preds = %1283
  %1290 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1290, label %1291, label %1317

1291:                                             ; preds = %1289
  %1292 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1293 = trunc i8 %1292 to i1
  br i1 %1293, label %1317, label %1294

1294:                                             ; preds = %1291
  %1295 = load ptr, ptr %21, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.ImGuiIO, ptr %1295, i32 0, i32 41
  %1297 = load i8, ptr %1296, align 1, !tbaa !150, !range !40, !noundef !41
  %1298 = trunc i8 %1297 to i1
  br i1 %1298, label %1317, label %1299

1299:                                             ; preds = %1294
  %1300 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1301 = trunc i8 %1300 to i1
  br i1 %1301, label %1317, label %1302

1302:                                             ; preds = %1299
  %1303 = load ptr, ptr %21, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.ImGuiIO, ptr %1303, i32 0, i32 84
  call void @llvm.lifetime.start.p0(i64 2, ptr %79) #14
  store i16 9, ptr %79, align 2, !tbaa !149
  %1305 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %1304, ptr noundef nonnull align 2 dereferenceable(2) %79)
  %1306 = xor i1 %1305, true
  call void @llvm.lifetime.end.p0(i64 2, ptr %79) #14
  br i1 %1306, label %1307, label %1316

1307:                                             ; preds = %1302
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #14
  store i32 9, ptr %80, align 4, !tbaa !9
  %1308 = load i32, ptr %15, align 4, !tbaa !9
  %1309 = load ptr, ptr %16, align 8, !tbaa !5
  %1310 = load ptr, ptr %17, align 8, !tbaa !5
  %1311 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %80, i32 noundef %1308, ptr noundef %1309, ptr noundef %1310, i32 noundef 2)
  br i1 %1311, label %1312, label %1315

1312:                                             ; preds = %1307
  %1313 = load ptr, ptr %47, align 8, !tbaa !5
  %1314 = load i32, ptr %80, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1313, i32 noundef %1314)
  br label %1315

1315:                                             ; preds = %1312, %1307
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #14
  br label %1316

1316:                                             ; preds = %1315, %1302
  br label %1317

1317:                                             ; preds = %1316, %1299, %1294, %1291, %1289, %1283
  %1318 = load ptr, ptr %21, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.ImGuiIO, ptr %1318, i32 0, i32 84
  %1320 = getelementptr inbounds %struct.ImVector.5, ptr %1319, i32 0, i32 0
  %1321 = load i32, ptr %1320, align 8, !tbaa !159
  %1322 = icmp sgt i32 %1321, 0
  br i1 %1322, label %1323, label %1375

1323:                                             ; preds = %1317
  %1324 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1325 = trunc i8 %1324 to i1
  br i1 %1325, label %1372, label %1326

1326:                                             ; preds = %1323
  %1327 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1328 = trunc i8 %1327 to i1
  br i1 %1328, label %1372, label %1329

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

1332:                                             ; preds = %1329
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #14
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %1333

1333:                                             ; preds = %1368, %1332
  %1334 = load i32, ptr %81, align 4, !tbaa !9
  %1335 = load ptr, ptr %21, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.ImGuiIO, ptr %1335, i32 0, i32 84
  %1337 = getelementptr inbounds %struct.ImVector.5, ptr %1336, i32 0, i32 0
  %1338 = load i32, ptr %1337, align 8, !tbaa !159
  %1339 = icmp slt i32 %1334, %1338
  br i1 %1339, label %1341, label %1340

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

1341:                                             ; preds = %1333
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #14
  %1342 = load ptr, ptr %21, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.ImGuiIO, ptr %1342, i32 0, i32 84
  %1344 = load i32, ptr %81, align 4, !tbaa !9
  %1345 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1343, i32 noundef %1344)
  %1346 = load i16, ptr %1345, align 2, !tbaa !149
  %1347 = zext i16 %1346 to i32
  store i32 %1347, ptr %82, align 4, !tbaa !9
  %1348 = load i32, ptr %82, align 4, !tbaa !9
  %1349 = icmp eq i32 %1348, 9
  br i1 %1349, label %1350, label %1356

1350:                                             ; preds = %1341
  %1351 = load ptr, ptr %21, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.ImGuiIO, ptr %1351, i32 0, i32 41
  %1353 = load i8, ptr %1352, align 1, !tbaa !150, !range !40, !noundef !41
  %1354 = trunc i8 %1353 to i1
  br i1 %1354, label %1355, label %1356

1355:                                             ; preds = %1350
  store i32 4, ptr %19, align 4
  br label %1365

1356:                                             ; preds = %1350, %1341
  %1357 = load i32, ptr %15, align 4, !tbaa !9
  %1358 = load ptr, ptr %16, align 8, !tbaa !5
  %1359 = load ptr, ptr %17, align 8, !tbaa !5
  %1360 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %82, i32 noundef %1357, ptr noundef %1358, ptr noundef %1359, i32 noundef 2)
  br i1 %1360, label %1361, label %1364

1361:                                             ; preds = %1356
  %1362 = load ptr, ptr %47, align 8, !tbaa !5
  %1363 = load i32, ptr %82, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1362, i32 noundef %1363)
  br label %1364

1364:                                             ; preds = %1361, %1356
  store i32 0, ptr %19, align 4
  br label %1365

1365:                                             ; preds = %1364, %1355
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #14
  %1366 = load i32, ptr %19, align 4
  switch i32 %1366, label %3468 [
    i32 0, label %1367
    i32 4, label %1368
  ]

1367:                                             ; preds = %1365
  br label %1368

1368:                                             ; preds = %1367, %1365
  %1369 = load i32, ptr %81, align 4, !tbaa !9
  %1370 = add nsw i32 %1369, 1
  store i32 %1370, ptr %81, align 4, !tbaa !9
  br label %1333, !llvm.loop !160

1371:                                             ; preds = %1340
  br label %1372

1372:                                             ; preds = %1371, %1329, %1326, %1323
  %1373 = load ptr, ptr %21, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.ImGuiIO, ptr %1373, i32 0, i32 84
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1374, i32 noundef 0)
  br label %1375

1375:                                             ; preds = %1372, %1317
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #14
  br label %1376

1376:                                             ; preds = %1375, %976
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #14
  store i8 0, ptr %83, align 1, !tbaa !42
  %1377 = load ptr, ptr %20, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.ImGuiContext, ptr %1377, i32 0, i32 44
  %1379 = load i32, ptr %1378, align 4, !tbaa !104
  %1380 = load i32, ptr %29, align 4, !tbaa !9
  %1381 = icmp eq i32 %1379, %1380
  br i1 %1381, label %1382, label %2112

1382:                                             ; preds = %1376
  %1383 = load ptr, ptr %20, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.ImGuiContext, ptr %1383, i32 0, i32 47
  %1385 = load i8, ptr %1384, align 8, !tbaa !162, !range !40, !noundef !41
  %1386 = trunc i8 %1385 to i1
  br i1 %1386, label %2112, label %1387

1387:                                             ; preds = %1382
  %1388 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %1389 = trunc i8 %1388 to i1
  br i1 %1389, label %2112, label %1390

1390:                                             ; preds = %1387
  %1391 = load ptr, ptr %47, align 8, !tbaa !5
  %1392 = icmp ne ptr %1391, null
  br i1 %1392, label %1393, label %1394

1393:                                             ; preds = %1390
  br label %1396

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

1395:                                             ; No predecessors!
  br label %1396

1396:                                             ; preds = %1395, %1393
  %1397 = load ptr, ptr %21, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.ImGuiIO, ptr %1397, i32 0, i32 61
  %1399 = load i32, ptr %1398, align 8, !tbaa !163
  %1400 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %1401 = icmp eq i32 %1399, %1400
  br i1 %1401, label %1402, label %1403

1402:                                             ; preds = %1396
  br label %1403

1403:                                             ; preds = %1402, %1396
  %1404 = phi i1 [ false, %1396 ], [ true, %1402 ]
  br i1 %1404, label %1405, label %1406

1405:                                             ; preds = %1403
  br label %1408

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

1407:                                             ; No predecessors!
  br label %1408

1408:                                             ; preds = %1407, %1405
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #14
  %1409 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %1410 = load float, ptr %1409, align 4, !tbaa !91
  %1411 = load ptr, ptr %22, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.ImGuiStyle, ptr %1411, i32 0, i32 12
  %1413 = getelementptr inbounds %struct.ImVec2, ptr %1412, i32 0, i32 1
  %1414 = load float, ptr %1413, align 4, !tbaa !92
  %1415 = fsub float %1410, %1414
  %1416 = load ptr, ptr %20, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.ImGuiContext, ptr %1416, i32 0, i32 6
  %1418 = load float, ptr %1417, align 8, !tbaa !45
  %1419 = fdiv float %1415, %1418
  %1420 = fptosi float %1419 to i32
  %1421 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1420, i32 noundef 1)
  store i32 %1421, ptr %84, align 4, !tbaa !9
  %1422 = load i32, ptr %84, align 4, !tbaa !9
  %1423 = load ptr, ptr %47, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1423, i32 0, i32 11
  %1425 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1424, i32 0, i32 4
  store i32 %1422, ptr %1425, align 4, !tbaa !164
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #14
  %1426 = load ptr, ptr %21, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.ImGuiIO, ptr %1426, i32 0, i32 41
  %1428 = load i8, ptr %1427, align 1, !tbaa !150, !range !40, !noundef !41
  %1429 = trunc i8 %1428 to i1
  %1430 = zext i1 %1429 to i64
  %1431 = select i1 %1429, i32 4194304, i32 0
  store i32 %1431, ptr %85, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1432 = load ptr, ptr %21, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.ImGuiIO, ptr %1432, i32 0, i32 20
  %1434 = load i8, ptr %1433, align 1, !tbaa !147, !range !40, !noundef !41
  %1435 = trunc i8 %1434 to i1
  %1436 = zext i1 %1435 to i8
  store i8 %1436, ptr %86, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #14
  %1437 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1438 = trunc i8 %1437 to i1
  br i1 %1438, label %1439, label %1444

1439:                                             ; preds = %1408
  %1440 = load ptr, ptr %21, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.ImGuiIO, ptr %1440, i32 0, i32 61
  %1442 = load i32, ptr %1441, align 8, !tbaa !163
  %1443 = icmp eq i32 %1442, 10
  br label %1444

1444:                                             ; preds = %1439, %1408
  %1445 = phi i1 [ false, %1408 ], [ %1443, %1439 ]
  %1446 = zext i1 %1445 to i8
  store i8 %1446, ptr %87, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1447 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1448 = trunc i8 %1447 to i1
  br i1 %1448, label %1449, label %1454

1449:                                             ; preds = %1444
  %1450 = load ptr, ptr %21, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.ImGuiIO, ptr %1450, i32 0, i32 42
  %1452 = load i8, ptr %1451, align 2, !tbaa !157, !range !40, !noundef !41
  %1453 = trunc i8 %1452 to i1
  br label %1459

1454:                                             ; preds = %1444
  %1455 = load ptr, ptr %21, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.ImGuiIO, ptr %1455, i32 0, i32 40
  %1457 = load i8, ptr %1456, align 8, !tbaa !119, !range !40, !noundef !41
  %1458 = trunc i8 %1457 to i1
  br label %1459

1459:                                             ; preds = %1454, %1449
  %1460 = phi i1 [ %1453, %1449 ], [ %1458, %1454 ]
  %1461 = zext i1 %1460 to i8
  store i8 %1461, ptr %88, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1462 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1463 = trunc i8 %1462 to i1
  br i1 %1463, label %1464, label %1480

1464:                                             ; preds = %1459
  %1465 = load ptr, ptr %21, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct.ImGuiIO, ptr %1465, i32 0, i32 43
  %1467 = load i8, ptr %1466, align 1, !tbaa !158, !range !40, !noundef !41
  %1468 = trunc i8 %1467 to i1
  br i1 %1468, label %1469, label %1480

1469:                                             ; preds = %1464
  %1470 = load ptr, ptr %21, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct.ImGuiIO, ptr %1470, i32 0, i32 40
  %1472 = load i8, ptr %1471, align 8, !tbaa !119, !range !40, !noundef !41
  %1473 = trunc i8 %1472 to i1
  br i1 %1473, label %1480, label %1474

1474:                                             ; preds = %1469
  %1475 = load ptr, ptr %21, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.ImGuiIO, ptr %1475, i32 0, i32 42
  %1477 = load i8, ptr %1476, align 2, !tbaa !157, !range !40, !noundef !41
  %1478 = trunc i8 %1477 to i1
  %1479 = xor i1 %1478, true
  br label %1480

1480:                                             ; preds = %1474, %1469, %1464, %1459
  %1481 = phi i1 [ false, %1469 ], [ false, %1464 ], [ false, %1459 ], [ %1479, %1474 ]
  %1482 = zext i1 %1481 to i8
  store i8 %1482, ptr %89, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1483 = load ptr, ptr %21, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiIO, ptr %1483, i32 0, i32 61
  %1485 = load i32, ptr %1484, align 8, !tbaa !163
  %1486 = icmp eq i32 %1485, 1
  %1487 = zext i1 %1486 to i8
  store i8 %1487, ptr %90, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #14
  %1488 = load ptr, ptr %21, align 8, !tbaa !5
  %1489 = getelementptr inbounds %struct.ImGuiIO, ptr %1488, i32 0, i32 61
  %1490 = load i32, ptr %1489, align 8, !tbaa !163
  %1491 = icmp eq i32 %1490, 2
  %1492 = zext i1 %1491 to i8
  store i8 %1492, ptr %91, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #14
  %1493 = load ptr, ptr %20, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.ImGuiContext, ptr %1493, i32 0, i32 3
  %1495 = getelementptr inbounds %struct.ImGuiIO, ptr %1494, i32 0, i32 20
  %1496 = load i8, ptr %1495, align 1, !tbaa !165, !range !40, !noundef !41
  %1497 = trunc i8 %1496 to i1
  br i1 %1497, label %1498, label %1503

1498:                                             ; preds = %1480
  %1499 = load ptr, ptr %21, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.ImGuiIO, ptr %1499, i32 0, i32 61
  %1501 = load i32, ptr %1500, align 8, !tbaa !163
  %1502 = icmp eq i32 %1501, 8
  br label %1508

1503:                                             ; preds = %1480
  %1504 = load ptr, ptr %21, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.ImGuiIO, ptr %1504, i32 0, i32 61
  %1506 = load i32, ptr %1505, align 8, !tbaa !163
  %1507 = icmp eq i32 %1506, 1
  br label %1508

1508:                                             ; preds = %1503, %1498
  %1509 = phi i1 [ %1502, %1498 ], [ %1507, %1503 ]
  %1510 = zext i1 %1509 to i8
  store i8 %1510, ptr %92, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #14
  %1511 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1512 = trunc i8 %1511 to i1
  br i1 %1512, label %1513, label %1515

1513:                                             ; preds = %1508
  %1514 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %1514, label %1520, label %1515

1515:                                             ; preds = %1513, %1508
  %1516 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1517 = trunc i8 %1516 to i1
  br i1 %1517, label %1518, label %1534

1518:                                             ; preds = %1515
  %1519 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1519, label %1520, label %1534

1520:                                             ; preds = %1518, %1513
  %1521 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1522 = trunc i8 %1521 to i1
  br i1 %1522, label %1534, label %1523

1523:                                             ; preds = %1520
  %1524 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1525 = trunc i8 %1524 to i1
  br i1 %1525, label %1534, label %1526

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

1529:                                             ; preds = %1526
  %1530 = load ptr, ptr %47, align 8, !tbaa !5
  %1531 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1530)
  br label %1532

1532:                                             ; preds = %1529, %1526
  %1533 = phi i1 [ true, %1526 ], [ %1531, %1529 ]
  br label %1534

1534:                                             ; preds = %1532, %1523, %1520, %1518, %1515
  %1535 = phi i1 [ false, %1523 ], [ false, %1520 ], [ false, %1518 ], [ false, %1515 ], [ %1533, %1532 ]
  %1536 = zext i1 %1535 to i8
  store i8 %1536, ptr %93, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #14
  %1537 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1538 = trunc i8 %1537 to i1
  br i1 %1538, label %1539, label %1541

1539:                                             ; preds = %1534
  %1540 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1540, label %1546, label %1541

1541:                                             ; preds = %1539, %1534
  %1542 = load i8, ptr %90, align 1, !tbaa !42, !range !40, !noundef !41
  %1543 = trunc i8 %1542 to i1
  br i1 %1543, label %1544, label %1557

1544:                                             ; preds = %1541
  %1545 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1545, label %1546, label %1557

1546:                                             ; preds = %1544, %1539
  %1547 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1548 = trunc i8 %1547 to i1
  br i1 %1548, label %1557, label %1549

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

1552:                                             ; preds = %1549
  %1553 = load ptr, ptr %47, align 8, !tbaa !5
  %1554 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1553)
  br label %1555

1555:                                             ; preds = %1552, %1549
  %1556 = phi i1 [ true, %1549 ], [ %1554, %1552 ]
  br label %1557

1557:                                             ; preds = %1555, %1546, %1544, %1541
  %1558 = phi i1 [ false, %1546 ], [ false, %1544 ], [ false, %1541 ], [ %1556, %1555 ]
  %1559 = zext i1 %1558 to i8
  store i8 %1559, ptr %94, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #14
  %1560 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1561 = trunc i8 %1560 to i1
  br i1 %1561, label %1562, label %1564

1562:                                             ; preds = %1557
  %1563 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1563, label %1569, label %1564

1564:                                             ; preds = %1562, %1557
  %1565 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1566 = trunc i8 %1565 to i1
  br i1 %1566, label %1567, label %1573

1567:                                             ; preds = %1564
  %1568 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1568, label %1569, label %1573

1569:                                             ; preds = %1567, %1562
  %1570 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1571 = trunc i8 %1570 to i1
  %1572 = xor i1 %1571, true
  br label %1573

1573:                                             ; preds = %1569, %1567, %1564
  %1574 = phi i1 [ false, %1567 ], [ false, %1564 ], [ %1572, %1569 ]
  %1575 = zext i1 %1574 to i8
  store i8 %1575, ptr %95, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #14
  %1576 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1577 = trunc i8 %1576 to i1
  br i1 %1577, label %1578, label %1586

1578:                                             ; preds = %1573
  %1579 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1579, label %1580, label %1586

1580:                                             ; preds = %1578
  %1581 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1582 = trunc i8 %1581 to i1
  br i1 %1582, label %1586, label %1583

1583:                                             ; preds = %1580
  %1584 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1585 = trunc i8 %1584 to i1
  br label %1586

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

1591:                                             ; preds = %1586
  %1592 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1592, label %1598, label %1593

1593:                                             ; preds = %1591, %1586
  %1594 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1595 = trunc i8 %1594 to i1
  br i1 %1595, label %1596, label %1604

1596:                                             ; preds = %1593
  %1597 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1597, label %1598, label %1604

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

1601:                                             ; preds = %1598
  %1602 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1603 = trunc i8 %1602 to i1
  br label %1604

1604:                                             ; preds = %1601, %1598, %1596, %1593
  %1605 = phi i1 [ false, %1598 ], [ false, %1596 ], [ false, %1593 ], [ %1603, %1601 ]
  %1606 = zext i1 %1605 to i8
  store i8 %1606, ptr %97, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #14
  %1607 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1607, label %1610, label %1608

1608:                                             ; preds = %1604
  %1609 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br label %1610

1610:                                             ; preds = %1608, %1604
  %1611 = phi i1 [ true, %1604 ], [ %1609, %1608 ]
  %1612 = zext i1 %1611 to i8
  store i8 %1612, ptr %98, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #14
  %1613 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 0, i32 noundef 1)
  br i1 %1613, label %1614, label %1616

1614:                                             ; preds = %1610
  %1615 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 12, i1 noundef zeroext true)
  br i1 %1615, label %1616, label %1618

1616:                                             ; preds = %1614, %1610
  %1617 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 2, i32 noundef 1)
  br label %1618

1618:                                             ; preds = %1616, %1614
  %1619 = phi i1 [ true, %1614 ], [ %1617, %1616 ]
  %1620 = zext i1 %1619 to i8
  store i8 %1620, ptr %99, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #14
  %1621 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1621, label %1624, label %1622

1622:                                             ; preds = %1618
  %1623 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 1, i32 noundef 1)
  br label %1624

1624:                                             ; preds = %1622, %1618
  %1625 = phi i1 [ true, %1618 ], [ %1623, %1622 ]
  %1626 = zext i1 %1625 to i8
  store i8 %1626, ptr %100, align 1, !tbaa !42
  %1627 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1627, label %1628, label %1642

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

1632:                                             ; preds = %1628
  br label %1638

1633:                                             ; preds = %1628
  %1634 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1635 = trunc i8 %1634 to i1
  %1636 = zext i1 %1635 to i64
  %1637 = select i1 %1635, i32 2097164, i32 2097152
  br label %1638

1638:                                             ; preds = %1633, %1632
  %1639 = phi i32 [ 2097156, %1632 ], [ %1637, %1633 ]
  %1640 = load i32, ptr %85, align 4, !tbaa !9
  %1641 = or i32 %1639, %1640
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1629, i32 noundef %1641)
  br label %2097

1642:                                             ; preds = %1624
  %1643 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1643, label %1644, label %1658

1644:                                             ; preds = %1642
  %1645 = load ptr, ptr %47, align 8, !tbaa !5
  %1646 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1647 = trunc i8 %1646 to i1
  br i1 %1647, label %1648, label %1649

1648:                                             ; preds = %1644
  br label %1654

1649:                                             ; preds = %1644
  %1650 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1651 = trunc i8 %1650 to i1
  %1652 = zext i1 %1651 to i64
  %1653 = select i1 %1651, i32 2097165, i32 2097153
  br label %1654

1654:                                             ; preds = %1649, %1648
  %1655 = phi i32 [ 2097157, %1648 ], [ %1653, %1649 ]
  %1656 = load i32, ptr %85, align 4, !tbaa !9
  %1657 = or i32 %1655, %1656
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1645, i32 noundef %1657)
  br label %2096

1658:                                             ; preds = %1642
  %1659 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1659, label %1660, label %1688

1660:                                             ; preds = %1658
  %1661 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1662 = trunc i8 %1661 to i1
  br i1 %1662, label %1663, label %1688

1663:                                             ; preds = %1660
  %1664 = load ptr, ptr %21, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct.ImGuiIO, ptr %1664, i32 0, i32 40
  %1666 = load i8, ptr %1665, align 8, !tbaa !119, !range !40, !noundef !41
  %1667 = trunc i8 %1666 to i1
  br i1 %1667, label %1668, label %1679

1668:                                             ; preds = %1663
  %1669 = load ptr, ptr %38, align 8, !tbaa !5
  %1670 = load ptr, ptr %38, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.ImGuiWindow, ptr %1670, i32 0, i32 15
  %1672 = getelementptr inbounds %struct.ImVec2, ptr %1671, i32 0, i32 1
  %1673 = load float, ptr %1672, align 4, !tbaa !109
  %1674 = load ptr, ptr %20, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.ImGuiContext, ptr %1674, i32 0, i32 6
  %1676 = load float, ptr %1675, align 8, !tbaa !45
  %1677 = fsub float %1673, %1676
  %1678 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1677, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1669, float noundef %1678)
  br label %1687

1679:                                             ; preds = %1663
  %1680 = load ptr, ptr %47, align 8, !tbaa !5
  %1681 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1682 = trunc i8 %1681 to i1
  %1683 = zext i1 %1682 to i64
  %1684 = select i1 %1682, i32 2097158, i32 2097154
  %1685 = load i32, ptr %85, align 4, !tbaa !9
  %1686 = or i32 %1684, %1685
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1680, i32 noundef %1686)
  br label %1687

1687:                                             ; preds = %1679, %1668
  br label %2095

1688:                                             ; preds = %1660, %1658
  %1689 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1689, label %1690, label %1719

1690:                                             ; preds = %1688
  %1691 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1692 = trunc i8 %1691 to i1
  br i1 %1692, label %1693, label %1719

1693:                                             ; preds = %1690
  %1694 = load ptr, ptr %21, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.ImGuiIO, ptr %1694, i32 0, i32 40
  %1696 = load i8, ptr %1695, align 8, !tbaa !119, !range !40, !noundef !41
  %1697 = trunc i8 %1696 to i1
  br i1 %1697, label %1698, label %1710

1698:                                             ; preds = %1693
  %1699 = load ptr, ptr %38, align 8, !tbaa !5
  %1700 = load ptr, ptr %38, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.ImGuiWindow, ptr %1700, i32 0, i32 15
  %1702 = getelementptr inbounds %struct.ImVec2, ptr %1701, i32 0, i32 1
  %1703 = load float, ptr %1702, align 4, !tbaa !109
  %1704 = load ptr, ptr %20, align 8, !tbaa !5
  %1705 = getelementptr inbounds %struct.ImGuiContext, ptr %1704, i32 0, i32 6
  %1706 = load float, ptr %1705, align 8, !tbaa !45
  %1707 = fadd float %1703, %1706
  %1708 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1709 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1707, float noundef %1708)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1699, float noundef %1709)
  br label %1718

1710:                                             ; preds = %1693
  %1711 = load ptr, ptr %47, align 8, !tbaa !5
  %1712 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1713 = trunc i8 %1712 to i1
  %1714 = zext i1 %1713 to i64
  %1715 = select i1 %1713, i32 2097159, i32 2097155
  %1716 = load i32, ptr %85, align 4, !tbaa !9
  %1717 = or i32 %1715, %1716
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1711, i32 noundef %1717)
  br label %1718

1718:                                             ; preds = %1710, %1698
  br label %2094

1719:                                             ; preds = %1690, %1688
  %1720 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 5, i1 noundef zeroext true)
  br i1 %1720, label %1721, label %1736

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

1724:                                             ; preds = %1721
  %1725 = load ptr, ptr %47, align 8, !tbaa !5
  %1726 = load i32, ptr %85, align 4, !tbaa !9
  %1727 = or i32 2097166, %1726
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1725, i32 noundef %1727)
  %1728 = load i32, ptr %84, align 4, !tbaa !9
  %1729 = sitofp i32 %1728 to float
  %1730 = load ptr, ptr %20, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.ImGuiContext, ptr %1730, i32 0, i32 6
  %1732 = load float, ptr %1731, align 8, !tbaa !45
  %1733 = load float, ptr %55, align 4, !tbaa !44
  %1734 = fneg float %1729
  %1735 = call float @llvm.fmuladd.f32(float %1734, float %1732, float %1733)
  store float %1735, ptr %55, align 4, !tbaa !44
  br label %2093

1736:                                             ; preds = %1721, %1719
  %1737 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 6, i1 noundef zeroext true)
  br i1 %1737, label %1738, label %1752

1738:                                             ; preds = %1736
  %1739 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1740 = trunc i8 %1739 to i1
  br i1 %1740, label %1741, label %1752

1741:                                             ; preds = %1738
  %1742 = load ptr, ptr %47, align 8, !tbaa !5
  %1743 = load i32, ptr %85, align 4, !tbaa !9
  %1744 = or i32 2097167, %1743
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1742, i32 noundef %1744)
  %1745 = load i32, ptr %84, align 4, !tbaa !9
  %1746 = sitofp i32 %1745 to float
  %1747 = load ptr, ptr %20, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.ImGuiContext, ptr %1747, i32 0, i32 6
  %1749 = load float, ptr %1748, align 8, !tbaa !45
  %1750 = load float, ptr %55, align 4, !tbaa !44
  %1751 = call float @llvm.fmuladd.f32(float %1746, float %1749, float %1750)
  store float %1751, ptr %55, align 4, !tbaa !44
  br label %2092

1752:                                             ; preds = %1738, %1736
  %1753 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1753, label %1754, label %1768

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

1760:                                             ; preds = %1754
  %1761 = load i32, ptr %85, align 4, !tbaa !9
  %1762 = or i32 2097158, %1761
  br label %1766

1763:                                             ; preds = %1754
  %1764 = load i32, ptr %85, align 4, !tbaa !9
  %1765 = or i32 2097156, %1764
  br label %1766

1766:                                             ; preds = %1763, %1760
  %1767 = phi i32 [ %1762, %1760 ], [ %1765, %1763 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1755, i32 noundef %1767)
  br label %2091

1768:                                             ; preds = %1752
  %1769 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1769, label %1770, label %1784

1770:                                             ; preds = %1768
  %1771 = load ptr, ptr %47, align 8, !tbaa !5
  %1772 = load ptr, ptr %21, align 8, !tbaa !5
  %1773 = getelementptr inbounds %struct.ImGuiIO, ptr %1772, i32 0, i32 40
  %1774 = load i8, ptr %1773, align 8, !tbaa !119, !range !40, !noundef !41
  %1775 = trunc i8 %1774 to i1
  br i1 %1775, label %1776, label %1779

1776:                                             ; preds = %1770
  %1777 = load i32, ptr %85, align 4, !tbaa !9
  %1778 = or i32 2097159, %1777
  br label %1782

1779:                                             ; preds = %1770
  %1780 = load i32, ptr %85, align 4, !tbaa !9
  %1781 = or i32 2097157, %1780
  br label %1782

1782:                                             ; preds = %1779, %1776
  %1783 = phi i32 [ %1778, %1776 ], [ %1781, %1779 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1771, i32 noundef %1783)
  br label %2090

1784:                                             ; preds = %1768
  %1785 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1785, label %1786, label %1796

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

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

1792:                                             ; preds = %1789
  %1793 = load ptr, ptr %47, align 8, !tbaa !5
  %1794 = load i32, ptr %85, align 4, !tbaa !9
  %1795 = or i32 2097160, %1794
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1793, i32 noundef %1795)
  br label %2089

1796:                                             ; preds = %1789, %1786, %1784
  %1797 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1797, label %1798, label %1835

1798:                                             ; preds = %1796
  %1799 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1800 = trunc i8 %1799 to i1
  br i1 %1800, label %1835, label %1801

1801:                                             ; preds = %1798
  %1802 = load ptr, ptr %47, align 8, !tbaa !5
  %1803 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1802)
  br i1 %1803, label %1831, label %1804

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

1807:                                             ; preds = %1804
  %1808 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1808, i32 noundef 6291468)
  br label %1830

1809:                                             ; preds = %1804
  %1810 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1811 = trunc i8 %1810 to i1
  br i1 %1811, label %1812, label %1829

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

1817:                                             ; preds = %1812
  %1818 = load ptr, ptr %21, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.ImGuiIO, ptr %1818, i32 0, i32 42
  %1820 = load i8, ptr %1819, align 2, !tbaa !157, !range !40, !noundef !41
  %1821 = trunc i8 %1820 to i1
  br i1 %1821, label %1829, label %1822

1822:                                             ; preds = %1817
  %1823 = load ptr, ptr %21, align 8, !tbaa !5
  %1824 = getelementptr inbounds %struct.ImGuiIO, ptr %1823, i32 0, i32 40
  %1825 = load i8, ptr %1824, align 8, !tbaa !119, !range !40, !noundef !41
  %1826 = trunc i8 %1825 to i1
  br i1 %1826, label %1829, label %1827

1827:                                             ; preds = %1822
  %1828 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1828, i32 noundef 6291460)
  br label %1829

1829:                                             ; preds = %1827, %1822, %1817, %1812, %1809
  br label %1830

1830:                                             ; preds = %1829, %1807
  br label %1831

1831:                                             ; preds = %1830, %1801
  %1832 = load ptr, ptr %47, align 8, !tbaa !5
  %1833 = load i32, ptr %85, align 4, !tbaa !9
  %1834 = or i32 2097161, %1833
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1832, i32 noundef %1834)
  br label %2088

1835:                                             ; preds = %1798, %1796
  %1836 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1837 = trunc i8 %1836 to i1
  br i1 %1837, label %1838, label %1876

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

1845:                                             ; preds = %1838
  %1846 = load i8, ptr %101, align 1, !tbaa !42, !range !40, !noundef !41
  %1847 = trunc i8 %1846 to i1
  br i1 %1847, label %1848, label %1853

1848:                                             ; preds = %1845
  %1849 = load ptr, ptr %21, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.ImGuiIO, ptr %1849, i32 0, i32 40
  %1851 = load i8, ptr %1850, align 8, !tbaa !119, !range !40, !noundef !41
  %1852 = trunc i8 %1851 to i1
  br i1 %1852, label %1853, label %1861

1853:                                             ; preds = %1848, %1845
  %1854 = load i8, ptr %101, align 1, !tbaa !42, !range !40, !noundef !41
  %1855 = trunc i8 %1854 to i1
  br i1 %1855, label %1862, label %1856

1856:                                             ; preds = %1853
  %1857 = load ptr, ptr %21, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.ImGuiIO, ptr %1857, i32 0, i32 40
  %1859 = load i8, ptr %1858, align 8, !tbaa !119, !range !40, !noundef !41
  %1860 = trunc i8 %1859 to i1
  br i1 %1860, label %1861, label %1862

1861:                                             ; preds = %1856, %1848, %1838
  store i8 1, ptr %53, align 1, !tbaa !42
  store i8 1, ptr %65, align 1, !tbaa !42
  br label %1875

1862:                                             ; preds = %1856, %1853
  %1863 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1864 = trunc i8 %1863 to i1
  br i1 %1864, label %1874, label %1865

1865:                                             ; preds = %1862
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #14
  store i32 10, ptr %102, align 4, !tbaa !9
  %1866 = load i32, ptr %15, align 4, !tbaa !9
  %1867 = load ptr, ptr %16, align 8, !tbaa !5
  %1868 = load ptr, ptr %17, align 8, !tbaa !5
  %1869 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %102, i32 noundef %1866, ptr noundef %1867, ptr noundef %1868, i32 noundef 2)
  br i1 %1869, label %1870, label %1873

1870:                                             ; preds = %1865
  %1871 = load ptr, ptr %47, align 8, !tbaa !5
  %1872 = load i32, ptr %102, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1871, i32 noundef %1872)
  br label %1873

1873:                                             ; preds = %1870, %1865
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #14
  br label %1874

1874:                                             ; preds = %1873, %1862
  br label %1875

1875:                                             ; preds = %1874, %1861
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #14
  br label %2087

1876:                                             ; preds = %1835
  %1877 = load i8, ptr %99, align 1, !tbaa !42, !range !40, !noundef !41
  %1878 = trunc i8 %1877 to i1
  br i1 %1878, label %1879, label %1887

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

1883:                                             ; preds = %1879
  br label %1886

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

1885:                                             ; No predecessors!
  br label %1886

1886:                                             ; preds = %1885, %1883
  store i8 1, ptr %53, align 1, !tbaa !42
  store i8 1, ptr %65, align 1, !tbaa !42
  br label %2086

1887:                                             ; preds = %1876
  %1888 = load i8, ptr %100, align 1, !tbaa !42, !range !40, !noundef !41
  %1889 = trunc i8 %1888 to i1
  br i1 %1889, label %1890, label %1891

1890:                                             ; preds = %1887
  store i8 1, ptr %83, align 1, !tbaa !42
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %2085

1891:                                             ; preds = %1887
  %1892 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1893 = trunc i8 %1892 to i1
  br i1 %1893, label %1897, label %1894

1894:                                             ; preds = %1891
  %1895 = load i8, ptr %97, align 1, !tbaa !42, !range !40, !noundef !41
  %1896 = trunc i8 %1895 to i1
  br i1 %1896, label %1897, label %1904

1897:                                             ; preds = %1894, %1891
  %1898 = load ptr, ptr %47, align 8, !tbaa !5
  %1899 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1900 = trunc i8 %1899 to i1
  %1901 = zext i1 %1900 to i64
  %1902 = select i1 %1900, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1898, i32 noundef %1902)
  %1903 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1903)
  br label %2084

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

1907:                                             ; preds = %1904
  %1908 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1908, label %1909, label %1913

1909:                                             ; preds = %1907
  %1910 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %1910)
  %1911 = load ptr, ptr %47, align 8, !tbaa !5
  %1912 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1911, i32 0, i32 13
  store i8 1, ptr %1912, align 4, !tbaa !154
  br label %2083

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

1916:                                             ; preds = %1913
  %1917 = load i8, ptr %94, align 1, !tbaa !42, !range !40, !noundef !41
  %1918 = trunc i8 %1917 to i1
  br i1 %1918, label %1919, label %2013

1919:                                             ; preds = %1916, %1913
  %1920 = load ptr, ptr %21, align 8, !tbaa !5
  %1921 = getelementptr inbounds %struct.ImGuiIO, ptr %1920, i32 0, i32 32
  %1922 = load ptr, ptr %1921, align 8, !tbaa !166
  %1923 = icmp ne ptr %1922, null
  br i1 %1923, label %1924, label %1997

1924:                                             ; preds = %1919
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #14
  %1925 = load ptr, ptr %47, align 8, !tbaa !5
  %1926 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1925)
  br i1 %1926, label %1927, label %1937

1927:                                             ; preds = %1924
  %1928 = load ptr, ptr %47, align 8, !tbaa !5
  %1929 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1928, i32 0, i32 11
  %1930 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1929, i32 0, i32 1
  %1931 = load i32, ptr %1930, align 4, !tbaa !152
  %1932 = load ptr, ptr %47, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1932, i32 0, i32 11
  %1934 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1933, i32 0, i32 2
  %1935 = load i32, ptr %1934, align 4, !tbaa !153
  %1936 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1931, i32 noundef %1935)
  br label %1938

1937:                                             ; preds = %1924
  br label %1938

1938:                                             ; preds = %1937, %1927
  %1939 = phi i32 [ %1936, %1927 ], [ 0, %1937 ]
  store i32 %1939, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #14
  %1940 = load ptr, ptr %47, align 8, !tbaa !5
  %1941 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1940)
  br i1 %1941, label %1942, label %1952

1942:                                             ; preds = %1938
  %1943 = load ptr, ptr %47, align 8, !tbaa !5
  %1944 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1943, i32 0, i32 11
  %1945 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1944, i32 0, i32 1
  %1946 = load i32, ptr %1945, align 4, !tbaa !152
  %1947 = load ptr, ptr %47, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1947, i32 0, i32 11
  %1949 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1948, i32 0, i32 2
  %1950 = load i32, ptr %1949, align 4, !tbaa !153
  %1951 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1946, i32 noundef %1950)
  br label %1956

1952:                                             ; preds = %1938
  %1953 = load ptr, ptr %47, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1953, i32 0, i32 1
  %1955 = load i32, ptr %1954, align 4, !tbaa !114
  br label %1956

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

1997:                                             ; preds = %1956, %1919
  %1998 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1999 = trunc i8 %1998 to i1
  br i1 %1999, label %2000, label %2012

2000:                                             ; preds = %1997
  %2001 = load ptr, ptr %47, align 8, !tbaa !5
  %2002 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %2001)
  br i1 %2002, label %2005, label %2003

2003:                                             ; preds = %2000
  %2004 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %2004)
  br label %2005

2005:                                             ; preds = %2003, %2000
  %2006 = load ptr, ptr %47, align 8, !tbaa !5
  %2007 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2006, i32 0, i32 13
  store i8 1, ptr %2007, align 4, !tbaa !154
  %2008 = load ptr, ptr %47, align 8, !tbaa !5
  %2009 = load ptr, ptr %47, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2009, i32 0, i32 11
  %2011 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %2008, ptr noundef %2010)
  br label %2012

2012:                                             ; preds = %2005, %1997
  br label %2082

2013:                                             ; preds = %1916
  %2014 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %2015 = trunc i8 %2014 to i1
  br i1 %2015, label %2016, label %2081

2016:                                             ; preds = %2013
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #14
  %2017 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %2017, ptr %107, align 8, !tbaa !5
  %2018 = load ptr, ptr %107, align 8, !tbaa !5
  %2019 = icmp ne ptr %2018, null
  br i1 %2019, label %2020, label %2080

2020:                                             ; preds = %2016
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #14
  %2021 = load ptr, ptr %107, align 8, !tbaa !5
  %2022 = call i64 @strlen(ptr noundef %2021) #16
  %2023 = trunc i64 %2022 to i32
  store i32 %2023, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #14
  %2024 = load i32, ptr %108, align 4, !tbaa !9
  %2025 = add nsw i32 %2024, 1
  %2026 = sext i32 %2025 to i64
  %2027 = mul i64 %2026, 2
  %2028 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %2027)
  store ptr %2028, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #14
  store i32 0, ptr %110, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #14
  %2029 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %2029, ptr %111, align 8, !tbaa !5
  br label %2030

2030:                                             ; preds = %2060, %2058, %2020
  %2031 = load ptr, ptr %111, align 8, !tbaa !5
  %2032 = load i8, ptr %2031, align 1, !tbaa !126
  %2033 = icmp ne i8 %2032, 0
  br i1 %2033, label %2035, label %2034

2034:                                             ; preds = %2030
  store i32 5, ptr %19, align 4
  br label %2061

2035:                                             ; preds = %2030
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #14
  %2036 = load ptr, ptr %111, align 8, !tbaa !5
  %2037 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %112, ptr noundef %2036, ptr noundef null)
  %2038 = load ptr, ptr %111, align 8, !tbaa !5
  %2039 = sext i32 %2037 to i64
  %2040 = getelementptr inbounds i8, ptr %2038, i64 %2039
  store ptr %2040, ptr %111, align 8, !tbaa !5
  %2041 = load i32, ptr %112, align 4, !tbaa !9
  %2042 = icmp eq i32 %2041, 0
  br i1 %2042, label %2043, label %2044

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

2044:                                             ; preds = %2035
  %2045 = load i32, ptr %15, align 4, !tbaa !9
  %2046 = load ptr, ptr %16, align 8, !tbaa !5
  %2047 = load ptr, ptr %17, align 8, !tbaa !5
  %2048 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %112, i32 noundef %2045, ptr noundef %2046, ptr noundef %2047, i32 noundef 5)
  br i1 %2048, label %2050, label %2049

2049:                                             ; preds = %2044
  store i32 6, ptr %19, align 4
  br label %2058, !llvm.loop !167

2050:                                             ; preds = %2044
  %2051 = load i32, ptr %112, align 4, !tbaa !9
  %2052 = trunc i32 %2051 to i16
  %2053 = load ptr, ptr %109, align 8, !tbaa !5
  %2054 = load i32, ptr %110, align 4, !tbaa !9
  %2055 = add nsw i32 %2054, 1
  store i32 %2055, ptr %110, align 4, !tbaa !9
  %2056 = sext i32 %2054 to i64
  %2057 = getelementptr inbounds i16, ptr %2053, i64 %2056
  store i16 %2052, ptr %2057, align 2, !tbaa !149
  store i32 0, ptr %19, align 4
  br label %2058

2058:                                             ; preds = %2050, %2049, %2043
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #14
  %2059 = load i32, ptr %19, align 4
  switch i32 %2059, label %2061 [
    i32 0, label %2060
    i32 6, label %2030
  ]

2060:                                             ; preds = %2058
  br label %2030, !llvm.loop !167

2061:                                             ; preds = %2058, %2034
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #14
  br label %2062

2062:                                             ; preds = %2061
  %2063 = load ptr, ptr %109, align 8, !tbaa !5
  %2064 = load i32, ptr %110, align 4, !tbaa !9
  %2065 = sext i32 %2064 to i64
  %2066 = getelementptr inbounds i16, ptr %2063, i64 %2065
  store i16 0, ptr %2066, align 2, !tbaa !149
  %2067 = load i32, ptr %110, align 4, !tbaa !9
  %2068 = icmp sgt i32 %2067, 0
  br i1 %2068, label %2069, label %2078

2069:                                             ; preds = %2062
  %2070 = load ptr, ptr %47, align 8, !tbaa !5
  %2071 = load ptr, ptr %47, align 8, !tbaa !5
  %2072 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2071, i32 0, i32 11
  %2073 = load ptr, ptr %109, align 8, !tbaa !5
  %2074 = load i32, ptr %110, align 4, !tbaa !9
  %2075 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2070, ptr noundef %2072, ptr noundef %2073, i32 noundef %2074)
  %2076 = load ptr, ptr %47, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2076, i32 0, i32 13
  store i8 1, ptr %2077, align 4, !tbaa !154
  br label %2078

2078:                                             ; preds = %2069, %2062
  %2079 = load ptr, ptr %109, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2079)
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #14
  br label %2080

2080:                                             ; preds = %2078, %2016
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #14
  br label %2081

2081:                                             ; preds = %2080, %2013
  br label %2082

2082:                                             ; preds = %2081, %2012
  br label %2083

2083:                                             ; preds = %2082, %1909
  br label %2084

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

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

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

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

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

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

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

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

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

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

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

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

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

2097:                                             ; preds = %2096, %1638
  %2098 = load ptr, ptr %47, align 8, !tbaa !5
  %2099 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %2098)
  br i1 %2099, label %2100, label %2103

2100:                                             ; preds = %2097
  %2101 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2102 = trunc i8 %2101 to i1
  br label %2103

2103:                                             ; preds = %2100, %2097
  %2104 = phi i1 [ false, %2097 ], [ %2102, %2100 ]
  %2105 = zext i1 %2104 to i32
  %2106 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2107 = trunc i8 %2106 to i1
  %2108 = zext i1 %2107 to i32
  %2109 = or i32 %2108, %2105
  %2110 = icmp ne i32 %2109, 0
  %2111 = zext i1 %2110 to i8
  store i8 %2111, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #14
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #14
  br label %2112

2112:                                             ; preds = %2103, %1387, %1382, %1376
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #14
  store ptr null, ptr %113, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #14
  store i32 0, ptr %114, align 4, !tbaa !9
  %2113 = load ptr, ptr %20, align 8, !tbaa !5
  %2114 = getelementptr inbounds %struct.ImGuiContext, ptr %2113, i32 0, i32 44
  %2115 = load i32, ptr %2114, align 4, !tbaa !104
  %2116 = load i32, ptr %29, align 4, !tbaa !9
  %2117 = icmp eq i32 %2115, %2116
  br i1 %2117, label %2118, label %2565

2118:                                             ; preds = %2112
  %2119 = load ptr, ptr %47, align 8, !tbaa !5
  %2120 = icmp ne ptr %2119, null
  br i1 %2120, label %2121, label %2122

2121:                                             ; preds = %2118
  br label %2124

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

2123:                                             ; No predecessors!
  br label %2124

2124:                                             ; preds = %2123, %2121
  %2125 = load i8, ptr %83, align 1, !tbaa !42, !range !40, !noundef !41
  %2126 = trunc i8 %2125 to i1
  br i1 %2126, label %2127, label %2192

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

2130:                                             ; preds = %2127
  %2131 = load ptr, ptr %12, align 8, !tbaa !5
  %2132 = load ptr, ptr %47, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2132, i32 0, i32 6
  %2134 = getelementptr inbounds %struct.ImVector.27, ptr %2133, i32 0, i32 2
  %2135 = load ptr, ptr %2134, align 8, !tbaa !111
  %2136 = call i32 @strcmp(ptr noundef %2131, ptr noundef %2135) #16
  %2137 = icmp ne i32 %2136, 0
  br i1 %2137, label %2138, label %2191

2138:                                             ; preds = %2130
  %2139 = load ptr, ptr %47, align 8, !tbaa !5
  %2140 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2139, i32 0, i32 6
  %2141 = getelementptr inbounds %struct.ImVector.27, ptr %2140, i32 0, i32 2
  %2142 = load ptr, ptr %2141, align 8, !tbaa !111
  store ptr %2142, ptr %113, align 8, !tbaa !5
  %2143 = load ptr, ptr %47, align 8, !tbaa !5
  %2144 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2143, i32 0, i32 6
  %2145 = getelementptr inbounds %struct.ImVector.27, ptr %2144, i32 0, i32 0
  %2146 = load i32, ptr %2145, align 8, !tbaa !168
  %2147 = sub nsw i32 %2146, 1
  store i32 %2147, ptr %114, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %115) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115)
  %2148 = load i32, ptr %114, align 4, !tbaa !9
  %2149 = icmp sgt i32 %2148, 0
  br i1 %2149, label %2150, label %2175

2150:                                             ; preds = %2138
  %2151 = load ptr, ptr %113, align 8, !tbaa !5
  %2152 = load ptr, ptr %113, align 8, !tbaa !5
  %2153 = load i32, ptr %114, align 4, !tbaa !9
  %2154 = sext i32 %2153 to i64
  %2155 = getelementptr inbounds i8, ptr %2152, i64 %2154
  %2156 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2151, ptr noundef %2155)
          to label %2157 unwind label %2171

2157:                                             ; preds = %2150
  %2158 = add nsw i32 %2156, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %115, i32 noundef %2158)
          to label %2159 unwind label %2171

2159:                                             ; preds = %2157
  %2160 = getelementptr inbounds %struct.ImVector.5, ptr %115, i32 0, i32 2
  %2161 = load ptr, ptr %2160, align 8, !tbaa !169
  %2162 = getelementptr inbounds %struct.ImVector.5, ptr %115, i32 0, i32 0
  %2163 = load i32, ptr %2162, align 8, !tbaa !170
  %2164 = load ptr, ptr %113, align 8, !tbaa !5
  %2165 = load ptr, ptr %113, align 8, !tbaa !5
  %2166 = load i32, ptr %114, align 4, !tbaa !9
  %2167 = sext i32 %2166 to i64
  %2168 = getelementptr inbounds i8, ptr %2165, i64 %2167
  %2169 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2161, i32 noundef %2163, ptr noundef %2164, ptr noundef %2168, ptr noundef null)
          to label %2170 unwind label %2171

2170:                                             ; preds = %2159
  br label %2175

2171:                                             ; preds = %2188, %2159, %2157, %2150
  %2172 = landingpad { ptr, i32 }
          cleanup
  %2173 = extractvalue { ptr, i32 } %2172, 0
  store ptr %2173, ptr %116, align 8
  %2174 = extractvalue { ptr, i32 } %2172, 1
  store i32 %2174, ptr %117, align 4
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 60, ptr %41) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  br label %3463

2175:                                             ; preds = %2170, %2138
  %2176 = load ptr, ptr %47, align 8, !tbaa !5
  %2177 = load ptr, ptr %47, align 8, !tbaa !5
  %2178 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2177, i32 0, i32 11
  %2179 = getelementptr inbounds %struct.ImVector.5, ptr %115, i32 0, i32 2
  %2180 = load ptr, ptr %2179, align 8, !tbaa !169
  %2181 = load i32, ptr %114, align 4, !tbaa !9
  %2182 = icmp sgt i32 %2181, 0
  br i1 %2182, label %2183, label %2187

2183:                                             ; preds = %2175
  %2184 = getelementptr inbounds %struct.ImVector.5, ptr %115, i32 0, i32 0
  %2185 = load i32, ptr %2184, align 8, !tbaa !170
  %2186 = sub nsw i32 %2185, 1
  br label %2188

2187:                                             ; preds = %2175
  br label %2188

2188:                                             ; preds = %2187, %2183
  %2189 = phi i32 [ %2186, %2183 ], [ 0, %2187 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2176, ptr noundef %2178, ptr noundef %2180, i32 noundef %2189)
          to label %2190 unwind label %2171

2190:                                             ; preds = %2188
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #14
  br label %2191

2191:                                             ; preds = %2190, %2130, %2127
  br label %2192

2192:                                             ; preds = %2191, %2124
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #14
  %2193 = load i8, ptr %83, align 1, !tbaa !42, !range !40, !noundef !41
  %2194 = trunc i8 %2193 to i1
  br i1 %2194, label %2195, label %2204

2195:                                             ; preds = %2192
  %2196 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %2197 = trunc i8 %2196 to i1
  br i1 %2197, label %2198, label %2202

2198:                                             ; preds = %2195
  %2199 = load i32, ptr %15, align 4, !tbaa !9
  %2200 = and i32 %2199, 32
  %2201 = icmp ne i32 %2200, 0
  br label %2202

2202:                                             ; preds = %2198, %2195
  %2203 = phi i1 [ false, %2195 ], [ %2201, %2198 ]
  br label %2204

2204:                                             ; preds = %2202, %2192
  %2205 = phi i1 [ true, %2192 ], [ %2203, %2202 ]
  %2206 = zext i1 %2205 to i8
  store i8 %2206, ptr %118, align 1, !tbaa !42
  %2207 = load i8, ptr %118, align 1, !tbaa !42, !range !40, !noundef !41
  %2208 = trunc i8 %2207 to i1
  br i1 %2208, label %2209, label %2562

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

2212:                                             ; preds = %2209
  %2213 = load ptr, ptr %47, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2213, i32 0, i32 7
  store i8 1, ptr %2214, align 8, !tbaa !112
  %2215 = load ptr, ptr %47, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2215, i32 0, i32 5
  %2217 = load ptr, ptr %47, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2217, i32 0, i32 4
  %2219 = getelementptr inbounds %struct.ImVector.5, ptr %2218, i32 0, i32 0
  %2220 = load i32, ptr %2219, align 8, !tbaa !124
  %2221 = mul nsw i32 %2220, 4
  %2222 = add nsw i32 %2221, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2216, i32 noundef %2222)
  %2223 = load ptr, ptr %47, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2223, i32 0, i32 5
  %2225 = getelementptr inbounds %struct.ImVector.27, ptr %2224, i32 0, i32 2
  %2226 = load ptr, ptr %2225, align 8, !tbaa !125
  %2227 = load ptr, ptr %47, align 8, !tbaa !5
  %2228 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2227, i32 0, i32 5
  %2229 = getelementptr inbounds %struct.ImVector.27, ptr %2228, i32 0, i32 0
  %2230 = load i32, ptr %2229, align 8, !tbaa !171
  %2231 = load ptr, ptr %47, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2231, i32 0, i32 4
  %2233 = getelementptr inbounds %struct.ImVector.5, ptr %2232, i32 0, i32 2
  %2234 = load ptr, ptr %2233, align 8, !tbaa !113
  %2235 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2226, i32 noundef %2230, ptr noundef %2234, ptr noundef null)
  br label %2236

2236:                                             ; preds = %2212, %2209
  %2237 = load i32, ptr %15, align 4, !tbaa !9
  %2238 = and i32 %2237, 524736
  %2239 = icmp ne i32 %2238, 0
  br i1 %2239, label %2240, label %2542

2240:                                             ; preds = %2236
  %2241 = load ptr, ptr %16, align 8, !tbaa !5
  %2242 = icmp ne ptr %2241, null
  br i1 %2242, label %2243, label %2244

2243:                                             ; preds = %2240
  br label %2246

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

2245:                                             ; No predecessors!
  br label %2246

2246:                                             ; preds = %2245, %2243
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #14
  store i32 0, ptr %119, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #14
  store i32 22, ptr %120, align 4, !tbaa !9
  %2247 = load i32, ptr %15, align 4, !tbaa !9
  %2248 = and i32 %2247, 64
  %2249 = icmp ne i32 %2248, 0
  br i1 %2249, label %2250, label %2253

2250:                                             ; preds = %2246
  %2251 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %2251, label %2252, label %2253

2252:                                             ; preds = %2250
  store i32 64, ptr %119, align 4, !tbaa !9
  store i32 0, ptr %120, align 4, !tbaa !9
  br label %2286

2253:                                             ; preds = %2250, %2246
  %2254 = load i32, ptr %15, align 4, !tbaa !9
  %2255 = and i32 %2254, 128
  %2256 = icmp ne i32 %2255, 0
  br i1 %2256, label %2257, label %2260

2257:                                             ; preds = %2253
  %2258 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %2258, label %2259, label %2260

2259:                                             ; preds = %2257
  store i32 128, ptr %119, align 4, !tbaa !9
  store i32 3, ptr %120, align 4, !tbaa !9
  br label %2285

2260:                                             ; preds = %2257, %2253
  %2261 = load i32, ptr %15, align 4, !tbaa !9
  %2262 = and i32 %2261, 128
  %2263 = icmp ne i32 %2262, 0
  br i1 %2263, label %2264, label %2267

2264:                                             ; preds = %2260
  %2265 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %2265, label %2266, label %2267

2266:                                             ; preds = %2264
  store i32 128, ptr %119, align 4, !tbaa !9
  store i32 4, ptr %120, align 4, !tbaa !9
  br label %2284

2267:                                             ; preds = %2264, %2260
  %2268 = load i32, ptr %15, align 4, !tbaa !9
  %2269 = and i32 %2268, 524288
  %2270 = icmp ne i32 %2269, 0
  br i1 %2270, label %2271, label %2277

2271:                                             ; preds = %2267
  %2272 = load ptr, ptr %47, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2272, i32 0, i32 15
  %2274 = load i8, ptr %2273, align 2, !tbaa !137, !range !40, !noundef !41
  %2275 = trunc i8 %2274 to i1
  br i1 %2275, label %2276, label %2277

2276:                                             ; preds = %2271
  store i32 524288, ptr %119, align 4, !tbaa !9
  br label %2283

2277:                                             ; preds = %2271, %2267
  %2278 = load i32, ptr %15, align 4, !tbaa !9
  %2279 = and i32 %2278, 256
  %2280 = icmp ne i32 %2279, 0
  br i1 %2280, label %2281, label %2282

2281:                                             ; preds = %2277
  store i32 256, ptr %119, align 4, !tbaa !9
  br label %2282

2282:                                             ; preds = %2281, %2277
  br label %2283

2283:                                             ; preds = %2282, %2276
  br label %2284

2284:                                             ; preds = %2283, %2266
  br label %2285

2285:                                             ; preds = %2284, %2259
  br label %2286

2286:                                             ; preds = %2285, %2252
  %2287 = load i32, ptr %119, align 4, !tbaa !9
  %2288 = icmp ne i32 %2287, 0
  br i1 %2288, label %2289, label %2541

2289:                                             ; preds = %2286
  call void @llvm.lifetime.start.p0(i64 56, ptr %121) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %121)
  call void @llvm.memset.p0.i64(ptr align 8 %121, i8 0, i64 56, i1 false)
  %2290 = load i32, ptr %119, align 4, !tbaa !9
  %2291 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 0
  store i32 %2290, ptr %2291, align 8, !tbaa !172
  %2292 = load i32, ptr %15, align 4, !tbaa !9
  %2293 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 1
  store i32 %2292, ptr %2293, align 4, !tbaa !174
  %2294 = load ptr, ptr %17, align 8, !tbaa !5
  %2295 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 2
  store ptr %2294, ptr %2295, align 8, !tbaa !175
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #14
  %2296 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2297 = trunc i8 %2296 to i1
  br i1 %2297, label %2298, label %2300

2298:                                             ; preds = %2289
  %2299 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2305

2300:                                             ; preds = %2289
  %2301 = load ptr, ptr %47, align 8, !tbaa !5
  %2302 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2301, i32 0, i32 5
  %2303 = getelementptr inbounds %struct.ImVector.27, ptr %2302, i32 0, i32 2
  %2304 = load ptr, ptr %2303, align 8, !tbaa !125
  br label %2305

2305:                                             ; preds = %2300, %2298
  %2306 = phi ptr [ %2299, %2298 ], [ %2304, %2300 ]
  store ptr %2306, ptr %122, align 8, !tbaa !5
  %2307 = load i32, ptr %120, align 4, !tbaa !9
  %2308 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 4
  store i32 %2307, ptr %2308, align 4, !tbaa !176
  %2309 = load ptr, ptr %122, align 8, !tbaa !5
  %2310 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  store ptr %2309, ptr %2310, align 8, !tbaa !177
  %2311 = load ptr, ptr %47, align 8, !tbaa !5
  %2312 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2311, i32 0, i32 2
  %2313 = load i32, ptr %2312, align 8, !tbaa !115
  %2314 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  store i32 %2313, ptr %2314, align 8, !tbaa !178
  %2315 = load ptr, ptr %47, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2315, i32 0, i32 9
  %2317 = load i32, ptr %2316, align 4, !tbaa !138
  %2318 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 7
  store i32 %2317, ptr %2318, align 4, !tbaa !179
  %2319 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 8
  store i8 0, ptr %2319, align 8, !tbaa !180
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #14
  %2320 = load ptr, ptr %47, align 8, !tbaa !5
  %2321 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2320, i32 0, i32 4
  %2322 = getelementptr inbounds %struct.ImVector.5, ptr %2321, i32 0, i32 2
  %2323 = load ptr, ptr %2322, align 8, !tbaa !113
  store ptr %2323, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #14
  %2324 = load ptr, ptr %123, align 8, !tbaa !5
  %2325 = load ptr, ptr %123, align 8, !tbaa !5
  %2326 = load ptr, ptr %47, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2326, i32 0, i32 11
  %2328 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2327, i32 0, i32 0
  %2329 = load i32, ptr %2328, align 4, !tbaa !151
  %2330 = sext i32 %2329 to i64
  %2331 = getelementptr inbounds i16, ptr %2325, i64 %2330
  %2332 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2324, ptr noundef %2331)
  %2333 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 9
  store i32 %2332, ptr %2333, align 4, !tbaa !181
  store i32 %2332, ptr %124, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #14
  %2334 = load ptr, ptr %123, align 8, !tbaa !5
  %2335 = load ptr, ptr %123, align 8, !tbaa !5
  %2336 = load ptr, ptr %47, align 8, !tbaa !5
  %2337 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2336, i32 0, i32 11
  %2338 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2337, i32 0, i32 1
  %2339 = load i32, ptr %2338, align 4, !tbaa !152
  %2340 = sext i32 %2339 to i64
  %2341 = getelementptr inbounds i16, ptr %2335, i64 %2340
  %2342 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2334, ptr noundef %2341)
  %2343 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  store i32 %2342, ptr %2343, align 8, !tbaa !182
  store i32 %2342, ptr %125, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #14
  %2344 = load ptr, ptr %123, align 8, !tbaa !5
  %2345 = load ptr, ptr %123, align 8, !tbaa !5
  %2346 = load ptr, ptr %47, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2346, i32 0, i32 11
  %2348 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2347, i32 0, i32 2
  %2349 = load i32, ptr %2348, align 4, !tbaa !153
  %2350 = sext i32 %2349 to i64
  %2351 = getelementptr inbounds i16, ptr %2345, i64 %2350
  %2352 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2344, ptr noundef %2351)
  %2353 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 11
  store i32 %2352, ptr %2353, align 4, !tbaa !183
  store i32 %2352, ptr %126, align 4, !tbaa !9
  %2354 = load ptr, ptr %16, align 8, !tbaa !5
  %2355 = call noundef i32 %2354(ptr noundef %121)
  %2356 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2357 = trunc i8 %2356 to i1
  br i1 %2357, label %2358, label %2360

2358:                                             ; preds = %2305
  %2359 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2365

2360:                                             ; preds = %2305
  %2361 = load ptr, ptr %47, align 8, !tbaa !5
  %2362 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2361, i32 0, i32 5
  %2363 = getelementptr inbounds %struct.ImVector.27, ptr %2362, i32 0, i32 2
  %2364 = load ptr, ptr %2363, align 8, !tbaa !125
  br label %2365

2365:                                             ; preds = %2360, %2358
  %2366 = phi ptr [ %2359, %2358 ], [ %2364, %2360 ]
  store ptr %2366, ptr %122, align 8, !tbaa !5
  %2367 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2368 = load ptr, ptr %2367, align 8, !tbaa !177
  %2369 = load ptr, ptr %122, align 8, !tbaa !5
  %2370 = icmp eq ptr %2368, %2369
  br i1 %2370, label %2371, label %2372

2371:                                             ; preds = %2365
  br label %2374

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

2373:                                             ; No predecessors!
  br label %2374

2374:                                             ; preds = %2373, %2371
  %2375 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 7
  %2376 = load i32, ptr %2375, align 4, !tbaa !179
  %2377 = load ptr, ptr %47, align 8, !tbaa !5
  %2378 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2377, i32 0, i32 9
  %2379 = load i32, ptr %2378, align 4, !tbaa !138
  %2380 = icmp eq i32 %2376, %2379
  br i1 %2380, label %2381, label %2382

2381:                                             ; preds = %2374
  br label %2384

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

2383:                                             ; No predecessors!
  br label %2384

2384:                                             ; preds = %2383, %2381
  %2385 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 1
  %2386 = load i32, ptr %2385, align 4, !tbaa !174
  %2387 = load i32, ptr %15, align 4, !tbaa !9
  %2388 = icmp eq i32 %2386, %2387
  br i1 %2388, label %2389, label %2390

2389:                                             ; preds = %2384
  br label %2392

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

2391:                                             ; No predecessors!
  br label %2392

2392:                                             ; preds = %2391, %2389
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #14
  %2393 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 8
  %2394 = load i8, ptr %2393, align 8, !tbaa !180, !range !40, !noundef !41
  %2395 = trunc i8 %2394 to i1
  %2396 = zext i1 %2395 to i8
  store i8 %2396, ptr %127, align 1, !tbaa !42
  %2397 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 9
  %2398 = load i32, ptr %2397, align 4, !tbaa !181
  %2399 = load i32, ptr %124, align 4, !tbaa !9
  %2400 = icmp ne i32 %2398, %2399
  br i1 %2400, label %2404, label %2401

2401:                                             ; preds = %2392
  %2402 = load i8, ptr %127, align 1, !tbaa !42, !range !40, !noundef !41
  %2403 = trunc i8 %2402 to i1
  br i1 %2403, label %2404, label %2419

2404:                                             ; preds = %2401, %2392
  %2405 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2406 = load ptr, ptr %2405, align 8, !tbaa !177
  %2407 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2408 = load ptr, ptr %2407, align 8, !tbaa !177
  %2409 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 9
  %2410 = load i32, ptr %2409, align 4, !tbaa !181
  %2411 = sext i32 %2410 to i64
  %2412 = getelementptr inbounds i8, ptr %2408, i64 %2411
  %2413 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2406, ptr noundef %2412)
  %2414 = load ptr, ptr %47, align 8, !tbaa !5
  %2415 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2414, i32 0, i32 11
  %2416 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2415, i32 0, i32 0
  store i32 %2413, ptr %2416, align 4, !tbaa !151
  %2417 = load ptr, ptr %47, align 8, !tbaa !5
  %2418 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2417, i32 0, i32 13
  store i8 1, ptr %2418, align 4, !tbaa !154
  br label %2419

2419:                                             ; preds = %2404, %2401
  %2420 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  %2421 = load i32, ptr %2420, align 8, !tbaa !182
  %2422 = load i32, ptr %125, align 4, !tbaa !9
  %2423 = icmp ne i32 %2421, %2422
  br i1 %2423, label %2427, label %2424

2424:                                             ; preds = %2419
  %2425 = load i8, ptr %127, align 1, !tbaa !42, !range !40, !noundef !41
  %2426 = trunc i8 %2425 to i1
  br i1 %2426, label %2427, label %2453

2427:                                             ; preds = %2424, %2419
  %2428 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  %2429 = load i32, ptr %2428, align 8, !tbaa !182
  %2430 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 9
  %2431 = load i32, ptr %2430, align 4, !tbaa !181
  %2432 = icmp eq i32 %2429, %2431
  br i1 %2432, label %2433, label %2438

2433:                                             ; preds = %2427
  %2434 = load ptr, ptr %47, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2434, i32 0, i32 11
  %2436 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2435, i32 0, i32 0
  %2437 = load i32, ptr %2436, align 4, !tbaa !151
  br label %2448

2438:                                             ; preds = %2427
  %2439 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2440 = load ptr, ptr %2439, align 8, !tbaa !177
  %2441 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2442 = load ptr, ptr %2441, align 8, !tbaa !177
  %2443 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  %2444 = load i32, ptr %2443, align 8, !tbaa !182
  %2445 = sext i32 %2444 to i64
  %2446 = getelementptr inbounds i8, ptr %2442, i64 %2445
  %2447 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2440, ptr noundef %2446)
  br label %2448

2448:                                             ; preds = %2438, %2433
  %2449 = phi i32 [ %2437, %2433 ], [ %2447, %2438 ]
  %2450 = load ptr, ptr %47, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2450, i32 0, i32 11
  %2452 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2451, i32 0, i32 1
  store i32 %2449, ptr %2452, align 4, !tbaa !152
  br label %2453

2453:                                             ; preds = %2448, %2424
  %2454 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 11
  %2455 = load i32, ptr %2454, align 4, !tbaa !183
  %2456 = load i32, ptr %126, align 4, !tbaa !9
  %2457 = icmp ne i32 %2455, %2456
  br i1 %2457, label %2461, label %2458

2458:                                             ; preds = %2453
  %2459 = load i8, ptr %127, align 1, !tbaa !42, !range !40, !noundef !41
  %2460 = trunc i8 %2459 to i1
  br i1 %2460, label %2461, label %2487

2461:                                             ; preds = %2458, %2453
  %2462 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 11
  %2463 = load i32, ptr %2462, align 4, !tbaa !183
  %2464 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  %2465 = load i32, ptr %2464, align 8, !tbaa !182
  %2466 = icmp eq i32 %2463, %2465
  br i1 %2466, label %2467, label %2472

2467:                                             ; preds = %2461
  %2468 = load ptr, ptr %47, align 8, !tbaa !5
  %2469 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2468, i32 0, i32 11
  %2470 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2469, i32 0, i32 1
  %2471 = load i32, ptr %2470, align 4, !tbaa !152
  br label %2482

2472:                                             ; preds = %2461
  %2473 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2474 = load ptr, ptr %2473, align 8, !tbaa !177
  %2475 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2476 = load ptr, ptr %2475, align 8, !tbaa !177
  %2477 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 11
  %2478 = load i32, ptr %2477, align 4, !tbaa !183
  %2479 = sext i32 %2478 to i64
  %2480 = getelementptr inbounds i8, ptr %2476, i64 %2479
  %2481 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2474, ptr noundef %2480)
  br label %2482

2482:                                             ; preds = %2472, %2467
  %2483 = phi i32 [ %2471, %2467 ], [ %2481, %2472 ]
  %2484 = load ptr, ptr %47, align 8, !tbaa !5
  %2485 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2484, i32 0, i32 11
  %2486 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2485, i32 0, i32 2
  store i32 %2483, ptr %2486, align 4, !tbaa !153
  br label %2487

2487:                                             ; preds = %2482, %2458
  %2488 = load i8, ptr %127, align 1, !tbaa !42, !range !40, !noundef !41
  %2489 = trunc i8 %2488 to i1
  br i1 %2489, label %2490, label %2540

2490:                                             ; preds = %2487
  %2491 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  %2492 = load i32, ptr %2491, align 8, !tbaa !178
  %2493 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2494 = load ptr, ptr %2493, align 8, !tbaa !177
  %2495 = call i64 @strlen(ptr noundef %2494) #16
  %2496 = trunc i64 %2495 to i32
  %2497 = icmp eq i32 %2492, %2496
  br i1 %2497, label %2498, label %2499

2498:                                             ; preds = %2490
  br label %2501

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

2500:                                             ; No predecessors!
  br label %2501

2501:                                             ; preds = %2500, %2498
  %2502 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  %2503 = load i32, ptr %2502, align 8, !tbaa !178
  %2504 = load i32, ptr %71, align 4, !tbaa !9
  %2505 = icmp sgt i32 %2503, %2504
  br i1 %2505, label %2506, label %2521

2506:                                             ; preds = %2501
  %2507 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2508 = trunc i8 %2507 to i1
  br i1 %2508, label %2509, label %2521

2509:                                             ; preds = %2506
  %2510 = load ptr, ptr %47, align 8, !tbaa !5
  %2511 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2510, i32 0, i32 4
  %2512 = load ptr, ptr %47, align 8, !tbaa !5
  %2513 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2512, i32 0, i32 4
  %2514 = getelementptr inbounds %struct.ImVector.5, ptr %2513, i32 0, i32 0
  %2515 = load i32, ptr %2514, align 8, !tbaa !124
  %2516 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  %2517 = load i32, ptr %2516, align 8, !tbaa !178
  %2518 = load i32, ptr %71, align 4, !tbaa !9
  %2519 = sub nsw i32 %2517, %2518
  %2520 = add nsw i32 %2515, %2519
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2511, i32 noundef %2520)
  br label %2521

2521:                                             ; preds = %2509, %2506, %2501
  %2522 = load ptr, ptr %47, align 8, !tbaa !5
  %2523 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2522, i32 0, i32 4
  %2524 = getelementptr inbounds %struct.ImVector.5, ptr %2523, i32 0, i32 2
  %2525 = load ptr, ptr %2524, align 8, !tbaa !113
  %2526 = load ptr, ptr %47, align 8, !tbaa !5
  %2527 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2526, i32 0, i32 4
  %2528 = getelementptr inbounds %struct.ImVector.5, ptr %2527, i32 0, i32 0
  %2529 = load i32, ptr %2528, align 8, !tbaa !124
  %2530 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2531 = load ptr, ptr %2530, align 8, !tbaa !177
  %2532 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2525, i32 noundef %2529, ptr noundef %2531, ptr noundef null, ptr noundef null)
  %2533 = load ptr, ptr %47, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2533, i32 0, i32 1
  store i32 %2532, ptr %2534, align 4, !tbaa !114
  %2535 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  %2536 = load i32, ptr %2535, align 8, !tbaa !178
  %2537 = load ptr, ptr %47, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2537, i32 0, i32 2
  store i32 %2536, ptr %2538, align 8, !tbaa !115
  %2539 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %2539)
  br label %2540

2540:                                             ; preds = %2521, %2487
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #14
  call void @llvm.lifetime.end.p0(i64 56, ptr %121) #14
  br label %2541

2541:                                             ; preds = %2540, %2286
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #14
  br label %2542

2542:                                             ; preds = %2541, %2236
  %2543 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2544 = trunc i8 %2543 to i1
  br i1 %2544, label %2561, label %2545

2545:                                             ; preds = %2542
  %2546 = load ptr, ptr %47, align 8, !tbaa !5
  %2547 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2546, i32 0, i32 5
  %2548 = getelementptr inbounds %struct.ImVector.27, ptr %2547, i32 0, i32 2
  %2549 = load ptr, ptr %2548, align 8, !tbaa !125
  %2550 = load ptr, ptr %12, align 8, !tbaa !5
  %2551 = call i32 @strcmp(ptr noundef %2549, ptr noundef %2550) #16
  %2552 = icmp ne i32 %2551, 0
  br i1 %2552, label %2553, label %2561

2553:                                             ; preds = %2545
  %2554 = load ptr, ptr %47, align 8, !tbaa !5
  %2555 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2554, i32 0, i32 5
  %2556 = getelementptr inbounds %struct.ImVector.27, ptr %2555, i32 0, i32 2
  %2557 = load ptr, ptr %2556, align 8, !tbaa !125
  store ptr %2557, ptr %113, align 8, !tbaa !5
  %2558 = load ptr, ptr %47, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2558, i32 0, i32 2
  %2560 = load i32, ptr %2559, align 8, !tbaa !115
  store i32 %2560, ptr %114, align 4, !tbaa !9
  br label %2561

2561:                                             ; preds = %2553, %2545, %2542
  br label %2562

2562:                                             ; preds = %2561, %2204
  %2563 = load ptr, ptr %47, align 8, !tbaa !5
  %2564 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2563, i32 0, i32 17
  store i32 0, ptr %2564, align 8, !tbaa !139
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #14
  br label %2565

2565:                                             ; preds = %2562, %2112
  %2566 = load ptr, ptr %113, align 8, !tbaa !5
  %2567 = icmp ne ptr %2566, null
  br i1 %2567, label %2568, label %2618

2568:                                             ; preds = %2565
  %2569 = load i32, ptr %114, align 4, !tbaa !9
  %2570 = icmp sge i32 %2569, 0
  br i1 %2570, label %2571, label %2572

2571:                                             ; preds = %2568
  br label %2574

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

2573:                                             ; No predecessors!
  br label %2574

2574:                                             ; preds = %2573, %2571
  %2575 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2576 = trunc i8 %2575 to i1
  br i1 %2576, label %2577, label %2610

2577:                                             ; preds = %2574
  call void @llvm.lifetime.start.p0(i64 56, ptr %128) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %128)
  %2578 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 0
  store i32 262144, ptr %2578, align 8, !tbaa !172
  %2579 = load i32, ptr %15, align 4, !tbaa !9
  %2580 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 1
  store i32 %2579, ptr %2580, align 4, !tbaa !174
  %2581 = load ptr, ptr %12, align 8, !tbaa !5
  %2582 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 5
  store ptr %2581, ptr %2582, align 8, !tbaa !177
  %2583 = load i32, ptr %114, align 4, !tbaa !9
  %2584 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 6
  store i32 %2583, ptr %2584, align 8, !tbaa !178
  %2585 = load i32, ptr %13, align 4, !tbaa !9
  %2586 = load i32, ptr %114, align 4, !tbaa !9
  %2587 = add nsw i32 %2586, 1
  %2588 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2585, i32 noundef %2587)
  %2589 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 7
  store i32 %2588, ptr %2589, align 4, !tbaa !179
  %2590 = load ptr, ptr %17, align 8, !tbaa !5
  %2591 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 2
  store ptr %2590, ptr %2591, align 8, !tbaa !175
  %2592 = load ptr, ptr %16, align 8, !tbaa !5
  %2593 = call noundef i32 %2592(ptr noundef %128)
  %2594 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 5
  %2595 = load ptr, ptr %2594, align 8, !tbaa !177
  store ptr %2595, ptr %12, align 8, !tbaa !5
  %2596 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 7
  %2597 = load i32, ptr %2596, align 4, !tbaa !179
  store i32 %2597, ptr %13, align 4, !tbaa !9
  %2598 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 6
  %2599 = load i32, ptr %2598, align 8, !tbaa !178
  %2600 = load i32, ptr %13, align 4, !tbaa !9
  %2601 = sub nsw i32 %2600, 1
  %2602 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2599, i32 noundef %2601)
  store i32 %2602, ptr %114, align 4, !tbaa !9
  %2603 = load i32, ptr %114, align 4, !tbaa !9
  %2604 = load i32, ptr %13, align 4, !tbaa !9
  %2605 = icmp sle i32 %2603, %2604
  br i1 %2605, label %2606, label %2607

2606:                                             ; preds = %2577
  br label %2609

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

2608:                                             ; No predecessors!
  br label %2609

2609:                                             ; preds = %2608, %2606
  call void @llvm.lifetime.end.p0(i64 56, ptr %128) #14
  br label %2610

2610:                                             ; preds = %2609, %2574
  %2611 = load ptr, ptr %12, align 8, !tbaa !5
  %2612 = load ptr, ptr %113, align 8, !tbaa !5
  %2613 = load i32, ptr %114, align 4, !tbaa !9
  %2614 = add nsw i32 %2613, 1
  %2615 = load i32, ptr %13, align 4, !tbaa !9
  %2616 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2614, i32 noundef %2615)
  %2617 = sext i32 %2616 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2611, ptr noundef %2612, i64 noundef %2617)
  store i8 1, ptr %64, align 1, !tbaa !42
  br label %2618

2618:                                             ; preds = %2610, %2565
  %2619 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %2620 = trunc i8 %2619 to i1
  br i1 %2620, label %2621, label %2628

2621:                                             ; preds = %2618
  %2622 = load ptr, ptr %20, align 8, !tbaa !5
  %2623 = getelementptr inbounds %struct.ImGuiContext, ptr %2622, i32 0, i32 44
  %2624 = load i32, ptr %2623, align 4, !tbaa !104
  %2625 = load i32, ptr %29, align 4, !tbaa !9
  %2626 = icmp eq i32 %2624, %2625
  br i1 %2626, label %2627, label %2628

2627:                                             ; preds = %2621
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2628

2628:                                             ; preds = %2627, %2621, %2618
  %2629 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2630 = trunc i8 %2629 to i1
  br i1 %2630, label %2641, label %2631

2631:                                             ; preds = %2628
  %2632 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2632, i32 noundef 1)
  %2633 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %129, ptr align 4 %2633, i64 8, i1 false), !tbaa.struct !43
  %2634 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 4 %2634, i64 8, i1 false), !tbaa.struct !43
  %2635 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2636 = load ptr, ptr %22, align 8, !tbaa !5
  %2637 = getelementptr inbounds %struct.ImGuiStyle, ptr %2636, i32 0, i32 13
  %2638 = load float, ptr %2637, align 4, !tbaa !97
  %2639 = load <2 x float>, ptr %129, align 4
  %2640 = load <2 x float>, ptr %130, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2639, <2 x float> %2640, i32 noundef %2635, i1 noundef zeroext true, float noundef %2638)
  br label %2641

2641:                                             ; preds = %2631, %2628
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #14
  %2642 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2643 = getelementptr inbounds %struct.ImVec2, ptr %2642, i32 0, i32 0
  %2644 = load float, ptr %2643, align 4, !tbaa !143
  %2645 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2646 = getelementptr inbounds %struct.ImVec2, ptr %2645, i32 0, i32 1
  %2647 = load float, ptr %2646, align 4, !tbaa !184
  %2648 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2649 = getelementptr inbounds %struct.ImVec2, ptr %2648, i32 0, i32 0
  %2650 = load float, ptr %2649, align 4, !tbaa !143
  %2651 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2652 = load float, ptr %2651, align 4, !tbaa !93
  %2653 = fadd float %2650, %2652
  %2654 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2655 = getelementptr inbounds %struct.ImVec2, ptr %2654, i32 0, i32 1
  %2656 = load float, ptr %2655, align 4, !tbaa !184
  %2657 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2658 = load float, ptr %2657, align 4, !tbaa !91
  %2659 = fadd float %2656, %2658
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %131, float noundef %2644, float noundef %2647, float noundef %2653, float noundef %2659)
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  %2660 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2661 = trunc i8 %2660 to i1
  br i1 %2661, label %2662, label %2666

2662:                                             ; preds = %2641
  %2663 = load ptr, ptr %38, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.ImGuiWindow, ptr %2663, i32 0, i32 54
  %2665 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2664, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %132, ptr align 8 %2665, i64 8, i1 false), !tbaa.struct !43
  br label %2671

2666:                                             ; preds = %2641
  %2667 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2668 = load ptr, ptr %22, align 8, !tbaa !5
  %2669 = getelementptr inbounds %struct.ImGuiStyle, ptr %2668, i32 0, i32 12
  %2670 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2667, ptr noundef nonnull align 4 dereferenceable(8) %2669)
  store <2 x float> %2670, ptr %132, align 4
  br label %2671

2671:                                             ; preds = %2666, %2662
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %133, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #14
  store i32 2097152, ptr %134, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #14
  %2672 = load i8, ptr %67, align 1, !tbaa !42, !range !40, !noundef !41
  %2673 = trunc i8 %2672 to i1
  br i1 %2673, label %2674, label %2679

2674:                                             ; preds = %2671
  %2675 = load ptr, ptr %47, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2675, i32 0, i32 5
  %2677 = getelementptr inbounds %struct.ImVector.27, ptr %2676, i32 0, i32 2
  %2678 = load ptr, ptr %2677, align 8, !tbaa !125
  br label %2681

2679:                                             ; preds = %2671
  %2680 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2681

2681:                                             ; preds = %2679, %2674
  %2682 = phi ptr [ %2678, %2674 ], [ %2680, %2679 ]
  store ptr %2682, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #14
  store ptr null, ptr %136, align 8, !tbaa !5
  %2683 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2684 = trunc i8 %2683 to i1
  br i1 %2684, label %2685, label %2691

2685:                                             ; preds = %2681
  %2686 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2686, ptr %135, align 8, !tbaa !5
  %2687 = load ptr, ptr %11, align 8, !tbaa !5
  %2688 = load ptr, ptr %11, align 8, !tbaa !5
  %2689 = call i64 @strlen(ptr noundef %2688) #16
  %2690 = getelementptr inbounds i8, ptr %2687, i64 %2689
  store ptr %2690, ptr %136, align 8, !tbaa !5
  br label %2691

2691:                                             ; preds = %2685, %2681
  %2692 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2693 = trunc i8 %2692 to i1
  br i1 %2693, label %2697, label %2694

2694:                                             ; preds = %2691
  %2695 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2696 = trunc i8 %2695 to i1
  br i1 %2696, label %2697, label %3270

2697:                                             ; preds = %2694, %2691
  %2698 = load ptr, ptr %47, align 8, !tbaa !5
  %2699 = icmp ne ptr %2698, null
  br i1 %2699, label %2700, label %2701

2700:                                             ; preds = %2697
  br label %2703

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

2702:                                             ; No predecessors!
  br label %2703

2703:                                             ; preds = %2702, %2700
  %2704 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2705 = trunc i8 %2704 to i1
  br i1 %2705, label %2713, label %2706

2706:                                             ; preds = %2703
  %2707 = load ptr, ptr %135, align 8, !tbaa !5
  %2708 = load ptr, ptr %47, align 8, !tbaa !5
  %2709 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2708, i32 0, i32 2
  %2710 = load i32, ptr %2709, align 8, !tbaa !115
  %2711 = sext i32 %2710 to i64
  %2712 = getelementptr inbounds i8, ptr %2707, i64 %2711
  store ptr %2712, ptr %136, align 8, !tbaa !5
  br label %2713

2713:                                             ; preds = %2706, %2703
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #14
  %2714 = load ptr, ptr %47, align 8, !tbaa !5
  %2715 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2714, i32 0, i32 4
  %2716 = getelementptr inbounds %struct.ImVector.5, ptr %2715, i32 0, i32 2
  %2717 = load ptr, ptr %2716, align 8, !tbaa !113
  store ptr %2717, ptr %137, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %138)
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %139)
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #14
  call void @llvm.memset.p0.i64(ptr align 16 %140, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %141, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #14
  store i32 0, ptr %142, align 4, !tbaa !9
  %2718 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2719 = trunc i8 %2718 to i1
  br i1 %2719, label %2720, label %2732

2720:                                             ; preds = %2713
  %2721 = load ptr, ptr %137, align 8, !tbaa !5
  %2722 = load ptr, ptr %47, align 8, !tbaa !5
  %2723 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2722, i32 0, i32 11
  %2724 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2723, i32 0, i32 0
  %2725 = load i32, ptr %2724, align 4, !tbaa !151
  %2726 = sext i32 %2725 to i64
  %2727 = getelementptr inbounds i16, ptr %2721, i64 %2726
  %2728 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 0
  store ptr %2727, ptr %2728, align 16, !tbaa !5
  %2729 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  store i32 -1, ptr %2729, align 4, !tbaa !9
  %2730 = load i32, ptr %142, align 4, !tbaa !9
  %2731 = add nsw i32 %2730, 1
  store i32 %2731, ptr %142, align 4, !tbaa !9
  br label %2732

2732:                                             ; preds = %2720, %2713
  %2733 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2734 = trunc i8 %2733 to i1
  br i1 %2734, label %2735, label %2752

2735:                                             ; preds = %2732
  %2736 = load ptr, ptr %137, align 8, !tbaa !5
  %2737 = load ptr, ptr %47, align 8, !tbaa !5
  %2738 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2737, i32 0, i32 11
  %2739 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2738, i32 0, i32 1
  %2740 = load i32, ptr %2739, align 4, !tbaa !152
  %2741 = load ptr, ptr %47, align 8, !tbaa !5
  %2742 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2741, i32 0, i32 11
  %2743 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2742, i32 0, i32 2
  %2744 = load i32, ptr %2743, align 4, !tbaa !153
  %2745 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2740, i32 noundef %2744)
  %2746 = sext i32 %2745 to i64
  %2747 = getelementptr inbounds i16, ptr %2736, i64 %2746
  %2748 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 1
  store ptr %2747, ptr %2748, align 8, !tbaa !5
  %2749 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  store i32 -1, ptr %2749, align 4, !tbaa !9
  %2750 = load i32, ptr %142, align 4, !tbaa !9
  %2751 = add nsw i32 %2750, 1
  store i32 %2751, ptr %142, align 4, !tbaa !9
  br label %2752

2752:                                             ; preds = %2735, %2732
  %2753 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2754 = trunc i8 %2753 to i1
  %2755 = zext i1 %2754 to i64
  %2756 = select i1 %2754, i32 1, i32 0
  %2757 = load i32, ptr %142, align 4, !tbaa !9
  %2758 = add nsw i32 %2757, %2756
  store i32 %2758, ptr %142, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #14
  store i32 0, ptr %143, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #14
  %2759 = load ptr, ptr %137, align 8, !tbaa !5
  store ptr %2759, ptr %144, align 8, !tbaa !5
  br label %2760

2760:                                             ; preds = %2809, %2752
  %2761 = load ptr, ptr %144, align 8, !tbaa !5
  %2762 = load i16, ptr %2761, align 2, !tbaa !149
  %2763 = zext i16 %2762 to i32
  %2764 = icmp ne i32 %2763, 0
  br i1 %2764, label %2766, label %2765

2765:                                             ; preds = %2760
  store i32 7, ptr %19, align 4
  br label %2812

2766:                                             ; preds = %2760
  %2767 = load ptr, ptr %144, align 8, !tbaa !5
  %2768 = load i16, ptr %2767, align 2, !tbaa !149
  %2769 = zext i16 %2768 to i32
  %2770 = icmp eq i32 %2769, 10
  br i1 %2770, label %2771, label %2808

2771:                                             ; preds = %2766
  %2772 = load i32, ptr %143, align 4, !tbaa !9
  %2773 = add nsw i32 %2772, 1
  store i32 %2773, ptr %143, align 4, !tbaa !9
  %2774 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  %2775 = load i32, ptr %2774, align 4, !tbaa !9
  %2776 = icmp eq i32 %2775, -1
  br i1 %2776, label %2777, label %2790

2777:                                             ; preds = %2771
  %2778 = load ptr, ptr %144, align 8, !tbaa !5
  %2779 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 0
  %2780 = load ptr, ptr %2779, align 16, !tbaa !5
  %2781 = icmp uge ptr %2778, %2780
  br i1 %2781, label %2782, label %2790

2782:                                             ; preds = %2777
  %2783 = load i32, ptr %143, align 4, !tbaa !9
  %2784 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  store i32 %2783, ptr %2784, align 4, !tbaa !9
  %2785 = load i32, ptr %142, align 4, !tbaa !9
  %2786 = add nsw i32 %2785, -1
  store i32 %2786, ptr %142, align 4, !tbaa !9
  %2787 = icmp sle i32 %2786, 0
  br i1 %2787, label %2788, label %2789

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

2789:                                             ; preds = %2782
  br label %2790

2790:                                             ; preds = %2789, %2777, %2771
  %2791 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  %2792 = load i32, ptr %2791, align 4, !tbaa !9
  %2793 = icmp eq i32 %2792, -1
  br i1 %2793, label %2794, label %2807

2794:                                             ; preds = %2790
  %2795 = load ptr, ptr %144, align 8, !tbaa !5
  %2796 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 1
  %2797 = load ptr, ptr %2796, align 8, !tbaa !5
  %2798 = icmp uge ptr %2795, %2797
  br i1 %2798, label %2799, label %2807

2799:                                             ; preds = %2794
  %2800 = load i32, ptr %143, align 4, !tbaa !9
  %2801 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  store i32 %2800, ptr %2801, align 4, !tbaa !9
  %2802 = load i32, ptr %142, align 4, !tbaa !9
  %2803 = add nsw i32 %2802, -1
  store i32 %2803, ptr %142, align 4, !tbaa !9
  %2804 = icmp sle i32 %2803, 0
  br i1 %2804, label %2805, label %2806

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

2806:                                             ; preds = %2799
  br label %2807

2807:                                             ; preds = %2806, %2794, %2790
  br label %2808

2808:                                             ; preds = %2807, %2766
  br label %2809

2809:                                             ; preds = %2808
  %2810 = load ptr, ptr %144, align 8, !tbaa !5
  %2811 = getelementptr inbounds i16, ptr %2810, i32 1
  store ptr %2811, ptr %144, align 8, !tbaa !5
  br label %2760, !llvm.loop !185

2812:                                             ; preds = %2805, %2788, %2765
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #14
  br label %2813

2813:                                             ; preds = %2812
  %2814 = load i32, ptr %143, align 4, !tbaa !9
  %2815 = add nsw i32 %2814, 1
  store i32 %2815, ptr %143, align 4, !tbaa !9
  %2816 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  %2817 = load i32, ptr %2816, align 4, !tbaa !9
  %2818 = icmp eq i32 %2817, -1
  br i1 %2818, label %2819, label %2822

2819:                                             ; preds = %2813
  %2820 = load i32, ptr %143, align 4, !tbaa !9
  %2821 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  store i32 %2820, ptr %2821, align 4, !tbaa !9
  br label %2822

2822:                                             ; preds = %2819, %2813
  %2823 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  %2824 = load i32, ptr %2823, align 4, !tbaa !9
  %2825 = icmp eq i32 %2824, -1
  br i1 %2825, label %2826, label %2829

2826:                                             ; preds = %2822
  %2827 = load i32, ptr %143, align 4, !tbaa !9
  %2828 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  store i32 %2827, ptr %2828, align 4, !tbaa !9
  br label %2829

2829:                                             ; preds = %2826, %2822
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #14
  %2830 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 0
  %2831 = load ptr, ptr %2830, align 16, !tbaa !5
  %2832 = load ptr, ptr %137, align 8, !tbaa !5
  %2833 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2831, ptr noundef %2832)
  %2834 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 0
  %2835 = load ptr, ptr %2834, align 16, !tbaa !5
  %2836 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2833, ptr noundef %2835, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2836, ptr %145, align 4
  %2837 = getelementptr inbounds %struct.ImVec2, ptr %145, i32 0, i32 0
  %2838 = load float, ptr %2837, align 4, !tbaa !93
  %2839 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  store float %2838, ptr %2839, align 4, !tbaa !93
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #14
  %2840 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  %2841 = load i32, ptr %2840, align 4, !tbaa !9
  %2842 = sitofp i32 %2841 to float
  %2843 = load ptr, ptr %20, align 8, !tbaa !5
  %2844 = getelementptr inbounds %struct.ImGuiContext, ptr %2843, i32 0, i32 6
  %2845 = load float, ptr %2844, align 8, !tbaa !45
  %2846 = fmul float %2842, %2845
  %2847 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  store float %2846, ptr %2847, align 4, !tbaa !91
  %2848 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  %2849 = load i32, ptr %2848, align 4, !tbaa !9
  %2850 = icmp sge i32 %2849, 0
  br i1 %2850, label %2851, label %2870

2851:                                             ; preds = %2829
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #14
  %2852 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 1
  %2853 = load ptr, ptr %2852, align 8, !tbaa !5
  %2854 = load ptr, ptr %137, align 8, !tbaa !5
  %2855 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2853, ptr noundef %2854)
  %2856 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 1
  %2857 = load ptr, ptr %2856, align 8, !tbaa !5
  %2858 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2855, ptr noundef %2857, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2858, ptr %146, align 4
  %2859 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %2860 = load float, ptr %2859, align 4, !tbaa !93
  %2861 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 0
  store float %2860, ptr %2861, align 4, !tbaa !93
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #14
  %2862 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  %2863 = load i32, ptr %2862, align 4, !tbaa !9
  %2864 = sitofp i32 %2863 to float
  %2865 = load ptr, ptr %20, align 8, !tbaa !5
  %2866 = getelementptr inbounds %struct.ImGuiContext, ptr %2865, i32 0, i32 6
  %2867 = load float, ptr %2866, align 8, !tbaa !45
  %2868 = fmul float %2864, %2867
  %2869 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 1
  store float %2868, ptr %2869, align 4, !tbaa !91
  br label %2870

2870:                                             ; preds = %2851, %2829
  %2871 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2872 = trunc i8 %2871 to i1
  br i1 %2872, label %2873, label %2882

2873:                                             ; preds = %2870
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #14
  %2874 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2875 = load float, ptr %2874, align 4, !tbaa !93
  %2876 = load i32, ptr %143, align 4, !tbaa !9
  %2877 = sitofp i32 %2876 to float
  %2878 = load ptr, ptr %20, align 8, !tbaa !5
  %2879 = getelementptr inbounds %struct.ImGuiContext, ptr %2878, i32 0, i32 6
  %2880 = load float, ptr %2879, align 8, !tbaa !45
  %2881 = fmul float %2877, %2880
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %147, float noundef %2875, float noundef %2881)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %133, ptr align 4 %147, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #14
  br label %2882

2882:                                             ; preds = %2873, %2870
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #14
  %2883 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2884 = trunc i8 %2883 to i1
  br i1 %2884, label %2885, label %3023

2885:                                             ; preds = %2882
  %2886 = load ptr, ptr %47, align 8, !tbaa !5
  %2887 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2886, i32 0, i32 13
  %2888 = load i8, ptr %2887, align 4, !tbaa !154, !range !40, !noundef !41
  %2889 = trunc i8 %2888 to i1
  br i1 %2889, label %2890, label %3023

2890:                                             ; preds = %2885
  %2891 = load i32, ptr %15, align 4, !tbaa !9
  %2892 = and i32 %2891, 4096
  %2893 = icmp ne i32 %2892, 0
  br i1 %2893, label %2943, label %2894

2894:                                             ; preds = %2890
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #14
  %2895 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2896 = load float, ptr %2895, align 4, !tbaa !93
  %2897 = fmul float %2896, 2.500000e-01
  store float %2897, ptr %148, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #14
  %2898 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2899 = load float, ptr %2898, align 4, !tbaa !93
  %2900 = load ptr, ptr %22, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.ImGuiStyle, ptr %2900, i32 0, i32 12
  %2902 = getelementptr inbounds %struct.ImVec2, ptr %2901, i32 0, i32 0
  %2903 = load float, ptr %2902, align 4, !tbaa !144
  %2904 = fsub float %2899, %2903
  store float %2904, ptr %149, align 4, !tbaa !44
  %2905 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  %2906 = load float, ptr %2905, align 4, !tbaa !93
  %2907 = load ptr, ptr %47, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2907, i32 0, i32 10
  %2909 = load float, ptr %2908, align 8, !tbaa !117
  %2910 = fcmp olt float %2906, %2909
  br i1 %2910, label %2911, label %2921

2911:                                             ; preds = %2894
  %2912 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  %2913 = load float, ptr %2912, align 4, !tbaa !93
  %2914 = load float, ptr %148, align 4, !tbaa !44
  %2915 = fsub float %2913, %2914
  %2916 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2915)
  %2917 = fptosi float %2916 to i32
  %2918 = sitofp i32 %2917 to float
  %2919 = load ptr, ptr %47, align 8, !tbaa !5
  %2920 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2919, i32 0, i32 10
  store float %2918, ptr %2920, align 8, !tbaa !117
  br label %2942

2921:                                             ; preds = %2894
  %2922 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  %2923 = load float, ptr %2922, align 4, !tbaa !93
  %2924 = load float, ptr %149, align 4, !tbaa !44
  %2925 = fsub float %2923, %2924
  %2926 = load ptr, ptr %47, align 8, !tbaa !5
  %2927 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2926, i32 0, i32 10
  %2928 = load float, ptr %2927, align 8, !tbaa !117
  %2929 = fcmp oge float %2925, %2928
  br i1 %2929, label %2930, label %2941

2930:                                             ; preds = %2921
  %2931 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  %2932 = load float, ptr %2931, align 4, !tbaa !93
  %2933 = load float, ptr %149, align 4, !tbaa !44
  %2934 = fsub float %2932, %2933
  %2935 = load float, ptr %148, align 4, !tbaa !44
  %2936 = fadd float %2934, %2935
  %2937 = fptosi float %2936 to i32
  %2938 = sitofp i32 %2937 to float
  %2939 = load ptr, ptr %47, align 8, !tbaa !5
  %2940 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2939, i32 0, i32 10
  store float %2938, ptr %2940, align 8, !tbaa !117
  br label %2941

2941:                                             ; preds = %2930, %2921
  br label %2942

2942:                                             ; preds = %2941, %2911
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #14
  br label %2946

2943:                                             ; preds = %2890
  %2944 = load ptr, ptr %47, align 8, !tbaa !5
  %2945 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2944, i32 0, i32 10
  store float 0.000000e+00, ptr %2945, align 8, !tbaa !117
  br label %2946

2946:                                             ; preds = %2943, %2942
  %2947 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2948 = trunc i8 %2947 to i1
  br i1 %2948, label %2949, label %3020

2949:                                             ; preds = %2946
  %2950 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  %2951 = load float, ptr %2950, align 4, !tbaa !91
  %2952 = load ptr, ptr %20, align 8, !tbaa !5
  %2953 = getelementptr inbounds %struct.ImGuiContext, ptr %2952, i32 0, i32 6
  %2954 = load float, ptr %2953, align 8, !tbaa !45
  %2955 = fsub float %2951, %2954
  %2956 = load float, ptr %55, align 4, !tbaa !44
  %2957 = fcmp olt float %2955, %2956
  br i1 %2957, label %2958, label %2966

2958:                                             ; preds = %2949
  %2959 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  %2960 = load float, ptr %2959, align 4, !tbaa !91
  %2961 = load ptr, ptr %20, align 8, !tbaa !5
  %2962 = getelementptr inbounds %struct.ImGuiContext, ptr %2961, i32 0, i32 6
  %2963 = load float, ptr %2962, align 8, !tbaa !45
  %2964 = fsub float %2960, %2963
  %2965 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2964)
  store float %2965, ptr %55, align 4, !tbaa !44
  br label %2992

2966:                                             ; preds = %2949
  %2967 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  %2968 = load float, ptr %2967, align 4, !tbaa !91
  %2969 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2970 = load float, ptr %2969, align 4, !tbaa !91
  %2971 = load ptr, ptr %22, align 8, !tbaa !5
  %2972 = getelementptr inbounds %struct.ImGuiStyle, ptr %2971, i32 0, i32 12
  %2973 = getelementptr inbounds %struct.ImVec2, ptr %2972, i32 0, i32 1
  %2974 = load float, ptr %2973, align 4, !tbaa !92
  %2975 = fneg float %2974
  %2976 = call float @llvm.fmuladd.f32(float %2975, float 2.000000e+00, float %2970)
  %2977 = fsub float %2968, %2976
  %2978 = load float, ptr %55, align 4, !tbaa !44
  %2979 = fcmp oge float %2977, %2978
  br i1 %2979, label %2980, label %2991

2980:                                             ; preds = %2966
  %2981 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  %2982 = load float, ptr %2981, align 4, !tbaa !91
  %2983 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2984 = load float, ptr %2983, align 4, !tbaa !91
  %2985 = fsub float %2982, %2984
  %2986 = load ptr, ptr %22, align 8, !tbaa !5
  %2987 = getelementptr inbounds %struct.ImGuiStyle, ptr %2986, i32 0, i32 12
  %2988 = getelementptr inbounds %struct.ImVec2, ptr %2987, i32 0, i32 1
  %2989 = load float, ptr %2988, align 4, !tbaa !92
  %2990 = call float @llvm.fmuladd.f32(float %2989, float 2.000000e+00, float %2985)
  store float %2990, ptr %55, align 4, !tbaa !44
  br label %2991

2991:                                             ; preds = %2980, %2966
  br label %2992

2992:                                             ; preds = %2991, %2958
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #14
  %2993 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 1
  %2994 = load float, ptr %2993, align 4, !tbaa !91
  %2995 = load ptr, ptr %22, align 8, !tbaa !5
  %2996 = getelementptr inbounds %struct.ImGuiStyle, ptr %2995, i32 0, i32 12
  %2997 = getelementptr inbounds %struct.ImVec2, ptr %2996, i32 0, i32 1
  %2998 = load float, ptr %2997, align 4, !tbaa !92
  %2999 = call float @llvm.fmuladd.f32(float %2998, float 2.000000e+00, float %2994)
  %3000 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %3001 = load float, ptr %3000, align 4, !tbaa !91
  %3002 = fsub float %2999, %3001
  %3003 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %3002, float noundef 0.000000e+00)
  store float %3003, ptr %150, align 4, !tbaa !44
  %3004 = load float, ptr %55, align 4, !tbaa !44
  %3005 = load float, ptr %150, align 4, !tbaa !44
  %3006 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %3004, float noundef 0.000000e+00, float noundef %3005)
  store float %3006, ptr %55, align 4, !tbaa !44
  %3007 = load ptr, ptr %38, align 8, !tbaa !5
  %3008 = getelementptr inbounds %struct.ImGuiWindow, ptr %3007, i32 0, i32 15
  %3009 = getelementptr inbounds %struct.ImVec2, ptr %3008, i32 0, i32 1
  %3010 = load float, ptr %3009, align 4, !tbaa !109
  %3011 = load float, ptr %55, align 4, !tbaa !44
  %3012 = fsub float %3010, %3011
  %3013 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %3014 = load float, ptr %3013, align 4, !tbaa !91
  %3015 = fadd float %3014, %3012
  store float %3015, ptr %3013, align 4, !tbaa !91
  %3016 = load float, ptr %55, align 4, !tbaa !44
  %3017 = load ptr, ptr %38, align 8, !tbaa !5
  %3018 = getelementptr inbounds %struct.ImGuiWindow, ptr %3017, i32 0, i32 15
  %3019 = getelementptr inbounds %struct.ImVec2, ptr %3018, i32 0, i32 1
  store float %3016, ptr %3019, align 4, !tbaa !109
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #14
  br label %3020

3020:                                             ; preds = %2992, %2946
  %3021 = load ptr, ptr %47, align 8, !tbaa !5
  %3022 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3021, i32 0, i32 13
  store i8 0, ptr %3022, align 4, !tbaa !154
  br label %3023

3023:                                             ; preds = %3020, %2885, %2882
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #14
  %3024 = load ptr, ptr %47, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3024, i32 0, i32 10
  %3026 = load float, ptr %3025, align 8, !tbaa !117
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %151, float noundef %3026, float noundef 0.000000e+00)
  %3027 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3028 = trunc i8 %3027 to i1
  br i1 %3028, label %3029, label %3157

3029:                                             ; preds = %3023
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #14
  %3030 = load ptr, ptr %137, align 8, !tbaa !5
  %3031 = load ptr, ptr %47, align 8, !tbaa !5
  %3032 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3031, i32 0, i32 11
  %3033 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3032, i32 0, i32 1
  %3034 = load i32, ptr %3033, align 4, !tbaa !152
  %3035 = load ptr, ptr %47, align 8, !tbaa !5
  %3036 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3035, i32 0, i32 11
  %3037 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3036, i32 0, i32 2
  %3038 = load i32, ptr %3037, align 4, !tbaa !153
  %3039 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %3034, i32 noundef %3038)
  %3040 = sext i32 %3039 to i64
  %3041 = getelementptr inbounds i16, ptr %3030, i64 %3040
  store ptr %3041, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #14
  %3042 = load ptr, ptr %137, align 8, !tbaa !5
  %3043 = load ptr, ptr %47, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3043, i32 0, i32 11
  %3045 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3044, i32 0, i32 1
  %3046 = load i32, ptr %3045, align 4, !tbaa !152
  %3047 = load ptr, ptr %47, align 8, !tbaa !5
  %3048 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3047, i32 0, i32 11
  %3049 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3048, i32 0, i32 2
  %3050 = load i32, ptr %3049, align 4, !tbaa !153
  %3051 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3046, i32 noundef %3050)
  %3052 = sext i32 %3051 to i64
  %3053 = getelementptr inbounds i16, ptr %3042, i64 %3052
  store ptr %3053, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #14
  %3054 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3055 = trunc i8 %3054 to i1
  %3056 = zext i1 %3055 to i64
  %3057 = select i1 %3055, float 1.000000e+00, float 0x3FE3333340000000
  %3058 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %3057)
  store i32 %3058, ptr %154, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #14
  %3059 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3060 = trunc i8 %3059 to i1
  %3061 = zext i1 %3060 to i64
  %3062 = select i1 %3060, float 0.000000e+00, float -1.000000e+00
  store float %3062, ptr %155, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #14
  %3063 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3064 = trunc i8 %3063 to i1
  %3065 = zext i1 %3064 to i64
  %3066 = select i1 %3064, float 0.000000e+00, float 2.000000e+00
  store float %3066, ptr %156, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #14
  %3067 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %139)
  store <2 x float> %3067, ptr %158, align 4
  %3068 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %158, ptr noundef nonnull align 4 dereferenceable(8) %151)
  store <2 x float> %3068, ptr %157, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #14
  %3069 = load ptr, ptr %152, align 8, !tbaa !5
  store ptr %3069, ptr %159, align 8, !tbaa !5
  br label %3070

3070:                                             ; preds = %3142, %3029
  %3071 = load ptr, ptr %159, align 8, !tbaa !5
  %3072 = load ptr, ptr %153, align 8, !tbaa !5
  %3073 = icmp ult ptr %3071, %3072
  br i1 %3073, label %3075, label %3074

3074:                                             ; preds = %3070
  store i32 10, ptr %19, align 4
  br label %3155

3075:                                             ; preds = %3070
  %3076 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %3077 = load float, ptr %3076, align 4, !tbaa !91
  %3078 = getelementptr inbounds %struct.ImVec4, ptr %131, i32 0, i32 3
  %3079 = load float, ptr %3078, align 4, !tbaa !186
  %3080 = load ptr, ptr %20, align 8, !tbaa !5
  %3081 = getelementptr inbounds %struct.ImGuiContext, ptr %3080, i32 0, i32 6
  %3082 = load float, ptr %3081, align 8, !tbaa !45
  %3083 = fadd float %3079, %3082
  %3084 = fcmp ogt float %3077, %3083
  br i1 %3084, label %3085, label %3086

3085:                                             ; preds = %3075
  store i32 10, ptr %19, align 4
  br label %3155

3086:                                             ; preds = %3075
  %3087 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %3088 = load float, ptr %3087, align 4, !tbaa !91
  %3089 = getelementptr inbounds %struct.ImVec4, ptr %131, i32 0, i32 1
  %3090 = load float, ptr %3089, align 4, !tbaa !187
  %3091 = fcmp olt float %3088, %3090
  br i1 %3091, label %3092, label %3106

3092:                                             ; preds = %3086
  br label %3093

3093:                                             ; preds = %3104, %3092
  %3094 = load ptr, ptr %159, align 8, !tbaa !5
  %3095 = load ptr, ptr %153, align 8, !tbaa !5
  %3096 = icmp ult ptr %3094, %3095
  br i1 %3096, label %3097, label %3105

3097:                                             ; preds = %3093
  %3098 = load ptr, ptr %159, align 8, !tbaa !5
  %3099 = getelementptr inbounds i16, ptr %3098, i32 1
  store ptr %3099, ptr %159, align 8, !tbaa !5
  %3100 = load i16, ptr %3098, align 2, !tbaa !149
  %3101 = zext i16 %3100 to i32
  %3102 = icmp eq i32 %3101, 10
  br i1 %3102, label %3103, label %3104

3103:                                             ; preds = %3097
  br label %3105

3104:                                             ; preds = %3097
  br label %3093, !llvm.loop !188

3105:                                             ; preds = %3103, %3093
  br label %3142

3106:                                             ; preds = %3086
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #14
  %3107 = load ptr, ptr %159, align 8, !tbaa !5
  %3108 = load ptr, ptr %153, align 8, !tbaa !5
  %3109 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %3107, ptr noundef %3108, ptr noundef %159, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %3109, ptr %160, align 4
  %3110 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 0
  %3111 = load float, ptr %3110, align 4, !tbaa !93
  %3112 = fcmp ole float %3111, 0.000000e+00
  br i1 %3112, label %3113, label %3122

3113:                                             ; preds = %3106
  %3114 = load ptr, ptr %20, align 8, !tbaa !5
  %3115 = getelementptr inbounds %struct.ImGuiContext, ptr %3114, i32 0, i32 5
  %3116 = load ptr, ptr %3115, align 8, !tbaa !127
  %3117 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110) %3116, i16 noundef zeroext 32)
  %3118 = fmul float %3117, 5.000000e-01
  %3119 = fptosi float %3118 to i32
  %3120 = sitofp i32 %3119 to float
  %3121 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 0
  store float %3120, ptr %3121, align 4, !tbaa !93
  br label %3122

3122:                                             ; preds = %3113, %3106
  call void @llvm.lifetime.start.p0(i64 16, ptr %161) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #14
  %3123 = load float, ptr %155, align 4, !tbaa !44
  %3124 = load ptr, ptr %20, align 8, !tbaa !5
  %3125 = getelementptr inbounds %struct.ImGuiContext, ptr %3124, i32 0, i32 6
  %3126 = load float, ptr %3125, align 8, !tbaa !45
  %3127 = fsub float %3123, %3126
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %163, float noundef 0.000000e+00, float noundef %3127)
  %3128 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %157, ptr noundef nonnull align 4 dereferenceable(8) %163)
  store <2 x float> %3128, ptr %162, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #14
  %3129 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 0
  %3130 = load float, ptr %3129, align 4, !tbaa !93
  %3131 = load float, ptr %156, align 4, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %165, float noundef %3130, float noundef %3131)
  %3132 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %157, ptr noundef nonnull align 4 dereferenceable(8) %165)
  store <2 x float> %3132, ptr %164, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %161, ptr noundef nonnull align 4 dereferenceable(8) %162, ptr noundef nonnull align 4 dereferenceable(8) %164)
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %166) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %166, ptr noundef nonnull align 4 dereferenceable(16) %131)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %161, ptr noundef nonnull align 4 dereferenceable(16) %166)
  call void @llvm.lifetime.end.p0(i64 16, ptr %166) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %167) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %167, ptr noundef nonnull align 4 dereferenceable(16) %131)
  %3133 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %161, ptr noundef nonnull align 4 dereferenceable(16) %167)
  call void @llvm.lifetime.end.p0(i64 16, ptr %167) #14
  br i1 %3133, label %3134, label %3141

3134:                                             ; preds = %3122
  %3135 = load ptr, ptr %38, align 8, !tbaa !5
  %3136 = getelementptr inbounds %struct.ImGuiWindow, ptr %3135, i32 0, i32 72
  %3137 = load ptr, ptr %3136, align 8, !tbaa !189
  %3138 = getelementptr inbounds %struct.ImRect, ptr %161, i32 0, i32 0
  %3139 = getelementptr inbounds %struct.ImRect, ptr %161, i32 0, i32 1
  %3140 = load i32, ptr %154, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %3137, ptr noundef nonnull align 4 dereferenceable(8) %3138, ptr noundef nonnull align 4 dereferenceable(8) %3139, i32 noundef %3140, float noundef 0.000000e+00, i32 noundef 0)
  br label %3141

3141:                                             ; preds = %3134, %3122
  call void @llvm.lifetime.end.p0(i64 16, ptr %161) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #14
  br label %3142

3142:                                             ; preds = %3141, %3105
  %3143 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %3144 = load float, ptr %3143, align 4, !tbaa !93
  %3145 = getelementptr inbounds %struct.ImVec2, ptr %151, i32 0, i32 0
  %3146 = load float, ptr %3145, align 4, !tbaa !93
  %3147 = fsub float %3144, %3146
  %3148 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  store float %3147, ptr %3148, align 4, !tbaa !93
  %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 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %3153 = load float, ptr %3152, align 4, !tbaa !91
  %3154 = fadd float %3153, %3151
  store float %3154, ptr %3152, align 4, !tbaa !91
  br label %3070, !llvm.loop !190

3155:                                             ; preds = %3085, %3074
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #14
  br label %3156

3156:                                             ; preds = %3155
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #14
  br label %3157

3157:                                             ; preds = %3156, %3023
  %3158 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3159 = trunc i8 %3158 to i1
  br i1 %3159, label %3167, label %3160

3160:                                             ; preds = %3157
  %3161 = load ptr, ptr %136, align 8, !tbaa !5
  %3162 = load ptr, ptr %135, align 8, !tbaa !5
  %3163 = ptrtoint ptr %3161 to i64
  %3164 = ptrtoint ptr %3162 to i64
  %3165 = sub i64 %3163, %3164
  %3166 = icmp slt i64 %3165, 2097152
  br i1 %3166, label %3167, label %3192

3167:                                             ; preds = %3160, %3157
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #14
  %3168 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3169 = trunc i8 %3168 to i1
  %3170 = zext i1 %3169 to i64
  %3171 = select i1 %3169, i32 1, i32 0
  %3172 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3171, float noundef 1.000000e+00)
  store i32 %3172, ptr %168, align 4, !tbaa !9
  %3173 = load ptr, ptr %38, align 8, !tbaa !5
  %3174 = getelementptr inbounds %struct.ImGuiWindow, ptr %3173, i32 0, i32 72
  %3175 = load ptr, ptr %3174, align 8, !tbaa !189
  %3176 = load ptr, ptr %20, align 8, !tbaa !5
  %3177 = getelementptr inbounds %struct.ImGuiContext, ptr %3176, i32 0, i32 5
  %3178 = load ptr, ptr %3177, align 8, !tbaa !127
  %3179 = load ptr, ptr %20, align 8, !tbaa !5
  %3180 = getelementptr inbounds %struct.ImGuiContext, ptr %3179, i32 0, i32 6
  %3181 = load float, ptr %3180, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #14
  %3182 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %151)
  store <2 x float> %3182, ptr %169, align 4
  %3183 = load i32, ptr %168, align 4, !tbaa !9
  %3184 = load ptr, ptr %135, align 8, !tbaa !5
  %3185 = load ptr, ptr %136, align 8, !tbaa !5
  %3186 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3187 = trunc i8 %3186 to i1
  br i1 %3187, label %3188, label %3189

3188:                                             ; preds = %3167
  br label %3190

3189:                                             ; preds = %3167
  br label %3190

3190:                                             ; preds = %3189, %3188
  %3191 = phi ptr [ null, %3188 ], [ %131, %3189 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3175, ptr noundef %3178, float noundef %3181, ptr noundef nonnull align 4 dereferenceable(8) %169, i32 noundef %3183, ptr noundef %3184, ptr noundef %3185, float noundef 0.000000e+00, ptr noundef %3191)
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #14
  br label %3192

3192:                                             ; preds = %3190, %3160
  %3193 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3194 = trunc i8 %3193 to i1
  br i1 %3194, label %3195, label %3269

3195:                                             ; preds = %3192
  %3196 = load ptr, ptr %21, align 8, !tbaa !5
  %3197 = getelementptr inbounds %struct.ImGuiIO, ptr %3196, i32 0, i32 3
  %3198 = load float, ptr %3197, align 8, !tbaa !191
  %3199 = load ptr, ptr %47, align 8, !tbaa !5
  %3200 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3199, i32 0, i32 12
  %3201 = load float, ptr %3200, align 8, !tbaa !192
  %3202 = fadd float %3201, %3198
  store float %3202, ptr %3200, align 8, !tbaa !192
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #14
  %3203 = load ptr, ptr %20, align 8, !tbaa !5
  %3204 = getelementptr inbounds %struct.ImGuiContext, ptr %3203, i32 0, i32 3
  %3205 = getelementptr inbounds %struct.ImGuiIO, ptr %3204, i32 0, i32 21
  %3206 = load i8, ptr %3205, align 2, !tbaa !193, !range !40, !noundef !41
  %3207 = trunc i8 %3206 to i1
  br i1 %3207, label %3208, label %3219

3208:                                             ; preds = %3195
  %3209 = load ptr, ptr %47, align 8, !tbaa !5
  %3210 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3209, i32 0, i32 12
  %3211 = load float, ptr %3210, align 8, !tbaa !192
  %3212 = fcmp ole float %3211, 0.000000e+00
  br i1 %3212, label %3219, label %3213

3213:                                             ; preds = %3208
  %3214 = load ptr, ptr %47, align 8, !tbaa !5
  %3215 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3214, i32 0, i32 12
  %3216 = load float, ptr %3215, align 8, !tbaa !192
  %3217 = call float @fmodf(float noundef %3216, float noundef 0x3FF3333340000000) #14
  %3218 = fcmp ole float %3217, 0x3FE99999A0000000
  br label %3219

3219:                                             ; preds = %3213, %3208, %3195
  %3220 = phi i1 [ true, %3208 ], [ true, %3195 ], [ %3218, %3213 ]
  %3221 = zext i1 %3220 to i8
  store i8 %3221, ptr %170, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #14
  %3222 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %138)
  store <2 x float> %3222, ptr %173, align 4
  %3223 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %173, ptr noundef nonnull align 4 dereferenceable(8) %151)
  store <2 x float> %3223, ptr %172, align 4
  %3224 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %172)
  store <2 x float> %3224, ptr %171, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %174) #14
  %3225 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 0
  %3226 = load float, ptr %3225, align 4, !tbaa !93
  %3227 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 1
  %3228 = load float, ptr %3227, align 4, !tbaa !91
  %3229 = load ptr, ptr %20, align 8, !tbaa !5
  %3230 = getelementptr inbounds %struct.ImGuiContext, ptr %3229, i32 0, i32 6
  %3231 = load float, ptr %3230, align 8, !tbaa !45
  %3232 = fsub float %3228, %3231
  %3233 = fadd float %3232, 5.000000e-01
  %3234 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 0
  %3235 = load float, ptr %3234, align 4, !tbaa !93
  %3236 = fadd float %3235, 1.000000e+00
  %3237 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 1
  %3238 = load float, ptr %3237, align 4, !tbaa !91
  %3239 = fsub float %3238, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %174, float noundef %3226, float noundef %3233, float noundef %3236, float noundef %3239)
  %3240 = load i8, ptr %170, align 1, !tbaa !42, !range !40, !noundef !41
  %3241 = trunc i8 %3240 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %175) #14
  br i1 %3241, label %3242, label %3244

3242:                                             ; preds = %3219
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %175, ptr noundef nonnull align 4 dereferenceable(16) %131)
  %3243 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %174, ptr noundef nonnull align 4 dereferenceable(16) %175)
  br label %3244

3244:                                             ; preds = %3242, %3219
  %3245 = phi i1 [ false, %3219 ], [ %3243, %3242 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #14
  br i1 %3245, label %3246, label %3253

3246:                                             ; preds = %3244
  %3247 = load ptr, ptr %38, align 8, !tbaa !5
  %3248 = getelementptr inbounds %struct.ImGuiWindow, ptr %3247, i32 0, i32 72
  %3249 = load ptr, ptr %3248, align 8, !tbaa !189
  %3250 = getelementptr inbounds %struct.ImRect, ptr %174, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #14
  %3251 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %174)
  store <2 x float> %3251, ptr %176, align 4
  %3252 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %3249, ptr noundef nonnull align 4 dereferenceable(8) %3250, ptr noundef nonnull align 4 dereferenceable(8) %176, i32 noundef %3252, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #14
  br label %3253

3253:                                             ; preds = %3246, %3244
  %3254 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %3255 = trunc i8 %3254 to i1
  br i1 %3255, label %3268, label %3256

3256:                                             ; preds = %3253
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #14
  %3257 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 0
  %3258 = load float, ptr %3257, align 4, !tbaa !93
  %3259 = fsub float %3258, 1.000000e+00
  %3260 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 1
  %3261 = load float, ptr %3260, align 4, !tbaa !91
  %3262 = load ptr, ptr %20, align 8, !tbaa !5
  %3263 = getelementptr inbounds %struct.ImGuiContext, ptr %3262, i32 0, i32 6
  %3264 = load float, ptr %3263, align 8, !tbaa !45
  %3265 = fsub float %3261, %3264
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %177, float noundef %3259, float noundef %3265)
  %3266 = load ptr, ptr %20, align 8, !tbaa !5
  %3267 = getelementptr inbounds %struct.ImGuiContext, ptr %3266, i32 0, i32 197
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3267, ptr align 4 %177, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #14
  br label %3268

3268:                                             ; preds = %3256, %3253
  call void @llvm.lifetime.end.p0(i64 16, ptr %174) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #14
  br label %3269

3269:                                             ; preds = %3268, %3192
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #14
  br label %3344

3270:                                             ; preds = %2694
  %3271 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3272 = trunc i8 %3271 to i1
  br i1 %3272, label %3273, label %3283

3273:                                             ; preds = %3270
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #14
  %3274 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %3275 = load float, ptr %3274, align 4, !tbaa !93
  %3276 = load ptr, ptr %135, align 8, !tbaa !5
  %3277 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3276, ptr noundef %136)
  %3278 = sitofp i32 %3277 to float
  %3279 = load ptr, ptr %20, align 8, !tbaa !5
  %3280 = getelementptr inbounds %struct.ImGuiContext, ptr %3279, i32 0, i32 6
  %3281 = load float, ptr %3280, align 8, !tbaa !45
  %3282 = fmul float %3278, %3281
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %178, float noundef %3275, float noundef %3282)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %133, ptr align 4 %178, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #14
  br label %3309

3283:                                             ; preds = %3270
  %3284 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3285 = trunc i8 %3284 to i1
  br i1 %3285, label %3299, label %3286

3286:                                             ; preds = %3283
  %3287 = load ptr, ptr %20, align 8, !tbaa !5
  %3288 = getelementptr inbounds %struct.ImGuiContext, ptr %3287, i32 0, i32 44
  %3289 = load i32, ptr %3288, align 4, !tbaa !104
  %3290 = load i32, ptr %29, align 4, !tbaa !9
  %3291 = icmp eq i32 %3289, %3290
  br i1 %3291, label %3292, label %3299

3292:                                             ; preds = %3286
  %3293 = load ptr, ptr %135, align 8, !tbaa !5
  %3294 = load ptr, ptr %47, align 8, !tbaa !5
  %3295 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3294, i32 0, i32 2
  %3296 = load i32, ptr %3295, align 8, !tbaa !115
  %3297 = sext i32 %3296 to i64
  %3298 = getelementptr inbounds i8, ptr %3293, i64 %3297
  store ptr %3298, ptr %136, align 8, !tbaa !5
  br label %3308

3299:                                             ; preds = %3286, %3283
  %3300 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3301 = trunc i8 %3300 to i1
  br i1 %3301, label %3307, label %3302

3302:                                             ; preds = %3299
  %3303 = load ptr, ptr %135, align 8, !tbaa !5
  %3304 = load ptr, ptr %135, align 8, !tbaa !5
  %3305 = call i64 @strlen(ptr noundef %3304) #16
  %3306 = getelementptr inbounds i8, ptr %3303, i64 %3305
  store ptr %3306, ptr %136, align 8, !tbaa !5
  br label %3307

3307:                                             ; preds = %3302, %3299
  br label %3308

3308:                                             ; preds = %3307, %3292
  br label %3309

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

3312:                                             ; preds = %3309
  %3313 = load ptr, ptr %136, align 8, !tbaa !5
  %3314 = load ptr, ptr %135, align 8, !tbaa !5
  %3315 = ptrtoint ptr %3313 to i64
  %3316 = ptrtoint ptr %3314 to i64
  %3317 = sub i64 %3315, %3316
  %3318 = icmp slt i64 %3317, 2097152
  br i1 %3318, label %3319, label %3343

3319:                                             ; preds = %3312, %3309
  call void @llvm.lifetime.start.p0(i64 4, ptr %179) #14
  %3320 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3321 = trunc i8 %3320 to i1
  %3322 = zext i1 %3321 to i64
  %3323 = select i1 %3321, i32 1, i32 0
  %3324 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3323, float noundef 1.000000e+00)
  store i32 %3324, ptr %179, align 4, !tbaa !9
  %3325 = load ptr, ptr %38, align 8, !tbaa !5
  %3326 = getelementptr inbounds %struct.ImGuiWindow, ptr %3325, i32 0, i32 72
  %3327 = load ptr, ptr %3326, align 8, !tbaa !189
  %3328 = load ptr, ptr %20, align 8, !tbaa !5
  %3329 = getelementptr inbounds %struct.ImGuiContext, ptr %3328, i32 0, i32 5
  %3330 = load ptr, ptr %3329, align 8, !tbaa !127
  %3331 = load ptr, ptr %20, align 8, !tbaa !5
  %3332 = getelementptr inbounds %struct.ImGuiContext, ptr %3331, i32 0, i32 6
  %3333 = load float, ptr %3332, align 8, !tbaa !45
  %3334 = load i32, ptr %179, align 4, !tbaa !9
  %3335 = load ptr, ptr %135, align 8, !tbaa !5
  %3336 = load ptr, ptr %136, align 8, !tbaa !5
  %3337 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3338 = trunc i8 %3337 to i1
  br i1 %3338, label %3339, label %3340

3339:                                             ; preds = %3319
  br label %3341

3340:                                             ; preds = %3319
  br label %3341

3341:                                             ; preds = %3340, %3339
  %3342 = phi ptr [ null, %3339 ], [ %131, %3340 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3327, ptr noundef %3330, float noundef %3333, ptr noundef nonnull align 4 dereferenceable(8) %132, i32 noundef %3334, ptr noundef %3335, ptr noundef %3336, float noundef 0.000000e+00, ptr noundef %3342)
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #14
  br label %3343

3343:                                             ; preds = %3341, %3312
  br label %3344

3344:                                             ; preds = %3343, %3269
  %3345 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3346 = trunc i8 %3345 to i1
  br i1 %3346, label %3347, label %3351

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

3350:                                             ; preds = %3347
  call void @_ZN5ImGui7PopFontEv()
  br label %3351

3351:                                             ; preds = %3350, %3347, %3344
  %3352 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3353 = trunc i8 %3352 to i1
  br i1 %3353, label %3354, label %3403

3354:                                             ; preds = %3351
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #14
  %3355 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 0
  %3356 = load float, ptr %3355, align 4, !tbaa !93
  %3357 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 1
  %3358 = load float, ptr %3357, align 4, !tbaa !91
  %3359 = load ptr, ptr %22, align 8, !tbaa !5
  %3360 = getelementptr inbounds %struct.ImGuiStyle, ptr %3359, i32 0, i32 12
  %3361 = getelementptr inbounds %struct.ImVec2, ptr %3360, i32 0, i32 1
  %3362 = load float, ptr %3361, align 4, !tbaa !92
  %3363 = fadd float %3358, %3362
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %180, float noundef %3356, float noundef %3363)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %180)
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %181) #14
  %3364 = load ptr, ptr %20, align 8, !tbaa !5
  %3365 = getelementptr inbounds %struct.ImGuiContext, ptr %3364, i32 0, i32 69
  %3366 = load i32, ptr %3365, align 8, !tbaa !194
  store i32 %3366, ptr %181, align 4, !tbaa !9
  %3367 = load ptr, ptr %20, align 8, !tbaa !5
  %3368 = getelementptr inbounds %struct.ImGuiContext, ptr %3367, i32 0, i32 69
  %3369 = load i32, ptr %3368, align 8, !tbaa !194
  %3370 = or i32 %3369, 257
  store i32 %3370, ptr %3368, align 8, !tbaa !194
  call void @_ZN5ImGui8EndChildEv()
  %3371 = load ptr, ptr %20, align 8, !tbaa !5
  %3372 = getelementptr inbounds %struct.ImGuiContext, ptr %3371, i32 0, i32 71
  %3373 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3372, i32 0, i32 2
  %3374 = load i32, ptr %3373, align 8, !tbaa !95
  %3375 = and i32 %3374, 128
  %3376 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 2
  %3377 = load i32, ptr %3376, align 4, !tbaa !195
  %3378 = or i32 %3377, %3375
  store i32 %3378, ptr %3376, align 4, !tbaa !195
  %3379 = load i32, ptr %181, align 4, !tbaa !9
  %3380 = load ptr, ptr %20, align 8, !tbaa !5
  %3381 = getelementptr inbounds %struct.ImGuiContext, ptr %3380, i32 0, i32 69
  store i32 %3379, ptr %3381, align 8, !tbaa !194
  call void @_ZN5ImGui8EndGroupEv()
  %3382 = load ptr, ptr %20, align 8, !tbaa !5
  %3383 = getelementptr inbounds %struct.ImGuiContext, ptr %3382, i32 0, i32 71
  %3384 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3383, i32 0, i32 0
  %3385 = load i32, ptr %3384, align 8, !tbaa !196
  %3386 = icmp eq i32 %3385, 0
  br i1 %3386, label %3387, label %3402

3387:                                             ; preds = %3354
  %3388 = load i32, ptr %29, align 4, !tbaa !9
  %3389 = load ptr, ptr %20, align 8, !tbaa !5
  %3390 = getelementptr inbounds %struct.ImGuiContext, ptr %3389, i32 0, i32 71
  %3391 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3390, i32 0, i32 0
  store i32 %3388, ptr %3391, align 8, !tbaa !196
  %3392 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 1
  %3393 = load i32, ptr %3392, align 4, !tbaa !197
  %3394 = load ptr, ptr %20, align 8, !tbaa !5
  %3395 = getelementptr inbounds %struct.ImGuiContext, ptr %3394, i32 0, i32 71
  %3396 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3395, i32 0, i32 1
  store i32 %3393, ptr %3396, align 4, !tbaa !198
  %3397 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 2
  %3398 = load i32, ptr %3397, align 4, !tbaa !195
  %3399 = load ptr, ptr %20, align 8, !tbaa !5
  %3400 = getelementptr inbounds %struct.ImGuiContext, ptr %3399, i32 0, i32 71
  %3401 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3400, i32 0, i32 2
  store i32 %3398, ptr %3401, align 8, !tbaa !95
  br label %3402

3402:                                             ; preds = %3387, %3354
  call void @llvm.lifetime.end.p0(i64 4, ptr %181) #14
  br label %3403

3403:                                             ; preds = %3402, %3351
  %3404 = load ptr, ptr %20, align 8, !tbaa !5
  %3405 = getelementptr inbounds %struct.ImGuiContext, ptr %3404, i32 0, i32 209
  %3406 = load i8, ptr %3405, align 4, !tbaa !199, !range !40, !noundef !41
  %3407 = trunc i8 %3406 to i1
  br i1 %3407, label %3408, label %3417

3408:                                             ; preds = %3403
  %3409 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3410 = trunc i8 %3409 to i1
  br i1 %3410, label %3411, label %3414

3411:                                             ; preds = %3408
  %3412 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3413 = trunc i8 %3412 to i1
  br i1 %3413, label %3414, label %3417

3414:                                             ; preds = %3411, %3408
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef @.str.25, ptr noundef @.str.26)
  %3415 = load ptr, ptr %135, align 8, !tbaa !5
  %3416 = load ptr, ptr %136, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %132, ptr noundef %3415, ptr noundef %3416)
  br label %3417

3417:                                             ; preds = %3414, %3411, %3403
  %3418 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3419 = load float, ptr %3418, align 4, !tbaa !93
  %3420 = fcmp ogt float %3419, 0.000000e+00
  br i1 %3420, label %3421, label %3440

3421:                                             ; preds = %3417
  %3422 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  %3423 = getelementptr inbounds %struct.ImVec2, ptr %3422, i32 0, i32 0
  %3424 = load float, ptr %3423, align 4, !tbaa !200
  %3425 = load ptr, ptr %22, align 8, !tbaa !5
  %3426 = getelementptr inbounds %struct.ImGuiStyle, ptr %3425, i32 0, i32 16
  %3427 = getelementptr inbounds %struct.ImVec2, ptr %3426, i32 0, i32 0
  %3428 = load float, ptr %3427, align 4, !tbaa !94
  %3429 = fadd float %3424, %3428
  %3430 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %3431 = getelementptr inbounds %struct.ImVec2, ptr %3430, i32 0, i32 1
  %3432 = load float, ptr %3431, align 4, !tbaa !184
  %3433 = load ptr, ptr %22, align 8, !tbaa !5
  %3434 = getelementptr inbounds %struct.ImGuiStyle, ptr %3433, i32 0, i32 12
  %3435 = getelementptr inbounds %struct.ImVec2, ptr %3434, i32 0, i32 1
  %3436 = load float, ptr %3435, align 4, !tbaa !92
  %3437 = fadd float %3432, %3436
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %182, float noundef %3429, float noundef %3437)
  %3438 = load ptr, ptr %10, align 8, !tbaa !5
  %3439 = load <2 x float>, ptr %182, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3439, ptr noundef %3438, ptr noundef null, i1 noundef zeroext true)
  br label %3440

3440:                                             ; preds = %3421, %3417
  %3441 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3442 = trunc i8 %3441 to i1
  br i1 %3442, label %3443, label %3449

3443:                                             ; preds = %3440
  %3444 = load i32, ptr %15, align 4, !tbaa !9
  %3445 = and i32 %3444, 134217728
  %3446 = icmp ne i32 %3445, 0
  br i1 %3446, label %3449, label %3447

3447:                                             ; preds = %3443
  %3448 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3448)
  br label %3449

3449:                                             ; preds = %3447, %3443, %3440
  %3450 = load i32, ptr %15, align 4, !tbaa !9
  %3451 = and i32 %3450, 32
  %3452 = icmp ne i32 %3451, 0
  br i1 %3452, label %3453, label %3456

3453:                                             ; preds = %3449
  %3454 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %3455 = trunc i8 %3454 to i1
  store i1 %3455, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3459

3456:                                             ; preds = %3449
  %3457 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3458 = trunc i8 %3457 to i1
  store i1 %3458, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3459

3459:                                             ; preds = %3456, %3453
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #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 16, ptr %131) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  br label %3460

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

3461:                                             ; preds = %3460, %188
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  %3462 = load i1, ptr %9, align 1
  ret i1 %3462

3463:                                             ; preds = %2171
  %3464 = load ptr, ptr %116, align 8
  %3465 = load i32, ptr %117, align 4
  %3466 = insertvalue { ptr, i32 } poison, ptr %3464, 0
  %3467 = insertvalue { ptr, i32 } %3466, i32 %3465, 1
  resume { ptr, i32 } %3467

3468:                                             ; preds = %1365
  unreachable
}

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

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

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

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(3716)) #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(3716)) #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(3716)) #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 noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef, i32 noundef) #11

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef, ptr noundef, float noundef, float noundef) #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(3716)) #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, !15, i64 152, !7, i64 153, !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 448, !24, i64 464, !24, i64 480, !24, i64 496, !24, i64 512, !24, i64 528, !24, i64 544, !25, i64 560, !25, i64 564, !10, i64 568, !14, i64 572, !14, i64 576, !26, i64 584, !28, i64 600, !14, i64 616, !10, i64 620, !6, i64 624, !29, i64 632, !6, i64 832, !6, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !7, i64 888, !7, i64 896, !10, i64 928, !10, i64 932, !15, i64 936}
!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, !13, i64 76, !20, i64 84, !16, i64 88, !16, i64 90, !10, i64 92, !15, i64 96, !15, i64 97, !15, i64 98, !13, i64 100, !21, i64 108, !10, i64 136, !10, i64 140, !22, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !14, i64 188, !14, i64 192, !23, i64 200, !23, i64 216}
!19 = !{!"_ZTS6ImVec1", !14, i64 0}
!20 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!21 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !7, i64 18}
!22 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!25 = !{!"_ZTS8ImVec2ih", !16, i64 0, !16, i64 2}
!26 = !{!"_ZTS12ImGuiStorage", !27, i64 0}
!27 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS10ImDrawList", !30, i64 0, !31, i64 16, !32, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !33, i64 88, !34, i64 104, !35, i64 120, !36, i64 136, !38, i64 168, !14, i64 192}
!30 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS15ImDrawCmdHeader", !37, i64 0, !6, i64 16, !10, i64 24}
!37 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!38 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !39, i64 8}
!39 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!15, !15, i64 0}
!43 = !{i64 0, i64 4, !44, i64 4, i64 4, !44}
!44 = !{!14, !14, i64 0}
!45 = !{!46, !14, i64 6544}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !48, i64 5488, !6, i64 6536, !14, i64 6544, !14, i64 6548, !49, i64 6552, !50, i64 7064, !10, i64 7072, !10, i64 7076, !10, i64 7080, !15, i64 7084, !15, i64 7085, !15, i64 7086, !15, i64 7087, !15, i64 7088, !6, i64 7096, !22, i64 7104, !22, i64 7120, !22, i64 7136, !51, i64 7152, !26, i64 7168, !10, i64 7184, !13, i64 7188, !6, i64 7200, !6, i64 7208, !6, i64 7216, !6, i64 7224, !6, i64 7232, !13, i64 7240, !14, i64 7248, !10, i64 7252, !10, i64 7256, !10, i64 7260, !15, i64 7264, !15, i64 7265, !15, i64 7266, !15, i64 7267, !14, i64 7268, !14, i64 7272, !10, i64 7276, !10, i64 7280, !14, i64 7284, !15, i64 7288, !15, i64 7289, !15, i64 7290, !15, i64 7291, !15, i64 7292, !15, i64 7293, !15, i64 7294, !10, i64 7296, !10, i64 7300, !52, i64 7304, !13, i64 7312, !6, i64 7320, !53, i64 7328, !10, i64 7332, !10, i64 7336, !15, i64 7340, !15, i64 7341, !6, i64 7344, !10, i64 7352, !14, i64 7356, !10, i64 7360, !54, i64 7364, !55, i64 7384, !56, i64 7448, !57, i64 7560, !58, i64 7576, !59, i64 7592, !17, i64 7608, !60, i64 7624, !61, i64 7640, !62, i64 7656, !62, i64 7672, !10, i64 7688, !63, i64 7696, !6, i64 7712, !10, i64 7720, !10, i64 7724, !10, i64 7728, !10, i64 7732, !10, i64 7736, !10, i64 7740, !10, i64 7744, !10, i64 7748, !10, i64 7752, !10, i64 7756, !10, i64 7760, !10, i64 7764, !53, i64 7768, !20, i64 7772, !15, i64 7776, !15, i64 7777, !15, i64 7778, !15, i64 7779, !15, i64 7780, !15, i64 7781, !15, i64 7782, !10, i64 7784, !24, i64 7788, !15, i64 7804, !15, i64 7805, !15, i64 7806, !10, i64 7808, !10, i64 7812, !10, i64 7816, !10, i64 7820, !10, i64 7824, !10, i64 7828, !24, i64 7832, !24, i64 7848, !10, i64 7864, !10, i64 7868, !10, i64 7872, !64, i64 7880, !64, i64 7928, !64, i64 7976, !64, i64 8024, !6, i64 8072, !6, i64 8080, !6, i64 8088, !14, i64 8096, !14, i64 8100, !15, i64 8104, !14, i64 8108, !10, i64 8112, !15, i64 8116, !15, i64 8117, !15, i64 8118, !10, i64 8120, !10, i64 8124, !10, i64 8128, !65, i64 8136, !24, i64 8200, !10, i64 8216, !10, i64 8220, !14, i64 8224, !10, i64 8228, !10, i64 8232, !10, i64 8236, !10, i64 8240, !66, i64 8248, !7, i64 8264, !10, i64 8280, !67, i64 8288, !6, i64 8304, !10, i64 8312, !68, i64 8320, !69, i64 8336, !23, i64 8376, !39, i64 8392, !6, i64 8408, !71, i64 8416, !73, i64 8456, !74, i64 8472, !13, i64 8488, !75, i64 8496, !79, i64 12216, !10, i64 12328, !10, i64 12332, !14, i64 12336, !14, i64 12340, !10, i64 12344, !37, i64 12348, !81, i64 12364, !14, i64 12412, !15, i64 12416, !15, i64 12417, !14, i64 12420, !14, i64 12424, !14, i64 12428, !14, i64 12432, !16, i64 12436, !16, i64 12438, !14, i64 12440, !76, i64 12448, !17, i64 12464, !13, i64 12480, !13, i64 12488, !7, i64 12496, !15, i64 12497, !14, i64 12500, !82, i64 12504, !83, i64 12520, !84, i64 12536, !85, i64 12552, !86, i64 12568, !10, i64 12584, !15, i64 12588, !87, i64 12592, !6, i64 12600, !82, i64 12608, !6, i64 12624, !6, i64 12632, !14, i64 12640, !15, i64 12644, !10, i64 12648, !10, i64 12652, !10, i64 12656, !15, i64 12660, !10, i64 12664, !88, i64 12668, !89, i64 12688, !7, i64 12720, !10, i64 13200, !10, i64 13204, !14, i64 13208, !10, i64 13212, !10, i64 13216, !10, i64 13220, !7, i64 13224}
!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 1068, !7, i64 1078, !7, i64 1083, !7, i64 1088, !7, i64 1096, !7, i64 1116, !7, i64 1136, !7, i64 1176, !7, i64 1196, !7, i64 3244, !7, i64 5292, !7, i64 5372, !14, i64 5452, !15, i64 5456, !16, i64 5458, !31, i64 5464}
!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 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS6ImPoolI10ImGuiTableE", !70, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!70 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !72, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!72 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !31, i64 16, !76, i64 32, !76, i64 48, !15, i64 64, !10, i64 68, !14, i64 72, !77, i64 76, !14, i64 3704, !15, i64 3708, !15, i64 3709, !15, i64 3710, !10, i64 3712}
!76 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_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, !78, i64 32}
!78 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!79 = !{!"_ZTS6ImFont", !23, i64 0, !14, i64 16, !14, i64 20, !31, i64 24, !80, 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}
!80 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!81 = !{!"_ZTS21ImGuiComboPreviewData", !24, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!82 = !{!"_ZTS15ImGuiTextBuffer", !76, i64 0}
!83 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!84 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !76, i64 0}
!85 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !76, i64 0}
!86 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!87 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!88 = !{!"_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}
!89 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !90, i64 16}
!90 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!91 = !{!13, !14, i64 4}
!92 = !{!48, !14, i64 64}
!93 = !{!13, !14, i64 0}
!94 = !{!48, !14, i64 84}
!95 = !{!46, !10, i64 7392}
!96 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !44, i64 16, i64 4, !44, i64 20, i64 4, !44, i64 24, i64 4, !44, i64 28, i64 4, !44, i64 32, i64 4, !44, i64 36, i64 4, !44, i64 40, i64 4, !44, i64 44, i64 4, !44, i64 48, i64 4, !44, i64 52, i64 4, !44, i64 56, i64 4, !44}
!97 = !{!48, !14, i64 68}
!98 = !{!48, !14, i64 72}
!99 = !{!46, !6, i64 7200}
!100 = !{!12, !20, i64 300}
!101 = !{!12, !16, i64 306}
!102 = !{!12, !14, i64 132}
!103 = !{!46, !10, i64 8112}
!104 = !{!46, !10, i64 7276}
!105 = !{!46, !10, i64 7740}
!106 = !{!46, !10, i64 7728}
!107 = !{!46, !53, i64 7768}
!108 = !{!46, !10, i64 7336}
!109 = !{!12, !14, i64 96}
!110 = !{!75, !7, i64 99}
!111 = !{!75, !6, i64 56}
!112 = !{!75, !15, i64 64}
!113 = !{!75, !6, i64 24}
!114 = !{!75, !10, i64 4}
!115 = !{!75, !10, i64 8}
!116 = !{!75, !10, i64 0}
!117 = !{!75, !14, i64 72}
!118 = !{!46, !10, i64 7744}
!119 = !{!47, !15, i64 312}
!120 = !{!75, !7, i64 88}
!121 = !{!46, !10, i64 7296}
!122 = !{!46, !10, i64 7300}
!123 = !{!46, !52, i64 7304}
!124 = !{!75, !10, i64 16}
!125 = !{!75, !6, i64 40}
!126 = !{!7, !7, i64 0}
!127 = !{!46, !6, i64 6536}
!128 = !{!79, !14, i64 20}
!129 = !{!79, !14, i64 92}
!130 = !{!79, !14, i64 96}
!131 = !{!79, !14, i64 100}
!132 = !{!79, !6, i64 64}
!133 = !{!79, !6, i64 56}
!134 = !{!135, !14, i64 4}
!135 = !{!"_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}
!136 = !{!79, !14, i64 16}
!137 = !{!75, !15, i64 3710}
!138 = !{!75, !10, i64 68}
!139 = !{!75, !10, i64 3712}
!140 = !{!46, !15, i64 7289}
!141 = !{!46, !10, i64 13220}
!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 = !{!75, !15, i64 3709}
!149 = !{!16, !16, i64 0}
!150 = !{!47, !15, i64 313}
!151 = !{!75, !10, i64 76}
!152 = !{!75, !10, i64 80}
!153 = !{!75, !10, i64 84}
!154 = !{!75, !15, i64 3708}
!155 = !{!47, !14, i64 940}
!156 = !{!47, !14, i64 944}
!157 = !{!47, !15, i64 314}
!158 = !{!47, !15, i64 315}
!159 = !{!47, !10, i64 5464}
!160 = distinct !{!160, !161}
!161 = !{!"llvm.loop.mustprogress"}
!162 = !{!46, !15, i64 7288}
!163 = !{!47, !10, i64 952}
!164 = !{!75, !10, i64 92}
!165 = !{!46, !15, i64 201}
!166 = !{!47, !6, i64 256}
!167 = distinct !{!167, !161}
!168 = !{!75, !10, i64 48}
!169 = !{!31, !6, i64 8}
!170 = !{!31, !10, i64 0}
!171 = !{!75, !10, i64 32}
!172 = !{!173, !10, i64 0}
!173 = !{!"_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}
!174 = !{!173, !10, i64 4}
!175 = !{!173, !6, i64 8}
!176 = !{!173, !10, i64 20}
!177 = !{!173, !6, i64 24}
!178 = !{!173, !10, i64 32}
!179 = !{!173, !10, i64 36}
!180 = !{!173, !15, i64 40}
!181 = !{!173, !10, i64 44}
!182 = !{!173, !10, i64 48}
!183 = !{!173, !10, i64 52}
!184 = !{!24, !14, i64 4}
!185 = distinct !{!185, !161}
!186 = !{!37, !14, i64 12}
!187 = !{!37, !14, i64 4}
!188 = distinct !{!188, !161}
!189 = !{!12, !6, i64 624}
!190 = distinct !{!190, !161}
!191 = !{!47, !14, i64 16}
!192 = !{!75, !14, i64 3704}
!193 = !{!46, !15, i64 202}
!194 = !{!46, !10, i64 7360}
!195 = !{!55, !10, i64 8}
!196 = !{!46, !10, i64 7384}
!197 = !{!55, !10, i64 4}
!198 = !{!46, !10, i64 7388}
!199 = !{!46, !15, i64 12588}
!200 = !{!24, !14, i64 8}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [98 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 [34 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(937), 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 @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

92:                                               ; preds = %88
  %93 = getelementptr inbounds i8, ptr %77, i64 6544
  %94 = load float, ptr %93, align 8, !tbaa !41
  %95 = fmul float %94, 8.000000e+00
  br label %97

96:                                               ; preds = %88
  %.sroa.0524.4.vec.extract = extractelement <2 x float> %90, i64 1
  br label %97

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

107:                                              ; preds = %97
  %108 = getelementptr inbounds i8, ptr %77, i64 5572
  %109 = load float, ptr %108, align 4, !tbaa !88
  %110 = fadd float %.sroa.0524.0.vec.extract, %109
  br label %111

111:                                              ; preds = %97, %107
  %112 = phi float [ %110, %107 ], [ 0.000000e+00, %97 ]
  %113 = fadd float %104, %112
  %114 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %113, float noundef %106)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #15
  %115 = getelementptr inbounds i8, ptr %56, i64 216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15
  %116 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %115, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %116, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %115, 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
  %117 = 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> %117, 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.0494.0.copyload = load float, ptr %9, align 8, !tbaa !89
  %.sroa.11.0.copyload = load float, ptr %114, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 60, ptr nonnull %15) #15
  call void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(60) %15)
  br i1 %68, label %118, label %150

118:                                              ; preds = %111
  %119 = load i64, ptr %115, align 8
  %120 = load float, ptr %100, align 4, !tbaa !87
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %120)
  %121 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %89, ptr noundef nonnull %11, i32 noundef 256)
  br i1 %121, label %123, label %122

122:                                              ; preds = %118
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread

123:                                              ; preds = %118
  %124 = getelementptr inbounds i8, ptr %77, i64 7384
  %125 = getelementptr inbounds i8, ptr %77, i64 7392
  %126 = load i32, ptr %125, align 8, !tbaa !90
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(60) %15, ptr noundef nonnull align 8 dereferenceable(60) %124, i64 60, i1 false), !tbaa.struct !91
  store i64 %119, ptr %115, align 8
  %127 = getelementptr inbounds i8, ptr %77, i64 5800
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %127)
  %128 = getelementptr inbounds i8, ptr %77, i64 5556
  %129 = load float, ptr %128, align 4, !tbaa !93
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %129)
  %130 = getelementptr inbounds i8, ptr %77, i64 5560
  %131 = load float, ptr %130, align 4, !tbaa !94
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %131)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(8) %16)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #15
  %132 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %132, ptr %17, align 8
  %133 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %0, i32 noundef %89, ptr noundef nonnull align 4 dereferenceable(8) %17, i1 noundef zeroext true, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #15
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  br i1 %133, label %135, label %134

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

135:                                              ; preds = %123
  %136 = getelementptr inbounds i8, ptr %77, i64 7200
  %137 = load ptr, ptr %136, align 8, !tbaa !95
  %138 = getelementptr inbounds i8, ptr %137, i64 216
  %139 = getelementptr inbounds i8, ptr %137, i64 300
  %140 = load i32, ptr %139, align 4, !tbaa !96
  %141 = shl nuw i32 1, %140
  %142 = getelementptr inbounds i8, ptr %137, i64 306
  %143 = load i16, ptr %142, align 2, !tbaa !97
  %144 = trunc i32 %141 to i16
  %145 = or i16 %143, %144
  store i16 %145, ptr %142, align 2, !tbaa !97
  %146 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %138, ptr noundef nonnull align 4 dereferenceable(8) %99)
  %147 = getelementptr inbounds i8, ptr %137, i64 132
  %148 = load float, ptr %147, align 4, !tbaa !98
  %149 = fsub float %.sroa.0494.0.copyload, %148
  br label %158

150:                                              ; preds = %111
  %151 = load float, ptr %100, align 4, !tbaa !87
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %151)
  %152 = and i32 %5, 268435456
  %.not946 = icmp eq i32 %152, 0
  br i1 %.not946, label %153, label %155

153:                                              ; preds = %150
  %154 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %89, ptr noundef nonnull %11, i32 noundef 256)
  br i1 %154, label %155, label %.thread

155:                                              ; preds = %153, %150
  %156 = getelementptr inbounds i8, ptr %77, i64 7392
  %157 = load i32, ptr %156, align 8, !tbaa !90
  br label %158

158:                                              ; preds = %135, %155
  %.1866 = phi i32 [ %126, %135 ], [ %157, %155 ]
  %.sroa.0494.2 = phi float [ %149, %135 ], [ %.sroa.0494.0.copyload, %155 ]
  %.2864 = phi ptr [ %137, %135 ], [ %56, %155 ]
  %159 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %89)
  br i1 %159, label %160, label %162

160:                                              ; preds = %158
  %161 = getelementptr inbounds i8, ptr %77, i64 8112
  store i32 1, ptr %161, align 8, !tbaa !99
  br label %162

162:                                              ; preds = %160, %158
  %163 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %89)
  %164 = and i32 %.1866, 256
  %165 = icmp ne i32 %164, 0
  %166 = getelementptr inbounds i8, ptr %77, i64 7276
  %167 = load i32, ptr %166, align 4, !tbaa !100
  %.not947 = icmp eq i32 %167, %89
  br i1 %.not947, label %180, label %168

168:                                              ; preds = %162
  %169 = getelementptr inbounds i8, ptr %77, i64 7740
  %170 = load i32, ptr %169, align 4, !tbaa !101
  %171 = icmp eq i32 %170, %89
  br i1 %171, label %180, label %172

172:                                              ; preds = %168
  %173 = getelementptr inbounds i8, ptr %77, i64 7728
  %174 = load i32, ptr %173, align 8, !tbaa !102
  %175 = icmp eq i32 %174, %89
  br i1 %175, label %176, label %180

176:                                              ; preds = %172
  %177 = getelementptr inbounds i8, ptr %77, i64 7768
  %178 = load i32, ptr %177, align 8, !tbaa !103
  %179 = icmp eq i32 %178, 2
  br label %180

180:                                              ; preds = %168, %176, %172, %162
  %181 = phi i1 [ false, %162 ], [ true, %168 ], [ false, %172 ], [ %179, %176 ]
  br i1 %159, label %182, label %186

182:                                              ; preds = %180
  %183 = getelementptr inbounds i8, ptr %77, i64 1056
  %184 = load i8, ptr %183, align 8, !tbaa !104, !range !38, !noundef !39
  %185 = trunc nuw i8 %184 to i1
  br label %186

186:                                              ; preds = %182, %180
  %187 = phi i1 [ false, %180 ], [ %185, %182 ]
  %188 = icmp ne ptr %163, null
  %or.cond = and i1 %68, %188
  br i1 %or.cond, label %189, label %199

189:                                              ; preds = %186
  %190 = icmp eq i32 %167, 0
  br i1 %190, label %191, label %.thread1089

191:                                              ; preds = %189
  %192 = getelementptr inbounds i8, ptr %77, i64 7336
  %193 = load i32, ptr %192, align 8, !tbaa !105
  %194 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2864, i32 noundef 1)
  %195 = icmp eq i32 %193, %194
  %.pre = load i32, ptr %166, align 4, !tbaa !100
  br label %.thread1089

.thread1089:                                      ; preds = %189, %191
  %196 = phi i32 [ %.pre, %191 ], [ %167, %189 ]
  %.ph = phi i1 [ %195, %191 ], [ false, %189 ]
  %197 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2864, i32 noundef 1)
  %198 = icmp eq i32 %196, %197
  br label %200

199:                                              ; preds = %186
  br i1 %68, label %200, label %205

200:                                              ; preds = %.thread1089, %199
  %201 = phi i1 [ %198, %.thread1089 ], [ false, %199 ]
  %202 = phi i1 [ %.ph, %.thread1089 ], [ false, %199 ]
  %203 = getelementptr inbounds i8, ptr %.2864, i64 96
  %204 = load float, ptr %203, align 4, !tbaa !106
  br label %205

205:                                              ; preds = %199, %200
  %206 = phi i1 [ %201, %200 ], [ false, %199 ]
  %207 = phi i1 [ %202, %200 ], [ false, %199 ]
  %208 = phi float [ %204, %200 ], [ 0x47EFFFFFE0000000, %199 ]
  br i1 %188, label %209, label %.thread1090

209:                                              ; preds = %205
  %210 = getelementptr inbounds i8, ptr %163, i64 99
  %211 = load i8, ptr %210, align 1, !tbaa !107
  %212 = xor i1 %68, true
  %213 = zext i1 %212 to i8
  %214 = icmp ne i8 %211, %213
  %brmerge = select i1 %187, i1 true, i1 %207
  %215 = select i1 %brmerge, i1 true, i1 %181
  %spec.select1080 = select i1 %215, i1 true, i1 %165
  %216 = select i1 %spec.select1080, i1 true, i1 %206
  br i1 %216, label %219, label %222

.thread1090:                                      ; preds = %205
  %brmerge1091 = select i1 %187, i1 true, i1 %207
  %217 = select i1 %brmerge1091, i1 true, i1 %181
  %spec.select10801093 = select i1 %217, i1 true, i1 %165
  %218 = select i1 %spec.select10801093, i1 true, i1 %206
  br i1 %218, label %219, label %.thread1098.thread

219:                                              ; preds = %.thread1090, %209
  %spec.select10801097 = phi i1 [ %spec.select10801093, %.thread1090 ], [ %spec.select1080, %209 ]
  %220 = phi i1 [ false, %.thread1090 ], [ %214, %209 ]
  %221 = load i32, ptr %166, align 4, !tbaa !100
  %.not948 = icmp ne i32 %221, %89
  %brmerge983 = select i1 %.not948, i1 true, i1 %220
  br i1 %brmerge983, label %223, label %.thread1098

222:                                              ; preds = %209
  br i1 %214, label %223, label %.thread1098.thread

223:                                              ; preds = %219, %222
  %224 = phi i8 [ 1, %219 ], [ 0, %222 ]
  %spec.select10801095 = phi i1 [ %spec.select10801097, %219 ], [ false, %222 ]
  %225 = phi i1 [ %220, %219 ], [ true, %222 ]
  %226 = getelementptr inbounds i8, ptr %77, i64 8496
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %226)
  %227 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16
  %228 = trunc i64 %227 to i32
  %229 = getelementptr inbounds i8, ptr %77, i64 8544
  %230 = add nsw i32 %228, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %229, i32 noundef %230)
  %231 = getelementptr inbounds i8, ptr %77, i64 8552
  %232 = load ptr, ptr %231, align 8, !tbaa !108
  %233 = sext i32 %230 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %232, ptr nonnull align 1 %2, i64 %233, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #15
  store ptr null, ptr %18, align 8, !tbaa !40
  %234 = getelementptr inbounds i8, ptr %77, i64 8512
  %235 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %234, i32 noundef %235)
  %236 = getelementptr inbounds i8, ptr %77, i64 8528
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %236, i32 noundef 0)
  %237 = getelementptr inbounds i8, ptr %77, i64 8560
  store i8 0, ptr %237, align 8, !tbaa !109
  %238 = getelementptr inbounds i8, ptr %77, i64 8520
  %239 = load ptr, ptr %238, align 8, !tbaa !110
  %240 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %239, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %18)
  %241 = getelementptr inbounds i8, ptr %77, i64 8500
  store i32 %240, ptr %241, align 4, !tbaa !111
  %242 = load ptr, ptr %18, align 8, !tbaa !40
  %243 = ptrtoint ptr %242 to i64
  %244 = ptrtoint ptr %2 to i64
  %245 = sub i64 %243, %244
  %246 = trunc i64 %245 to i32
  %247 = getelementptr inbounds i8, ptr %77, i64 8504
  store i32 %246, ptr %247, align 8, !tbaa !112
  %248 = load i32, ptr %226, align 8, !tbaa !113
  %249 = icmp ne i32 %248, %89
  %.not950 = select i1 %249, i1 true, i1 %225
  br i1 %.not950, label %251, label %250

250:                                              ; preds = %223
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3716) %226)
  br label %256

251:                                              ; preds = %223
  store i32 %89, ptr %226, align 8, !tbaa !113
  %252 = getelementptr inbounds i8, ptr %77, i64 8568
  store float 0.000000e+00, ptr %252, align 8, !tbaa !114
  %253 = getelementptr inbounds i8, ptr %77, i64 8572
  %254 = xor i1 %68, true
  %255 = zext i1 %254 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %253, i32 noundef %255)
  br label %256

256:                                              ; preds = %251, %250
  br i1 %68, label %273, label %257

257:                                              ; preds = %256
  %258 = trunc i32 %5 to i8
  %259 = lshr i8 %258, 4
  br i1 %181, label %260, label %266

260:                                              ; preds = %257
  br i1 %.not950, label %265, label %261

261:                                              ; preds = %260
  %262 = getelementptr inbounds i8, ptr %77, i64 7744
  %263 = load i32, ptr %262, align 8, !tbaa !115
  %264 = and i32 %263, 4
  %.not952 = icmp eq i32 %264, 0
  br i1 %.not952, label %265, label %266

265:                                              ; preds = %261, %260
  br label %266

266:                                              ; preds = %265, %261, %257
  %.1873 = phi i8 [ %259, %261 ], [ 1, %265 ], [ %259, %257 ]
  br i1 %165, label %272, label %267

267:                                              ; preds = %266
  br i1 %187, label %268, label %273

268:                                              ; preds = %267
  %269 = getelementptr inbounds i8, ptr %77, i64 320
  %270 = load i8, ptr %269, align 8, !tbaa !116, !range !38, !noundef !39
  %271 = trunc nuw i8 %270 to i1
  br i1 %271, label %272, label %273

272:                                              ; preds = %268, %266
  br label %273

273:                                              ; preds = %267, %268, %272, %256
  %.2874 = phi i8 [ 0, %256 ], [ 1, %272 ], [ %.1873, %268 ], [ %.1873, %267 ]
  %274 = and i32 %5, 8192
  %.not953 = icmp eq i32 %274, 0
  br i1 %.not953, label %277, label %275

275:                                              ; preds = %273
  %276 = getelementptr inbounds i8, ptr %77, i64 8584
  store i8 1, ptr %276, align 4, !tbaa !117
  br label %277

277:                                              ; preds = %275, %273
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #15
  br label %.thread1098

.thread1098.thread:                               ; preds = %222, %.thread1090
  %278 = load i32, ptr %166, align 4, !tbaa !100
  br label %294

.thread1098:                                      ; preds = %219, %277
  %279 = phi i8 [ %224, %277 ], [ 1, %219 ]
  %spec.select10801094 = phi i1 [ %spec.select10801095, %277 ], [ %spec.select10801097, %219 ]
  %.3875 = phi i8 [ %.2874, %277 ], [ 0, %219 ]
  %.0867 = phi ptr [ %226, %277 ], [ %163, %219 ]
  %280 = load i32, ptr %166, align 4, !tbaa !100
  %.not954 = icmp ne i32 %280, %89
  %brmerge986.not = and i1 %spec.select10801094, %.not954
  br i1 %brmerge986.not, label %281, label %294

281:                                              ; preds = %.thread1098
  %.not955 = icmp eq ptr %.0867, null
  br i1 %.not955, label %.critedge, label %282

282:                                              ; preds = %281
  %283 = load i32, ptr %.0867, align 8, !tbaa !113
  %284 = icmp eq i32 %283, %89
  br i1 %284, label %285, label %.critedge

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

285:                                              ; preds = %282
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %89, ptr noundef nonnull %56)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %89, ptr noundef nonnull %56)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %56)
  %286 = getelementptr inbounds i8, ptr %77, i64 7296
  %brmerge987.not = icmp eq i32 %69, 0
  %spec.select.v = select i1 %brmerge987.not, i32 3, i32 15
  %287 = load <2 x i32>, ptr %286, align 8, !tbaa !92
  %288 = insertelement <2 x i32> <i32 poison, i32 2>, i32 %spec.select.v, i64 0
  %289 = or <2 x i32> %287, %288
  store <2 x i32> %289, ptr %286, align 8, !tbaa !92
  %290 = getelementptr inbounds i8, ptr %77, i64 7304
  %291 = load i64, ptr %290, align 8, !tbaa !118
  %spec.select988.v = select i1 %68, i64 480, i64 384
  %spec.select988 = or i64 %291, %spec.select988.v
  store i64 %spec.select988, ptr %290, align 8, !tbaa !118
  %.not956 = icmp eq i32 %74, 0
  br i1 %.not956, label %.thread1101, label %292

292:                                              ; preds = %285
  %293 = or i64 %spec.select988, 1
  store i64 %293, ptr %290, align 8, !tbaa !118
  br label %.thread1101

294:                                              ; preds = %.thread1098.thread, %.thread1098
  %295 = phi i32 [ %278, %.thread1098.thread ], [ %280, %.thread1098 ]
  %.08671178 = phi ptr [ %163, %.thread1098.thread ], [ %.0867, %.thread1098 ]
  %.38751177 = phi i8 [ 0, %.thread1098.thread ], [ %.3875, %.thread1098 ]
  %296 = phi i8 [ 0, %.thread1098.thread ], [ %279, %.thread1098 ]
  %297 = icmp eq i32 %295, %89
  %298 = icmp eq ptr %.08671178, null
  %or.cond5 = and i1 %298, %297
  br i1 %or.cond5, label %299, label %.thread1101

299:                                              ; preds = %294
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %.thread1101

.thread1101:                                      ; preds = %292, %285, %299, %294
  %.08671179 = phi ptr [ %.0867, %292 ], [ %.0867, %285 ], [ null, %299 ], [ %.08671178, %294 ]
  %.38751176 = phi i8 [ %.3875, %292 ], [ %.3875, %285 ], [ %.38751177, %299 ], [ %.38751177, %294 ]
  %300 = phi i8 [ %279, %292 ], [ %279, %285 ], [ %296, %299 ], [ %296, %294 ]
  %301 = load i32, ptr %166, align 4, !tbaa !100
  %302 = icmp eq i32 %301, %89
  br i1 %302, label %.thread1103, label %305

.thread1103:                                      ; preds = %.thread1101
  %303 = getelementptr inbounds i8, ptr %77, i64 1056
  %304 = load i8, ptr %303, align 8, !tbaa !104, !range !38, !noundef !39
  %.not1132 = xor i8 %300, 1
  %not.brmerge990 = and i8 %304, %.not1132
  br label %308

305:                                              ; preds = %.thread1101
  %306 = icmp ne ptr %.08671179, null
  %307 = select i1 %306, i1 %206, i1 false
  br label %308

308:                                              ; preds = %.thread1103, %305
  %.08681105 = phi i8 [ 0, %305 ], [ %not.brmerge990, %.thread1103 ]
  %309 = phi i1 [ %307, %305 ], [ true, %.thread1103 ]
  %310 = icmp ne ptr %.08671179, null
  br i1 %310, label %311, label %.thread1106

311:                                              ; preds = %308
  %312 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br i1 %312, label %315, label %313

313:                                              ; preds = %311
  %314 = trunc i8 %.38751176 to i1
  br i1 %314, label %315, label %316

315:                                              ; preds = %313, %311
  br label %316

316:                                              ; preds = %315, %313
  %317 = phi i1 [ false, %313 ], [ %309, %315 ]
  %brmerge991 = or i1 %309, %317
  %or.cond1078 = select i1 %79, i1 %brmerge991, i1 false
  br i1 %or.cond1078, label %318, label %.thread1106

318:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #15
  store ptr null, ptr %19, align 8, !tbaa !40
  %319 = getelementptr inbounds i8, ptr %.08671179, i64 16
  %320 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %319, i32 noundef %320)
  %321 = getelementptr inbounds i8, ptr %.08671179, i64 24
  %322 = load ptr, ptr %321, align 8, !tbaa !110
  %323 = load i32, ptr %319, align 8, !tbaa !119
  %324 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %322, i32 noundef %323, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %19)
  %325 = getelementptr inbounds i8, ptr %.08671179, i64 4
  store i32 %324, ptr %325, align 4, !tbaa !111
  %326 = load ptr, ptr %19, align 8, !tbaa !40
  %327 = ptrtoint ptr %326 to i64
  %328 = ptrtoint ptr %2 to i64
  %329 = sub i64 %327, %328
  %330 = trunc i64 %329 to i32
  %331 = getelementptr inbounds i8, ptr %.08671179, i64 8
  store i32 %330, ptr %331, align 8, !tbaa !112
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  %332 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  %333 = and i1 %317, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #15
  br label %.thread1106

.thread1106:                                      ; preds = %308, %318, %316
  %.0879.in = phi i1 [ %333, %318 ], [ %317, %316 ], [ false, %308 ]
  %brmerge992 = select i1 %309, i1 true, i1 %.0879.in
  br i1 %brmerge992, label %338, label %334

334:                                              ; preds = %.thread1106
  %335 = load i32, ptr %166, align 4, !tbaa !100
  %336 = icmp eq i32 %335, %89
  %.not = xor i1 %79, true
  %337 = and i1 %336, %.not
  %or.cond993 = and i1 %310, %337
  br i1 %or.cond993, label %339, label %343

338:                                              ; preds = %.thread1106
  %.not.old = xor i1 %79, true
  %or.cond9.old = and i1 %310, %.not.old
  br i1 %or.cond9.old, label %339, label %343

339:                                              ; preds = %334, %338
  %340 = getelementptr inbounds i8, ptr %.08671179, i64 64
  %341 = load i8, ptr %340, align 8, !tbaa !109, !range !38, !noundef !39
  %342 = trunc nuw i8 %341 to i1
  br label %343

343:                                              ; preds = %339, %338, %334
  %344 = phi i1 [ false, %338 ], [ false, %334 ], [ %342, %339 ]
  %.not957 = icmp eq ptr %1, null
  br i1 %.not957, label %353, label %345

345:                                              ; preds = %343
  br i1 %344, label %346, label %349

346:                                              ; preds = %345
  %347 = getelementptr inbounds i8, ptr %.08671179, i64 40
  %348 = load ptr, ptr %347, align 8, !tbaa !120
  br label %349

349:                                              ; preds = %345, %346
  %350 = phi ptr [ %348, %346 ], [ %2, %345 ]
  %351 = load i8, ptr %350, align 1, !tbaa !121
  %352 = icmp eq i8 %351, 0
  br label %353

353:                                              ; preds = %349, %343
  %354 = phi i1 [ false, %343 ], [ %352, %349 ]
  %brmerge994 = select i1 %.not944, i1 true, i1 %354
  br i1 %brmerge994, label %385, label %355

355:                                              ; preds = %353
  %356 = getelementptr inbounds i8, ptr %77, i64 6536
  %357 = load ptr, ptr %356, align 8, !tbaa !122
  %358 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110) %357, i16 noundef zeroext 42)
  %359 = getelementptr inbounds i8, ptr %77, i64 12216
  %360 = load ptr, ptr %356, align 8, !tbaa !122
  %361 = getelementptr inbounds i8, ptr %360, i64 20
  %362 = load float, ptr %361, align 4, !tbaa !123
  %363 = getelementptr inbounds i8, ptr %77, i64 12236
  store float %362, ptr %363, align 4, !tbaa !123
  %364 = getelementptr inbounds i8, ptr %360, i64 92
  %365 = getelementptr inbounds i8, ptr %77, i64 12308
  %366 = load <2 x float>, ptr %364, align 4, !tbaa !89
  store <2 x float> %366, ptr %365, align 4, !tbaa !89
  %367 = getelementptr inbounds i8, ptr %360, i64 100
  %368 = load float, ptr %367, align 4, !tbaa !124
  %369 = getelementptr inbounds i8, ptr %77, i64 12316
  store float %368, ptr %369, align 4, !tbaa !124
  %370 = getelementptr inbounds i8, ptr %360, i64 64
  %371 = load ptr, ptr %370, align 8, !tbaa !125
  %372 = getelementptr inbounds i8, ptr %77, i64 12280
  store ptr %371, ptr %372, align 8, !tbaa !125
  %373 = getelementptr inbounds i8, ptr %77, i64 12272
  store ptr %358, ptr %373, align 8, !tbaa !126
  %374 = getelementptr inbounds i8, ptr %358, i64 4
  %375 = load float, ptr %374, align 4, !tbaa !127
  %376 = getelementptr inbounds i8, ptr %77, i64 12232
  store float %375, ptr %376, align 8, !tbaa !129
  %377 = getelementptr inbounds i8, ptr %77, i64 12256
  %378 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %377)
  br i1 %378, label %379, label %.critedge11

379:                                              ; preds = %355
  %380 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %359)
  br i1 %380, label %381, label %.critedge11

381:                                              ; preds = %379
  %382 = getelementptr inbounds i8, ptr %77, i64 12240
  %383 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %382)
  br i1 %383, label %384, label %.critedge11

.critedge11:                                      ; preds = %379, %355, %381
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.2, i32 noundef 4169, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

384:                                              ; preds = %381
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %359)
  br label %385

385:                                              ; preds = %353, %384
  %386 = load i32, ptr %166, align 4, !tbaa !100
  %387 = icmp eq i32 %386, %89
  br i1 %387, label %388, label %557

388:                                              ; preds = %385
  br i1 %310, label %390, label %389

389:                                              ; preds = %388
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4177, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

390:                                              ; preds = %388
  %391 = getelementptr inbounds i8, ptr %.08671179, i64 8
  %392 = load i32, ptr %391, align 8, !tbaa !112
  %393 = getelementptr inbounds i8, ptr %.08671179, i64 3710
  store i8 0, ptr %393, align 2, !tbaa !130
  %394 = getelementptr inbounds i8, ptr %.08671179, i64 68
  store i32 %3, ptr %394, align 4, !tbaa !131
  %395 = getelementptr inbounds i8, ptr %.08671179, i64 3712
  store i32 %5, ptr %395, align 8, !tbaa !132
  %396 = getelementptr inbounds i8, ptr %77, i64 304
  %397 = load i8, ptr %396, align 8, !tbaa !104, !range !38, !noundef !39
  %398 = xor i8 %397, 1
  %399 = getelementptr inbounds i8, ptr %77, i64 7289
  store i8 %398, ptr %399, align 1, !tbaa !133
  %400 = getelementptr inbounds i8, ptr %77, i64 13220
  store i32 1, ptr %400, align 4, !tbaa !134
  %401 = getelementptr inbounds i8, ptr %77, i64 296
  %402 = load float, ptr %401, align 8, !tbaa !135
  %403 = load float, ptr %11, align 8, !tbaa !136
  %404 = fsub float %402, %403
  %405 = load float, ptr %99, align 4, !tbaa !137
  %406 = fsub float %404, %405
  %407 = getelementptr inbounds i8, ptr %.08671179, i64 72
  %408 = load float, ptr %407, align 8, !tbaa !114
  %409 = fadd float %406, %408
  br i1 %68, label %410, label %416

410:                                              ; preds = %390
  %411 = getelementptr inbounds i8, ptr %77, i64 300
  %412 = load float, ptr %411, align 4, !tbaa !138
  %413 = getelementptr inbounds i8, ptr %.2864, i64 220
  %414 = load float, ptr %413, align 4, !tbaa !139
  %415 = fsub float %412, %414
  br label %420

416:                                              ; preds = %390
  %417 = getelementptr inbounds i8, ptr %77, i64 6544
  %418 = load float, ptr %417, align 8, !tbaa !41
  %419 = fmul float %418, 5.000000e-01
  br label %420

420:                                              ; preds = %416, %410
  %421 = phi float [ %415, %410 ], [ %419, %416 ]
  %422 = getelementptr inbounds i8, ptr %77, i64 201
  %423 = load i8, ptr %422, align 1, !tbaa !140, !range !38, !noundef !39
  %424 = trunc nuw i8 %423 to i1
  %425 = trunc i8 %.38751176 to i1
  br i1 %425, label %426, label %428

426:                                              ; preds = %420
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  %427 = getelementptr inbounds i8, ptr %.08671179, i64 3709
  store i8 1, ptr %427, align 1, !tbaa !141
  br label %497

428:                                              ; preds = %420
  br i1 %159, label %429, label %469

429:                                              ; preds = %428
  %430 = getelementptr inbounds i8, ptr %77, i64 1066
  %431 = load i16, ptr %430, align 2, !tbaa !142
  %432 = icmp ugt i16 %431, 1
  br i1 %432, label %433, label %469

433:                                              ; preds = %429
  %434 = getelementptr inbounds i8, ptr %77, i64 321
  %435 = load i8, ptr %434, align 1, !tbaa !143, !range !38, !noundef !39
  %436 = trunc nuw i8 %435 to i1
  br i1 %436, label %469, label %437

437:                                              ; preds = %433
  %438 = getelementptr inbounds i8, ptr %.08671179, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08671179, ptr noundef nonnull %438, float noundef %409, float noundef %421)
  %439 = load i16, ptr %430, align 2, !tbaa !142
  %440 = and i16 %439, 1
  %441 = icmp eq i16 %440, 0
  %442 = load i32, ptr %438, align 4, !tbaa !144
  br i1 %441, label %443, label %459

443:                                              ; preds = %437
  %444 = icmp eq i32 %442, 0
  br i1 %444, label %449, label %445

445:                                              ; preds = %443
  %446 = add nsw i32 %442, -1
  %447 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.08671179, i32 noundef %446)
  %448 = icmp eq i16 %447, 10
  br label %449

449:                                              ; preds = %445, %443
  %450 = phi i1 [ true, %443 ], [ %448, %445 ]
  %451 = getelementptr inbounds i8, ptr %.08671179, i64 80
  %452 = load i32, ptr %451, align 4, !tbaa !145
  %453 = getelementptr inbounds i8, ptr %.08671179, i64 84
  %454 = load i32, ptr %453, align 4, !tbaa !146
  %.not958 = icmp eq i32 %452, %454
  %brmerge996.not = and i1 %450, %.not958
  br i1 %brmerge996.not, label %.thread1187, label %455

455:                                              ; preds = %449
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef 2097164)
  %.pre1150 = load i32, ptr %451, align 4, !tbaa !145
  %.pre1151 = load i32, ptr %453, align 4, !tbaa !146
  %.not959 = icmp eq i32 %.pre1150, %.pre1151
  br i1 %.not959, label %.thread1187, label %456

.thread1187:                                      ; preds = %449, %455
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef nonnull %438)
  br label %456

456:                                              ; preds = %.thread1187, %455
  %457 = load i32, ptr %438, align 4, !tbaa !144
  %458 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef nonnull %.08671179, i32 noundef %457)
  store i32 %458, ptr %438, align 4, !tbaa !144
  store i32 %458, ptr %453, align 4, !tbaa !146
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.08671179, ptr noundef nonnull %438)
  br label %468

459:                                              ; preds = %437
  %460 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.08671179, i32 noundef %442)
  %461 = icmp ne i16 %460, 10
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef 2097156)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef 6291461)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef 6291457)
  %brmerge998.not = and i1 %68, %461
  br i1 %brmerge998.not, label %462, label %466

462:                                              ; preds = %459
  %463 = getelementptr inbounds i8, ptr %.08671179, i64 80
  %464 = getelementptr inbounds i8, ptr %.08671179, i64 84
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %463, ptr noundef nonnull align 4 dereferenceable(4) %464)
  %465 = load i32, ptr %464, align 4, !tbaa !146
  store i32 %465, ptr %438, align 4, !tbaa !144
  br label %466

466:                                              ; preds = %459, %462
  %467 = getelementptr inbounds i8, ptr %.08671179, i64 3708
  store i8 0, ptr %467, align 4, !tbaa !147
  br label %468

468:                                              ; preds = %466, %456
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br label %497

469:                                              ; preds = %433, %429, %428
  %470 = getelementptr inbounds i8, ptr %77, i64 1056
  %471 = load i8, ptr %470, align 8, !tbaa !104, !range !38, !noundef !39
  %472 = trunc nuw i8 %471 to i1
  br i1 %472, label %473, label %480

473:                                              ; preds = %469
  %474 = getelementptr inbounds i8, ptr %.08671179, i64 3709
  %475 = load i8, ptr %474, align 1, !tbaa !141, !range !38, !noundef !39
  %476 = trunc nuw i8 %475 to i1
  br i1 %476, label %480, label %477

477:                                              ; preds = %473
  br i1 %159, label %478, label %497

478:                                              ; preds = %477
  %479 = getelementptr inbounds i8, ptr %.08671179, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08671179, ptr noundef nonnull %479, float noundef %409, float noundef %421)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br label %497

480:                                              ; preds = %473, %469
  %481 = trunc nuw i8 %397 to i1
  br i1 %481, label %482, label %497

482:                                              ; preds = %480
  %483 = getelementptr inbounds i8, ptr %.08671179, i64 3709
  %484 = load i8, ptr %483, align 1, !tbaa !141, !range !38, !noundef !39
  %485 = trunc nuw i8 %484 to i1
  br i1 %485, label %497, label %486

486:                                              ; preds = %482
  %487 = getelementptr inbounds i8, ptr %77, i64 948
  %488 = load float, ptr %487, align 4, !tbaa !148
  %489 = fcmp une float %488, 0.000000e+00
  br i1 %489, label %494, label %490

490:                                              ; preds = %486
  %491 = getelementptr inbounds i8, ptr %77, i64 952
  %492 = load float, ptr %491, align 4, !tbaa !149
  %493 = fcmp une float %492, 0.000000e+00
  br i1 %493, label %494, label %497

494:                                              ; preds = %490, %486
  %495 = getelementptr inbounds i8, ptr %.08671179, i64 76
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08671179, ptr noundef nonnull %495, float noundef %409, float noundef %421)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  %496 = getelementptr inbounds i8, ptr %.08671179, i64 3708
  store i8 1, ptr %496, align 4, !tbaa !147
  br label %497

497:                                              ; preds = %468, %480, %482, %490, %494, %477, %478, %426
  %498 = getelementptr inbounds i8, ptr %.08671179, i64 3709
  %499 = load i8, ptr %498, align 1, !tbaa !141, !range !38, !noundef !39
  %500 = trunc nuw i8 %499 to i1
  br i1 %500, label %501, label %505

501:                                              ; preds = %497
  %502 = load i8, ptr %396, align 8, !tbaa !104, !range !38, !noundef !39
  %503 = trunc nuw i8 %502 to i1
  br i1 %503, label %505, label %504

504:                                              ; preds = %501
  store i8 0, ptr %498, align 1, !tbaa !141
  br label %505

505:                                              ; preds = %504, %501, %497
  %506 = getelementptr inbounds i8, ptr %77, i64 320
  %507 = load i8, ptr %506, align 8, !tbaa !116, !range !38, !noundef !39
  %508 = trunc nuw i8 %507 to i1
  br i1 %508, label %509, label %514

509:                                              ; preds = %505
  %510 = getelementptr inbounds i8, ptr %77, i64 322
  %511 = load i8, ptr %510, align 2, !tbaa !150, !range !38, !noundef !39
  %512 = trunc nuw i8 %511 to i1
  %.not999 = xor i1 %512, true
  %513 = select i1 %512, i1 %424, i1 false
  br i1 %513, label %515, label %519

514:                                              ; preds = %505
  br i1 %424, label %515, label %519

515:                                              ; preds = %509, %514
  %516 = getelementptr inbounds i8, ptr %77, i64 323
  %517 = load i8, ptr %516, align 1, !tbaa !151, !range !38, !noundef !39
  %518 = trunc nuw i8 %517 to i1
  br label %519

519:                                              ; preds = %509, %514, %515
  %520 = phi i1 [ %.not999, %509 ], [ false, %514 ], [ %518, %515 ]
  br i1 %.not942, label %535, label %521

521:                                              ; preds = %519
  %522 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  %.not1002 = xor i1 %522, true
  %brmerge1003 = select i1 %.not1002, i1 true, i1 %520
  br i1 %brmerge1003, label %535, label %523

523:                                              ; preds = %521
  %524 = getelementptr inbounds i8, ptr %77, i64 321
  %525 = load i8, ptr %524, align 1, !tbaa !143, !range !38, !noundef !39
  %526 = trunc nuw i8 %525 to i1
  %brmerge1004 = or i1 %79, %526
  br i1 %brmerge1004, label %535, label %527

527:                                              ; preds = %523
  %528 = getelementptr inbounds i8, ptr %77, i64 5472
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %20) #15
  store i16 9, ptr %20, align 2, !tbaa !142
  %529 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %528, ptr noundef nonnull align 2 dereferenceable(2) %20)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %20) #15
  br i1 %529, label %535, label %530

530:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  store i32 9, ptr %21, align 4, !tbaa !92
  %531 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %531, label %532, label %534

532:                                              ; preds = %530
  %533 = load i32, ptr %21, align 4, !tbaa !92
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %533)
  br label %534

534:                                              ; preds = %532, %530
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  br label %535

535:                                              ; preds = %523, %521, %527, %534, %519
  %536 = getelementptr inbounds i8, ptr %77, i64 5472
  %537 = load i32, ptr %536, align 8, !tbaa !152
  %538 = icmp sgt i32 %537, 0
  br i1 %538, label %539, label %557

539:                                              ; preds = %535
  %brmerge1005 = or i1 %79, %520
  %brmerge1006 = select i1 %brmerge1005, i1 true, i1 %181
  br i1 %brmerge1006, label %.loopexit1139, label %.lr.ph

.lr.ph:                                           ; preds = %539
  %540 = getelementptr inbounds i8, ptr %77, i64 321
  br label %541

541:                                              ; preds = %.lr.ph, %553
  %.08951142 = phi i32 [ 0, %.lr.ph ], [ %554, %553 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  %542 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %536, i32 noundef %.08951142)
  %543 = load i16, ptr %542, align 2, !tbaa !142
  %544 = zext i16 %543 to i32
  store i32 %544, ptr %22, align 4, !tbaa !92
  %545 = icmp eq i16 %543, 9
  br i1 %545, label %546, label %549

546:                                              ; preds = %541
  %547 = load i8, ptr %540, align 1, !tbaa !143, !range !38, !noundef !39
  %548 = trunc nuw i8 %547 to i1
  br i1 %548, label %553, label %549

549:                                              ; preds = %546, %541
  %550 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %550, label %551, label %553

551:                                              ; preds = %549
  %552 = load i32, ptr %22, align 4, !tbaa !92
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %552)
  br label %553

553:                                              ; preds = %549, %551, %546
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  %554 = add nuw nsw i32 %.08951142, 1
  %555 = load i32, ptr %536, align 8, !tbaa !152
  %556 = icmp slt i32 %554, %555
  br i1 %556, label %541, label %.loopexit1139, !llvm.loop !153

.loopexit1139:                                    ; preds = %553, %539
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %536, i32 noundef 0)
  br label %557

557:                                              ; preds = %535, %.loopexit1139, %385
  %.0885 = phi i32 [ 0, %385 ], [ %392, %.loopexit1139 ], [ %392, %535 ]
  %558 = load i32, ptr %166, align 4, !tbaa !100
  %559 = icmp eq i32 %558, %89
  br i1 %559, label %560, label %881

560:                                              ; preds = %557
  %561 = getelementptr inbounds i8, ptr %77, i64 7288
  %562 = load i8, ptr %561, align 8, !tbaa !155, !range !38, !noundef !39
  %563 = trunc nuw i8 %562 to i1
  br i1 %563, label %.thread1190, label %564

564:                                              ; preds = %560
  %565 = trunc nuw i8 %.08681105 to i1
  br i1 %565, label %.thread1190, label %566

566:                                              ; preds = %564
  br i1 %310, label %568, label %567

567:                                              ; preds = %566
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4286, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

568:                                              ; preds = %566
  %569 = getelementptr inbounds i8, ptr %77, i64 960
  %570 = load i32, ptr %569, align 8, !tbaa !156
  %571 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %572 = icmp eq i32 %570, %571
  br i1 %572, label %574, label %573

573:                                              ; preds = %568
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 4287, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

574:                                              ; preds = %568
  %575 = load float, ptr %100, align 4, !tbaa !87
  %576 = fsub float %.sroa.11.0.copyload, %575
  %577 = getelementptr inbounds i8, ptr %77, i64 6544
  %578 = load float, ptr %577, align 8, !tbaa !41
  %579 = fdiv float %576, %578
  %580 = fptosi float %579 to i32
  %581 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %580, i32 noundef 1)
  %582 = getelementptr inbounds i8, ptr %.08671179, i64 76
  %583 = getelementptr inbounds i8, ptr %.08671179, i64 92
  store i32 %581, ptr %583, align 4, !tbaa !157
  %584 = getelementptr inbounds i8, ptr %77, i64 321
  %585 = load i8, ptr %584, align 1, !tbaa !143, !range !38, !noundef !39
  %586 = trunc nuw i8 %585 to i1
  %587 = select i1 %586, i32 4194304, i32 0
  %588 = getelementptr inbounds i8, ptr %77, i64 201
  %589 = load i8, ptr %588, align 1, !tbaa !140, !range !38, !noundef !39
  %590 = trunc nuw i8 %589 to i1
  br i1 %590, label %594, label %591

591:                                              ; preds = %574
  %592 = getelementptr inbounds i8, ptr %77, i64 322
  %593 = getelementptr inbounds i8, ptr %77, i64 320
  %.in = load i8, ptr %593, align 2, !tbaa !104, !range !38, !noundef !39
  %.pre1152 = load i32, ptr %569, align 8, !tbaa !156
  br label %608

594:                                              ; preds = %574
  %595 = load i32, ptr %569, align 8, !tbaa !156
  %596 = icmp eq i32 %595, 10
  %597 = getelementptr inbounds i8, ptr %77, i64 322
  %598 = getelementptr inbounds i8, ptr %77, i64 320
  %.in1112 = load i8, ptr %597, align 2, !tbaa !104, !range !38, !noundef !39
  %599 = getelementptr inbounds i8, ptr %77, i64 323
  %600 = load i8, ptr %599, align 1, !tbaa !151, !range !38, !noundef !39
  %601 = trunc nuw i8 %600 to i1
  br i1 %601, label %602, label %608

602:                                              ; preds = %594
  %603 = load i8, ptr %598, align 8, !tbaa !116, !range !38, !noundef !39
  %604 = trunc nuw i8 %603 to i1
  br i1 %604, label %608, label %605

605:                                              ; preds = %602
  %606 = trunc nuw i8 %.in1112 to i1
  %607 = xor i1 %606, true
  br label %608

608:                                              ; preds = %591, %605, %602, %594
  %609 = phi i32 [ %595, %602 ], [ %595, %594 ], [ %.pre1152, %591 ], [ %595, %605 ]
  %.v1135 = phi i32 [ 8, %602 ], [ 8, %594 ], [ 1, %591 ], [ 8, %605 ]
  %.in1134 = phi i8 [ %.in1112, %602 ], [ %.in1112, %594 ], [ %.in, %591 ], [ %.in1112, %605 ]
  %610 = phi ptr [ %598, %602 ], [ %598, %594 ], [ %593, %591 ], [ %598, %605 ]
  %611 = phi ptr [ %597, %602 ], [ %597, %594 ], [ %592, %591 ], [ %597, %605 ]
  %612 = phi i1 [ %596, %602 ], [ %596, %594 ], [ false, %591 ], [ %596, %605 ]
  %613 = phi i1 [ false, %602 ], [ false, %594 ], [ false, %591 ], [ %607, %605 ]
  %614 = trunc nuw i8 %.in1134 to i1
  %615 = icmp eq i32 %609, 1
  %616 = icmp eq i32 %609, 2
  %617 = icmp eq i32 %609, %.v1135
  br i1 %617, label %618, label %620

618:                                              ; preds = %608
  %619 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %619, label %625, label %620

620:                                              ; preds = %618, %608
  br i1 %616, label %621, label %628

621:                                              ; preds = %620
  %622 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %623 = and i1 %.not944, %622
  %624 = xor i1 %623, true
  %brmerge1009 = or i1 %79, %624
  %.not1015 = xor i1 %68, true
  %brmerge1016 = or i1 %brmerge1009, %.not1015
  %not.brmerge1009 = xor i1 %brmerge1009, true
  br i1 %brmerge1016, label %628, label %626

625:                                              ; preds = %618
  %.not944.not1010 = xor i1 %.not944, true
  %brmerge1011 = or i1 %79, %.not944.not1010
  %.not1012 = xor i1 %68, true
  %brmerge1013 = or i1 %brmerge1011, %.not1012
  %not.brmerge1011 = xor i1 %brmerge1011, true
  br i1 %brmerge1013, label %.thread1113, label %626

626:                                              ; preds = %621, %625
  %627 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br label %628

628:                                              ; preds = %621, %626, %620
  %629 = phi i1 [ %not.brmerge1009, %621 ], [ false, %620 ], [ %627, %626 ]
  br i1 %617, label %.thread1113, label %632

.thread1113:                                      ; preds = %625, %628
  %630 = phi i1 [ %629, %628 ], [ %not.brmerge1011, %625 ]
  %631 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %631, label %636, label %632

632:                                              ; preds = %.thread1113, %628
  %633 = phi i1 [ %630, %.thread1113 ], [ %629, %628 ]
  br i1 %615, label %634, label %641

634:                                              ; preds = %632
  %635 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %brmerge1020.demorgan = and i1 %.not944, %635
  %brmerge1022.not = and i1 %68, %brmerge1020.demorgan
  br i1 %brmerge1022.not, label %638, label %641

636:                                              ; preds = %.thread1113
  %637 = and i32 %5, 67141632
  %brmerge1026.not = icmp eq i32 %637, 67108864
  br i1 %brmerge1026.not, label %638, label %.thread1114

638:                                              ; preds = %636, %634
  %639 = phi i1 [ %630, %636 ], [ %633, %634 ]
  %640 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br label %641

641:                                              ; preds = %634, %638, %632
  %642 = phi i1 [ %633, %634 ], [ %633, %632 ], [ %639, %638 ]
  %643 = phi i1 [ %brmerge1020.demorgan, %634 ], [ false, %632 ], [ %640, %638 ]
  br i1 %617, label %.thread1114, label %647

.thread1114:                                      ; preds = %636, %641
  %644 = phi i1 [ %643, %641 ], [ %.not944, %636 ]
  %645 = phi i1 [ %642, %641 ], [ %630, %636 ]
  %646 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %646, label %652, label %647

647:                                              ; preds = %.thread1114, %641
  %648 = phi i1 [ %644, %.thread1114 ], [ %643, %641 ]
  %649 = phi i1 [ %645, %.thread1114 ], [ %642, %641 ]
  br i1 %616, label %650, label %656

650:                                              ; preds = %647
  %651 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %651, label %652, label %656

652:                                              ; preds = %650, %.thread1114
  %653 = phi i1 [ %648, %650 ], [ %644, %.thread1114 ]
  %654 = phi i1 [ %649, %650 ], [ %645, %.thread1114 ]
  %655 = xor i1 %79, true
  br label %656

656:                                              ; preds = %652, %650, %647
  %657 = phi i1 [ %648, %650 ], [ %648, %647 ], [ %653, %652 ]
  %658 = phi i1 [ %649, %650 ], [ %649, %647 ], [ %654, %652 ]
  %659 = phi i1 [ false, %650 ], [ false, %647 ], [ %655, %652 ]
  br i1 %617, label %660, label %664

660:                                              ; preds = %656
  %661 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  %not. = xor i1 %79, true
  %662 = and i1 %661, %not.
  %spec.select1081 = and i1 %82, %662
  %663 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %663, label %668, label %664

664:                                              ; preds = %656, %660
  %665 = phi i1 [ %spec.select1081, %660 ], [ false, %656 ]
  br i1 %612, label %666, label %670

666:                                              ; preds = %664
  %667 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %667, label %._crit_edge1165, label %670

._crit_edge1165:                                  ; preds = %666
  %.pre1166 = xor i1 %79, true
  br label %668

668:                                              ; preds = %._crit_edge1165, %660
  %not.1136.pre-phi = phi i1 [ %.pre1166, %._crit_edge1165 ], [ %not., %660 ]
  %669 = phi i1 [ %665, %._crit_edge1165 ], [ %spec.select1081, %660 ]
  %spec.select1029 = and i1 %82, %not.1136.pre-phi
  br label %670

670:                                              ; preds = %668, %666, %664
  %671 = phi i1 [ %665, %666 ], [ %665, %664 ], [ %669, %668 ]
  %672 = phi i1 [ false, %666 ], [ false, %664 ], [ %spec.select1029, %668 ]
  %673 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %673, label %676, label %674

674:                                              ; preds = %670
  %675 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br label %676

676:                                              ; preds = %674, %670
  %677 = phi i1 [ true, %670 ], [ %675, %674 ]
  %678 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 0, i32 noundef 1)
  br i1 %678, label %679, label %681

679:                                              ; preds = %676
  %680 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 12, i1 noundef zeroext true)
  br i1 %680, label %681, label %683

681:                                              ; preds = %679, %676
  %682 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 2, i32 noundef 1)
  br label %683

683:                                              ; preds = %681, %679
  %684 = phi i1 [ true, %679 ], [ %682, %681 ]
  %685 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %685, label %688, label %686

686:                                              ; preds = %683
  %687 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 1, i32 noundef 1)
  br label %688

688:                                              ; preds = %686, %683
  %689 = phi i1 [ true, %683 ], [ %687, %686 ]
  %690 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %690, label %691, label %694

691:                                              ; preds = %688
  %692 = select i1 %614, i32 2097164, i32 2097152
  %spec.select1030 = select i1 %613, i32 2097156, i32 %692
  %693 = or disjoint i32 %spec.select1030, %587
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %693)
  br label %877

694:                                              ; preds = %688
  %695 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %695, label %696, label %699

696:                                              ; preds = %694
  %697 = select i1 %614, i32 2097165, i32 2097153
  %spec.select1031 = select i1 %613, i32 2097157, i32 %697
  %698 = or disjoint i32 %spec.select1031, %587
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %698)
  br label %877

699:                                              ; preds = %694
  %700 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  %brmerge1034.not = and i1 %68, %700
  br i1 %brmerge1034.not, label %701, label %713

701:                                              ; preds = %699
  %702 = load i8, ptr %610, align 8, !tbaa !116, !range !38, !noundef !39
  %703 = trunc nuw i8 %702 to i1
  br i1 %703, label %704, label %710

704:                                              ; preds = %701
  %705 = getelementptr inbounds i8, ptr %.2864, i64 96
  %706 = load float, ptr %705, align 4, !tbaa !106
  %707 = load float, ptr %577, align 8, !tbaa !41
  %708 = fsub float %706, %707
  %709 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %708, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2864, float noundef %709)
  br label %877

710:                                              ; preds = %701
  %711 = select i1 %613, i32 2097158, i32 2097154
  %712 = or disjoint i32 %711, %587
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %712)
  br label %877

713:                                              ; preds = %699
  %714 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  %brmerge1037.not = and i1 %68, %714
  br i1 %brmerge1037.not, label %715, label %728

715:                                              ; preds = %713
  %716 = load i8, ptr %610, align 8, !tbaa !116, !range !38, !noundef !39
  %717 = trunc nuw i8 %716 to i1
  br i1 %717, label %718, label %725

718:                                              ; preds = %715
  %719 = getelementptr inbounds i8, ptr %.2864, i64 96
  %720 = load float, ptr %719, align 4, !tbaa !106
  %721 = load float, ptr %577, align 8, !tbaa !41
  %722 = fadd float %720, %721
  %723 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %724 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %722, float noundef %723)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2864, float noundef %724)
  br label %877

725:                                              ; preds = %715
  %726 = select i1 %613, i32 2097159, i32 2097155
  %727 = or disjoint i32 %726, %587
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %727)
  br label %877

728:                                              ; preds = %713
  %729 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 5, i1 noundef zeroext true)
  %brmerge1040.not = and i1 %68, %729
  br i1 %brmerge1040.not, label %730, label %736

730:                                              ; preds = %728
  %731 = or disjoint i32 %587, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %731)
  %732 = sitofp i32 %581 to float
  %733 = load float, ptr %577, align 8, !tbaa !41
  %734 = fneg float %732
  %735 = call float @llvm.fmuladd.f32(float %734, float %733, float %208)
  br label %877

736:                                              ; preds = %728
  %737 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 6, i1 noundef zeroext true)
  %brmerge1043.demorgan = and i1 %68, %737
  br i1 %brmerge1043.demorgan, label %738, label %743

738:                                              ; preds = %736
  %739 = or disjoint i32 %587, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %739)
  %740 = sitofp i32 %581 to float
  %741 = load float, ptr %577, align 8, !tbaa !41
  %742 = call float @llvm.fmuladd.f32(float %740, float %741, float %208)
  br label %877

743:                                              ; preds = %736
  %744 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %744, label %745, label %749

745:                                              ; preds = %743
  %746 = load i8, ptr %610, align 8, !tbaa !116, !range !38, !noundef !39
  %747 = trunc nuw i8 %746 to i1
  %.v964 = select i1 %747, i32 2097158, i32 2097156
  %748 = or disjoint i32 %.v964, %587
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %748)
  br label %877

749:                                              ; preds = %743
  %750 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %750, label %751, label %755

751:                                              ; preds = %749
  %752 = load i8, ptr %610, align 8, !tbaa !116, !range !38, !noundef !39
  %753 = trunc nuw i8 %752 to i1
  %.v = select i1 %753, i32 2097159, i32 2097157
  %754 = or disjoint i32 %.v, %587
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %754)
  br label %877

755:                                              ; preds = %749
  %756 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %.not1044 = xor i1 %756, true
  %brmerge1045 = or i1 %79, %.not1044
  %brmerge1046 = or i1 %658, %brmerge1045
  br i1 %brmerge1046, label %759, label %757

757:                                              ; preds = %755
  %758 = or disjoint i32 %587, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %758)
  br label %877

759:                                              ; preds = %755
  %760 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  %.not1047 = xor i1 %760, true
  %brmerge1048 = or i1 %79, %.not1047
  br i1 %brmerge1048, label %777, label %761

761:                                              ; preds = %759
  %762 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br i1 %762, label %775, label %763

763:                                              ; preds = %761
  br i1 %614, label %.sink.split, label %764

764:                                              ; preds = %763
  br i1 %590, label %765, label %775

765:                                              ; preds = %764
  %766 = getelementptr inbounds i8, ptr %77, i64 323
  %767 = load i8, ptr %766, align 1, !tbaa !151, !range !38, !noundef !39
  %768 = trunc nuw i8 %767 to i1
  br i1 %768, label %769, label %775

769:                                              ; preds = %765
  %770 = load i8, ptr %611, align 2, !tbaa !150, !range !38, !noundef !39
  %771 = trunc nuw i8 %770 to i1
  br i1 %771, label %775, label %772

772:                                              ; preds = %769
  %773 = load i8, ptr %610, align 8, !tbaa !116, !range !38, !noundef !39
  %774 = trunc nuw i8 %773 to i1
  br i1 %774, label %775, label %.sink.split

.sink.split:                                      ; preds = %772, %763
  %.sink = phi i32 [ 6291468, %763 ], [ 6291460, %772 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %.sink)
  br label %775

775:                                              ; preds = %.sink.split, %772, %769, %765, %764, %761
  %776 = or disjoint i32 %587, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %776)
  br label %877

777:                                              ; preds = %759
  br i1 %677, label %778, label %790

778:                                              ; preds = %777
  br i1 %68, label %779, label %877

779:                                              ; preds = %778
  %780 = and i32 %5, 2048
  %.not963 = icmp eq i32 %780, 0
  %781 = load i8, ptr %610, align 8, !tbaa !116, !range !38, !noundef !39
  %782 = trunc nuw i8 %781 to i1
  br i1 %.not963, label %.critedge1050, label %783

783:                                              ; preds = %779
  br i1 %782, label %784, label %877

.critedge1050:                                    ; preds = %779
  %brmerge1051 = or i1 %79, %782
  %.mux1053 = select i1 %782, i8 1, i8 %.08681105
  br i1 %brmerge1051, label %877, label %785

784:                                              ; preds = %783
  br i1 %79, label %877, label %785

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

787:                                              ; preds = %785
  %788 = load i32, ptr %23, align 4, !tbaa !92
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %788)
  br label %789

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

790:                                              ; preds = %777
  br i1 %684, label %877, label %791

791:                                              ; preds = %790
  br i1 %689, label %877, label %792

792:                                              ; preds = %791
  %brmerge1054 = or i1 %671, %672
  br i1 %brmerge1054, label %793, label %794

793:                                              ; preds = %792
  %.mux1055 = select i1 %671, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179, i32 noundef %.mux1055)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br label %877

794:                                              ; preds = %792
  br i1 %617, label %795, label %799

795:                                              ; preds = %794
  %796 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %796, label %797, label %799

797:                                              ; preds = %795
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  %798 = getelementptr inbounds i8, ptr %.08671179, i64 3708
  store i8 1, ptr %798, align 4, !tbaa !147
  br label %877

799:                                              ; preds = %795, %794
  %brmerge1056 = or i1 %657, %658
  br i1 %brmerge1056, label %800, label %846

800:                                              ; preds = %799
  %801 = getelementptr inbounds i8, ptr %77, i64 264
  %802 = load ptr, ptr %801, align 8, !tbaa !158
  %.not962 = icmp eq ptr %802, null
  br i1 %.not962, label %839, label %803

803:                                              ; preds = %800
  %804 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br i1 %804, label %805, label %811

805:                                              ; preds = %803
  %806 = getelementptr inbounds i8, ptr %.08671179, i64 80
  %807 = load i32, ptr %806, align 4, !tbaa !145
  %808 = getelementptr inbounds i8, ptr %.08671179, i64 84
  %809 = load i32, ptr %808, align 4, !tbaa !146
  %810 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %807, i32 noundef %809)
  br label %811

811:                                              ; preds = %803, %805
  %812 = phi i32 [ %810, %805 ], [ 0, %803 ]
  %813 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br i1 %813, label %814, label %820

814:                                              ; preds = %811
  %815 = getelementptr inbounds i8, ptr %.08671179, i64 80
  %816 = load i32, ptr %815, align 4, !tbaa !145
  %817 = getelementptr inbounds i8, ptr %.08671179, i64 84
  %818 = load i32, ptr %817, align 4, !tbaa !146
  %819 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %816, i32 noundef %818)
  br label %823

820:                                              ; preds = %811
  %821 = getelementptr inbounds i8, ptr %.08671179, i64 4
  %822 = load i32, ptr %821, align 4, !tbaa !111
  br label %823

823:                                              ; preds = %820, %814
  %824 = phi i32 [ %819, %814 ], [ %822, %820 ]
  %825 = getelementptr inbounds i8, ptr %.08671179, i64 24
  %826 = load ptr, ptr %825, align 8, !tbaa !110
  %827 = sext i32 %812 to i64
  %828 = getelementptr inbounds i16, ptr %826, i64 %827
  %829 = sext i32 %824 to i64
  %830 = getelementptr inbounds i16, ptr %826, i64 %829
  %831 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %828, ptr noundef %830)
  %832 = add nsw i32 %831, 1
  %833 = sext i32 %832 to i64
  %834 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %833)
  %835 = load ptr, ptr %825, align 8, !tbaa !110
  %836 = getelementptr inbounds i16, ptr %835, i64 %827
  %837 = getelementptr inbounds i16, ptr %835, i64 %829
  %838 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %834, i32 noundef %832, ptr noundef %836, ptr noundef %837)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %834)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %834)
  br label %839

839:                                              ; preds = %823, %800
  br i1 %658, label %840, label %877

840:                                              ; preds = %839
  %841 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br i1 %841, label %843, label %842

842:                                              ; preds = %840
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br label %843

843:                                              ; preds = %842, %840
  %844 = getelementptr inbounds i8, ptr %.08671179, i64 3708
  store i8 1, ptr %844, align 4, !tbaa !147
  %845 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.08671179, ptr noundef nonnull %582)
  br label %877

846:                                              ; preds = %799
  br i1 %659, label %847, label %877

847:                                              ; preds = %846
  %848 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not960 = icmp eq ptr %848, null
  br i1 %.not960, label %877, label %849

849:                                              ; preds = %847
  %850 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %848) #16
  %851 = shl i64 %850, 32
  %sext = add i64 %851, 4294967296
  %852 = ashr exact i64 %sext, 31
  %853 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %852)
  %854 = load i8, ptr %848, align 1, !tbaa !121
  %.not9611143 = icmp eq i8 %854, 0
  br i1 %.not9611143, label %.loopexit1137.thread, label %.lr.ph1146

.loopexit1137.thread:                             ; preds = %849
  store i16 0, ptr %853, align 2, !tbaa !142
  br label %876

.lr.ph1146:                                       ; preds = %849, %868
  %.08991145 = phi i32 [ %.1900, %868 ], [ 0, %849 ]
  %.09021144 = phi ptr [ %857, %868 ], [ %848, %849 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #15
  %855 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %24, ptr noundef nonnull %.09021144, ptr noundef null)
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds i8, ptr %.09021144, i64 %856
  %858 = load i32, ptr %24, align 4, !tbaa !92
  %859 = icmp eq i32 %858, 0
  br i1 %859, label %.thread1116, label %860

.thread1116:                                      ; preds = %.lr.ph1146
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #15
  br label %.loopexit1137

860:                                              ; preds = %.lr.ph1146
  %861 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %24, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 5)
  br i1 %861, label %862, label %868, !llvm.loop !159

862:                                              ; preds = %860
  %863 = load i32, ptr %24, align 4, !tbaa !92
  %864 = trunc i32 %863 to i16
  %865 = add nsw i32 %.08991145, 1
  %866 = sext i32 %.08991145 to i64
  %867 = getelementptr inbounds i16, ptr %853, i64 %866
  store i16 %864, ptr %867, align 2, !tbaa !142
  br label %868

868:                                              ; preds = %860, %862
  %.1900 = phi i32 [ %865, %862 ], [ %.08991145, %860 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #15
  %869 = load i8, ptr %857, align 1, !tbaa !121
  %.not961 = icmp eq i8 %869, 0
  br i1 %.not961, label %.loopexit1137, label %.lr.ph1146

.loopexit1137:                                    ; preds = %868, %.thread1116
  %.08991141 = phi i32 [ %.08991145, %.thread1116 ], [ %.1900, %868 ]
  %870 = sext i32 %.08991141 to i64
  %871 = getelementptr inbounds i16, ptr %853, i64 %870
  store i16 0, ptr %871, align 2, !tbaa !142
  %872 = icmp sgt i32 %.08991141, 0
  br i1 %872, label %873, label %876

873:                                              ; preds = %.loopexit1137
  %874 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.08671179, ptr noundef nonnull %582, ptr noundef nonnull %853, i32 noundef %.08991141)
  %875 = getelementptr inbounds i8, ptr %.08671179, i64 3708
  store i8 1, ptr %875, align 4, !tbaa !147
  br label %876

876:                                              ; preds = %.loopexit1137.thread, %873, %.loopexit1137
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %853)
  br label %877

877:                                              ; preds = %847, %876, %791, %790, %789, %784, %783, %778, %.critedge1050, %696, %725, %718, %738, %751, %775, %793, %843, %839, %846, %797, %757, %745, %730, %704, %710, %691
  %.0897 = phi i1 [ false, %691 ], [ false, %696 ], [ false, %704 ], [ false, %710 ], [ false, %718 ], [ false, %725 ], [ false, %730 ], [ false, %738 ], [ false, %745 ], [ false, %751 ], [ false, %793 ], [ false, %797 ], [ false, %843 ], [ false, %839 ], [ false, %846 ], [ false, %775 ], [ false, %757 ], [ false, %.critedge1050 ], [ false, %778 ], [ false, %783 ], [ false, %784 ], [ false, %789 ], [ false, %790 ], [ true, %791 ], [ false, %876 ], [ false, %847 ]
  %.1883 = phi i8 [ 0, %691 ], [ 0, %696 ], [ 0, %704 ], [ 0, %710 ], [ 0, %718 ], [ 0, %725 ], [ 0, %730 ], [ 0, %738 ], [ 0, %745 ], [ 0, %751 ], [ 0, %793 ], [ 0, %797 ], [ 0, %843 ], [ 0, %839 ], [ 0, %846 ], [ 0, %775 ], [ 0, %757 ], [ %781, %.critedge1050 ], [ 1, %778 ], [ 1, %783 ], [ 0, %784 ], [ 0, %789 ], [ 1, %790 ], [ 0, %791 ], [ 0, %876 ], [ 0, %847 ]
  %.0876 = phi float [ %208, %691 ], [ %208, %696 ], [ %208, %704 ], [ %208, %710 ], [ %208, %718 ], [ %208, %725 ], [ %735, %730 ], [ %742, %738 ], [ %208, %745 ], [ %208, %751 ], [ %208, %793 ], [ %208, %797 ], [ %208, %843 ], [ %208, %839 ], [ %208, %846 ], [ %208, %775 ], [ %208, %757 ], [ %208, %.critedge1050 ], [ %208, %778 ], [ %208, %783 ], [ %208, %784 ], [ %208, %789 ], [ %208, %790 ], [ %208, %791 ], [ %208, %876 ], [ %208, %847 ]
  %.2870 = phi i8 [ %.08681105, %691 ], [ %.08681105, %696 ], [ %.08681105, %704 ], [ %.08681105, %710 ], [ %.08681105, %718 ], [ %.08681105, %725 ], [ %.08681105, %730 ], [ %.08681105, %738 ], [ %.08681105, %745 ], [ %.08681105, %751 ], [ %.08681105, %793 ], [ %.08681105, %797 ], [ %.08681105, %843 ], [ %.08681105, %839 ], [ %.08681105, %846 ], [ %.08681105, %775 ], [ %.08681105, %757 ], [ %.mux1053, %.critedge1050 ], [ 1, %778 ], [ 1, %783 ], [ %.08681105, %784 ], [ %.08681105, %789 ], [ 1, %790 ], [ 1, %791 ], [ %.08681105, %876 ], [ %.08681105, %847 ]
  %878 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  %879 = select i1 %878, i1 %309, i1 false
  %880 = or i1 %.0879.in, %879
  %.pre1153 = load i32, ptr %166, align 4, !tbaa !100
  br label %881

881:                                              ; preds = %877, %557
  %882 = phi i32 [ %.pre1153, %877 ], [ %558, %557 ]
  %.1898 = phi i1 [ %.0897, %877 ], [ false, %557 ]
  %.2884 = phi i8 [ %.1883, %877 ], [ 0, %557 ]
  %.1880.in = phi i1 [ %880, %877 ], [ %.0879.in, %557 ]
  %.1877 = phi float [ %.0876, %877 ], [ %208, %557 ]
  %.3871 = phi i8 [ %.2870, %877 ], [ %.08681105, %557 ]
  %883 = icmp eq i32 %882, %89
  br i1 %883, label %.thread1190, label %.thread1126

.thread1190:                                      ; preds = %564, %560, %881
  %.38711207 = phi i8 [ %.3871, %881 ], [ %.08681105, %560 ], [ %.08681105, %564 ]
  %.18771205 = phi float [ %.1877, %881 ], [ %208, %560 ], [ %208, %564 ]
  %.1880.in1203 = phi i1 [ %.1880.in, %881 ], [ %.0879.in, %560 ], [ %.0879.in, %564 ]
  %.28841199 = phi i8 [ %.2884, %881 ], [ 0, %560 ], [ 0, %564 ]
  %.18981198 = phi i1 [ %.1898, %881 ], [ false, %560 ], [ false, %564 ]
  br i1 %310, label %885, label %884

884:                                              ; preds = %.thread1190
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4423, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

885:                                              ; preds = %.thread1190
  %.1898.not = xor i1 %.18981198, true
  %brmerge1057 = or i1 %79, %.1898.not
  br i1 %brmerge1057, label %916, label %886

886:                                              ; preds = %885
  %887 = getelementptr inbounds i8, ptr %.08671179, i64 56
  %888 = load ptr, ptr %887, align 8, !tbaa !108
  %889 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %888) #16
  %.not965 = icmp eq i32 %889, 0
  br i1 %.not965, label %916, label %890

890:                                              ; preds = %886
  %891 = getelementptr inbounds i8, ptr %.08671179, i64 48
  %892 = load i32, ptr %891, align 8, !tbaa !160
  %893 = add nsw i32 %892, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25)
  %894 = icmp sgt i32 %892, 1
  br i1 %894, label %895, label %908

895:                                              ; preds = %890
  %896 = zext nneg i32 %893 to i64
  %897 = getelementptr inbounds i8, ptr %888, i64 %896
  %898 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %888, ptr noundef %897)
          to label %899 unwind label %906

899:                                              ; preds = %895
  %900 = add nsw i32 %898, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %25, i32 noundef %900)
          to label %901 unwind label %906

901:                                              ; preds = %899
  %902 = getelementptr inbounds i8, ptr %25, i64 8
  %903 = load ptr, ptr %902, align 8, !tbaa !161
  %904 = load i32, ptr %25, align 8, !tbaa !162
  %905 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %903, i32 noundef %904, ptr noundef %888, ptr noundef %897, ptr noundef null)
          to label %908 unwind label %906

906:                                              ; preds = %908, %901, %899, %895
  %907 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #15
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %15) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  resume { ptr, i32 } %907

908:                                              ; preds = %901, %890
  %909 = getelementptr inbounds i8, ptr %.08671179, i64 76
  %910 = getelementptr inbounds i8, ptr %25, i64 8
  %911 = load ptr, ptr %910, align 8, !tbaa !161
  %912 = load i32, ptr %25, align 8
  %913 = add nsw i32 %912, -1
  %914 = select i1 %894, i32 %913, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.08671179, ptr noundef nonnull %909, ptr noundef %911, i32 noundef %914)
          to label %915 unwind label %906

915:                                              ; preds = %908
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #15
  br label %916

916:                                              ; preds = %885, %886, %915
  %.0906 = phi i32 [ %893, %915 ], [ 0, %886 ], [ 0, %885 ]
  %.0903 = phi ptr [ %888, %915 ], [ null, %886 ], [ null, %885 ]
  br i1 %.18981198, label %917, label %.critedge1059

917:                                              ; preds = %916
  %918 = trunc nuw i8 %.28841199 to i1
  %919 = and i32 %5, 32
  %920 = icmp ne i32 %919, 0
  %921 = and i1 %920, %918
  br i1 %921, label %.critedge1059, label %1077

.critedge1059:                                    ; preds = %916, %917
  br i1 %79, label %935, label %922

922:                                              ; preds = %.critedge1059
  %923 = getelementptr inbounds i8, ptr %.08671179, i64 64
  store i8 1, ptr %923, align 8, !tbaa !109
  %924 = getelementptr inbounds i8, ptr %.08671179, i64 32
  %925 = getelementptr inbounds i8, ptr %.08671179, i64 16
  %926 = load i32, ptr %925, align 8, !tbaa !119
  %927 = shl nsw i32 %926, 2
  %928 = or disjoint i32 %927, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %924, i32 noundef %928)
  %929 = getelementptr inbounds i8, ptr %.08671179, i64 40
  %930 = load ptr, ptr %929, align 8, !tbaa !120
  %931 = load i32, ptr %924, align 8, !tbaa !163
  %932 = getelementptr inbounds i8, ptr %.08671179, i64 24
  %933 = load ptr, ptr %932, align 8, !tbaa !110
  %934 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %930, i32 noundef %931, ptr noundef %933, ptr noundef null)
  br label %935

935:                                              ; preds = %922, %.critedge1059
  %936 = and i32 %5, 524736
  %.not966 = icmp eq i32 %936, 0
  br i1 %.not966, label %1069, label %937

937:                                              ; preds = %935
  br i1 %84, label %939, label %938

938:                                              ; preds = %937
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.2, i32 noundef 4462, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

939:                                              ; preds = %937
  br i1 %.not941, label %942, label %940

940:                                              ; preds = %939
  %941 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %941, label %.thread1120, label %942

942:                                              ; preds = %940, %939
  br i1 %.not939.not, label %.critedge1061, label %943

943:                                              ; preds = %942
  %944 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %944, label %.thread1120, label %945

945:                                              ; preds = %943
  %946 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %946, label %.thread1120, label %.critedge1061

.critedge1061:                                    ; preds = %942, %945
  %947 = and i32 %5, 524288
  %.not967 = icmp eq i32 %947, 0
  br i1 %.not967, label %952, label %948

948:                                              ; preds = %.critedge1061
  %949 = getelementptr inbounds i8, ptr %.08671179, i64 3710
  %950 = load i8, ptr %949, align 2, !tbaa !130, !range !38, !noundef !39
  %951 = trunc nuw i8 %950 to i1
  br i1 %951, label %.thread1120, label %952

952:                                              ; preds = %.critedge1061, %948
  %953 = and i32 %5, 256
  %.not968 = icmp eq i32 %953, 0
  br i1 %.not968, label %1069, label %.thread1120

.thread1120:                                      ; preds = %948, %945, %943, %940, %952
  %.09101125 = phi i32 [ 256, %952 ], [ 524288, %948 ], [ 128, %945 ], [ 128, %943 ], [ 64, %940 ]
  %.09111124 = phi i32 [ 22, %952 ], [ 22, %948 ], [ 4, %945 ], [ 3, %943 ], [ 0, %940 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %26) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %26)
  %954 = getelementptr inbounds i8, ptr %26, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %954, i8 0, i64 40, i1 false)
  store i32 %.09101125, ptr %26, align 8, !tbaa !164
  %955 = getelementptr inbounds i8, ptr %26, i64 4
  store i32 %5, ptr %955, align 4, !tbaa !166
  %956 = getelementptr inbounds i8, ptr %26, i64 8
  store ptr %7, ptr %956, align 8, !tbaa !167
  br i1 %79, label %960, label %957

957:                                              ; preds = %.thread1120
  %958 = getelementptr inbounds i8, ptr %.08671179, i64 40
  %959 = load ptr, ptr %958, align 8, !tbaa !120
  br label %960

960:                                              ; preds = %.thread1120, %957
  %961 = phi ptr [ %959, %957 ], [ %2, %.thread1120 ]
  %962 = getelementptr inbounds i8, ptr %26, i64 20
  store i32 %.09111124, ptr %962, align 4, !tbaa !168
  %963 = getelementptr inbounds i8, ptr %26, i64 24
  store ptr %961, ptr %963, align 8, !tbaa !169
  %964 = getelementptr inbounds i8, ptr %.08671179, i64 8
  %965 = load i32, ptr %964, align 8, !tbaa !112
  %966 = getelementptr inbounds i8, ptr %26, i64 32
  store i32 %965, ptr %966, align 8, !tbaa !170
  %967 = getelementptr inbounds i8, ptr %.08671179, i64 68
  %968 = load i32, ptr %967, align 4, !tbaa !131
  %969 = getelementptr inbounds i8, ptr %26, i64 36
  store i32 %968, ptr %969, align 4, !tbaa !171
  %970 = getelementptr inbounds i8, ptr %26, i64 40
  %971 = getelementptr inbounds i8, ptr %.08671179, i64 16
  %972 = getelementptr inbounds i8, ptr %.08671179, i64 24
  %973 = load ptr, ptr %972, align 8, !tbaa !110
  %974 = getelementptr inbounds i8, ptr %.08671179, i64 76
  %975 = load i32, ptr %974, align 4, !tbaa !144
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds i16, ptr %973, i64 %976
  %978 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %973, ptr noundef %977)
  %979 = getelementptr inbounds i8, ptr %26, i64 44
  store i32 %978, ptr %979, align 4, !tbaa !172
  %980 = getelementptr inbounds i8, ptr %.08671179, i64 80
  %981 = load i32, ptr %980, align 4, !tbaa !145
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds i16, ptr %973, i64 %982
  %984 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %973, ptr noundef %983)
  %985 = getelementptr inbounds i8, ptr %26, i64 48
  store i32 %984, ptr %985, align 8, !tbaa !173
  %986 = getelementptr inbounds i8, ptr %.08671179, i64 84
  %987 = load i32, ptr %986, align 4, !tbaa !146
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds i16, ptr %973, i64 %988
  %990 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %973, ptr noundef %989)
  %991 = getelementptr inbounds i8, ptr %26, i64 52
  store i32 %990, ptr %991, align 4, !tbaa !174
  %992 = call noundef i32 %6(ptr noundef nonnull %26)
  br i1 %79, label %996, label %993

993:                                              ; preds = %960
  %994 = getelementptr inbounds i8, ptr %.08671179, i64 40
  %995 = load ptr, ptr %994, align 8, !tbaa !120
  br label %996

996:                                              ; preds = %960, %993
  %997 = phi ptr [ %995, %993 ], [ %2, %960 ]
  %998 = load ptr, ptr %963, align 8, !tbaa !169
  %999 = icmp eq ptr %998, %997
  br i1 %999, label %1001, label %1000

1000:                                             ; preds = %996
  call void @__assert_fail(ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.2, i32 noundef 4517, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1001:                                             ; preds = %996
  %1002 = load i32, ptr %969, align 4, !tbaa !171
  %1003 = load i32, ptr %967, align 4, !tbaa !131
  %1004 = icmp eq i32 %1002, %1003
  br i1 %1004, label %1006, label %1005

1005:                                             ; preds = %1001
  call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.2, i32 noundef 4518, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1006:                                             ; preds = %1001
  %1007 = load i32, ptr %955, align 4, !tbaa !166
  %1008 = icmp eq i32 %1007, %5
  br i1 %1008, label %1010, label %1009

1009:                                             ; preds = %1006
  call void @__assert_fail(ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.2, i32 noundef 4519, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1010:                                             ; preds = %1006
  %1011 = load i8, ptr %970, align 8, !tbaa !175, !range !38, !noundef !39
  %1012 = trunc nuw i8 %1011 to i1
  %1013 = load i32, ptr %979, align 4, !tbaa !172
  %.not970 = icmp ne i32 %1013, %978
  %brmerge1064 = select i1 %.not970, i1 true, i1 %1012
  br i1 %brmerge1064, label %1014, label %1019

1014:                                             ; preds = %1010
  %1015 = sext i32 %1013 to i64
  %1016 = getelementptr inbounds i8, ptr %998, i64 %1015
  %1017 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %998, ptr noundef %1016)
  store i32 %1017, ptr %974, align 4, !tbaa !144
  %1018 = getelementptr inbounds i8, ptr %.08671179, i64 3708
  store i8 1, ptr %1018, align 4, !tbaa !147
  br label %1019

1019:                                             ; preds = %1010, %1014
  %1020 = load i32, ptr %985, align 8, !tbaa !173
  %.not971 = icmp ne i32 %1020, %984
  %brmerge1065 = select i1 %.not971, i1 true, i1 %1012
  br i1 %brmerge1065, label %1021, label %1033

1021:                                             ; preds = %1019
  %1022 = load i32, ptr %979, align 4, !tbaa !172
  %1023 = icmp eq i32 %1020, %1022
  br i1 %1023, label %1024, label %1026

1024:                                             ; preds = %1021
  %1025 = load i32, ptr %974, align 4, !tbaa !144
  br label %1031

1026:                                             ; preds = %1021
  %1027 = load ptr, ptr %963, align 8, !tbaa !169
  %1028 = sext i32 %1020 to i64
  %1029 = getelementptr inbounds i8, ptr %1027, i64 %1028
  %1030 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1027, ptr noundef %1029)
  br label %1031

1031:                                             ; preds = %1026, %1024
  %1032 = phi i32 [ %1025, %1024 ], [ %1030, %1026 ]
  store i32 %1032, ptr %980, align 4, !tbaa !145
  br label %1033

1033:                                             ; preds = %1019, %1031
  %1034 = load i32, ptr %991, align 4, !tbaa !174
  %.not972 = icmp ne i32 %1034, %990
  %brmerge1066 = select i1 %.not972, i1 true, i1 %1012
  br i1 %brmerge1066, label %1035, label %1047

1035:                                             ; preds = %1033
  %1036 = load i32, ptr %985, align 8, !tbaa !173
  %1037 = icmp eq i32 %1034, %1036
  br i1 %1037, label %1038, label %1040

1038:                                             ; preds = %1035
  %1039 = load i32, ptr %980, align 4, !tbaa !145
  br label %1045

1040:                                             ; preds = %1035
  %1041 = load ptr, ptr %963, align 8, !tbaa !169
  %1042 = sext i32 %1034 to i64
  %1043 = getelementptr inbounds i8, ptr %1041, i64 %1042
  %1044 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1041, ptr noundef %1043)
  br label %1045

1045:                                             ; preds = %1040, %1038
  %1046 = phi i32 [ %1039, %1038 ], [ %1044, %1040 ]
  store i32 %1046, ptr %986, align 4, !tbaa !146
  br label %1047

1047:                                             ; preds = %1033, %1045
  br i1 %1012, label %1048, label %1068

1048:                                             ; preds = %1047
  %1049 = load i32, ptr %966, align 8, !tbaa !170
  %1050 = load ptr, ptr %963, align 8, !tbaa !169
  %1051 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1050) #16
  %1052 = trunc i64 %1051 to i32
  %1053 = icmp eq i32 %1049, %1052
  br i1 %1053, label %1055, label %1054

1054:                                             ; preds = %1048
  call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.2, i32 noundef 4526, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1055:                                             ; preds = %1048
  %1056 = icmp sle i32 %1049, %.0885
  %brmerge1068 = or i1 %.not945, %1056
  br i1 %brmerge1068, label %1061, label %1057

1057:                                             ; preds = %1055
  %1058 = load i32, ptr %971, align 8, !tbaa !119
  %1059 = sub i32 %1049, %.0885
  %1060 = add nsw i32 %1059, %1058
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %971, i32 noundef %1060)
  %.pre1154 = load ptr, ptr %963, align 8, !tbaa !169
  br label %1061

1061:                                             ; preds = %1055, %1057
  %1062 = phi ptr [ %1050, %1055 ], [ %.pre1154, %1057 ]
  %1063 = load ptr, ptr %972, align 8, !tbaa !110
  %1064 = load i32, ptr %971, align 8, !tbaa !119
  %1065 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1063, i32 noundef %1064, ptr noundef %1062, ptr noundef null, ptr noundef null)
  %1066 = getelementptr inbounds i8, ptr %.08671179, i64 4
  store i32 %1065, ptr %1066, align 4, !tbaa !111
  %1067 = load i32, ptr %966, align 8, !tbaa !170
  store i32 %1067, ptr %964, align 8, !tbaa !112
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08671179)
  br label %1068

1068:                                             ; preds = %1061, %1047
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %26) #15
  br label %1069

1069:                                             ; preds = %952, %1068, %935
  br i1 %79, label %1077, label %1070

1070:                                             ; preds = %1069
  %1071 = getelementptr inbounds i8, ptr %.08671179, i64 40
  %1072 = load ptr, ptr %1071, align 8, !tbaa !120
  %1073 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1072, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not973 = icmp eq i32 %1073, 0
  br i1 %.not973, label %1077, label %1074

1074:                                             ; preds = %1070
  %1075 = getelementptr inbounds i8, ptr %.08671179, i64 8
  %1076 = load i32, ptr %1075, align 8, !tbaa !112
  br label %1077

1077:                                             ; preds = %917, %1074, %1070, %1069
  %.1907 = phi i32 [ %.0906, %1069 ], [ %1076, %1074 ], [ %.0906, %1070 ], [ %.0906, %917 ]
  %.1904 = phi ptr [ %.0903, %1069 ], [ %1072, %1074 ], [ %.0903, %1070 ], [ %.0903, %917 ]
  %1078 = getelementptr inbounds i8, ptr %.08671179, i64 3712
  store i32 0, ptr %1078, align 8, !tbaa !132
  %.not974.not = icmp eq ptr %.1904, null
  br i1 %.not974.not, label %.thread1126, label %1079

1079:                                             ; preds = %1077
  %1080 = icmp sgt i32 %.1907, -1
  br i1 %1080, label %1082, label %1081

1081:                                             ; preds = %1079
  call void @__assert_fail(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.2, i32 noundef 4554, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1082:                                             ; preds = %1079
  br i1 %.not945, label %1099, label %1083

1083:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %27) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %27)
  store i32 262144, ptr %27, align 8, !tbaa !164
  %1084 = getelementptr inbounds i8, ptr %27, i64 4
  store i32 %5, ptr %1084, align 4, !tbaa !166
  %1085 = getelementptr inbounds i8, ptr %27, i64 24
  store ptr %2, ptr %1085, align 8, !tbaa !169
  %1086 = getelementptr inbounds i8, ptr %27, i64 32
  store i32 %.1907, ptr %1086, align 8, !tbaa !170
  %1087 = add nuw nsw i32 %.1907, 1
  %1088 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1087)
  %1089 = getelementptr inbounds i8, ptr %27, i64 36
  store i32 %1088, ptr %1089, align 4, !tbaa !171
  %1090 = getelementptr inbounds i8, ptr %27, i64 8
  store ptr %7, ptr %1090, align 8, !tbaa !167
  %1091 = call noundef i32 %6(ptr noundef nonnull %27)
  %1092 = load ptr, ptr %1085, align 8, !tbaa !169
  %1093 = load i32, ptr %1089, align 4, !tbaa !171
  %1094 = load i32, ptr %1086, align 8, !tbaa !170
  %1095 = add nsw i32 %1093, -1
  %1096 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1094, i32 noundef %1095)
  %.not975 = icmp sgt i32 %1096, %1093
  br i1 %.not975, label %1097, label %1098

1097:                                             ; preds = %1083
  call void @__assert_fail(ptr noundef nonnull @.str.76, ptr noundef nonnull @.str.2, i32 noundef 4568, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1098:                                             ; preds = %1083
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #15
  br label %1099

1099:                                             ; preds = %1098, %1082
  %.3909 = phi i32 [ %1096, %1098 ], [ %.1907, %1082 ]
  %.0858 = phi i32 [ %1093, %1098 ], [ %3, %1082 ]
  %.0856 = phi ptr [ %1092, %1098 ], [ %2, %1082 ]
  %1100 = add nsw i32 %.3909, 1
  %1101 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1100, i32 noundef %.0858)
  %1102 = sext i32 %1101 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0856, ptr noundef nonnull %.1904, i64 noundef %1102)
  br label %.thread1126

.thread1126:                                      ; preds = %881, %1099, %1077
  %.38711206 = phi i8 [ %.38711207, %1099 ], [ %.38711207, %1077 ], [ %.3871, %881 ]
  %.18771204 = phi float [ %.18771205, %1099 ], [ %.18771205, %1077 ], [ %.1877, %881 ]
  %.1880.in1202 = phi i1 [ %.1880.in1203, %1099 ], [ %.1880.in1203, %1077 ], [ %.1880.in, %881 ]
  %.28841200 = phi i8 [ %.28841199, %1099 ], [ %.28841199, %1077 ], [ %.2884, %881 ]
  %.not9741130 = phi i1 [ true, %1099 ], [ false, %1077 ], [ false, %881 ]
  %.1857 = phi ptr [ %.0856, %1099 ], [ %2, %1077 ], [ %2, %881 ]
  %1103 = trunc nuw i8 %.38711206 to i1
  br i1 %1103, label %1104, label %1108

1104:                                             ; preds = %.thread1126
  %1105 = load i32, ptr %166, align 4, !tbaa !100
  %1106 = icmp eq i32 %1105, %89
  br i1 %1106, label %1107, label %1108

1107:                                             ; preds = %1104
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1108

1108:                                             ; preds = %1107, %1104, %.thread1126
  br i1 %68, label %1114, label %1109

1109:                                             ; preds = %1108
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %89, i32 noundef 1)
  %.sroa.092.0.copyload = load <2 x float>, ptr %11, align 8
  %1110 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %1110, align 8
  %1111 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1112 = getelementptr inbounds i8, ptr %77, i64 5556
  %1113 = load float, ptr %1112, align 4, !tbaa !93
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %1111, i1 noundef zeroext true, float noundef %1113)
  br label %1114

1114:                                             ; preds = %1109, %1108
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #15
  %1115 = load float, ptr %11, align 8, !tbaa !136
  %1116 = getelementptr inbounds i8, ptr %11, i64 4
  %1117 = load float, ptr %1116, align 4, !tbaa !176
  %1118 = fadd float %.sroa.0494.2, %1115
  %1119 = fadd float %.sroa.11.0.copyload, %1117
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef %1115, float noundef %1117, float noundef %1118, float noundef %1119)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  br i1 %68, label %1120, label %1123

1120:                                             ; preds = %1114
  %1121 = getelementptr inbounds i8, ptr %.2864, i64 216
  %1122 = load i64, ptr %1121, align 8
  br label %1126

1123:                                             ; preds = %1114
  %1124 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %99)
  %1125 = bitcast <2 x float> %1124 to i64
  br label %1126

1126:                                             ; preds = %1123, %1120
  %storemerge976 = phi i64 [ %1122, %1120 ], [ %1125, %1123 ]
  store i64 %storemerge976, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %344, label %1127, label %1130

1127:                                             ; preds = %1126
  %1128 = getelementptr inbounds i8, ptr %.08671179, i64 40
  %1129 = load ptr, ptr %1128, align 8, !tbaa !120
  br label %1130

1130:                                             ; preds = %1126, %1127
  %1131 = phi ptr [ %1129, %1127 ], [ %.1857, %1126 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #15
  store ptr null, ptr %31, align 8, !tbaa !40
  br i1 %354, label %1132, label %1135

1132:                                             ; preds = %1130
  %1133 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1134 = getelementptr inbounds i8, ptr %1, i64 %1133
  store ptr %1134, ptr %31, align 8, !tbaa !40
  br label %1135

1135:                                             ; preds = %1132, %1130
  %1136 = phi ptr [ %1134, %1132 ], [ null, %1130 ]
  %.0896 = phi ptr [ %1, %1132 ], [ %1131, %1130 ]
  %brmerge1069 = select i1 %309, i1 true, i1 %.1880.in1202
  br i1 %brmerge1069, label %1137, label %1395

1137:                                             ; preds = %1135
  br i1 %310, label %1139, label %1138

1138:                                             ; preds = %1137
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4608, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1139:                                             ; preds = %1137
  br i1 %354, label %1145, label %1140

1140:                                             ; preds = %1139
  %1141 = getelementptr inbounds i8, ptr %.08671179, i64 8
  %1142 = load i32, ptr %1141, align 8, !tbaa !112
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr inbounds i8, ptr %.0896, i64 %1143
  store ptr %1144, ptr %31, align 8, !tbaa !40
  br label %1145

1145:                                             ; preds = %1140, %1139
  %.pre11601162 = phi ptr [ %1144, %1140 ], [ %1136, %1139 ]
  %1146 = getelementptr inbounds i8, ptr %.08671179, i64 24
  %1147 = load ptr, ptr %1146, align 8, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %33)
  %.sroa.063.0.copyload = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, align 4
  %.sroa.9.0.copyload = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 4), align 4
  br i1 %309, label %1148, label %1153

1148:                                             ; preds = %1145
  %1149 = getelementptr inbounds i8, ptr %.08671179, i64 76
  %1150 = load i32, ptr %1149, align 4, !tbaa !144
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds i16, ptr %1147, i64 %1151
  br label %1153

1153:                                             ; preds = %1148, %1145
  %.sroa.069.0 = phi ptr [ %1152, %1148 ], [ null, %1145 ]
  %.sroa.063.0 = phi i32 [ -1, %1148 ], [ %.sroa.063.0.copyload, %1145 ]
  %.0890 = phi i32 [ 1, %1148 ], [ 0, %1145 ]
  br i1 %.1880.in1202, label %1154, label %1163

1154:                                             ; preds = %1153
  %1155 = getelementptr inbounds i8, ptr %.08671179, i64 80
  %1156 = load i32, ptr %1155, align 4, !tbaa !145
  %1157 = getelementptr inbounds i8, ptr %.08671179, i64 84
  %1158 = load i32, ptr %1157, align 4, !tbaa !146
  %1159 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1156, i32 noundef %1158)
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds i16, ptr %1147, i64 %1160
  %1162 = add nuw nsw i32 %.0890, 1
  br label %1163

1163:                                             ; preds = %1154, %1153
  %.sroa.7.0 = phi ptr [ %1161, %1154 ], [ null, %1153 ]
  %.sroa.9.0 = phi i32 [ -1, %1154 ], [ %.sroa.9.0.copyload, %1153 ]
  %.1891 = phi i32 [ %1162, %1154 ], [ %.0890, %1153 ]
  %.lobit = lshr exact i32 %67, 26
  %1164 = add nuw nsw i32 %.1891, %.lobit
  br label %1165

1165:                                             ; preds = %1180, %1163
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1163 ], [ %.sroa.9.2, %1180 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1163 ], [ %.sroa.063.3, %1180 ]
  %.2892 = phi i32 [ %1164, %1163 ], [ %.4894, %1180 ]
  %.0887 = phi i32 [ 0, %1163 ], [ %.1888, %1180 ]
  %.0886 = phi ptr [ %1147, %1163 ], [ %1181, %1180 ]
  %1166 = load i16, ptr %.0886, align 2, !tbaa !142
  switch i16 %1166, label %1180 [
    i16 0, label %1182
    i16 10, label %1167
  ]

1167:                                             ; preds = %1165
  %1168 = add nsw i32 %.0887, 1
  %1169 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1169, label %1170, label %1174

1170:                                             ; preds = %1167
  %.not978 = icmp ult ptr %.0886, %.sroa.069.0
  br i1 %.not978, label %1174, label %1171

1171:                                             ; preds = %1170
  %1172 = add nsw i32 %.2892, -1
  %1173 = icmp slt i32 %.2892, 2
  br i1 %1173, label %1182, label %1174

1174:                                             ; preds = %1171, %1170, %1167
  %.sroa.063.2 = phi i32 [ %1168, %1171 ], [ -1, %1170 ], [ %.sroa.063.1, %1167 ]
  %.3893 = phi i32 [ %1172, %1171 ], [ %.2892, %1170 ], [ %.2892, %1167 ]
  %1175 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1175, label %1176, label %1180

1176:                                             ; preds = %1174
  %.not979 = icmp ult ptr %.0886, %.sroa.7.0
  br i1 %.not979, label %1180, label %1177

1177:                                             ; preds = %1176
  %1178 = add nsw i32 %.3893, -1
  %1179 = icmp slt i32 %.3893, 2
  br i1 %1179, label %1182, label %1180

1180:                                             ; preds = %1165, %1177, %1176, %1174
  %.sroa.9.2 = phi i32 [ %1168, %1177 ], [ -1, %1176 ], [ %.sroa.9.1, %1174 ], [ %.sroa.9.1, %1165 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1177 ], [ %.sroa.063.2, %1176 ], [ %.sroa.063.2, %1174 ], [ %.sroa.063.1, %1165 ]
  %.4894 = phi i32 [ %1178, %1177 ], [ %.3893, %1176 ], [ %.3893, %1174 ], [ %.2892, %1165 ]
  %.1888 = phi i32 [ %1168, %1177 ], [ %1168, %1176 ], [ %1168, %1174 ], [ %.0887, %1165 ]
  %1181 = getelementptr inbounds i8, ptr %.0886, i64 2
  br label %1165, !llvm.loop !177

1182:                                             ; preds = %1177, %1171, %1165
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1165 ], [ %.sroa.9.1, %1171 ], [ %1168, %1177 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1165 ], [ %1168, %1171 ], [ %.sroa.063.2, %1177 ]
  %.2889 = phi i32 [ %.0887, %1165 ], [ %1168, %1171 ], [ %1168, %1177 ]
  %1183 = add nsw i32 %.2889, 1
  %1184 = icmp eq i32 %.sroa.063.4, -1
  %spec.select1070 = select i1 %1184, i32 %1183, i32 %.sroa.063.4
  %1185 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1185, i32 %1183, i32 %.sroa.9.3
  %1186 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1147)
  %1187 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1186, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1187, i64 0
  store float %.sroa.045.0.vec.extract, ptr %32, align 4, !tbaa !178
  %1188 = sitofp i32 %spec.select1070 to float
  %1189 = getelementptr inbounds i8, ptr %77, i64 6544
  %1190 = load float, ptr %1189, align 8, !tbaa !41
  %1191 = fmul float %1190, %1188
  %1192 = getelementptr inbounds i8, ptr %32, i64 4
  store float %1191, ptr %1192, align 4, !tbaa !179
  %1193 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1193, label %1194, label %1201

1194:                                             ; preds = %1182
  %1195 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1147)
  %1196 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1195, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1196, i64 0
  store float %.sroa.044.0.vec.extract, ptr %33, align 4, !tbaa !178
  %1197 = uitofp nneg i32 %.sroa.9.4 to float
  %1198 = load float, ptr %1189, align 8, !tbaa !41
  %1199 = fmul float %1198, %1197
  %1200 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1199, ptr %1200, align 4, !tbaa !179
  br label %1201

1201:                                             ; preds = %1194, %1182
  %1202 = phi float [ %1198, %1194 ], [ %1190, %1182 ]
  br i1 %68, label %1203, label %1207

1203:                                             ; preds = %1201
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #15
  %1204 = sitofp i32 %1183 to float
  %1205 = fmul float %1202, %1204
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %.sroa.0494.2, float noundef %1205)
  %1206 = load i64, ptr %34, align 8
  store i64 %1206, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #15
  br label %1207

1207:                                             ; preds = %1203, %1201
  br i1 %309, label %1208, label %1268

1208:                                             ; preds = %1207
  %1209 = getelementptr inbounds i8, ptr %.08671179, i64 3708
  %1210 = load i8, ptr %1209, align 4, !tbaa !147, !range !38, !noundef !39
  %1211 = trunc nuw i8 %1210 to i1
  br i1 %1211, label %1212, label %1268

1212:                                             ; preds = %1208
  %1213 = and i32 %5, 4096
  %.not980 = icmp eq i32 %1213, 0
  br i1 %.not980, label %1214, label %1234

1214:                                             ; preds = %1212
  %1215 = fmul float %.sroa.0494.2, 2.500000e-01
  %1216 = load float, ptr %32, align 4, !tbaa !178
  %1217 = getelementptr inbounds i8, ptr %.08671179, i64 72
  %1218 = load float, ptr %1217, align 8, !tbaa !114
  %1219 = fcmp olt float %1216, %1218
  br i1 %1219, label %1220, label %1225

1220:                                             ; preds = %1214
  %1221 = fsub float %1216, %1215
  %1222 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1221)
  %1223 = fptosi float %1222 to i32
  %1224 = sitofp i32 %1223 to float
  store float %1224, ptr %1217, align 8, !tbaa !114
  br label %1236

1225:                                             ; preds = %1214
  %1226 = load float, ptr %99, align 4, !tbaa !137
  %1227 = fsub float %.sroa.0494.2, %1226
  %1228 = fsub float %1216, %1227
  %1229 = fcmp ult float %1228, %1218
  br i1 %1229, label %1236, label %1230

1230:                                             ; preds = %1225
  %1231 = fadd float %1215, %1228
  %1232 = fptosi float %1231 to i32
  %1233 = sitofp i32 %1232 to float
  store float %1233, ptr %1217, align 8, !tbaa !114
  br label %1236

1234:                                             ; preds = %1212
  %1235 = getelementptr inbounds i8, ptr %.08671179, i64 72
  store float 0.000000e+00, ptr %1235, align 8, !tbaa !114
  br label %1236

1236:                                             ; preds = %1220, %1230, %1225, %1234
  br i1 %68, label %1237, label %1267

1237:                                             ; preds = %1236
  %1238 = load float, ptr %1192, align 4, !tbaa !179
  %1239 = load float, ptr %1189, align 8, !tbaa !41
  %1240 = fsub float %1238, %1239
  %1241 = fcmp olt float %1240, %.18771204
  br i1 %1241, label %1242, label %1244

1242:                                             ; preds = %1237
  %1243 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1240)
  %.pre1155 = load float, ptr %100, align 4, !tbaa !87
  br label %1253

1244:                                             ; preds = %1237
  %1245 = load float, ptr %100, align 4, !tbaa !87
  %1246 = fneg float %1245
  %1247 = call float @llvm.fmuladd.f32(float %1246, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1248 = fsub float %1238, %1247
  %1249 = fcmp ult float %1248, %.18771204
  br i1 %1249, label %1253, label %1250

1250:                                             ; preds = %1244
  %1251 = fsub float %1238, %.sroa.11.0.copyload
  %1252 = call float @llvm.fmuladd.f32(float %1245, float 2.000000e+00, float %1251)
  br label %1253

1253:                                             ; preds = %1244, %1250, %1242
  %1254 = phi float [ %.pre1155, %1242 ], [ %1245, %1250 ], [ %1245, %1244 ]
  %.2878 = phi float [ %1243, %1242 ], [ %1252, %1250 ], [ %.18771204, %1244 ]
  %1255 = getelementptr inbounds i8, ptr %30, i64 4
  %1256 = load float, ptr %1255, align 4, !tbaa !179
  %1257 = call float @llvm.fmuladd.f32(float %1254, float 2.000000e+00, float %1256)
  %1258 = fsub float %1257, %.sroa.11.0.copyload
  %1259 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1258, float noundef 0.000000e+00)
  %1260 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2878, float noundef 0.000000e+00, float noundef %1259)
  %1261 = getelementptr inbounds i8, ptr %.2864, i64 96
  %1262 = load float, ptr %1261, align 4, !tbaa !106
  %1263 = fsub float %1262, %1260
  %1264 = getelementptr inbounds i8, ptr %29, i64 4
  %1265 = load float, ptr %1264, align 4, !tbaa !179
  %1266 = fadd float %1265, %1263
  store float %1266, ptr %1264, align 4, !tbaa !179
  store float %1260, ptr %1261, align 4, !tbaa !106
  br label %1267

1267:                                             ; preds = %1253, %1236
  store i8 0, ptr %1209, align 4, !tbaa !147
  br label %1268

1268:                                             ; preds = %1267, %1208, %1207
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #15
  %1269 = getelementptr inbounds i8, ptr %.08671179, i64 72
  %1270 = load float, ptr %1269, align 8, !tbaa !114
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1270, float noundef 0.000000e+00)
  br i1 %.1880.in1202, label %1271, label %1340

1271:                                             ; preds = %1268
  %1272 = getelementptr inbounds i8, ptr %.08671179, i64 80
  %1273 = load i32, ptr %1272, align 4, !tbaa !145
  %1274 = getelementptr inbounds i8, ptr %.08671179, i64 84
  %1275 = load i32, ptr %1274, align 4, !tbaa !146
  %1276 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1273, i32 noundef %1275)
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds i16, ptr %1147, i64 %1277
  %1279 = load i32, ptr %1272, align 4, !tbaa !145
  %1280 = load i32, ptr %1274, align 4, !tbaa !146
  %1281 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1279, i32 noundef %1280)
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds i16, ptr %1147, i64 %1282
  %1284 = select i1 %309, float 1.000000e+00, float 0x3FE3333340000000
  %1285 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1284)
  %1286 = select i1 %68, float 0.000000e+00, float -1.000000e+00
  %1287 = select i1 %68, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #15
  %1288 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1288, ptr %37, align 8
  %1289 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1289, ptr %36, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #15
  store ptr %1278, ptr %38, align 8, !tbaa !40
  %1290 = getelementptr inbounds i8, ptr %36, i64 4
  %1291 = icmp slt i32 %1276, %1281
  br i1 %1291, label %.lr.ph1147, label %._crit_edge

.lr.ph1147:                                       ; preds = %1271
  %1292 = extractelement <2 x float> %1289, i64 1
  %1293 = getelementptr inbounds i8, ptr %28, i64 12
  %1294 = getelementptr inbounds i8, ptr %28, i64 4
  %1295 = getelementptr inbounds i8, ptr %77, i64 6536
  %1296 = getelementptr inbounds i8, ptr %.2864, i64 624
  %1297 = getelementptr inbounds i8, ptr %39, i64 8
  %.pre1156 = load float, ptr %1189, align 8, !tbaa !41
  br label %1298

1298:                                             ; preds = %.lr.ph1147, %.loopexit
  %1299 = phi ptr [ %1278, %.lr.ph1147 ], [ %1332, %.loopexit ]
  %1300 = phi float [ %1292, %.lr.ph1147 ], [ %1338, %.loopexit ]
  %1301 = phi float [ %.pre1156, %.lr.ph1147 ], [ %1334, %.loopexit ]
  %1302 = load float, ptr %1293, align 4, !tbaa !180
  %1303 = fadd float %1302, %1301
  %1304 = fcmp ogt float %1300, %1303
  br i1 %1304, label %._crit_edge.loopexit, label %1305

1305:                                             ; preds = %1298
  %1306 = load float, ptr %1294, align 4, !tbaa !181
  %1307 = fcmp olt float %1300, %1306
  br i1 %1307, label %.preheader, label %1314

.preheader:                                       ; preds = %1305, %1310
  %1308 = phi ptr [ %1311, %1310 ], [ %1299, %1305 ]
  %1309 = icmp ult ptr %1308, %1283
  br i1 %1309, label %1310, label %.loopexit

1310:                                             ; preds = %.preheader
  %1311 = getelementptr inbounds i8, ptr %1308, i64 2
  store ptr %1311, ptr %38, align 8, !tbaa !40
  %1312 = load i16, ptr %1308, align 2, !tbaa !142
  %1313 = icmp eq i16 %1312, 10
  br i1 %1313, label %.loopexit, label %.preheader, !llvm.loop !182

1314:                                             ; preds = %1305
  %1315 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1299, ptr noundef nonnull %1283, ptr noundef nonnull %38, ptr noundef null, i1 noundef zeroext true)
  %.sroa.029.0.vec.extract = extractelement <2 x float> %1315, i64 0
  %1316 = fcmp ugt float %.sroa.029.0.vec.extract, 0.000000e+00
  br i1 %1316, label %1323, label %1317

1317:                                             ; preds = %1314
  %1318 = load ptr, ptr %1295, align 8, !tbaa !122
  %1319 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110) %1318, i16 noundef zeroext 32)
  %1320 = fmul float %1319, 5.000000e-01
  %1321 = fptosi float %1320 to i32
  %1322 = sitofp i32 %1321 to float
  br label %1323

1323:                                             ; preds = %1317, %1314
  %.sroa.029.0.vec.extract32.pre-phi = phi float [ %1322, %1317 ], [ %.sroa.029.0.vec.extract, %1314 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #15
  %1324 = load float, ptr %1189, align 8, !tbaa !41
  %1325 = fsub float %1286, %1324
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef %1325)
  %1326 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %41)
  store <2 x float> %1326, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %.sroa.029.0.vec.extract32.pre-phi, float noundef %1287)
  %1327 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %1327, ptr %42, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(8) %42)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %44, ptr noundef nonnull align 4 dereferenceable(16) %28)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %44)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %45, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1328 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %45)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #15
  br i1 %1328, label %1329, label %1331

1329:                                             ; preds = %1323
  %1330 = load ptr, ptr %1296, align 8, !tbaa !183
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1330, ptr noundef nonnull align 4 dereferenceable(8) %39, ptr noundef nonnull align 4 dereferenceable(8) %1297, i32 noundef %1285, float noundef 0.000000e+00, i32 noundef 0)
  br label %1331

1331:                                             ; preds = %1329, %1323
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #15
  %.pre1157 = load float, ptr %1189, align 8, !tbaa !41
  %.pre1158 = load float, ptr %1290, align 4, !tbaa !179
  %.pre1159 = load ptr, ptr %38, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1310, %1331
  %1332 = phi ptr [ %.pre1159, %1331 ], [ %1308, %.preheader ], [ %1311, %1310 ]
  %1333 = phi float [ %.pre1158, %1331 ], [ %1300, %1310 ], [ %1300, %.preheader ]
  %1334 = phi float [ %.pre1157, %1331 ], [ %1301, %1310 ], [ %1301, %.preheader ]
  %1335 = load float, ptr %29, align 8, !tbaa !178
  %1336 = load float, ptr %35, align 4, !tbaa !178
  %1337 = fsub float %1335, %1336
  store float %1337, ptr %36, align 8, !tbaa !178
  %1338 = fadd float %1334, %1333
  store float %1338, ptr %1290, align 4, !tbaa !179
  %1339 = icmp ult ptr %1332, %1283
  br i1 %1339, label %1298, label %._crit_edge.loopexit, !llvm.loop !184

._crit_edge.loopexit:                             ; preds = %1298, %.loopexit
  %.pre1160.pre.pre = load ptr, ptr %31, align 8, !tbaa !40
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1271
  %.pre1160.pre = phi ptr [ %.pre1160.pre.pre, %._crit_edge.loopexit ], [ %.pre11601162, %1271 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #15
  br label %1340

1340:                                             ; preds = %._crit_edge, %1268
  %.pre1160 = phi ptr [ %.pre1160.pre, %._crit_edge ], [ %.pre11601162, %1268 ]
  br i1 %68, label %1346, label %1341

1341:                                             ; preds = %1340
  %1342 = ptrtoint ptr %.pre1160 to i64
  %1343 = ptrtoint ptr %.0896 to i64
  %1344 = sub i64 %1342, %1343
  %1345 = icmp slt i64 %1344, 2097152
  br i1 %1345, label %1346, label %1355

1346:                                             ; preds = %1341, %1340
  %. = phi ptr [ %28, %1341 ], [ null, %1340 ]
  %1347 = zext i1 %354 to i32
  %1348 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1347, float noundef 1.000000e+00)
  %1349 = getelementptr inbounds i8, ptr %.2864, i64 624
  %1350 = load ptr, ptr %1349, align 8, !tbaa !183
  %1351 = getelementptr inbounds i8, ptr %77, i64 6536
  %1352 = load ptr, ptr %1351, align 8, !tbaa !122
  %1353 = load float, ptr %1189, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #15
  %1354 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1354, ptr %46, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1350, ptr noundef %1352, float noundef %1353, ptr noundef nonnull align 4 dereferenceable(8) %46, i32 noundef %1348, ptr noundef %.0896, ptr noundef %.pre1160, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #15
  br label %1355

1355:                                             ; preds = %1346, %1341
  br i1 %309, label %1356, label %1394

1356:                                             ; preds = %1355
  %1357 = getelementptr inbounds i8, ptr %77, i64 24
  %1358 = load float, ptr %1357, align 8, !tbaa !185
  %1359 = getelementptr inbounds i8, ptr %.08671179, i64 3704
  %1360 = load float, ptr %1359, align 8, !tbaa !186
  %1361 = fadd float %1358, %1360
  store float %1361, ptr %1359, align 8, !tbaa !186
  %1362 = getelementptr inbounds i8, ptr %77, i64 202
  %1363 = load i8, ptr %1362, align 2, !tbaa !187, !range !38, !noundef !39
  %1364 = trunc nuw i8 %1363 to i1
  %1365 = fcmp ugt float %1361, 0.000000e+00
  %or.cond1071 = select i1 %1364, i1 %1365, i1 false
  br i1 %or.cond1071, label %1366, label %1369

1366:                                             ; preds = %1356
  %1367 = call float @fmodf(float noundef %1361, float noundef 0x3FF3333340000000) #15
  %1368 = fcmp ole float %1367, 0x3FE99999A0000000
  br label %1369

1369:                                             ; preds = %1366, %1356
  %1370 = phi i1 [ true, %1356 ], [ %1368, %1366 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #15
  %1371 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %32)
  store <2 x float> %1371, ptr %48, align 8
  %1372 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1372, ptr %47, align 8
  %1373 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %47)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #15
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1373, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1373, i64 1
  %1374 = load float, ptr %1189, align 8, !tbaa !41
  %1375 = fsub float %.sroa.0.4.vec.extract, %1374
  %1376 = fadd float %1375, 5.000000e-01
  %1377 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1378 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %49, float noundef %.sroa.0.0.vec.extract, float noundef %1376, float noundef %1377, float noundef %1378)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #15
  br i1 %1370, label %1379, label %.critedge13

1379:                                             ; preds = %1369
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1380 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %49, ptr noundef nonnull align 4 dereferenceable(16) %50)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #15
  br i1 %1380, label %1381, label %1386

1381:                                             ; preds = %1379
  %1382 = getelementptr inbounds i8, ptr %.2864, i64 624
  %1383 = load ptr, ptr %1382, align 8, !tbaa !183
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #15
  %1384 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %49)
  store <2 x float> %1384, ptr %51, align 8
  %1385 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1383, ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef %1385, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #15
  br label %1386

.critedge13:                                      ; preds = %1369
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #15
  br label %1386

1386:                                             ; preds = %.critedge13, %1381, %1379
  br i1 %79, label %1393, label %1387

1387:                                             ; preds = %1386
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #15
  %1388 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1389 = load float, ptr %1189, align 8, !tbaa !41
  %1390 = fsub float %.sroa.0.4.vec.extract, %1389
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1388, float noundef %1390)
  %1391 = getelementptr inbounds i8, ptr %77, i64 12480
  %1392 = load i64, ptr %52, align 8
  store i64 %1392, ptr %1391, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #15
  br label %1393

1393:                                             ; preds = %1387, %1386
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #15
  br label %1394

1394:                                             ; preds = %1393, %1355
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  br label %1430

1395:                                             ; preds = %1135
  br i1 %68, label %.critedge1073, label %1396

1396:                                             ; preds = %1395
  br i1 %354, label %1414, label %1397

1397:                                             ; preds = %1396
  %1398 = load i32, ptr %166, align 4, !tbaa !100
  %1399 = icmp eq i32 %1398, %89
  br i1 %1399, label %1400, label %1405

1400:                                             ; preds = %1397
  %1401 = getelementptr inbounds i8, ptr %.08671179, i64 8
  %1402 = load i32, ptr %1401, align 8, !tbaa !112
  %1403 = sext i32 %1402 to i64
  %1404 = getelementptr inbounds i8, ptr %.0896, i64 %1403
  store ptr %1404, ptr %31, align 8, !tbaa !40
  br label %1414

1405:                                             ; preds = %1397
  %1406 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0896) #16
  %1407 = getelementptr inbounds i8, ptr %.0896, i64 %1406
  store ptr %1407, ptr %31, align 8, !tbaa !40
  br label %1414

.critedge1073:                                    ; preds = %1395
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #15
  %1408 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0896, ptr noundef nonnull %31)
  %1409 = sitofp i32 %1408 to float
  %1410 = getelementptr inbounds i8, ptr %77, i64 6544
  %1411 = load float, ptr %1410, align 8, !tbaa !41
  %1412 = fmul float %1411, %1409
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %.sroa.0494.2, float noundef %1412)
  %1413 = load i64, ptr %53, align 8
  store i64 %1413, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #15
  br label %1420

1414:                                             ; preds = %1396, %1400, %1405
  %1415 = phi ptr [ %1136, %1396 ], [ %1404, %1400 ], [ %1407, %1405 ]
  %1416 = ptrtoint ptr %1415 to i64
  %1417 = ptrtoint ptr %.0896 to i64
  %1418 = sub i64 %1416, %1417
  %1419 = icmp slt i64 %1418, 2097152
  br i1 %1419, label %1420, label %1430

1420:                                             ; preds = %.critedge1073, %1414
  %.14 = phi ptr [ %28, %1414 ], [ null, %.critedge1073 ]
  %1421 = zext i1 %354 to i32
  %1422 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1421, float noundef 1.000000e+00)
  %1423 = getelementptr inbounds i8, ptr %.2864, i64 624
  %1424 = load ptr, ptr %1423, align 8, !tbaa !183
  %1425 = getelementptr inbounds i8, ptr %77, i64 6536
  %1426 = load ptr, ptr %1425, align 8, !tbaa !122
  %1427 = getelementptr inbounds i8, ptr %77, i64 6544
  %1428 = load float, ptr %1427, align 8, !tbaa !41
  %1429 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1424, ptr noundef %1426, float noundef %1428, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %1422, ptr noundef %.0896, ptr noundef %1429, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1430

1430:                                             ; preds = %1414, %1420, %1394
  br i1 %brmerge994, label %1432, label %1431

1431:                                             ; preds = %1430
  call void @_ZN5ImGui7PopFontEv()
  br label %1432

1432:                                             ; preds = %1430, %1431
  br i1 %68, label %1433, label %1455

1433:                                             ; preds = %1432
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #15
  %1434 = load float, ptr %30, align 8, !tbaa !178
  %1435 = getelementptr inbounds i8, ptr %30, i64 4
  %1436 = load float, ptr %1435, align 4, !tbaa !179
  %1437 = load float, ptr %100, align 4, !tbaa !87
  %1438 = fadd float %1436, %1437
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1434, float noundef %1438)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %54)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #15
  %1439 = getelementptr inbounds i8, ptr %77, i64 7360
  %1440 = load i32, ptr %1439, align 8, !tbaa !188
  %1441 = or i32 %1440, 257
  store i32 %1441, ptr %1439, align 8, !tbaa !188
  call void @_ZN5ImGui8EndChildEv()
  %1442 = getelementptr inbounds i8, ptr %77, i64 7384
  %1443 = getelementptr inbounds i8, ptr %77, i64 7392
  %1444 = load i32, ptr %1443, align 8, !tbaa !90
  %1445 = and i32 %1444, 128
  %1446 = getelementptr inbounds i8, ptr %15, i64 8
  %1447 = load i32, ptr %1446, align 4, !tbaa !189
  %1448 = or i32 %1447, %1445
  store i32 %1448, ptr %1446, align 4, !tbaa !189
  store i32 %1440, ptr %1439, align 8, !tbaa !188
  call void @_ZN5ImGui8EndGroupEv()
  %1449 = load i32, ptr %1442, align 8, !tbaa !190
  %1450 = icmp eq i32 %1449, 0
  br i1 %1450, label %1451, label %1455

1451:                                             ; preds = %1433
  store i32 %89, ptr %1442, align 8, !tbaa !190
  %1452 = getelementptr inbounds i8, ptr %15, i64 4
  %1453 = getelementptr inbounds i8, ptr %77, i64 7388
  %1454 = load <2 x i32>, ptr %1452, align 4, !tbaa !92
  store <2 x i32> %1454, ptr %1453, align 4, !tbaa !92
  br label %1455

1455:                                             ; preds = %1433, %1451, %1432
  %1456 = getelementptr inbounds i8, ptr %77, i64 12588
  %1457 = load i8, ptr %1456, align 4, !tbaa !191, !range !38, !noundef !39
  %1458 = trunc nuw i8 %1457 to i1
  %or.cond1079 = and i1 %brmerge994, %1458
  br i1 %or.cond1079, label %1459, label %1461

1459:                                             ; preds = %1455
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1460 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %29, ptr noundef %.0896, ptr noundef %1460)
  br label %1461

1461:                                             ; preds = %1459, %1455
  br i1 %105, label %1462, label %1472

1462:                                             ; preds = %1461
  %1463 = getelementptr inbounds i8, ptr %11, i64 8
  %1464 = load float, ptr %1463, align 8, !tbaa !192
  %1465 = getelementptr inbounds i8, ptr %77, i64 5572
  %1466 = load float, ptr %1465, align 4, !tbaa !88
  %1467 = fadd float %1464, %1466
  %1468 = load float, ptr %1116, align 4, !tbaa !176
  %1469 = load float, ptr %100, align 4, !tbaa !87
  %1470 = fadd float %1468, %1469
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef %1467, float noundef %1470)
  %1471 = load <2 x float>, ptr %55, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1471, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1472

1472:                                             ; preds = %1462, %1461
  %1473 = and i32 %5, 134217728
  %.not981 = icmp eq i32 %1473, 0
  %or.cond1076 = and i1 %.not981, %.not9741130
  br i1 %or.cond1076, label %1474, label %1475

1474:                                             ; preds = %1472
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %89)
  br label %1475

1475:                                             ; preds = %1474, %1472
  %1476 = and i32 %5, 32
  %.not982 = icmp eq i32 %1476, 0
  %1477 = trunc nuw i8 %.28841200 to i1
  %.2 = select i1 %.not982, i1 %.not9741130, i1 %1477
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #15
  br label %.thread

.thread:                                          ; preds = %134, %122, %153, %1475
  %.3 = phi i1 [ %.2, %1475 ], [ false, %153 ], [ false, %122 ], [ false, %134 ]
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %15) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  br label %1478

1478:                                             ; 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(3716), i32 noundef) local_unnamed_addr #11 align 2

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

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

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(3716)) 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(3716)) 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(3716)) 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 noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef, i32 noundef) local_unnamed_addr #11

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef, ptr noundef, float noundef, float noundef) local_unnamed_addr #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(3716)) 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, !13, i64 152, !8, i64 153, !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 448, !22, i64 464, !22, i64 480, !22, i64 496, !22, i64 512, !22, i64 528, !22, i64 544, !23, i64 560, !23, i64 564, !10, i64 568, !12, i64 572, !12, i64 576, !24, i64 584, !26, i64 600, !12, i64 616, !10, i64 620, !7, i64 624, !27, i64 632, !7, i64 832, !7, i64 840, !7, i64 848, !7, i64 856, !7, i64 864, !7, i64 872, !7, i64 880, !8, i64 888, !8, i64 896, !10, i64 928, !10, i64 932, !13, i64 936}
!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, !11, i64 76, !18, i64 84, !14, i64 88, !14, i64 90, !10, i64 92, !13, i64 96, !13, i64 97, !13, i64 98, !11, i64 100, !19, i64 108, !10, i64 136, !10, i64 140, !20, i64 144, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !12, i64 188, !12, i64 192, !21, i64 200, !21, i64 216}
!17 = !{!"_ZTS6ImVec1", !12, i64 0}
!18 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!19 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 10, !14, i64 12, !14, i64 14, !14, i64 16, !8, i64 18}
!20 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!21 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!23 = !{!"_ZTS8ImVec2ih", !14, i64 0, !14, i64 2}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!26 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS10ImDrawList", !28, i64 0, !29, i64 16, !30, i64 32, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !31, i64 88, !32, i64 104, !33, i64 120, !34, i64 136, !36, i64 168, !12, i64 192}
!28 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{!"_ZTS15ImDrawCmdHeader", !35, i64 0, !7, i64 16, !10, i64 24}
!35 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!36 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !37, i64 8}
!37 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!7, !7, i64 0}
!41 = !{!42, !12, i64 6544}
!42 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !43, i64 8, !44, i64 5488, !7, i64 6536, !12, i64 6544, !12, i64 6548, !45, i64 6552, !46, i64 7064, !10, i64 7072, !10, i64 7076, !10, i64 7080, !13, i64 7084, !13, i64 7085, !13, i64 7086, !13, i64 7087, !13, i64 7088, !7, i64 7096, !20, i64 7104, !20, i64 7120, !20, i64 7136, !47, i64 7152, !24, i64 7168, !10, i64 7184, !11, i64 7188, !7, i64 7200, !7, i64 7208, !7, i64 7216, !7, i64 7224, !7, i64 7232, !11, i64 7240, !12, i64 7248, !10, i64 7252, !10, i64 7256, !10, i64 7260, !13, i64 7264, !13, i64 7265, !13, i64 7266, !13, i64 7267, !12, i64 7268, !12, i64 7272, !10, i64 7276, !10, i64 7280, !12, i64 7284, !13, i64 7288, !13, i64 7289, !13, i64 7290, !13, i64 7291, !13, i64 7292, !13, i64 7293, !13, i64 7294, !10, i64 7296, !10, i64 7300, !48, i64 7304, !11, i64 7312, !7, i64 7320, !49, i64 7328, !10, i64 7332, !10, i64 7336, !13, i64 7340, !13, i64 7341, !7, i64 7344, !10, i64 7352, !12, i64 7356, !10, i64 7360, !50, i64 7364, !51, i64 7384, !52, i64 7448, !53, i64 7560, !54, i64 7576, !55, i64 7592, !15, i64 7608, !56, i64 7624, !57, i64 7640, !58, i64 7656, !58, i64 7672, !10, i64 7688, !59, i64 7696, !7, i64 7712, !10, i64 7720, !10, i64 7724, !10, i64 7728, !10, i64 7732, !10, i64 7736, !10, i64 7740, !10, i64 7744, !10, i64 7748, !10, i64 7752, !10, i64 7756, !10, i64 7760, !10, i64 7764, !49, i64 7768, !18, i64 7772, !13, i64 7776, !13, i64 7777, !13, i64 7778, !13, i64 7779, !13, i64 7780, !13, i64 7781, !13, i64 7782, !10, i64 7784, !22, i64 7788, !13, i64 7804, !13, i64 7805, !13, i64 7806, !10, i64 7808, !10, i64 7812, !10, i64 7816, !10, i64 7820, !10, i64 7824, !10, i64 7828, !22, i64 7832, !22, i64 7848, !10, i64 7864, !10, i64 7868, !10, i64 7872, !60, i64 7880, !60, i64 7928, !60, i64 7976, !60, i64 8024, !7, i64 8072, !7, i64 8080, !7, i64 8088, !12, i64 8096, !12, i64 8100, !13, i64 8104, !12, i64 8108, !10, i64 8112, !13, i64 8116, !13, i64 8117, !13, i64 8118, !10, i64 8120, !10, i64 8124, !10, i64 8128, !61, i64 8136, !22, i64 8200, !10, i64 8216, !10, i64 8220, !12, i64 8224, !10, i64 8228, !10, i64 8232, !10, i64 8236, !10, i64 8240, !62, i64 8248, !8, i64 8264, !10, i64 8280, !63, i64 8288, !7, i64 8304, !10, i64 8312, !64, i64 8320, !65, i64 8336, !21, i64 8376, !37, i64 8392, !7, i64 8408, !67, i64 8416, !69, i64 8456, !70, i64 8472, !11, i64 8488, !71, i64 8496, !75, i64 12216, !10, i64 12328, !10, i64 12332, !12, i64 12336, !12, i64 12340, !10, i64 12344, !35, i64 12348, !77, i64 12364, !12, i64 12412, !13, i64 12416, !13, i64 12417, !12, i64 12420, !12, i64 12424, !12, i64 12428, !12, i64 12432, !14, i64 12436, !14, i64 12438, !12, i64 12440, !72, i64 12448, !15, i64 12464, !11, i64 12480, !11, i64 12488, !8, i64 12496, !13, i64 12497, !12, i64 12500, !78, i64 12504, !79, i64 12520, !80, i64 12536, !81, i64 12552, !82, i64 12568, !10, i64 12584, !13, i64 12588, !83, i64 12592, !7, i64 12600, !78, i64 12608, !7, i64 12624, !7, i64 12632, !12, i64 12640, !13, i64 12644, !10, i64 12648, !10, i64 12652, !10, i64 12656, !13, i64 12660, !10, i64 12664, !84, i64 12668, !85, i64 12688, !8, i64 12720, !10, i64 13200, !10, i64 13204, !12, i64 13208, !10, i64 13212, !10, i64 13216, !10, i64 13220, !8, i64 13224}
!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 1068, !8, i64 1078, !8, i64 1083, !8, i64 1088, !8, i64 1096, !8, i64 1116, !8, i64 1136, !8, i64 1176, !8, i64 1196, !8, i64 3244, !8, i64 5292, !8, i64 5372, !12, i64 5452, !13, i64 5456, !14, i64 5458, !29, i64 5464}
!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 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS6ImPoolI10ImGuiTableE", !66, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!66 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!67 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !68, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!68 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !29, i64 16, !72, i64 32, !72, i64 48, !13, i64 64, !10, i64 68, !12, i64 72, !73, i64 76, !12, i64 3704, !13, i64 3708, !13, i64 3709, !13, i64 3710, !10, i64 3712}
!72 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!73 = !{!"_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, !74, i64 32}
!74 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!75 = !{!"_ZTS6ImFont", !21, i64 0, !12, i64 16, !12, i64 20, !29, i64 24, !76, 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}
!76 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!77 = !{!"_ZTS21ImGuiComboPreviewData", !22, i64 0, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !10, i64 44}
!78 = !{!"_ZTS15ImGuiTextBuffer", !72, i64 0}
!79 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!80 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !72, i64 0}
!81 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !72, i64 0}
!82 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!83 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!84 = !{!"_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}
!85 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !86, i64 16}
!86 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!87 = !{!44, !12, i64 64}
!88 = !{!44, !12, i64 84}
!89 = !{!12, !12, i64 0}
!90 = !{!42, !10, i64 7392}
!91 = !{i64 0, i64 4, !92, i64 4, i64 4, !92, i64 8, i64 4, !92, i64 12, i64 4, !89, i64 16, i64 4, !89, i64 20, i64 4, !89, i64 24, i64 4, !89, i64 28, i64 4, !89, i64 32, i64 4, !89, i64 36, i64 4, !89, i64 40, i64 4, !89, i64 44, i64 4, !89, i64 48, i64 4, !89, i64 52, i64 4, !89, i64 56, i64 4, !89}
!92 = !{!10, !10, i64 0}
!93 = !{!44, !12, i64 68}
!94 = !{!44, !12, i64 72}
!95 = !{!42, !7, i64 7200}
!96 = !{!6, !18, i64 300}
!97 = !{!6, !14, i64 306}
!98 = !{!6, !12, i64 132}
!99 = !{!42, !10, i64 8112}
!100 = !{!42, !10, i64 7276}
!101 = !{!42, !10, i64 7740}
!102 = !{!42, !10, i64 7728}
!103 = !{!42, !49, i64 7768}
!104 = !{!13, !13, i64 0}
!105 = !{!42, !10, i64 7336}
!106 = !{!6, !12, i64 96}
!107 = !{!71, !8, i64 99}
!108 = !{!71, !7, i64 56}
!109 = !{!71, !13, i64 64}
!110 = !{!71, !7, i64 24}
!111 = !{!71, !10, i64 4}
!112 = !{!71, !10, i64 8}
!113 = !{!71, !10, i64 0}
!114 = !{!71, !12, i64 72}
!115 = !{!42, !10, i64 7744}
!116 = !{!43, !13, i64 312}
!117 = !{!71, !8, i64 88}
!118 = !{!42, !48, i64 7304}
!119 = !{!71, !10, i64 16}
!120 = !{!71, !7, i64 40}
!121 = !{!8, !8, i64 0}
!122 = !{!42, !7, i64 6536}
!123 = !{!75, !12, i64 20}
!124 = !{!75, !12, i64 100}
!125 = !{!75, !7, i64 64}
!126 = !{!75, !7, i64 56}
!127 = !{!128, !12, i64 4}
!128 = !{!"_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}
!129 = !{!75, !12, i64 16}
!130 = !{!71, !13, i64 3710}
!131 = !{!71, !10, i64 68}
!132 = !{!71, !10, i64 3712}
!133 = !{!42, !13, i64 7289}
!134 = !{!42, !10, i64 13220}
!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 = !{!71, !13, i64 3709}
!142 = !{!14, !14, i64 0}
!143 = !{!43, !13, i64 313}
!144 = !{!71, !10, i64 76}
!145 = !{!71, !10, i64 80}
!146 = !{!71, !10, i64 84}
!147 = !{!71, !13, i64 3708}
!148 = !{!43, !12, i64 940}
!149 = !{!43, !12, i64 944}
!150 = !{!43, !13, i64 314}
!151 = !{!43, !13, i64 315}
!152 = !{!43, !10, i64 5464}
!153 = distinct !{!153, !154}
!154 = !{!"llvm.loop.mustprogress"}
!155 = !{!42, !13, i64 7288}
!156 = !{!43, !10, i64 952}
!157 = !{!71, !10, i64 92}
!158 = !{!43, !7, i64 256}
!159 = distinct !{!159, !154}
!160 = !{!71, !10, i64 48}
!161 = !{!29, !7, i64 8}
!162 = !{!29, !10, i64 0}
!163 = !{!71, !10, i64 32}
!164 = !{!165, !10, i64 0}
!165 = !{!"_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}
!166 = !{!165, !10, i64 4}
!167 = !{!165, !7, i64 8}
!168 = !{!165, !10, i64 20}
!169 = !{!165, !7, i64 24}
!170 = !{!165, !10, i64 32}
!171 = !{!165, !10, i64 36}
!172 = !{!165, !10, i64 44}
!173 = !{!165, !10, i64 48}
!174 = !{!165, !10, i64 52}
!175 = !{!165, !13, i64 40}
!176 = !{!22, !12, i64 4}
!177 = distinct !{!177, !154}
!178 = !{!11, !12, i64 0}
!179 = !{!11, !12, i64 4}
!180 = !{!35, !12, i64 12}
!181 = !{!35, !12, i64 4}
!182 = distinct !{!182, !154}
!183 = !{!6, !7, i64 624}
!184 = distinct !{!184, !154}
!185 = !{!43, !12, i64 16}
!186 = !{!71, !12, i64 3704}
!187 = !{!42, !13, i64 202}
!188 = !{!42, !10, i64 7360}
!189 = !{!51, !10, i64 8}
!190 = !{!42, !10, i64 7384}
!191 = !{!42, !13, i64 12588}
!192 = !{!22, !12, i64 8}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass