; LLVM IR from erwincoumans/tiny-differentiable-simulator :: third_party/dear_imgui (imgui_widgets)

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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVector.7 = 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, i32, %struct.ImGuiWindowClass, ptr, i32, %struct.ImVec2, i32, %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, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i32, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8], %struct.ImVector, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, i32, float, float, %struct.ImGuiStorage, %struct.ImVector.5, float, float, i32, [4 x i8], ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i8, [3 x i8], i32, i32, [4 x i8], ptr, ptr, i32, i32, %struct.ImRect, i16, i8, [5 x i8] }>
%struct.ImGuiWindowClass = type <{ i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8] }>
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiWindowTempData = type <{ %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, i32, i32, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.0, ptr, ptr, i32, i32, i32, i32, i32, float, float, [4 x i8], %struct.ImVector.1, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, [6 x i16], [4 x i8] }>
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type { float, float, float, [3 x float], [3 x float] }
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImVec2ih = type { i16, i16 }
%struct.ImGuiStorage = type { %struct.ImVector.4 }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, i32, ptr, ptr, i32, ptr, ptr, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImDrawCmd, %struct.ImDrawListSplitter }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImDrawCmd = type { %struct.ImVec4, ptr, i32, i32, i32, ptr, ptr }
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.12 }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImGuiContext = type <{ i8, i8, [6 x i8], %struct.ImGuiIO, %struct.ImGuiPlatformIO, %struct.ImGuiStyle, i32, i32, [4 x i8], ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i32, i8, i8, i8, i8, i32, ptr, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i32, i8, i8, [2 x i8], float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, [2 x i8], i32, i32, [4 x i8], i64, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, [2 x i8], ptr, i32, float, %struct.ImGuiNextWindowData, %struct.ImGuiNextItemData, [4 x i8], %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector.17, %struct.ImVector.18, %struct.ImVector.18, %struct.ImVector.19, float, [4 x i8], ptr, ptr, ptr, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, ptr, i32, [4 x i8], ptr, ptr, ptr, float, float, i8, [7 x i8], ptr, ptr, i32, i32, i32, i32, i8, [3 x i8], float, i32, i8, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, [4 x i8], %struct.ImVector.20, [16 x i8], ptr, %struct.ImPool, %struct.ImVector.22, %struct.ImVector.23, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, [3 x float], %struct.ImVec4, float, i8, i8, [2 x i8], float, float, float, i32, [4 x i8], %struct.ImVector.24, %struct.ImVector, %struct.ImVec2, %struct.ImVec2, ptr, %struct.ImGuiDockContext, i8, [3 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.28, %struct.ImChunkStream, i8, [3 x i8], i32, ptr, %struct.ImGuiTextBuffer, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, [120 x float], 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, i8, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i32, i8, i8, i8, i8, [512 x i8], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, i32, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float], float, i16, %struct.ImVector.7 }
%struct.ImGuiPlatformIO = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVector.13, ptr, %struct.ImVector.14 }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %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, [50 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, [12 x %struct.ImVec2], [64 x i8], ptr }
%struct.ImGuiNextWindowData = type { i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, %struct.ImRect, ptr, ptr, float, i32, i32, %struct.ImGuiWindowClass, %struct.ImVec2 }
%struct.ImGuiNextItemData = type <{ i32, float, i32, i32, i8, [3 x i8] }>
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImGuiNavMoveResult = type <{ ptr, i32, i32, float, float, float, %struct.ImRect, [4 x i8] }>
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImPool = type <{ %struct.ImVector.21, %struct.ImGuiStorage, i32, [4 x i8] }>
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { i32, i32, i32, %struct.ImVector.7, %struct.ImVector.24, %struct.ImVector.24, i8, i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i32, ptr, ptr }
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, 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.2, float, float, %struct.ImVector.7, %struct.ImVector.25, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, i8, i8, float, float, float, i32, [2 x i8], [6 x i8] }>
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImGuiDockContext = type <{ %struct.ImGuiStorage, %struct.ImVector.26, %struct.ImVector.27, i8, [7 x i8] }>
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.24 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.24 }
%struct.ImFontGlyph = type { i32, float, float, float, float, float, float, float, float, float }

@GImGui = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.55 = 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.56 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.69 = 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #4 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) #5

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

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

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

; 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 #4 align 2

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) #6

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #6

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() #6

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) #6

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

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

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1163), ptr noundef, ptr noundef) #6

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

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

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

declare void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef) #6

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

; 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 #9 align 2

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #6

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #6

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) #6

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

declare noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef, i32 noundef) #6

declare void @_ZN5ImGui10BeginGroupEv() #6

declare void @_ZN5ImGui8EndGroupEv() #6

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

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

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

174:                                              ; preds = %8
  %175 = load ptr, ptr %12, align 8, !tbaa !5
  %176 = icmp ne ptr %175, null
  br i1 %176, label %177, label %180

177:                                              ; preds = %174
  %178 = load i32, ptr %13, align 4, !tbaa !9
  %179 = icmp sge i32 %178, 0
  br label %180

180:                                              ; preds = %177, %174
  %181 = phi i1 [ false, %174 ], [ %179, %177 ]
  br i1 %181, label %182, label %183

182:                                              ; preds = %180
  br label %185

183:                                              ; preds = %180
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 3759, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

184:                                              ; No predecessors!
  br label %185

185:                                              ; preds = %184, %182
  %186 = load i32, ptr %15, align 4, !tbaa !9
  %187 = and i32 %186, 128
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %189, label %193

189:                                              ; preds = %185
  %190 = load i32, ptr %15, align 4, !tbaa !9
  %191 = and i32 %190, 1048576
  %192 = icmp ne i32 %191, 0
  br label %193

193:                                              ; preds = %189, %185
  %194 = phi i1 [ false, %185 ], [ %192, %189 ]
  %195 = xor i1 %194, true
  br i1 %195, label %196, label %197

196:                                              ; preds = %193
  br label %199

197:                                              ; preds = %193
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.1, i32 noundef 3760, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

198:                                              ; No predecessors!
  br label %199

199:                                              ; preds = %198, %196
  %200 = load i32, ptr %15, align 4, !tbaa !9
  %201 = and i32 %200, 64
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %203, label %207

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

207:                                              ; preds = %203, %199
  %208 = phi i1 [ false, %199 ], [ %206, %203 ]
  %209 = xor i1 %208, true
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  br label %213

211:                                              ; preds = %207
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.1, i32 noundef 3761, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

212:                                              ; No predecessors!
  br label %213

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

241:                                              ; preds = %213
  %242 = load ptr, ptr %16, align 8, !tbaa !5
  %243 = icmp ne ptr %242, null
  br i1 %243, label %244, label %245

244:                                              ; preds = %241
  br label %247

245:                                              ; preds = %241
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 3774, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

246:                                              ; No predecessors!
  br label %247

247:                                              ; preds = %246, %244
  br label %248

248:                                              ; preds = %247, %213
  %249 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %250 = trunc i8 %249 to i1
  br i1 %250, label %251, label %252

251:                                              ; preds = %248
  call void @_ZN5ImGui10BeginGroupEv()
  br label %252

252:                                              ; preds = %251, %248
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #14
  %253 = load ptr, ptr %18, align 8, !tbaa !5
  %254 = load ptr, ptr %10, align 8, !tbaa !5
  %255 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1163) %253, ptr noundef %254, ptr noundef null)
  store i32 %255, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #14
  %256 = load ptr, ptr %10, align 8, !tbaa !5
  %257 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %256, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %257, ptr %30, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #14
  %258 = load ptr, ptr %14, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 4 %258, i64 8, i1 false), !tbaa.struct !46
  %259 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %260 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %261 = trunc i8 %260 to i1
  br i1 %261, label %262, label %267

262:                                              ; preds = %252
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.ImGuiContext, ptr %263, i32 0, i32 10
  %265 = load float, ptr %264, align 8, !tbaa !48
  %266 = fmul float %265, 8.000000e+00
  br label %270

267:                                              ; preds = %252
  %268 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 1
  %269 = load float, ptr %268, align 4, !tbaa !87
  br label %270

270:                                              ; preds = %267, %262
  %271 = phi float [ %266, %262 ], [ %269, %267 ]
  %272 = load ptr, ptr %22, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.ImGuiStyle, ptr %272, i32 0, i32 11
  %274 = getelementptr inbounds %struct.ImVec2, ptr %273, i32 0, i32 1
  %275 = load float, ptr %274, align 4, !tbaa !88
  %276 = call float @llvm.fmuladd.f32(float %275, float 2.000000e+00, float %271)
  %277 = load <2 x float>, ptr %32, align 4
  %278 = call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %277, float noundef %259, float noundef %276)
  store <2 x float> %278, ptr %31, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #14
  %279 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 0
  %280 = load float, ptr %279, align 4, !tbaa !89
  %281 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %282 = load float, ptr %281, align 4, !tbaa !89
  %283 = fcmp ogt float %282, 0.000000e+00
  br i1 %283, label %284, label %292

284:                                              ; preds = %270
  %285 = load ptr, ptr %22, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ImGuiStyle, ptr %285, i32 0, i32 15
  %287 = getelementptr inbounds %struct.ImVec2, ptr %286, i32 0, i32 0
  %288 = load float, ptr %287, align 4, !tbaa !90
  %289 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %290 = load float, ptr %289, align 4, !tbaa !89
  %291 = fadd float %288, %290
  br label %293

292:                                              ; preds = %270
  br label %293

293:                                              ; preds = %292, %284
  %294 = phi float [ %291, %284 ], [ 0.000000e+00, %292 ]
  %295 = fadd float %280, %294
  %296 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %297 = load float, ptr %296, align 4, !tbaa !87
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %295, float noundef %297)
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #14
  %298 = load ptr, ptr %18, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.ImGuiWindow, ptr %298, i32 0, i32 58
  %300 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %299, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #14
  %301 = load ptr, ptr %18, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ImGuiWindow, ptr %301, i32 0, i32 58
  %303 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %302, i32 0, i32 0
  %304 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %303, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %304, ptr %35, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %34, ptr noundef nonnull align 4 dereferenceable(8) %300, 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
  %305 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #14
  %306 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %307 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %306, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %307, ptr %37, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(8) %305, 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
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %308, 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 !46
  %309 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %310 = trunc i8 %309 to i1
  br i1 %310, label %311, label %362

311:                                              ; preds = %293
  %312 = load i32, ptr %29, align 4, !tbaa !9
  %313 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %312, ptr noundef %34)
  br i1 %313, label %319, label %314

314:                                              ; preds = %311
  %315 = load ptr, ptr %22, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.ImGuiStyle, ptr %315, i32 0, i32 11
  %317 = getelementptr inbounds %struct.ImVec2, ptr %316, i32 0, i32 1
  %318 = load float, ptr %317, align 4, !tbaa !88
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %318)
  call void @_ZN5ImGui8EndGroupEv()
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3127

319:                                              ; preds = %311
  %320 = load ptr, ptr %22, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.ImGuiStyle, ptr %320, i32 0, i32 38
  %322 = getelementptr inbounds [50 x %struct.ImVec4], ptr %321, i64 0, i64 7
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %322)
  %323 = load ptr, ptr %22, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ImGuiStyle, ptr %323, i32 0, i32 12
  %325 = load float, ptr %324, align 4, !tbaa !91
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 6, float noundef %325)
  %326 = load ptr, ptr %22, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.ImGuiStyle, ptr %326, i32 0, i32 13
  %328 = load float, ptr %327, align 4, !tbaa !92
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %328)
  %329 = load ptr, ptr %22, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.ImGuiStyle, ptr %329, i32 0, i32 11
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %330)
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #14
  %331 = load ptr, ptr %10, align 8, !tbaa !5
  %332 = load i32, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #14
  %333 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %34)
  store <2 x float> %333, ptr %41, align 4
  %334 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %331, i32 noundef %332, ptr noundef nonnull align 4 dereferenceable(8) %41, i1 noundef zeroext true, i32 noundef 65540)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #14
  %335 = zext i1 %334 to i8
  store i8 %335, ptr %40, align 1, !tbaa !45
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  %336 = load i8, ptr %40, align 1, !tbaa !45, !range !43, !noundef !44
  %337 = trunc i8 %336 to i1
  br i1 %337, label %339, label %338

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

339:                                              ; preds = %319
  %340 = load ptr, ptr %20, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.ImGuiContext, ptr %340, i32 0, i32 31
  %342 = load ptr, ptr %341, align 8, !tbaa !93
  store ptr %342, ptr %38, align 8, !tbaa !5
  %343 = load ptr, ptr %38, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.ImGuiWindow, ptr %343, i32 0, i32 58
  %345 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %344, i32 0, i32 16
  %346 = load i32, ptr %345, align 8, !tbaa !94
  %347 = load ptr, ptr %38, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.ImGuiWindow, ptr %347, i32 0, i32 58
  %349 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %348, i32 0, i32 18
  %350 = load i32, ptr %349, align 8, !tbaa !95
  %351 = or i32 %350, %346
  store i32 %351, ptr %349, align 8, !tbaa !95
  %352 = load ptr, ptr %38, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ImGuiWindow, ptr %352, i32 0, i32 24
  %354 = getelementptr inbounds %struct.ImVec2, ptr %353, i32 0, i32 0
  %355 = load float, ptr %354, align 4, !tbaa !96
  %356 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %357 = load float, ptr %356, align 4, !tbaa !89
  %358 = fsub float %357, %355
  store float %358, ptr %356, align 4, !tbaa !89
  store i32 0, ptr %19, align 4
  br label %359

359:                                              ; preds = %339, %338
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #14
  %360 = load i32, ptr %19, align 4
  switch i32 %360, label %3127 [
    i32 0, label %361
  ]

361:                                              ; preds = %359
  br label %371

362:                                              ; preds = %293
  %363 = load ptr, ptr %22, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.ImGuiStyle, ptr %363, i32 0, i32 11
  %365 = getelementptr inbounds %struct.ImVec2, ptr %364, i32 0, i32 1
  %366 = load float, ptr %365, align 4, !tbaa !88
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %366)
  %367 = load i32, ptr %29, align 4, !tbaa !9
  %368 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %367, ptr noundef %34)
  br i1 %368, label %370, label %369

369:                                              ; preds = %362
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3127

370:                                              ; preds = %362
  br label %371

371:                                              ; preds = %370, %361
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #14
  %372 = load i32, ptr %29, align 4, !tbaa !9
  %373 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %372)
  %374 = zext i1 %373 to i8
  store i8 %374, ptr %42, align 1, !tbaa !45
  %375 = load i8, ptr %42, align 1, !tbaa !45, !range !43, !noundef !44
  %376 = trunc i8 %375 to i1
  br i1 %376, label %377, label %380

377:                                              ; preds = %371
  %378 = load ptr, ptr %20, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.ImGuiContext, ptr %378, i32 0, i32 147
  store i32 1, ptr %379, align 8, !tbaa !97
  br label %380

380:                                              ; preds = %377, %371
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #14
  %381 = load i32, ptr %29, align 4, !tbaa !9
  %382 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %381)
  store ptr %382, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #14
  %383 = load ptr, ptr %18, align 8, !tbaa !5
  %384 = load i32, ptr %29, align 4, !tbaa !9
  %385 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef %383, i32 noundef %384)
  %386 = zext i1 %385 to i8
  store i8 %386, ptr %44, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #14
  %387 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %388 = trunc i8 %387 to i1
  br i1 %388, label %389, label %406

389:                                              ; preds = %380
  %390 = load ptr, ptr %20, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.ImGuiContext, ptr %390, i32 0, i32 138
  %392 = load ptr, ptr %391, align 8, !tbaa !98
  %393 = load ptr, ptr %18, align 8, !tbaa !5
  %394 = icmp eq ptr %392, %393
  br i1 %394, label %395, label %404

395:                                              ; preds = %389
  %396 = load ptr, ptr %20, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.ImGuiContext, ptr %396, i32 0, i32 140
  %398 = load i32, ptr %397, align 8, !tbaa !99
  %399 = load ptr, ptr %18, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.ImGuiWindow, ptr %399, i32 0, i32 58
  %401 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %400, i32 0, i32 33
  %402 = load i32, ptr %401, align 8, !tbaa !100
  %403 = icmp eq i32 %398, %402
  br label %404

404:                                              ; preds = %395, %389
  %405 = phi i1 [ false, %389 ], [ %403, %395 ]
  br label %406

406:                                              ; preds = %404, %380
  %407 = phi i1 [ false, %380 ], [ %405, %404 ]
  %408 = zext i1 %407 to i8
  store i8 %408, ptr %45, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #14
  %409 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %410 = trunc i8 %409 to i1
  br i1 %410, label %411, label %415

411:                                              ; preds = %406
  %412 = load i8, ptr %45, align 1, !tbaa !45, !range !43, !noundef !44
  %413 = trunc i8 %412 to i1
  %414 = xor i1 %413, true
  br label %415

415:                                              ; preds = %411, %406
  %416 = phi i1 [ false, %406 ], [ %414, %411 ]
  %417 = zext i1 %416 to i8
  store i8 %417, ptr %46, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #14
  %418 = load i8, ptr %42, align 1, !tbaa !45, !range !43, !noundef !44
  %419 = trunc i8 %418 to i1
  br i1 %419, label %420, label %426

420:                                              ; preds = %415
  %421 = load ptr, ptr %21, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiIO, ptr %421, i32 0, i32 71
  %423 = getelementptr inbounds [5 x i8], ptr %422, i64 0, i64 0
  %424 = load i8, ptr %423, align 8, !tbaa !45, !range !43, !noundef !44
  %425 = trunc i8 %424 to i1
  br label %426

426:                                              ; preds = %420, %415
  %427 = phi i1 [ false, %415 ], [ %425, %420 ]
  %428 = zext i1 %427 to i8
  store i8 %428, ptr %47, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #14
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.ImGuiContext, ptr %429, i32 0, i32 47
  %431 = load i32, ptr %430, align 8, !tbaa !101
  %432 = load i32, ptr %29, align 4, !tbaa !9
  %433 = icmp ne i32 %431, %432
  br i1 %433, label %434, label %455

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

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

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

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

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

455:                                              ; preds = %453, %426
  %456 = phi i1 [ false, %426 ], [ %454, %453 ]
  %457 = zext i1 %456 to i8
  store i8 %457, ptr %48, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #14
  %458 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %459 = trunc i8 %458 to i1
  br i1 %459, label %460, label %475

460:                                              ; preds = %455
  %461 = load ptr, ptr %43, align 8, !tbaa !5
  %462 = icmp ne ptr %461, null
  br i1 %462, label %463, label %475

463:                                              ; preds = %460
  %464 = load ptr, ptr %20, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.ImGuiContext, ptr %464, i32 0, i32 47
  %466 = load i32, ptr %465, align 8, !tbaa !101
  %467 = icmp eq i32 %466, 0
  br i1 %467, label %468, label %475

468:                                              ; preds = %463
  %469 = load ptr, ptr %20, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiContext, ptr %469, i32 0, i32 65
  %471 = load i32, ptr %470, align 8, !tbaa !105
  %472 = load ptr, ptr %38, align 8, !tbaa !5
  %473 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %472, i32 noundef 1)
  %474 = icmp eq i32 %471, %473
  br label %475

475:                                              ; preds = %468, %463, %460, %455
  %476 = phi i1 [ false, %463 ], [ false, %460 ], [ false, %455 ], [ %474, %468 ]
  %477 = zext i1 %476 to i8
  store i8 %477, ptr %49, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #14
  %478 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %479 = trunc i8 %478 to i1
  br i1 %479, label %480, label %490

480:                                              ; preds = %475
  %481 = load ptr, ptr %43, align 8, !tbaa !5
  %482 = icmp ne ptr %481, null
  br i1 %482, label %483, label %490

483:                                              ; preds = %480
  %484 = load ptr, ptr %20, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.ImGuiContext, ptr %484, i32 0, i32 47
  %486 = load i32, ptr %485, align 8, !tbaa !101
  %487 = load ptr, ptr %38, align 8, !tbaa !5
  %488 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %487, i32 noundef 1)
  %489 = icmp eq i32 %486, %488
  br label %490

490:                                              ; preds = %483, %480, %475
  %491 = phi i1 [ false, %480 ], [ false, %475 ], [ %489, %483 ]
  %492 = zext i1 %491 to i8
  store i8 %492, ptr %50, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #14
  store i8 0, ptr %51, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #14
  %493 = load ptr, ptr %20, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.ImGuiContext, ptr %493, i32 0, i32 47
  %495 = load i32, ptr %494, align 8, !tbaa !101
  %496 = load i32, ptr %29, align 4, !tbaa !9
  %497 = icmp ne i32 %495, %496
  br i1 %497, label %498, label %509

498:                                              ; preds = %490
  %499 = load i32, ptr %15, align 4, !tbaa !9
  %500 = and i32 %499, 16
  %501 = icmp ne i32 %500, 0
  br i1 %501, label %505, label %502

502:                                              ; preds = %498
  %503 = load i8, ptr %48, align 1, !tbaa !45, !range !43, !noundef !44
  %504 = trunc i8 %503 to i1
  br i1 %504, label %505, label %509

505:                                              ; preds = %502, %498
  %506 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %507 = trunc i8 %506 to i1
  %508 = xor i1 %507, true
  br label %509

509:                                              ; preds = %505, %502, %490
  %510 = phi i1 [ false, %502 ], [ false, %490 ], [ %508, %505 ]
  %511 = zext i1 %510 to i8
  store i8 %511, ptr %52, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #14
  %512 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %513 = trunc i8 %512 to i1
  br i1 %513, label %523, label %514

514:                                              ; preds = %509
  %515 = load i8, ptr %47, align 1, !tbaa !45, !range !43, !noundef !44
  %516 = trunc i8 %515 to i1
  br i1 %516, label %523, label %517

517:                                              ; preds = %514
  %518 = load i8, ptr %49, align 1, !tbaa !45, !range !43, !noundef !44
  %519 = trunc i8 %518 to i1
  br i1 %519, label %523, label %520

520:                                              ; preds = %517
  %521 = load i8, ptr %48, align 1, !tbaa !45, !range !43, !noundef !44
  %522 = trunc i8 %521 to i1
  br label %523

523:                                              ; preds = %520, %517, %514, %509
  %524 = phi i1 [ true, %517 ], [ true, %514 ], [ true, %509 ], [ %522, %520 ]
  %525 = zext i1 %524 to i8
  store i8 %525, ptr %53, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #14
  %526 = load i8, ptr %53, align 1, !tbaa !45, !range !43, !noundef !44
  %527 = trunc i8 %526 to i1
  br i1 %527, label %531, label %528

528:                                              ; preds = %523
  %529 = load i8, ptr %50, align 1, !tbaa !45, !range !43, !noundef !44
  %530 = trunc i8 %529 to i1
  br label %531

531:                                              ; preds = %528, %523
  %532 = phi i1 [ true, %523 ], [ %530, %528 ]
  %533 = zext i1 %532 to i8
  store i8 %533, ptr %54, align 1, !tbaa !45
  %534 = load i8, ptr %54, align 1, !tbaa !45, !range !43, !noundef !44
  %535 = trunc i8 %534 to i1
  br i1 %535, label %536, label %639

536:                                              ; preds = %531
  %537 = load ptr, ptr %20, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.ImGuiContext, ptr %537, i32 0, i32 47
  %539 = load i32, ptr %538, align 8, !tbaa !101
  %540 = load i32, ptr %29, align 4, !tbaa !9
  %541 = icmp ne i32 %539, %540
  br i1 %541, label %542, label %639

542:                                              ; preds = %536
  %543 = load ptr, ptr %20, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.ImGuiContext, ptr %543, i32 0, i32 173
  store ptr %544, ptr %43, align 8, !tbaa !5
  %545 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %545)
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #14
  %546 = load ptr, ptr %12, align 8, !tbaa !5
  %547 = call i64 @strlen(ptr noundef %546) #16
  %548 = trunc i64 %547 to i32
  store i32 %548, ptr %55, align 4, !tbaa !9
  %549 = load ptr, ptr %43, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %549, i32 0, i32 5
  %551 = load i32, ptr %55, align 4, !tbaa !9
  %552 = add nsw i32 %551, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %550, i32 noundef %552)
  %553 = load ptr, ptr %43, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %553, i32 0, i32 5
  %555 = getelementptr inbounds %struct.ImVector.24, ptr %554, i32 0, i32 2
  %556 = load ptr, ptr %555, align 8, !tbaa !106
  %557 = load ptr, ptr %12, align 8, !tbaa !5
  %558 = load i32, ptr %55, align 4, !tbaa !9
  %559 = add nsw i32 %558, 1
  %560 = sext i32 %559 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %556, ptr align 1 %557, i64 %560, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #14
  store ptr null, ptr %56, align 8, !tbaa !5
  %561 = load ptr, ptr %43, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %561, i32 0, i32 3
  %563 = load i32, ptr %13, align 4, !tbaa !9
  %564 = add nsw i32 %563, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %562, i32 noundef %564)
  %565 = load ptr, ptr %43, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %565, i32 0, i32 4
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %566, i32 noundef 0)
  %567 = load ptr, ptr %43, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %567, i32 0, i32 6
  store i8 0, ptr %568, align 8, !tbaa !107
  %569 = load ptr, ptr %43, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %569, i32 0, i32 3
  %571 = getelementptr inbounds %struct.ImVector.7, ptr %570, i32 0, i32 2
  %572 = load ptr, ptr %571, align 8, !tbaa !108
  %573 = load i32, ptr %13, align 4, !tbaa !9
  %574 = load ptr, ptr %12, align 8, !tbaa !5
  %575 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %572, i32 noundef %573, ptr noundef %574, ptr noundef null, ptr noundef %56)
  %576 = load ptr, ptr %43, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %576, i32 0, i32 1
  store i32 %575, ptr %577, align 4, !tbaa !109
  %578 = load ptr, ptr %56, align 8, !tbaa !5
  %579 = load ptr, ptr %12, align 8, !tbaa !5
  %580 = ptrtoint ptr %578 to i64
  %581 = ptrtoint ptr %579 to i64
  %582 = sub i64 %580, %581
  %583 = trunc i64 %582 to i32
  %584 = load ptr, ptr %43, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %584, i32 0, i32 2
  store i32 %583, ptr %585, align 8, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #14
  %586 = load ptr, ptr %43, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %586, i32 0, i32 0
  %588 = load i32, ptr %587, align 8, !tbaa !111
  %589 = load i32, ptr %29, align 4, !tbaa !9
  %590 = icmp eq i32 %588, %589
  %591 = zext i1 %590 to i8
  store i8 %591, ptr %57, align 1, !tbaa !45
  %592 = load i8, ptr %57, align 1, !tbaa !45, !range !43, !noundef !44
  %593 = trunc i8 %592 to i1
  br i1 %593, label %594, label %596

594:                                              ; preds = %542
  %595 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %595)
  br label %615

596:                                              ; preds = %542
  %597 = load i32, ptr %29, align 4, !tbaa !9
  %598 = load ptr, ptr %43, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %598, i32 0, i32 0
  store i32 %597, ptr %599, align 8, !tbaa !111
  %600 = load ptr, ptr %43, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %600, i32 0, i32 8
  store float 0.000000e+00, ptr %601, align 8, !tbaa !112
  %602 = load ptr, ptr %43, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %602, i32 0, i32 9
  %604 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %605 = trunc i8 %604 to i1
  %606 = xor i1 %605, true
  %607 = zext i1 %606 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %603, i32 noundef %607)
  %608 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %609 = trunc i8 %608 to i1
  br i1 %609, label %614, label %610

610:                                              ; preds = %596
  %611 = load i8, ptr %45, align 1, !tbaa !45, !range !43, !noundef !44
  %612 = trunc i8 %611 to i1
  br i1 %612, label %613, label %614

613:                                              ; preds = %610
  store i8 1, ptr %52, align 1, !tbaa !45
  br label %614

614:                                              ; preds = %613, %610, %596
  br label %615

615:                                              ; preds = %614, %594
  %616 = load i32, ptr %15, align 4, !tbaa !9
  %617 = and i32 %616, 8192
  %618 = icmp ne i32 %617, 0
  br i1 %618, label %619, label %623

619:                                              ; preds = %615
  %620 = load ptr, ptr %43, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %620, i32 0, i32 9
  %622 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %621, i32 0, i32 3
  store i8 1, ptr %622, align 4, !tbaa !113
  br label %623

623:                                              ; preds = %619, %615
  %624 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %625 = trunc i8 %624 to i1
  br i1 %625, label %638, label %626

626:                                              ; preds = %623
  %627 = load i8, ptr %46, align 1, !tbaa !45, !range !43, !noundef !44
  %628 = trunc i8 %627 to i1
  br i1 %628, label %637, label %629

629:                                              ; preds = %626
  %630 = load i8, ptr %47, align 1, !tbaa !45, !range !43, !noundef !44
  %631 = trunc i8 %630 to i1
  br i1 %631, label %632, label %638

632:                                              ; preds = %629
  %633 = load ptr, ptr %21, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.ImGuiIO, ptr %633, i32 0, i32 47
  %635 = load i8, ptr %634, align 4, !tbaa !114, !range !43, !noundef !44
  %636 = trunc i8 %635 to i1
  br i1 %636, label %637, label %638

637:                                              ; preds = %632, %626
  store i8 1, ptr %52, align 1, !tbaa !45
  br label %638

638:                                              ; preds = %637, %632, %629, %623
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  br label %639

639:                                              ; preds = %638, %536, %531
  %640 = load ptr, ptr %20, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ImGuiContext, ptr %640, i32 0, i32 47
  %642 = load i32, ptr %641, align 8, !tbaa !101
  %643 = load i32, ptr %29, align 4, !tbaa !9
  %644 = icmp ne i32 %642, %643
  br i1 %644, label %645, label %709

645:                                              ; preds = %639
  %646 = load i8, ptr %53, align 1, !tbaa !45, !range !43, !noundef !44
  %647 = trunc i8 %646 to i1
  br i1 %647, label %648, label %709

648:                                              ; preds = %645
  %649 = load ptr, ptr %43, align 8, !tbaa !5
  %650 = icmp ne ptr %649, null
  br i1 %650, label %651, label %657

651:                                              ; preds = %648
  %652 = load ptr, ptr %43, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %652, i32 0, i32 0
  %654 = load i32, ptr %653, align 8, !tbaa !111
  %655 = load i32, ptr %29, align 4, !tbaa !9
  %656 = icmp eq i32 %654, %655
  br label %657

657:                                              ; preds = %651, %648
  %658 = phi i1 [ false, %648 ], [ %656, %651 ]
  br i1 %658, label %659, label %660

659:                                              ; preds = %657
  br label %662

660:                                              ; preds = %657
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 3887, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

661:                                              ; No predecessors!
  br label %662

662:                                              ; preds = %661, %659
  %663 = load i32, ptr %29, align 4, !tbaa !9
  %664 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %663, ptr noundef %664)
  %665 = load i32, ptr %29, align 4, !tbaa !9
  %666 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %665, ptr noundef %666)
  %667 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %667)
  %668 = load ptr, ptr %20, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.ImGuiContext, ptr %668, i32 0, i32 57
  %670 = load i32, ptr %669, align 4, !tbaa !115
  %671 = or i32 %670, 3
  store i32 %671, ptr %669, align 4, !tbaa !115
  %672 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %673 = trunc i8 %672 to i1
  br i1 %673, label %678, label %674

674:                                              ; preds = %662
  %675 = load i32, ptr %15, align 4, !tbaa !9
  %676 = and i32 %675, 128
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %678, label %683

678:                                              ; preds = %674, %662
  %679 = load ptr, ptr %20, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.ImGuiContext, ptr %679, i32 0, i32 57
  %681 = load i32, ptr %680, align 4, !tbaa !115
  %682 = or i32 %681, 12
  store i32 %682, ptr %680, align 4, !tbaa !115
  br label %683

683:                                              ; preds = %678, %674
  %684 = load ptr, ptr %20, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.ImGuiContext, ptr %684, i32 0, i32 58
  %686 = load i32, ptr %685, align 8, !tbaa !116
  %687 = or i32 %686, 2
  store i32 %687, ptr %685, align 8, !tbaa !116
  %688 = load ptr, ptr %20, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ImGuiContext, ptr %688, i32 0, i32 60
  %690 = load i64, ptr %689, align 8, !tbaa !117
  %691 = or i64 %690, 384
  store i64 %691, ptr %689, align 8, !tbaa !117
  %692 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %693 = trunc i8 %692 to i1
  br i1 %693, label %694, label %699

694:                                              ; preds = %683
  %695 = load ptr, ptr %20, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.ImGuiContext, ptr %695, i32 0, i32 60
  %697 = load i64, ptr %696, align 8, !tbaa !117
  %698 = or i64 %697, 96
  store i64 %698, ptr %696, align 8, !tbaa !117
  br label %699

699:                                              ; preds = %694, %683
  %700 = load i32, ptr %15, align 4, !tbaa !9
  %701 = and i32 %700, 1088
  %702 = icmp ne i32 %701, 0
  br i1 %702, label %703, label %708

703:                                              ; preds = %699
  %704 = load ptr, ptr %20, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiContext, ptr %704, i32 0, i32 60
  %706 = load i64, ptr %705, align 8, !tbaa !117
  %707 = or i64 %706, 1
  store i64 %707, ptr %705, align 8, !tbaa !117
  br label %708

708:                                              ; preds = %703, %699
  br label %709

709:                                              ; preds = %708, %645, %639
  %710 = load ptr, ptr %20, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.ImGuiContext, ptr %710, i32 0, i32 47
  %712 = load i32, ptr %711, align 8, !tbaa !101
  %713 = load i32, ptr %29, align 4, !tbaa !9
  %714 = icmp eq i32 %712, %713
  br i1 %714, label %715, label %719

715:                                              ; preds = %709
  %716 = load ptr, ptr %43, align 8, !tbaa !5
  %717 = icmp eq ptr %716, null
  br i1 %717, label %718, label %719

718:                                              ; preds = %715
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %719

719:                                              ; preds = %718, %715, %709
  %720 = load ptr, ptr %20, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.ImGuiContext, ptr %720, i32 0, i32 47
  %722 = load i32, ptr %721, align 8, !tbaa !101
  %723 = load i32, ptr %29, align 4, !tbaa !9
  %724 = icmp eq i32 %722, %723
  br i1 %724, label %725, label %738

725:                                              ; preds = %719
  %726 = load ptr, ptr %21, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.ImGuiIO, ptr %726, i32 0, i32 71
  %728 = getelementptr inbounds [5 x i8], ptr %727, i64 0, i64 0
  %729 = load i8, ptr %728, align 8, !tbaa !45, !range !43, !noundef !44
  %730 = trunc i8 %729 to i1
  br i1 %730, label %731, label %738

731:                                              ; preds = %725
  %732 = load i8, ptr %54, align 1, !tbaa !45, !range !43, !noundef !44
  %733 = trunc i8 %732 to i1
  br i1 %733, label %738, label %734

734:                                              ; preds = %731
  %735 = load i8, ptr %53, align 1, !tbaa !45, !range !43, !noundef !44
  %736 = trunc i8 %735 to i1
  br i1 %736, label %738, label %737

737:                                              ; preds = %734
  store i8 1, ptr %51, align 1, !tbaa !45
  br label %738

738:                                              ; preds = %737, %734, %731, %725, %719
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #14
  %739 = load ptr, ptr %20, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiContext, ptr %739, i32 0, i32 47
  %741 = load i32, ptr %740, align 8, !tbaa !101
  %742 = load i32, ptr %29, align 4, !tbaa !9
  %743 = icmp eq i32 %741, %742
  br i1 %743, label %752, label %744

744:                                              ; preds = %738
  %745 = load ptr, ptr %43, align 8, !tbaa !5
  %746 = icmp ne ptr %745, null
  br i1 %746, label %747, label %750

747:                                              ; preds = %744
  %748 = load i8, ptr %50, align 1, !tbaa !45, !range !43, !noundef !44
  %749 = trunc i8 %748 to i1
  br label %750

750:                                              ; preds = %747, %744
  %751 = phi i1 [ false, %744 ], [ %749, %747 ]
  br label %752

752:                                              ; preds = %750, %738
  %753 = phi i1 [ true, %738 ], [ %751, %750 ]
  %754 = zext i1 %753 to i8
  store i8 %754, ptr %58, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #14
  %755 = load ptr, ptr %43, align 8, !tbaa !5
  %756 = icmp ne ptr %755, null
  br i1 %756, label %757, label %763

757:                                              ; preds = %752
  %758 = load ptr, ptr %43, align 8, !tbaa !5
  %759 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %758)
  br i1 %759, label %760, label %763

760:                                              ; preds = %757
  %761 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %762 = trunc i8 %761 to i1
  br label %763

763:                                              ; preds = %760, %757, %752
  %764 = phi i1 [ false, %757 ], [ false, %752 ], [ %762, %760 ]
  %765 = zext i1 %764 to i8
  store i8 %765, ptr %59, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #14
  store i8 0, ptr %60, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #14
  store i8 0, ptr %61, align 1, !tbaa !45
  %766 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %767 = trunc i8 %766 to i1
  br i1 %767, label %768, label %812

768:                                              ; preds = %763
  %769 = load ptr, ptr %43, align 8, !tbaa !5
  %770 = icmp ne ptr %769, null
  br i1 %770, label %771, label %812

771:                                              ; preds = %768
  %772 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %773 = trunc i8 %772 to i1
  br i1 %773, label %777, label %774

774:                                              ; preds = %771
  %775 = load i8, ptr %59, align 1, !tbaa !45, !range !43, !noundef !44
  %776 = trunc i8 %775 to i1
  br i1 %776, label %777, label %812

777:                                              ; preds = %774, %771
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #14
  store ptr null, ptr %62, align 8, !tbaa !5
  %778 = load ptr, ptr %43, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %778, i32 0, i32 3
  %780 = load i32, ptr %13, align 4, !tbaa !9
  %781 = add nsw i32 %780, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %779, i32 noundef %781)
  %782 = load ptr, ptr %43, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %782, i32 0, i32 3
  %784 = getelementptr inbounds %struct.ImVector.7, ptr %783, i32 0, i32 2
  %785 = load ptr, ptr %784, align 8, !tbaa !108
  %786 = load ptr, ptr %43, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %786, i32 0, i32 3
  %788 = getelementptr inbounds %struct.ImVector.7, ptr %787, i32 0, i32 0
  %789 = load i32, ptr %788, align 8, !tbaa !118
  %790 = load ptr, ptr %12, align 8, !tbaa !5
  %791 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %785, i32 noundef %789, ptr noundef %790, ptr noundef null, ptr noundef %62)
  %792 = load ptr, ptr %43, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %792, i32 0, i32 1
  store i32 %791, ptr %793, align 4, !tbaa !109
  %794 = load ptr, ptr %62, align 8, !tbaa !5
  %795 = load ptr, ptr %12, align 8, !tbaa !5
  %796 = ptrtoint ptr %794 to i64
  %797 = ptrtoint ptr %795 to i64
  %798 = sub i64 %796, %797
  %799 = trunc i64 %798 to i32
  %800 = load ptr, ptr %43, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %800, i32 0, i32 2
  store i32 %799, ptr %801, align 8, !tbaa !110
  %802 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %802)
  %803 = load ptr, ptr %43, align 8, !tbaa !5
  %804 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %803)
  %805 = zext i1 %804 to i32
  %806 = load i8, ptr %59, align 1, !tbaa !45, !range !43, !noundef !44
  %807 = trunc i8 %806 to i1
  %808 = zext i1 %807 to i32
  %809 = and i32 %808, %805
  %810 = icmp ne i32 %809, 0
  %811 = zext i1 %810 to i8
  store i8 %811, ptr %59, align 1, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #14
  br label %812

812:                                              ; preds = %777, %774, %768, %763
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %813 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %814 = trunc i8 %813 to i1
  br i1 %814, label %824, label %815

815:                                              ; preds = %812
  %816 = load i8, ptr %59, align 1, !tbaa !45, !range !43, !noundef !44
  %817 = trunc i8 %816 to i1
  br i1 %817, label %824, label %818

818:                                              ; preds = %815
  %819 = load ptr, ptr %20, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.ImGuiContext, ptr %819, i32 0, i32 47
  %821 = load i32, ptr %820, align 8, !tbaa !101
  %822 = load i32, ptr %29, align 4, !tbaa !9
  %823 = icmp eq i32 %821, %822
  br i1 %823, label %824, label %835

824:                                              ; preds = %818, %815, %812
  %825 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %826 = trunc i8 %825 to i1
  br i1 %826, label %835, label %827

827:                                              ; preds = %824
  %828 = load ptr, ptr %43, align 8, !tbaa !5
  %829 = icmp ne ptr %828, null
  br i1 %829, label %830, label %835

830:                                              ; preds = %827
  %831 = load ptr, ptr %43, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %831, i32 0, i32 6
  %833 = load i8, ptr %832, align 8, !tbaa !107, !range !43, !noundef !44
  %834 = trunc i8 %833 to i1
  br label %835

835:                                              ; preds = %830, %827, %824, %818
  %836 = phi i1 [ false, %827 ], [ false, %824 ], [ false, %818 ], [ %834, %830 ]
  %837 = zext i1 %836 to i8
  store i8 %837, ptr %63, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #14
  %838 = load ptr, ptr %11, align 8, !tbaa !5
  %839 = icmp ne ptr %838, null
  br i1 %839, label %840, label %856

840:                                              ; preds = %835
  %841 = load i8, ptr %63, align 1, !tbaa !45, !range !43, !noundef !44
  %842 = trunc i8 %841 to i1
  br i1 %842, label %843, label %848

843:                                              ; preds = %840
  %844 = load ptr, ptr %43, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %844, i32 0, i32 4
  %846 = getelementptr inbounds %struct.ImVector.24, ptr %845, i32 0, i32 2
  %847 = load ptr, ptr %846, align 8, !tbaa !119
  br label %850

848:                                              ; preds = %840
  %849 = load ptr, ptr %12, align 8, !tbaa !5
  br label %850

850:                                              ; preds = %848, %843
  %851 = phi ptr [ %847, %843 ], [ %849, %848 ]
  %852 = getelementptr inbounds i8, ptr %851, i64 0
  %853 = load i8, ptr %852, align 1, !tbaa !120
  %854 = sext i8 %853 to i32
  %855 = icmp eq i32 %854, 0
  br label %856

856:                                              ; preds = %850, %835
  %857 = phi i1 [ false, %835 ], [ %855, %850 ]
  %858 = zext i1 %857 to i8
  store i8 %858, ptr %64, align 1, !tbaa !45
  %859 = load i8, ptr %26, align 1, !tbaa !45, !range !43, !noundef !44
  %860 = trunc i8 %859 to i1
  br i1 %860, label %861, label %938

861:                                              ; preds = %856
  %862 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %863 = trunc i8 %862 to i1
  br i1 %863, label %938, label %864

864:                                              ; preds = %861
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #14
  %865 = load ptr, ptr %20, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.ImGuiContext, ptr %865, i32 0, i32 9
  %867 = load ptr, ptr %866, align 8, !tbaa !121
  %868 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114) %867, i16 noundef zeroext 42)
  store ptr %868, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #14
  %869 = load ptr, ptr %20, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.ImGuiContext, ptr %869, i32 0, i32 174
  store ptr %870, ptr %66, align 8, !tbaa !5
  %871 = load ptr, ptr %20, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.ImGuiContext, ptr %871, i32 0, i32 9
  %873 = load ptr, ptr %872, align 8, !tbaa !121
  %874 = getelementptr inbounds %struct.ImFont, ptr %873, i32 0, i32 2
  %875 = load float, ptr %874, align 4, !tbaa !122
  %876 = load ptr, ptr %66, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.ImFont, ptr %876, i32 0, i32 2
  store float %875, ptr %877, align 4, !tbaa !122
  %878 = load ptr, ptr %20, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.ImGuiContext, ptr %878, i32 0, i32 9
  %880 = load ptr, ptr %879, align 8, !tbaa !121
  %881 = getelementptr inbounds %struct.ImFont, ptr %880, i32 0, i32 14
  %882 = load float, ptr %881, align 8, !tbaa !123
  %883 = load ptr, ptr %66, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.ImFont, ptr %883, i32 0, i32 14
  store float %882, ptr %884, align 8, !tbaa !123
  %885 = load ptr, ptr %20, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.ImGuiContext, ptr %885, i32 0, i32 9
  %887 = load ptr, ptr %886, align 8, !tbaa !121
  %888 = getelementptr inbounds %struct.ImFont, ptr %887, i32 0, i32 6
  %889 = load ptr, ptr %66, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.ImFont, ptr %889, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %890, ptr align 8 %888, i64 8, i1 false), !tbaa.struct !46
  %891 = load ptr, ptr %20, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.ImGuiContext, ptr %891, i32 0, i32 9
  %893 = load ptr, ptr %892, align 8, !tbaa !121
  %894 = getelementptr inbounds %struct.ImFont, ptr %893, i32 0, i32 15
  %895 = load float, ptr %894, align 4, !tbaa !124
  %896 = load ptr, ptr %66, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.ImFont, ptr %896, i32 0, i32 15
  store float %895, ptr %897, align 4, !tbaa !124
  %898 = load ptr, ptr %20, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.ImGuiContext, ptr %898, i32 0, i32 9
  %900 = load ptr, ptr %899, align 8, !tbaa !121
  %901 = getelementptr inbounds %struct.ImFont, ptr %900, i32 0, i32 16
  %902 = load float, ptr %901, align 8, !tbaa !125
  %903 = load ptr, ptr %66, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.ImFont, ptr %903, i32 0, i32 16
  store float %902, ptr %904, align 8, !tbaa !125
  %905 = load ptr, ptr %20, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.ImGuiContext, ptr %905, i32 0, i32 9
  %907 = load ptr, ptr %906, align 8, !tbaa !121
  %908 = getelementptr inbounds %struct.ImFont, ptr %907, i32 0, i32 7
  %909 = load ptr, ptr %908, align 8, !tbaa !126
  %910 = load ptr, ptr %66, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.ImFont, ptr %910, i32 0, i32 7
  store ptr %909, ptr %911, align 8, !tbaa !126
  %912 = load ptr, ptr %65, align 8, !tbaa !5
  %913 = load ptr, ptr %66, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImFont, ptr %913, i32 0, i32 5
  store ptr %912, ptr %914, align 8, !tbaa !127
  %915 = load ptr, ptr %65, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImFontGlyph, ptr %915, i32 0, i32 1
  %917 = load float, ptr %916, align 4, !tbaa !128
  %918 = load ptr, ptr %66, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.ImFont, ptr %918, i32 0, i32 1
  store float %917, ptr %919, align 8, !tbaa !130
  %920 = load ptr, ptr %66, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.ImFont, ptr %920, i32 0, i32 4
  %922 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %921)
  br i1 %922, label %923, label %931

923:                                              ; preds = %864
  %924 = load ptr, ptr %66, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.ImFont, ptr %924, i32 0, i32 0
  %926 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %925)
  br i1 %926, label %927, label %931

927:                                              ; preds = %923
  %928 = load ptr, ptr %66, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.ImFont, ptr %928, i32 0, i32 3
  %930 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %929)
  br label %931

931:                                              ; preds = %927, %923, %864
  %932 = phi i1 [ false, %923 ], [ false, %864 ], [ %930, %927 ]
  br i1 %932, label %933, label %934

933:                                              ; preds = %931
  br label %936

934:                                              ; preds = %931
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.1, i32 noundef 3948, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

935:                                              ; No predecessors!
  br label %936

936:                                              ; preds = %935, %933
  %937 = load ptr, ptr %66, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %937)
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #14
  br label %938

938:                                              ; preds = %936, %861, %856
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #14
  store i32 0, ptr %67, align 4, !tbaa !9
  %939 = load ptr, ptr %20, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.ImGuiContext, ptr %939, i32 0, i32 47
  %941 = load i32, ptr %940, align 8, !tbaa !101
  %942 = load i32, ptr %29, align 4, !tbaa !9
  %943 = icmp eq i32 %941, %942
  br i1 %943, label %944, label %1243

944:                                              ; preds = %938
  %945 = load ptr, ptr %43, align 8, !tbaa !5
  %946 = icmp ne ptr %945, null
  br i1 %946, label %947, label %948

947:                                              ; preds = %944
  br label %950

948:                                              ; preds = %944
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.1, i32 noundef 3956, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

949:                                              ; No predecessors!
  br label %950

950:                                              ; preds = %949, %947
  %951 = load ptr, ptr %43, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %951, i32 0, i32 2
  %953 = load i32, ptr %952, align 8, !tbaa !110
  store i32 %953, ptr %67, align 4, !tbaa !9
  %954 = load ptr, ptr %43, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %954, i32 0, i32 13
  store i8 0, ptr %955, align 2, !tbaa !131
  %956 = load i32, ptr %13, align 4, !tbaa !9
  %957 = load ptr, ptr %43, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %957, i32 0, i32 7
  store i32 %956, ptr %958, align 4, !tbaa !132
  %959 = load i32, ptr %15, align 4, !tbaa !9
  %960 = load ptr, ptr %43, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %960, i32 0, i32 14
  store i32 %959, ptr %961, align 8, !tbaa !133
  %962 = load ptr, ptr %16, align 8, !tbaa !5
  %963 = load ptr, ptr %43, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %963, i32 0, i32 15
  store ptr %962, ptr %964, align 8, !tbaa !134
  %965 = load ptr, ptr %17, align 8, !tbaa !5
  %966 = load ptr, ptr %43, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %966, i32 0, i32 16
  store ptr %965, ptr %967, align 8, !tbaa !135
  %968 = load ptr, ptr %21, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiIO, ptr %968, i32 0, i32 43
  %970 = getelementptr inbounds [5 x i8], ptr %969, i64 0, i64 0
  %971 = load i8, ptr %970, align 8, !tbaa !45, !range !43, !noundef !44
  %972 = trunc i8 %971 to i1
  %973 = xor i1 %972, true
  %974 = load ptr, ptr %20, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.ImGuiContext, ptr %974, i32 0, i32 51
  %976 = zext i1 %973 to i8
  store i8 %976, ptr %975, align 1, !tbaa !136
  %977 = load ptr, ptr %20, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiContext, ptr %977, i32 0, i32 221
  store i32 1, ptr %978, align 4, !tbaa !137
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #14
  %979 = load ptr, ptr %21, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.ImGuiIO, ptr %979, i32 0, i32 42
  %981 = getelementptr inbounds %struct.ImVec2, ptr %980, i32 0, i32 0
  %982 = load float, ptr %981, align 8, !tbaa !138
  %983 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %984 = getelementptr inbounds %struct.ImVec2, ptr %983, i32 0, i32 0
  %985 = load float, ptr %984, align 4, !tbaa !139
  %986 = fsub float %982, %985
  %987 = load ptr, ptr %22, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.ImGuiStyle, ptr %987, i32 0, i32 11
  %989 = getelementptr inbounds %struct.ImVec2, ptr %988, i32 0, i32 0
  %990 = load float, ptr %989, align 4, !tbaa !140
  %991 = fsub float %986, %990
  %992 = load ptr, ptr %43, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %992, i32 0, i32 8
  %994 = load float, ptr %993, align 8, !tbaa !112
  %995 = fadd float %991, %994
  store float %995, ptr %68, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #14
  %996 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %997 = trunc i8 %996 to i1
  br i1 %997, label %998, label %1014

998:                                              ; preds = %950
  %999 = load ptr, ptr %21, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.ImGuiIO, ptr %999, i32 0, i32 42
  %1001 = getelementptr inbounds %struct.ImVec2, ptr %1000, i32 0, i32 1
  %1002 = load float, ptr %1001, align 4, !tbaa !141
  %1003 = load ptr, ptr %38, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.ImGuiWindow, ptr %1003, i32 0, i32 58
  %1005 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1004, i32 0, i32 0
  %1006 = getelementptr inbounds %struct.ImVec2, ptr %1005, i32 0, i32 1
  %1007 = load float, ptr %1006, align 4, !tbaa !142
  %1008 = fsub float %1002, %1007
  %1009 = load ptr, ptr %22, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.ImGuiStyle, ptr %1009, i32 0, i32 11
  %1011 = getelementptr inbounds %struct.ImVec2, ptr %1010, i32 0, i32 1
  %1012 = load float, ptr %1011, align 4, !tbaa !88
  %1013 = fsub float %1008, %1012
  br label %1019

1014:                                             ; preds = %950
  %1015 = load ptr, ptr %20, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ImGuiContext, ptr %1015, i32 0, i32 10
  %1017 = load float, ptr %1016, align 8, !tbaa !48
  %1018 = fmul float %1017, 5.000000e-01
  br label %1019

1019:                                             ; preds = %1014, %998
  %1020 = phi float [ %1013, %998 ], [ %1018, %1014 ]
  store float %1020, ptr %69, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #14
  %1021 = load ptr, ptr %21, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.ImGuiIO, ptr %1021, i32 0, i32 28
  %1023 = load i8, ptr %1022, align 1, !tbaa !143, !range !43, !noundef !44
  %1024 = trunc i8 %1023 to i1
  %1025 = zext i1 %1024 to i8
  store i8 %1025, ptr %70, align 1, !tbaa !45
  %1026 = load i8, ptr %52, align 1, !tbaa !45, !range !43, !noundef !44
  %1027 = trunc i8 %1026 to i1
  br i1 %1027, label %1040, label %1028

1028:                                             ; preds = %1019
  %1029 = load i8, ptr %42, align 1, !tbaa !45, !range !43, !noundef !44
  %1030 = trunc i8 %1029 to i1
  br i1 %1030, label %1031, label %1044

1031:                                             ; preds = %1028
  %1032 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %1033 = trunc i8 %1032 to i1
  br i1 %1033, label %1044, label %1034

1034:                                             ; preds = %1031
  %1035 = load ptr, ptr %21, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.ImGuiIO, ptr %1035, i32 0, i32 72
  %1037 = getelementptr inbounds [5 x i8], ptr %1036, i64 0, i64 0
  %1038 = load i8, ptr %1037, align 1, !tbaa !45, !range !43, !noundef !44
  %1039 = trunc i8 %1038 to i1
  br i1 %1039, label %1040, label %1044

1040:                                             ; preds = %1034, %1019
  %1041 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1041)
  %1042 = load ptr, ptr %43, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1042, i32 0, i32 12
  store i8 1, ptr %1043, align 1, !tbaa !144
  br label %1116

1044:                                             ; preds = %1034, %1031, %1028
  %1045 = load i8, ptr %42, align 1, !tbaa !45, !range !43, !noundef !44
  %1046 = trunc i8 %1045 to i1
  br i1 %1046, label %1047, label %1059

1047:                                             ; preds = %1044
  %1048 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %1049 = trunc i8 %1048 to i1
  br i1 %1049, label %1050, label %1059

1050:                                             ; preds = %1047
  %1051 = load ptr, ptr %21, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.ImGuiIO, ptr %1051, i32 0, i32 72
  %1053 = getelementptr inbounds [5 x i8], ptr %1052, i64 0, i64 0
  %1054 = load i8, ptr %1053, align 1, !tbaa !45, !range !43, !noundef !44
  %1055 = trunc i8 %1054 to i1
  br i1 %1055, label %1056, label %1059

1056:                                             ; preds = %1050
  %1057 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1057, i32 noundef 2097164)
  %1058 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1058, i32 noundef 6291469)
  br label %1115

1059:                                             ; preds = %1050, %1047, %1044
  %1060 = load ptr, ptr %21, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.ImGuiIO, ptr %1060, i32 0, i32 71
  %1062 = getelementptr inbounds [5 x i8], ptr %1061, i64 0, i64 0
  %1063 = load i8, ptr %1062, align 8, !tbaa !45, !range !43, !noundef !44
  %1064 = trunc i8 %1063 to i1
  br i1 %1064, label %1065, label %1081

1065:                                             ; preds = %1059
  %1066 = load ptr, ptr %43, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1066, i32 0, i32 12
  %1068 = load i8, ptr %1067, align 1, !tbaa !144, !range !43, !noundef !44
  %1069 = trunc i8 %1068 to i1
  br i1 %1069, label %1081, label %1070

1070:                                             ; preds = %1065
  %1071 = load i8, ptr %42, align 1, !tbaa !45, !range !43, !noundef !44
  %1072 = trunc i8 %1071 to i1
  br i1 %1072, label %1073, label %1080

1073:                                             ; preds = %1070
  %1074 = load ptr, ptr %43, align 8, !tbaa !5
  %1075 = load ptr, ptr %43, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1075, i32 0, i32 9
  %1077 = load float, ptr %68, align 4, !tbaa !47
  %1078 = load float, ptr %69, align 4, !tbaa !47
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1074, ptr noundef %1076, float noundef %1077, float noundef %1078)
  %1079 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %1079)
  br label %1080

1080:                                             ; preds = %1073, %1070
  br label %1114

1081:                                             ; preds = %1065, %1059
  %1082 = load ptr, ptr %21, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.ImGuiIO, ptr %1082, i32 0, i32 43
  %1084 = getelementptr inbounds [5 x i8], ptr %1083, i64 0, i64 0
  %1085 = load i8, ptr %1084, align 8, !tbaa !45, !range !43, !noundef !44
  %1086 = trunc i8 %1085 to i1
  br i1 %1086, label %1087, label %1113

1087:                                             ; preds = %1081
  %1088 = load ptr, ptr %43, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1088, i32 0, i32 12
  %1090 = load i8, ptr %1089, align 1, !tbaa !144, !range !43, !noundef !44
  %1091 = trunc i8 %1090 to i1
  br i1 %1091, label %1113, label %1092

1092:                                             ; preds = %1087
  %1093 = load ptr, ptr %21, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.ImGuiIO, ptr %1093, i32 0, i32 66
  %1095 = getelementptr inbounds %struct.ImVec2, ptr %1094, i32 0, i32 0
  %1096 = load float, ptr %1095, align 4, !tbaa !145
  %1097 = fcmp une float %1096, 0.000000e+00
  br i1 %1097, label %1104, label %1098

1098:                                             ; preds = %1092
  %1099 = load ptr, ptr %21, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.ImGuiIO, ptr %1099, i32 0, i32 66
  %1101 = getelementptr inbounds %struct.ImVec2, ptr %1100, i32 0, i32 1
  %1102 = load float, ptr %1101, align 4, !tbaa !146
  %1103 = fcmp une float %1102, 0.000000e+00
  br i1 %1103, label %1104, label %1113

1104:                                             ; preds = %1098, %1092
  %1105 = load ptr, ptr %43, align 8, !tbaa !5
  %1106 = load ptr, ptr %43, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1106, i32 0, i32 9
  %1108 = load float, ptr %68, align 4, !tbaa !47
  %1109 = load float, ptr %69, align 4, !tbaa !47
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1105, ptr noundef %1107, float noundef %1108, float noundef %1109)
  %1110 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %1110)
  %1111 = load ptr, ptr %43, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1111, i32 0, i32 11
  store i8 1, ptr %1112, align 4, !tbaa !147
  br label %1113

1113:                                             ; preds = %1104, %1098, %1087, %1081
  br label %1114

1114:                                             ; preds = %1113, %1080
  br label %1115

1115:                                             ; preds = %1114, %1056
  br label %1116

1116:                                             ; preds = %1115, %1040
  %1117 = load ptr, ptr %43, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1117, i32 0, i32 12
  %1119 = load i8, ptr %1118, align 1, !tbaa !144, !range !43, !noundef !44
  %1120 = trunc i8 %1119 to i1
  br i1 %1120, label %1121, label %1130

1121:                                             ; preds = %1116
  %1122 = load ptr, ptr %21, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.ImGuiIO, ptr %1122, i32 0, i32 43
  %1124 = getelementptr inbounds [5 x i8], ptr %1123, i64 0, i64 0
  %1125 = load i8, ptr %1124, align 8, !tbaa !45, !range !43, !noundef !44
  %1126 = trunc i8 %1125 to i1
  br i1 %1126, label %1130, label %1127

1127:                                             ; preds = %1121
  %1128 = load ptr, ptr %43, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1128, i32 0, i32 12
  store i8 0, ptr %1129, align 1, !tbaa !144
  br label %1130

1130:                                             ; preds = %1127, %1121, %1116
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #14
  %1131 = load ptr, ptr %21, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.ImGuiIO, ptr %1131, i32 0, i32 47
  %1133 = load i8, ptr %1132, align 4, !tbaa !114, !range !43, !noundef !44
  %1134 = trunc i8 %1133 to i1
  br i1 %1134, label %1135, label %1140

1135:                                             ; preds = %1130
  %1136 = load ptr, ptr %21, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.ImGuiIO, ptr %1136, i32 0, i32 49
  %1138 = load i8, ptr %1137, align 2, !tbaa !148, !range !43, !noundef !44
  %1139 = trunc i8 %1138 to i1
  br i1 %1139, label %1140, label %1150

1140:                                             ; preds = %1135, %1130
  %1141 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %1142 = trunc i8 %1141 to i1
  br i1 %1142, label %1143, label %1148

1143:                                             ; preds = %1140
  %1144 = load ptr, ptr %21, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ImGuiIO, ptr %1144, i32 0, i32 50
  %1146 = load i8, ptr %1145, align 1, !tbaa !149, !range !43, !noundef !44
  %1147 = trunc i8 %1146 to i1
  br label %1148

1148:                                             ; preds = %1143, %1140
  %1149 = phi i1 [ false, %1140 ], [ %1147, %1143 ]
  br label %1150

1150:                                             ; preds = %1148, %1135
  %1151 = phi i1 [ true, %1135 ], [ %1149, %1148 ]
  %1152 = zext i1 %1151 to i8
  store i8 %1152, ptr %71, align 1, !tbaa !45
  %1153 = load i32, ptr %15, align 4, !tbaa !9
  %1154 = and i32 %1153, 1024
  %1155 = icmp ne i32 %1154, 0
  br i1 %1155, label %1156, label %1184

1156:                                             ; preds = %1150
  %1157 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1157, label %1158, label %1184

1158:                                             ; preds = %1156
  %1159 = load i8, ptr %71, align 1, !tbaa !45, !range !43, !noundef !44
  %1160 = trunc i8 %1159 to i1
  br i1 %1160, label %1184, label %1161

1161:                                             ; preds = %1158
  %1162 = load ptr, ptr %21, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiIO, ptr %1162, i32 0, i32 48
  %1164 = load i8, ptr %1163, align 1, !tbaa !150, !range !43, !noundef !44
  %1165 = trunc i8 %1164 to i1
  br i1 %1165, label %1184, label %1166

1166:                                             ; preds = %1161
  %1167 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1168 = trunc i8 %1167 to i1
  br i1 %1168, label %1184, label %1169

1169:                                             ; preds = %1166
  %1170 = load ptr, ptr %21, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.ImGuiIO, ptr %1170, i32 0, i32 86
  call void @llvm.lifetime.start.p0(i64 2, ptr %72) #14
  store i16 9, ptr %72, align 2, !tbaa !151
  %1172 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %1171, ptr noundef nonnull align 2 dereferenceable(2) %72)
  %1173 = xor i1 %1172, true
  call void @llvm.lifetime.end.p0(i64 2, ptr %72) #14
  br i1 %1173, label %1174, label %1183

1174:                                             ; preds = %1169
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #14
  store i32 9, ptr %73, align 4, !tbaa !9
  %1175 = load i32, ptr %15, align 4, !tbaa !9
  %1176 = load ptr, ptr %16, align 8, !tbaa !5
  %1177 = load ptr, ptr %17, align 8, !tbaa !5
  %1178 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %73, i32 noundef %1175, ptr noundef %1176, ptr noundef %1177)
  br i1 %1178, label %1179, label %1182

1179:                                             ; preds = %1174
  %1180 = load ptr, ptr %43, align 8, !tbaa !5
  %1181 = load i32, ptr %73, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1180, i32 noundef %1181)
  br label %1182

1182:                                             ; preds = %1179, %1174
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #14
  br label %1183

1183:                                             ; preds = %1182, %1169
  br label %1184

1184:                                             ; preds = %1183, %1166, %1161, %1158, %1156, %1150
  %1185 = load ptr, ptr %21, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.ImGuiIO, ptr %1185, i32 0, i32 86
  %1187 = getelementptr inbounds %struct.ImVector.7, ptr %1186, i32 0, i32 0
  %1188 = load i32, ptr %1187, align 8, !tbaa !152
  %1189 = icmp sgt i32 %1188, 0
  br i1 %1189, label %1190, label %1242

1190:                                             ; preds = %1184
  %1191 = load i8, ptr %71, align 1, !tbaa !45, !range !43, !noundef !44
  %1192 = trunc i8 %1191 to i1
  br i1 %1192, label %1239, label %1193

1193:                                             ; preds = %1190
  %1194 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1195 = trunc i8 %1194 to i1
  br i1 %1195, label %1239, label %1196

1196:                                             ; preds = %1193
  %1197 = load i8, ptr %48, align 1, !tbaa !45, !range !43, !noundef !44
  %1198 = trunc i8 %1197 to i1
  br i1 %1198, label %1239, label %1199

1199:                                             ; preds = %1196
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #14
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %1200

1200:                                             ; preds = %1235, %1199
  %1201 = load i32, ptr %74, align 4, !tbaa !9
  %1202 = load ptr, ptr %21, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.ImGuiIO, ptr %1202, i32 0, i32 86
  %1204 = getelementptr inbounds %struct.ImVector.7, ptr %1203, i32 0, i32 0
  %1205 = load i32, ptr %1204, align 8, !tbaa !152
  %1206 = icmp slt i32 %1201, %1205
  br i1 %1206, label %1208, label %1207

1207:                                             ; preds = %1200
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #14
  br label %1238

1208:                                             ; preds = %1200
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  %1209 = load ptr, ptr %21, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ImGuiIO, ptr %1209, i32 0, i32 86
  %1211 = load i32, ptr %74, align 4, !tbaa !9
  %1212 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1210, i32 noundef %1211)
  %1213 = load i16, ptr %1212, align 2, !tbaa !151
  %1214 = zext i16 %1213 to i32
  store i32 %1214, ptr %75, align 4, !tbaa !9
  %1215 = load i32, ptr %75, align 4, !tbaa !9
  %1216 = icmp eq i32 %1215, 9
  br i1 %1216, label %1217, label %1223

1217:                                             ; preds = %1208
  %1218 = load ptr, ptr %21, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiIO, ptr %1218, i32 0, i32 48
  %1220 = load i8, ptr %1219, align 1, !tbaa !150, !range !43, !noundef !44
  %1221 = trunc i8 %1220 to i1
  br i1 %1221, label %1222, label %1223

1222:                                             ; preds = %1217
  store i32 4, ptr %19, align 4
  br label %1232

1223:                                             ; preds = %1217, %1208
  %1224 = load i32, ptr %15, align 4, !tbaa !9
  %1225 = load ptr, ptr %16, align 8, !tbaa !5
  %1226 = load ptr, ptr %17, align 8, !tbaa !5
  %1227 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %75, i32 noundef %1224, ptr noundef %1225, ptr noundef %1226)
  br i1 %1227, label %1228, label %1231

1228:                                             ; preds = %1223
  %1229 = load ptr, ptr %43, align 8, !tbaa !5
  %1230 = load i32, ptr %75, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1229, i32 noundef %1230)
  br label %1231

1231:                                             ; preds = %1228, %1223
  store i32 0, ptr %19, align 4
  br label %1232

1232:                                             ; preds = %1231, %1222
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  %1233 = load i32, ptr %19, align 4
  switch i32 %1233, label %3135 [
    i32 0, label %1234
    i32 4, label %1235
  ]

1234:                                             ; preds = %1232
  br label %1235

1235:                                             ; preds = %1234, %1232
  %1236 = load i32, ptr %74, align 4, !tbaa !9
  %1237 = add nsw i32 %1236, 1
  store i32 %1237, ptr %74, align 4, !tbaa !9
  br label %1200, !llvm.loop !153

1238:                                             ; preds = %1207
  br label %1239

1239:                                             ; preds = %1238, %1196, %1193, %1190
  %1240 = load ptr, ptr %21, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.ImGuiIO, ptr %1240, i32 0, i32 86
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1241, i32 noundef 0)
  br label %1242

1242:                                             ; preds = %1239, %1184
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #14
  br label %1243

1243:                                             ; preds = %1242, %938
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #14
  store i8 0, ptr %76, align 1, !tbaa !45
  %1244 = load ptr, ptr %20, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.ImGuiContext, ptr %1244, i32 0, i32 47
  %1246 = load i32, ptr %1245, align 8, !tbaa !101
  %1247 = load i32, ptr %29, align 4, !tbaa !9
  %1248 = icmp eq i32 %1246, %1247
  br i1 %1248, label %1249, label %1892

1249:                                             ; preds = %1243
  %1250 = load ptr, ptr %20, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.ImGuiContext, ptr %1250, i32 0, i32 50
  %1252 = load i8, ptr %1251, align 4, !tbaa !155, !range !43, !noundef !44
  %1253 = trunc i8 %1252 to i1
  br i1 %1253, label %1892, label %1254

1254:                                             ; preds = %1249
  %1255 = load i8, ptr %51, align 1, !tbaa !45, !range !43, !noundef !44
  %1256 = trunc i8 %1255 to i1
  br i1 %1256, label %1892, label %1257

1257:                                             ; preds = %1254
  %1258 = load ptr, ptr %43, align 8, !tbaa !5
  %1259 = icmp ne ptr %1258, null
  br i1 %1259, label %1260, label %1261

1260:                                             ; preds = %1257
  br label %1263

1261:                                             ; preds = %1257
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.1, i32 noundef 4037, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1262:                                             ; No predecessors!
  br label %1263

1263:                                             ; preds = %1262, %1260
  %1264 = load ptr, ptr %21, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.ImGuiIO, ptr %1264, i32 0, i32 67
  %1266 = load i32, ptr %1265, align 4, !tbaa !156
  %1267 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %1268 = icmp eq i32 %1266, %1267
  br i1 %1268, label %1269, label %1270

1269:                                             ; preds = %1263
  br label %1270

1270:                                             ; preds = %1269, %1263
  %1271 = phi i1 [ false, %1263 ], [ true, %1269 ]
  br i1 %1271, label %1272, label %1273

1272:                                             ; preds = %1270
  br label %1275

1273:                                             ; preds = %1270
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.1, i32 noundef 4038, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1274:                                             ; No predecessors!
  br label %1275

1275:                                             ; preds = %1274, %1272
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #14
  %1276 = load ptr, ptr %21, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.ImGuiIO, ptr %1276, i32 0, i32 48
  %1278 = load i8, ptr %1277, align 1, !tbaa !150, !range !43, !noundef !44
  %1279 = trunc i8 %1278 to i1
  %1280 = zext i1 %1279 to i64
  %1281 = select i1 %1279, i32 4194304, i32 0
  store i32 %1281, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  %1282 = load ptr, ptr %21, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.ImGuiIO, ptr %1282, i32 0, i32 28
  %1284 = load i8, ptr %1283, align 1, !tbaa !143, !range !43, !noundef !44
  %1285 = trunc i8 %1284 to i1
  %1286 = zext i1 %1285 to i8
  store i8 %1286, ptr %78, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #14
  %1287 = load i8, ptr %78, align 1, !tbaa !45, !range !43, !noundef !44
  %1288 = trunc i8 %1287 to i1
  br i1 %1288, label %1289, label %1294

1289:                                             ; preds = %1275
  %1290 = load ptr, ptr %21, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.ImGuiIO, ptr %1290, i32 0, i32 67
  %1292 = load i32, ptr %1291, align 4, !tbaa !156
  %1293 = icmp eq i32 %1292, 10
  br label %1294

1294:                                             ; preds = %1289, %1275
  %1295 = phi i1 [ false, %1275 ], [ %1293, %1289 ]
  %1296 = zext i1 %1295 to i8
  store i8 %1296, ptr %79, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #14
  %1297 = load i8, ptr %78, align 1, !tbaa !45, !range !43, !noundef !44
  %1298 = trunc i8 %1297 to i1
  br i1 %1298, label %1299, label %1304

1299:                                             ; preds = %1294
  %1300 = load ptr, ptr %21, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.ImGuiIO, ptr %1300, i32 0, i32 49
  %1302 = load i8, ptr %1301, align 2, !tbaa !148, !range !43, !noundef !44
  %1303 = trunc i8 %1302 to i1
  br label %1309

1304:                                             ; preds = %1294
  %1305 = load ptr, ptr %21, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.ImGuiIO, ptr %1305, i32 0, i32 47
  %1307 = load i8, ptr %1306, align 4, !tbaa !114, !range !43, !noundef !44
  %1308 = trunc i8 %1307 to i1
  br label %1309

1309:                                             ; preds = %1304, %1299
  %1310 = phi i1 [ %1303, %1299 ], [ %1308, %1304 ]
  %1311 = zext i1 %1310 to i8
  store i8 %1311, ptr %80, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #14
  %1312 = load i8, ptr %78, align 1, !tbaa !45, !range !43, !noundef !44
  %1313 = trunc i8 %1312 to i1
  br i1 %1313, label %1314, label %1330

1314:                                             ; preds = %1309
  %1315 = load ptr, ptr %21, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.ImGuiIO, ptr %1315, i32 0, i32 50
  %1317 = load i8, ptr %1316, align 1, !tbaa !149, !range !43, !noundef !44
  %1318 = trunc i8 %1317 to i1
  br i1 %1318, label %1319, label %1330

1319:                                             ; preds = %1314
  %1320 = load ptr, ptr %21, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.ImGuiIO, ptr %1320, i32 0, i32 47
  %1322 = load i8, ptr %1321, align 4, !tbaa !114, !range !43, !noundef !44
  %1323 = trunc i8 %1322 to i1
  br i1 %1323, label %1330, label %1324

1324:                                             ; preds = %1319
  %1325 = load ptr, ptr %21, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.ImGuiIO, ptr %1325, i32 0, i32 49
  %1327 = load i8, ptr %1326, align 2, !tbaa !148, !range !43, !noundef !44
  %1328 = trunc i8 %1327 to i1
  %1329 = xor i1 %1328, true
  br label %1330

1330:                                             ; preds = %1324, %1319, %1314, %1309
  %1331 = phi i1 [ false, %1319 ], [ false, %1314 ], [ false, %1309 ], [ %1329, %1324 ]
  %1332 = zext i1 %1331 to i8
  store i8 %1332, ptr %81, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #14
  %1333 = load ptr, ptr %21, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.ImGuiIO, ptr %1333, i32 0, i32 67
  %1335 = load i32, ptr %1334, align 4, !tbaa !156
  %1336 = icmp eq i32 %1335, 1
  %1337 = zext i1 %1336 to i8
  store i8 %1337, ptr %82, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #14
  %1338 = load ptr, ptr %21, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.ImGuiIO, ptr %1338, i32 0, i32 67
  %1340 = load i32, ptr %1339, align 4, !tbaa !156
  %1341 = icmp eq i32 %1340, 2
  %1342 = zext i1 %1341 to i8
  store i8 %1342, ptr %83, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #14
  %1343 = load ptr, ptr %20, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.ImGuiContext, ptr %1343, i32 0, i32 3
  %1345 = getelementptr inbounds %struct.ImGuiIO, ptr %1344, i32 0, i32 28
  %1346 = load i8, ptr %1345, align 1, !tbaa !157, !range !43, !noundef !44
  %1347 = trunc i8 %1346 to i1
  br i1 %1347, label %1348, label %1353

1348:                                             ; preds = %1330
  %1349 = load ptr, ptr %21, align 8, !tbaa !5
  %1350 = getelementptr inbounds %struct.ImGuiIO, ptr %1349, i32 0, i32 67
  %1351 = load i32, ptr %1350, align 4, !tbaa !156
  %1352 = icmp eq i32 %1351, 8
  br label %1358

1353:                                             ; preds = %1330
  %1354 = load ptr, ptr %21, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.ImGuiIO, ptr %1354, i32 0, i32 67
  %1356 = load i32, ptr %1355, align 4, !tbaa !156
  %1357 = icmp eq i32 %1356, 1
  br label %1358

1358:                                             ; preds = %1353, %1348
  %1359 = phi i1 [ %1352, %1348 ], [ %1357, %1353 ]
  %1360 = zext i1 %1359 to i8
  store i8 %1360, ptr %84, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #14
  %1361 = load i8, ptr %84, align 1, !tbaa !45, !range !43, !noundef !44
  %1362 = trunc i8 %1361 to i1
  br i1 %1362, label %1363, label %1365

1363:                                             ; preds = %1358
  %1364 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %1364, label %1370, label %1365

1365:                                             ; preds = %1363, %1358
  %1366 = load i8, ptr %83, align 1, !tbaa !45, !range !43, !noundef !44
  %1367 = trunc i8 %1366 to i1
  br i1 %1367, label %1368, label %1384

1368:                                             ; preds = %1365
  %1369 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1369, label %1370, label %1384

1370:                                             ; preds = %1368, %1363
  %1371 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1372 = trunc i8 %1371 to i1
  br i1 %1372, label %1384, label %1373

1373:                                             ; preds = %1370
  %1374 = load i8, ptr %26, align 1, !tbaa !45, !range !43, !noundef !44
  %1375 = trunc i8 %1374 to i1
  br i1 %1375, label %1384, label %1376

1376:                                             ; preds = %1373
  %1377 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1378 = trunc i8 %1377 to i1
  br i1 %1378, label %1379, label %1382

1379:                                             ; preds = %1376
  %1380 = load ptr, ptr %43, align 8, !tbaa !5
  %1381 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1380)
  br label %1382

1382:                                             ; preds = %1379, %1376
  %1383 = phi i1 [ true, %1376 ], [ %1381, %1379 ]
  br label %1384

1384:                                             ; preds = %1382, %1373, %1370, %1368, %1365
  %1385 = phi i1 [ false, %1373 ], [ false, %1370 ], [ false, %1368 ], [ false, %1365 ], [ %1383, %1382 ]
  %1386 = zext i1 %1385 to i8
  store i8 %1386, ptr %85, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1387 = load i8, ptr %84, align 1, !tbaa !45, !range !43, !noundef !44
  %1388 = trunc i8 %1387 to i1
  br i1 %1388, label %1389, label %1391

1389:                                             ; preds = %1384
  %1390 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1390, label %1396, label %1391

1391:                                             ; preds = %1389, %1384
  %1392 = load i8, ptr %82, align 1, !tbaa !45, !range !43, !noundef !44
  %1393 = trunc i8 %1392 to i1
  br i1 %1393, label %1394, label %1407

1394:                                             ; preds = %1391
  %1395 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1395, label %1396, label %1407

1396:                                             ; preds = %1394, %1389
  %1397 = load i8, ptr %26, align 1, !tbaa !45, !range !43, !noundef !44
  %1398 = trunc i8 %1397 to i1
  br i1 %1398, label %1407, label %1399

1399:                                             ; preds = %1396
  %1400 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1401 = trunc i8 %1400 to i1
  br i1 %1401, label %1402, label %1405

1402:                                             ; preds = %1399
  %1403 = load ptr, ptr %43, align 8, !tbaa !5
  %1404 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1403)
  br label %1405

1405:                                             ; preds = %1402, %1399
  %1406 = phi i1 [ true, %1399 ], [ %1404, %1402 ]
  br label %1407

1407:                                             ; preds = %1405, %1396, %1394, %1391
  %1408 = phi i1 [ false, %1396 ], [ false, %1394 ], [ false, %1391 ], [ %1406, %1405 ]
  %1409 = zext i1 %1408 to i8
  store i8 %1409, ptr %86, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #14
  %1410 = load i8, ptr %84, align 1, !tbaa !45, !range !43, !noundef !44
  %1411 = trunc i8 %1410 to i1
  br i1 %1411, label %1412, label %1414

1412:                                             ; preds = %1407
  %1413 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1413, label %1419, label %1414

1414:                                             ; preds = %1412, %1407
  %1415 = load i8, ptr %83, align 1, !tbaa !45, !range !43, !noundef !44
  %1416 = trunc i8 %1415 to i1
  br i1 %1416, label %1417, label %1423

1417:                                             ; preds = %1414
  %1418 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1418, label %1419, label %1423

1419:                                             ; preds = %1417, %1412
  %1420 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1421 = trunc i8 %1420 to i1
  %1422 = xor i1 %1421, true
  br label %1423

1423:                                             ; preds = %1419, %1417, %1414
  %1424 = phi i1 [ false, %1417 ], [ false, %1414 ], [ %1422, %1419 ]
  %1425 = zext i1 %1424 to i8
  store i8 %1425, ptr %87, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1426 = load i8, ptr %84, align 1, !tbaa !45, !range !43, !noundef !44
  %1427 = trunc i8 %1426 to i1
  br i1 %1427, label %1428, label %1436

1428:                                             ; preds = %1423
  %1429 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1429, label %1430, label %1436

1430:                                             ; preds = %1428
  %1431 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1432 = trunc i8 %1431 to i1
  br i1 %1432, label %1436, label %1433

1433:                                             ; preds = %1430
  %1434 = load i8, ptr %27, align 1, !tbaa !45, !range !43, !noundef !44
  %1435 = trunc i8 %1434 to i1
  br label %1436

1436:                                             ; preds = %1433, %1430, %1428, %1423
  %1437 = phi i1 [ false, %1430 ], [ false, %1428 ], [ false, %1423 ], [ %1435, %1433 ]
  %1438 = zext i1 %1437 to i8
  store i8 %1438, ptr %88, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1439 = load i8, ptr %84, align 1, !tbaa !45, !range !43, !noundef !44
  %1440 = trunc i8 %1439 to i1
  br i1 %1440, label %1441, label %1443

1441:                                             ; preds = %1436
  %1442 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1442, label %1448, label %1443

1443:                                             ; preds = %1441, %1436
  %1444 = load i8, ptr %79, align 1, !tbaa !45, !range !43, !noundef !44
  %1445 = trunc i8 %1444 to i1
  br i1 %1445, label %1446, label %1454

1446:                                             ; preds = %1443
  %1447 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1447, label %1448, label %1454

1448:                                             ; preds = %1446, %1441
  %1449 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1450 = trunc i8 %1449 to i1
  br i1 %1450, label %1454, label %1451

1451:                                             ; preds = %1448
  %1452 = load i8, ptr %27, align 1, !tbaa !45, !range !43, !noundef !44
  %1453 = trunc i8 %1452 to i1
  br label %1454

1454:                                             ; preds = %1451, %1448, %1446, %1443
  %1455 = phi i1 [ false, %1448 ], [ false, %1446 ], [ false, %1443 ], [ %1453, %1451 ]
  %1456 = zext i1 %1455 to i8
  store i8 %1456, ptr %89, align 1, !tbaa !45
  %1457 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1457, label %1458, label %1472

1458:                                             ; preds = %1454
  %1459 = load ptr, ptr %43, align 8, !tbaa !5
  %1460 = load i8, ptr %81, align 1, !tbaa !45, !range !43, !noundef !44
  %1461 = trunc i8 %1460 to i1
  br i1 %1461, label %1462, label %1463

1462:                                             ; preds = %1458
  br label %1468

1463:                                             ; preds = %1458
  %1464 = load i8, ptr %80, align 1, !tbaa !45, !range !43, !noundef !44
  %1465 = trunc i8 %1464 to i1
  %1466 = zext i1 %1465 to i64
  %1467 = select i1 %1465, i32 2097164, i32 2097152
  br label %1468

1468:                                             ; preds = %1463, %1462
  %1469 = phi i32 [ 2097156, %1462 ], [ %1467, %1463 ]
  %1470 = load i32, ptr %77, align 4, !tbaa !9
  %1471 = or i32 %1469, %1470
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1459, i32 noundef %1471)
  br label %1877

1472:                                             ; preds = %1454
  %1473 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1473, label %1474, label %1488

1474:                                             ; preds = %1472
  %1475 = load ptr, ptr %43, align 8, !tbaa !5
  %1476 = load i8, ptr %81, align 1, !tbaa !45, !range !43, !noundef !44
  %1477 = trunc i8 %1476 to i1
  br i1 %1477, label %1478, label %1479

1478:                                             ; preds = %1474
  br label %1484

1479:                                             ; preds = %1474
  %1480 = load i8, ptr %80, align 1, !tbaa !45, !range !43, !noundef !44
  %1481 = trunc i8 %1480 to i1
  %1482 = zext i1 %1481 to i64
  %1483 = select i1 %1481, i32 2097165, i32 2097153
  br label %1484

1484:                                             ; preds = %1479, %1478
  %1485 = phi i32 [ 2097157, %1478 ], [ %1483, %1479 ]
  %1486 = load i32, ptr %77, align 4, !tbaa !9
  %1487 = or i32 %1485, %1486
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1475, i32 noundef %1487)
  br label %1876

1488:                                             ; preds = %1472
  %1489 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1489, label %1490, label %1518

1490:                                             ; preds = %1488
  %1491 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1492 = trunc i8 %1491 to i1
  br i1 %1492, label %1493, label %1518

1493:                                             ; preds = %1490
  %1494 = load ptr, ptr %21, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.ImGuiIO, ptr %1494, i32 0, i32 47
  %1496 = load i8, ptr %1495, align 4, !tbaa !114, !range !43, !noundef !44
  %1497 = trunc i8 %1496 to i1
  br i1 %1497, label %1498, label %1509

1498:                                             ; preds = %1493
  %1499 = load ptr, ptr %38, align 8, !tbaa !5
  %1500 = load ptr, ptr %38, align 8, !tbaa !5
  %1501 = getelementptr inbounds %struct.ImGuiWindow, ptr %1500, i32 0, i32 20
  %1502 = getelementptr inbounds %struct.ImVec2, ptr %1501, i32 0, i32 1
  %1503 = load float, ptr %1502, align 4, !tbaa !158
  %1504 = load ptr, ptr %20, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.ImGuiContext, ptr %1504, i32 0, i32 10
  %1506 = load float, ptr %1505, align 8, !tbaa !48
  %1507 = fsub float %1503, %1506
  %1508 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1507, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1499, float noundef %1508)
  br label %1517

1509:                                             ; preds = %1493
  %1510 = load ptr, ptr %43, align 8, !tbaa !5
  %1511 = load i8, ptr %81, align 1, !tbaa !45, !range !43, !noundef !44
  %1512 = trunc i8 %1511 to i1
  %1513 = zext i1 %1512 to i64
  %1514 = select i1 %1512, i32 2097158, i32 2097154
  %1515 = load i32, ptr %77, align 4, !tbaa !9
  %1516 = or i32 %1514, %1515
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1510, i32 noundef %1516)
  br label %1517

1517:                                             ; preds = %1509, %1498
  br label %1875

1518:                                             ; preds = %1490, %1488
  %1519 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1519, label %1520, label %1549

1520:                                             ; preds = %1518
  %1521 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1522 = trunc i8 %1521 to i1
  br i1 %1522, label %1523, label %1549

1523:                                             ; preds = %1520
  %1524 = load ptr, ptr %21, align 8, !tbaa !5
  %1525 = getelementptr inbounds %struct.ImGuiIO, ptr %1524, i32 0, i32 47
  %1526 = load i8, ptr %1525, align 4, !tbaa !114, !range !43, !noundef !44
  %1527 = trunc i8 %1526 to i1
  br i1 %1527, label %1528, label %1540

1528:                                             ; preds = %1523
  %1529 = load ptr, ptr %38, align 8, !tbaa !5
  %1530 = load ptr, ptr %38, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.ImGuiWindow, ptr %1530, i32 0, i32 20
  %1532 = getelementptr inbounds %struct.ImVec2, ptr %1531, i32 0, i32 1
  %1533 = load float, ptr %1532, align 4, !tbaa !158
  %1534 = load ptr, ptr %20, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.ImGuiContext, ptr %1534, i32 0, i32 10
  %1536 = load float, ptr %1535, align 8, !tbaa !48
  %1537 = fadd float %1533, %1536
  %1538 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1539 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1537, float noundef %1538)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1529, float noundef %1539)
  br label %1548

1540:                                             ; preds = %1523
  %1541 = load ptr, ptr %43, align 8, !tbaa !5
  %1542 = load i8, ptr %81, align 1, !tbaa !45, !range !43, !noundef !44
  %1543 = trunc i8 %1542 to i1
  %1544 = zext i1 %1543 to i64
  %1545 = select i1 %1543, i32 2097159, i32 2097155
  %1546 = load i32, ptr %77, align 4, !tbaa !9
  %1547 = or i32 %1545, %1546
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1541, i32 noundef %1547)
  br label %1548

1548:                                             ; preds = %1540, %1528
  br label %1874

1549:                                             ; preds = %1520, %1518
  %1550 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1550, label %1551, label %1565

1551:                                             ; preds = %1549
  %1552 = load ptr, ptr %43, align 8, !tbaa !5
  %1553 = load ptr, ptr %21, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.ImGuiIO, ptr %1553, i32 0, i32 47
  %1555 = load i8, ptr %1554, align 4, !tbaa !114, !range !43, !noundef !44
  %1556 = trunc i8 %1555 to i1
  br i1 %1556, label %1557, label %1560

1557:                                             ; preds = %1551
  %1558 = load i32, ptr %77, align 4, !tbaa !9
  %1559 = or i32 2097158, %1558
  br label %1563

1560:                                             ; preds = %1551
  %1561 = load i32, ptr %77, align 4, !tbaa !9
  %1562 = or i32 2097156, %1561
  br label %1563

1563:                                             ; preds = %1560, %1557
  %1564 = phi i32 [ %1559, %1557 ], [ %1562, %1560 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1552, i32 noundef %1564)
  br label %1873

1565:                                             ; preds = %1549
  %1566 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1566, label %1567, label %1581

1567:                                             ; preds = %1565
  %1568 = load ptr, ptr %43, align 8, !tbaa !5
  %1569 = load ptr, ptr %21, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.ImGuiIO, ptr %1569, i32 0, i32 47
  %1571 = load i8, ptr %1570, align 4, !tbaa !114, !range !43, !noundef !44
  %1572 = trunc i8 %1571 to i1
  br i1 %1572, label %1573, label %1576

1573:                                             ; preds = %1567
  %1574 = load i32, ptr %77, align 4, !tbaa !9
  %1575 = or i32 2097159, %1574
  br label %1579

1576:                                             ; preds = %1567
  %1577 = load i32, ptr %77, align 4, !tbaa !9
  %1578 = or i32 2097157, %1577
  br label %1579

1579:                                             ; preds = %1576, %1573
  %1580 = phi i32 [ %1575, %1573 ], [ %1578, %1576 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1568, i32 noundef %1580)
  br label %1872

1581:                                             ; preds = %1565
  %1582 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1582, label %1583, label %1590

1583:                                             ; preds = %1581
  %1584 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1585 = trunc i8 %1584 to i1
  br i1 %1585, label %1590, label %1586

1586:                                             ; preds = %1583
  %1587 = load ptr, ptr %43, align 8, !tbaa !5
  %1588 = load i32, ptr %77, align 4, !tbaa !9
  %1589 = or i32 2097160, %1588
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1587, i32 noundef %1589)
  br label %1871

1590:                                             ; preds = %1583, %1581
  %1591 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1591, label %1592, label %1629

1592:                                             ; preds = %1590
  %1593 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1594 = trunc i8 %1593 to i1
  br i1 %1594, label %1629, label %1595

1595:                                             ; preds = %1592
  %1596 = load ptr, ptr %43, align 8, !tbaa !5
  %1597 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1596)
  br i1 %1597, label %1625, label %1598

1598:                                             ; preds = %1595
  %1599 = load i8, ptr %80, align 1, !tbaa !45, !range !43, !noundef !44
  %1600 = trunc i8 %1599 to i1
  br i1 %1600, label %1601, label %1603

1601:                                             ; preds = %1598
  %1602 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1602, i32 noundef 6291468)
  br label %1624

1603:                                             ; preds = %1598
  %1604 = load i8, ptr %78, align 1, !tbaa !45, !range !43, !noundef !44
  %1605 = trunc i8 %1604 to i1
  br i1 %1605, label %1606, label %1623

1606:                                             ; preds = %1603
  %1607 = load ptr, ptr %21, align 8, !tbaa !5
  %1608 = getelementptr inbounds %struct.ImGuiIO, ptr %1607, i32 0, i32 50
  %1609 = load i8, ptr %1608, align 1, !tbaa !149, !range !43, !noundef !44
  %1610 = trunc i8 %1609 to i1
  br i1 %1610, label %1611, label %1623

1611:                                             ; preds = %1606
  %1612 = load ptr, ptr %21, align 8, !tbaa !5
  %1613 = getelementptr inbounds %struct.ImGuiIO, ptr %1612, i32 0, i32 49
  %1614 = load i8, ptr %1613, align 2, !tbaa !148, !range !43, !noundef !44
  %1615 = trunc i8 %1614 to i1
  br i1 %1615, label %1623, label %1616

1616:                                             ; preds = %1611
  %1617 = load ptr, ptr %21, align 8, !tbaa !5
  %1618 = getelementptr inbounds %struct.ImGuiIO, ptr %1617, i32 0, i32 47
  %1619 = load i8, ptr %1618, align 4, !tbaa !114, !range !43, !noundef !44
  %1620 = trunc i8 %1619 to i1
  br i1 %1620, label %1623, label %1621

1621:                                             ; preds = %1616
  %1622 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1622, i32 noundef 6291460)
  br label %1623

1623:                                             ; preds = %1621, %1616, %1611, %1606, %1603
  br label %1624

1624:                                             ; preds = %1623, %1601
  br label %1625

1625:                                             ; preds = %1624, %1595
  %1626 = load ptr, ptr %43, align 8, !tbaa !5
  %1627 = load i32, ptr %77, align 4, !tbaa !9
  %1628 = or i32 2097161, %1627
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1626, i32 noundef %1628)
  br label %1870

1629:                                             ; preds = %1592, %1590
  %1630 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1630, label %1633, label %1631

1631:                                             ; preds = %1629
  %1632 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %1632, label %1633, label %1671

1633:                                             ; preds = %1631, %1629
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1634 = load i32, ptr %15, align 4, !tbaa !9
  %1635 = and i32 %1634, 2048
  %1636 = icmp ne i32 %1635, 0
  %1637 = zext i1 %1636 to i8
  store i8 %1637, ptr %90, align 1, !tbaa !45
  %1638 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1639 = trunc i8 %1638 to i1
  br i1 %1639, label %1640, label %1656

1640:                                             ; preds = %1633
  %1641 = load i8, ptr %90, align 1, !tbaa !45, !range !43, !noundef !44
  %1642 = trunc i8 %1641 to i1
  br i1 %1642, label %1643, label %1648

1643:                                             ; preds = %1640
  %1644 = load ptr, ptr %21, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.ImGuiIO, ptr %1644, i32 0, i32 47
  %1646 = load i8, ptr %1645, align 4, !tbaa !114, !range !43, !noundef !44
  %1647 = trunc i8 %1646 to i1
  br i1 %1647, label %1648, label %1656

1648:                                             ; preds = %1643, %1640
  %1649 = load i8, ptr %90, align 1, !tbaa !45, !range !43, !noundef !44
  %1650 = trunc i8 %1649 to i1
  br i1 %1650, label %1657, label %1651

1651:                                             ; preds = %1648
  %1652 = load ptr, ptr %21, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.ImGuiIO, ptr %1652, i32 0, i32 47
  %1654 = load i8, ptr %1653, align 4, !tbaa !114, !range !43, !noundef !44
  %1655 = trunc i8 %1654 to i1
  br i1 %1655, label %1656, label %1657

1656:                                             ; preds = %1651, %1643, %1633
  store i8 1, ptr %51, align 1, !tbaa !45
  store i8 1, ptr %61, align 1, !tbaa !45
  br label %1670

1657:                                             ; preds = %1651, %1648
  %1658 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1659 = trunc i8 %1658 to i1
  br i1 %1659, label %1669, label %1660

1660:                                             ; preds = %1657
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #14
  store i32 10, ptr %91, align 4, !tbaa !9
  %1661 = load i32, ptr %15, align 4, !tbaa !9
  %1662 = load ptr, ptr %16, align 8, !tbaa !5
  %1663 = load ptr, ptr %17, align 8, !tbaa !5
  %1664 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %91, i32 noundef %1661, ptr noundef %1662, ptr noundef %1663)
  br i1 %1664, label %1665, label %1668

1665:                                             ; preds = %1660
  %1666 = load ptr, ptr %43, align 8, !tbaa !5
  %1667 = load i32, ptr %91, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1666, i32 noundef %1667)
  br label %1668

1668:                                             ; preds = %1665, %1660
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #14
  br label %1669

1669:                                             ; preds = %1668, %1657
  br label %1670

1670:                                             ; preds = %1669, %1656
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #14
  br label %1869

1671:                                             ; preds = %1631
  %1672 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1672, label %1673, label %1674

1673:                                             ; preds = %1671
  store i8 1, ptr %76, align 1, !tbaa !45
  store i8 1, ptr %51, align 1, !tbaa !45
  br label %1868

1674:                                             ; preds = %1671
  %1675 = load i8, ptr %88, align 1, !tbaa !45, !range !43, !noundef !44
  %1676 = trunc i8 %1675 to i1
  br i1 %1676, label %1680, label %1677

1677:                                             ; preds = %1674
  %1678 = load i8, ptr %89, align 1, !tbaa !45, !range !43, !noundef !44
  %1679 = trunc i8 %1678 to i1
  br i1 %1679, label %1680, label %1687

1680:                                             ; preds = %1677, %1674
  %1681 = load ptr, ptr %43, align 8, !tbaa !5
  %1682 = load i8, ptr %88, align 1, !tbaa !45, !range !43, !noundef !44
  %1683 = trunc i8 %1682 to i1
  %1684 = zext i1 %1683 to i64
  %1685 = select i1 %1683, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1681, i32 noundef %1685)
  %1686 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1686)
  br label %1867

1687:                                             ; preds = %1677
  %1688 = load i8, ptr %84, align 1, !tbaa !45, !range !43, !noundef !44
  %1689 = trunc i8 %1688 to i1
  br i1 %1689, label %1690, label %1696

1690:                                             ; preds = %1687
  %1691 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1691, label %1692, label %1696

1692:                                             ; preds = %1690
  %1693 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1693)
  %1694 = load ptr, ptr %43, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1694, i32 0, i32 11
  store i8 1, ptr %1695, align 4, !tbaa !147
  br label %1866

1696:                                             ; preds = %1690, %1687
  %1697 = load i8, ptr %85, align 1, !tbaa !45, !range !43, !noundef !44
  %1698 = trunc i8 %1697 to i1
  br i1 %1698, label %1702, label %1699

1699:                                             ; preds = %1696
  %1700 = load i8, ptr %86, align 1, !tbaa !45, !range !43, !noundef !44
  %1701 = trunc i8 %1700 to i1
  br i1 %1701, label %1702, label %1796

1702:                                             ; preds = %1699, %1696
  %1703 = load ptr, ptr %21, align 8, !tbaa !5
  %1704 = getelementptr inbounds %struct.ImGuiIO, ptr %1703, i32 0, i32 39
  %1705 = load ptr, ptr %1704, align 8, !tbaa !159
  %1706 = icmp ne ptr %1705, null
  br i1 %1706, label %1707, label %1780

1707:                                             ; preds = %1702
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #14
  %1708 = load ptr, ptr %43, align 8, !tbaa !5
  %1709 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1708)
  br i1 %1709, label %1710, label %1720

1710:                                             ; preds = %1707
  %1711 = load ptr, ptr %43, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1711, i32 0, i32 9
  %1713 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1712, i32 0, i32 1
  %1714 = load i32, ptr %1713, align 4, !tbaa !160
  %1715 = load ptr, ptr %43, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1715, i32 0, i32 9
  %1717 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1716, i32 0, i32 2
  %1718 = load i32, ptr %1717, align 4, !tbaa !161
  %1719 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1714, i32 noundef %1718)
  br label %1721

1720:                                             ; preds = %1707
  br label %1721

1721:                                             ; preds = %1720, %1710
  %1722 = phi i32 [ %1719, %1710 ], [ 0, %1720 ]
  store i32 %1722, ptr %92, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #14
  %1723 = load ptr, ptr %43, align 8, !tbaa !5
  %1724 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1723)
  br i1 %1724, label %1725, label %1735

1725:                                             ; preds = %1721
  %1726 = load ptr, ptr %43, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1726, i32 0, i32 9
  %1728 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1727, i32 0, i32 1
  %1729 = load i32, ptr %1728, align 4, !tbaa !160
  %1730 = load ptr, ptr %43, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1730, i32 0, i32 9
  %1732 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1731, i32 0, i32 2
  %1733 = load i32, ptr %1732, align 4, !tbaa !161
  %1734 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1729, i32 noundef %1733)
  br label %1739

1735:                                             ; preds = %1721
  %1736 = load ptr, ptr %43, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1736, i32 0, i32 1
  %1738 = load i32, ptr %1737, align 4, !tbaa !109
  br label %1739

1739:                                             ; preds = %1735, %1725
  %1740 = phi i32 [ %1734, %1725 ], [ %1738, %1735 ]
  store i32 %1740, ptr %93, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #14
  %1741 = load ptr, ptr %43, align 8, !tbaa !5
  %1742 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1741, i32 0, i32 3
  %1743 = getelementptr inbounds %struct.ImVector.7, ptr %1742, i32 0, i32 2
  %1744 = load ptr, ptr %1743, align 8, !tbaa !108
  %1745 = load i32, ptr %92, align 4, !tbaa !9
  %1746 = sext i32 %1745 to i64
  %1747 = getelementptr inbounds i16, ptr %1744, i64 %1746
  %1748 = load ptr, ptr %43, align 8, !tbaa !5
  %1749 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1748, i32 0, i32 3
  %1750 = getelementptr inbounds %struct.ImVector.7, ptr %1749, i32 0, i32 2
  %1751 = load ptr, ptr %1750, align 8, !tbaa !108
  %1752 = load i32, ptr %93, align 4, !tbaa !9
  %1753 = sext i32 %1752 to i64
  %1754 = getelementptr inbounds i16, ptr %1751, i64 %1753
  %1755 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1747, ptr noundef %1754)
  %1756 = add nsw i32 %1755, 1
  store i32 %1756, ptr %94, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #14
  %1757 = load i32, ptr %94, align 4, !tbaa !9
  %1758 = sext i32 %1757 to i64
  %1759 = mul i64 %1758, 1
  %1760 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1759)
  store ptr %1760, ptr %95, align 8, !tbaa !5
  %1761 = load ptr, ptr %95, align 8, !tbaa !5
  %1762 = load i32, ptr %94, align 4, !tbaa !9
  %1763 = load ptr, ptr %43, align 8, !tbaa !5
  %1764 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1763, i32 0, i32 3
  %1765 = getelementptr inbounds %struct.ImVector.7, ptr %1764, i32 0, i32 2
  %1766 = load ptr, ptr %1765, align 8, !tbaa !108
  %1767 = load i32, ptr %92, align 4, !tbaa !9
  %1768 = sext i32 %1767 to i64
  %1769 = getelementptr inbounds i16, ptr %1766, i64 %1768
  %1770 = load ptr, ptr %43, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1770, i32 0, i32 3
  %1772 = getelementptr inbounds %struct.ImVector.7, ptr %1771, i32 0, i32 2
  %1773 = load ptr, ptr %1772, align 8, !tbaa !108
  %1774 = load i32, ptr %93, align 4, !tbaa !9
  %1775 = sext i32 %1774 to i64
  %1776 = getelementptr inbounds i16, ptr %1773, i64 %1775
  %1777 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1761, i32 noundef %1762, ptr noundef %1769, ptr noundef %1776)
  %1778 = load ptr, ptr %95, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1778)
  %1779 = load ptr, ptr %95, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1779)
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #14
  br label %1780

1780:                                             ; preds = %1739, %1702
  %1781 = load i8, ptr %85, align 1, !tbaa !45, !range !43, !noundef !44
  %1782 = trunc i8 %1781 to i1
  br i1 %1782, label %1783, label %1795

1783:                                             ; preds = %1780
  %1784 = load ptr, ptr %43, align 8, !tbaa !5
  %1785 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1784)
  br i1 %1785, label %1788, label %1786

1786:                                             ; preds = %1783
  %1787 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1787)
  br label %1788

1788:                                             ; preds = %1786, %1783
  %1789 = load ptr, ptr %43, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1789, i32 0, i32 11
  store i8 1, ptr %1790, align 4, !tbaa !147
  %1791 = load ptr, ptr %43, align 8, !tbaa !5
  %1792 = load ptr, ptr %43, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1792, i32 0, i32 9
  %1794 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1791, ptr noundef %1793)
  br label %1795

1795:                                             ; preds = %1788, %1780
  br label %1865

1796:                                             ; preds = %1699
  %1797 = load i8, ptr %87, align 1, !tbaa !45, !range !43, !noundef !44
  %1798 = trunc i8 %1797 to i1
  br i1 %1798, label %1799, label %1864

1799:                                             ; preds = %1796
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #14
  %1800 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %1800, ptr %96, align 8, !tbaa !5
  %1801 = load ptr, ptr %96, align 8, !tbaa !5
  %1802 = icmp ne ptr %1801, null
  br i1 %1802, label %1803, label %1863

1803:                                             ; preds = %1799
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #14
  %1804 = load ptr, ptr %96, align 8, !tbaa !5
  %1805 = call i64 @strlen(ptr noundef %1804) #16
  %1806 = trunc i64 %1805 to i32
  store i32 %1806, ptr %97, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #14
  %1807 = load i32, ptr %97, align 4, !tbaa !9
  %1808 = add nsw i32 %1807, 1
  %1809 = sext i32 %1808 to i64
  %1810 = mul i64 %1809, 2
  %1811 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1810)
  store ptr %1811, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #14
  store i32 0, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #14
  %1812 = load ptr, ptr %96, align 8, !tbaa !5
  store ptr %1812, ptr %100, align 8, !tbaa !5
  br label %1813

1813:                                             ; preds = %1843, %1841, %1803
  %1814 = load ptr, ptr %100, align 8, !tbaa !5
  %1815 = load i8, ptr %1814, align 1, !tbaa !120
  %1816 = icmp ne i8 %1815, 0
  br i1 %1816, label %1818, label %1817

1817:                                             ; preds = %1813
  store i32 5, ptr %19, align 4
  br label %1844

1818:                                             ; preds = %1813
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #14
  %1819 = load ptr, ptr %100, align 8, !tbaa !5
  %1820 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %101, ptr noundef %1819, ptr noundef null)
  %1821 = load ptr, ptr %100, align 8, !tbaa !5
  %1822 = sext i32 %1820 to i64
  %1823 = getelementptr inbounds i8, ptr %1821, i64 %1822
  store ptr %1823, ptr %100, align 8, !tbaa !5
  %1824 = load i32, ptr %101, align 4, !tbaa !9
  %1825 = icmp eq i32 %1824, 0
  br i1 %1825, label %1826, label %1827

1826:                                             ; preds = %1818
  store i32 5, ptr %19, align 4
  br label %1841

1827:                                             ; preds = %1818
  %1828 = load i32, ptr %15, align 4, !tbaa !9
  %1829 = load ptr, ptr %16, align 8, !tbaa !5
  %1830 = load ptr, ptr %17, align 8, !tbaa !5
  %1831 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %101, i32 noundef %1828, ptr noundef %1829, ptr noundef %1830)
  br i1 %1831, label %1833, label %1832

1832:                                             ; preds = %1827
  store i32 6, ptr %19, align 4
  br label %1841, !llvm.loop !162

1833:                                             ; preds = %1827
  %1834 = load i32, ptr %101, align 4, !tbaa !9
  %1835 = trunc i32 %1834 to i16
  %1836 = load ptr, ptr %98, align 8, !tbaa !5
  %1837 = load i32, ptr %99, align 4, !tbaa !9
  %1838 = add nsw i32 %1837, 1
  store i32 %1838, ptr %99, align 4, !tbaa !9
  %1839 = sext i32 %1837 to i64
  %1840 = getelementptr inbounds i16, ptr %1836, i64 %1839
  store i16 %1835, ptr %1840, align 2, !tbaa !151
  store i32 0, ptr %19, align 4
  br label %1841

1841:                                             ; preds = %1833, %1832, %1826
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #14
  %1842 = load i32, ptr %19, align 4
  switch i32 %1842, label %1844 [
    i32 0, label %1843
    i32 6, label %1813
  ]

1843:                                             ; preds = %1841
  br label %1813, !llvm.loop !162

1844:                                             ; preds = %1841, %1817
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #14
  br label %1845

1845:                                             ; preds = %1844
  %1846 = load ptr, ptr %98, align 8, !tbaa !5
  %1847 = load i32, ptr %99, align 4, !tbaa !9
  %1848 = sext i32 %1847 to i64
  %1849 = getelementptr inbounds i16, ptr %1846, i64 %1848
  store i16 0, ptr %1849, align 2, !tbaa !151
  %1850 = load i32, ptr %99, align 4, !tbaa !9
  %1851 = icmp sgt i32 %1850, 0
  br i1 %1851, label %1852, label %1861

1852:                                             ; preds = %1845
  %1853 = load ptr, ptr %43, align 8, !tbaa !5
  %1854 = load ptr, ptr %43, align 8, !tbaa !5
  %1855 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1854, i32 0, i32 9
  %1856 = load ptr, ptr %98, align 8, !tbaa !5
  %1857 = load i32, ptr %99, align 4, !tbaa !9
  %1858 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1853, ptr noundef %1855, ptr noundef %1856, i32 noundef %1857)
  %1859 = load ptr, ptr %43, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1859, i32 0, i32 11
  store i8 1, ptr %1860, align 4, !tbaa !147
  br label %1861

1861:                                             ; preds = %1852, %1845
  %1862 = load ptr, ptr %98, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1862)
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #14
  br label %1863

1863:                                             ; preds = %1861, %1799
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #14
  br label %1864

1864:                                             ; preds = %1863, %1796
  br label %1865

1865:                                             ; preds = %1864, %1795
  br label %1866

1866:                                             ; preds = %1865, %1692
  br label %1867

1867:                                             ; preds = %1866, %1680
  br label %1868

1868:                                             ; preds = %1867, %1673
  br label %1869

1869:                                             ; preds = %1868, %1670
  br label %1870

1870:                                             ; preds = %1869, %1625
  br label %1871

1871:                                             ; preds = %1870, %1586
  br label %1872

1872:                                             ; preds = %1871, %1579
  br label %1873

1873:                                             ; preds = %1872, %1563
  br label %1874

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

1875:                                             ; preds = %1874, %1517
  br label %1876

1876:                                             ; preds = %1875, %1484
  br label %1877

1877:                                             ; preds = %1876, %1468
  %1878 = load ptr, ptr %43, align 8, !tbaa !5
  %1879 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1878)
  br i1 %1879, label %1880, label %1883

1880:                                             ; preds = %1877
  %1881 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %1882 = trunc i8 %1881 to i1
  br label %1883

1883:                                             ; preds = %1880, %1877
  %1884 = phi i1 [ false, %1877 ], [ %1882, %1880 ]
  %1885 = zext i1 %1884 to i32
  %1886 = load i8, ptr %59, align 1, !tbaa !45, !range !43, !noundef !44
  %1887 = trunc i8 %1886 to i1
  %1888 = zext i1 %1887 to i32
  %1889 = or i32 %1888, %1885
  %1890 = icmp ne i32 %1889, 0
  %1891 = zext i1 %1890 to i8
  store i8 %1891, ptr %59, align 1, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #14
  br label %1892

1892:                                             ; preds = %1883, %1254, %1249, %1243
  %1893 = load ptr, ptr %20, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.ImGuiContext, ptr %1893, i32 0, i32 47
  %1895 = load i32, ptr %1894, align 8, !tbaa !101
  %1896 = load i32, ptr %29, align 4, !tbaa !9
  %1897 = icmp eq i32 %1895, %1896
  br i1 %1897, label %1898, label %2348

1898:                                             ; preds = %1892
  %1899 = load ptr, ptr %43, align 8, !tbaa !5
  %1900 = icmp ne ptr %1899, null
  br i1 %1900, label %1901, label %1902

1901:                                             ; preds = %1898
  br label %1904

1902:                                             ; preds = %1898
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.1, i32 noundef 4157, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1903:                                             ; No predecessors!
  br label %1904

1904:                                             ; preds = %1903, %1901
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #14
  store ptr null, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #14
  store i32 0, ptr %103, align 4, !tbaa !9
  %1905 = load i8, ptr %76, align 1, !tbaa !45, !range !43, !noundef !44
  %1906 = trunc i8 %1905 to i1
  br i1 %1906, label %1907, label %1972

1907:                                             ; preds = %1904
  %1908 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1909 = trunc i8 %1908 to i1
  br i1 %1909, label %1971, label %1910

1910:                                             ; preds = %1907
  %1911 = load ptr, ptr %12, align 8, !tbaa !5
  %1912 = load ptr, ptr %43, align 8, !tbaa !5
  %1913 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1912, i32 0, i32 5
  %1914 = getelementptr inbounds %struct.ImVector.24, ptr %1913, i32 0, i32 2
  %1915 = load ptr, ptr %1914, align 8, !tbaa !106
  %1916 = call i32 @strcmp(ptr noundef %1911, ptr noundef %1915) #16
  %1917 = icmp ne i32 %1916, 0
  br i1 %1917, label %1918, label %1971

1918:                                             ; preds = %1910
  %1919 = load ptr, ptr %43, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1919, i32 0, i32 5
  %1921 = getelementptr inbounds %struct.ImVector.24, ptr %1920, i32 0, i32 2
  %1922 = load ptr, ptr %1921, align 8, !tbaa !106
  store ptr %1922, ptr %102, align 8, !tbaa !5
  %1923 = load ptr, ptr %43, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1923, i32 0, i32 5
  %1925 = getelementptr inbounds %struct.ImVector.24, ptr %1924, i32 0, i32 0
  %1926 = load i32, ptr %1925, align 8, !tbaa !163
  %1927 = sub nsw i32 %1926, 1
  store i32 %1927, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104)
  %1928 = load i32, ptr %103, align 4, !tbaa !9
  %1929 = icmp sgt i32 %1928, 0
  br i1 %1929, label %1930, label %1955

1930:                                             ; preds = %1918
  %1931 = load ptr, ptr %102, align 8, !tbaa !5
  %1932 = load ptr, ptr %102, align 8, !tbaa !5
  %1933 = load i32, ptr %103, align 4, !tbaa !9
  %1934 = sext i32 %1933 to i64
  %1935 = getelementptr inbounds i8, ptr %1932, i64 %1934
  %1936 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1931, ptr noundef %1935)
          to label %1937 unwind label %1951

1937:                                             ; preds = %1930
  %1938 = add nsw i32 %1936, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %104, i32 noundef %1938)
          to label %1939 unwind label %1951

1939:                                             ; preds = %1937
  %1940 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 2
  %1941 = load ptr, ptr %1940, align 8, !tbaa !164
  %1942 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 0
  %1943 = load i32, ptr %1942, align 8, !tbaa !165
  %1944 = load ptr, ptr %102, align 8, !tbaa !5
  %1945 = load ptr, ptr %102, align 8, !tbaa !5
  %1946 = load i32, ptr %103, align 4, !tbaa !9
  %1947 = sext i32 %1946 to i64
  %1948 = getelementptr inbounds i8, ptr %1945, i64 %1947
  %1949 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1941, i32 noundef %1943, ptr noundef %1944, ptr noundef %1948, ptr noundef null)
          to label %1950 unwind label %1951

1950:                                             ; preds = %1939
  br label %1955

1951:                                             ; preds = %1968, %1939, %1937, %1930
  %1952 = landingpad { ptr, i32 }
          cleanup
  %1953 = extractvalue { ptr, i32 } %1952, 0
  store ptr %1953, ptr %105, align 8
  %1954 = extractvalue { ptr, i32 } %1952, 1
  store i32 %1954, ptr %106, align 4
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #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 %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #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 1, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #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 %3130

1955:                                             ; preds = %1950, %1918
  %1956 = load ptr, ptr %43, align 8, !tbaa !5
  %1957 = load ptr, ptr %43, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1957, i32 0, i32 9
  %1959 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 2
  %1960 = load ptr, ptr %1959, align 8, !tbaa !164
  %1961 = load i32, ptr %103, align 4, !tbaa !9
  %1962 = icmp sgt i32 %1961, 0
  br i1 %1962, label %1963, label %1967

1963:                                             ; preds = %1955
  %1964 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 0
  %1965 = load i32, ptr %1964, align 8, !tbaa !165
  %1966 = sub nsw i32 %1965, 1
  br label %1968

1967:                                             ; preds = %1955
  br label %1968

1968:                                             ; preds = %1967, %1963
  %1969 = phi i32 [ %1966, %1963 ], [ 0, %1967 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1956, ptr noundef %1958, ptr noundef %1960, i32 noundef %1969)
          to label %1970 unwind label %1951

1970:                                             ; preds = %1968
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #14
  br label %1971

1971:                                             ; preds = %1970, %1910, %1907
  br label %1972

1972:                                             ; preds = %1971, %1904
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #14
  %1973 = load i8, ptr %76, align 1, !tbaa !45, !range !43, !noundef !44
  %1974 = trunc i8 %1973 to i1
  br i1 %1974, label %1975, label %1984

1975:                                             ; preds = %1972
  %1976 = load i8, ptr %61, align 1, !tbaa !45, !range !43, !noundef !44
  %1977 = trunc i8 %1976 to i1
  br i1 %1977, label %1978, label %1982

1978:                                             ; preds = %1975
  %1979 = load i32, ptr %15, align 4, !tbaa !9
  %1980 = and i32 %1979, 32
  %1981 = icmp ne i32 %1980, 0
  br label %1982

1982:                                             ; preds = %1978, %1975
  %1983 = phi i1 [ false, %1975 ], [ %1981, %1978 ]
  br label %1984

1984:                                             ; preds = %1982, %1972
  %1985 = phi i1 [ true, %1972 ], [ %1983, %1982 ]
  %1986 = zext i1 %1985 to i8
  store i8 %1986, ptr %107, align 1, !tbaa !45
  %1987 = load i8, ptr %107, align 1, !tbaa !45, !range !43, !noundef !44
  %1988 = trunc i8 %1987 to i1
  br i1 %1988, label %1989, label %2288

1989:                                             ; preds = %1984
  %1990 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %1991 = trunc i8 %1990 to i1
  br i1 %1991, label %2016, label %1992

1992:                                             ; preds = %1989
  %1993 = load ptr, ptr %43, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1993, i32 0, i32 6
  store i8 1, ptr %1994, align 8, !tbaa !107
  %1995 = load ptr, ptr %43, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1995, i32 0, i32 4
  %1997 = load ptr, ptr %43, align 8, !tbaa !5
  %1998 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1997, i32 0, i32 3
  %1999 = getelementptr inbounds %struct.ImVector.7, ptr %1998, i32 0, i32 0
  %2000 = load i32, ptr %1999, align 8, !tbaa !118
  %2001 = mul nsw i32 %2000, 4
  %2002 = add nsw i32 %2001, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1996, i32 noundef %2002)
  %2003 = load ptr, ptr %43, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2003, i32 0, i32 4
  %2005 = getelementptr inbounds %struct.ImVector.24, ptr %2004, i32 0, i32 2
  %2006 = load ptr, ptr %2005, align 8, !tbaa !119
  %2007 = load ptr, ptr %43, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2007, i32 0, i32 4
  %2009 = getelementptr inbounds %struct.ImVector.24, ptr %2008, i32 0, i32 0
  %2010 = load i32, ptr %2009, align 8, !tbaa !166
  %2011 = load ptr, ptr %43, align 8, !tbaa !5
  %2012 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2011, i32 0, i32 3
  %2013 = getelementptr inbounds %struct.ImVector.7, ptr %2012, i32 0, i32 2
  %2014 = load ptr, ptr %2013, align 8, !tbaa !108
  %2015 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2006, i32 noundef %2010, ptr noundef %2014, ptr noundef null)
  br label %2016

2016:                                             ; preds = %1992, %1989
  %2017 = load i32, ptr %15, align 4, !tbaa !9
  %2018 = and i32 %2017, 524736
  %2019 = icmp ne i32 %2018, 0
  br i1 %2019, label %2020, label %2268

2020:                                             ; preds = %2016
  %2021 = load ptr, ptr %16, align 8, !tbaa !5
  %2022 = icmp ne ptr %2021, null
  br i1 %2022, label %2023, label %2024

2023:                                             ; preds = %2020
  br label %2026

2024:                                             ; preds = %2020
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 4198, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2025:                                             ; No predecessors!
  br label %2026

2026:                                             ; preds = %2025, %2023
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #14
  store i32 0, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #14
  store i32 22, ptr %109, align 4, !tbaa !9
  %2027 = load i32, ptr %15, align 4, !tbaa !9
  %2028 = and i32 %2027, 64
  %2029 = icmp ne i32 %2028, 0
  br i1 %2029, label %2030, label %2033

2030:                                             ; preds = %2026
  %2031 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %2031, label %2032, label %2033

2032:                                             ; preds = %2030
  store i32 64, ptr %108, align 4, !tbaa !9
  store i32 0, ptr %109, align 4, !tbaa !9
  br label %2066

2033:                                             ; preds = %2030, %2026
  %2034 = load i32, ptr %15, align 4, !tbaa !9
  %2035 = and i32 %2034, 128
  %2036 = icmp ne i32 %2035, 0
  br i1 %2036, label %2037, label %2040

2037:                                             ; preds = %2033
  %2038 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %2038, label %2039, label %2040

2039:                                             ; preds = %2037
  store i32 128, ptr %108, align 4, !tbaa !9
  store i32 3, ptr %109, align 4, !tbaa !9
  br label %2065

2040:                                             ; preds = %2037, %2033
  %2041 = load i32, ptr %15, align 4, !tbaa !9
  %2042 = and i32 %2041, 128
  %2043 = icmp ne i32 %2042, 0
  br i1 %2043, label %2044, label %2047

2044:                                             ; preds = %2040
  %2045 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %2045, label %2046, label %2047

2046:                                             ; preds = %2044
  store i32 128, ptr %108, align 4, !tbaa !9
  store i32 4, ptr %109, align 4, !tbaa !9
  br label %2064

2047:                                             ; preds = %2044, %2040
  %2048 = load i32, ptr %15, align 4, !tbaa !9
  %2049 = and i32 %2048, 524288
  %2050 = icmp ne i32 %2049, 0
  br i1 %2050, label %2051, label %2057

2051:                                             ; preds = %2047
  %2052 = load ptr, ptr %43, align 8, !tbaa !5
  %2053 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2052, i32 0, i32 13
  %2054 = load i8, ptr %2053, align 2, !tbaa !131, !range !43, !noundef !44
  %2055 = trunc i8 %2054 to i1
  br i1 %2055, label %2056, label %2057

2056:                                             ; preds = %2051
  store i32 524288, ptr %108, align 4, !tbaa !9
  br label %2063

2057:                                             ; preds = %2051, %2047
  %2058 = load i32, ptr %15, align 4, !tbaa !9
  %2059 = and i32 %2058, 256
  %2060 = icmp ne i32 %2059, 0
  br i1 %2060, label %2061, label %2062

2061:                                             ; preds = %2057
  store i32 256, ptr %108, align 4, !tbaa !9
  br label %2062

2062:                                             ; preds = %2061, %2057
  br label %2063

2063:                                             ; preds = %2062, %2056
  br label %2064

2064:                                             ; preds = %2063, %2046
  br label %2065

2065:                                             ; preds = %2064, %2039
  br label %2066

2066:                                             ; preds = %2065, %2032
  %2067 = load i32, ptr %108, align 4, !tbaa !9
  %2068 = icmp ne i32 %2067, 0
  br i1 %2068, label %2069, label %2267

2069:                                             ; preds = %2066
  call void @llvm.lifetime.start.p0(i64 56, ptr %110) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %110)
  call void @llvm.memset.p0.i64(ptr align 8 %110, i8 0, i64 56, i1 false)
  %2070 = load i32, ptr %108, align 4, !tbaa !9
  %2071 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 0
  store i32 %2070, ptr %2071, align 8, !tbaa !167
  %2072 = load i32, ptr %15, align 4, !tbaa !9
  %2073 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 1
  store i32 %2072, ptr %2073, align 4, !tbaa !169
  %2074 = load ptr, ptr %17, align 8, !tbaa !5
  %2075 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 2
  store ptr %2074, ptr %2075, align 8, !tbaa !170
  %2076 = load i32, ptr %109, align 4, !tbaa !9
  %2077 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 4
  store i32 %2076, ptr %2077, align 4, !tbaa !171
  %2078 = load ptr, ptr %43, align 8, !tbaa !5
  %2079 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2078, i32 0, i32 4
  %2080 = getelementptr inbounds %struct.ImVector.24, ptr %2079, i32 0, i32 2
  %2081 = load ptr, ptr %2080, align 8, !tbaa !119
  %2082 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  store ptr %2081, ptr %2082, align 8, !tbaa !172
  %2083 = load ptr, ptr %43, align 8, !tbaa !5
  %2084 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2083, i32 0, i32 2
  %2085 = load i32, ptr %2084, align 8, !tbaa !110
  %2086 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  store i32 %2085, ptr %2086, align 8, !tbaa !173
  %2087 = load ptr, ptr %43, align 8, !tbaa !5
  %2088 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2087, i32 0, i32 7
  %2089 = load i32, ptr %2088, align 4, !tbaa !132
  %2090 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 7
  store i32 %2089, ptr %2090, align 4, !tbaa !174
  %2091 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 8
  store i8 0, ptr %2091, align 8, !tbaa !175
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #14
  %2092 = load ptr, ptr %43, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2092, i32 0, i32 3
  %2094 = getelementptr inbounds %struct.ImVector.7, ptr %2093, i32 0, i32 2
  %2095 = load ptr, ptr %2094, align 8, !tbaa !108
  store ptr %2095, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #14
  %2096 = load ptr, ptr %111, align 8, !tbaa !5
  %2097 = load ptr, ptr %111, align 8, !tbaa !5
  %2098 = load ptr, ptr %43, align 8, !tbaa !5
  %2099 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2098, i32 0, i32 9
  %2100 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2099, i32 0, i32 0
  %2101 = load i32, ptr %2100, align 4, !tbaa !176
  %2102 = sext i32 %2101 to i64
  %2103 = getelementptr inbounds i16, ptr %2097, i64 %2102
  %2104 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2096, ptr noundef %2103)
  %2105 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  store i32 %2104, ptr %2105, align 4, !tbaa !177
  store i32 %2104, ptr %112, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #14
  %2106 = load ptr, ptr %111, align 8, !tbaa !5
  %2107 = load ptr, ptr %111, align 8, !tbaa !5
  %2108 = load ptr, ptr %43, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2108, i32 0, i32 9
  %2110 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2109, i32 0, i32 1
  %2111 = load i32, ptr %2110, align 4, !tbaa !160
  %2112 = sext i32 %2111 to i64
  %2113 = getelementptr inbounds i16, ptr %2107, i64 %2112
  %2114 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2106, ptr noundef %2113)
  %2115 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  store i32 %2114, ptr %2115, align 8, !tbaa !178
  store i32 %2114, ptr %113, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #14
  %2116 = load ptr, ptr %111, align 8, !tbaa !5
  %2117 = load ptr, ptr %111, align 8, !tbaa !5
  %2118 = load ptr, ptr %43, align 8, !tbaa !5
  %2119 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2118, i32 0, i32 9
  %2120 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2119, i32 0, i32 2
  %2121 = load i32, ptr %2120, align 4, !tbaa !161
  %2122 = sext i32 %2121 to i64
  %2123 = getelementptr inbounds i16, ptr %2117, i64 %2122
  %2124 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2116, ptr noundef %2123)
  %2125 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  store i32 %2124, ptr %2125, align 4, !tbaa !179
  store i32 %2124, ptr %114, align 4, !tbaa !9
  %2126 = load ptr, ptr %16, align 8, !tbaa !5
  %2127 = call noundef i32 %2126(ptr noundef %110)
  %2128 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2129 = load ptr, ptr %2128, align 8, !tbaa !172
  %2130 = load ptr, ptr %43, align 8, !tbaa !5
  %2131 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2130, i32 0, i32 4
  %2132 = getelementptr inbounds %struct.ImVector.24, ptr %2131, i32 0, i32 2
  %2133 = load ptr, ptr %2132, align 8, !tbaa !119
  %2134 = icmp eq ptr %2129, %2133
  br i1 %2134, label %2135, label %2136

2135:                                             ; preds = %2069
  br label %2138

2136:                                             ; preds = %2069
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.1, i32 noundef 4251, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2137:                                             ; No predecessors!
  br label %2138

2138:                                             ; preds = %2137, %2135
  %2139 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 7
  %2140 = load i32, ptr %2139, align 4, !tbaa !174
  %2141 = load ptr, ptr %43, align 8, !tbaa !5
  %2142 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2141, i32 0, i32 7
  %2143 = load i32, ptr %2142, align 4, !tbaa !132
  %2144 = icmp eq i32 %2140, %2143
  br i1 %2144, label %2145, label %2146

2145:                                             ; preds = %2138
  br label %2148

2146:                                             ; preds = %2138
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.1, i32 noundef 4252, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2147:                                             ; No predecessors!
  br label %2148

2148:                                             ; preds = %2147, %2145
  %2149 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 1
  %2150 = load i32, ptr %2149, align 4, !tbaa !169
  %2151 = load i32, ptr %15, align 4, !tbaa !9
  %2152 = icmp eq i32 %2150, %2151
  br i1 %2152, label %2153, label %2154

2153:                                             ; preds = %2148
  br label %2156

2154:                                             ; preds = %2148
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.1, i32 noundef 4253, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2155:                                             ; No predecessors!
  br label %2156

2156:                                             ; preds = %2155, %2153
  %2157 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  %2158 = load i32, ptr %2157, align 4, !tbaa !177
  %2159 = load i32, ptr %112, align 4, !tbaa !9
  %2160 = icmp ne i32 %2158, %2159
  br i1 %2160, label %2161, label %2176

2161:                                             ; preds = %2156
  %2162 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2163 = load ptr, ptr %2162, align 8, !tbaa !172
  %2164 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2165 = load ptr, ptr %2164, align 8, !tbaa !172
  %2166 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  %2167 = load i32, ptr %2166, align 4, !tbaa !177
  %2168 = sext i32 %2167 to i64
  %2169 = getelementptr inbounds i8, ptr %2165, i64 %2168
  %2170 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2163, ptr noundef %2169)
  %2171 = load ptr, ptr %43, align 8, !tbaa !5
  %2172 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2171, i32 0, i32 9
  %2173 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2172, i32 0, i32 0
  store i32 %2170, ptr %2173, align 4, !tbaa !176
  %2174 = load ptr, ptr %43, align 8, !tbaa !5
  %2175 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2174, i32 0, i32 11
  store i8 1, ptr %2175, align 4, !tbaa !147
  br label %2176

2176:                                             ; preds = %2161, %2156
  %2177 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  %2178 = load i32, ptr %2177, align 8, !tbaa !178
  %2179 = load i32, ptr %113, align 4, !tbaa !9
  %2180 = icmp ne i32 %2178, %2179
  br i1 %2180, label %2181, label %2194

2181:                                             ; preds = %2176
  %2182 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2183 = load ptr, ptr %2182, align 8, !tbaa !172
  %2184 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2185 = load ptr, ptr %2184, align 8, !tbaa !172
  %2186 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  %2187 = load i32, ptr %2186, align 8, !tbaa !178
  %2188 = sext i32 %2187 to i64
  %2189 = getelementptr inbounds i8, ptr %2185, i64 %2188
  %2190 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2183, ptr noundef %2189)
  %2191 = load ptr, ptr %43, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2191, i32 0, i32 9
  %2193 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2192, i32 0, i32 1
  store i32 %2190, ptr %2193, align 4, !tbaa !160
  br label %2194

2194:                                             ; preds = %2181, %2176
  %2195 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  %2196 = load i32, ptr %2195, align 4, !tbaa !179
  %2197 = load i32, ptr %114, align 4, !tbaa !9
  %2198 = icmp ne i32 %2196, %2197
  br i1 %2198, label %2199, label %2212

2199:                                             ; preds = %2194
  %2200 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2201 = load ptr, ptr %2200, align 8, !tbaa !172
  %2202 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2203 = load ptr, ptr %2202, align 8, !tbaa !172
  %2204 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  %2205 = load i32, ptr %2204, align 4, !tbaa !179
  %2206 = sext i32 %2205 to i64
  %2207 = getelementptr inbounds i8, ptr %2203, i64 %2206
  %2208 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2201, ptr noundef %2207)
  %2209 = load ptr, ptr %43, align 8, !tbaa !5
  %2210 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2209, i32 0, i32 9
  %2211 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2210, i32 0, i32 2
  store i32 %2208, ptr %2211, align 4, !tbaa !161
  br label %2212

2212:                                             ; preds = %2199, %2194
  %2213 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 8
  %2214 = load i8, ptr %2213, align 8, !tbaa !175, !range !43, !noundef !44
  %2215 = trunc i8 %2214 to i1
  br i1 %2215, label %2216, label %2266

2216:                                             ; preds = %2212
  %2217 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2218 = load i32, ptr %2217, align 8, !tbaa !173
  %2219 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2220 = load ptr, ptr %2219, align 8, !tbaa !172
  %2221 = call i64 @strlen(ptr noundef %2220) #16
  %2222 = trunc i64 %2221 to i32
  %2223 = icmp eq i32 %2218, %2222
  br i1 %2223, label %2224, label %2225

2224:                                             ; preds = %2216
  br label %2227

2225:                                             ; preds = %2216
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.1, i32 noundef 4259, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2226:                                             ; No predecessors!
  br label %2227

2227:                                             ; preds = %2226, %2224
  %2228 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2229 = load i32, ptr %2228, align 8, !tbaa !173
  %2230 = load i32, ptr %67, align 4, !tbaa !9
  %2231 = icmp sgt i32 %2229, %2230
  br i1 %2231, label %2232, label %2247

2232:                                             ; preds = %2227
  %2233 = load i8, ptr %28, align 1, !tbaa !45, !range !43, !noundef !44
  %2234 = trunc i8 %2233 to i1
  br i1 %2234, label %2235, label %2247

2235:                                             ; preds = %2232
  %2236 = load ptr, ptr %43, align 8, !tbaa !5
  %2237 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2236, i32 0, i32 3
  %2238 = load ptr, ptr %43, align 8, !tbaa !5
  %2239 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2238, i32 0, i32 3
  %2240 = getelementptr inbounds %struct.ImVector.7, ptr %2239, i32 0, i32 0
  %2241 = load i32, ptr %2240, align 8, !tbaa !118
  %2242 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2243 = load i32, ptr %2242, align 8, !tbaa !173
  %2244 = load i32, ptr %67, align 4, !tbaa !9
  %2245 = sub nsw i32 %2243, %2244
  %2246 = add nsw i32 %2241, %2245
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2237, i32 noundef %2246)
  br label %2247

2247:                                             ; preds = %2235, %2232, %2227
  %2248 = load ptr, ptr %43, align 8, !tbaa !5
  %2249 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2248, i32 0, i32 3
  %2250 = getelementptr inbounds %struct.ImVector.7, ptr %2249, i32 0, i32 2
  %2251 = load ptr, ptr %2250, align 8, !tbaa !108
  %2252 = load ptr, ptr %43, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2252, i32 0, i32 3
  %2254 = getelementptr inbounds %struct.ImVector.7, ptr %2253, i32 0, i32 0
  %2255 = load i32, ptr %2254, align 8, !tbaa !118
  %2256 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2257 = load ptr, ptr %2256, align 8, !tbaa !172
  %2258 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2251, i32 noundef %2255, ptr noundef %2257, ptr noundef null, ptr noundef null)
  %2259 = load ptr, ptr %43, align 8, !tbaa !5
  %2260 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2259, i32 0, i32 1
  store i32 %2258, ptr %2260, align 4, !tbaa !109
  %2261 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2262 = load i32, ptr %2261, align 8, !tbaa !173
  %2263 = load ptr, ptr %43, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2263, i32 0, i32 2
  store i32 %2262, ptr %2264, align 8, !tbaa !110
  %2265 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %2265)
  br label %2266

2266:                                             ; preds = %2247, %2212
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #14
  call void @llvm.lifetime.end.p0(i64 56, ptr %110) #14
  br label %2267

2267:                                             ; preds = %2266, %2066
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #14
  br label %2268

2268:                                             ; preds = %2267, %2016
  %2269 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %2270 = trunc i8 %2269 to i1
  br i1 %2270, label %2287, label %2271

2271:                                             ; preds = %2268
  %2272 = load ptr, ptr %43, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2272, i32 0, i32 4
  %2274 = getelementptr inbounds %struct.ImVector.24, ptr %2273, i32 0, i32 2
  %2275 = load ptr, ptr %2274, align 8, !tbaa !119
  %2276 = load ptr, ptr %12, align 8, !tbaa !5
  %2277 = call i32 @strcmp(ptr noundef %2275, ptr noundef %2276) #16
  %2278 = icmp ne i32 %2277, 0
  br i1 %2278, label %2279, label %2287

2279:                                             ; preds = %2271
  %2280 = load ptr, ptr %43, align 8, !tbaa !5
  %2281 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2280, i32 0, i32 4
  %2282 = getelementptr inbounds %struct.ImVector.24, ptr %2281, i32 0, i32 2
  %2283 = load ptr, ptr %2282, align 8, !tbaa !119
  store ptr %2283, ptr %102, align 8, !tbaa !5
  %2284 = load ptr, ptr %43, align 8, !tbaa !5
  %2285 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2284, i32 0, i32 2
  %2286 = load i32, ptr %2285, align 8, !tbaa !110
  store i32 %2286, ptr %103, align 4, !tbaa !9
  br label %2287

2287:                                             ; preds = %2279, %2271, %2268
  br label %2288

2288:                                             ; preds = %2287, %1984
  %2289 = load ptr, ptr %102, align 8, !tbaa !5
  %2290 = icmp ne ptr %2289, null
  br i1 %2290, label %2291, label %2341

2291:                                             ; preds = %2288
  %2292 = load i32, ptr %103, align 4, !tbaa !9
  %2293 = icmp sge i32 %2292, 0
  br i1 %2293, label %2294, label %2295

2294:                                             ; preds = %2291
  br label %2297

2295:                                             ; preds = %2291
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str.1, i32 noundef 4283, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2296:                                             ; No predecessors!
  br label %2297

2297:                                             ; preds = %2296, %2294
  %2298 = load i8, ptr %28, align 1, !tbaa !45, !range !43, !noundef !44
  %2299 = trunc i8 %2298 to i1
  br i1 %2299, label %2300, label %2333

2300:                                             ; preds = %2297
  call void @llvm.lifetime.start.p0(i64 56, ptr %115) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %115)
  %2301 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 0
  store i32 262144, ptr %2301, align 8, !tbaa !167
  %2302 = load i32, ptr %15, align 4, !tbaa !9
  %2303 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 1
  store i32 %2302, ptr %2303, align 4, !tbaa !169
  %2304 = load ptr, ptr %12, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 5
  store ptr %2304, ptr %2305, align 8, !tbaa !172
  %2306 = load i32, ptr %103, align 4, !tbaa !9
  %2307 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 6
  store i32 %2306, ptr %2307, align 8, !tbaa !173
  %2308 = load i32, ptr %13, align 4, !tbaa !9
  %2309 = load i32, ptr %103, align 4, !tbaa !9
  %2310 = add nsw i32 %2309, 1
  %2311 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2308, i32 noundef %2310)
  %2312 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 7
  store i32 %2311, ptr %2312, align 4, !tbaa !174
  %2313 = load ptr, ptr %17, align 8, !tbaa !5
  %2314 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 2
  store ptr %2313, ptr %2314, align 8, !tbaa !170
  %2315 = load ptr, ptr %16, align 8, !tbaa !5
  %2316 = call noundef i32 %2315(ptr noundef %115)
  %2317 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 5
  %2318 = load ptr, ptr %2317, align 8, !tbaa !172
  store ptr %2318, ptr %12, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 7
  %2320 = load i32, ptr %2319, align 4, !tbaa !174
  store i32 %2320, ptr %13, align 4, !tbaa !9
  %2321 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 6
  %2322 = load i32, ptr %2321, align 8, !tbaa !173
  %2323 = load i32, ptr %13, align 4, !tbaa !9
  %2324 = sub nsw i32 %2323, 1
  %2325 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2322, i32 noundef %2324)
  store i32 %2325, ptr %103, align 4, !tbaa !9
  %2326 = load i32, ptr %103, align 4, !tbaa !9
  %2327 = load i32, ptr %13, align 4, !tbaa !9
  %2328 = icmp sle i32 %2326, %2327
  br i1 %2328, label %2329, label %2330

2329:                                             ; preds = %2300
  br label %2332

2330:                                             ; preds = %2300
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.1, i32 noundef 4297, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2331:                                             ; No predecessors!
  br label %2332

2332:                                             ; preds = %2331, %2329
  call void @llvm.lifetime.end.p0(i64 56, ptr %115) #14
  br label %2333

2333:                                             ; preds = %2332, %2297
  %2334 = load ptr, ptr %12, align 8, !tbaa !5
  %2335 = load ptr, ptr %102, align 8, !tbaa !5
  %2336 = load i32, ptr %103, align 4, !tbaa !9
  %2337 = add nsw i32 %2336, 1
  %2338 = load i32, ptr %13, align 4, !tbaa !9
  %2339 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2337, i32 noundef %2338)
  %2340 = sext i32 %2339 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2334, ptr noundef %2335, i64 noundef %2340)
  store i8 1, ptr %60, align 1, !tbaa !45
  br label %2341

2341:                                             ; preds = %2333, %2288
  %2342 = load ptr, ptr %43, align 8, !tbaa !5
  %2343 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2342, i32 0, i32 14
  store i32 0, ptr %2343, align 8, !tbaa !133
  %2344 = load ptr, ptr %43, align 8, !tbaa !5
  %2345 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2344, i32 0, i32 15
  store ptr null, ptr %2345, align 8, !tbaa !134
  %2346 = load ptr, ptr %43, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2346, i32 0, i32 16
  store ptr null, ptr %2347, align 8, !tbaa !135
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #14
  br label %2348

2348:                                             ; preds = %2341, %1892
  %2349 = load i8, ptr %51, align 1, !tbaa !45, !range !43, !noundef !44
  %2350 = trunc i8 %2349 to i1
  br i1 %2350, label %2351, label %2358

2351:                                             ; preds = %2348
  %2352 = load ptr, ptr %20, align 8, !tbaa !5
  %2353 = getelementptr inbounds %struct.ImGuiContext, ptr %2352, i32 0, i32 47
  %2354 = load i32, ptr %2353, align 8, !tbaa !101
  %2355 = load i32, ptr %29, align 4, !tbaa !9
  %2356 = icmp eq i32 %2354, %2355
  br i1 %2356, label %2357, label %2358

2357:                                             ; preds = %2351
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2358

2358:                                             ; preds = %2357, %2351, %2348
  %2359 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2360 = trunc i8 %2359 to i1
  br i1 %2360, label %2371, label %2361

2361:                                             ; preds = %2358
  %2362 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2362, i32 noundef 1)
  %2363 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 4 %2363, i64 8, i1 false), !tbaa.struct !46
  %2364 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %117, ptr align 4 %2364, i64 8, i1 false), !tbaa.struct !46
  %2365 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2366 = load ptr, ptr %22, align 8, !tbaa !5
  %2367 = getelementptr inbounds %struct.ImGuiStyle, ptr %2366, i32 0, i32 12
  %2368 = load float, ptr %2367, align 4, !tbaa !91
  %2369 = load <2 x float>, ptr %116, align 4
  %2370 = load <2 x float>, ptr %117, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2369, <2 x float> %2370, i32 noundef %2365, i1 noundef zeroext true, float noundef %2368)
  br label %2371

2371:                                             ; preds = %2361, %2358
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #14
  %2372 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2373 = getelementptr inbounds %struct.ImVec2, ptr %2372, i32 0, i32 0
  %2374 = load float, ptr %2373, align 4, !tbaa !139
  %2375 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2376 = getelementptr inbounds %struct.ImVec2, ptr %2375, i32 0, i32 1
  %2377 = load float, ptr %2376, align 4, !tbaa !180
  %2378 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2379 = getelementptr inbounds %struct.ImVec2, ptr %2378, i32 0, i32 0
  %2380 = load float, ptr %2379, align 4, !tbaa !139
  %2381 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2382 = load float, ptr %2381, align 4, !tbaa !89
  %2383 = fadd float %2380, %2382
  %2384 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2385 = getelementptr inbounds %struct.ImVec2, ptr %2384, i32 0, i32 1
  %2386 = load float, ptr %2385, align 4, !tbaa !180
  %2387 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2388 = load float, ptr %2387, align 4, !tbaa !87
  %2389 = fadd float %2386, %2388
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %118, float noundef %2374, float noundef %2377, float noundef %2383, float noundef %2389)
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #14
  %2390 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2391 = trunc i8 %2390 to i1
  br i1 %2391, label %2392, label %2396

2392:                                             ; preds = %2371
  %2393 = load ptr, ptr %38, align 8, !tbaa !5
  %2394 = getelementptr inbounds %struct.ImGuiWindow, ptr %2393, i32 0, i32 58
  %2395 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2394, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %119, ptr align 8 %2395, i64 8, i1 false), !tbaa.struct !46
  br label %2401

2396:                                             ; preds = %2371
  %2397 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2398 = load ptr, ptr %22, align 8, !tbaa !5
  %2399 = getelementptr inbounds %struct.ImGuiStyle, ptr %2398, i32 0, i32 11
  %2400 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2397, ptr noundef nonnull align 4 dereferenceable(8) %2399)
  store <2 x float> %2400, ptr %119, align 4
  br label %2401

2401:                                             ; preds = %2396, %2392
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %120, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #14
  store i32 2097152, ptr %121, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #14
  %2402 = load i8, ptr %63, align 1, !tbaa !45, !range !43, !noundef !44
  %2403 = trunc i8 %2402 to i1
  br i1 %2403, label %2404, label %2409

2404:                                             ; preds = %2401
  %2405 = load ptr, ptr %43, align 8, !tbaa !5
  %2406 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2405, i32 0, i32 4
  %2407 = getelementptr inbounds %struct.ImVector.24, ptr %2406, i32 0, i32 2
  %2408 = load ptr, ptr %2407, align 8, !tbaa !119
  br label %2411

2409:                                             ; preds = %2401
  %2410 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2411

2411:                                             ; preds = %2409, %2404
  %2412 = phi ptr [ %2408, %2404 ], [ %2410, %2409 ]
  store ptr %2412, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #14
  store ptr null, ptr %123, align 8, !tbaa !5
  %2413 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %2414 = trunc i8 %2413 to i1
  br i1 %2414, label %2415, label %2421

2415:                                             ; preds = %2411
  %2416 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2416, ptr %122, align 8, !tbaa !5
  %2417 = load ptr, ptr %11, align 8, !tbaa !5
  %2418 = load ptr, ptr %11, align 8, !tbaa !5
  %2419 = call i64 @strlen(ptr noundef %2418) #16
  %2420 = getelementptr inbounds i8, ptr %2417, i64 %2419
  store ptr %2420, ptr %123, align 8, !tbaa !5
  br label %2421

2421:                                             ; preds = %2415, %2411
  %2422 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %2423 = trunc i8 %2422 to i1
  br i1 %2423, label %2427, label %2424

2424:                                             ; preds = %2421
  %2425 = load i8, ptr %59, align 1, !tbaa !45, !range !43, !noundef !44
  %2426 = trunc i8 %2425 to i1
  br i1 %2426, label %2427, label %2978

2427:                                             ; preds = %2424, %2421
  %2428 = load ptr, ptr %43, align 8, !tbaa !5
  %2429 = icmp ne ptr %2428, null
  br i1 %2429, label %2430, label %2431

2430:                                             ; preds = %2427
  br label %2433

2431:                                             ; preds = %2427
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.1, i32 noundef 4343, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2432:                                             ; No predecessors!
  br label %2433

2433:                                             ; preds = %2432, %2430
  %2434 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %2435 = trunc i8 %2434 to i1
  br i1 %2435, label %2443, label %2436

2436:                                             ; preds = %2433
  %2437 = load ptr, ptr %122, align 8, !tbaa !5
  %2438 = load ptr, ptr %43, align 8, !tbaa !5
  %2439 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2438, i32 0, i32 2
  %2440 = load i32, ptr %2439, align 8, !tbaa !110
  %2441 = sext i32 %2440 to i64
  %2442 = getelementptr inbounds i8, ptr %2437, i64 %2441
  store ptr %2442, ptr %123, align 8, !tbaa !5
  br label %2443

2443:                                             ; preds = %2436, %2433
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #14
  %2444 = load ptr, ptr %43, align 8, !tbaa !5
  %2445 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2444, i32 0, i32 3
  %2446 = getelementptr inbounds %struct.ImVector.7, ptr %2445, i32 0, i32 2
  %2447 = load ptr, ptr %2446, align 8, !tbaa !108
  store ptr %2447, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %125)
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %126)
  call void @llvm.lifetime.start.p0(i64 16, ptr %127) #14
  call void @llvm.memset.p0.i64(ptr align 16 %127, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %128, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #14
  store i32 0, ptr %129, align 4, !tbaa !9
  %2448 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %2449 = trunc i8 %2448 to i1
  br i1 %2449, label %2450, label %2462

2450:                                             ; preds = %2443
  %2451 = load ptr, ptr %124, align 8, !tbaa !5
  %2452 = load ptr, ptr %43, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2452, i32 0, i32 9
  %2454 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2453, i32 0, i32 0
  %2455 = load i32, ptr %2454, align 4, !tbaa !176
  %2456 = sext i32 %2455 to i64
  %2457 = getelementptr inbounds i16, ptr %2451, i64 %2456
  %2458 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  store ptr %2457, ptr %2458, align 16, !tbaa !5
  %2459 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 -1, ptr %2459, align 4, !tbaa !9
  %2460 = load i32, ptr %129, align 4, !tbaa !9
  %2461 = add nsw i32 %2460, 1
  store i32 %2461, ptr %129, align 4, !tbaa !9
  br label %2462

2462:                                             ; preds = %2450, %2443
  %2463 = load i8, ptr %59, align 1, !tbaa !45, !range !43, !noundef !44
  %2464 = trunc i8 %2463 to i1
  br i1 %2464, label %2465, label %2482

2465:                                             ; preds = %2462
  %2466 = load ptr, ptr %124, align 8, !tbaa !5
  %2467 = load ptr, ptr %43, align 8, !tbaa !5
  %2468 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2467, i32 0, i32 9
  %2469 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2468, i32 0, i32 1
  %2470 = load i32, ptr %2469, align 4, !tbaa !160
  %2471 = load ptr, ptr %43, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2471, i32 0, i32 9
  %2473 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2472, i32 0, i32 2
  %2474 = load i32, ptr %2473, align 4, !tbaa !161
  %2475 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2470, i32 noundef %2474)
  %2476 = sext i32 %2475 to i64
  %2477 = getelementptr inbounds i16, ptr %2466, i64 %2476
  %2478 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  store ptr %2477, ptr %2478, align 8, !tbaa !5
  %2479 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 -1, ptr %2479, align 4, !tbaa !9
  %2480 = load i32, ptr %129, align 4, !tbaa !9
  %2481 = add nsw i32 %2480, 1
  store i32 %2481, ptr %129, align 4, !tbaa !9
  br label %2482

2482:                                             ; preds = %2465, %2462
  %2483 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2484 = trunc i8 %2483 to i1
  %2485 = zext i1 %2484 to i64
  %2486 = select i1 %2484, i32 1, i32 0
  %2487 = load i32, ptr %129, align 4, !tbaa !9
  %2488 = add nsw i32 %2487, %2486
  store i32 %2488, ptr %129, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #14
  store i32 0, ptr %130, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #14
  %2489 = load ptr, ptr %124, align 8, !tbaa !5
  store ptr %2489, ptr %131, align 8, !tbaa !5
  br label %2490

2490:                                             ; preds = %2539, %2482
  %2491 = load ptr, ptr %131, align 8, !tbaa !5
  %2492 = load i16, ptr %2491, align 2, !tbaa !151
  %2493 = zext i16 %2492 to i32
  %2494 = icmp ne i32 %2493, 0
  br i1 %2494, label %2496, label %2495

2495:                                             ; preds = %2490
  store i32 7, ptr %19, align 4
  br label %2542

2496:                                             ; preds = %2490
  %2497 = load ptr, ptr %131, align 8, !tbaa !5
  %2498 = load i16, ptr %2497, align 2, !tbaa !151
  %2499 = zext i16 %2498 to i32
  %2500 = icmp eq i32 %2499, 10
  br i1 %2500, label %2501, label %2538

2501:                                             ; preds = %2496
  %2502 = load i32, ptr %130, align 4, !tbaa !9
  %2503 = add nsw i32 %2502, 1
  store i32 %2503, ptr %130, align 4, !tbaa !9
  %2504 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2505 = load i32, ptr %2504, align 4, !tbaa !9
  %2506 = icmp eq i32 %2505, -1
  br i1 %2506, label %2507, label %2520

2507:                                             ; preds = %2501
  %2508 = load ptr, ptr %131, align 8, !tbaa !5
  %2509 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2510 = load ptr, ptr %2509, align 16, !tbaa !5
  %2511 = icmp uge ptr %2508, %2510
  br i1 %2511, label %2512, label %2520

2512:                                             ; preds = %2507
  %2513 = load i32, ptr %130, align 4, !tbaa !9
  %2514 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 %2513, ptr %2514, align 4, !tbaa !9
  %2515 = load i32, ptr %129, align 4, !tbaa !9
  %2516 = add nsw i32 %2515, -1
  store i32 %2516, ptr %129, align 4, !tbaa !9
  %2517 = icmp sle i32 %2516, 0
  br i1 %2517, label %2518, label %2519

2518:                                             ; preds = %2512
  store i32 7, ptr %19, align 4
  br label %2542

2519:                                             ; preds = %2512
  br label %2520

2520:                                             ; preds = %2519, %2507, %2501
  %2521 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2522 = load i32, ptr %2521, align 4, !tbaa !9
  %2523 = icmp eq i32 %2522, -1
  br i1 %2523, label %2524, label %2537

2524:                                             ; preds = %2520
  %2525 = load ptr, ptr %131, align 8, !tbaa !5
  %2526 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2527 = load ptr, ptr %2526, align 8, !tbaa !5
  %2528 = icmp uge ptr %2525, %2527
  br i1 %2528, label %2529, label %2537

2529:                                             ; preds = %2524
  %2530 = load i32, ptr %130, align 4, !tbaa !9
  %2531 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 %2530, ptr %2531, align 4, !tbaa !9
  %2532 = load i32, ptr %129, align 4, !tbaa !9
  %2533 = add nsw i32 %2532, -1
  store i32 %2533, ptr %129, align 4, !tbaa !9
  %2534 = icmp sle i32 %2533, 0
  br i1 %2534, label %2535, label %2536

2535:                                             ; preds = %2529
  store i32 7, ptr %19, align 4
  br label %2542

2536:                                             ; preds = %2529
  br label %2537

2537:                                             ; preds = %2536, %2524, %2520
  br label %2538

2538:                                             ; preds = %2537, %2496
  br label %2539

2539:                                             ; preds = %2538
  %2540 = load ptr, ptr %131, align 8, !tbaa !5
  %2541 = getelementptr inbounds i16, ptr %2540, i32 1
  store ptr %2541, ptr %131, align 8, !tbaa !5
  br label %2490, !llvm.loop !181

2542:                                             ; preds = %2535, %2518, %2495
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #14
  br label %2543

2543:                                             ; preds = %2542
  %2544 = load i32, ptr %130, align 4, !tbaa !9
  %2545 = add nsw i32 %2544, 1
  store i32 %2545, ptr %130, align 4, !tbaa !9
  %2546 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2547 = load i32, ptr %2546, align 4, !tbaa !9
  %2548 = icmp eq i32 %2547, -1
  br i1 %2548, label %2549, label %2552

2549:                                             ; preds = %2543
  %2550 = load i32, ptr %130, align 4, !tbaa !9
  %2551 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 %2550, ptr %2551, align 4, !tbaa !9
  br label %2552

2552:                                             ; preds = %2549, %2543
  %2553 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2554 = load i32, ptr %2553, align 4, !tbaa !9
  %2555 = icmp eq i32 %2554, -1
  br i1 %2555, label %2556, label %2559

2556:                                             ; preds = %2552
  %2557 = load i32, ptr %130, align 4, !tbaa !9
  %2558 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 %2557, ptr %2558, align 4, !tbaa !9
  br label %2559

2559:                                             ; preds = %2556, %2552
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  %2560 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2561 = load ptr, ptr %2560, align 16, !tbaa !5
  %2562 = load ptr, ptr %124, align 8, !tbaa !5
  %2563 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2561, ptr noundef %2562)
  %2564 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2565 = load ptr, ptr %2564, align 16, !tbaa !5
  %2566 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2563, ptr noundef %2565, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2566, ptr %132, align 4
  %2567 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2568 = load float, ptr %2567, align 4, !tbaa !89
  %2569 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  store float %2568, ptr %2569, align 4, !tbaa !89
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #14
  %2570 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2571 = load i32, ptr %2570, align 4, !tbaa !9
  %2572 = sitofp i32 %2571 to float
  %2573 = load ptr, ptr %20, align 8, !tbaa !5
  %2574 = getelementptr inbounds %struct.ImGuiContext, ptr %2573, i32 0, i32 10
  %2575 = load float, ptr %2574, align 8, !tbaa !48
  %2576 = fmul float %2572, %2575
  %2577 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  store float %2576, ptr %2577, align 4, !tbaa !87
  %2578 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2579 = load i32, ptr %2578, align 4, !tbaa !9
  %2580 = icmp sge i32 %2579, 0
  br i1 %2580, label %2581, label %2600

2581:                                             ; preds = %2559
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #14
  %2582 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2583 = load ptr, ptr %2582, align 8, !tbaa !5
  %2584 = load ptr, ptr %124, align 8, !tbaa !5
  %2585 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2583, ptr noundef %2584)
  %2586 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2587 = load ptr, ptr %2586, align 8, !tbaa !5
  %2588 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2585, ptr noundef %2587, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2588, ptr %133, align 4
  %2589 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 0
  %2590 = load float, ptr %2589, align 4, !tbaa !89
  %2591 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 0
  store float %2590, ptr %2591, align 4, !tbaa !89
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #14
  %2592 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2593 = load i32, ptr %2592, align 4, !tbaa !9
  %2594 = sitofp i32 %2593 to float
  %2595 = load ptr, ptr %20, align 8, !tbaa !5
  %2596 = getelementptr inbounds %struct.ImGuiContext, ptr %2595, i32 0, i32 10
  %2597 = load float, ptr %2596, align 8, !tbaa !48
  %2598 = fmul float %2594, %2597
  %2599 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 1
  store float %2598, ptr %2599, align 4, !tbaa !87
  br label %2600

2600:                                             ; preds = %2581, %2559
  %2601 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2602 = trunc i8 %2601 to i1
  br i1 %2602, label %2603, label %2612

2603:                                             ; preds = %2600
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #14
  %2604 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2605 = load float, ptr %2604, align 4, !tbaa !89
  %2606 = load i32, ptr %130, align 4, !tbaa !9
  %2607 = sitofp i32 %2606 to float
  %2608 = load ptr, ptr %20, align 8, !tbaa !5
  %2609 = getelementptr inbounds %struct.ImGuiContext, ptr %2608, i32 0, i32 10
  %2610 = load float, ptr %2609, align 8, !tbaa !48
  %2611 = fmul float %2607, %2610
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %134, float noundef %2605, float noundef %2611)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %120, ptr align 4 %134, i64 8, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #14
  br label %2612

2612:                                             ; preds = %2603, %2600
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %127) #14
  %2613 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %2614 = trunc i8 %2613 to i1
  br i1 %2614, label %2615, label %2727

2615:                                             ; preds = %2612
  %2616 = load ptr, ptr %43, align 8, !tbaa !5
  %2617 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2616, i32 0, i32 11
  %2618 = load i8, ptr %2617, align 4, !tbaa !147, !range !43, !noundef !44
  %2619 = trunc i8 %2618 to i1
  br i1 %2619, label %2620, label %2727

2620:                                             ; preds = %2615
  %2621 = load i32, ptr %15, align 4, !tbaa !9
  %2622 = and i32 %2621, 4096
  %2623 = icmp ne i32 %2622, 0
  br i1 %2623, label %2668, label %2624

2624:                                             ; preds = %2620
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #14
  %2625 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2626 = load float, ptr %2625, align 4, !tbaa !89
  %2627 = fmul float %2626, 2.500000e-01
  store float %2627, ptr %135, align 4, !tbaa !47
  %2628 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2629 = load float, ptr %2628, align 4, !tbaa !89
  %2630 = load ptr, ptr %43, align 8, !tbaa !5
  %2631 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2630, i32 0, i32 8
  %2632 = load float, ptr %2631, align 8, !tbaa !112
  %2633 = fcmp olt float %2629, %2632
  br i1 %2633, label %2634, label %2644

2634:                                             ; preds = %2624
  %2635 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2636 = load float, ptr %2635, align 4, !tbaa !89
  %2637 = load float, ptr %135, align 4, !tbaa !47
  %2638 = fsub float %2636, %2637
  %2639 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2638)
  %2640 = fptosi float %2639 to i32
  %2641 = sitofp i32 %2640 to float
  %2642 = load ptr, ptr %43, align 8, !tbaa !5
  %2643 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2642, i32 0, i32 8
  store float %2641, ptr %2643, align 8, !tbaa !112
  br label %2667

2644:                                             ; preds = %2624
  %2645 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2646 = load float, ptr %2645, align 4, !tbaa !89
  %2647 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2648 = load float, ptr %2647, align 4, !tbaa !89
  %2649 = fsub float %2646, %2648
  %2650 = load ptr, ptr %43, align 8, !tbaa !5
  %2651 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2650, i32 0, i32 8
  %2652 = load float, ptr %2651, align 8, !tbaa !112
  %2653 = fcmp oge float %2649, %2652
  br i1 %2653, label %2654, label %2666

2654:                                             ; preds = %2644
  %2655 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2656 = load float, ptr %2655, align 4, !tbaa !89
  %2657 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2658 = load float, ptr %2657, align 4, !tbaa !89
  %2659 = fsub float %2656, %2658
  %2660 = load float, ptr %135, align 4, !tbaa !47
  %2661 = fadd float %2659, %2660
  %2662 = fptosi float %2661 to i32
  %2663 = sitofp i32 %2662 to float
  %2664 = load ptr, ptr %43, align 8, !tbaa !5
  %2665 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2664, i32 0, i32 8
  store float %2663, ptr %2665, align 8, !tbaa !112
  br label %2666

2666:                                             ; preds = %2654, %2644
  br label %2667

2667:                                             ; preds = %2666, %2634
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #14
  br label %2671

2668:                                             ; preds = %2620
  %2669 = load ptr, ptr %43, align 8, !tbaa !5
  %2670 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2669, i32 0, i32 8
  store float 0.000000e+00, ptr %2670, align 8, !tbaa !112
  br label %2671

2671:                                             ; preds = %2668, %2667
  %2672 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2673 = trunc i8 %2672 to i1
  br i1 %2673, label %2674, label %2724

2674:                                             ; preds = %2671
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #14
  %2675 = load ptr, ptr %38, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.ImGuiWindow, ptr %2675, i32 0, i32 20
  %2677 = getelementptr inbounds %struct.ImVec2, ptr %2676, i32 0, i32 1
  %2678 = load float, ptr %2677, align 4, !tbaa !158
  store float %2678, ptr %136, align 4, !tbaa !47
  %2679 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2680 = load float, ptr %2679, align 4, !tbaa !87
  %2681 = load ptr, ptr %20, align 8, !tbaa !5
  %2682 = getelementptr inbounds %struct.ImGuiContext, ptr %2681, i32 0, i32 10
  %2683 = load float, ptr %2682, align 8, !tbaa !48
  %2684 = fsub float %2680, %2683
  %2685 = load float, ptr %136, align 4, !tbaa !47
  %2686 = fcmp olt float %2684, %2685
  br i1 %2686, label %2687, label %2695

2687:                                             ; preds = %2674
  %2688 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2689 = load float, ptr %2688, align 4, !tbaa !87
  %2690 = load ptr, ptr %20, align 8, !tbaa !5
  %2691 = getelementptr inbounds %struct.ImGuiContext, ptr %2690, i32 0, i32 10
  %2692 = load float, ptr %2691, align 8, !tbaa !48
  %2693 = fsub float %2689, %2692
  %2694 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2693)
  store float %2694, ptr %136, align 4, !tbaa !47
  br label %2710

2695:                                             ; preds = %2674
  %2696 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2697 = load float, ptr %2696, align 4, !tbaa !87
  %2698 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2699 = load float, ptr %2698, align 4, !tbaa !87
  %2700 = fsub float %2697, %2699
  %2701 = load float, ptr %136, align 4, !tbaa !47
  %2702 = fcmp oge float %2700, %2701
  br i1 %2702, label %2703, label %2709

2703:                                             ; preds = %2695
  %2704 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2705 = load float, ptr %2704, align 4, !tbaa !87
  %2706 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2707 = load float, ptr %2706, align 4, !tbaa !87
  %2708 = fsub float %2705, %2707
  store float %2708, ptr %136, align 4, !tbaa !47
  br label %2709

2709:                                             ; preds = %2703, %2695
  br label %2710

2710:                                             ; preds = %2709, %2687
  %2711 = load ptr, ptr %38, align 8, !tbaa !5
  %2712 = getelementptr inbounds %struct.ImGuiWindow, ptr %2711, i32 0, i32 20
  %2713 = getelementptr inbounds %struct.ImVec2, ptr %2712, i32 0, i32 1
  %2714 = load float, ptr %2713, align 4, !tbaa !158
  %2715 = load float, ptr %136, align 4, !tbaa !47
  %2716 = fsub float %2714, %2715
  %2717 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 1
  %2718 = load float, ptr %2717, align 4, !tbaa !87
  %2719 = fadd float %2718, %2716
  store float %2719, ptr %2717, align 4, !tbaa !87
  %2720 = load float, ptr %136, align 4, !tbaa !47
  %2721 = load ptr, ptr %38, align 8, !tbaa !5
  %2722 = getelementptr inbounds %struct.ImGuiWindow, ptr %2721, i32 0, i32 20
  %2723 = getelementptr inbounds %struct.ImVec2, ptr %2722, i32 0, i32 1
  store float %2720, ptr %2723, align 4, !tbaa !158
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #14
  br label %2724

2724:                                             ; preds = %2710, %2671
  %2725 = load ptr, ptr %43, align 8, !tbaa !5
  %2726 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2725, i32 0, i32 11
  store i8 0, ptr %2726, align 4, !tbaa !147
  br label %2727

2727:                                             ; preds = %2724, %2615, %2612
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #14
  %2728 = load ptr, ptr %43, align 8, !tbaa !5
  %2729 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2728, i32 0, i32 8
  %2730 = load float, ptr %2729, align 8, !tbaa !112
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %137, float noundef %2730, float noundef 0.000000e+00)
  %2731 = load i8, ptr %59, align 1, !tbaa !45, !range !43, !noundef !44
  %2732 = trunc i8 %2731 to i1
  br i1 %2732, label %2733, label %2861

2733:                                             ; preds = %2727
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  %2734 = load ptr, ptr %124, align 8, !tbaa !5
  %2735 = load ptr, ptr %43, align 8, !tbaa !5
  %2736 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2735, i32 0, i32 9
  %2737 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2736, i32 0, i32 1
  %2738 = load i32, ptr %2737, align 4, !tbaa !160
  %2739 = load ptr, ptr %43, align 8, !tbaa !5
  %2740 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2739, i32 0, i32 9
  %2741 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2740, i32 0, i32 2
  %2742 = load i32, ptr %2741, align 4, !tbaa !161
  %2743 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2738, i32 noundef %2742)
  %2744 = sext i32 %2743 to i64
  %2745 = getelementptr inbounds i16, ptr %2734, i64 %2744
  store ptr %2745, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #14
  %2746 = load ptr, ptr %124, align 8, !tbaa !5
  %2747 = load ptr, ptr %43, align 8, !tbaa !5
  %2748 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2747, i32 0, i32 9
  %2749 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2748, i32 0, i32 1
  %2750 = load i32, ptr %2749, align 4, !tbaa !160
  %2751 = load ptr, ptr %43, align 8, !tbaa !5
  %2752 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2751, i32 0, i32 9
  %2753 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2752, i32 0, i32 2
  %2754 = load i32, ptr %2753, align 4, !tbaa !161
  %2755 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2750, i32 noundef %2754)
  %2756 = sext i32 %2755 to i64
  %2757 = getelementptr inbounds i16, ptr %2746, i64 %2756
  store ptr %2757, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #14
  %2758 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %2759 = trunc i8 %2758 to i1
  %2760 = zext i1 %2759 to i64
  %2761 = select i1 %2759, float 1.000000e+00, float 0x3FE3333340000000
  %2762 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 44, float noundef %2761)
  store i32 %2762, ptr %140, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #14
  %2763 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2764 = trunc i8 %2763 to i1
  %2765 = zext i1 %2764 to i64
  %2766 = select i1 %2764, float 0.000000e+00, float -1.000000e+00
  store float %2766, ptr %141, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #14
  %2767 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2768 = trunc i8 %2767 to i1
  %2769 = zext i1 %2768 to i64
  %2770 = select i1 %2768, float 0.000000e+00, float 2.000000e+00
  store float %2770, ptr %142, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #14
  %2771 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %126)
  store <2 x float> %2771, ptr %144, align 4
  %2772 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %144, ptr noundef nonnull align 4 dereferenceable(8) %137)
  store <2 x float> %2772, ptr %143, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #14
  %2773 = load ptr, ptr %138, align 8, !tbaa !5
  store ptr %2773, ptr %145, align 8, !tbaa !5
  br label %2774

2774:                                             ; preds = %2846, %2733
  %2775 = load ptr, ptr %145, align 8, !tbaa !5
  %2776 = load ptr, ptr %139, align 8, !tbaa !5
  %2777 = icmp ult ptr %2775, %2776
  br i1 %2777, label %2779, label %2778

2778:                                             ; preds = %2774
  store i32 10, ptr %19, align 4
  br label %2859

2779:                                             ; preds = %2774
  %2780 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2781 = load float, ptr %2780, align 4, !tbaa !87
  %2782 = getelementptr inbounds %struct.ImVec4, ptr %118, i32 0, i32 3
  %2783 = load float, ptr %2782, align 4, !tbaa !182
  %2784 = load ptr, ptr %20, align 8, !tbaa !5
  %2785 = getelementptr inbounds %struct.ImGuiContext, ptr %2784, i32 0, i32 10
  %2786 = load float, ptr %2785, align 8, !tbaa !48
  %2787 = fadd float %2783, %2786
  %2788 = fcmp ogt float %2781, %2787
  br i1 %2788, label %2789, label %2790

2789:                                             ; preds = %2779
  store i32 10, ptr %19, align 4
  br label %2859

2790:                                             ; preds = %2779
  %2791 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2792 = load float, ptr %2791, align 4, !tbaa !87
  %2793 = getelementptr inbounds %struct.ImVec4, ptr %118, i32 0, i32 1
  %2794 = load float, ptr %2793, align 4, !tbaa !183
  %2795 = fcmp olt float %2792, %2794
  br i1 %2795, label %2796, label %2810

2796:                                             ; preds = %2790
  br label %2797

2797:                                             ; preds = %2808, %2796
  %2798 = load ptr, ptr %145, align 8, !tbaa !5
  %2799 = load ptr, ptr %139, align 8, !tbaa !5
  %2800 = icmp ult ptr %2798, %2799
  br i1 %2800, label %2801, label %2809

2801:                                             ; preds = %2797
  %2802 = load ptr, ptr %145, align 8, !tbaa !5
  %2803 = getelementptr inbounds i16, ptr %2802, i32 1
  store ptr %2803, ptr %145, align 8, !tbaa !5
  %2804 = load i16, ptr %2802, align 2, !tbaa !151
  %2805 = zext i16 %2804 to i32
  %2806 = icmp eq i32 %2805, 10
  br i1 %2806, label %2807, label %2808

2807:                                             ; preds = %2801
  br label %2809

2808:                                             ; preds = %2801
  br label %2797, !llvm.loop !184

2809:                                             ; preds = %2807, %2797
  br label %2846

2810:                                             ; preds = %2790
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #14
  %2811 = load ptr, ptr %145, align 8, !tbaa !5
  %2812 = load ptr, ptr %139, align 8, !tbaa !5
  %2813 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2811, ptr noundef %2812, ptr noundef %145, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %2813, ptr %146, align 4
  %2814 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %2815 = load float, ptr %2814, align 4, !tbaa !89
  %2816 = fcmp ole float %2815, 0.000000e+00
  br i1 %2816, label %2817, label %2826

2817:                                             ; preds = %2810
  %2818 = load ptr, ptr %20, align 8, !tbaa !5
  %2819 = getelementptr inbounds %struct.ImGuiContext, ptr %2818, i32 0, i32 9
  %2820 = load ptr, ptr %2819, align 8, !tbaa !121
  %2821 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114) %2820, i16 noundef zeroext 32)
  %2822 = fmul float %2821, 5.000000e-01
  %2823 = fptosi float %2822 to i32
  %2824 = sitofp i32 %2823 to float
  %2825 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  store float %2824, ptr %2825, align 4, !tbaa !89
  br label %2826

2826:                                             ; preds = %2817, %2810
  call void @llvm.lifetime.start.p0(i64 16, ptr %147) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #14
  %2827 = load float, ptr %141, align 4, !tbaa !47
  %2828 = load ptr, ptr %20, align 8, !tbaa !5
  %2829 = getelementptr inbounds %struct.ImGuiContext, ptr %2828, i32 0, i32 10
  %2830 = load float, ptr %2829, align 8, !tbaa !48
  %2831 = fsub float %2827, %2830
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %149, float noundef 0.000000e+00, float noundef %2831)
  %2832 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %143, ptr noundef nonnull align 4 dereferenceable(8) %149)
  store <2 x float> %2832, ptr %148, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #14
  %2833 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %2834 = load float, ptr %2833, align 4, !tbaa !89
  %2835 = load float, ptr %142, align 4, !tbaa !47
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %151, float noundef %2834, float noundef %2835)
  %2836 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %143, ptr noundef nonnull align 4 dereferenceable(8) %151)
  store <2 x float> %2836, ptr %150, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %147, ptr noundef nonnull align 4 dereferenceable(8) %148, ptr noundef nonnull align 4 dereferenceable(8) %150)
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %152) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %152, ptr noundef nonnull align 4 dereferenceable(16) %118)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %147, ptr noundef nonnull align 4 dereferenceable(16) %152)
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %153) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %153, ptr noundef nonnull align 4 dereferenceable(16) %118)
  %2837 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %147, ptr noundef nonnull align 4 dereferenceable(16) %153)
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #14
  br i1 %2837, label %2838, label %2845

2838:                                             ; preds = %2826
  %2839 = load ptr, ptr %38, align 8, !tbaa !5
  %2840 = getelementptr inbounds %struct.ImGuiWindow, ptr %2839, i32 0, i32 78
  %2841 = load ptr, ptr %2840, align 8, !tbaa !185
  %2842 = getelementptr inbounds %struct.ImRect, ptr %147, i32 0, i32 0
  %2843 = getelementptr inbounds %struct.ImRect, ptr %147, i32 0, i32 1
  %2844 = load i32, ptr %140, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %2841, ptr noundef nonnull align 4 dereferenceable(8) %2842, ptr noundef nonnull align 4 dereferenceable(8) %2843, i32 noundef %2844, float noundef 0.000000e+00, i32 noundef 15)
  br label %2845

2845:                                             ; preds = %2838, %2826
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #14
  br label %2846

2846:                                             ; preds = %2845, %2809
  %2847 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 0
  %2848 = load float, ptr %2847, align 4, !tbaa !89
  %2849 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  %2850 = load float, ptr %2849, align 4, !tbaa !89
  %2851 = fsub float %2848, %2850
  %2852 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 0
  store float %2851, ptr %2852, align 4, !tbaa !89
  %2853 = load ptr, ptr %20, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.ImGuiContext, ptr %2853, i32 0, i32 10
  %2855 = load float, ptr %2854, align 8, !tbaa !48
  %2856 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2857 = load float, ptr %2856, align 4, !tbaa !87
  %2858 = fadd float %2857, %2855
  store float %2858, ptr %2856, align 4, !tbaa !87
  br label %2774, !llvm.loop !186

2859:                                             ; preds = %2789, %2778
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #14
  br label %2860

2860:                                             ; preds = %2859
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #14
  br label %2861

2861:                                             ; preds = %2860, %2727
  %2862 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2863 = trunc i8 %2862 to i1
  br i1 %2863, label %2871, label %2864

2864:                                             ; preds = %2861
  %2865 = load ptr, ptr %123, align 8, !tbaa !5
  %2866 = load ptr, ptr %122, align 8, !tbaa !5
  %2867 = ptrtoint ptr %2865 to i64
  %2868 = ptrtoint ptr %2866 to i64
  %2869 = sub i64 %2867, %2868
  %2870 = icmp slt i64 %2869, 2097152
  br i1 %2870, label %2871, label %2896

2871:                                             ; preds = %2864, %2861
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #14
  %2872 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %2873 = trunc i8 %2872 to i1
  %2874 = zext i1 %2873 to i64
  %2875 = select i1 %2873, i32 1, i32 0
  %2876 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %2875, float noundef 1.000000e+00)
  store i32 %2876, ptr %154, align 4, !tbaa !9
  %2877 = load ptr, ptr %38, align 8, !tbaa !5
  %2878 = getelementptr inbounds %struct.ImGuiWindow, ptr %2877, i32 0, i32 78
  %2879 = load ptr, ptr %2878, align 8, !tbaa !185
  %2880 = load ptr, ptr %20, align 8, !tbaa !5
  %2881 = getelementptr inbounds %struct.ImGuiContext, ptr %2880, i32 0, i32 9
  %2882 = load ptr, ptr %2881, align 8, !tbaa !121
  %2883 = load ptr, ptr %20, align 8, !tbaa !5
  %2884 = getelementptr inbounds %struct.ImGuiContext, ptr %2883, i32 0, i32 10
  %2885 = load float, ptr %2884, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #14
  %2886 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %137)
  store <2 x float> %2886, ptr %155, align 4
  %2887 = load i32, ptr %154, align 4, !tbaa !9
  %2888 = load ptr, ptr %122, align 8, !tbaa !5
  %2889 = load ptr, ptr %123, align 8, !tbaa !5
  %2890 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2891 = trunc i8 %2890 to i1
  br i1 %2891, label %2892, label %2893

2892:                                             ; preds = %2871
  br label %2894

2893:                                             ; preds = %2871
  br label %2894

2894:                                             ; preds = %2893, %2892
  %2895 = phi ptr [ null, %2892 ], [ %118, %2893 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224) %2879, ptr noundef %2882, float noundef %2885, ptr noundef nonnull align 4 dereferenceable(8) %155, i32 noundef %2887, ptr noundef %2888, ptr noundef %2889, float noundef 0.000000e+00, ptr noundef %2895)
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #14
  br label %2896

2896:                                             ; preds = %2894, %2864
  %2897 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %2898 = trunc i8 %2897 to i1
  br i1 %2898, label %2899, label %2977

2899:                                             ; preds = %2896
  %2900 = load ptr, ptr %21, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.ImGuiIO, ptr %2900, i32 0, i32 3
  %2902 = load float, ptr %2901, align 8, !tbaa !187
  %2903 = load ptr, ptr %43, align 8, !tbaa !5
  %2904 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2903, i32 0, i32 10
  %2905 = load float, ptr %2904, align 8, !tbaa !188
  %2906 = fadd float %2905, %2902
  store float %2906, ptr %2904, align 8, !tbaa !188
  call void @llvm.lifetime.start.p0(i64 1, ptr %156) #14
  %2907 = load ptr, ptr %20, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.ImGuiContext, ptr %2907, i32 0, i32 3
  %2909 = getelementptr inbounds %struct.ImGuiIO, ptr %2908, i32 0, i32 29
  %2910 = load i8, ptr %2909, align 2, !tbaa !189, !range !43, !noundef !44
  %2911 = trunc i8 %2910 to i1
  br i1 %2911, label %2912, label %2923

2912:                                             ; preds = %2899
  %2913 = load ptr, ptr %43, align 8, !tbaa !5
  %2914 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2913, i32 0, i32 10
  %2915 = load float, ptr %2914, align 8, !tbaa !188
  %2916 = fcmp ole float %2915, 0.000000e+00
  br i1 %2916, label %2923, label %2917

2917:                                             ; preds = %2912
  %2918 = load ptr, ptr %43, align 8, !tbaa !5
  %2919 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2918, i32 0, i32 10
  %2920 = load float, ptr %2919, align 8, !tbaa !188
  %2921 = call float @fmodf(float noundef %2920, float noundef 0x3FF3333340000000) #14
  %2922 = fcmp ole float %2921, 0x3FE99999A0000000
  br label %2923

2923:                                             ; preds = %2917, %2912, %2899
  %2924 = phi i1 [ true, %2912 ], [ true, %2899 ], [ %2922, %2917 ]
  %2925 = zext i1 %2924 to i8
  store i8 %2925, ptr %156, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #14
  %2926 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %125)
  store <2 x float> %2926, ptr %158, align 4
  %2927 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %158, ptr noundef nonnull align 4 dereferenceable(8) %137)
  store <2 x float> %2927, ptr %157, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %159) #14
  %2928 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2929 = load float, ptr %2928, align 4, !tbaa !89
  %2930 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2931 = load float, ptr %2930, align 4, !tbaa !87
  %2932 = load ptr, ptr %20, align 8, !tbaa !5
  %2933 = getelementptr inbounds %struct.ImGuiContext, ptr %2932, i32 0, i32 10
  %2934 = load float, ptr %2933, align 8, !tbaa !48
  %2935 = fsub float %2931, %2934
  %2936 = fadd float %2935, 5.000000e-01
  %2937 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2938 = load float, ptr %2937, align 4, !tbaa !89
  %2939 = fadd float %2938, 1.000000e+00
  %2940 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2941 = load float, ptr %2940, align 4, !tbaa !87
  %2942 = fsub float %2941, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %159, float noundef %2929, float noundef %2936, float noundef %2939, float noundef %2942)
  %2943 = load i8, ptr %156, align 1, !tbaa !45, !range !43, !noundef !44
  %2944 = trunc i8 %2943 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #14
  br i1 %2944, label %2945, label %2947

2945:                                             ; preds = %2923
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %160, ptr noundef nonnull align 4 dereferenceable(16) %118)
  %2946 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %159, ptr noundef nonnull align 4 dereferenceable(16) %160)
  br label %2947

2947:                                             ; preds = %2945, %2923
  %2948 = phi i1 [ false, %2923 ], [ %2946, %2945 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #14
  br i1 %2948, label %2949, label %2956

2949:                                             ; preds = %2947
  %2950 = load ptr, ptr %38, align 8, !tbaa !5
  %2951 = getelementptr inbounds %struct.ImGuiWindow, ptr %2950, i32 0, i32 78
  %2952 = load ptr, ptr %2951, align 8, !tbaa !185
  %2953 = getelementptr inbounds %struct.ImRect, ptr %159, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #14
  %2954 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %159)
  store <2 x float> %2954, ptr %161, align 4
  %2955 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(224) %2952, ptr noundef nonnull align 4 dereferenceable(8) %2953, ptr noundef nonnull align 4 dereferenceable(8) %161, i32 noundef %2955, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #14
  br label %2956

2956:                                             ; preds = %2949, %2947
  %2957 = load i8, ptr %25, align 1, !tbaa !45, !range !43, !noundef !44
  %2958 = trunc i8 %2957 to i1
  br i1 %2958, label %2976, label %2959

2959:                                             ; preds = %2956
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  %2960 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2961 = load float, ptr %2960, align 4, !tbaa !89
  %2962 = fsub float %2961, 1.000000e+00
  %2963 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2964 = load float, ptr %2963, align 4, !tbaa !87
  %2965 = load ptr, ptr %20, align 8, !tbaa !5
  %2966 = getelementptr inbounds %struct.ImGuiContext, ptr %2965, i32 0, i32 10
  %2967 = load float, ptr %2966, align 8, !tbaa !48
  %2968 = fsub float %2964, %2967
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %162, float noundef %2962, float noundef %2968)
  %2969 = load ptr, ptr %20, align 8, !tbaa !5
  %2970 = getelementptr inbounds %struct.ImGuiContext, ptr %2969, i32 0, i32 192
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2970, ptr align 4 %162, i64 8, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #14
  %2971 = load ptr, ptr %18, align 8, !tbaa !5
  %2972 = getelementptr inbounds %struct.ImGuiWindow, ptr %2971, i32 0, i32 5
  %2973 = load ptr, ptr %2972, align 8, !tbaa !190
  %2974 = load ptr, ptr %20, align 8, !tbaa !5
  %2975 = getelementptr inbounds %struct.ImGuiContext, ptr %2974, i32 0, i32 194
  store ptr %2973, ptr %2975, align 8, !tbaa !191
  br label %2976

2976:                                             ; preds = %2959, %2956
  call void @llvm.lifetime.end.p0(i64 16, ptr %159) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #14
  br label %2977

2977:                                             ; preds = %2976, %2896
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #14
  br label %3052

2978:                                             ; preds = %2424
  %2979 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2980 = trunc i8 %2979 to i1
  br i1 %2980, label %2981, label %2991

2981:                                             ; preds = %2978
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #14
  %2982 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2983 = load float, ptr %2982, align 4, !tbaa !89
  %2984 = load ptr, ptr %122, align 8, !tbaa !5
  %2985 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %2984, ptr noundef %123)
  %2986 = sitofp i32 %2985 to float
  %2987 = load ptr, ptr %20, align 8, !tbaa !5
  %2988 = getelementptr inbounds %struct.ImGuiContext, ptr %2987, i32 0, i32 10
  %2989 = load float, ptr %2988, align 8, !tbaa !48
  %2990 = fmul float %2986, %2989
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %163, float noundef %2983, float noundef %2990)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %120, ptr align 4 %163, i64 8, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #14
  br label %3017

2991:                                             ; preds = %2978
  %2992 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %2993 = trunc i8 %2992 to i1
  br i1 %2993, label %3007, label %2994

2994:                                             ; preds = %2991
  %2995 = load ptr, ptr %20, align 8, !tbaa !5
  %2996 = getelementptr inbounds %struct.ImGuiContext, ptr %2995, i32 0, i32 47
  %2997 = load i32, ptr %2996, align 8, !tbaa !101
  %2998 = load i32, ptr %29, align 4, !tbaa !9
  %2999 = icmp eq i32 %2997, %2998
  br i1 %2999, label %3000, label %3007

3000:                                             ; preds = %2994
  %3001 = load ptr, ptr %122, align 8, !tbaa !5
  %3002 = load ptr, ptr %43, align 8, !tbaa !5
  %3003 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3002, i32 0, i32 2
  %3004 = load i32, ptr %3003, align 8, !tbaa !110
  %3005 = sext i32 %3004 to i64
  %3006 = getelementptr inbounds i8, ptr %3001, i64 %3005
  store ptr %3006, ptr %123, align 8, !tbaa !5
  br label %3016

3007:                                             ; preds = %2994, %2991
  %3008 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %3009 = trunc i8 %3008 to i1
  br i1 %3009, label %3015, label %3010

3010:                                             ; preds = %3007
  %3011 = load ptr, ptr %122, align 8, !tbaa !5
  %3012 = load ptr, ptr %122, align 8, !tbaa !5
  %3013 = call i64 @strlen(ptr noundef %3012) #16
  %3014 = getelementptr inbounds i8, ptr %3011, i64 %3013
  store ptr %3014, ptr %123, align 8, !tbaa !5
  br label %3015

3015:                                             ; preds = %3010, %3007
  br label %3016

3016:                                             ; preds = %3015, %3000
  br label %3017

3017:                                             ; preds = %3016, %2981
  %3018 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3019 = trunc i8 %3018 to i1
  br i1 %3019, label %3027, label %3020

3020:                                             ; preds = %3017
  %3021 = load ptr, ptr %123, align 8, !tbaa !5
  %3022 = load ptr, ptr %122, align 8, !tbaa !5
  %3023 = ptrtoint ptr %3021 to i64
  %3024 = ptrtoint ptr %3022 to i64
  %3025 = sub i64 %3023, %3024
  %3026 = icmp slt i64 %3025, 2097152
  br i1 %3026, label %3027, label %3051

3027:                                             ; preds = %3020, %3017
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #14
  %3028 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %3029 = trunc i8 %3028 to i1
  %3030 = zext i1 %3029 to i64
  %3031 = select i1 %3029, i32 1, i32 0
  %3032 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3031, float noundef 1.000000e+00)
  store i32 %3032, ptr %164, align 4, !tbaa !9
  %3033 = load ptr, ptr %38, align 8, !tbaa !5
  %3034 = getelementptr inbounds %struct.ImGuiWindow, ptr %3033, i32 0, i32 78
  %3035 = load ptr, ptr %3034, align 8, !tbaa !185
  %3036 = load ptr, ptr %20, align 8, !tbaa !5
  %3037 = getelementptr inbounds %struct.ImGuiContext, ptr %3036, i32 0, i32 9
  %3038 = load ptr, ptr %3037, align 8, !tbaa !121
  %3039 = load ptr, ptr %20, align 8, !tbaa !5
  %3040 = getelementptr inbounds %struct.ImGuiContext, ptr %3039, i32 0, i32 10
  %3041 = load float, ptr %3040, align 8, !tbaa !48
  %3042 = load i32, ptr %164, align 4, !tbaa !9
  %3043 = load ptr, ptr %122, align 8, !tbaa !5
  %3044 = load ptr, ptr %123, align 8, !tbaa !5
  %3045 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3046 = trunc i8 %3045 to i1
  br i1 %3046, label %3047, label %3048

3047:                                             ; preds = %3027
  br label %3049

3048:                                             ; preds = %3027
  br label %3049

3049:                                             ; preds = %3048, %3047
  %3050 = phi ptr [ null, %3047 ], [ %118, %3048 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224) %3035, ptr noundef %3038, float noundef %3041, ptr noundef nonnull align 4 dereferenceable(8) %119, i32 noundef %3042, ptr noundef %3043, ptr noundef %3044, float noundef 0.000000e+00, ptr noundef %3050)
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #14
  br label %3051

3051:                                             ; preds = %3049, %3020
  br label %3052

3052:                                             ; preds = %3051, %2977
  %3053 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3054 = trunc i8 %3053 to i1
  br i1 %3054, label %3055, label %3060

3055:                                             ; preds = %3052
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #14
  %3056 = load ptr, ptr %20, align 8, !tbaa !5
  %3057 = getelementptr inbounds %struct.ImGuiContext, ptr %3056, i32 0, i32 10
  %3058 = load float, ptr %3057, align 8, !tbaa !48
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %166, float noundef 0.000000e+00, float noundef %3058)
  %3059 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %120, ptr noundef nonnull align 4 dereferenceable(8) %166)
  store <2 x float> %3059, ptr %165, align 4
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %165)
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #14
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %3060

3060:                                             ; preds = %3055, %3052
  %3061 = load i8, ptr %26, align 1, !tbaa !45, !range !43, !noundef !44
  %3062 = trunc i8 %3061 to i1
  br i1 %3062, label %3063, label %3067

3063:                                             ; preds = %3060
  %3064 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %3065 = trunc i8 %3064 to i1
  br i1 %3065, label %3067, label %3066

3066:                                             ; preds = %3063
  call void @_ZN5ImGui7PopFontEv()
  br label %3067

3067:                                             ; preds = %3066, %3063, %3060
  %3068 = load ptr, ptr %20, align 8, !tbaa !5
  %3069 = getelementptr inbounds %struct.ImGuiContext, ptr %3068, i32 0, i32 202
  %3070 = load i8, ptr %3069, align 8, !tbaa !192, !range !43, !noundef !44
  %3071 = trunc i8 %3070 to i1
  br i1 %3071, label %3072, label %3081

3072:                                             ; preds = %3067
  %3073 = load i8, ptr %26, align 1, !tbaa !45, !range !43, !noundef !44
  %3074 = trunc i8 %3073 to i1
  br i1 %3074, label %3075, label %3078

3075:                                             ; preds = %3072
  %3076 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %3077 = trunc i8 %3076 to i1
  br i1 %3077, label %3078, label %3081

3078:                                             ; preds = %3075, %3072
  %3079 = load ptr, ptr %122, align 8, !tbaa !5
  %3080 = load ptr, ptr %123, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %119, ptr noundef %3079, ptr noundef %3080)
  br label %3081

3081:                                             ; preds = %3078, %3075, %3067
  %3082 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3083 = load float, ptr %3082, align 4, !tbaa !89
  %3084 = fcmp ogt float %3083, 0.000000e+00
  br i1 %3084, label %3085, label %3104

3085:                                             ; preds = %3081
  %3086 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  %3087 = getelementptr inbounds %struct.ImVec2, ptr %3086, i32 0, i32 0
  %3088 = load float, ptr %3087, align 4, !tbaa !193
  %3089 = load ptr, ptr %22, align 8, !tbaa !5
  %3090 = getelementptr inbounds %struct.ImGuiStyle, ptr %3089, i32 0, i32 15
  %3091 = getelementptr inbounds %struct.ImVec2, ptr %3090, i32 0, i32 0
  %3092 = load float, ptr %3091, align 4, !tbaa !90
  %3093 = fadd float %3088, %3092
  %3094 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %3095 = getelementptr inbounds %struct.ImVec2, ptr %3094, i32 0, i32 1
  %3096 = load float, ptr %3095, align 4, !tbaa !180
  %3097 = load ptr, ptr %22, align 8, !tbaa !5
  %3098 = getelementptr inbounds %struct.ImGuiStyle, ptr %3097, i32 0, i32 11
  %3099 = getelementptr inbounds %struct.ImVec2, ptr %3098, i32 0, i32 1
  %3100 = load float, ptr %3099, align 4, !tbaa !88
  %3101 = fadd float %3096, %3100
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %167, float noundef %3093, float noundef %3101)
  %3102 = load ptr, ptr %10, align 8, !tbaa !5
  %3103 = load <2 x float>, ptr %167, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3103, ptr noundef %3102, ptr noundef null, i1 noundef zeroext true)
  br label %3104

3104:                                             ; preds = %3085, %3081
  %3105 = load i8, ptr %60, align 1, !tbaa !45, !range !43, !noundef !44
  %3106 = trunc i8 %3105 to i1
  br i1 %3106, label %3107, label %3113

3107:                                             ; preds = %3104
  %3108 = load i32, ptr %15, align 4, !tbaa !9
  %3109 = and i32 %3108, 2097152
  %3110 = icmp ne i32 %3109, 0
  br i1 %3110, label %3113, label %3111

3111:                                             ; preds = %3107
  %3112 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3112)
  br label %3113

3113:                                             ; preds = %3111, %3107, %3104
  br label %3114

3114:                                             ; preds = %3113
  br label %3115

3115:                                             ; preds = %3114
  br label %3116

3116:                                             ; preds = %3115
  %3117 = load i32, ptr %15, align 4, !tbaa !9
  %3118 = and i32 %3117, 32
  %3119 = icmp ne i32 %3118, 0
  br i1 %3119, label %3120, label %3123

3120:                                             ; preds = %3116
  %3121 = load i8, ptr %61, align 1, !tbaa !45, !range !43, !noundef !44
  %3122 = trunc i8 %3121 to i1
  store i1 %3122, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3126

3123:                                             ; preds = %3116
  %3124 = load i8, ptr %60, align 1, !tbaa !45, !range !43, !noundef !44
  %3125 = trunc i8 %3124 to i1
  store i1 %3125, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3126

3126:                                             ; preds = %3123, %3120
  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 4, ptr %121) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #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 %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #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 1, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #14
  br label %3127

3127:                                             ; preds = %3126, %369, %359, %314
  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 %3128

3128:                                             ; preds = %3127, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  %3129 = load i1, ptr %9, align 1
  ret i1 %3129

3130:                                             ; preds = %1951
  %3131 = load ptr, ptr %105, align 8
  %3132 = load i32, ptr %106, align 4
  %3133 = insertvalue { ptr, i32 } poison, ptr %3131, 0
  %3134 = insertvalue { ptr, i32 } %3133, i32 %3132, 1
  resume { ptr, i32 } %3134

3135:                                             ; preds = %1232
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728)) #4 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11

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

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

declare void @_ZN5ImGui8EndChildEv() #6

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

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

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

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

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

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

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

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114), i16 noundef zeroext) #6

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

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

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

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

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

; 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 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #9

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

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #6

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #6

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #6

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) #6

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() #6

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

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

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

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

; 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 #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #4 align 2

declare void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) #6

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

declare void @_ZN5ImGui7PopFontEv() #6

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 = { 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 #3 = { 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 #4 = { 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 #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { "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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 #9 = { 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 #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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #12 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #13 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #14 = { nounwind }
attributes #15 = { noreturn nounwind }
attributes #16 = { nounwind willreturn memory(read) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !14, i64 188}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !13, i64 20, !6, i64 48, !10, i64 56, !15, i64 60, !10, i64 68, !15, i64 72, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !16, i64 120, !16, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !15, i64 140, !15, i64 148, !15, i64 156, !15, i64 164, !15, i64 172, !14, i64 180, !14, i64 181, !14, i64 182, !14, i64 183, !14, i64 184, !14, i64 185, !14, i64 186, !14, i64 187, !14, i64 188, !14, i64 189, !14, i64 190, !14, i64 191, !14, i64 192, !7, i64 193, !17, i64 194, !17, i64 196, !17, i64 198, !10, i64 200, !7, i64 204, !7, i64 205, !7, i64 206, !14, i64 207, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !15, i64 236, !15, i64 244, !18, i64 256, !19, i64 272, !21, i64 600, !21, i64 616, !21, i64 632, !21, i64 648, !21, i64 664, !21, i64 680, !21, i64 696, !28, i64 712, !28, i64 716, !10, i64 720, !10, i64 724, !16, i64 728, !16, i64 732, !29, i64 736, !31, i64 752, !16, i64 768, !16, i64 772, !10, i64 776, !6, i64 784, !32, i64 792, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !7, i64 1064, !7, i64 1072, !14, i64 1104, !10, i64 1108, !10, i64 1112, !6, i64 1120, !6, i64 1128, !10, i64 1136, !10, i64 1140, !21, i64 1144, !17, i64 1160, !14, i64 1162, !14, i64 1162, !14, i64 1162}
!13 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !14, i64 24, !14, i64 25}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!19 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !16, i64 48, !16, i64 52, !20, i64 56, !20, i64 60, !20, i64 64, !10, i64 68, !10, i64 72, !21, i64 76, !21, i64 92, !22, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !14, i64 128, !14, i64 129, !14, i64 130, !15, i64 132, !23, i64 140, !10, i64 176, !10, i64 180, !24, i64 184, !6, i64 200, !6, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !16, i64 236, !16, i64 240, !25, i64 248, !26, i64 264, !26, i64 280, !27, i64 296, !7, i64 312}
!20 = !{!"_ZTS6ImVec1", !16, i64 0}
!21 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!22 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!23 = !{!"_ZTS16ImGuiMenuColumns", !16, i64 0, !16, i64 4, !16, i64 8, !7, i64 12, !7, i64 24}
!24 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!29 = !{!"_ZTS12ImGuiStorage", !30, i64 0}
!30 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS10ImDrawList", !33, i64 0, !34, i64 16, !35, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !6, i64 80, !6, i64 88, !36, i64 96, !37, i64 112, !38, i64 128, !39, i64 144, !41, i64 200}
!33 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!38 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{!"_ZTS9ImDrawCmd", !40, i64 0, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !6, i64 48}
!40 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!41 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !42, i64 8}
!42 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!14, !14, i64 0}
!46 = !{i64 0, i64 4, !47, i64 4, i64 4, !47}
!47 = !{!16, !16, i64 0}
!48 = !{!49, !16, i64 6712}
!49 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !50, i64 8, !51, i64 5472, !54, i64 5704, !10, i64 6692, !10, i64 6696, !6, i64 6704, !16, i64 6712, !16, i64 6716, !55, i64 6720, !56, i64 6936, !10, i64 6944, !10, i64 6948, !10, i64 6952, !10, i64 6956, !14, i64 6960, !14, i64 6961, !14, i64 6962, !14, i64 6963, !10, i64 6964, !6, i64 6968, !24, i64 6976, !24, i64 6992, !24, i64 7008, !24, i64 7024, !29, i64 7040, !10, i64 7056, !6, i64 7064, !6, i64 7072, !6, i64 7080, !6, i64 7088, !6, i64 7096, !6, i64 7104, !6, i64 7112, !15, i64 7120, !16, i64 7128, !10, i64 7132, !10, i64 7136, !14, i64 7140, !14, i64 7141, !16, i64 7144, !16, i64 7148, !10, i64 7152, !10, i64 7156, !16, i64 7160, !14, i64 7164, !14, i64 7165, !14, i64 7166, !14, i64 7167, !14, i64 7168, !14, i64 7169, !10, i64 7172, !10, i64 7176, !57, i64 7184, !15, i64 7192, !6, i64 7200, !58, i64 7208, !10, i64 7212, !10, i64 7216, !14, i64 7220, !14, i64 7221, !6, i64 7224, !10, i64 7232, !16, i64 7236, !59, i64 7240, !60, i64 7384, !61, i64 7408, !62, i64 7424, !63, i64 7440, !64, i64 7456, !64, i64 7472, !65, i64 7488, !16, i64 7504, !6, i64 7512, !6, i64 7520, !6, i64 7528, !10, i64 7536, !10, i64 7540, !6, i64 7544, !10, i64 7552, !10, i64 7556, !10, i64 7560, !10, i64 7564, !10, i64 7568, !10, i64 7572, !10, i64 7576, !10, i64 7580, !10, i64 7584, !10, i64 7588, !10, i64 7592, !58, i64 7596, !21, i64 7600, !10, i64 7616, !22, i64 7620, !10, i64 7624, !14, i64 7628, !14, i64 7629, !14, i64 7630, !14, i64 7631, !14, i64 7632, !14, i64 7633, !14, i64 7634, !10, i64 7636, !21, i64 7640, !14, i64 7656, !14, i64 7657, !10, i64 7660, !66, i64 7664, !10, i64 7668, !10, i64 7672, !10, i64 7676, !10, i64 7680, !67, i64 7688, !67, i64 7736, !67, i64 7784, !6, i64 7832, !10, i64 7840, !6, i64 7848, !6, i64 7856, !6, i64 7864, !16, i64 7872, !16, i64 7876, !14, i64 7880, !6, i64 7888, !6, i64 7896, !10, i64 7904, !10, i64 7908, !10, i64 7912, !10, i64 7916, !14, i64 7920, !16, i64 7924, !10, i64 7928, !14, i64 7932, !14, i64 7933, !14, i64 7934, !10, i64 7936, !10, i64 7940, !10, i64 7944, !68, i64 7952, !21, i64 8016, !10, i64 8032, !10, i64 8036, !16, i64 8040, !10, i64 8044, !10, i64 8048, !10, i64 8052, !10, i64 8056, !69, i64 8064, !7, i64 8080, !6, i64 8096, !70, i64 8104, !72, i64 8144, !73, i64 8160, !15, i64 8176, !74, i64 8184, !78, i64 11912, !10, i64 12032, !10, i64 12036, !16, i64 12040, !16, i64 12044, !7, i64 12048, !40, i64 12060, !16, i64 12076, !14, i64 12080, !14, i64 12081, !16, i64 12084, !16, i64 12088, !16, i64 12092, !10, i64 12096, !75, i64 12104, !18, i64 12120, !15, i64 12136, !15, i64 12144, !6, i64 12152, !80, i64 12160, !14, i64 12216, !16, i64 12220, !83, i64 12224, !84, i64 12240, !85, i64 12256, !14, i64 12272, !86, i64 12276, !6, i64 12280, !83, i64 12288, !16, i64 12304, !14, i64 12308, !10, i64 12312, !10, i64 12316, !10, i64 12320, !14, i64 12324, !10, i64 12328, !7, i64 12332, !10, i64 12812, !16, i64 12816, !10, i64 12820, !10, i64 12824, !10, i64 12828, !7, i64 12832}
!50 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !6, i64 24, !6, i64 32, !16, i64 40, !16, i64 44, !16, i64 48, !7, i64 52, !16, i64 140, !16, i64 144, !6, i64 152, !6, i64 160, !16, i64 168, !14, i64 172, !6, i64 176, !15, i64 184, !14, i64 192, !14, i64 193, !14, i64 194, !14, i64 195, !14, i64 196, !14, i64 197, !14, i64 198, !14, i64 199, !14, i64 200, !14, i64 201, !14, i64 202, !14, i64 203, !14, i64 204, !16, 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, !15, i64 288, !7, i64 296, !16, i64 304, !16, i64 308, !10, i64 312, !14, i64 316, !14, i64 317, !14, i64 318, !14, i64 319, !7, i64 320, !7, i64 832, !14, i64 916, !14, i64 917, !14, i64 918, !14, i64 919, !14, i64 920, !14, i64 921, !14, i64 922, !16, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !15, i64 948, !10, i64 956, !15, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !16, i64 5440, !17, i64 5444, !34, i64 5448}
!51 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !52, i64 192, !6, i64 208, !53, i64 216}
!52 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !15, i64 4, !16, i64 12, !16, i64 16, !15, i64 20, !15, i64 28, !10, i64 36, !16, i64 40, !16, i64 44, !16, i64 48, !16, i64 52, !15, i64 56, !16, i64 64, !16, i64 68, !15, i64 72, !15, i64 80, !15, i64 88, !16, i64 96, !16, i64 100, !16, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !10, i64 136, !15, i64 140, !15, i64 148, !15, i64 156, !15, i64 164, !16, i64 172, !14, i64 176, !14, i64 177, !14, i64 178, !16, i64 180, !16, i64 184, !7, i64 188}
!55 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !40, i64 28, !10, i64 44, !7, i64 48, !7, i64 144, !6, i64 208}
!56 = !{!"double", !7, i64 0}
!57 = !{!"long long", !7, i64 0}
!58 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!59 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !15, i64 20, !15, i64 28, !15, i64 36, !15, i64 44, !15, i64 52, !14, i64 60, !14, i64 61, !21, i64 64, !6, i64 80, !6, i64 88, !16, i64 96, !10, i64 100, !10, i64 104, !13, i64 108, !15, i64 136}
!60 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !16, i64 4, !10, i64 8, !10, i64 12, !14, i64 16}
!61 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!67 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !10, i64 8, !10, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !21, i64 28}
!68 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !14, i64 57, !14, i64 58}
!69 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !71, i64 0, !29, i64 16, !10, i64 32}
!71 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !34, i64 16, !75, i64 32, !75, i64 48, !14, i64 64, !10, i64 68, !16, i64 72, !76, i64 76, !16, i64 3696, !14, i64 3700, !14, i64 3701, !14, i64 3702, !10, i64 3704, !6, i64 3712, !6, i64 3720}
!75 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !16, i64 20, !77, i64 24}
!77 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 3582, !17, i64 3584, !10, i64 3588, !10, i64 3592}
!78 = !{!"_ZTS6ImFont", !26, i64 0, !16, i64 16, !16, i64 20, !34, i64 24, !79, i64 40, !6, i64 56, !15, i64 64, !6, i64 72, !6, i64 80, !17, i64 88, !17, i64 90, !17, i64 92, !14, i64 94, !16, i64 96, !16, i64 100, !16, i64 104, !10, i64 108, !7, i64 112}
!79 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS16ImGuiDockContext", !29, i64 0, !81, i64 16, !82, i64 32, !14, i64 48}
!81 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !6, i64 8}
!82 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS15ImGuiTextBuffer", !75, i64 0}
!84 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!85 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !75, i64 0}
!86 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!87 = !{!15, !16, i64 4}
!88 = !{!54, !16, i64 60}
!89 = !{!15, !16, i64 0}
!90 = !{!54, !16, i64 80}
!91 = !{!54, !16, i64 64}
!92 = !{!54, !16, i64 68}
!93 = !{!49, !6, i64 7064}
!94 = !{!12, !10, i64 384}
!95 = !{!12, !10, i64 392}
!96 = !{!12, !16, i64 172}
!97 = !{!49, !10, i64 7928}
!98 = !{!49, !6, i64 7888}
!99 = !{!49, !10, i64 7904}
!100 = !{!12, !10, i64 496}
!101 = !{!49, !10, i64 7152}
!102 = !{!49, !10, i64 7572}
!103 = !{!49, !10, i64 7560}
!104 = !{!49, !58, i64 7596}
!105 = !{!49, !10, i64 7216}
!106 = !{!74, !6, i64 56}
!107 = !{!74, !14, i64 64}
!108 = !{!74, !6, i64 24}
!109 = !{!74, !10, i64 4}
!110 = !{!74, !10, i64 8}
!111 = !{!74, !10, i64 0}
!112 = !{!74, !16, i64 72}
!113 = !{!74, !7, i64 88}
!114 = !{!50, !14, i64 316}
!115 = !{!49, !10, i64 7172}
!116 = !{!49, !10, i64 7176}
!117 = !{!49, !57, i64 7184}
!118 = !{!74, !10, i64 16}
!119 = !{!74, !6, i64 40}
!120 = !{!7, !7, i64 0}
!121 = !{!49, !6, i64 6704}
!122 = !{!78, !16, i64 20}
!123 = !{!78, !16, i64 96}
!124 = !{!78, !16, i64 100}
!125 = !{!78, !16, i64 104}
!126 = !{!78, !6, i64 72}
!127 = !{!78, !6, i64 56}
!128 = !{!129, !16, i64 4}
!129 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 3, !16, i64 4, !16, i64 8, !16, i64 12, !16, i64 16, !16, i64 20, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36}
!130 = !{!78, !16, i64 16}
!131 = !{!74, !14, i64 3702}
!132 = !{!74, !10, i64 68}
!133 = !{!74, !10, i64 3704}
!134 = !{!74, !6, i64 3712}
!135 = !{!74, !6, i64 3720}
!136 = !{!49, !14, i64 7165}
!137 = !{!49, !10, i64 12828}
!138 = !{!50, !16, i64 288}
!139 = !{!21, !16, i64 0}
!140 = !{!54, !16, i64 56}
!141 = !{!50, !16, i64 292}
!142 = !{!12, !16, i64 276}
!143 = !{!50, !14, i64 201}
!144 = !{!74, !14, i64 3701}
!145 = !{!50, !16, i64 948}
!146 = !{!50, !16, i64 952}
!147 = !{!74, !14, i64 3700}
!148 = !{!50, !14, i64 318}
!149 = !{!50, !14, i64 319}
!150 = !{!50, !14, i64 317}
!151 = !{!17, !17, i64 0}
!152 = !{!50, !10, i64 5448}
!153 = distinct !{!153, !154}
!154 = !{!"llvm.loop.mustprogress"}
!155 = !{!49, !14, i64 7164}
!156 = !{!50, !10, i64 956}
!157 = !{!49, !14, i64 209}
!158 = !{!12, !16, i64 144}
!159 = !{!50, !6, i64 264}
!160 = !{!74, !10, i64 80}
!161 = !{!74, !10, i64 84}
!162 = distinct !{!162, !154}
!163 = !{!74, !10, i64 48}
!164 = !{!34, !6, i64 8}
!165 = !{!34, !10, i64 0}
!166 = !{!74, !10, i64 32}
!167 = !{!168, !10, i64 0}
!168 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !6, i64 8, !17, i64 16, !10, i64 20, !6, i64 24, !10, i64 32, !10, i64 36, !14, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!169 = !{!168, !10, i64 4}
!170 = !{!168, !6, i64 8}
!171 = !{!168, !10, i64 20}
!172 = !{!168, !6, i64 24}
!173 = !{!168, !10, i64 32}
!174 = !{!168, !10, i64 36}
!175 = !{!168, !14, i64 40}
!176 = !{!74, !10, i64 76}
!177 = !{!168, !10, i64 44}
!178 = !{!168, !10, i64 48}
!179 = !{!168, !10, i64 52}
!180 = !{!21, !16, i64 4}
!181 = distinct !{!181, !154}
!182 = !{!40, !16, i64 12}
!183 = !{!40, !16, i64 4}
!184 = distinct !{!184, !154}
!185 = !{!12, !6, i64 784}
!186 = distinct !{!186, !154}
!187 = !{!50, !16, i64 16}
!188 = !{!74, !16, i64 3696}
!189 = !{!49, !14, i64 210}
!190 = !{!12, !6, i64 48}
!191 = !{!49, !6, i64 12152}
!192 = !{!49, !14, i64 12272}
!193 = !{!21, !16, i64 8}


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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVector.7 = 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.1 = external hidden unnamed_addr constant [117 x i8], align 1
@.str.55 = 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.56 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.69 = 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #4 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) #5

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

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

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

; 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 #4 align 2

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) local_unnamed_addr #6

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #6

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

declare noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef, float noundef) local_unnamed_addr #6

declare void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #6

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) local_unnamed_addr #6

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

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

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1163), ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

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

declare void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef) local_unnamed_addr #6

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

; 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 #9 align 2

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) local_unnamed_addr #6

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

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) local_unnamed_addr #6

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

declare noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef, i32 noundef) local_unnamed_addr #6

declare void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #6

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, ptr nocapture noundef nonnull readonly align 4 dereferenceable(8) %4, i32 noundef %5, ptr noundef %6, ptr noundef %7) local_unnamed_addr #10 personality ptr @__gxx_personality_v0 {
  %9 = alloca %struct.ImVec2, align 8
  %10 = alloca %struct.ImVec2, align 4
  %11 = alloca %struct.ImRect, align 8
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImRect, align 4
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca %struct.ImVec2, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i16, align 2
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %struct.ImVector.7, align 8
  %24 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %25 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %26 = alloca %struct.ImVec4, align 4
  %27 = alloca %struct.ImVec2, align 8
  %28 = alloca %struct.ImVec2, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 8
  %33 = alloca %struct.ImVec2, align 4
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImVec2, align 8
  %36 = alloca ptr, align 8
  %37 = alloca %struct.ImRect, align 4
  %38 = alloca %struct.ImVec2, align 8
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca %struct.ImVec2, align 8
  %41 = alloca %struct.ImVec2, align 4
  %42 = alloca %struct.ImRect, align 4
  %43 = alloca %struct.ImRect, align 4
  %44 = alloca %struct.ImVec2, align 8
  %45 = alloca %struct.ImVec2, align 8
  %46 = alloca %struct.ImRect, align 4
  %47 = alloca %struct.ImRect, align 4
  %48 = alloca %struct.ImVec2, align 8
  %49 = alloca %struct.ImVec2, align 8
  %50 = alloca %struct.ImVec2, align 8
  %51 = alloca %struct.ImVec2, align 8
  %52 = alloca %struct.ImVec2, align 4
  %53 = alloca %struct.ImVec2, align 8
  %54 = tail call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %55 = getelementptr inbounds i8, ptr %54, i64 188
  %56 = load i8, ptr %55, align 4, !tbaa !5, !range !41, !noundef !42
  %57 = trunc nuw i8 %56 to i1
  br i1 %57, label %1333, label %58

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

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

63:                                               ; preds = %58
  %64 = and i32 %5, 128
  %.not859.not = icmp eq i32 %64, 0
  %65 = and i32 %5, 1048576
  %66 = icmp ne i32 %65, 0
  %67 = and i32 %5, 1048704
  %.not860 = icmp eq i32 %67, 1048704
  br i1 %.not860, label %68, label %69

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

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

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

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

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

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

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

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

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

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

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

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

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

116:                                              ; preds = %109
  %117 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %87, ptr noundef nonnull %11)
  br i1 %117, label %120, label %118

118:                                              ; preds = %116
  %119 = load float, ptr %98, align 4, !tbaa !83
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %119)
  call void @_ZN5ImGui8EndGroupEv()
  br label %1332

120:                                              ; preds = %116
  %121 = getelementptr inbounds i8, ptr %75, i64 6004
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %121)
  %122 = getelementptr inbounds i8, ptr %75, i64 5768
  %123 = load float, ptr %122, align 4, !tbaa !86
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 6, float noundef %123)
  %124 = getelementptr inbounds i8, ptr %75, i64 5772
  %125 = load float, ptr %124, align 4, !tbaa !87
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %125)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %97)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #15
  %126 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %126, ptr %15, align 8
  %127 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %0, i32 noundef %87, ptr noundef nonnull align 4 dereferenceable(8) %15, i1 noundef zeroext true, i32 noundef 65540)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #15
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  br i1 %127, label %.thread, label %138

.thread:                                          ; preds = %120
  %128 = getelementptr inbounds i8, ptr %75, i64 7064
  %129 = load ptr, ptr %128, align 8, !tbaa !88
  %130 = getelementptr inbounds i8, ptr %129, i64 384
  %131 = load i32, ptr %130, align 8, !tbaa !89
  %132 = getelementptr inbounds i8, ptr %129, i64 392
  %133 = load i32, ptr %132, align 8, !tbaa !90
  %134 = or i32 %133, %131
  store i32 %134, ptr %132, align 8, !tbaa !90
  %135 = getelementptr inbounds i8, ptr %129, i64 172
  %136 = load float, ptr %135, align 4, !tbaa !91
  %137 = fsub float %.sroa.0439.0.copyload, %136
  br label %142

138:                                              ; preds = %120
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1332

139:                                              ; preds = %109
  %140 = load float, ptr %98, align 4, !tbaa !83
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %140)
  %141 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %87, ptr noundef nonnull %11)
  br i1 %141, label %142, label %1332

142:                                              ; preds = %.thread, %139
  %.sroa.0439.1 = phi float [ %.sroa.0439.0.copyload, %139 ], [ %137, %.thread ]
  %.1788 = phi ptr [ %54, %139 ], [ %129, %.thread ]
  %143 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %87)
  br i1 %143, label %144, label %146

144:                                              ; preds = %142
  %145 = getelementptr inbounds i8, ptr %75, i64 7928
  store i32 1, ptr %145, align 8, !tbaa !92
  br label %146

146:                                              ; preds = %144, %142
  %147 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %87)
  %148 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef nonnull %54, i32 noundef %87)
  br i1 %148, label %149, label %159

149:                                              ; preds = %146
  %150 = getelementptr inbounds i8, ptr %75, i64 7888
  %151 = load ptr, ptr %150, align 8, !tbaa !93
  %152 = icmp eq ptr %151, %54
  br i1 %152, label %153, label %159

153:                                              ; preds = %149
  %154 = getelementptr inbounds i8, ptr %75, i64 7904
  %155 = load i32, ptr %154, align 8, !tbaa !94
  %156 = getelementptr inbounds i8, ptr %54, i64 496
  %157 = load i32, ptr %156, align 8, !tbaa !95
  %158 = icmp eq i32 %155, %157
  br label %159

159:                                              ; preds = %149, %153, %146
  %160 = phi i1 [ false, %146 ], [ false, %149 ], [ %158, %153 ]
  br i1 %143, label %161, label %165

161:                                              ; preds = %159
  %162 = getelementptr inbounds i8, ptr %75, i64 1056
  %163 = load i8, ptr %162, align 8, !tbaa !96, !range !41, !noundef !42
  %164 = trunc nuw i8 %163 to i1
  br label %165

165:                                              ; preds = %161, %159
  %166 = phi i1 [ false, %159 ], [ %164, %161 ]
  %167 = getelementptr inbounds i8, ptr %75, i64 7152
  %168 = load i32, ptr %167, align 8, !tbaa !97
  %.not866 = icmp eq i32 %168, %87
  br i1 %.not866, label %181, label %169

169:                                              ; preds = %165
  %170 = getelementptr inbounds i8, ptr %75, i64 7572
  %171 = load i32, ptr %170, align 4, !tbaa !98
  %172 = icmp eq i32 %171, %87
  br i1 %172, label %181, label %173

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %75, i64 7560
  %175 = load i32, ptr %174, align 8, !tbaa !99
  %176 = icmp eq i32 %175, %87
  br i1 %176, label %177, label %181

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %75, i64 7596
  %179 = load i32, ptr %178, align 4, !tbaa !100
  %180 = icmp eq i32 %179, 3
  br label %181

181:                                              ; preds = %169, %177, %173, %165
  %182 = phi i1 [ false, %165 ], [ true, %169 ], [ false, %173 ], [ %180, %177 ]
  %183 = icmp ne ptr %147, null
  %or.cond = and i1 %66, %183
  br i1 %or.cond, label %184, label %195

184:                                              ; preds = %181
  %185 = icmp eq i32 %168, 0
  br i1 %185, label %186, label %191

186:                                              ; preds = %184
  %187 = getelementptr inbounds i8, ptr %75, i64 7216
  %188 = load i32, ptr %187, align 8, !tbaa !101
  %189 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.1788, i32 noundef 1)
  %190 = icmp eq i32 %188, %189
  %.pre = load i32, ptr %167, align 8, !tbaa !97
  br label %191

191:                                              ; preds = %186, %184
  %192 = phi i32 [ %.pre, %186 ], [ %168, %184 ]
  %.ph = phi i1 [ %190, %186 ], [ false, %184 ]
  %193 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.1788, i32 noundef 1)
  %194 = icmp eq i32 %192, %193
  %.pre1054 = load i32, ptr %167, align 8, !tbaa !97
  br label %195

195:                                              ; preds = %181, %191
  %196 = phi i32 [ %.pre1054, %191 ], [ %168, %181 ]
  %197 = phi i1 [ %.ph, %191 ], [ false, %181 ]
  %198 = phi i1 [ %194, %191 ], [ false, %181 ]
  %.not867 = icmp eq i32 %196, %87
  br i1 %.not867, label %199, label %.thread994

199:                                              ; preds = %195
  %brmerge898 = select i1 %148, i1 true, i1 %166
  %200 = select i1 %brmerge898, i1 true, i1 %197
  %spec.select988 = select i1 %200, i1 true, i1 %182
  %201 = select i1 %spec.select988, i1 true, i1 %198
  br label %262

.thread994:                                       ; preds = %195
  %202 = and i32 %5, 16
  %.not868 = icmp ne i32 %202, 0
  %brmerge = select i1 %.not868, i1 true, i1 %182
  %203 = xor i1 %66, true
  %spec.select984 = and i1 %brmerge, %203
  %brmerge898995 = select i1 %148, i1 true, i1 %166
  %204 = select i1 %brmerge898995, i1 true, i1 %197
  %spec.select988997 = select i1 %204, i1 true, i1 %182
  %205 = select i1 %spec.select988997, i1 true, i1 %198
  br i1 %205, label %206, label %262

206:                                              ; preds = %.thread994
  %207 = getelementptr inbounds i8, ptr %75, i64 8184
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %207)
  %208 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16
  %209 = trunc i64 %208 to i32
  %210 = getelementptr inbounds i8, ptr %75, i64 8232
  %211 = add nsw i32 %209, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %210, i32 noundef %211)
  %212 = getelementptr inbounds i8, ptr %75, i64 8240
  %213 = load ptr, ptr %212, align 8, !tbaa !102
  %214 = sext i32 %211 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %213, ptr nonnull align 1 %2, i64 %214, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #15
  store ptr null, ptr %16, align 8, !tbaa !43
  %215 = getelementptr inbounds i8, ptr %75, i64 8200
  %216 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %215, i32 noundef %216)
  %217 = getelementptr inbounds i8, ptr %75, i64 8216
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %217, i32 noundef 0)
  %218 = getelementptr inbounds i8, ptr %75, i64 8248
  store i8 0, ptr %218, align 8, !tbaa !103
  %219 = getelementptr inbounds i8, ptr %75, i64 8208
  %220 = load ptr, ptr %219, align 8, !tbaa !104
  %221 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %220, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %16)
  %222 = getelementptr inbounds i8, ptr %75, i64 8188
  store i32 %221, ptr %222, align 4, !tbaa !105
  %223 = load ptr, ptr %16, align 8, !tbaa !43
  %224 = ptrtoint ptr %223 to i64
  %225 = ptrtoint ptr %2 to i64
  %226 = sub i64 %224, %225
  %227 = trunc i64 %226 to i32
  %228 = getelementptr inbounds i8, ptr %75, i64 8192
  store i32 %227, ptr %228, align 8, !tbaa !106
  %229 = load i32, ptr %207, align 8, !tbaa !107
  %230 = icmp eq i32 %229, %87
  br i1 %230, label %231, label %232

231:                                              ; preds = %206
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %207)
  br label %236

232:                                              ; preds = %206
  store i32 %87, ptr %207, align 8, !tbaa !107
  %233 = getelementptr inbounds i8, ptr %75, i64 8256
  store float 0.000000e+00, ptr %233, align 8, !tbaa !108
  %234 = getelementptr inbounds i8, ptr %75, i64 8260
  %235 = zext i1 %203 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %234, i32 noundef %235)
  %spec.select899 = select i1 %160, i1 true, i1 %spec.select984
  %spec.select989 = select i1 %203, i1 %spec.select899, i1 false
  br label %236

236:                                              ; preds = %232, %231
  %.0794 = phi i1 [ %spec.select984, %231 ], [ %spec.select989, %232 ]
  %237 = and i32 %5, 8192
  %.not870 = icmp eq i32 %237, 0
  br i1 %.not870, label %240, label %238

238:                                              ; preds = %236
  %239 = getelementptr inbounds i8, ptr %75, i64 8272
  store i8 1, ptr %239, align 4, !tbaa !109
  br label %240

240:                                              ; preds = %238, %236
  br i1 %66, label %249, label %241

241:                                              ; preds = %240
  %not. = xor i1 %148, true
  %242 = select i1 %not., i1 true, i1 %160
  br i1 %242, label %243, label %248

243:                                              ; preds = %241
  br i1 %166, label %244, label %249

244:                                              ; preds = %243
  %245 = getelementptr inbounds i8, ptr %75, i64 324
  %246 = load i8, ptr %245, align 4, !tbaa !110, !range !41, !noundef !42
  %247 = trunc nuw i8 %246 to i1
  br i1 %247, label %248, label %249

248:                                              ; preds = %244, %241
  br label %249

249:                                              ; preds = %240, %243, %244, %248
  %.1795 = phi i1 [ %.0794, %240 ], [ true, %248 ], [ %.0794, %244 ], [ %.0794, %243 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #15
  %.pre1055 = load i32, ptr %167, align 8, !tbaa !97
  %.not871 = icmp ne i32 %.pre1055, %87
  %brmerge901.not = and i1 %spec.select988997, %.not871
  br i1 %brmerge901.not, label %250, label %.thread1004

250:                                              ; preds = %249
  %251 = load i32, ptr %207, align 8, !tbaa !107
  %252 = icmp eq i32 %251, %87
  br i1 %252, label %253, label %.critedge

.critedge:                                        ; preds = %250
  call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.1, i32 noundef 3887, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

253:                                              ; preds = %250
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %87, ptr noundef nonnull %54)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %87, ptr noundef nonnull %54)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %54)
  %254 = getelementptr inbounds i8, ptr %75, i64 7172
  %brmerge902.not = icmp eq i32 %67, 0
  %spec.select.v = select i1 %brmerge902.not, i32 3, i32 15
  %255 = load <2 x i32>, ptr %254, align 4, !tbaa !111
  %256 = insertelement <2 x i32> <i32 poison, i32 2>, i32 %spec.select.v, i64 0
  %257 = or <2 x i32> %255, %256
  store <2 x i32> %257, ptr %254, align 4, !tbaa !111
  %258 = getelementptr inbounds i8, ptr %75, i64 7184
  %259 = load i64, ptr %258, align 8, !tbaa !112
  %spec.select903.v = select i1 %66, i64 480, i64 384
  %spec.select903 = or i64 %259, %spec.select903.v
  store i64 %spec.select903, ptr %258, align 8, !tbaa !112
  %.not873 = icmp eq i32 %72, 0
  br i1 %.not873, label %.thread1004, label %260

260:                                              ; preds = %253
  %261 = or i64 %spec.select903, 1
  store i64 %261, ptr %258, align 8, !tbaa !112
  br label %.thread1004

262:                                              ; preds = %.thread994, %199
  %.ph1075 = phi i32 [ %87, %199 ], [ %196, %.thread994 ]
  %.ph1076 = phi i1 [ %201, %199 ], [ false, %.thread994 ]
  %.2796.ph = phi i1 [ false, %199 ], [ %spec.select984, %.thread994 ]
  %263 = icmp eq i32 %.ph1075, %87
  %264 = icmp eq ptr %147, null
  %or.cond5 = and i1 %264, %263
  br i1 %or.cond5, label %265, label %.thread1004

265:                                              ; preds = %262
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %.thread1004

.thread1004:                                      ; preds = %249, %260, %253, %265, %262
  %.07891086 = phi ptr [ %207, %260 ], [ %207, %253 ], [ null, %265 ], [ %147, %262 ], [ %207, %249 ]
  %.27961083 = phi i1 [ %.1795, %260 ], [ %.1795, %253 ], [ %.2796.ph, %265 ], [ %.2796.ph, %262 ], [ %.1795, %249 ]
  %266 = phi i1 [ true, %260 ], [ true, %253 ], [ %.ph1076, %265 ], [ %.ph1076, %262 ], [ true, %249 ]
  %267 = load i32, ptr %167, align 8, !tbaa !97
  %268 = icmp eq i32 %267, %87
  br i1 %268, label %.thread1006, label %272

.thread1006:                                      ; preds = %.thread1004
  %269 = getelementptr inbounds i8, ptr %75, i64 1056
  %270 = load i8, ptr %269, align 8, !tbaa !96, !range !41, !noundef !42
  %271 = trunc nuw i8 %270 to i1
  %.not1035 = xor i1 %266, true
  %not.brmerge905 = and i1 %.not1035, %271
  %spec.select985 = zext i1 %not.brmerge905 to i8
  br label %275

272:                                              ; preds = %.thread1004
  %273 = icmp ne ptr %.07891086, null
  %274 = select i1 %273, i1 %198, i1 false
  br label %275

275:                                              ; preds = %.thread1006, %272
  %.07901008 = phi i8 [ 0, %272 ], [ %spec.select985, %.thread1006 ]
  %276 = phi i1 [ %274, %272 ], [ true, %.thread1006 ]
  %277 = icmp ne ptr %.07891086, null
  br i1 %277, label %278, label %.thread1009

278:                                              ; preds = %275
  %279 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  %spec.select906 = select i1 %279, i1 %276, i1 false
  %or.cond986 = select i1 %77, i1 %276, i1 false
  br i1 %or.cond986, label %280, label %.thread1009

280:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #15
  store ptr null, ptr %17, align 8, !tbaa !43
  %281 = getelementptr inbounds i8, ptr %.07891086, i64 16
  %282 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %281, i32 noundef %282)
  %283 = getelementptr inbounds i8, ptr %.07891086, i64 24
  %284 = load ptr, ptr %283, align 8, !tbaa !104
  %285 = load i32, ptr %281, align 8, !tbaa !113
  %286 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %284, i32 noundef %285, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %17)
  %287 = getelementptr inbounds i8, ptr %.07891086, i64 4
  store i32 %286, ptr %287, align 4, !tbaa !105
  %288 = load ptr, ptr %17, align 8, !tbaa !43
  %289 = ptrtoint ptr %288 to i64
  %290 = ptrtoint ptr %2 to i64
  %291 = sub i64 %289, %290
  %292 = trunc i64 %291 to i32
  %293 = getelementptr inbounds i8, ptr %.07891086, i64 8
  store i32 %292, ptr %293, align 8, !tbaa !106
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  %294 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  %295 = and i1 %spec.select906, %294
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #15
  br label %.thread1009

.thread1009:                                      ; preds = %275, %280, %278
  %.0798.in = phi i1 [ %295, %280 ], [ %spec.select906, %278 ], [ false, %275 ]
  %brmerge908 = select i1 %276, i1 true, i1 %.0798.in
  br i1 %brmerge908, label %300, label %296

296:                                              ; preds = %.thread1009
  %297 = load i32, ptr %167, align 8, !tbaa !97
  %298 = icmp eq i32 %297, %87
  %.not = xor i1 %77, true
  %299 = and i1 %298, %.not
  %or.cond909 = and i1 %277, %299
  br i1 %or.cond909, label %301, label %305

300:                                              ; preds = %.thread1009
  %.not.old = xor i1 %77, true
  %or.cond9.old = and i1 %277, %.not.old
  br i1 %or.cond9.old, label %301, label %305

301:                                              ; preds = %296, %300
  %302 = getelementptr inbounds i8, ptr %.07891086, i64 64
  %303 = load i8, ptr %302, align 8, !tbaa !103, !range !41, !noundef !42
  %304 = trunc nuw i8 %303 to i1
  br label %305

305:                                              ; preds = %301, %300, %296
  %306 = phi i1 [ false, %300 ], [ false, %296 ], [ %304, %301 ]
  %.not874 = icmp eq ptr %1, null
  br i1 %.not874, label %315, label %307

307:                                              ; preds = %305
  br i1 %306, label %308, label %311

308:                                              ; preds = %307
  %309 = getelementptr inbounds i8, ptr %.07891086, i64 40
  %310 = load ptr, ptr %309, align 8, !tbaa !114
  br label %311

311:                                              ; preds = %307, %308
  %312 = phi ptr [ %310, %308 ], [ %2, %307 ]
  %313 = load i8, ptr %312, align 1, !tbaa !115
  %314 = icmp eq i8 %313, 0
  br label %315

315:                                              ; preds = %311, %305
  %316 = phi i1 [ false, %305 ], [ %314, %311 ]
  %brmerge910 = select i1 %.not864, i1 true, i1 %316
  br i1 %brmerge910, label %350, label %317

317:                                              ; preds = %315
  %318 = getelementptr inbounds i8, ptr %75, i64 6704
  %319 = load ptr, ptr %318, align 8, !tbaa !116
  %320 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114) %319, i16 noundef zeroext 42)
  %321 = getelementptr inbounds i8, ptr %75, i64 11912
  %322 = load ptr, ptr %318, align 8, !tbaa !116
  %323 = getelementptr inbounds i8, ptr %322, i64 20
  %324 = load float, ptr %323, align 4, !tbaa !117
  %325 = getelementptr inbounds i8, ptr %75, i64 11932
  store float %324, ptr %325, align 4, !tbaa !117
  %326 = getelementptr inbounds i8, ptr %322, i64 96
  %327 = load float, ptr %326, align 8, !tbaa !118
  %328 = getelementptr inbounds i8, ptr %75, i64 12008
  store float %327, ptr %328, align 8, !tbaa !118
  %329 = getelementptr inbounds i8, ptr %322, i64 64
  %330 = getelementptr inbounds i8, ptr %75, i64 11976
  %331 = load i64, ptr %329, align 8
  store i64 %331, ptr %330, align 8
  %332 = getelementptr inbounds i8, ptr %322, i64 100
  %333 = getelementptr inbounds i8, ptr %75, i64 12012
  %334 = load <2 x float>, ptr %332, align 4, !tbaa !85
  store <2 x float> %334, ptr %333, align 4, !tbaa !85
  %335 = getelementptr inbounds i8, ptr %322, i64 72
  %336 = load ptr, ptr %335, align 8, !tbaa !119
  %337 = getelementptr inbounds i8, ptr %75, i64 11984
  store ptr %336, ptr %337, align 8, !tbaa !119
  %338 = getelementptr inbounds i8, ptr %75, i64 11968
  store ptr %320, ptr %338, align 8, !tbaa !120
  %339 = getelementptr inbounds i8, ptr %320, i64 4
  %340 = load float, ptr %339, align 4, !tbaa !121
  %341 = getelementptr inbounds i8, ptr %75, i64 11928
  store float %340, ptr %341, align 8, !tbaa !123
  %342 = getelementptr inbounds i8, ptr %75, i64 11952
  %343 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
  br i1 %343, label %344, label %.critedge11

344:                                              ; preds = %317
  %345 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %321)
  br i1 %345, label %346, label %.critedge11

346:                                              ; preds = %344
  %347 = getelementptr inbounds i8, ptr %75, i64 11936
  %348 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %347)
  br i1 %348, label %349, label %.critedge11

.critedge11:                                      ; preds = %344, %317, %346
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.1, i32 noundef 3948, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

349:                                              ; preds = %346
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %321)
  br label %350

350:                                              ; preds = %315, %349
  %351 = load i32, ptr %167, align 8, !tbaa !97
  %352 = icmp eq i32 %351, %87
  br i1 %352, label %353, label %496

353:                                              ; preds = %350
  br i1 %277, label %355, label %354

354:                                              ; preds = %353
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.1, i32 noundef 3956, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

355:                                              ; preds = %353
  %356 = getelementptr inbounds i8, ptr %.07891086, i64 8
  %357 = load i32, ptr %356, align 8, !tbaa !106
  %358 = getelementptr inbounds i8, ptr %.07891086, i64 3702
  store i8 0, ptr %358, align 2, !tbaa !124
  %359 = getelementptr inbounds i8, ptr %.07891086, i64 68
  store i32 %3, ptr %359, align 4, !tbaa !125
  %360 = getelementptr inbounds i8, ptr %.07891086, i64 3704
  store i32 %5, ptr %360, align 8, !tbaa !126
  %361 = getelementptr inbounds i8, ptr %.07891086, i64 3712
  store ptr %6, ptr %361, align 8, !tbaa !127
  %362 = getelementptr inbounds i8, ptr %.07891086, i64 3720
  store ptr %7, ptr %362, align 8, !tbaa !128
  %363 = getelementptr inbounds i8, ptr %75, i64 304
  %364 = load i8, ptr %363, align 8, !tbaa !96, !range !41, !noundef !42
  %365 = xor i8 %364, 1
  %366 = getelementptr inbounds i8, ptr %75, i64 7165
  store i8 %365, ptr %366, align 1, !tbaa !129
  %367 = getelementptr inbounds i8, ptr %75, i64 12828
  store i32 1, ptr %367, align 4, !tbaa !130
  %368 = getelementptr inbounds i8, ptr %75, i64 296
  %369 = load float, ptr %368, align 8, !tbaa !131
  %370 = load float, ptr %11, align 8, !tbaa !132
  %371 = fsub float %369, %370
  %372 = load float, ptr %97, align 4, !tbaa !133
  %373 = fsub float %371, %372
  %374 = getelementptr inbounds i8, ptr %.07891086, i64 72
  %375 = load float, ptr %374, align 8, !tbaa !108
  %376 = fadd float %373, %375
  br i1 %66, label %377, label %385

377:                                              ; preds = %355
  %378 = getelementptr inbounds i8, ptr %75, i64 300
  %379 = load float, ptr %378, align 4, !tbaa !134
  %380 = getelementptr inbounds i8, ptr %.1788, i64 276
  %381 = load float, ptr %380, align 4, !tbaa !135
  %382 = fsub float %379, %381
  %383 = load float, ptr %98, align 4, !tbaa !83
  %384 = fsub float %382, %383
  br label %389

385:                                              ; preds = %355
  %386 = getelementptr inbounds i8, ptr %75, i64 6712
  %387 = load float, ptr %386, align 8, !tbaa !44
  %388 = fmul float %387, 5.000000e-01
  br label %389

389:                                              ; preds = %385, %377
  %390 = phi float [ %384, %377 ], [ %388, %385 ]
  %391 = getelementptr inbounds i8, ptr %75, i64 209
  %392 = load i8, ptr %391, align 1, !tbaa !136, !range !41, !noundef !42
  %393 = trunc nuw i8 %392 to i1
  br i1 %.27961083, label %399, label %394

394:                                              ; preds = %389
  %.not911 = xor i1 %143, true
  %brmerge912 = select i1 %.not911, i1 true, i1 %393
  br i1 %brmerge912, label %401, label %395

395:                                              ; preds = %394
  %396 = getelementptr inbounds i8, ptr %75, i64 1061
  %397 = load i8, ptr %396, align 1, !tbaa !96, !range !41, !noundef !42
  %398 = trunc nuw i8 %397 to i1
  br i1 %398, label %399, label %401

399:                                              ; preds = %395, %389
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  %400 = getelementptr inbounds i8, ptr %.07891086, i64 3701
  store i8 1, ptr %400, align 1, !tbaa !137
  br label %436

401:                                              ; preds = %394, %395
  %402 = select i1 %143, i1 %393, i1 false
  br i1 %402, label %403, label %408

403:                                              ; preds = %401
  %404 = getelementptr inbounds i8, ptr %75, i64 1061
  %405 = load i8, ptr %404, align 1, !tbaa !96, !range !41, !noundef !42
  %406 = trunc nuw i8 %405 to i1
  br i1 %406, label %407, label %408

407:                                              ; preds = %403
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef 2097164)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef 6291469)
  br label %436

408:                                              ; preds = %401, %403
  %409 = getelementptr inbounds i8, ptr %75, i64 1056
  %410 = load i8, ptr %409, align 8, !tbaa !96, !range !41, !noundef !42
  %411 = trunc nuw i8 %410 to i1
  br i1 %411, label %412, label %419

412:                                              ; preds = %408
  %413 = getelementptr inbounds i8, ptr %.07891086, i64 3701
  %414 = load i8, ptr %413, align 1, !tbaa !137, !range !41, !noundef !42
  %415 = trunc nuw i8 %414 to i1
  br i1 %415, label %419, label %416

416:                                              ; preds = %412
  br i1 %143, label %417, label %436

417:                                              ; preds = %416
  %418 = getelementptr inbounds i8, ptr %.07891086, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.07891086, ptr noundef nonnull %418, float noundef %376, float noundef %390)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br label %436

419:                                              ; preds = %412, %408
  %420 = trunc nuw i8 %364 to i1
  br i1 %420, label %421, label %436

421:                                              ; preds = %419
  %422 = getelementptr inbounds i8, ptr %.07891086, i64 3701
  %423 = load i8, ptr %422, align 1, !tbaa !137, !range !41, !noundef !42
  %424 = trunc nuw i8 %423 to i1
  br i1 %424, label %436, label %425

425:                                              ; preds = %421
  %426 = getelementptr inbounds i8, ptr %75, i64 956
  %427 = load float, ptr %426, align 4, !tbaa !138
  %428 = fcmp une float %427, 0.000000e+00
  br i1 %428, label %433, label %429

429:                                              ; preds = %425
  %430 = getelementptr inbounds i8, ptr %75, i64 960
  %431 = load float, ptr %430, align 4, !tbaa !139
  %432 = fcmp une float %431, 0.000000e+00
  br i1 %432, label %433, label %436

433:                                              ; preds = %429, %425
  %434 = getelementptr inbounds i8, ptr %.07891086, i64 76
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.07891086, ptr noundef nonnull %434, float noundef %376, float noundef %390)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  %435 = getelementptr inbounds i8, ptr %.07891086, i64 3700
  store i8 1, ptr %435, align 4, !tbaa !140
  br label %436

436:                                              ; preds = %407, %419, %421, %429, %433, %416, %417, %399
  %437 = getelementptr inbounds i8, ptr %.07891086, i64 3701
  %438 = load i8, ptr %437, align 1, !tbaa !137, !range !41, !noundef !42
  %439 = trunc nuw i8 %438 to i1
  br i1 %439, label %440, label %444

440:                                              ; preds = %436
  %441 = load i8, ptr %363, align 8, !tbaa !96, !range !41, !noundef !42
  %442 = trunc nuw i8 %441 to i1
  br i1 %442, label %444, label %443

443:                                              ; preds = %440
  store i8 0, ptr %437, align 1, !tbaa !137
  br label %444

444:                                              ; preds = %443, %440, %436
  %445 = getelementptr inbounds i8, ptr %75, i64 324
  %446 = load i8, ptr %445, align 4, !tbaa !110, !range !41, !noundef !42
  %447 = trunc nuw i8 %446 to i1
  br i1 %447, label %448, label %453

448:                                              ; preds = %444
  %449 = getelementptr inbounds i8, ptr %75, i64 326
  %450 = load i8, ptr %449, align 2, !tbaa !141, !range !41, !noundef !42
  %451 = trunc nuw i8 %450 to i1
  %.not916 = xor i1 %451, true
  %452 = select i1 %451, i1 %393, i1 false
  br i1 %452, label %454, label %458

453:                                              ; preds = %444
  br i1 %393, label %454, label %458

454:                                              ; preds = %448, %453
  %455 = getelementptr inbounds i8, ptr %75, i64 327
  %456 = load i8, ptr %455, align 1, !tbaa !142, !range !41, !noundef !42
  %457 = trunc nuw i8 %456 to i1
  br label %458

458:                                              ; preds = %448, %453, %454
  %459 = phi i1 [ %.not916, %448 ], [ false, %453 ], [ %457, %454 ]
  br i1 %.not862, label %474, label %460

460:                                              ; preds = %458
  %461 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  %.not919 = xor i1 %461, true
  %brmerge920 = select i1 %.not919, i1 true, i1 %459
  br i1 %brmerge920, label %474, label %462

462:                                              ; preds = %460
  %463 = getelementptr inbounds i8, ptr %75, i64 325
  %464 = load i8, ptr %463, align 1, !tbaa !143, !range !41, !noundef !42
  %465 = trunc nuw i8 %464 to i1
  %brmerge921 = or i1 %77, %465
  br i1 %brmerge921, label %474, label %466

466:                                              ; preds = %462
  %467 = getelementptr inbounds i8, ptr %75, i64 5456
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #15
  store i16 9, ptr %18, align 2, !tbaa !144
  %468 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %467, ptr noundef nonnull align 2 dereferenceable(2) %18)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #15
  br i1 %468, label %474, label %469

469:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #15
  store i32 9, ptr %19, align 4, !tbaa !111
  %470 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %19, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %470, label %471, label %473

471:                                              ; preds = %469
  %472 = load i32, ptr %19, align 4, !tbaa !111
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %472)
  br label %473

473:                                              ; preds = %471, %469
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #15
  br label %474

474:                                              ; preds = %462, %460, %466, %473, %458
  %475 = getelementptr inbounds i8, ptr %75, i64 5456
  %476 = load i32, ptr %475, align 8, !tbaa !145
  %477 = icmp sgt i32 %476, 0
  br i1 %477, label %478, label %496

478:                                              ; preds = %474
  %brmerge922 = or i1 %77, %459
  %brmerge923 = select i1 %brmerge922, i1 true, i1 %182
  br i1 %brmerge923, label %.loopexit1042, label %.lr.ph

.lr.ph:                                           ; preds = %478
  %479 = getelementptr inbounds i8, ptr %75, i64 325
  br label %480

480:                                              ; preds = %.lr.ph, %492
  %.08151045 = phi i32 [ 0, %.lr.ph ], [ %493, %492 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #15
  %481 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %475, i32 noundef %.08151045)
  %482 = load i16, ptr %481, align 2, !tbaa !144
  %483 = zext i16 %482 to i32
  store i32 %483, ptr %20, align 4, !tbaa !111
  %484 = icmp eq i16 %482, 9
  br i1 %484, label %485, label %488

485:                                              ; preds = %480
  %486 = load i8, ptr %479, align 1, !tbaa !143, !range !41, !noundef !42
  %487 = trunc nuw i8 %486 to i1
  br i1 %487, label %492, label %488

488:                                              ; preds = %485, %480
  %489 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %489, label %490, label %492

490:                                              ; preds = %488
  %491 = load i32, ptr %20, align 4, !tbaa !111
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %491)
  br label %492

492:                                              ; preds = %488, %490, %485
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #15
  %493 = add nuw nsw i32 %.08151045, 1
  %494 = load i32, ptr %475, align 8, !tbaa !145
  %495 = icmp slt i32 %493, %494
  br i1 %495, label %480, label %.loopexit1042, !llvm.loop !146

.loopexit1042:                                    ; preds = %492, %478
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %475, i32 noundef 0)
  br label %496

496:                                              ; preds = %474, %.loopexit1042, %350
  %.0813 = phi i32 [ 0, %350 ], [ %357, %.loopexit1042 ], [ %357, %474 ]
  %497 = load i32, ptr %167, align 8, !tbaa !97
  %498 = icmp eq i32 %497, %87
  br i1 %498, label %499, label %784

499:                                              ; preds = %496
  %500 = getelementptr inbounds i8, ptr %75, i64 7164
  %501 = load i8, ptr %500, align 4, !tbaa !148, !range !41, !noundef !42
  %502 = trunc nuw i8 %501 to i1
  br i1 %502, label %.thread1101, label %503

503:                                              ; preds = %499
  %504 = trunc nuw i8 %.07901008 to i1
  br i1 %504, label %.thread1101, label %505

505:                                              ; preds = %503
  br i1 %277, label %507, label %506

506:                                              ; preds = %505
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.1, i32 noundef 4037, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

507:                                              ; preds = %505
  %508 = getelementptr inbounds i8, ptr %75, i64 964
  %509 = load i32, ptr %508, align 4, !tbaa !149
  %510 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %511 = icmp eq i32 %509, %510
  br i1 %511, label %513, label %512

512:                                              ; preds = %507
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.1, i32 noundef 4038, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

513:                                              ; preds = %507
  %514 = getelementptr inbounds i8, ptr %75, i64 325
  %515 = load i8, ptr %514, align 1, !tbaa !143, !range !41, !noundef !42
  %516 = trunc nuw i8 %515 to i1
  %517 = select i1 %516, i32 4194304, i32 0
  %518 = getelementptr inbounds i8, ptr %75, i64 209
  %519 = load i8, ptr %518, align 1, !tbaa !136, !range !41, !noundef !42
  %520 = trunc nuw i8 %519 to i1
  br i1 %520, label %524, label %521

521:                                              ; preds = %513
  %522 = getelementptr inbounds i8, ptr %75, i64 326
  %523 = getelementptr inbounds i8, ptr %75, i64 324
  %.in = load i8, ptr %523, align 2, !tbaa !96, !range !41, !noundef !42
  %.pre1056 = load i32, ptr %508, align 4, !tbaa !149
  br label %538

524:                                              ; preds = %513
  %525 = load i32, ptr %508, align 4, !tbaa !149
  %526 = icmp eq i32 %525, 10
  %527 = getelementptr inbounds i8, ptr %75, i64 326
  %528 = getelementptr inbounds i8, ptr %75, i64 324
  %.in1015 = load i8, ptr %527, align 2, !tbaa !96, !range !41, !noundef !42
  %529 = getelementptr inbounds i8, ptr %75, i64 327
  %530 = load i8, ptr %529, align 1, !tbaa !142, !range !41, !noundef !42
  %531 = trunc nuw i8 %530 to i1
  br i1 %531, label %532, label %538

532:                                              ; preds = %524
  %533 = load i8, ptr %528, align 4, !tbaa !110, !range !41, !noundef !42
  %534 = trunc nuw i8 %533 to i1
  br i1 %534, label %538, label %535

535:                                              ; preds = %532
  %536 = trunc nuw i8 %.in1015 to i1
  %537 = xor i1 %536, true
  br label %538

538:                                              ; preds = %521, %535, %532, %524
  %539 = phi i32 [ %525, %532 ], [ %525, %524 ], [ %.pre1056, %521 ], [ %525, %535 ]
  %.v1037 = phi i32 [ 8, %532 ], [ 8, %524 ], [ 1, %521 ], [ 8, %535 ]
  %.in1036 = phi i8 [ %.in1015, %532 ], [ %.in1015, %524 ], [ %.in, %521 ], [ %.in1015, %535 ]
  %540 = phi ptr [ %528, %532 ], [ %528, %524 ], [ %523, %521 ], [ %528, %535 ]
  %541 = phi ptr [ %527, %532 ], [ %527, %524 ], [ %522, %521 ], [ %527, %535 ]
  %542 = phi i1 [ %526, %532 ], [ %526, %524 ], [ false, %521 ], [ %526, %535 ]
  %543 = phi i1 [ false, %532 ], [ false, %524 ], [ false, %521 ], [ %537, %535 ]
  %544 = trunc nuw i8 %.in1036 to i1
  %545 = icmp eq i32 %539, 1
  %546 = icmp eq i32 %539, 2
  %547 = icmp eq i32 %539, %.v1037
  br i1 %547, label %548, label %550

548:                                              ; preds = %538
  %549 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %549, label %555, label %550

550:                                              ; preds = %548, %538
  br i1 %546, label %551, label %558

551:                                              ; preds = %550
  %552 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %553 = and i1 %.not864, %552
  %554 = xor i1 %553, true
  %brmerge926 = or i1 %77, %554
  %.not932 = xor i1 %66, true
  %brmerge933 = or i1 %brmerge926, %.not932
  %not.brmerge926 = xor i1 %brmerge926, true
  br i1 %brmerge933, label %558, label %556

555:                                              ; preds = %548
  %.not864.not927 = xor i1 %.not864, true
  %brmerge928 = or i1 %77, %.not864.not927
  %.not929 = xor i1 %66, true
  %brmerge930 = or i1 %brmerge928, %.not929
  %not.brmerge928 = xor i1 %brmerge928, true
  br i1 %brmerge930, label %.thread1016, label %556

556:                                              ; preds = %551, %555
  %557 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br label %558

558:                                              ; preds = %551, %556, %550
  %559 = phi i1 [ %not.brmerge926, %551 ], [ false, %550 ], [ %557, %556 ]
  br i1 %547, label %.thread1016, label %562

.thread1016:                                      ; preds = %555, %558
  %560 = phi i1 [ %559, %558 ], [ %not.brmerge928, %555 ]
  %561 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %561, label %566, label %562

562:                                              ; preds = %.thread1016, %558
  %563 = phi i1 [ %560, %.thread1016 ], [ %559, %558 ]
  br i1 %545, label %564, label %571

564:                                              ; preds = %562
  %565 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %brmerge937.demorgan = and i1 %.not864, %565
  %brmerge939.not = and i1 %66, %brmerge937.demorgan
  br i1 %brmerge939.not, label %568, label %571

566:                                              ; preds = %.thread1016
  %567 = and i32 %5, 1081344
  %brmerge943.not = icmp eq i32 %567, 1048576
  br i1 %brmerge943.not, label %568, label %.thread1017

568:                                              ; preds = %566, %564
  %569 = phi i1 [ %560, %566 ], [ %563, %564 ]
  %570 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br label %571

571:                                              ; preds = %564, %568, %562
  %572 = phi i1 [ %563, %564 ], [ %563, %562 ], [ %569, %568 ]
  %573 = phi i1 [ %brmerge937.demorgan, %564 ], [ false, %562 ], [ %570, %568 ]
  br i1 %547, label %.thread1017, label %577

.thread1017:                                      ; preds = %566, %571
  %574 = phi i1 [ %573, %571 ], [ %.not864, %566 ]
  %575 = phi i1 [ %572, %571 ], [ %560, %566 ]
  %576 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %576, label %582, label %577

577:                                              ; preds = %.thread1017, %571
  %578 = phi i1 [ %574, %.thread1017 ], [ %573, %571 ]
  %579 = phi i1 [ %575, %.thread1017 ], [ %572, %571 ]
  br i1 %546, label %580, label %586

580:                                              ; preds = %577
  %581 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %581, label %582, label %586

582:                                              ; preds = %580, %.thread1017
  %583 = phi i1 [ %578, %580 ], [ %574, %.thread1017 ]
  %584 = phi i1 [ %579, %580 ], [ %575, %.thread1017 ]
  %585 = xor i1 %77, true
  br label %586

586:                                              ; preds = %582, %580, %577
  %587 = phi i1 [ %578, %580 ], [ %578, %577 ], [ %583, %582 ]
  %588 = phi i1 [ %579, %580 ], [ %579, %577 ], [ %584, %582 ]
  %589 = phi i1 [ false, %580 ], [ false, %577 ], [ %585, %582 ]
  br i1 %547, label %590, label %594

590:                                              ; preds = %586
  %591 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  %not.1038 = xor i1 %77, true
  %592 = and i1 %591, %not.1038
  %spec.select990 = and i1 %80, %592
  %593 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %593, label %598, label %594

594:                                              ; preds = %586, %590
  %595 = phi i1 [ %spec.select990, %590 ], [ false, %586 ]
  br i1 %542, label %596, label %600

596:                                              ; preds = %594
  %597 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %597, label %._crit_edge1069, label %600

._crit_edge1069:                                  ; preds = %596
  %.pre1070 = xor i1 %77, true
  br label %598

598:                                              ; preds = %._crit_edge1069, %590
  %not.1039.pre-phi = phi i1 [ %.pre1070, %._crit_edge1069 ], [ %not.1038, %590 ]
  %599 = phi i1 [ %595, %._crit_edge1069 ], [ %spec.select990, %590 ]
  %spec.select946 = and i1 %80, %not.1039.pre-phi
  br label %600

600:                                              ; preds = %598, %596, %594
  %601 = phi i1 [ %595, %596 ], [ %595, %594 ], [ %599, %598 ]
  %602 = phi i1 [ false, %596 ], [ false, %594 ], [ %spec.select946, %598 ]
  %603 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %603, label %604, label %607

604:                                              ; preds = %600
  %605 = select i1 %544, i32 2097164, i32 2097152
  %spec.select947 = select i1 %543, i32 2097156, i32 %605
  %606 = or disjoint i32 %spec.select947, %517
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %606)
  br label %781

607:                                              ; preds = %600
  %608 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %608, label %609, label %612

609:                                              ; preds = %607
  %610 = select i1 %544, i32 2097165, i32 2097153
  %spec.select948 = select i1 %543, i32 2097157, i32 %610
  %611 = or disjoint i32 %spec.select948, %517
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %611)
  br label %781

612:                                              ; preds = %607
  %613 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  %brmerge951.not = and i1 %66, %613
  br i1 %brmerge951.not, label %614, label %627

614:                                              ; preds = %612
  %615 = load i8, ptr %540, align 4, !tbaa !110, !range !41, !noundef !42
  %616 = trunc nuw i8 %615 to i1
  br i1 %616, label %617, label %624

617:                                              ; preds = %614
  %618 = getelementptr inbounds i8, ptr %.1788, i64 144
  %619 = load float, ptr %618, align 4, !tbaa !150
  %620 = getelementptr inbounds i8, ptr %75, i64 6712
  %621 = load float, ptr %620, align 8, !tbaa !44
  %622 = fsub float %619, %621
  %623 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %622, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.1788, float noundef %623)
  br label %781

624:                                              ; preds = %614
  %625 = select i1 %543, i32 2097158, i32 2097154
  %626 = or disjoint i32 %625, %517
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %626)
  br label %781

627:                                              ; preds = %612
  %628 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  %brmerge954.demorgan = and i1 %66, %628
  br i1 %brmerge954.demorgan, label %629, label %643

629:                                              ; preds = %627
  %630 = load i8, ptr %540, align 4, !tbaa !110, !range !41, !noundef !42
  %631 = trunc nuw i8 %630 to i1
  br i1 %631, label %632, label %640

632:                                              ; preds = %629
  %633 = getelementptr inbounds i8, ptr %.1788, i64 144
  %634 = load float, ptr %633, align 4, !tbaa !150
  %635 = getelementptr inbounds i8, ptr %75, i64 6712
  %636 = load float, ptr %635, align 8, !tbaa !44
  %637 = fadd float %634, %636
  %638 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %639 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %637, float noundef %638)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.1788, float noundef %639)
  br label %781

640:                                              ; preds = %629
  %641 = select i1 %543, i32 2097159, i32 2097155
  %642 = or disjoint i32 %641, %517
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %642)
  br label %781

643:                                              ; preds = %627
  %644 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %644, label %645, label %649

645:                                              ; preds = %643
  %646 = load i8, ptr %540, align 4, !tbaa !110, !range !41, !noundef !42
  %647 = trunc nuw i8 %646 to i1
  %.v879 = select i1 %647, i32 2097158, i32 2097156
  %648 = or disjoint i32 %.v879, %517
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %648)
  br label %781

649:                                              ; preds = %643
  %650 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %650, label %651, label %655

651:                                              ; preds = %649
  %652 = load i8, ptr %540, align 4, !tbaa !110, !range !41, !noundef !42
  %653 = trunc nuw i8 %652 to i1
  %.v = select i1 %653, i32 2097159, i32 2097157
  %654 = or disjoint i32 %.v, %517
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %654)
  br label %781

655:                                              ; preds = %649
  %656 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %.not955 = xor i1 %656, true
  %brmerge956 = or i1 %77, %.not955
  br i1 %brmerge956, label %659, label %657

657:                                              ; preds = %655
  %658 = or disjoint i32 %517, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %658)
  br label %781

659:                                              ; preds = %655
  %660 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  %.not957 = xor i1 %660, true
  %brmerge958 = or i1 %77, %.not957
  br i1 %brmerge958, label %677, label %661

661:                                              ; preds = %659
  %662 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br i1 %662, label %675, label %663

663:                                              ; preds = %661
  br i1 %544, label %.sink.split, label %664

664:                                              ; preds = %663
  br i1 %520, label %665, label %675

665:                                              ; preds = %664
  %666 = getelementptr inbounds i8, ptr %75, i64 327
  %667 = load i8, ptr %666, align 1, !tbaa !142, !range !41, !noundef !42
  %668 = trunc nuw i8 %667 to i1
  br i1 %668, label %669, label %675

669:                                              ; preds = %665
  %670 = load i8, ptr %541, align 2, !tbaa !141, !range !41, !noundef !42
  %671 = trunc nuw i8 %670 to i1
  br i1 %671, label %675, label %672

672:                                              ; preds = %669
  %673 = load i8, ptr %540, align 4, !tbaa !110, !range !41, !noundef !42
  %674 = trunc nuw i8 %673 to i1
  br i1 %674, label %675, label %.sink.split

.sink.split:                                      ; preds = %672, %663
  %.sink = phi i32 [ 6291468, %663 ], [ 6291460, %672 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %.sink)
  br label %675

675:                                              ; preds = %.sink.split, %672, %669, %665, %664, %661
  %676 = or disjoint i32 %517, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %676)
  br label %781

677:                                              ; preds = %659
  %678 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %678, label %681, label %679

679:                                              ; preds = %677
  %680 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %680, label %681, label %692

681:                                              ; preds = %679, %677
  br i1 %66, label %682, label %781

682:                                              ; preds = %681
  %683 = and i32 %5, 2048
  %.not878 = icmp eq i32 %683, 0
  %684 = load i8, ptr %540, align 4, !tbaa !110, !range !41, !noundef !42
  %685 = trunc nuw i8 %684 to i1
  br i1 %.not878, label %.critedge960, label %686

686:                                              ; preds = %682
  %.not1032 = xor i1 %685, true
  %brmerge1033 = or i1 %77, %.not1032
  %.mux = zext i1 %.not1032 to i8
  %.mux1034 = select i1 %685, i8 %.07901008, i8 1
  br i1 %brmerge1033, label %781, label %687

.critedge960:                                     ; preds = %682
  %brmerge961 = or i1 %77, %685
  %.mux963 = select i1 %685, i8 1, i8 %.07901008
  br i1 %brmerge961, label %781, label %687

687:                                              ; preds = %686, %.critedge960
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  store i32 10, ptr %21, align 4, !tbaa !111
  %688 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %688, label %689, label %691

689:                                              ; preds = %687
  %690 = load i32, ptr %21, align 4, !tbaa !111
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %690)
  br label %691

691:                                              ; preds = %689, %687
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  br label %781

692:                                              ; preds = %679
  %693 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %693, label %781, label %694

694:                                              ; preds = %692
  %brmerge964 = or i1 %601, %602
  br i1 %brmerge964, label %695, label %696

695:                                              ; preds = %694
  %.mux965 = select i1 %601, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086, i32 noundef %.mux965)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br label %781

696:                                              ; preds = %694
  br i1 %547, label %697, label %701

697:                                              ; preds = %696
  %698 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %698, label %699, label %701

699:                                              ; preds = %697
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  %700 = getelementptr inbounds i8, ptr %.07891086, i64 3700
  store i8 1, ptr %700, align 4, !tbaa !140
  br label %781

701:                                              ; preds = %697, %696
  %brmerge966 = or i1 %587, %588
  br i1 %brmerge966, label %702, label %749

702:                                              ; preds = %701
  %703 = getelementptr inbounds i8, ptr %75, i64 272
  %704 = load ptr, ptr %703, align 8, !tbaa !151
  %.not877 = icmp eq ptr %704, null
  br i1 %.not877, label %741, label %705

705:                                              ; preds = %702
  %706 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br i1 %706, label %707, label %713

707:                                              ; preds = %705
  %708 = getelementptr inbounds i8, ptr %.07891086, i64 80
  %709 = load i32, ptr %708, align 4, !tbaa !152
  %710 = getelementptr inbounds i8, ptr %.07891086, i64 84
  %711 = load i32, ptr %710, align 4, !tbaa !153
  %712 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %709, i32 noundef %711)
  br label %713

713:                                              ; preds = %705, %707
  %714 = phi i32 [ %712, %707 ], [ 0, %705 ]
  %715 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br i1 %715, label %716, label %722

716:                                              ; preds = %713
  %717 = getelementptr inbounds i8, ptr %.07891086, i64 80
  %718 = load i32, ptr %717, align 4, !tbaa !152
  %719 = getelementptr inbounds i8, ptr %.07891086, i64 84
  %720 = load i32, ptr %719, align 4, !tbaa !153
  %721 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %718, i32 noundef %720)
  br label %725

722:                                              ; preds = %713
  %723 = getelementptr inbounds i8, ptr %.07891086, i64 4
  %724 = load i32, ptr %723, align 4, !tbaa !105
  br label %725

725:                                              ; preds = %722, %716
  %726 = phi i32 [ %721, %716 ], [ %724, %722 ]
  %727 = getelementptr inbounds i8, ptr %.07891086, i64 24
  %728 = load ptr, ptr %727, align 8, !tbaa !104
  %729 = sext i32 %714 to i64
  %730 = getelementptr inbounds i16, ptr %728, i64 %729
  %731 = sext i32 %726 to i64
  %732 = getelementptr inbounds i16, ptr %728, i64 %731
  %733 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %730, ptr noundef %732)
  %734 = add nsw i32 %733, 1
  %735 = sext i32 %734 to i64
  %736 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %735)
  %737 = load ptr, ptr %727, align 8, !tbaa !104
  %738 = getelementptr inbounds i16, ptr %737, i64 %729
  %739 = getelementptr inbounds i16, ptr %737, i64 %731
  %740 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %736, i32 noundef %734, ptr noundef %738, ptr noundef %739)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %736)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %736)
  br label %741

741:                                              ; preds = %725, %702
  br i1 %588, label %742, label %781

742:                                              ; preds = %741
  %743 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br i1 %743, label %745, label %744

744:                                              ; preds = %742
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br label %745

745:                                              ; preds = %744, %742
  %746 = getelementptr inbounds i8, ptr %.07891086, i64 3700
  store i8 1, ptr %746, align 4, !tbaa !140
  %747 = getelementptr inbounds i8, ptr %.07891086, i64 76
  %748 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.07891086, ptr noundef nonnull %747)
  br label %781

749:                                              ; preds = %701
  br i1 %589, label %750, label %781

750:                                              ; preds = %749
  %751 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not875 = icmp eq ptr %751, null
  br i1 %.not875, label %781, label %752

752:                                              ; preds = %750
  %753 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %751) #16
  %754 = shl i64 %753, 32
  %sext = add i64 %754, 4294967296
  %755 = ashr exact i64 %sext, 31
  %756 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %755)
  %757 = load i8, ptr %751, align 1, !tbaa !115
  %.not8761046 = icmp eq i8 %757, 0
  br i1 %.not8761046, label %.loopexit1040.thread, label %.lr.ph1049

.loopexit1040.thread:                             ; preds = %752
  store i16 0, ptr %756, align 2, !tbaa !144
  br label %780

.lr.ph1049:                                       ; preds = %752, %771
  %.08181048 = phi i32 [ %.1819, %771 ], [ 0, %752 ]
  %.08211047 = phi ptr [ %760, %771 ], [ %751, %752 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  %758 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %22, ptr noundef nonnull %.08211047, ptr noundef null)
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds i8, ptr %.08211047, i64 %759
  %761 = load i32, ptr %22, align 4, !tbaa !111
  %762 = icmp eq i32 %761, 0
  br i1 %762, label %.thread1019, label %763

.thread1019:                                      ; preds = %.lr.ph1049
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  br label %.loopexit1040

763:                                              ; preds = %.lr.ph1049
  %764 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %764, label %765, label %771, !llvm.loop !154

765:                                              ; preds = %763
  %766 = load i32, ptr %22, align 4, !tbaa !111
  %767 = trunc i32 %766 to i16
  %768 = add nsw i32 %.08181048, 1
  %769 = sext i32 %.08181048 to i64
  %770 = getelementptr inbounds i16, ptr %756, i64 %769
  store i16 %767, ptr %770, align 2, !tbaa !144
  br label %771

771:                                              ; preds = %763, %765
  %.1819 = phi i32 [ %768, %765 ], [ %.08181048, %763 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  %772 = load i8, ptr %760, align 1, !tbaa !115
  %.not876 = icmp eq i8 %772, 0
  br i1 %.not876, label %.loopexit1040, label %.lr.ph1049

.loopexit1040:                                    ; preds = %771, %.thread1019
  %.08181044 = phi i32 [ %.08181048, %.thread1019 ], [ %.1819, %771 ]
  %773 = sext i32 %.08181044 to i64
  %774 = getelementptr inbounds i16, ptr %756, i64 %773
  store i16 0, ptr %774, align 2, !tbaa !144
  %775 = icmp sgt i32 %.08181044, 0
  br i1 %775, label %776, label %780

776:                                              ; preds = %.loopexit1040
  %777 = getelementptr inbounds i8, ptr %.07891086, i64 76
  %778 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.07891086, ptr noundef nonnull %777, ptr noundef nonnull %756, i32 noundef %.08181044)
  %779 = getelementptr inbounds i8, ptr %.07891086, i64 3700
  store i8 1, ptr %779, align 4, !tbaa !140
  br label %780

780:                                              ; preds = %.loopexit1040.thread, %776, %.loopexit1040
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %756)
  br label %781

781:                                              ; preds = %686, %750, %780, %692, %691, %681, %.critedge960, %609, %640, %632, %651, %675, %699, %749, %741, %745, %695, %657, %645, %617, %624, %604
  %.0816 = phi i1 [ false, %604 ], [ false, %609 ], [ false, %617 ], [ false, %624 ], [ false, %632 ], [ false, %640 ], [ false, %645 ], [ false, %651 ], [ false, %695 ], [ false, %699 ], [ false, %745 ], [ false, %741 ], [ false, %749 ], [ false, %675 ], [ false, %657 ], [ false, %.critedge960 ], [ false, %681 ], [ false, %686 ], [ false, %691 ], [ true, %692 ], [ false, %780 ], [ false, %750 ]
  %.1803 = phi i8 [ 0, %604 ], [ 0, %609 ], [ 0, %617 ], [ 0, %624 ], [ 0, %632 ], [ 0, %640 ], [ 0, %645 ], [ 0, %651 ], [ 0, %695 ], [ 0, %699 ], [ 0, %745 ], [ 0, %741 ], [ 0, %749 ], [ 0, %675 ], [ 0, %657 ], [ %684, %.critedge960 ], [ 1, %681 ], [ %.mux, %686 ], [ 0, %691 ], [ 0, %692 ], [ 0, %780 ], [ 0, %750 ]
  %.2792 = phi i8 [ %.07901008, %604 ], [ %.07901008, %609 ], [ %.07901008, %617 ], [ %.07901008, %624 ], [ %.07901008, %632 ], [ %.07901008, %640 ], [ %.07901008, %645 ], [ %.07901008, %651 ], [ %.07901008, %695 ], [ %.07901008, %699 ], [ %.07901008, %745 ], [ %.07901008, %741 ], [ %.07901008, %749 ], [ %.07901008, %675 ], [ %.07901008, %657 ], [ %.mux963, %.critedge960 ], [ 1, %681 ], [ %.mux1034, %686 ], [ %.07901008, %691 ], [ 1, %692 ], [ %.07901008, %780 ], [ %.07901008, %750 ]
  %782 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  %783 = select i1 %782, i1 %276, i1 %.0798.in
  %.pre1057 = load i32, ptr %167, align 8, !tbaa !97
  br label %784

784:                                              ; preds = %781, %496
  %785 = phi i32 [ %.pre1057, %781 ], [ %497, %496 ]
  %.1817 = phi i1 [ %.0816, %781 ], [ false, %496 ]
  %.2804 = phi i8 [ %.1803, %781 ], [ 0, %496 ]
  %.1799.in = phi i1 [ %783, %781 ], [ %.0798.in, %496 ]
  %.3793 = phi i8 [ %.2792, %781 ], [ %.07901008, %496 ]
  %786 = icmp eq i32 %785, %87
  br i1 %786, label %.thread1101, label %987

.thread1101:                                      ; preds = %503, %499, %784
  %.37931115 = phi i8 [ %.3793, %784 ], [ %.07901008, %499 ], [ %.07901008, %503 ]
  %.1799.in1113 = phi i1 [ %.1799.in, %784 ], [ %.0798.in, %499 ], [ %.0798.in, %503 ]
  %.28041109 = phi i8 [ %.2804, %784 ], [ 0, %499 ], [ 0, %503 ]
  %.18171108 = phi i1 [ %.1817, %784 ], [ false, %499 ], [ false, %503 ]
  br i1 %277, label %788, label %787

787:                                              ; preds = %.thread1101
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.1, i32 noundef 4157, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

788:                                              ; preds = %.thread1101
  %.1817.not = xor i1 %.18171108, true
  %brmerge967 = or i1 %77, %.1817.not
  br i1 %brmerge967, label %819, label %789

789:                                              ; preds = %788
  %790 = getelementptr inbounds i8, ptr %.07891086, i64 56
  %791 = load ptr, ptr %790, align 8, !tbaa !102
  %792 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %791) #16
  %.not880 = icmp eq i32 %792, 0
  br i1 %.not880, label %819, label %793

793:                                              ; preds = %789
  %794 = getelementptr inbounds i8, ptr %.07891086, i64 48
  %795 = load i32, ptr %794, align 8, !tbaa !155
  %796 = add nsw i32 %795, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23)
  %797 = icmp sgt i32 %795, 1
  br i1 %797, label %798, label %811

798:                                              ; preds = %793
  %799 = zext nneg i32 %796 to i64
  %800 = getelementptr inbounds i8, ptr %791, i64 %799
  %801 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %791, ptr noundef %800)
          to label %802 unwind label %809

802:                                              ; preds = %798
  %803 = add nsw i32 %801, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %23, i32 noundef %803)
          to label %804 unwind label %809

804:                                              ; preds = %802
  %805 = getelementptr inbounds i8, ptr %23, i64 8
  %806 = load ptr, ptr %805, align 8, !tbaa !156
  %807 = load i32, ptr %23, align 8, !tbaa !157
  %808 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %806, i32 noundef %807, ptr noundef %791, ptr noundef %800, ptr noundef null)
          to label %811 unwind label %809

809:                                              ; preds = %811, %804, %802, %798
  %810 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  resume { ptr, i32 } %810

811:                                              ; preds = %804, %793
  %812 = getelementptr inbounds i8, ptr %.07891086, i64 76
  %813 = getelementptr inbounds i8, ptr %23, i64 8
  %814 = load ptr, ptr %813, align 8, !tbaa !156
  %815 = load i32, ptr %23, align 8
  %816 = add nsw i32 %815, -1
  %817 = select i1 %797, i32 %816, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.07891086, ptr noundef nonnull %812, ptr noundef %814, i32 noundef %817)
          to label %818 unwind label %809

818:                                              ; preds = %811
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #15
  br label %819

819:                                              ; preds = %788, %789, %818
  %.0824 = phi i32 [ %796, %818 ], [ 0, %789 ], [ 0, %788 ]
  %.0822 = phi ptr [ %791, %818 ], [ null, %789 ], [ null, %788 ]
  br i1 %.18171108, label %820, label %.critedge969

820:                                              ; preds = %819
  %821 = trunc nuw i8 %.28041109 to i1
  %822 = and i32 %5, 32
  %823 = icmp ne i32 %822, 0
  %824 = and i1 %823, %821
  br i1 %824, label %.critedge969, label %959

.critedge969:                                     ; preds = %819, %820
  br i1 %77, label %838, label %825

825:                                              ; preds = %.critedge969
  %826 = getelementptr inbounds i8, ptr %.07891086, i64 64
  store i8 1, ptr %826, align 8, !tbaa !103
  %827 = getelementptr inbounds i8, ptr %.07891086, i64 32
  %828 = getelementptr inbounds i8, ptr %.07891086, i64 16
  %829 = load i32, ptr %828, align 8, !tbaa !113
  %830 = shl nsw i32 %829, 2
  %831 = or disjoint i32 %830, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %827, i32 noundef %831)
  %832 = getelementptr inbounds i8, ptr %.07891086, i64 40
  %833 = load ptr, ptr %832, align 8, !tbaa !114
  %834 = load i32, ptr %827, align 8, !tbaa !158
  %835 = getelementptr inbounds i8, ptr %.07891086, i64 24
  %836 = load ptr, ptr %835, align 8, !tbaa !104
  %837 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %833, i32 noundef %834, ptr noundef %836, ptr noundef null)
  br label %838

838:                                              ; preds = %825, %.critedge969
  %839 = and i32 %5, 524736
  %.not881 = icmp eq i32 %839, 0
  br i1 %.not881, label %951, label %840

840:                                              ; preds = %838
  br i1 %82, label %842, label %841

841:                                              ; preds = %840
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.1, i32 noundef 4198, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

842:                                              ; preds = %840
  br i1 %.not861, label %845, label %843

843:                                              ; preds = %842
  %844 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %844, label %.thread1023, label %845

845:                                              ; preds = %843, %842
  br i1 %.not859.not, label %.critedge971, label %846

846:                                              ; preds = %845
  %847 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %847, label %.thread1023, label %848

848:                                              ; preds = %846
  %849 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %849, label %.thread1023, label %.critedge971

.critedge971:                                     ; preds = %845, %848
  %850 = and i32 %5, 524288
  %.not882 = icmp eq i32 %850, 0
  br i1 %.not882, label %855, label %851

851:                                              ; preds = %.critedge971
  %852 = getelementptr inbounds i8, ptr %.07891086, i64 3702
  %853 = load i8, ptr %852, align 2, !tbaa !124, !range !41, !noundef !42
  %854 = trunc nuw i8 %853 to i1
  br i1 %854, label %.thread1023, label %855

855:                                              ; preds = %.critedge971, %851
  %856 = and i32 %5, 256
  %.not883 = icmp eq i32 %856, 0
  br i1 %.not883, label %951, label %.thread1023

.thread1023:                                      ; preds = %851, %848, %846, %843, %855
  %.08271028 = phi i32 [ 256, %855 ], [ 524288, %851 ], [ 128, %848 ], [ 128, %846 ], [ 64, %843 ]
  %.08281027 = phi i32 [ 22, %855 ], [ 22, %851 ], [ 4, %848 ], [ 3, %846 ], [ 0, %843 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %24)
  %857 = getelementptr inbounds i8, ptr %24, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %857, i8 0, i64 40, i1 false)
  store i32 %.08271028, ptr %24, align 8, !tbaa !159
  %858 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 %5, ptr %858, align 4, !tbaa !161
  %859 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %7, ptr %859, align 8, !tbaa !162
  %860 = getelementptr inbounds i8, ptr %24, i64 20
  store i32 %.08281027, ptr %860, align 4, !tbaa !163
  %861 = getelementptr inbounds i8, ptr %.07891086, i64 40
  %862 = load ptr, ptr %861, align 8, !tbaa !114
  %863 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %862, ptr %863, align 8, !tbaa !164
  %864 = getelementptr inbounds i8, ptr %.07891086, i64 8
  %865 = load i32, ptr %864, align 8, !tbaa !106
  %866 = getelementptr inbounds i8, ptr %24, i64 32
  store i32 %865, ptr %866, align 8, !tbaa !165
  %867 = getelementptr inbounds i8, ptr %.07891086, i64 68
  %868 = load i32, ptr %867, align 4, !tbaa !125
  %869 = getelementptr inbounds i8, ptr %24, i64 36
  store i32 %868, ptr %869, align 4, !tbaa !166
  %870 = getelementptr inbounds i8, ptr %24, i64 40
  %871 = getelementptr inbounds i8, ptr %.07891086, i64 16
  %872 = getelementptr inbounds i8, ptr %.07891086, i64 24
  %873 = load ptr, ptr %872, align 8, !tbaa !104
  %874 = getelementptr inbounds i8, ptr %.07891086, i64 76
  %875 = load i32, ptr %874, align 4, !tbaa !167
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds i16, ptr %873, i64 %876
  %878 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %873, ptr noundef %877)
  %879 = getelementptr inbounds i8, ptr %24, i64 44
  store i32 %878, ptr %879, align 4, !tbaa !168
  %880 = getelementptr inbounds i8, ptr %.07891086, i64 80
  %881 = load i32, ptr %880, align 4, !tbaa !152
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds i16, ptr %873, i64 %882
  %884 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %873, ptr noundef %883)
  %885 = getelementptr inbounds i8, ptr %24, i64 48
  store i32 %884, ptr %885, align 8, !tbaa !169
  %886 = getelementptr inbounds i8, ptr %.07891086, i64 84
  %887 = load i32, ptr %886, align 4, !tbaa !153
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds i16, ptr %873, i64 %888
  %890 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %873, ptr noundef %889)
  %891 = getelementptr inbounds i8, ptr %24, i64 52
  store i32 %890, ptr %891, align 4, !tbaa !170
  %892 = call noundef i32 %6(ptr noundef nonnull %24)
  %893 = load ptr, ptr %863, align 8, !tbaa !164
  %894 = load ptr, ptr %861, align 8, !tbaa !114
  %895 = icmp eq ptr %893, %894
  br i1 %895, label %897, label %896

896:                                              ; preds = %.thread1023
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.1, i32 noundef 4251, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

897:                                              ; preds = %.thread1023
  %898 = load i32, ptr %869, align 4, !tbaa !166
  %899 = load i32, ptr %867, align 4, !tbaa !125
  %900 = icmp eq i32 %898, %899
  br i1 %900, label %902, label %901

901:                                              ; preds = %897
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.1, i32 noundef 4252, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

902:                                              ; preds = %897
  %903 = load i32, ptr %858, align 4, !tbaa !161
  %904 = icmp eq i32 %903, %5
  br i1 %904, label %906, label %905

905:                                              ; preds = %902
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.1, i32 noundef 4253, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

906:                                              ; preds = %902
  %907 = load i32, ptr %879, align 4, !tbaa !168
  %.not885 = icmp eq i32 %907, %878
  br i1 %.not885, label %913, label %908

908:                                              ; preds = %906
  %909 = sext i32 %907 to i64
  %910 = getelementptr inbounds i8, ptr %893, i64 %909
  %911 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %893, ptr noundef %910)
  store i32 %911, ptr %874, align 4, !tbaa !167
  %912 = getelementptr inbounds i8, ptr %.07891086, i64 3700
  store i8 1, ptr %912, align 4, !tbaa !140
  br label %913

913:                                              ; preds = %908, %906
  %914 = load i32, ptr %885, align 8, !tbaa !169
  %.not886 = icmp eq i32 %914, %884
  br i1 %.not886, label %920, label %915

915:                                              ; preds = %913
  %916 = load ptr, ptr %863, align 8, !tbaa !164
  %917 = sext i32 %914 to i64
  %918 = getelementptr inbounds i8, ptr %916, i64 %917
  %919 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %916, ptr noundef %918)
  store i32 %919, ptr %880, align 4, !tbaa !152
  br label %920

920:                                              ; preds = %915, %913
  %921 = load i32, ptr %891, align 4, !tbaa !170
  %.not887 = icmp eq i32 %921, %890
  br i1 %.not887, label %927, label %922

922:                                              ; preds = %920
  %923 = load ptr, ptr %863, align 8, !tbaa !164
  %924 = sext i32 %921 to i64
  %925 = getelementptr inbounds i8, ptr %923, i64 %924
  %926 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %923, ptr noundef %925)
  store i32 %926, ptr %886, align 4, !tbaa !153
  br label %927

927:                                              ; preds = %922, %920
  %928 = load i8, ptr %870, align 8, !tbaa !171, !range !41, !noundef !42
  %929 = trunc nuw i8 %928 to i1
  br i1 %929, label %930, label %950

930:                                              ; preds = %927
  %931 = load i32, ptr %866, align 8, !tbaa !165
  %932 = load ptr, ptr %863, align 8, !tbaa !164
  %933 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %932) #16
  %934 = trunc i64 %933 to i32
  %935 = icmp eq i32 %931, %934
  br i1 %935, label %937, label %936

936:                                              ; preds = %930
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.1, i32 noundef 4259, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

937:                                              ; preds = %930
  %938 = icmp sle i32 %931, %.0813
  %brmerge975 = or i1 %.not865, %938
  br i1 %brmerge975, label %943, label %939

939:                                              ; preds = %937
  %940 = load i32, ptr %871, align 8, !tbaa !113
  %941 = sub i32 %931, %.0813
  %942 = add nsw i32 %941, %940
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %871, i32 noundef %942)
  %.pre1058 = load ptr, ptr %863, align 8, !tbaa !164
  br label %943

943:                                              ; preds = %937, %939
  %944 = phi ptr [ %932, %937 ], [ %.pre1058, %939 ]
  %945 = load ptr, ptr %872, align 8, !tbaa !104
  %946 = load i32, ptr %871, align 8, !tbaa !113
  %947 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %945, i32 noundef %946, ptr noundef %944, ptr noundef null, ptr noundef null)
  %948 = getelementptr inbounds i8, ptr %.07891086, i64 4
  store i32 %947, ptr %948, align 4, !tbaa !105
  %949 = load i32, ptr %866, align 8, !tbaa !165
  store i32 %949, ptr %864, align 8, !tbaa !106
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07891086)
  br label %950

950:                                              ; preds = %943, %927
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #15
  br label %951

951:                                              ; preds = %855, %950, %838
  br i1 %77, label %959, label %952

952:                                              ; preds = %951
  %953 = getelementptr inbounds i8, ptr %.07891086, i64 40
  %954 = load ptr, ptr %953, align 8, !tbaa !114
  %955 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %954, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not888 = icmp eq i32 %955, 0
  br i1 %.not888, label %959, label %956

956:                                              ; preds = %952
  %957 = getelementptr inbounds i8, ptr %.07891086, i64 8
  %958 = load i32, ptr %957, align 8, !tbaa !106
  br label %959

959:                                              ; preds = %951, %952, %956, %820
  %.1825 = phi i32 [ %.0824, %951 ], [ %958, %956 ], [ %.0824, %952 ], [ %.0824, %820 ]
  %.1823 = phi ptr [ %.0822, %951 ], [ %954, %956 ], [ %.0822, %952 ], [ %.0822, %820 ]
  %.not889 = icmp ne ptr %.1823, null
  br i1 %.not889, label %960, label %984

960:                                              ; preds = %959
  %961 = icmp sgt i32 %.1825, -1
  br i1 %961, label %963, label %962

962:                                              ; preds = %960
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.1, i32 noundef 4283, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

963:                                              ; preds = %960
  br i1 %.not865, label %980, label %964

964:                                              ; preds = %963
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %25) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %25)
  store i32 262144, ptr %25, align 8, !tbaa !159
  %965 = getelementptr inbounds i8, ptr %25, i64 4
  store i32 %5, ptr %965, align 4, !tbaa !161
  %966 = getelementptr inbounds i8, ptr %25, i64 24
  store ptr %2, ptr %966, align 8, !tbaa !164
  %967 = getelementptr inbounds i8, ptr %25, i64 32
  store i32 %.1825, ptr %967, align 8, !tbaa !165
  %968 = add nuw nsw i32 %.1825, 1
  %969 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %968)
  %970 = getelementptr inbounds i8, ptr %25, i64 36
  store i32 %969, ptr %970, align 4, !tbaa !166
  %971 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %7, ptr %971, align 8, !tbaa !162
  %972 = call noundef i32 %6(ptr noundef nonnull %25)
  %973 = load ptr, ptr %966, align 8, !tbaa !164
  %974 = load i32, ptr %970, align 4, !tbaa !166
  %975 = load i32, ptr %967, align 8, !tbaa !165
  %976 = add nsw i32 %974, -1
  %977 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %975, i32 noundef %976)
  %.not890 = icmp sgt i32 %977, %974
  br i1 %.not890, label %978, label %979

978:                                              ; preds = %964
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.1, i32 noundef 4297, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

979:                                              ; preds = %964
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #15
  br label %980

980:                                              ; preds = %979, %963
  %.2826 = phi i32 [ %977, %979 ], [ %.1825, %963 ]
  %.0784 = phi i32 [ %974, %979 ], [ %3, %963 ]
  %.0781 = phi ptr [ %973, %979 ], [ %2, %963 ]
  %981 = add nsw i32 %.2826, 1
  %982 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %981, i32 noundef %.0784)
  %983 = sext i32 %982 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0781, ptr noundef nonnull %.1823, i64 noundef %983)
  br label %984

984:                                              ; preds = %980, %959
  %.1782 = phi ptr [ %.0781, %980 ], [ %2, %959 ]
  %985 = getelementptr inbounds i8, ptr %.07891086, i64 3704
  store i32 0, ptr %985, align 8, !tbaa !126
  %986 = getelementptr inbounds i8, ptr %.07891086, i64 3712
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %986, i8 0, i64 16, i1 false)
  br label %987

987:                                              ; preds = %984, %784
  %.37931114 = phi i8 [ %.37931115, %984 ], [ %.3793, %784 ]
  %.1799.in1112 = phi i1 [ %.1799.in1113, %984 ], [ %.1799.in, %784 ]
  %.28041110 = phi i8 [ %.28041109, %984 ], [ %.2804, %784 ]
  %.1801 = phi i1 [ %.not889, %984 ], [ false, %784 ]
  %.2783 = phi ptr [ %.1782, %984 ], [ %2, %784 ]
  %988 = trunc nuw i8 %.37931114 to i1
  br i1 %988, label %989, label %993

989:                                              ; preds = %987
  %990 = load i32, ptr %167, align 8, !tbaa !97
  %991 = icmp eq i32 %990, %87
  br i1 %991, label %992, label %993

992:                                              ; preds = %989
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %993

993:                                              ; preds = %992, %989, %987
  br i1 %66, label %999, label %994

994:                                              ; preds = %993
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %87, i32 noundef 1)
  %.sroa.092.0.copyload = load <2 x float>, ptr %11, align 8
  %995 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %995, align 8
  %996 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %997 = getelementptr inbounds i8, ptr %75, i64 5768
  %998 = load float, ptr %997, align 4, !tbaa !86
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %996, i1 noundef zeroext true, float noundef %998)
  br label %999

999:                                              ; preds = %994, %993
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #15
  %1000 = load float, ptr %11, align 8, !tbaa !132
  %1001 = getelementptr inbounds i8, ptr %11, i64 4
  %1002 = load float, ptr %1001, align 4, !tbaa !172
  %1003 = fadd float %.sroa.0439.1, %1000
  %1004 = fadd float %.sroa.12.0.copyload, %1002
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %26, float noundef %1000, float noundef %1002, float noundef %1003, float noundef %1004)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #15
  br i1 %66, label %1005, label %1008

1005:                                             ; preds = %999
  %1006 = getelementptr inbounds i8, ptr %.1788, i64 272
  %1007 = load i64, ptr %1006, align 8
  br label %1011

1008:                                             ; preds = %999
  %1009 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %97)
  %1010 = bitcast <2 x float> %1009 to i64
  br label %1011

1011:                                             ; preds = %1008, %1005
  %storemerge891 = phi i64 [ %1007, %1005 ], [ %1010, %1008 ]
  store i64 %storemerge891, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %306, label %1012, label %1015

1012:                                             ; preds = %1011
  %1013 = getelementptr inbounds i8, ptr %.07891086, i64 40
  %1014 = load ptr, ptr %1013, align 8, !tbaa !114
  br label %1015

1015:                                             ; preds = %1011, %1012
  %1016 = phi ptr [ %1014, %1012 ], [ %.2783, %1011 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  store ptr null, ptr %29, align 8, !tbaa !43
  br i1 %316, label %1017, label %1020

1017:                                             ; preds = %1015
  %1018 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1019 = getelementptr inbounds i8, ptr %1, i64 %1018
  store ptr %1019, ptr %29, align 8, !tbaa !43
  br label %1020

1020:                                             ; preds = %1017, %1015
  %1021 = phi ptr [ %1019, %1017 ], [ null, %1015 ]
  %.0814 = phi ptr [ %1, %1017 ], [ %1016, %1015 ]
  %brmerge976 = select i1 %276, i1 true, i1 %.1799.in1112
  br i1 %brmerge976, label %1022, label %1269

1022:                                             ; preds = %1020
  br i1 %277, label %1024, label %1023

1023:                                             ; preds = %1022
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.1, i32 noundef 4343, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1024:                                             ; preds = %1022
  br i1 %316, label %1030, label %1025

1025:                                             ; preds = %1024
  %1026 = getelementptr inbounds i8, ptr %.07891086, i64 8
  %1027 = load i32, ptr %1026, align 8, !tbaa !106
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds i8, ptr %.0814, i64 %1028
  store ptr %1029, ptr %29, align 8, !tbaa !43
  br label %1030

1030:                                             ; preds = %1025, %1024
  %.pre10641066 = phi ptr [ %1029, %1025 ], [ %1021, %1024 ]
  %1031 = getelementptr inbounds i8, ptr %.07891086, i64 24
  %1032 = load ptr, ptr %1031, align 8, !tbaa !104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %30)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %31)
  %.sroa.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 %276, label %1033, label %1038

1033:                                             ; preds = %1030
  %1034 = getelementptr inbounds i8, ptr %.07891086, i64 76
  %1035 = load i32, ptr %1034, align 4, !tbaa !167
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds i16, ptr %1032, i64 %1036
  br label %1038

1038:                                             ; preds = %1033, %1030
  %.sroa.069.0 = phi ptr [ %1037, %1033 ], [ null, %1030 ]
  %.sroa.063.0 = phi i32 [ -1, %1033 ], [ %.sroa.063.0.copyload, %1030 ]
  %.0809 = phi i32 [ 1, %1033 ], [ 0, %1030 ]
  br i1 %.1799.in1112, label %1039, label %1048

1039:                                             ; preds = %1038
  %1040 = getelementptr inbounds i8, ptr %.07891086, i64 80
  %1041 = load i32, ptr %1040, align 4, !tbaa !152
  %1042 = getelementptr inbounds i8, ptr %.07891086, i64 84
  %1043 = load i32, ptr %1042, align 4, !tbaa !153
  %1044 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1041, i32 noundef %1043)
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds i16, ptr %1032, i64 %1045
  %1047 = add nuw nsw i32 %.0809, 1
  br label %1048

1048:                                             ; preds = %1039, %1038
  %.sroa.7.0 = phi ptr [ %1046, %1039 ], [ null, %1038 ]
  %.sroa.9.0 = phi i32 [ -1, %1039 ], [ %.sroa.9.0.copyload, %1038 ]
  %.1810 = phi i32 [ %1047, %1039 ], [ %.0809, %1038 ]
  %.lobit = lshr exact i32 %65, 20
  %1049 = add nuw nsw i32 %.1810, %.lobit
  br label %1050

1050:                                             ; preds = %1065, %1048
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1048 ], [ %.sroa.9.2, %1065 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1048 ], [ %.sroa.063.3, %1065 ]
  %.2811 = phi i32 [ %1049, %1048 ], [ %.4, %1065 ]
  %.0806 = phi i32 [ 0, %1048 ], [ %.1807, %1065 ]
  %.0805 = phi ptr [ %1032, %1048 ], [ %1066, %1065 ]
  %1051 = load i16, ptr %.0805, align 2, !tbaa !144
  switch i16 %1051, label %1065 [
    i16 0, label %1067
    i16 10, label %1052
  ]

1052:                                             ; preds = %1050
  %1053 = add nsw i32 %.0806, 1
  %1054 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1054, label %1055, label %1059

1055:                                             ; preds = %1052
  %.not893 = icmp ult ptr %.0805, %.sroa.069.0
  br i1 %.not893, label %1059, label %1056

1056:                                             ; preds = %1055
  %1057 = add nsw i32 %.2811, -1
  %1058 = icmp slt i32 %.2811, 2
  br i1 %1058, label %1067, label %1059

1059:                                             ; preds = %1056, %1055, %1052
  %.sroa.063.2 = phi i32 [ %1053, %1056 ], [ -1, %1055 ], [ %.sroa.063.1, %1052 ]
  %.3812 = phi i32 [ %1057, %1056 ], [ %.2811, %1055 ], [ %.2811, %1052 ]
  %1060 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1060, label %1061, label %1065

1061:                                             ; preds = %1059
  %.not894 = icmp ult ptr %.0805, %.sroa.7.0
  br i1 %.not894, label %1065, label %1062

1062:                                             ; preds = %1061
  %1063 = add nsw i32 %.3812, -1
  %1064 = icmp slt i32 %.3812, 2
  br i1 %1064, label %1067, label %1065

1065:                                             ; preds = %1050, %1062, %1061, %1059
  %.sroa.9.2 = phi i32 [ %1053, %1062 ], [ -1, %1061 ], [ %.sroa.9.1, %1059 ], [ %.sroa.9.1, %1050 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1062 ], [ %.sroa.063.2, %1061 ], [ %.sroa.063.2, %1059 ], [ %.sroa.063.1, %1050 ]
  %.4 = phi i32 [ %1063, %1062 ], [ %.3812, %1061 ], [ %.3812, %1059 ], [ %.2811, %1050 ]
  %.1807 = phi i32 [ %1053, %1062 ], [ %1053, %1061 ], [ %1053, %1059 ], [ %.0806, %1050 ]
  %1066 = getelementptr inbounds i8, ptr %.0805, i64 2
  br label %1050, !llvm.loop !173

1067:                                             ; preds = %1062, %1056, %1050
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1050 ], [ %.sroa.9.1, %1056 ], [ %1053, %1062 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1050 ], [ %1053, %1056 ], [ %.sroa.063.2, %1062 ]
  %.2808 = phi i32 [ %.0806, %1050 ], [ %1053, %1056 ], [ %1053, %1062 ]
  %1068 = add nsw i32 %.2808, 1
  %1069 = icmp eq i32 %.sroa.063.4, -1
  %spec.select977 = select i1 %1069, i32 %1068, i32 %.sroa.063.4
  %1070 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1070, i32 %1068, i32 %.sroa.9.3
  %1071 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1032)
  %1072 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1071, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1072, i64 0
  store float %.sroa.045.0.vec.extract, ptr %30, align 4, !tbaa !174
  %1073 = sitofp i32 %spec.select977 to float
  %1074 = getelementptr inbounds i8, ptr %75, i64 6712
  %1075 = load float, ptr %1074, align 8, !tbaa !44
  %1076 = fmul float %1075, %1073
  %1077 = getelementptr inbounds i8, ptr %30, i64 4
  store float %1076, ptr %1077, align 4, !tbaa !175
  %1078 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1078, label %1079, label %1086

1079:                                             ; preds = %1067
  %1080 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1032)
  %1081 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1080, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1081, i64 0
  store float %.sroa.044.0.vec.extract, ptr %31, align 4, !tbaa !174
  %1082 = uitofp nneg i32 %.sroa.9.4 to float
  %1083 = load float, ptr %1074, align 8, !tbaa !44
  %1084 = fmul float %1083, %1082
  %1085 = getelementptr inbounds i8, ptr %31, i64 4
  store float %1084, ptr %1085, align 4, !tbaa !175
  br label %1086

1086:                                             ; preds = %1079, %1067
  %1087 = phi float [ %1083, %1079 ], [ %1075, %1067 ]
  br i1 %66, label %1088, label %1092

1088:                                             ; preds = %1086
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  %1089 = sitofp i32 %1068 to float
  %1090 = fmul float %1087, %1089
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %.sroa.0439.1, float noundef %1090)
  %1091 = load i64, ptr %32, align 8
  store i64 %1091, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  br label %1092

1092:                                             ; preds = %1088, %1086
  br i1 %276, label %1093, label %1140

1093:                                             ; preds = %1092
  %1094 = getelementptr inbounds i8, ptr %.07891086, i64 3700
  %1095 = load i8, ptr %1094, align 4, !tbaa !140, !range !41, !noundef !42
  %1096 = trunc nuw i8 %1095 to i1
  br i1 %1096, label %1097, label %1140

1097:                                             ; preds = %1093
  %1098 = and i32 %5, 4096
  %.not895 = icmp eq i32 %1098, 0
  br i1 %.not895, label %1099, label %1117

1099:                                             ; preds = %1097
  %1100 = fmul float %.sroa.0439.1, 2.500000e-01
  %1101 = load float, ptr %30, align 4, !tbaa !174
  %1102 = getelementptr inbounds i8, ptr %.07891086, i64 72
  %1103 = load float, ptr %1102, align 8, !tbaa !108
  %1104 = fcmp olt float %1101, %1103
  br i1 %1104, label %1105, label %1110

1105:                                             ; preds = %1099
  %1106 = fsub float %1101, %1100
  %1107 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1106)
  %1108 = fptosi float %1107 to i32
  %1109 = sitofp i32 %1108 to float
  store float %1109, ptr %1102, align 8, !tbaa !108
  br label %1119

1110:                                             ; preds = %1099
  %1111 = fsub float %1101, %.sroa.0439.1
  %1112 = fcmp ult float %1111, %1103
  br i1 %1112, label %1119, label %1113

1113:                                             ; preds = %1110
  %1114 = fadd float %1100, %1111
  %1115 = fptosi float %1114 to i32
  %1116 = sitofp i32 %1115 to float
  store float %1116, ptr %1102, align 8, !tbaa !108
  br label %1119

1117:                                             ; preds = %1097
  %1118 = getelementptr inbounds i8, ptr %.07891086, i64 72
  store float 0.000000e+00, ptr %1118, align 8, !tbaa !108
  br label %1119

1119:                                             ; preds = %1105, %1113, %1110, %1117
  br i1 %66, label %1120, label %1139

1120:                                             ; preds = %1119
  %1121 = getelementptr inbounds i8, ptr %.1788, i64 144
  %1122 = load float, ptr %1121, align 4, !tbaa !150
  %1123 = load float, ptr %1077, align 4, !tbaa !175
  %1124 = load float, ptr %1074, align 8, !tbaa !44
  %1125 = fsub float %1123, %1124
  %1126 = fcmp olt float %1125, %1122
  br i1 %1126, label %1127, label %1129

1127:                                             ; preds = %1120
  %1128 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1125)
  %.pre1059 = load float, ptr %1121, align 4, !tbaa !150
  br label %1133

1129:                                             ; preds = %1120
  %1130 = fsub float %1123, %.sroa.12.0.copyload
  %1131 = fcmp ult float %1130, %1122
  br i1 %1131, label %1133, label %1132

1132:                                             ; preds = %1129
  br label %1133

1133:                                             ; preds = %1129, %1132, %1127
  %1134 = phi float [ %.pre1059, %1127 ], [ %1122, %1132 ], [ %1122, %1129 ]
  %.0797 = phi float [ %1128, %1127 ], [ %1130, %1132 ], [ %1122, %1129 ]
  %1135 = fsub float %1134, %.0797
  %1136 = getelementptr inbounds i8, ptr %27, i64 4
  %1137 = load float, ptr %1136, align 4, !tbaa !175
  %1138 = fadd float %1137, %1135
  store float %1138, ptr %1136, align 4, !tbaa !175
  store float %.0797, ptr %1121, align 4, !tbaa !150
  br label %1139

1139:                                             ; preds = %1133, %1119
  store i8 0, ptr %1094, align 4, !tbaa !140
  br label %1140

1140:                                             ; preds = %1139, %1093, %1092
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #15
  %1141 = getelementptr inbounds i8, ptr %.07891086, i64 72
  %1142 = load float, ptr %1141, align 8, !tbaa !108
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %1142, float noundef 0.000000e+00)
  br i1 %.1799.in1112, label %1143, label %1212

1143:                                             ; preds = %1140
  %1144 = getelementptr inbounds i8, ptr %.07891086, i64 80
  %1145 = load i32, ptr %1144, align 4, !tbaa !152
  %1146 = getelementptr inbounds i8, ptr %.07891086, i64 84
  %1147 = load i32, ptr %1146, align 4, !tbaa !153
  %1148 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1145, i32 noundef %1147)
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds i16, ptr %1032, i64 %1149
  %1151 = load i32, ptr %1144, align 4, !tbaa !152
  %1152 = load i32, ptr %1146, align 4, !tbaa !153
  %1153 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1151, i32 noundef %1152)
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds i16, ptr %1032, i64 %1154
  %1156 = select i1 %276, float 1.000000e+00, float 0x3FE3333340000000
  %1157 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 44, float noundef %1156)
  %1158 = select i1 %66, float 0.000000e+00, float -1.000000e+00
  %1159 = select i1 %66, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #15
  %1160 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %1160, ptr %35, align 8
  %1161 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %35, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1161, ptr %34, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #15
  store ptr %1150, ptr %36, align 8, !tbaa !43
  %1162 = getelementptr inbounds i8, ptr %34, i64 4
  %1163 = icmp slt i32 %1148, %1153
  br i1 %1163, label %.lr.ph1050, label %._crit_edge

.lr.ph1050:                                       ; preds = %1143
  %1164 = extractelement <2 x float> %1161, i64 1
  %1165 = getelementptr inbounds i8, ptr %26, i64 12
  %1166 = getelementptr inbounds i8, ptr %26, i64 4
  %1167 = getelementptr inbounds i8, ptr %75, i64 6704
  %1168 = getelementptr inbounds i8, ptr %.1788, i64 784
  %1169 = getelementptr inbounds i8, ptr %37, i64 8
  %.pre1060 = load float, ptr %1074, align 8, !tbaa !44
  br label %1170

1170:                                             ; preds = %.lr.ph1050, %.loopexit
  %1171 = phi ptr [ %1150, %.lr.ph1050 ], [ %1204, %.loopexit ]
  %1172 = phi float [ %1164, %.lr.ph1050 ], [ %1210, %.loopexit ]
  %1173 = phi float [ %.pre1060, %.lr.ph1050 ], [ %1206, %.loopexit ]
  %1174 = load float, ptr %1165, align 4, !tbaa !176
  %1175 = fadd float %1174, %1173
  %1176 = fcmp ogt float %1172, %1175
  br i1 %1176, label %._crit_edge.loopexit, label %1177

1177:                                             ; preds = %1170
  %1178 = load float, ptr %1166, align 4, !tbaa !177
  %1179 = fcmp olt float %1172, %1178
  br i1 %1179, label %.preheader, label %1186

.preheader:                                       ; preds = %1177, %1182
  %1180 = phi ptr [ %1183, %1182 ], [ %1171, %1177 ]
  %1181 = icmp ult ptr %1180, %1155
  br i1 %1181, label %1182, label %.loopexit

1182:                                             ; preds = %.preheader
  %1183 = getelementptr inbounds i8, ptr %1180, i64 2
  store ptr %1183, ptr %36, align 8, !tbaa !43
  %1184 = load i16, ptr %1180, align 2, !tbaa !144
  %1185 = icmp eq i16 %1184, 10
  br i1 %1185, label %.loopexit, label %.preheader, !llvm.loop !178

1186:                                             ; preds = %1177
  %1187 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1171, ptr noundef nonnull %1155, ptr noundef nonnull %36, ptr noundef null, i1 noundef zeroext true)
  %.sroa.028.0.vec.extract = extractelement <2 x float> %1187, i64 0
  %1188 = fcmp ugt float %.sroa.028.0.vec.extract, 0.000000e+00
  br i1 %1188, label %1195, label %1189

1189:                                             ; preds = %1186
  %1190 = load ptr, ptr %1167, align 8, !tbaa !116
  %1191 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114) %1190, i16 noundef zeroext 32)
  %1192 = fmul float %1191, 5.000000e-01
  %1193 = fptosi float %1192 to i32
  %1194 = sitofp i32 %1193 to float
  br label %1195

1195:                                             ; preds = %1189, %1186
  %.sroa.028.0.vec.extract31.pre-phi = phi float [ %1194, %1189 ], [ %.sroa.028.0.vec.extract, %1186 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #15
  %1196 = load float, ptr %1074, align 8, !tbaa !44
  %1197 = fsub float %1158, %1196
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef %1197)
  %1198 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %39)
  store <2 x float> %1198, ptr %38, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef %.sroa.028.0.vec.extract31.pre-phi, float noundef %1159)
  %1199 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %41)
  store <2 x float> %1199, ptr %40, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef nonnull align 4 dereferenceable(8) %40)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %42, ptr noundef nonnull align 4 dereferenceable(16) %26)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %42)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %43, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %1200 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %43)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #15
  br i1 %1200, label %1201, label %1203

1201:                                             ; preds = %1195
  %1202 = load ptr, ptr %1168, align 8, !tbaa !179
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(224) %1202, ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1169, i32 noundef %1157, float noundef 0.000000e+00, i32 noundef 15)
  br label %1203

1203:                                             ; preds = %1201, %1195
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #15
  %.pre1061 = load float, ptr %1074, align 8, !tbaa !44
  %.pre1062 = load float, ptr %1162, align 4, !tbaa !175
  %.pre1063 = load ptr, ptr %36, align 8, !tbaa !43
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1182, %1203
  %1204 = phi ptr [ %.pre1063, %1203 ], [ %1180, %.preheader ], [ %1183, %1182 ]
  %1205 = phi float [ %.pre1062, %1203 ], [ %1172, %1182 ], [ %1172, %.preheader ]
  %1206 = phi float [ %.pre1061, %1203 ], [ %1173, %1182 ], [ %1173, %.preheader ]
  %1207 = load float, ptr %27, align 8, !tbaa !174
  %1208 = load float, ptr %33, align 4, !tbaa !174
  %1209 = fsub float %1207, %1208
  store float %1209, ptr %34, align 8, !tbaa !174
  %1210 = fadd float %1206, %1205
  store float %1210, ptr %1162, align 4, !tbaa !175
  %1211 = icmp ult ptr %1204, %1155
  br i1 %1211, label %1170, label %._crit_edge.loopexit, !llvm.loop !180

._crit_edge.loopexit:                             ; preds = %1170, %.loopexit
  %.pre1064.pre.pre = load ptr, ptr %29, align 8, !tbaa !43
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1143
  %.pre1064.pre = phi ptr [ %.pre1064.pre.pre, %._crit_edge.loopexit ], [ %.pre10641066, %1143 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #15
  br label %1212

1212:                                             ; preds = %._crit_edge, %1140
  %.pre1064 = phi ptr [ %.pre1064.pre, %._crit_edge ], [ %.pre10641066, %1140 ]
  br i1 %66, label %1218, label %1213

1213:                                             ; preds = %1212
  %1214 = ptrtoint ptr %.pre1064 to i64
  %1215 = ptrtoint ptr %.0814 to i64
  %1216 = sub i64 %1214, %1215
  %1217 = icmp slt i64 %1216, 2097152
  br i1 %1217, label %1218, label %1227

1218:                                             ; preds = %1213, %1212
  %. = phi ptr [ %26, %1213 ], [ null, %1212 ]
  %1219 = zext i1 %316 to i32
  %1220 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1219, float noundef 1.000000e+00)
  %1221 = getelementptr inbounds i8, ptr %.1788, i64 784
  %1222 = load ptr, ptr %1221, align 8, !tbaa !179
  %1223 = getelementptr inbounds i8, ptr %75, i64 6704
  %1224 = load ptr, ptr %1223, align 8, !tbaa !116
  %1225 = load float, ptr %1074, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #15
  %1226 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1226, ptr %44, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224) %1222, ptr noundef %1224, float noundef %1225, ptr noundef nonnull align 4 dereferenceable(8) %44, i32 noundef %1220, ptr noundef %.0814, ptr noundef %.pre1064, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #15
  br label %1227

1227:                                             ; preds = %1218, %1213
  br i1 %276, label %1228, label %1268

1228:                                             ; preds = %1227
  %1229 = getelementptr inbounds i8, ptr %75, i64 24
  %1230 = load float, ptr %1229, align 8, !tbaa !181
  %1231 = getelementptr inbounds i8, ptr %.07891086, i64 3696
  %1232 = load float, ptr %1231, align 8, !tbaa !182
  %1233 = fadd float %1230, %1232
  store float %1233, ptr %1231, align 8, !tbaa !182
  %1234 = getelementptr inbounds i8, ptr %75, i64 210
  %1235 = load i8, ptr %1234, align 2, !tbaa !183, !range !41, !noundef !42
  %1236 = trunc nuw i8 %1235 to i1
  %1237 = fcmp ugt float %1233, 0.000000e+00
  %or.cond978 = select i1 %1236, i1 %1237, i1 false
  br i1 %or.cond978, label %1238, label %1241

1238:                                             ; preds = %1228
  %1239 = call float @fmodf(float noundef %1233, float noundef 0x3FF3333340000000) #15
  %1240 = fcmp ole float %1239, 0x3FE99999A0000000
  br label %1241

1241:                                             ; preds = %1238, %1228
  %1242 = phi i1 [ true, %1228 ], [ %1240, %1238 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #15
  %1243 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %1243, ptr %45, align 8
  %1244 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %45, ptr noundef nonnull align 4 dereferenceable(8) %33)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #15
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1244, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1244, i64 1
  %1245 = load float, ptr %1074, align 8, !tbaa !44
  %1246 = fsub float %.sroa.0.4.vec.extract, %1245
  %1247 = fadd float %1246, 5.000000e-01
  %1248 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1249 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %46, float noundef %.sroa.0.0.vec.extract, float noundef %1247, float noundef %1248, float noundef %1249)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #15
  br i1 %1242, label %1250, label %.critedge13

1250:                                             ; preds = %1241
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %47, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %1251 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %46, ptr noundef nonnull align 4 dereferenceable(16) %47)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #15
  br i1 %1251, label %1252, label %1257

1252:                                             ; preds = %1250
  %1253 = getelementptr inbounds i8, ptr %.1788, i64 784
  %1254 = load ptr, ptr %1253, align 8, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #15
  %1255 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %46)
  store <2 x float> %1255, ptr %48, align 8
  %1256 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(224) %1254, ptr noundef nonnull align 4 dereferenceable(8) %46, ptr noundef nonnull align 4 dereferenceable(8) %48, i32 noundef %1256, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #15
  br label %1257

.critedge13:                                      ; preds = %1241
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #15
  br label %1257

1257:                                             ; preds = %.critedge13, %1252, %1250
  br i1 %77, label %1267, label %1258

1258:                                             ; preds = %1257
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #15
  %1259 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1260 = load float, ptr %1074, align 8, !tbaa !44
  %1261 = fsub float %.sroa.0.4.vec.extract, %1260
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %1259, float noundef %1261)
  %1262 = getelementptr inbounds i8, ptr %75, i64 12136
  %1263 = load i64, ptr %49, align 8
  store i64 %1263, ptr %1262, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #15
  %1264 = getelementptr inbounds i8, ptr %54, i64 48
  %1265 = load ptr, ptr %1264, align 8, !tbaa !184
  %1266 = getelementptr inbounds i8, ptr %75, i64 12152
  store ptr %1265, ptr %1266, align 8, !tbaa !185
  br label %1267

1267:                                             ; preds = %1258, %1257
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #15
  br label %1268

1268:                                             ; preds = %1267, %1227
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #15
  br label %1304

1269:                                             ; preds = %1020
  br i1 %66, label %.critedge980, label %1270

1270:                                             ; preds = %1269
  br i1 %316, label %1288, label %1271

1271:                                             ; preds = %1270
  %1272 = load i32, ptr %167, align 8, !tbaa !97
  %1273 = icmp eq i32 %1272, %87
  br i1 %1273, label %1274, label %1279

1274:                                             ; preds = %1271
  %1275 = getelementptr inbounds i8, ptr %.07891086, i64 8
  %1276 = load i32, ptr %1275, align 8, !tbaa !106
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds i8, ptr %.0814, i64 %1277
  store ptr %1278, ptr %29, align 8, !tbaa !43
  br label %1288

1279:                                             ; preds = %1271
  %1280 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0814) #16
  %1281 = getelementptr inbounds i8, ptr %.0814, i64 %1280
  store ptr %1281, ptr %29, align 8, !tbaa !43
  br label %1288

.critedge980:                                     ; preds = %1269
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #15
  %1282 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0814, ptr noundef nonnull %29)
  %1283 = sitofp i32 %1282 to float
  %1284 = getelementptr inbounds i8, ptr %75, i64 6712
  %1285 = load float, ptr %1284, align 8, !tbaa !44
  %1286 = fmul float %1285, %1283
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %50, float noundef %.sroa.0439.1, float noundef %1286)
  %1287 = load i64, ptr %50, align 8
  store i64 %1287, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #15
  br label %1294

1288:                                             ; preds = %1270, %1274, %1279
  %1289 = phi ptr [ %1021, %1270 ], [ %1278, %1274 ], [ %1281, %1279 ]
  %1290 = ptrtoint ptr %1289 to i64
  %1291 = ptrtoint ptr %.0814 to i64
  %1292 = sub i64 %1290, %1291
  %1293 = icmp slt i64 %1292, 2097152
  br i1 %1293, label %1294, label %.thread1029

1294:                                             ; preds = %.critedge980, %1288
  %.14 = phi ptr [ %26, %1288 ], [ null, %.critedge980 ]
  %1295 = zext i1 %316 to i32
  %1296 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1295, float noundef 1.000000e+00)
  %1297 = getelementptr inbounds i8, ptr %.1788, i64 784
  %1298 = load ptr, ptr %1297, align 8, !tbaa !179
  %1299 = getelementptr inbounds i8, ptr %75, i64 6704
  %1300 = load ptr, ptr %1299, align 8, !tbaa !116
  %1301 = getelementptr inbounds i8, ptr %75, i64 6712
  %1302 = load float, ptr %1301, align 8, !tbaa !44
  %1303 = load ptr, ptr %29, align 8, !tbaa !43
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224) %1298, ptr noundef %1300, float noundef %1302, ptr noundef nonnull align 4 dereferenceable(8) %27, i32 noundef %1296, ptr noundef %.0814, ptr noundef %1303, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1304

1304:                                             ; preds = %1294, %1268
  br i1 %66, label %1305, label %.thread1029

1305:                                             ; preds = %1304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #15
  %1306 = getelementptr inbounds i8, ptr %75, i64 6712
  %1307 = load float, ptr %1306, align 8, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef 0.000000e+00, float noundef %1307)
  %1308 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %52)
  store <2 x float> %1308, ptr %51, align 8
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %51)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #15
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread1029

.thread1029:                                      ; preds = %1288, %1305, %1304
  br i1 %brmerge910, label %1309, label %.thread1030

.thread1030:                                      ; preds = %.thread1029
  call void @_ZN5ImGui7PopFontEv()
  br label %1315

1309:                                             ; preds = %.thread1029
  %1310 = getelementptr inbounds i8, ptr %75, i64 12272
  %1311 = load i8, ptr %1310, align 8, !tbaa !186, !range !41, !noundef !42
  %1312 = trunc nuw i8 %1311 to i1
  br i1 %1312, label %1313, label %1315

1313:                                             ; preds = %1309
  %1314 = load ptr, ptr %29, align 8, !tbaa !43
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %27, ptr noundef %.0814, ptr noundef %1314)
  br label %1315

1315:                                             ; preds = %.thread1030, %1313, %1309
  br i1 %103, label %1316, label %1326

1316:                                             ; preds = %1315
  %1317 = getelementptr inbounds i8, ptr %11, i64 8
  %1318 = load float, ptr %1317, align 8, !tbaa !187
  %1319 = getelementptr inbounds i8, ptr %75, i64 5784
  %1320 = load float, ptr %1319, align 4, !tbaa !84
  %1321 = fadd float %1318, %1320
  %1322 = load float, ptr %1001, align 4, !tbaa !172
  %1323 = load float, ptr %98, align 4, !tbaa !83
  %1324 = fadd float %1322, %1323
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %1321, float noundef %1324)
  %1325 = load <2 x float>, ptr %53, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1325, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1326

1326:                                             ; preds = %1316, %1315
  %1327 = and i32 %5, 2097152
  %.not896 = icmp eq i32 %1327, 0
  %or.cond983 = and i1 %.not896, %.1801
  br i1 %or.cond983, label %1328, label %1329

1328:                                             ; preds = %1326
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %87)
  br label %1329

1329:                                             ; preds = %1326, %1328
  %1330 = and i32 %5, 32
  %.not897 = icmp eq i32 %1330, 0
  %1331 = trunc nuw i8 %.28041110 to i1
  %.1 = select i1 %.not897, i1 %.1801, i1 %1331
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #15
  br label %1332

1332:                                             ; preds = %138, %139, %1329, %118
  %.2 = phi i1 [ %.1, %1329 ], [ false, %138 ], [ false, %118 ], [ false, %139 ]
  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 %1333

1333:                                             ; preds = %8, %1332
  %.3 = phi i1 [ %.2, %1332 ], [ false, %8 ]
  ret i1 %.3
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11

declare void @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) local_unnamed_addr #6

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

declare void @_ZN5ImGui8EndChildEv() local_unnamed_addr #6

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

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

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

declare noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

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

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114), i16 noundef zeroext) local_unnamed_addr #6

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

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

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

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

; 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 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #9

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

declare void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef, float noundef) local_unnamed_addr #6

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #6

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

declare noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #6

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #6

declare noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #6

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #6

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #6

declare noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

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

; 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 #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114), i16 noundef zeroext) local_unnamed_addr #9 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 #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #4 align 2

declare void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(224), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) local_unnamed_addr #6

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

declare void @_ZN5ImGui7PopFontEv() local_unnamed_addr #6

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 = { 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 #3 = { 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 #4 = { 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 #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { "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 #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 #9 = { 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 #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 nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #12 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #13 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #14 = { noreturn nounwind }
attributes #15 = { nounwind }
attributes #16 = { nounwind willreturn memory(read) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 188}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !11, i64 20, !7, i64 48, !10, i64 56, !13, i64 60, !10, i64 68, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !14, i64 120, !14, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !13, i64 140, !13, i64 148, !13, i64 156, !13, i64 164, !13, i64 172, !12, i64 180, !12, i64 181, !12, i64 182, !12, i64 183, !12, i64 184, !12, i64 185, !12, i64 186, !12, i64 187, !12, i64 188, !12, i64 189, !12, i64 190, !12, i64 191, !12, i64 192, !8, i64 193, !15, i64 194, !15, i64 196, !15, i64 198, !10, i64 200, !8, i64 204, !8, i64 205, !8, i64 206, !12, i64 207, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !13, i64 236, !13, i64 244, !16, i64 256, !17, i64 272, !19, i64 600, !19, i64 616, !19, i64 632, !19, i64 648, !19, i64 664, !19, i64 680, !19, i64 696, !26, i64 712, !26, i64 716, !10, i64 720, !10, i64 724, !14, i64 728, !14, i64 732, !27, i64 736, !29, i64 752, !14, i64 768, !14, i64 772, !10, i64 776, !7, i64 784, !30, i64 792, !7, i64 1016, !7, i64 1024, !7, i64 1032, !7, i64 1040, !7, i64 1048, !7, i64 1056, !8, i64 1064, !8, i64 1072, !12, i64 1104, !10, i64 1108, !10, i64 1112, !7, i64 1120, !7, i64 1128, !10, i64 1136, !10, i64 1140, !19, i64 1144, !15, i64 1160, !12, i64 1162, !12, i64 1162, !12, i64 1162}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !12, i64 24, !12, i64 25}
!12 = !{!"bool", !8, i64 0}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !8, i64 0}
!15 = !{!"short", !8, i64 0}
!16 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!17 = !{!"_ZTS19ImGuiWindowTempData", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !14, i64 48, !14, i64 52, !18, i64 56, !18, i64 60, !18, i64 64, !10, i64 68, !10, i64 72, !19, i64 76, !19, i64 92, !20, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !12, i64 128, !12, i64 129, !12, i64 130, !13, i64 132, !21, i64 140, !10, i64 176, !10, i64 180, !22, i64 184, !7, i64 200, !7, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !14, i64 236, !14, i64 240, !23, i64 248, !24, i64 264, !24, i64 280, !25, i64 296, !8, i64 312}
!18 = !{!"_ZTS6ImVec1", !14, i64 0}
!19 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!20 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!21 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !14, i64 8, !8, i64 12, !8, i64 24}
!22 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!23 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!24 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!25 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!26 = !{!"_ZTS8ImVec2ih", !15, i64 0, !15, i64 2}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS10ImDrawList", !31, i64 0, !32, i64 16, !33, i64 32, !10, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !7, i64 80, !7, i64 88, !34, i64 96, !35, i64 112, !36, i64 128, !37, i64 144, !39, i64 200}
!31 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!35 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!36 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!37 = !{!"_ZTS9ImDrawCmd", !38, i64 0, !7, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !7, i64 40, !7, i64 48}
!38 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!39 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !40, i64 8}
!40 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = !{!7, !7, i64 0}
!44 = !{!45, !14, i64 6712}
!45 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !46, i64 8, !47, i64 5472, !50, i64 5704, !10, i64 6692, !10, i64 6696, !7, i64 6704, !14, i64 6712, !14, i64 6716, !51, i64 6720, !52, i64 6936, !10, i64 6944, !10, i64 6948, !10, i64 6952, !10, i64 6956, !12, i64 6960, !12, i64 6961, !12, i64 6962, !12, i64 6963, !10, i64 6964, !7, i64 6968, !22, i64 6976, !22, i64 6992, !22, i64 7008, !22, i64 7024, !27, i64 7040, !10, i64 7056, !7, i64 7064, !7, i64 7072, !7, i64 7080, !7, i64 7088, !7, i64 7096, !7, i64 7104, !7, i64 7112, !13, i64 7120, !14, i64 7128, !10, i64 7132, !10, i64 7136, !12, i64 7140, !12, i64 7141, !14, i64 7144, !14, i64 7148, !10, i64 7152, !10, i64 7156, !14, i64 7160, !12, i64 7164, !12, i64 7165, !12, i64 7166, !12, i64 7167, !12, i64 7168, !12, i64 7169, !10, i64 7172, !10, i64 7176, !53, i64 7184, !13, i64 7192, !7, i64 7200, !54, i64 7208, !10, i64 7212, !10, i64 7216, !12, i64 7220, !12, i64 7221, !7, i64 7224, !10, i64 7232, !14, i64 7236, !55, i64 7240, !56, i64 7384, !57, i64 7408, !58, i64 7424, !59, i64 7440, !60, i64 7456, !60, i64 7472, !61, i64 7488, !14, i64 7504, !7, i64 7512, !7, i64 7520, !7, i64 7528, !10, i64 7536, !10, i64 7540, !7, i64 7544, !10, i64 7552, !10, i64 7556, !10, i64 7560, !10, i64 7564, !10, i64 7568, !10, i64 7572, !10, i64 7576, !10, i64 7580, !10, i64 7584, !10, i64 7588, !10, i64 7592, !54, i64 7596, !19, i64 7600, !10, i64 7616, !20, i64 7620, !10, i64 7624, !12, i64 7628, !12, i64 7629, !12, i64 7630, !12, i64 7631, !12, i64 7632, !12, i64 7633, !12, i64 7634, !10, i64 7636, !19, i64 7640, !12, i64 7656, !12, i64 7657, !10, i64 7660, !62, i64 7664, !10, i64 7668, !10, i64 7672, !10, i64 7676, !10, i64 7680, !63, i64 7688, !63, i64 7736, !63, i64 7784, !7, i64 7832, !10, i64 7840, !7, i64 7848, !7, i64 7856, !7, i64 7864, !14, i64 7872, !14, i64 7876, !12, i64 7880, !7, i64 7888, !7, i64 7896, !10, i64 7904, !10, i64 7908, !10, i64 7912, !10, i64 7916, !12, i64 7920, !14, i64 7924, !10, i64 7928, !12, i64 7932, !12, i64 7933, !12, i64 7934, !10, i64 7936, !10, i64 7940, !10, i64 7944, !64, i64 7952, !19, i64 8016, !10, i64 8032, !10, i64 8036, !14, i64 8040, !10, i64 8044, !10, i64 8048, !10, i64 8052, !10, i64 8056, !65, i64 8064, !8, i64 8080, !7, i64 8096, !66, i64 8104, !68, i64 8144, !69, i64 8160, !13, i64 8176, !70, i64 8184, !74, i64 11912, !10, i64 12032, !10, i64 12036, !14, i64 12040, !14, i64 12044, !8, i64 12048, !38, i64 12060, !14, i64 12076, !12, i64 12080, !12, i64 12081, !14, i64 12084, !14, i64 12088, !14, i64 12092, !10, i64 12096, !71, i64 12104, !16, i64 12120, !13, i64 12136, !13, i64 12144, !7, i64 12152, !76, i64 12160, !12, i64 12216, !14, i64 12220, !79, i64 12224, !80, i64 12240, !81, i64 12256, !12, i64 12272, !82, i64 12276, !7, i64 12280, !79, i64 12288, !14, i64 12304, !12, i64 12308, !10, i64 12312, !10, i64 12316, !10, i64 12320, !12, i64 12324, !10, i64 12328, !8, i64 12332, !10, i64 12812, !14, i64 12816, !10, i64 12820, !10, i64 12824, !10, i64 12828, !8, i64 12832}
!46 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !7, i64 24, !7, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !8, i64 52, !14, i64 140, !14, i64 144, !7, i64 152, !7, i64 160, !14, i64 168, !12, i64 172, !7, i64 176, !13, i64 184, !12, i64 192, !12, i64 193, !12, i64 194, !12, i64 195, !12, i64 196, !12, i64 197, !12, i64 198, !12, i64 199, !12, i64 200, !12, i64 201, !12, i64 202, !12, i64 203, !12, i64 204, !14, 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, !13, i64 288, !8, i64 296, !14, i64 304, !14, i64 308, !10, i64 312, !12, i64 316, !12, i64 317, !12, i64 318, !12, i64 319, !8, i64 320, !8, i64 832, !12, i64 916, !12, i64 917, !12, i64 918, !12, i64 919, !12, i64 920, !12, i64 921, !12, i64 922, !14, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !13, i64 948, !10, i64 956, !13, i64 960, !8, i64 968, !8, i64 1008, !8, i64 1048, !8, i64 1053, !8, i64 1058, !8, i64 1063, !8, i64 1068, !8, i64 1076, !8, i64 1096, !8, i64 1116, !8, i64 1156, !8, i64 1176, !8, i64 3224, !8, i64 5272, !8, i64 5356, !14, i64 5440, !15, i64 5444, !32, i64 5448}
!47 = !{!"_ZTS15ImGuiPlatformIO", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !48, i64 192, !7, i64 208, !49, i64 216}
!48 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !10, i64 0, !10, i64 4, !7, i64 8}
!49 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !10, i64 0, !10, i64 4, !7, i64 8}
!50 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !13, i64 4, !14, i64 12, !14, i64 16, !13, i64 20, !13, i64 28, !10, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !13, i64 56, !14, i64 64, !14, i64 68, !13, i64 72, !13, i64 80, !13, i64 88, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !10, i64 136, !13, i64 140, !13, i64 148, !13, i64 156, !13, i64 164, !14, i64 172, !12, i64 176, !12, i64 177, !12, i64 178, !14, i64 180, !14, i64 184, !8, i64 188}
!51 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !7, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !38, i64 28, !10, i64 44, !8, i64 48, !8, i64 144, !7, i64 208}
!52 = !{!"double", !8, i64 0}
!53 = !{!"long long", !8, i64 0}
!54 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!55 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !13, i64 20, !13, i64 28, !13, i64 36, !13, i64 44, !13, i64 52, !12, i64 60, !12, i64 61, !19, i64 64, !7, i64 80, !7, i64 88, !14, i64 96, !10, i64 100, !10, i64 104, !11, i64 108, !13, i64 136}
!56 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !12, i64 16}
!57 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!58 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!59 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!61 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!62 = !{!"_ZTS15ImGuiNavForward", !8, i64 0}
!63 = !{!"_ZTS18ImGuiNavMoveResult", !7, i64 0, !10, i64 8, !10, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !19, i64 28}
!64 = !{!"_ZTS12ImGuiPayload", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !12, i64 57, !12, i64 58}
!65 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !67, i64 0, !27, i64 16, !10, i64 32}
!67 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!68 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !32, i64 16, !71, i64 32, !71, i64 48, !12, i64 64, !10, i64 68, !14, i64 72, !72, i64 76, !14, i64 3696, !12, i64 3700, !12, i64 3701, !12, i64 3702, !10, i64 3704, !7, i64 3712, !7, i64 3720}
!71 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !8, i64 13, !8, i64 14, !8, i64 15, !8, i64 16, !8, i64 17, !8, i64 18, !8, i64 19, !14, i64 20, !73, i64 24}
!73 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !15, i64 3582, !15, i64 3584, !10, i64 3588, !10, i64 3592}
!74 = !{!"_ZTS6ImFont", !24, i64 0, !14, i64 16, !14, i64 20, !32, i64 24, !75, i64 40, !7, i64 56, !13, i64 64, !7, i64 72, !7, i64 80, !15, i64 88, !15, i64 90, !15, i64 92, !12, i64 94, !14, i64 96, !14, i64 100, !14, i64 104, !10, i64 108, !8, i64 112}
!75 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!76 = !{!"_ZTS16ImGuiDockContext", !27, i64 0, !77, i64 16, !78, i64 32, !12, i64 48}
!77 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !7, i64 8}
!78 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !7, i64 8}
!79 = !{!"_ZTS15ImGuiTextBuffer", !71, i64 0}
!80 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!81 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !71, i64 0}
!82 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!83 = !{!50, !14, i64 60}
!84 = !{!50, !14, i64 80}
!85 = !{!14, !14, i64 0}
!86 = !{!50, !14, i64 64}
!87 = !{!50, !14, i64 68}
!88 = !{!45, !7, i64 7064}
!89 = !{!6, !10, i64 384}
!90 = !{!6, !10, i64 392}
!91 = !{!6, !14, i64 172}
!92 = !{!45, !10, i64 7928}
!93 = !{!45, !7, i64 7888}
!94 = !{!45, !10, i64 7904}
!95 = !{!6, !10, i64 496}
!96 = !{!12, !12, i64 0}
!97 = !{!45, !10, i64 7152}
!98 = !{!45, !10, i64 7572}
!99 = !{!45, !10, i64 7560}
!100 = !{!45, !54, i64 7596}
!101 = !{!45, !10, i64 7216}
!102 = !{!70, !7, i64 56}
!103 = !{!70, !12, i64 64}
!104 = !{!70, !7, i64 24}
!105 = !{!70, !10, i64 4}
!106 = !{!70, !10, i64 8}
!107 = !{!70, !10, i64 0}
!108 = !{!70, !14, i64 72}
!109 = !{!70, !8, i64 88}
!110 = !{!46, !12, i64 316}
!111 = !{!10, !10, i64 0}
!112 = !{!45, !53, i64 7184}
!113 = !{!70, !10, i64 16}
!114 = !{!70, !7, i64 40}
!115 = !{!8, !8, i64 0}
!116 = !{!45, !7, i64 6704}
!117 = !{!74, !14, i64 20}
!118 = !{!74, !14, i64 96}
!119 = !{!74, !7, i64 72}
!120 = !{!74, !7, i64 56}
!121 = !{!122, !14, i64 4}
!122 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 3, !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}
!123 = !{!74, !14, i64 16}
!124 = !{!70, !12, i64 3702}
!125 = !{!70, !10, i64 68}
!126 = !{!70, !10, i64 3704}
!127 = !{!70, !7, i64 3712}
!128 = !{!70, !7, i64 3720}
!129 = !{!45, !12, i64 7165}
!130 = !{!45, !10, i64 12828}
!131 = !{!46, !14, i64 288}
!132 = !{!19, !14, i64 0}
!133 = !{!50, !14, i64 56}
!134 = !{!46, !14, i64 292}
!135 = !{!6, !14, i64 276}
!136 = !{!46, !12, i64 201}
!137 = !{!70, !12, i64 3701}
!138 = !{!46, !14, i64 948}
!139 = !{!46, !14, i64 952}
!140 = !{!70, !12, i64 3700}
!141 = !{!46, !12, i64 318}
!142 = !{!46, !12, i64 319}
!143 = !{!46, !12, i64 317}
!144 = !{!15, !15, i64 0}
!145 = !{!46, !10, i64 5448}
!146 = distinct !{!146, !147}
!147 = !{!"llvm.loop.mustprogress"}
!148 = !{!45, !12, i64 7164}
!149 = !{!46, !10, i64 956}
!150 = !{!6, !14, i64 144}
!151 = !{!46, !7, i64 264}
!152 = !{!70, !10, i64 80}
!153 = !{!70, !10, i64 84}
!154 = distinct !{!154, !147}
!155 = !{!70, !10, i64 48}
!156 = !{!32, !7, i64 8}
!157 = !{!32, !10, i64 0}
!158 = !{!70, !10, i64 32}
!159 = !{!160, !10, i64 0}
!160 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !7, i64 8, !15, i64 16, !10, i64 20, !7, i64 24, !10, i64 32, !10, i64 36, !12, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!161 = !{!160, !10, i64 4}
!162 = !{!160, !7, i64 8}
!163 = !{!160, !10, i64 20}
!164 = !{!160, !7, i64 24}
!165 = !{!160, !10, i64 32}
!166 = !{!160, !10, i64 36}
!167 = !{!70, !10, i64 76}
!168 = !{!160, !10, i64 44}
!169 = !{!160, !10, i64 48}
!170 = !{!160, !10, i64 52}
!171 = !{!160, !12, i64 40}
!172 = !{!19, !14, i64 4}
!173 = distinct !{!173, !147}
!174 = !{!13, !14, i64 0}
!175 = !{!13, !14, i64 4}
!176 = !{!38, !14, i64 12}
!177 = !{!38, !14, i64 4}
!178 = distinct !{!178, !147}
!179 = !{!6, !7, i64 784}
!180 = distinct !{!180, !147}
!181 = !{!46, !14, i64 16}
!182 = !{!70, !14, i64 3696}
!183 = !{!45, !12, i64 210}
!184 = !{!6, !7, i64 48}
!185 = !{!45, !7, i64 12152}
!186 = !{!45, !12, i64 12272}
!187 = !{!19, !14, i64 8}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass