; LLVM IR from jan-van-bergen/GPU-Raytracer :: include/Imgui (imgui_widgets)

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

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

@GImGui = external global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.59 = 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.60 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no = external hidden unnamed_addr constant [2 x i32], align 4

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #3 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) #5

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #5

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

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

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) #5

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() #5

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #11 align 2

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

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

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

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #5

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

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

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

declare void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8)) #5

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) #5

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

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

declare void @_ZN5ImGui10BeginGroupEv() #5

declare void @_ZN5ImGui8EndGroupEv() #5

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

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

declare void @_Z9ImStrncpyPcPKcm(ptr noundef, ptr noundef, i64 noundef) #5

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef nonnull align 4 dereferenceable(8) %4, i32 noundef %5, ptr noundef %6, ptr noundef %7) #10 personality ptr @__gxx_personality_v0 {
  %9 = alloca i1, align 1
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca i32, align 4
  %30 = alloca %struct.ImVec2, align 4
  %31 = alloca %struct.ImVec2, align 4
  %32 = alloca %struct.ImVec2, align 4
  %33 = alloca %struct.ImVec2, align 4
  %34 = alloca %struct.ImRect, align 4
  %35 = alloca %struct.ImVec2, align 4
  %36 = alloca %struct.ImRect, align 4
  %37 = alloca %struct.ImVec2, align 4
  %38 = alloca ptr, align 8
  %39 = alloca %struct.ImVec2, align 4
  %40 = alloca i32, align 4
  %41 = alloca %struct.ImGuiLastItemData, align 4
  %42 = alloca %struct.ImVec2, align 4
  %43 = alloca %struct.ImVec2, align 4
  %44 = alloca i8, align 1
  %45 = alloca %struct.ImVec2, align 4
  %46 = alloca i8, align 1
  %47 = alloca ptr, align 8
  %48 = alloca i8, align 1
  %49 = alloca i8, align 1
  %50 = alloca i8, align 1
  %51 = alloca i8, align 1
  %52 = alloca i8, align 1
  %53 = alloca i8, align 1
  %54 = alloca i8, align 1
  %55 = alloca float, align 4
  %56 = alloca i8, align 1
  %57 = alloca i8, align 1
  %58 = alloca i8, align 1
  %59 = alloca i32, align 4
  %60 = alloca ptr, align 8
  %61 = alloca i8, align 1
  %62 = alloca i8, align 1
  %63 = alloca i8, align 1
  %64 = alloca i8, align 1
  %65 = alloca i8, align 1
  %66 = alloca ptr, align 8
  %67 = alloca i8, align 1
  %68 = alloca i8, align 1
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca i32, align 4
  %72 = alloca float, align 4
  %73 = alloca float, align 4
  %74 = alloca i8, align 1
  %75 = alloca i32, align 4
  %76 = alloca i8, align 1
  %77 = alloca i8, align 1
  %78 = alloca i8, align 1
  %79 = alloca i16, align 2
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i8, align 1
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i8, align 1
  %87 = alloca i8, align 1
  %88 = alloca i8, align 1
  %89 = alloca i8, align 1
  %90 = alloca i8, align 1
  %91 = alloca i8, align 1
  %92 = alloca i8, align 1
  %93 = alloca i8, align 1
  %94 = alloca i8, align 1
  %95 = alloca i8, align 1
  %96 = alloca i8, align 1
  %97 = alloca i8, align 1
  %98 = alloca i8, align 1
  %99 = alloca i8, align 1
  %100 = alloca i8, align 1
  %101 = alloca i8, align 1
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca i32, align 4
  %109 = alloca ptr, align 8
  %110 = alloca i32, align 4
  %111 = alloca ptr, align 8
  %112 = alloca i32, align 4
  %113 = alloca ptr, align 8
  %114 = alloca i32, align 4
  %115 = alloca %struct.ImVector.5, align 8
  %116 = alloca ptr, align 8
  %117 = alloca i32, align 4
  %118 = alloca i8, align 1
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %122 = alloca ptr, align 8
  %123 = alloca ptr, align 8
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca i32, align 4
  %127 = alloca i8, align 1
  %128 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %129 = alloca %struct.ImVec2, align 4
  %130 = alloca %struct.ImVec2, align 4
  %131 = alloca %struct.ImVec4, align 4
  %132 = alloca %struct.ImVec2, align 4
  %133 = alloca %struct.ImVec2, align 4
  %134 = alloca i32, align 4
  %135 = alloca ptr, align 8
  %136 = alloca ptr, align 8
  %137 = alloca ptr, align 8
  %138 = alloca %struct.ImVec2, align 4
  %139 = alloca %struct.ImVec2, align 4
  %140 = alloca [2 x ptr], align 16
  %141 = alloca [2 x i32], align 4
  %142 = alloca i32, align 4
  %143 = alloca i32, align 4
  %144 = alloca ptr, align 8
  %145 = alloca %struct.ImVec2, align 4
  %146 = alloca %struct.ImVec2, align 4
  %147 = alloca %struct.ImVec2, align 4
  %148 = alloca float, align 4
  %149 = alloca float, align 4
  %150 = alloca float, align 4
  %151 = alloca %struct.ImVec2, align 4
  %152 = alloca ptr, align 8
  %153 = alloca ptr, align 8
  %154 = alloca i32, align 4
  %155 = alloca float, align 4
  %156 = alloca float, align 4
  %157 = alloca %struct.ImVec2, align 4
  %158 = alloca %struct.ImVec2, align 4
  %159 = alloca ptr, align 8
  %160 = alloca %struct.ImVec2, align 4
  %161 = alloca %struct.ImRect, align 4
  %162 = alloca %struct.ImVec2, align 4
  %163 = alloca %struct.ImVec2, align 4
  %164 = alloca %struct.ImVec2, align 4
  %165 = alloca %struct.ImVec2, align 4
  %166 = alloca %struct.ImRect, align 4
  %167 = alloca %struct.ImRect, align 4
  %168 = alloca i32, align 4
  %169 = alloca %struct.ImVec2, align 4
  %170 = alloca i8, align 1
  %171 = alloca %struct.ImVec2, align 4
  %172 = alloca %struct.ImVec2, align 4
  %173 = alloca %struct.ImVec2, align 4
  %174 = alloca %struct.ImRect, align 4
  %175 = alloca %struct.ImRect, align 4
  %176 = alloca %struct.ImVec2, align 4
  %177 = alloca %struct.ImVec2, align 4
  %178 = alloca %struct.ImVec2, align 4
  %179 = alloca i32, align 4
  %180 = alloca %struct.ImVec2, align 4
  %181 = alloca i32, align 4
  %182 = alloca %struct.ImVec2, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store i32 %3, ptr %13, align 4, !tbaa !9
  store ptr %4, ptr %14, align 8, !tbaa !5
  store i32 %5, ptr %15, align 4, !tbaa !9
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #14
  %183 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %183, ptr %18, align 8, !tbaa !5
  %184 = load ptr, ptr %18, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.ImGuiWindow, ptr %184, i32 0, i32 28
  %186 = load i8, ptr %185, align 1, !tbaa !11, !range !40, !noundef !41
  %187 = trunc i8 %186 to i1
  br i1 %187, label %188, label %189

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

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

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

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

197:                                              ; preds = %195
  br label %200

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

199:                                              ; No predecessors!
  br label %200

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

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

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

211:                                              ; preds = %208
  br label %214

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

213:                                              ; No predecessors!
  br label %214

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

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

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

225:                                              ; preds = %222
  br label %228

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

227:                                              ; No predecessors!
  br label %228

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

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

259:                                              ; preds = %256
  br label %262

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

261:                                              ; No predecessors!
  br label %262

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

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

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

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

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

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

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

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

307:                                              ; preds = %285
  br label %308

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

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

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

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

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

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

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

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

396:                                              ; preds = %394
  br label %415

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

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

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

409:                                              ; preds = %405
  br label %410

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

513:                                              ; preds = %503
  br label %514

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

700:                                              ; preds = %698
  br label %703

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

702:                                              ; No predecessors!
  br label %703

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

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

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

724:                                              ; preds = %719, %715
  %725 = load ptr, ptr %20, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.ImGuiContext, ptr %725, i32 0, i32 58
  %727 = load i32, ptr %726, align 4, !tbaa !124
  %728 = or i32 %727, 2
  store i32 %728, ptr %726, align 4, !tbaa !124
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 519)
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 520)
  %729 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %730 = trunc i8 %729 to i1
  br i1 %730, label %731, label %732

731:                                              ; preds = %724
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 517)
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 518)
  br label %732

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

736:                                              ; preds = %732
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 512)
  br label %737

737:                                              ; preds = %736, %732
  br label %738

738:                                              ; preds = %737, %686, %680
  %739 = load ptr, ptr %20, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiContext, ptr %739, i32 0, i32 46
  %741 = load i32, ptr %740, align 4, !tbaa !106
  %742 = load i32, ptr %29, align 4, !tbaa !9
  %743 = icmp eq i32 %741, %742
  br i1 %743, label %744, label %748

744:                                              ; preds = %738
  %745 = load ptr, ptr %47, align 8, !tbaa !5
  %746 = icmp eq ptr %745, null
  br i1 %746, label %747, label %748

747:                                              ; preds = %744
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %748

748:                                              ; preds = %747, %744, %738
  %749 = load ptr, ptr %20, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.ImGuiContext, ptr %749, i32 0, i32 46
  %751 = load i32, ptr %750, align 4, !tbaa !106
  %752 = load i32, ptr %29, align 4, !tbaa !9
  %753 = icmp eq i32 %751, %752
  br i1 %753, label %754, label %767

754:                                              ; preds = %748
  %755 = load ptr, ptr %21, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.ImGuiIO, ptr %755, i32 0, i32 68
  %757 = getelementptr inbounds [5 x i8], ptr %756, i64 0, i64 0
  %758 = load i8, ptr %757, align 8, !tbaa !42, !range !40, !noundef !41
  %759 = trunc i8 %758 to i1
  br i1 %759, label %760, label %767

760:                                              ; preds = %754
  %761 = load i8, ptr %58, align 1, !tbaa !42, !range !40, !noundef !41
  %762 = trunc i8 %761 to i1
  br i1 %762, label %767, label %763

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

766:                                              ; preds = %763
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %767

767:                                              ; preds = %766, %763, %760, %754, %748
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #14
  %768 = load ptr, ptr %20, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.ImGuiContext, ptr %768, i32 0, i32 46
  %770 = load i32, ptr %769, align 4, !tbaa !106
  %771 = load i32, ptr %29, align 4, !tbaa !9
  %772 = icmp eq i32 %770, %771
  br i1 %772, label %781, label %773

773:                                              ; preds = %767
  %774 = load ptr, ptr %47, align 8, !tbaa !5
  %775 = icmp ne ptr %774, null
  br i1 %775, label %776, label %779

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

779:                                              ; preds = %776, %773
  %780 = phi i1 [ false, %773 ], [ %778, %776 ]
  br label %781

781:                                              ; preds = %779, %767
  %782 = phi i1 [ true, %767 ], [ %780, %779 ]
  %783 = zext i1 %782 to i8
  store i8 %783, ptr %62, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %784 = load ptr, ptr %47, align 8, !tbaa !5
  %785 = icmp ne ptr %784, null
  br i1 %785, label %786, label %795

786:                                              ; preds = %781
  %787 = load ptr, ptr %47, align 8, !tbaa !5
  %788 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %787)
  br i1 %788, label %792, label %789

789:                                              ; preds = %786
  %790 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %791 = trunc i8 %790 to i1
  br i1 %791, label %792, label %795

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

795:                                              ; preds = %792, %789, %781
  %796 = phi i1 [ false, %789 ], [ false, %781 ], [ %794, %792 ]
  %797 = zext i1 %796 to i8
  store i8 %797, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #14
  store i8 0, ptr %64, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #14
  store i8 0, ptr %65, align 1, !tbaa !42
  %798 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %799 = trunc i8 %798 to i1
  br i1 %799, label %800, label %844

800:                                              ; preds = %795
  %801 = load ptr, ptr %47, align 8, !tbaa !5
  %802 = icmp ne ptr %801, null
  br i1 %802, label %803, label %844

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

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

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

844:                                              ; preds = %809, %806, %800, %795
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #14
  %845 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %846 = trunc i8 %845 to i1
  br i1 %846, label %856, label %847

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

850:                                              ; preds = %847
  %851 = load ptr, ptr %20, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.ImGuiContext, ptr %851, i32 0, i32 46
  %853 = load i32, ptr %852, align 4, !tbaa !106
  %854 = load i32, ptr %29, align 4, !tbaa !9
  %855 = icmp eq i32 %853, %854
  br i1 %855, label %856, label %867

856:                                              ; preds = %850, %847, %844
  %857 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %858 = trunc i8 %857 to i1
  br i1 %858, label %867, label %859

859:                                              ; preds = %856
  %860 = load ptr, ptr %47, align 8, !tbaa !5
  %861 = icmp ne ptr %860, null
  br i1 %861, label %862, label %867

862:                                              ; preds = %859
  %863 = load ptr, ptr %47, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %863, i32 0, i32 7
  %865 = load i8, ptr %864, align 8, !tbaa !114, !range !40, !noundef !41
  %866 = trunc i8 %865 to i1
  br label %867

867:                                              ; preds = %862, %859, %856, %850
  %868 = phi i1 [ false, %859 ], [ false, %856 ], [ false, %850 ], [ %866, %862 ]
  %869 = zext i1 %868 to i8
  store i8 %869, ptr %67, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #14
  %870 = load ptr, ptr %11, align 8, !tbaa !5
  %871 = icmp ne ptr %870, null
  br i1 %871, label %872, label %888

872:                                              ; preds = %867
  %873 = load i8, ptr %67, align 1, !tbaa !42, !range !40, !noundef !41
  %874 = trunc i8 %873 to i1
  br i1 %874, label %875, label %880

875:                                              ; preds = %872
  %876 = load ptr, ptr %47, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %876, i32 0, i32 5
  %878 = getelementptr inbounds %struct.ImVector.28, ptr %877, i32 0, i32 2
  %879 = load ptr, ptr %878, align 8, !tbaa !126
  br label %882

880:                                              ; preds = %872
  %881 = load ptr, ptr %12, align 8, !tbaa !5
  br label %882

882:                                              ; preds = %880, %875
  %883 = phi ptr [ %879, %875 ], [ %881, %880 ]
  %884 = getelementptr inbounds i8, ptr %883, i64 0
  %885 = load i8, ptr %884, align 1, !tbaa !127
  %886 = sext i8 %885 to i32
  %887 = icmp eq i32 %886, 0
  br label %888

888:                                              ; preds = %882, %867
  %889 = phi i1 [ false, %867 ], [ %887, %882 ]
  %890 = zext i1 %889 to i8
  store i8 %890, ptr %68, align 1, !tbaa !42
  %891 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %892 = trunc i8 %891 to i1
  br i1 %892, label %893, label %964

893:                                              ; preds = %888
  %894 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %895 = trunc i8 %894 to i1
  br i1 %895, label %964, label %896

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

949:                                              ; preds = %896
  %950 = load ptr, ptr %70, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ImFont, ptr %950, i32 0, i32 0
  %952 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %951)
  br i1 %952, label %953, label %957

953:                                              ; preds = %949
  %954 = load ptr, ptr %70, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImFont, ptr %954, i32 0, i32 3
  %956 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %955)
  br label %957

957:                                              ; preds = %953, %949, %896
  %958 = phi i1 [ false, %949 ], [ false, %896 ], [ %956, %953 ]
  br i1 %958, label %959, label %960

959:                                              ; preds = %957
  br label %962

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

961:                                              ; No predecessors!
  br label %962

962:                                              ; preds = %961, %959
  %963 = load ptr, ptr %70, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %963)
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #14
  br label %964

964:                                              ; preds = %962, %893, %888
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #14
  store i32 0, ptr %71, align 4, !tbaa !9
  %965 = load ptr, ptr %20, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.ImGuiContext, ptr %965, i32 0, i32 46
  %967 = load i32, ptr %966, align 4, !tbaa !106
  %968 = load i32, ptr %29, align 4, !tbaa !9
  %969 = icmp eq i32 %967, %968
  br i1 %969, label %970, label %1364

970:                                              ; preds = %964
  %971 = load ptr, ptr %47, align 8, !tbaa !5
  %972 = icmp ne ptr %971, null
  br i1 %972, label %973, label %974

973:                                              ; preds = %970
  br label %976

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

975:                                              ; No predecessors!
  br label %976

976:                                              ; preds = %975, %973
  %977 = load ptr, ptr %47, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %977, i32 0, i32 2
  %979 = load i32, ptr %978, align 8, !tbaa !117
  store i32 %979, ptr %71, align 4, !tbaa !9
  %980 = load ptr, ptr %47, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %980, i32 0, i32 15
  store i8 0, ptr %981, align 2, !tbaa !138
  %982 = load i32, ptr %13, align 4, !tbaa !9
  %983 = load ptr, ptr %47, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %983, i32 0, i32 9
  store i32 %982, ptr %984, align 4, !tbaa !139
  %985 = load i32, ptr %15, align 4, !tbaa !9
  %986 = load ptr, ptr %47, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %986, i32 0, i32 17
  store i32 %985, ptr %987, align 8, !tbaa !140
  %988 = load ptr, ptr %21, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.ImGuiIO, ptr %988, i32 0, i32 53
  %990 = getelementptr inbounds [5 x i8], ptr %989, i64 0, i64 0
  %991 = load i8, ptr %990, align 4, !tbaa !42, !range !40, !noundef !41
  %992 = trunc i8 %991 to i1
  %993 = xor i1 %992, true
  %994 = load ptr, ptr %20, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.ImGuiContext, ptr %994, i32 0, i32 50
  %996 = zext i1 %993 to i8
  store i8 %996, ptr %995, align 1, !tbaa !141
  %997 = load ptr, ptr %20, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.ImGuiContext, ptr %997, i32 0, i32 238
  store i32 1, ptr %998, align 4, !tbaa !142
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #14
  %999 = load ptr, ptr %21, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.ImGuiIO, ptr %999, i32 0, i32 52
  %1001 = getelementptr inbounds %struct.ImVec2, ptr %1000, i32 0, i32 0
  %1002 = load float, ptr %1001, align 4, !tbaa !143
  %1003 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %1004 = getelementptr inbounds %struct.ImVec2, ptr %1003, i32 0, i32 0
  %1005 = load float, ptr %1004, align 4, !tbaa !144
  %1006 = fsub float %1002, %1005
  %1007 = load ptr, ptr %22, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.ImGuiStyle, ptr %1007, i32 0, i32 12
  %1009 = getelementptr inbounds %struct.ImVec2, ptr %1008, i32 0, i32 0
  %1010 = load float, ptr %1009, align 4, !tbaa !145
  %1011 = fsub float %1006, %1010
  %1012 = load ptr, ptr %47, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1012, i32 0, i32 10
  %1014 = load float, ptr %1013, align 8, !tbaa !119
  %1015 = fadd float %1011, %1014
  store float %1015, ptr %72, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #14
  %1016 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1017 = trunc i8 %1016 to i1
  br i1 %1017, label %1018, label %1029

1018:                                             ; preds = %976
  %1019 = load ptr, ptr %21, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.ImGuiIO, ptr %1019, i32 0, i32 52
  %1021 = getelementptr inbounds %struct.ImVec2, ptr %1020, i32 0, i32 1
  %1022 = load float, ptr %1021, align 4, !tbaa !146
  %1023 = load ptr, ptr %38, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.ImGuiWindow, ptr %1023, i32 0, i32 54
  %1025 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1024, i32 0, i32 0
  %1026 = getelementptr inbounds %struct.ImVec2, ptr %1025, i32 0, i32 1
  %1027 = load float, ptr %1026, align 4, !tbaa !147
  %1028 = fsub float %1022, %1027
  br label %1034

1029:                                             ; preds = %976
  %1030 = load ptr, ptr %20, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.ImGuiContext, ptr %1030, i32 0, i32 8
  %1032 = load float, ptr %1031, align 8, !tbaa !45
  %1033 = fmul float %1032, 5.000000e-01
  br label %1034

1034:                                             ; preds = %1029, %1018
  %1035 = phi float [ %1028, %1018 ], [ %1033, %1029 ]
  store float %1035, ptr %73, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #14
  %1036 = load ptr, ptr %21, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.ImGuiIO, ptr %1036, i32 0, i32 19
  %1038 = load i8, ptr %1037, align 1, !tbaa !148, !range !40, !noundef !41
  %1039 = trunc i8 %1038 to i1
  %1040 = zext i1 %1039 to i8
  store i8 %1040, ptr %74, align 1, !tbaa !42
  %1041 = load i8, ptr %54, align 1, !tbaa !42, !range !40, !noundef !41
  %1042 = trunc i8 %1041 to i1
  br i1 %1042, label %1043, label %1047

1043:                                             ; preds = %1034
  %1044 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %1044)
  %1045 = load ptr, ptr %47, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1045, i32 0, i32 14
  store i8 1, ptr %1046, align 1, !tbaa !149
  br label %1237

1047:                                             ; preds = %1034
  %1048 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %1049 = trunc i8 %1048 to i1
  br i1 %1049, label %1050, label %1180

1050:                                             ; preds = %1047
  %1051 = load ptr, ptr %21, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.ImGuiIO, ptr %1051, i32 0, i32 70
  %1053 = getelementptr inbounds [5 x i16], ptr %1052, i64 0, i64 0
  %1054 = load i16, ptr %1053, align 2, !tbaa !150
  %1055 = zext i16 %1054 to i32
  %1056 = icmp sge i32 %1055, 2
  br i1 %1056, label %1057, label %1180

1057:                                             ; preds = %1050
  %1058 = load ptr, ptr %21, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.ImGuiIO, ptr %1058, i32 0, i32 57
  %1060 = load i8, ptr %1059, align 1, !tbaa !151, !range !40, !noundef !41
  %1061 = trunc i8 %1060 to i1
  br i1 %1061, label %1180, label %1062

1062:                                             ; preds = %1057
  %1063 = load ptr, ptr %47, align 8, !tbaa !5
  %1064 = load ptr, ptr %47, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1064, i32 0, i32 11
  %1066 = load float, ptr %72, align 4, !tbaa !44
  %1067 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1063, ptr noundef %1065, float noundef %1066, float noundef %1067)
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  %1068 = load ptr, ptr %21, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.ImGuiIO, ptr %1068, i32 0, i32 70
  %1070 = getelementptr inbounds [5 x i16], ptr %1069, i64 0, i64 0
  %1071 = load i16, ptr %1070, align 2, !tbaa !150
  %1072 = zext i16 %1071 to i32
  %1073 = sub nsw i32 %1072, 2
  store i32 %1073, ptr %75, align 4, !tbaa !9
  %1074 = load i32, ptr %75, align 4, !tbaa !9
  %1075 = srem i32 %1074, 2
  %1076 = icmp eq i32 %1075, 0
  br i1 %1076, label %1077, label %1143

1077:                                             ; preds = %1062
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #14
  %1078 = load ptr, ptr %47, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1078, i32 0, i32 11
  %1080 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1079, i32 0, i32 0
  %1081 = load i32, ptr %1080, align 4, !tbaa !152
  %1082 = icmp eq i32 %1081, 0
  br i1 %1082, label %1093, label %1083

1083:                                             ; preds = %1077
  %1084 = load ptr, ptr %47, align 8, !tbaa !5
  %1085 = load ptr, ptr %47, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1085, i32 0, i32 11
  %1087 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1086, i32 0, i32 0
  %1088 = load i32, ptr %1087, align 4, !tbaa !152
  %1089 = sub nsw i32 %1088, 1
  %1090 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1084, i32 noundef %1089)
  %1091 = zext i16 %1090 to i32
  %1092 = icmp eq i32 %1091, 10
  br label %1093

1093:                                             ; preds = %1083, %1077
  %1094 = phi i1 [ true, %1077 ], [ %1092, %1083 ]
  %1095 = zext i1 %1094 to i8
  store i8 %1095, ptr %76, align 1, !tbaa !42
  %1096 = load ptr, ptr %47, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1096, i32 0, i32 11
  %1098 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1097, i32 0, i32 1
  %1099 = load i32, ptr %1098, align 4, !tbaa !153
  %1100 = load ptr, ptr %47, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1100, i32 0, i32 11
  %1102 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1101, i32 0, i32 2
  %1103 = load i32, ptr %1102, align 4, !tbaa !154
  %1104 = icmp ne i32 %1099, %1103
  br i1 %1104, label %1108, label %1105

1105:                                             ; preds = %1093
  %1106 = load i8, ptr %76, align 1, !tbaa !42, !range !40, !noundef !41
  %1107 = trunc i8 %1106 to i1
  br i1 %1107, label %1110, label %1108

1108:                                             ; preds = %1105, %1093
  %1109 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1109, i32 noundef 2097164)
  br label %1110

1110:                                             ; preds = %1108, %1105
  %1111 = load ptr, ptr %47, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1111, i32 0, i32 11
  %1113 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1112, i32 0, i32 1
  %1114 = load i32, ptr %1113, align 4, !tbaa !153
  %1115 = load ptr, ptr %47, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1115, i32 0, i32 11
  %1117 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1116, i32 0, i32 2
  %1118 = load i32, ptr %1117, align 4, !tbaa !154
  %1119 = icmp ne i32 %1114, %1118
  br i1 %1119, label %1123, label %1120

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

1123:                                             ; preds = %1120, %1110
  %1124 = load ptr, ptr %47, align 8, !tbaa !5
  %1125 = load ptr, ptr %47, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1125, i32 0, i32 11
  %1127 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1126, i32 0, i32 0
  %1128 = load i32, ptr %1127, align 4, !tbaa !152
  %1129 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef %1124, i32 noundef %1128)
  %1130 = load ptr, ptr %47, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1130, i32 0, i32 11
  %1132 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1131, i32 0, i32 0
  store i32 %1129, ptr %1132, align 4, !tbaa !152
  %1133 = load ptr, ptr %47, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1133, i32 0, i32 11
  %1135 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1134, i32 0, i32 0
  %1136 = load i32, ptr %1135, align 4, !tbaa !152
  %1137 = load ptr, ptr %47, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1137, i32 0, i32 11
  %1139 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1138, i32 0, i32 2
  store i32 %1136, ptr %1139, align 4, !tbaa !154
  %1140 = load ptr, ptr %47, align 8, !tbaa !5
  %1141 = load ptr, ptr %47, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1141, i32 0, i32 11
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1140, ptr noundef %1142)
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  br label %1178

1143:                                             ; preds = %1062
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #14
  %1144 = load ptr, ptr %47, align 8, !tbaa !5
  %1145 = load ptr, ptr %47, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1145, i32 0, i32 11
  %1147 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1146, i32 0, i32 0
  %1148 = load i32, ptr %1147, align 4, !tbaa !152
  %1149 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1144, i32 noundef %1148)
  %1150 = zext i16 %1149 to i32
  %1151 = icmp eq i32 %1150, 10
  %1152 = zext i1 %1151 to i8
  store i8 %1152, ptr %77, align 1, !tbaa !42
  %1153 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1153, i32 noundef 2097156)
  %1154 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1154, i32 noundef 6291461)
  %1155 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1155, i32 noundef 6291457)
  %1156 = load i8, ptr %77, align 1, !tbaa !42, !range !40, !noundef !41
  %1157 = trunc i8 %1156 to i1
  br i1 %1157, label %1175, label %1158

1158:                                             ; preds = %1143
  %1159 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1160 = trunc i8 %1159 to i1
  br i1 %1160, label %1161, label %1175

1161:                                             ; preds = %1158
  %1162 = load ptr, ptr %47, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1162, i32 0, i32 11
  %1164 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1163, i32 0, i32 1
  %1165 = load ptr, ptr %47, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1165, i32 0, i32 11
  %1167 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1166, i32 0, i32 2
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %1164, ptr noundef nonnull align 4 dereferenceable(4) %1167)
  %1168 = load ptr, ptr %47, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1168, i32 0, i32 11
  %1170 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1169, i32 0, i32 2
  %1171 = load i32, ptr %1170, align 4, !tbaa !154
  %1172 = load ptr, ptr %47, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1172, i32 0, i32 11
  %1174 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1173, i32 0, i32 0
  store i32 %1171, ptr %1174, align 4, !tbaa !152
  br label %1175

1175:                                             ; preds = %1161, %1158, %1143
  %1176 = load ptr, ptr %47, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1176, i32 0, i32 13
  store i8 0, ptr %1177, align 4, !tbaa !155
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #14
  br label %1178

1178:                                             ; preds = %1175, %1123
  %1179 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %1179)
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  br label %1236

1180:                                             ; preds = %1057, %1050, %1047
  %1181 = load ptr, ptr %21, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.ImGuiIO, ptr %1181, i32 0, i32 68
  %1183 = getelementptr inbounds [5 x i8], ptr %1182, i64 0, i64 0
  %1184 = load i8, ptr %1183, align 8, !tbaa !42, !range !40, !noundef !41
  %1185 = trunc i8 %1184 to i1
  br i1 %1185, label %1186, label %1202

1186:                                             ; preds = %1180
  %1187 = load ptr, ptr %47, align 8, !tbaa !5
  %1188 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1187, i32 0, i32 14
  %1189 = load i8, ptr %1188, align 1, !tbaa !149, !range !40, !noundef !41
  %1190 = trunc i8 %1189 to i1
  br i1 %1190, label %1202, label %1191

1191:                                             ; preds = %1186
  %1192 = load i8, ptr %46, align 1, !tbaa !42, !range !40, !noundef !41
  %1193 = trunc i8 %1192 to i1
  br i1 %1193, label %1194, label %1201

1194:                                             ; preds = %1191
  %1195 = load ptr, ptr %47, align 8, !tbaa !5
  %1196 = load ptr, ptr %47, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1196, i32 0, i32 11
  %1198 = load float, ptr %72, align 4, !tbaa !44
  %1199 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1195, ptr noundef %1197, float noundef %1198, float noundef %1199)
  %1200 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %1200)
  br label %1201

1201:                                             ; preds = %1194, %1191
  br label %1235

1202:                                             ; preds = %1186, %1180
  %1203 = load ptr, ptr %21, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.ImGuiIO, ptr %1203, i32 0, i32 53
  %1205 = getelementptr inbounds [5 x i8], ptr %1204, i64 0, i64 0
  %1206 = load i8, ptr %1205, align 4, !tbaa !42, !range !40, !noundef !41
  %1207 = trunc i8 %1206 to i1
  br i1 %1207, label %1208, label %1234

1208:                                             ; preds = %1202
  %1209 = load ptr, ptr %47, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1209, i32 0, i32 14
  %1211 = load i8, ptr %1210, align 1, !tbaa !149, !range !40, !noundef !41
  %1212 = trunc i8 %1211 to i1
  br i1 %1212, label %1234, label %1213

1213:                                             ; preds = %1208
  %1214 = load ptr, ptr %21, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.ImGuiIO, ptr %1214, i32 0, i32 49
  %1216 = getelementptr inbounds %struct.ImVec2, ptr %1215, i32 0, i32 0
  %1217 = load float, ptr %1216, align 8, !tbaa !156
  %1218 = fcmp une float %1217, 0.000000e+00
  br i1 %1218, label %1225, label %1219

1219:                                             ; preds = %1213
  %1220 = load ptr, ptr %21, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.ImGuiIO, ptr %1220, i32 0, i32 49
  %1222 = getelementptr inbounds %struct.ImVec2, ptr %1221, i32 0, i32 1
  %1223 = load float, ptr %1222, align 4, !tbaa !157
  %1224 = fcmp une float %1223, 0.000000e+00
  br i1 %1224, label %1225, label %1234

1225:                                             ; preds = %1219, %1213
  %1226 = load ptr, ptr %47, align 8, !tbaa !5
  %1227 = load ptr, ptr %47, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1227, i32 0, i32 11
  %1229 = load float, ptr %72, align 4, !tbaa !44
  %1230 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1226, ptr noundef %1228, float noundef %1229, float noundef %1230)
  %1231 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %1231)
  %1232 = load ptr, ptr %47, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1232, i32 0, i32 13
  store i8 1, ptr %1233, align 4, !tbaa !155
  br label %1234

1234:                                             ; preds = %1225, %1219, %1208, %1202
  br label %1235

1235:                                             ; preds = %1234, %1201
  br label %1236

1236:                                             ; preds = %1235, %1178
  br label %1237

1237:                                             ; preds = %1236, %1043
  %1238 = load ptr, ptr %47, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1238, i32 0, i32 14
  %1240 = load i8, ptr %1239, align 1, !tbaa !149, !range !40, !noundef !41
  %1241 = trunc i8 %1240 to i1
  br i1 %1241, label %1242, label %1251

1242:                                             ; preds = %1237
  %1243 = load ptr, ptr %21, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.ImGuiIO, ptr %1243, i32 0, i32 53
  %1245 = getelementptr inbounds [5 x i8], ptr %1244, i64 0, i64 0
  %1246 = load i8, ptr %1245, align 4, !tbaa !42, !range !40, !noundef !41
  %1247 = trunc i8 %1246 to i1
  br i1 %1247, label %1251, label %1248

1248:                                             ; preds = %1242
  %1249 = load ptr, ptr %47, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1249, i32 0, i32 14
  store i8 0, ptr %1250, align 1, !tbaa !149
  br label %1251

1251:                                             ; preds = %1248, %1242, %1237
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  %1252 = load ptr, ptr %21, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ImGuiIO, ptr %1252, i32 0, i32 56
  %1254 = load i8, ptr %1253, align 4, !tbaa !121, !range !40, !noundef !41
  %1255 = trunc i8 %1254 to i1
  br i1 %1255, label %1256, label %1261

1256:                                             ; preds = %1251
  %1257 = load ptr, ptr %21, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ImGuiIO, ptr %1257, i32 0, i32 58
  %1259 = load i8, ptr %1258, align 2, !tbaa !158, !range !40, !noundef !41
  %1260 = trunc i8 %1259 to i1
  br i1 %1260, label %1261, label %1271

1261:                                             ; preds = %1256, %1251
  %1262 = load i8, ptr %74, align 1, !tbaa !42, !range !40, !noundef !41
  %1263 = trunc i8 %1262 to i1
  br i1 %1263, label %1264, label %1269

1264:                                             ; preds = %1261
  %1265 = load ptr, ptr %21, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.ImGuiIO, ptr %1265, i32 0, i32 59
  %1267 = load i8, ptr %1266, align 1, !tbaa !159, !range !40, !noundef !41
  %1268 = trunc i8 %1267 to i1
  br label %1269

1269:                                             ; preds = %1264, %1261
  %1270 = phi i1 [ false, %1261 ], [ %1268, %1264 ]
  br label %1271

1271:                                             ; preds = %1269, %1256
  %1272 = phi i1 [ true, %1256 ], [ %1270, %1269 ]
  %1273 = zext i1 %1272 to i8
  store i8 %1273, ptr %78, align 1, !tbaa !42
  %1274 = load i32, ptr %15, align 4, !tbaa !9
  %1275 = and i32 %1274, 1024
  %1276 = icmp ne i32 %1275, 0
  br i1 %1276, label %1277, label %1305

1277:                                             ; preds = %1271
  %1278 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 512, i1 noundef zeroext true)
  br i1 %1278, label %1279, label %1305

1279:                                             ; preds = %1277
  %1280 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1281 = trunc i8 %1280 to i1
  br i1 %1281, label %1305, label %1282

1282:                                             ; preds = %1279
  %1283 = load ptr, ptr %21, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.ImGuiIO, ptr %1283, i32 0, i32 57
  %1285 = load i8, ptr %1284, align 1, !tbaa !151, !range !40, !noundef !41
  %1286 = trunc i8 %1285 to i1
  br i1 %1286, label %1305, label %1287

1287:                                             ; preds = %1282
  %1288 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1289 = trunc i8 %1288 to i1
  br i1 %1289, label %1305, label %1290

1290:                                             ; preds = %1287
  %1291 = load ptr, ptr %21, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.ImGuiIO, ptr %1291, i32 0, i32 85
  call void @llvm.lifetime.start.p0(i64 2, ptr %79) #14
  store i16 9, ptr %79, align 2, !tbaa !150
  %1293 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %1292, ptr noundef nonnull align 2 dereferenceable(2) %79)
  %1294 = xor i1 %1293, true
  call void @llvm.lifetime.end.p0(i64 2, ptr %79) #14
  br i1 %1294, label %1295, label %1304

1295:                                             ; preds = %1290
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #14
  store i32 9, ptr %80, align 4, !tbaa !9
  %1296 = load i32, ptr %15, align 4, !tbaa !9
  %1297 = load ptr, ptr %16, align 8, !tbaa !5
  %1298 = load ptr, ptr %17, align 8, !tbaa !5
  %1299 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %80, i32 noundef %1296, ptr noundef %1297, ptr noundef %1298, i32 noundef 2)
  br i1 %1299, label %1300, label %1303

1300:                                             ; preds = %1295
  %1301 = load ptr, ptr %47, align 8, !tbaa !5
  %1302 = load i32, ptr %80, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1301, i32 noundef %1302)
  br label %1303

1303:                                             ; preds = %1300, %1295
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #14
  br label %1304

1304:                                             ; preds = %1303, %1290
  br label %1305

1305:                                             ; preds = %1304, %1287, %1282, %1279, %1277, %1271
  %1306 = load ptr, ptr %21, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.ImGuiIO, ptr %1306, i32 0, i32 85
  %1308 = getelementptr inbounds %struct.ImVector.5, ptr %1307, i32 0, i32 0
  %1309 = load i32, ptr %1308, align 8, !tbaa !160
  %1310 = icmp sgt i32 %1309, 0
  br i1 %1310, label %1311, label %1363

1311:                                             ; preds = %1305
  %1312 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1313 = trunc i8 %1312 to i1
  br i1 %1313, label %1360, label %1314

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

1317:                                             ; preds = %1314
  %1318 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %1319 = trunc i8 %1318 to i1
  br i1 %1319, label %1360, label %1320

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

1321:                                             ; preds = %1356, %1320
  %1322 = load i32, ptr %81, align 4, !tbaa !9
  %1323 = load ptr, ptr %21, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiIO, ptr %1323, i32 0, i32 85
  %1325 = getelementptr inbounds %struct.ImVector.5, ptr %1324, i32 0, i32 0
  %1326 = load i32, ptr %1325, align 8, !tbaa !160
  %1327 = icmp slt i32 %1322, %1326
  br i1 %1327, label %1329, label %1328

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

1329:                                             ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #14
  %1330 = load ptr, ptr %21, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct.ImGuiIO, ptr %1330, i32 0, i32 85
  %1332 = load i32, ptr %81, align 4, !tbaa !9
  %1333 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1331, i32 noundef %1332)
  %1334 = load i16, ptr %1333, align 2, !tbaa !150
  %1335 = zext i16 %1334 to i32
  store i32 %1335, ptr %82, align 4, !tbaa !9
  %1336 = load i32, ptr %82, align 4, !tbaa !9
  %1337 = icmp eq i32 %1336, 9
  br i1 %1337, label %1338, label %1344

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

1343:                                             ; preds = %1338
  store i32 4, ptr %19, align 4
  br label %1353

1344:                                             ; preds = %1338, %1329
  %1345 = load i32, ptr %15, align 4, !tbaa !9
  %1346 = load ptr, ptr %16, align 8, !tbaa !5
  %1347 = load ptr, ptr %17, align 8, !tbaa !5
  %1348 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %82, i32 noundef %1345, ptr noundef %1346, ptr noundef %1347, i32 noundef 2)
  br i1 %1348, label %1349, label %1352

1349:                                             ; preds = %1344
  %1350 = load ptr, ptr %47, align 8, !tbaa !5
  %1351 = load i32, ptr %82, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1350, i32 noundef %1351)
  br label %1352

1352:                                             ; preds = %1349, %1344
  store i32 0, ptr %19, align 4
  br label %1353

1353:                                             ; preds = %1352, %1343
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #14
  %1354 = load i32, ptr %19, align 4
  switch i32 %1354, label %3467 [
    i32 0, label %1355
    i32 4, label %1356
  ]

1355:                                             ; preds = %1353
  br label %1356

1356:                                             ; preds = %1355, %1353
  %1357 = load i32, ptr %81, align 4, !tbaa !9
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %81, align 4, !tbaa !9
  br label %1321, !llvm.loop !161

1359:                                             ; preds = %1328
  br label %1360

1360:                                             ; preds = %1359, %1317, %1314, %1311
  %1361 = load ptr, ptr %21, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct.ImGuiIO, ptr %1361, i32 0, i32 85
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1362, i32 noundef 0)
  br label %1363

1363:                                             ; preds = %1360, %1305
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #14
  br label %1364

1364:                                             ; preds = %1363, %964
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #14
  store i8 0, ptr %83, align 1, !tbaa !42
  %1365 = load ptr, ptr %20, align 8, !tbaa !5
  %1366 = getelementptr inbounds %struct.ImGuiContext, ptr %1365, i32 0, i32 46
  %1367 = load i32, ptr %1366, align 4, !tbaa !106
  %1368 = load i32, ptr %29, align 4, !tbaa !9
  %1369 = icmp eq i32 %1367, %1368
  br i1 %1369, label %1370, label %2100

1370:                                             ; preds = %1364
  %1371 = load ptr, ptr %20, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.ImGuiContext, ptr %1371, i32 0, i32 49
  %1373 = load i8, ptr %1372, align 8, !tbaa !163, !range !40, !noundef !41
  %1374 = trunc i8 %1373 to i1
  br i1 %1374, label %2100, label %1375

1375:                                             ; preds = %1370
  %1376 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %1377 = trunc i8 %1376 to i1
  br i1 %1377, label %2100, label %1378

1378:                                             ; preds = %1375
  %1379 = load ptr, ptr %47, align 8, !tbaa !5
  %1380 = icmp ne ptr %1379, null
  br i1 %1380, label %1381, label %1382

1381:                                             ; preds = %1378
  br label %1384

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

1383:                                             ; No predecessors!
  br label %1384

1384:                                             ; preds = %1383, %1381
  %1385 = load ptr, ptr %21, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.ImGuiIO, ptr %1385, i32 0, i32 61
  %1387 = load i32, ptr %1386, align 8, !tbaa !164
  %1388 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %1389 = icmp eq i32 %1387, %1388
  br i1 %1389, label %1390, label %1391

1390:                                             ; preds = %1384
  br label %1391

1391:                                             ; preds = %1390, %1384
  %1392 = phi i1 [ false, %1384 ], [ true, %1390 ]
  br i1 %1392, label %1393, label %1394

1393:                                             ; preds = %1391
  br label %1396

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

1395:                                             ; No predecessors!
  br label %1396

1396:                                             ; preds = %1395, %1393
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #14
  %1397 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %1398 = load float, ptr %1397, align 4, !tbaa !93
  %1399 = load ptr, ptr %22, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.ImGuiStyle, ptr %1399, i32 0, i32 12
  %1401 = getelementptr inbounds %struct.ImVec2, ptr %1400, i32 0, i32 1
  %1402 = load float, ptr %1401, align 4, !tbaa !94
  %1403 = fsub float %1398, %1402
  %1404 = load ptr, ptr %20, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.ImGuiContext, ptr %1404, i32 0, i32 8
  %1406 = load float, ptr %1405, align 8, !tbaa !45
  %1407 = fdiv float %1403, %1406
  %1408 = fptosi float %1407 to i32
  %1409 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1408, i32 noundef 1)
  store i32 %1409, ptr %84, align 4, !tbaa !9
  %1410 = load i32, ptr %84, align 4, !tbaa !9
  %1411 = load ptr, ptr %47, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1411, i32 0, i32 11
  %1413 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1412, i32 0, i32 4
  store i32 %1410, ptr %1413, align 4, !tbaa !165
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #14
  %1414 = load ptr, ptr %21, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.ImGuiIO, ptr %1414, i32 0, i32 57
  %1416 = load i8, ptr %1415, align 1, !tbaa !151, !range !40, !noundef !41
  %1417 = trunc i8 %1416 to i1
  %1418 = zext i1 %1417 to i64
  %1419 = select i1 %1417, i32 4194304, i32 0
  store i32 %1419, ptr %85, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1420 = load ptr, ptr %21, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.ImGuiIO, ptr %1420, i32 0, i32 19
  %1422 = load i8, ptr %1421, align 1, !tbaa !148, !range !40, !noundef !41
  %1423 = trunc i8 %1422 to i1
  %1424 = zext i1 %1423 to i8
  store i8 %1424, ptr %86, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #14
  %1425 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1426 = trunc i8 %1425 to i1
  br i1 %1426, label %1427, label %1432

1427:                                             ; preds = %1396
  %1428 = load ptr, ptr %21, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.ImGuiIO, ptr %1428, i32 0, i32 61
  %1430 = load i32, ptr %1429, align 8, !tbaa !164
  %1431 = icmp eq i32 %1430, 10
  br label %1432

1432:                                             ; preds = %1427, %1396
  %1433 = phi i1 [ false, %1396 ], [ %1431, %1427 ]
  %1434 = zext i1 %1433 to i8
  store i8 %1434, ptr %87, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1435 = load i8, ptr %86, align 1, !tbaa !42, !range !40, !noundef !41
  %1436 = trunc i8 %1435 to i1
  br i1 %1436, label %1437, label %1442

1437:                                             ; preds = %1432
  %1438 = load ptr, ptr %21, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.ImGuiIO, ptr %1438, i32 0, i32 58
  %1440 = load i8, ptr %1439, align 2, !tbaa !158, !range !40, !noundef !41
  %1441 = trunc i8 %1440 to i1
  br label %1447

1442:                                             ; preds = %1432
  %1443 = load ptr, ptr %21, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.ImGuiIO, ptr %1443, i32 0, i32 56
  %1445 = load i8, ptr %1444, align 4, !tbaa !121, !range !40, !noundef !41
  %1446 = trunc i8 %1445 to i1
  br label %1447

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

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

1457:                                             ; preds = %1452
  %1458 = load ptr, ptr %21, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.ImGuiIO, ptr %1458, i32 0, i32 56
  %1460 = load i8, ptr %1459, align 4, !tbaa !121, !range !40, !noundef !41
  %1461 = trunc i8 %1460 to i1
  br i1 %1461, label %1468, label %1462

1462:                                             ; preds = %1457
  %1463 = load ptr, ptr %21, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.ImGuiIO, ptr %1463, i32 0, i32 58
  %1465 = load i8, ptr %1464, align 2, !tbaa !158, !range !40, !noundef !41
  %1466 = trunc i8 %1465 to i1
  %1467 = xor i1 %1466, true
  br label %1468

1468:                                             ; preds = %1462, %1457, %1452, %1447
  %1469 = phi i1 [ false, %1457 ], [ false, %1452 ], [ false, %1447 ], [ %1467, %1462 ]
  %1470 = zext i1 %1469 to i8
  store i8 %1470, ptr %89, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1471 = load ptr, ptr %21, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.ImGuiIO, ptr %1471, i32 0, i32 61
  %1473 = load i32, ptr %1472, align 8, !tbaa !164
  %1474 = icmp eq i32 %1473, 1
  %1475 = zext i1 %1474 to i8
  store i8 %1475, ptr %90, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #14
  %1476 = load ptr, ptr %21, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct.ImGuiIO, ptr %1476, i32 0, i32 61
  %1478 = load i32, ptr %1477, align 8, !tbaa !164
  %1479 = icmp eq i32 %1478, 2
  %1480 = zext i1 %1479 to i8
  store i8 %1480, ptr %91, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #14
  %1481 = load ptr, ptr %20, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.ImGuiContext, ptr %1481, i32 0, i32 3
  %1483 = getelementptr inbounds %struct.ImGuiIO, ptr %1482, i32 0, i32 19
  %1484 = load i8, ptr %1483, align 1, !tbaa !166, !range !40, !noundef !41
  %1485 = trunc i8 %1484 to i1
  br i1 %1485, label %1486, label %1491

1486:                                             ; preds = %1468
  %1487 = load ptr, ptr %21, align 8, !tbaa !5
  %1488 = getelementptr inbounds %struct.ImGuiIO, ptr %1487, i32 0, i32 61
  %1489 = load i32, ptr %1488, align 8, !tbaa !164
  %1490 = icmp eq i32 %1489, 8
  br label %1496

1491:                                             ; preds = %1468
  %1492 = load ptr, ptr %21, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.ImGuiIO, ptr %1492, i32 0, i32 61
  %1494 = load i32, ptr %1493, align 8, !tbaa !164
  %1495 = icmp eq i32 %1494, 1
  br label %1496

1496:                                             ; preds = %1491, %1486
  %1497 = phi i1 [ %1490, %1486 ], [ %1495, %1491 ]
  %1498 = zext i1 %1497 to i8
  store i8 %1498, ptr %92, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #14
  %1499 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1500 = trunc i8 %1499 to i1
  br i1 %1500, label %1501, label %1503

1501:                                             ; preds = %1496
  %1502 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 569, i1 noundef zeroext true)
  br i1 %1502, label %1508, label %1503

1503:                                             ; preds = %1501, %1496
  %1504 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1505 = trunc i8 %1504 to i1
  br i1 %1505, label %1506, label %1522

1506:                                             ; preds = %1503
  %1507 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1507, label %1508, label %1522

1508:                                             ; preds = %1506, %1501
  %1509 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1510 = trunc i8 %1509 to i1
  br i1 %1510, label %1522, label %1511

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

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

1517:                                             ; preds = %1514
  %1518 = load ptr, ptr %47, align 8, !tbaa !5
  %1519 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1518)
  br label %1520

1520:                                             ; preds = %1517, %1514
  %1521 = phi i1 [ true, %1514 ], [ %1519, %1517 ]
  br label %1522

1522:                                             ; preds = %1520, %1511, %1508, %1506, %1503
  %1523 = phi i1 [ false, %1511 ], [ false, %1508 ], [ false, %1506 ], [ false, %1503 ], [ %1521, %1520 ]
  %1524 = zext i1 %1523 to i8
  store i8 %1524, ptr %93, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #14
  %1525 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1526 = trunc i8 %1525 to i1
  br i1 %1526, label %1527, label %1529

1527:                                             ; preds = %1522
  %1528 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 548, i1 noundef zeroext true)
  br i1 %1528, label %1534, label %1529

1529:                                             ; preds = %1527, %1522
  %1530 = load i8, ptr %90, align 1, !tbaa !42, !range !40, !noundef !41
  %1531 = trunc i8 %1530 to i1
  br i1 %1531, label %1532, label %1545

1532:                                             ; preds = %1529
  %1533 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 521, i1 noundef zeroext true)
  br i1 %1533, label %1534, label %1545

1534:                                             ; preds = %1532, %1527
  %1535 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %1536 = trunc i8 %1535 to i1
  br i1 %1536, label %1545, label %1537

1537:                                             ; preds = %1534
  %1538 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1539 = trunc i8 %1538 to i1
  br i1 %1539, label %1540, label %1543

1540:                                             ; preds = %1537
  %1541 = load ptr, ptr %47, align 8, !tbaa !5
  %1542 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1541)
  br label %1543

1543:                                             ; preds = %1540, %1537
  %1544 = phi i1 [ true, %1537 ], [ %1542, %1540 ]
  br label %1545

1545:                                             ; preds = %1543, %1534, %1532, %1529
  %1546 = phi i1 [ false, %1534 ], [ false, %1532 ], [ false, %1529 ], [ %1544, %1543 ]
  %1547 = zext i1 %1546 to i8
  store i8 %1547, ptr %94, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #14
  %1548 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1549 = trunc i8 %1548 to i1
  br i1 %1549, label %1550, label %1552

1550:                                             ; preds = %1545
  %1551 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 567, i1 noundef zeroext true)
  br i1 %1551, label %1557, label %1552

1552:                                             ; preds = %1550, %1545
  %1553 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1554 = trunc i8 %1553 to i1
  br i1 %1554, label %1555, label %1561

1555:                                             ; preds = %1552
  %1556 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 521, i1 noundef zeroext true)
  br i1 %1556, label %1557, label %1561

1557:                                             ; preds = %1555, %1550
  %1558 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1559 = trunc i8 %1558 to i1
  %1560 = xor i1 %1559, true
  br label %1561

1561:                                             ; preds = %1557, %1555, %1552
  %1562 = phi i1 [ false, %1555 ], [ false, %1552 ], [ %1560, %1557 ]
  %1563 = zext i1 %1562 to i8
  store i8 %1563, ptr %95, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #14
  %1564 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1565 = trunc i8 %1564 to i1
  br i1 %1565, label %1566, label %1574

1566:                                             ; preds = %1561
  %1567 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 571, i1 noundef zeroext true)
  br i1 %1567, label %1568, label %1574

1568:                                             ; preds = %1566
  %1569 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1570 = trunc i8 %1569 to i1
  br i1 %1570, label %1574, label %1571

1571:                                             ; preds = %1568
  %1572 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1573 = trunc i8 %1572 to i1
  br label %1574

1574:                                             ; preds = %1571, %1568, %1566, %1561
  %1575 = phi i1 [ false, %1568 ], [ false, %1566 ], [ false, %1561 ], [ %1573, %1571 ]
  %1576 = zext i1 %1575 to i8
  store i8 %1576, ptr %96, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #14
  %1577 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1578 = trunc i8 %1577 to i1
  br i1 %1578, label %1579, label %1581

1579:                                             ; preds = %1574
  %1580 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 570, i1 noundef zeroext true)
  br i1 %1580, label %1586, label %1581

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

1584:                                             ; preds = %1581
  %1585 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 571, i1 noundef zeroext true)
  br i1 %1585, label %1586, label %1592

1586:                                             ; preds = %1584, %1579
  %1587 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1588 = trunc i8 %1587 to i1
  br i1 %1588, label %1592, label %1589

1589:                                             ; preds = %1586
  %1590 = load i8, ptr %27, align 1, !tbaa !42, !range !40, !noundef !41
  %1591 = trunc i8 %1590 to i1
  br label %1592

1592:                                             ; preds = %1589, %1586, %1584, %1581
  %1593 = phi i1 [ false, %1586 ], [ false, %1584 ], [ false, %1581 ], [ %1591, %1589 ]
  %1594 = zext i1 %1593 to i8
  store i8 %1594, ptr %97, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #14
  %1595 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 525, i1 noundef zeroext true)
  br i1 %1595, label %1598, label %1596

1596:                                             ; preds = %1592
  %1597 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 615, i1 noundef zeroext true)
  br label %1598

1598:                                             ; preds = %1596, %1592
  %1599 = phi i1 [ true, %1592 ], [ %1597, %1596 ]
  %1600 = zext i1 %1599 to i8
  store i8 %1600, ptr %98, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #14
  %1601 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 0, i32 noundef 1)
  br i1 %1601, label %1602, label %1604

1602:                                             ; preds = %1598
  %1603 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 524, i1 noundef zeroext true)
  br i1 %1603, label %1604, label %1606

1604:                                             ; preds = %1602, %1598
  %1605 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 2, i32 noundef 1)
  br label %1606

1606:                                             ; preds = %1604, %1602
  %1607 = phi i1 [ true, %1602 ], [ %1605, %1604 ]
  %1608 = zext i1 %1607 to i8
  store i8 %1608, ptr %99, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #14
  %1609 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 526, i1 noundef zeroext true)
  br i1 %1609, label %1612, label %1610

1610:                                             ; preds = %1606
  %1611 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 1, i32 noundef 1)
  br label %1612

1612:                                             ; preds = %1610, %1606
  %1613 = phi i1 [ true, %1606 ], [ %1611, %1610 ]
  %1614 = zext i1 %1613 to i8
  store i8 %1614, ptr %100, align 1, !tbaa !42
  %1615 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 513, i1 noundef zeroext true)
  br i1 %1615, label %1616, label %1630

1616:                                             ; preds = %1612
  %1617 = load ptr, ptr %47, align 8, !tbaa !5
  %1618 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1619 = trunc i8 %1618 to i1
  br i1 %1619, label %1620, label %1621

1620:                                             ; preds = %1616
  br label %1626

1621:                                             ; preds = %1616
  %1622 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1623 = trunc i8 %1622 to i1
  %1624 = zext i1 %1623 to i64
  %1625 = select i1 %1623, i32 2097164, i32 2097152
  br label %1626

1626:                                             ; preds = %1621, %1620
  %1627 = phi i32 [ 2097156, %1620 ], [ %1625, %1621 ]
  %1628 = load i32, ptr %85, align 4, !tbaa !9
  %1629 = or i32 %1627, %1628
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1617, i32 noundef %1629)
  br label %2085

1630:                                             ; preds = %1612
  %1631 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 514, i1 noundef zeroext true)
  br i1 %1631, label %1632, label %1646

1632:                                             ; preds = %1630
  %1633 = load ptr, ptr %47, align 8, !tbaa !5
  %1634 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1635 = trunc i8 %1634 to i1
  br i1 %1635, label %1636, label %1637

1636:                                             ; preds = %1632
  br label %1642

1637:                                             ; preds = %1632
  %1638 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1639 = trunc i8 %1638 to i1
  %1640 = zext i1 %1639 to i64
  %1641 = select i1 %1639, i32 2097165, i32 2097153
  br label %1642

1642:                                             ; preds = %1637, %1636
  %1643 = phi i32 [ 2097157, %1636 ], [ %1641, %1637 ]
  %1644 = load i32, ptr %85, align 4, !tbaa !9
  %1645 = or i32 %1643, %1644
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1633, i32 noundef %1645)
  br label %2084

1646:                                             ; preds = %1630
  %1647 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1647, label %1648, label %1676

1648:                                             ; preds = %1646
  %1649 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1650 = trunc i8 %1649 to i1
  br i1 %1650, label %1651, label %1676

1651:                                             ; preds = %1648
  %1652 = load ptr, ptr %21, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.ImGuiIO, ptr %1652, i32 0, i32 56
  %1654 = load i8, ptr %1653, align 4, !tbaa !121, !range !40, !noundef !41
  %1655 = trunc i8 %1654 to i1
  br i1 %1655, label %1656, label %1667

1656:                                             ; preds = %1651
  %1657 = load ptr, ptr %38, align 8, !tbaa !5
  %1658 = load ptr, ptr %38, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.ImGuiWindow, ptr %1658, i32 0, i32 15
  %1660 = getelementptr inbounds %struct.ImVec2, ptr %1659, i32 0, i32 1
  %1661 = load float, ptr %1660, align 4, !tbaa !111
  %1662 = load ptr, ptr %20, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.ImGuiContext, ptr %1662, i32 0, i32 8
  %1664 = load float, ptr %1663, align 8, !tbaa !45
  %1665 = fsub float %1661, %1664
  %1666 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1665, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1657, float noundef %1666)
  br label %1675

1667:                                             ; preds = %1651
  %1668 = load ptr, ptr %47, align 8, !tbaa !5
  %1669 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1670 = trunc i8 %1669 to i1
  %1671 = zext i1 %1670 to i64
  %1672 = select i1 %1670, i32 2097158, i32 2097154
  %1673 = load i32, ptr %85, align 4, !tbaa !9
  %1674 = or i32 %1672, %1673
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1668, i32 noundef %1674)
  br label %1675

1675:                                             ; preds = %1667, %1656
  br label %2083

1676:                                             ; preds = %1648, %1646
  %1677 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1677, label %1678, label %1707

1678:                                             ; preds = %1676
  %1679 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1680 = trunc i8 %1679 to i1
  br i1 %1680, label %1681, label %1707

1681:                                             ; preds = %1678
  %1682 = load ptr, ptr %21, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.ImGuiIO, ptr %1682, i32 0, i32 56
  %1684 = load i8, ptr %1683, align 4, !tbaa !121, !range !40, !noundef !41
  %1685 = trunc i8 %1684 to i1
  br i1 %1685, label %1686, label %1698

1686:                                             ; preds = %1681
  %1687 = load ptr, ptr %38, align 8, !tbaa !5
  %1688 = load ptr, ptr %38, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.ImGuiWindow, ptr %1688, i32 0, i32 15
  %1690 = getelementptr inbounds %struct.ImVec2, ptr %1689, i32 0, i32 1
  %1691 = load float, ptr %1690, align 4, !tbaa !111
  %1692 = load ptr, ptr %20, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.ImGuiContext, ptr %1692, i32 0, i32 8
  %1694 = load float, ptr %1693, align 8, !tbaa !45
  %1695 = fadd float %1691, %1694
  %1696 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1697 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1695, float noundef %1696)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1687, float noundef %1697)
  br label %1706

1698:                                             ; preds = %1681
  %1699 = load ptr, ptr %47, align 8, !tbaa !5
  %1700 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %1701 = trunc i8 %1700 to i1
  %1702 = zext i1 %1701 to i64
  %1703 = select i1 %1701, i32 2097159, i32 2097155
  %1704 = load i32, ptr %85, align 4, !tbaa !9
  %1705 = or i32 %1703, %1704
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1699, i32 noundef %1705)
  br label %1706

1706:                                             ; preds = %1698, %1686
  br label %2082

1707:                                             ; preds = %1678, %1676
  %1708 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 517, i1 noundef zeroext true)
  br i1 %1708, label %1709, label %1724

1709:                                             ; preds = %1707
  %1710 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1711 = trunc i8 %1710 to i1
  br i1 %1711, label %1712, label %1724

1712:                                             ; preds = %1709
  %1713 = load ptr, ptr %47, align 8, !tbaa !5
  %1714 = load i32, ptr %85, align 4, !tbaa !9
  %1715 = or i32 2097166, %1714
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1713, i32 noundef %1715)
  %1716 = load i32, ptr %84, align 4, !tbaa !9
  %1717 = sitofp i32 %1716 to float
  %1718 = load ptr, ptr %20, align 8, !tbaa !5
  %1719 = getelementptr inbounds %struct.ImGuiContext, ptr %1718, i32 0, i32 8
  %1720 = load float, ptr %1719, align 8, !tbaa !45
  %1721 = load float, ptr %55, align 4, !tbaa !44
  %1722 = fneg float %1717
  %1723 = call float @llvm.fmuladd.f32(float %1722, float %1720, float %1721)
  store float %1723, ptr %55, align 4, !tbaa !44
  br label %2081

1724:                                             ; preds = %1709, %1707
  %1725 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 518, i1 noundef zeroext true)
  br i1 %1725, label %1726, label %1740

1726:                                             ; preds = %1724
  %1727 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1728 = trunc i8 %1727 to i1
  br i1 %1728, label %1729, label %1740

1729:                                             ; preds = %1726
  %1730 = load ptr, ptr %47, align 8, !tbaa !5
  %1731 = load i32, ptr %85, align 4, !tbaa !9
  %1732 = or i32 2097167, %1731
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1730, i32 noundef %1732)
  %1733 = load i32, ptr %84, align 4, !tbaa !9
  %1734 = sitofp i32 %1733 to float
  %1735 = load ptr, ptr %20, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiContext, ptr %1735, i32 0, i32 8
  %1737 = load float, ptr %1736, align 8, !tbaa !45
  %1738 = load float, ptr %55, align 4, !tbaa !44
  %1739 = call float @llvm.fmuladd.f32(float %1734, float %1737, float %1738)
  store float %1739, ptr %55, align 4, !tbaa !44
  br label %2080

1740:                                             ; preds = %1726, %1724
  %1741 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 519, i1 noundef zeroext true)
  br i1 %1741, label %1742, label %1756

1742:                                             ; preds = %1740
  %1743 = load ptr, ptr %47, align 8, !tbaa !5
  %1744 = load ptr, ptr %21, align 8, !tbaa !5
  %1745 = getelementptr inbounds %struct.ImGuiIO, ptr %1744, i32 0, i32 56
  %1746 = load i8, ptr %1745, align 4, !tbaa !121, !range !40, !noundef !41
  %1747 = trunc i8 %1746 to i1
  br i1 %1747, label %1748, label %1751

1748:                                             ; preds = %1742
  %1749 = load i32, ptr %85, align 4, !tbaa !9
  %1750 = or i32 2097158, %1749
  br label %1754

1751:                                             ; preds = %1742
  %1752 = load i32, ptr %85, align 4, !tbaa !9
  %1753 = or i32 2097156, %1752
  br label %1754

1754:                                             ; preds = %1751, %1748
  %1755 = phi i32 [ %1750, %1748 ], [ %1753, %1751 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1743, i32 noundef %1755)
  br label %2079

1756:                                             ; preds = %1740
  %1757 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 520, i1 noundef zeroext true)
  br i1 %1757, label %1758, label %1772

1758:                                             ; preds = %1756
  %1759 = load ptr, ptr %47, align 8, !tbaa !5
  %1760 = load ptr, ptr %21, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.ImGuiIO, ptr %1760, i32 0, i32 56
  %1762 = load i8, ptr %1761, align 4, !tbaa !121, !range !40, !noundef !41
  %1763 = trunc i8 %1762 to i1
  br i1 %1763, label %1764, label %1767

1764:                                             ; preds = %1758
  %1765 = load i32, ptr %85, align 4, !tbaa !9
  %1766 = or i32 2097159, %1765
  br label %1770

1767:                                             ; preds = %1758
  %1768 = load i32, ptr %85, align 4, !tbaa !9
  %1769 = or i32 2097157, %1768
  br label %1770

1770:                                             ; preds = %1767, %1764
  %1771 = phi i32 [ %1766, %1764 ], [ %1769, %1767 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1759, i32 noundef %1771)
  br label %2078

1772:                                             ; preds = %1756
  %1773 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1773, label %1774, label %1784

1774:                                             ; preds = %1772
  %1775 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %1776 = trunc i8 %1775 to i1
  br i1 %1776, label %1784, label %1777

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

1780:                                             ; preds = %1777
  %1781 = load ptr, ptr %47, align 8, !tbaa !5
  %1782 = load i32, ptr %85, align 4, !tbaa !9
  %1783 = or i32 2097160, %1782
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1781, i32 noundef %1783)
  br label %2077

1784:                                             ; preds = %1777, %1774, %1772
  %1785 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 523, i1 noundef zeroext true)
  br i1 %1785, label %1786, label %1823

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

1789:                                             ; preds = %1786
  %1790 = load ptr, ptr %47, align 8, !tbaa !5
  %1791 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1790)
  br i1 %1791, label %1819, label %1792

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

1795:                                             ; preds = %1792
  %1796 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1796, i32 noundef 6291468)
  br label %1818

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

1800:                                             ; preds = %1797
  %1801 = load ptr, ptr %21, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.ImGuiIO, ptr %1801, i32 0, i32 59
  %1803 = load i8, ptr %1802, align 1, !tbaa !159, !range !40, !noundef !41
  %1804 = trunc i8 %1803 to i1
  br i1 %1804, label %1805, label %1817

1805:                                             ; preds = %1800
  %1806 = load ptr, ptr %21, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.ImGuiIO, ptr %1806, i32 0, i32 58
  %1808 = load i8, ptr %1807, align 2, !tbaa !158, !range !40, !noundef !41
  %1809 = trunc i8 %1808 to i1
  br i1 %1809, label %1817, label %1810

1810:                                             ; preds = %1805
  %1811 = load ptr, ptr %21, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct.ImGuiIO, ptr %1811, i32 0, i32 56
  %1813 = load i8, ptr %1812, align 4, !tbaa !121, !range !40, !noundef !41
  %1814 = trunc i8 %1813 to i1
  br i1 %1814, label %1817, label %1815

1815:                                             ; preds = %1810
  %1816 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1816, i32 noundef 6291460)
  br label %1817

1817:                                             ; preds = %1815, %1810, %1805, %1800, %1797
  br label %1818

1818:                                             ; preds = %1817, %1795
  br label %1819

1819:                                             ; preds = %1818, %1789
  %1820 = load ptr, ptr %47, align 8, !tbaa !5
  %1821 = load i32, ptr %85, align 4, !tbaa !9
  %1822 = or i32 2097161, %1821
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1820, i32 noundef %1822)
  br label %2076

1823:                                             ; preds = %1786, %1784
  %1824 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1825 = trunc i8 %1824 to i1
  br i1 %1825, label %1826, label %1864

1826:                                             ; preds = %1823
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #14
  %1827 = load i32, ptr %15, align 4, !tbaa !9
  %1828 = and i32 %1827, 2048
  %1829 = icmp ne i32 %1828, 0
  %1830 = zext i1 %1829 to i8
  store i8 %1830, ptr %101, align 1, !tbaa !42
  %1831 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1832 = trunc i8 %1831 to i1
  br i1 %1832, label %1833, label %1849

1833:                                             ; preds = %1826
  %1834 = load i8, ptr %101, align 1, !tbaa !42, !range !40, !noundef !41
  %1835 = trunc i8 %1834 to i1
  br i1 %1835, label %1836, label %1841

1836:                                             ; preds = %1833
  %1837 = load ptr, ptr %21, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.ImGuiIO, ptr %1837, i32 0, i32 56
  %1839 = load i8, ptr %1838, align 4, !tbaa !121, !range !40, !noundef !41
  %1840 = trunc i8 %1839 to i1
  br i1 %1840, label %1841, label %1849

1841:                                             ; preds = %1836, %1833
  %1842 = load i8, ptr %101, align 1, !tbaa !42, !range !40, !noundef !41
  %1843 = trunc i8 %1842 to i1
  br i1 %1843, label %1850, label %1844

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

1849:                                             ; preds = %1844, %1836, %1826
  store i8 1, ptr %53, align 1, !tbaa !42
  store i8 1, ptr %65, align 1, !tbaa !42
  br label %1863

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

1853:                                             ; preds = %1850
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #14
  store i32 10, ptr %102, align 4, !tbaa !9
  %1854 = load i32, ptr %15, align 4, !tbaa !9
  %1855 = load ptr, ptr %16, align 8, !tbaa !5
  %1856 = load ptr, ptr %17, align 8, !tbaa !5
  %1857 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %102, i32 noundef %1854, ptr noundef %1855, ptr noundef %1856, i32 noundef 2)
  br i1 %1857, label %1858, label %1861

1858:                                             ; preds = %1853
  %1859 = load ptr, ptr %47, align 8, !tbaa !5
  %1860 = load i32, ptr %102, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1859, i32 noundef %1860)
  br label %1861

1861:                                             ; preds = %1858, %1853
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #14
  br label %1862

1862:                                             ; preds = %1861, %1850
  br label %1863

1863:                                             ; preds = %1862, %1849
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #14
  br label %2075

1864:                                             ; preds = %1823
  %1865 = load i8, ptr %99, align 1, !tbaa !42, !range !40, !noundef !41
  %1866 = trunc i8 %1865 to i1
  br i1 %1866, label %1867, label %1875

1867:                                             ; preds = %1864
  %1868 = load i8, ptr %98, align 1, !tbaa !42, !range !40, !noundef !41
  %1869 = trunc i8 %1868 to i1
  %1870 = xor i1 %1869, true
  br i1 %1870, label %1871, label %1872

1871:                                             ; preds = %1867
  br label %1874

1872:                                             ; preds = %1867
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str.2, i32 noundef 4298, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1873:                                             ; No predecessors!
  br label %1874

1874:                                             ; preds = %1873, %1871
  store i8 1, ptr %53, align 1, !tbaa !42
  store i8 1, ptr %65, align 1, !tbaa !42
  br label %2074

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

1878:                                             ; preds = %1875
  store i8 1, ptr %83, align 1, !tbaa !42
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %2073

1879:                                             ; preds = %1875
  %1880 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1881 = trunc i8 %1880 to i1
  br i1 %1881, label %1885, label %1882

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

1885:                                             ; preds = %1882, %1879
  %1886 = load ptr, ptr %47, align 8, !tbaa !5
  %1887 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1888 = trunc i8 %1887 to i1
  %1889 = zext i1 %1888 to i64
  %1890 = select i1 %1888, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %1886, i32 noundef %1890)
  %1891 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1891)
  br label %2072

1892:                                             ; preds = %1882
  %1893 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1894 = trunc i8 %1893 to i1
  br i1 %1894, label %1895, label %1901

1895:                                             ; preds = %1892
  %1896 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 546, i1 noundef zeroext true)
  br i1 %1896, label %1897, label %1901

1897:                                             ; preds = %1895
  %1898 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %1898)
  %1899 = load ptr, ptr %47, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1899, i32 0, i32 13
  store i8 1, ptr %1900, align 4, !tbaa !155
  br label %2071

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

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

1907:                                             ; preds = %1904, %1901
  %1908 = load ptr, ptr %21, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct.ImGuiIO, ptr %1908, i32 0, i32 32
  %1910 = load ptr, ptr %1909, align 8, !tbaa !167
  %1911 = icmp ne ptr %1910, null
  br i1 %1911, label %1912, label %1985

1912:                                             ; preds = %1907
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #14
  %1913 = load ptr, ptr %47, align 8, !tbaa !5
  %1914 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1913)
  br i1 %1914, label %1915, label %1925

1915:                                             ; preds = %1912
  %1916 = load ptr, ptr %47, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1916, i32 0, i32 11
  %1918 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1917, i32 0, i32 1
  %1919 = load i32, ptr %1918, align 4, !tbaa !153
  %1920 = load ptr, ptr %47, align 8, !tbaa !5
  %1921 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1920, i32 0, i32 11
  %1922 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1921, i32 0, i32 2
  %1923 = load i32, ptr %1922, align 4, !tbaa !154
  %1924 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1919, i32 noundef %1923)
  br label %1926

1925:                                             ; preds = %1912
  br label %1926

1926:                                             ; preds = %1925, %1915
  %1927 = phi i32 [ %1924, %1915 ], [ 0, %1925 ]
  store i32 %1927, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #14
  %1928 = load ptr, ptr %47, align 8, !tbaa !5
  %1929 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1928)
  br i1 %1929, label %1930, label %1940

1930:                                             ; preds = %1926
  %1931 = load ptr, ptr %47, align 8, !tbaa !5
  %1932 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1931, i32 0, i32 11
  %1933 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1932, i32 0, i32 1
  %1934 = load i32, ptr %1933, align 4, !tbaa !153
  %1935 = load ptr, ptr %47, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1935, i32 0, i32 11
  %1937 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1936, i32 0, i32 2
  %1938 = load i32, ptr %1937, align 4, !tbaa !154
  %1939 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1934, i32 noundef %1938)
  br label %1944

1940:                                             ; preds = %1926
  %1941 = load ptr, ptr %47, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1941, i32 0, i32 1
  %1943 = load i32, ptr %1942, align 4, !tbaa !116
  br label %1944

1944:                                             ; preds = %1940, %1930
  %1945 = phi i32 [ %1939, %1930 ], [ %1943, %1940 ]
  store i32 %1945, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #14
  %1946 = load ptr, ptr %47, align 8, !tbaa !5
  %1947 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1946, i32 0, i32 4
  %1948 = getelementptr inbounds %struct.ImVector.5, ptr %1947, i32 0, i32 2
  %1949 = load ptr, ptr %1948, align 8, !tbaa !115
  %1950 = load i32, ptr %103, align 4, !tbaa !9
  %1951 = sext i32 %1950 to i64
  %1952 = getelementptr inbounds i16, ptr %1949, i64 %1951
  %1953 = load ptr, ptr %47, align 8, !tbaa !5
  %1954 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1953, i32 0, i32 4
  %1955 = getelementptr inbounds %struct.ImVector.5, ptr %1954, i32 0, i32 2
  %1956 = load ptr, ptr %1955, align 8, !tbaa !115
  %1957 = load i32, ptr %104, align 4, !tbaa !9
  %1958 = sext i32 %1957 to i64
  %1959 = getelementptr inbounds i16, ptr %1956, i64 %1958
  %1960 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1952, ptr noundef %1959)
  %1961 = add nsw i32 %1960, 1
  store i32 %1961, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #14
  %1962 = load i32, ptr %105, align 4, !tbaa !9
  %1963 = sext i32 %1962 to i64
  %1964 = mul i64 %1963, 1
  %1965 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1964)
  store ptr %1965, ptr %106, align 8, !tbaa !5
  %1966 = load ptr, ptr %106, align 8, !tbaa !5
  %1967 = load i32, ptr %105, align 4, !tbaa !9
  %1968 = load ptr, ptr %47, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1968, i32 0, i32 4
  %1970 = getelementptr inbounds %struct.ImVector.5, ptr %1969, i32 0, i32 2
  %1971 = load ptr, ptr %1970, align 8, !tbaa !115
  %1972 = load i32, ptr %103, align 4, !tbaa !9
  %1973 = sext i32 %1972 to i64
  %1974 = getelementptr inbounds i16, ptr %1971, i64 %1973
  %1975 = load ptr, ptr %47, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1975, i32 0, i32 4
  %1977 = getelementptr inbounds %struct.ImVector.5, ptr %1976, i32 0, i32 2
  %1978 = load ptr, ptr %1977, align 8, !tbaa !115
  %1979 = load i32, ptr %104, align 4, !tbaa !9
  %1980 = sext i32 %1979 to i64
  %1981 = getelementptr inbounds i16, ptr %1978, i64 %1980
  %1982 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1966, i32 noundef %1967, ptr noundef %1974, ptr noundef %1981)
  %1983 = load ptr, ptr %106, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1983)
  %1984 = load ptr, ptr %106, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1984)
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  br label %1985

1985:                                             ; preds = %1944, %1907
  %1986 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1987 = trunc i8 %1986 to i1
  br i1 %1987, label %1988, label %2000

1988:                                             ; preds = %1985
  %1989 = load ptr, ptr %47, align 8, !tbaa !5
  %1990 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %1989)
  br i1 %1990, label %1993, label %1991

1991:                                             ; preds = %1988
  %1992 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %1992)
  br label %1993

1993:                                             ; preds = %1991, %1988
  %1994 = load ptr, ptr %47, align 8, !tbaa !5
  %1995 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1994, i32 0, i32 13
  store i8 1, ptr %1995, align 4, !tbaa !155
  %1996 = load ptr, ptr %47, align 8, !tbaa !5
  %1997 = load ptr, ptr %47, align 8, !tbaa !5
  %1998 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1997, i32 0, i32 11
  %1999 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1996, ptr noundef %1998)
  br label %2000

2000:                                             ; preds = %1993, %1985
  br label %2070

2001:                                             ; preds = %1904
  %2002 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %2003 = trunc i8 %2002 to i1
  br i1 %2003, label %2004, label %2069

2004:                                             ; preds = %2001
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #14
  %2005 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %2005, ptr %107, align 8, !tbaa !5
  %2006 = load ptr, ptr %107, align 8, !tbaa !5
  %2007 = icmp ne ptr %2006, null
  br i1 %2007, label %2008, label %2068

2008:                                             ; preds = %2004
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #14
  %2009 = load ptr, ptr %107, align 8, !tbaa !5
  %2010 = call i64 @strlen(ptr noundef %2009) #16
  %2011 = trunc i64 %2010 to i32
  store i32 %2011, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #14
  %2012 = load i32, ptr %108, align 4, !tbaa !9
  %2013 = add nsw i32 %2012, 1
  %2014 = sext i32 %2013 to i64
  %2015 = mul i64 %2014, 2
  %2016 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %2015)
  store ptr %2016, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #14
  store i32 0, ptr %110, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #14
  %2017 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %2017, ptr %111, align 8, !tbaa !5
  br label %2018

2018:                                             ; preds = %2048, %2046, %2008
  %2019 = load ptr, ptr %111, align 8, !tbaa !5
  %2020 = load i8, ptr %2019, align 1, !tbaa !127
  %2021 = icmp ne i8 %2020, 0
  br i1 %2021, label %2023, label %2022

2022:                                             ; preds = %2018
  store i32 5, ptr %19, align 4
  br label %2049

2023:                                             ; preds = %2018
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #14
  %2024 = load ptr, ptr %111, align 8, !tbaa !5
  %2025 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %112, ptr noundef %2024, ptr noundef null)
  %2026 = load ptr, ptr %111, align 8, !tbaa !5
  %2027 = sext i32 %2025 to i64
  %2028 = getelementptr inbounds i8, ptr %2026, i64 %2027
  store ptr %2028, ptr %111, align 8, !tbaa !5
  %2029 = load i32, ptr %112, align 4, !tbaa !9
  %2030 = icmp eq i32 %2029, 0
  br i1 %2030, label %2031, label %2032

2031:                                             ; preds = %2023
  store i32 5, ptr %19, align 4
  br label %2046

2032:                                             ; preds = %2023
  %2033 = load i32, ptr %15, align 4, !tbaa !9
  %2034 = load ptr, ptr %16, align 8, !tbaa !5
  %2035 = load ptr, ptr %17, align 8, !tbaa !5
  %2036 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %112, i32 noundef %2033, ptr noundef %2034, ptr noundef %2035, i32 noundef 4)
  br i1 %2036, label %2038, label %2037

2037:                                             ; preds = %2032
  store i32 6, ptr %19, align 4
  br label %2046, !llvm.loop !168

2038:                                             ; preds = %2032
  %2039 = load i32, ptr %112, align 4, !tbaa !9
  %2040 = trunc i32 %2039 to i16
  %2041 = load ptr, ptr %109, align 8, !tbaa !5
  %2042 = load i32, ptr %110, align 4, !tbaa !9
  %2043 = add nsw i32 %2042, 1
  store i32 %2043, ptr %110, align 4, !tbaa !9
  %2044 = sext i32 %2042 to i64
  %2045 = getelementptr inbounds i16, ptr %2041, i64 %2044
  store i16 %2040, ptr %2045, align 2, !tbaa !150
  store i32 0, ptr %19, align 4
  br label %2046

2046:                                             ; preds = %2038, %2037, %2031
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #14
  %2047 = load i32, ptr %19, align 4
  switch i32 %2047, label %2049 [
    i32 0, label %2048
    i32 6, label %2018
  ]

2048:                                             ; preds = %2046
  br label %2018, !llvm.loop !168

2049:                                             ; preds = %2046, %2022
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #14
  br label %2050

2050:                                             ; preds = %2049
  %2051 = load ptr, ptr %109, align 8, !tbaa !5
  %2052 = load i32, ptr %110, align 4, !tbaa !9
  %2053 = sext i32 %2052 to i64
  %2054 = getelementptr inbounds i16, ptr %2051, i64 %2053
  store i16 0, ptr %2054, align 2, !tbaa !150
  %2055 = load i32, ptr %110, align 4, !tbaa !9
  %2056 = icmp sgt i32 %2055, 0
  br i1 %2056, label %2057, label %2066

2057:                                             ; preds = %2050
  %2058 = load ptr, ptr %47, align 8, !tbaa !5
  %2059 = load ptr, ptr %47, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2059, i32 0, i32 11
  %2061 = load ptr, ptr %109, align 8, !tbaa !5
  %2062 = load i32, ptr %110, align 4, !tbaa !9
  %2063 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2058, ptr noundef %2060, ptr noundef %2061, i32 noundef %2062)
  %2064 = load ptr, ptr %47, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2064, i32 0, i32 13
  store i8 1, ptr %2065, align 4, !tbaa !155
  br label %2066

2066:                                             ; preds = %2057, %2050
  %2067 = load ptr, ptr %109, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2067)
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #14
  br label %2068

2068:                                             ; preds = %2066, %2004
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #14
  br label %2069

2069:                                             ; preds = %2068, %2001
  br label %2070

2070:                                             ; preds = %2069, %2000
  br label %2071

2071:                                             ; preds = %2070, %1897
  br label %2072

2072:                                             ; preds = %2071, %1885
  br label %2073

2073:                                             ; preds = %2072, %1878
  br label %2074

2074:                                             ; preds = %2073, %1874
  br label %2075

2075:                                             ; preds = %2074, %1863
  br label %2076

2076:                                             ; preds = %2075, %1819
  br label %2077

2077:                                             ; preds = %2076, %1780
  br label %2078

2078:                                             ; preds = %2077, %1770
  br label %2079

2079:                                             ; preds = %2078, %1754
  br label %2080

2080:                                             ; preds = %2079, %1729
  br label %2081

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

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

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

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

2085:                                             ; preds = %2084, %1626
  %2086 = load ptr, ptr %47, align 8, !tbaa !5
  %2087 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %2086)
  br i1 %2087, label %2088, label %2091

2088:                                             ; preds = %2085
  %2089 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2090 = trunc i8 %2089 to i1
  br label %2091

2091:                                             ; preds = %2088, %2085
  %2092 = phi i1 [ false, %2085 ], [ %2090, %2088 ]
  %2093 = zext i1 %2092 to i32
  %2094 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2095 = trunc i8 %2094 to i1
  %2096 = zext i1 %2095 to i32
  %2097 = or i32 %2096, %2093
  %2098 = icmp ne i32 %2097, 0
  %2099 = zext i1 %2098 to i8
  store i8 %2099, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #14
  br label %2100

2100:                                             ; preds = %2091, %1375, %1370, %1364
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #14
  store ptr null, ptr %113, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #14
  store i32 0, ptr %114, align 4, !tbaa !9
  %2101 = load ptr, ptr %20, align 8, !tbaa !5
  %2102 = getelementptr inbounds %struct.ImGuiContext, ptr %2101, i32 0, i32 46
  %2103 = load i32, ptr %2102, align 4, !tbaa !106
  %2104 = load i32, ptr %29, align 4, !tbaa !9
  %2105 = icmp eq i32 %2103, %2104
  br i1 %2105, label %2106, label %2553

2106:                                             ; preds = %2100
  %2107 = load ptr, ptr %47, align 8, !tbaa !5
  %2108 = icmp ne ptr %2107, null
  br i1 %2108, label %2109, label %2110

2109:                                             ; preds = %2106
  br label %2112

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

2111:                                             ; No predecessors!
  br label %2112

2112:                                             ; preds = %2111, %2109
  %2113 = load i8, ptr %83, align 1, !tbaa !42, !range !40, !noundef !41
  %2114 = trunc i8 %2113 to i1
  br i1 %2114, label %2115, label %2180

2115:                                             ; preds = %2112
  %2116 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2117 = trunc i8 %2116 to i1
  br i1 %2117, label %2179, label %2118

2118:                                             ; preds = %2115
  %2119 = load ptr, ptr %12, align 8, !tbaa !5
  %2120 = load ptr, ptr %47, align 8, !tbaa !5
  %2121 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2120, i32 0, i32 6
  %2122 = getelementptr inbounds %struct.ImVector.28, ptr %2121, i32 0, i32 2
  %2123 = load ptr, ptr %2122, align 8, !tbaa !113
  %2124 = call i32 @strcmp(ptr noundef %2119, ptr noundef %2123) #16
  %2125 = icmp ne i32 %2124, 0
  br i1 %2125, label %2126, label %2179

2126:                                             ; preds = %2118
  %2127 = load ptr, ptr %47, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2127, i32 0, i32 6
  %2129 = getelementptr inbounds %struct.ImVector.28, ptr %2128, i32 0, i32 2
  %2130 = load ptr, ptr %2129, align 8, !tbaa !113
  store ptr %2130, ptr %113, align 8, !tbaa !5
  %2131 = load ptr, ptr %47, align 8, !tbaa !5
  %2132 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2131, i32 0, i32 6
  %2133 = getelementptr inbounds %struct.ImVector.28, ptr %2132, i32 0, i32 0
  %2134 = load i32, ptr %2133, align 8, !tbaa !169
  %2135 = sub nsw i32 %2134, 1
  store i32 %2135, ptr %114, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %115) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115)
  %2136 = load i32, ptr %114, align 4, !tbaa !9
  %2137 = icmp sgt i32 %2136, 0
  br i1 %2137, label %2138, label %2163

2138:                                             ; preds = %2126
  %2139 = load ptr, ptr %113, align 8, !tbaa !5
  %2140 = load ptr, ptr %113, align 8, !tbaa !5
  %2141 = load i32, ptr %114, align 4, !tbaa !9
  %2142 = sext i32 %2141 to i64
  %2143 = getelementptr inbounds i8, ptr %2140, i64 %2142
  %2144 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2139, ptr noundef %2143)
          to label %2145 unwind label %2159

2145:                                             ; preds = %2138
  %2146 = add nsw i32 %2144, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %115, i32 noundef %2146)
          to label %2147 unwind label %2159

2147:                                             ; preds = %2145
  %2148 = getelementptr inbounds %struct.ImVector.5, ptr %115, i32 0, i32 2
  %2149 = load ptr, ptr %2148, align 8, !tbaa !170
  %2150 = getelementptr inbounds %struct.ImVector.5, ptr %115, i32 0, i32 0
  %2151 = load i32, ptr %2150, align 8, !tbaa !171
  %2152 = load ptr, ptr %113, align 8, !tbaa !5
  %2153 = load ptr, ptr %113, align 8, !tbaa !5
  %2154 = load i32, ptr %114, align 4, !tbaa !9
  %2155 = sext i32 %2154 to i64
  %2156 = getelementptr inbounds i8, ptr %2153, i64 %2155
  %2157 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2149, i32 noundef %2151, ptr noundef %2152, ptr noundef %2156, ptr noundef null)
          to label %2158 unwind label %2159

2158:                                             ; preds = %2147
  br label %2163

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

2163:                                             ; preds = %2158, %2126
  %2164 = load ptr, ptr %47, align 8, !tbaa !5
  %2165 = load ptr, ptr %47, align 8, !tbaa !5
  %2166 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2165, i32 0, i32 11
  %2167 = getelementptr inbounds %struct.ImVector.5, ptr %115, i32 0, i32 2
  %2168 = load ptr, ptr %2167, align 8, !tbaa !170
  %2169 = load i32, ptr %114, align 4, !tbaa !9
  %2170 = icmp sgt i32 %2169, 0
  br i1 %2170, label %2171, label %2175

2171:                                             ; preds = %2163
  %2172 = getelementptr inbounds %struct.ImVector.5, ptr %115, i32 0, i32 0
  %2173 = load i32, ptr %2172, align 8, !tbaa !171
  %2174 = sub nsw i32 %2173, 1
  br label %2176

2175:                                             ; preds = %2163
  br label %2176

2176:                                             ; preds = %2175, %2171
  %2177 = phi i32 [ %2174, %2171 ], [ 0, %2175 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2164, ptr noundef %2166, ptr noundef %2168, i32 noundef %2177)
          to label %2178 unwind label %2159

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

2179:                                             ; preds = %2178, %2118, %2115
  br label %2180

2180:                                             ; preds = %2179, %2112
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #14
  %2181 = load i8, ptr %83, align 1, !tbaa !42, !range !40, !noundef !41
  %2182 = trunc i8 %2181 to i1
  br i1 %2182, label %2183, label %2192

2183:                                             ; preds = %2180
  %2184 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %2185 = trunc i8 %2184 to i1
  br i1 %2185, label %2186, label %2190

2186:                                             ; preds = %2183
  %2187 = load i32, ptr %15, align 4, !tbaa !9
  %2188 = and i32 %2187, 32
  %2189 = icmp ne i32 %2188, 0
  br label %2190

2190:                                             ; preds = %2186, %2183
  %2191 = phi i1 [ false, %2183 ], [ %2189, %2186 ]
  br label %2192

2192:                                             ; preds = %2190, %2180
  %2193 = phi i1 [ true, %2180 ], [ %2191, %2190 ]
  %2194 = zext i1 %2193 to i8
  store i8 %2194, ptr %118, align 1, !tbaa !42
  %2195 = load i8, ptr %118, align 1, !tbaa !42, !range !40, !noundef !41
  %2196 = trunc i8 %2195 to i1
  br i1 %2196, label %2197, label %2550

2197:                                             ; preds = %2192
  %2198 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2199 = trunc i8 %2198 to i1
  br i1 %2199, label %2224, label %2200

2200:                                             ; preds = %2197
  %2201 = load ptr, ptr %47, align 8, !tbaa !5
  %2202 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2201, i32 0, i32 7
  store i8 1, ptr %2202, align 8, !tbaa !114
  %2203 = load ptr, ptr %47, align 8, !tbaa !5
  %2204 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2203, i32 0, i32 5
  %2205 = load ptr, ptr %47, align 8, !tbaa !5
  %2206 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2205, i32 0, i32 4
  %2207 = getelementptr inbounds %struct.ImVector.5, ptr %2206, i32 0, i32 0
  %2208 = load i32, ptr %2207, align 8, !tbaa !125
  %2209 = mul nsw i32 %2208, 4
  %2210 = add nsw i32 %2209, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2204, i32 noundef %2210)
  %2211 = load ptr, ptr %47, align 8, !tbaa !5
  %2212 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2211, i32 0, i32 5
  %2213 = getelementptr inbounds %struct.ImVector.28, ptr %2212, i32 0, i32 2
  %2214 = load ptr, ptr %2213, align 8, !tbaa !126
  %2215 = load ptr, ptr %47, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2215, i32 0, i32 5
  %2217 = getelementptr inbounds %struct.ImVector.28, ptr %2216, i32 0, i32 0
  %2218 = load i32, ptr %2217, align 8, !tbaa !172
  %2219 = load ptr, ptr %47, align 8, !tbaa !5
  %2220 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2219, i32 0, i32 4
  %2221 = getelementptr inbounds %struct.ImVector.5, ptr %2220, i32 0, i32 2
  %2222 = load ptr, ptr %2221, align 8, !tbaa !115
  %2223 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2214, i32 noundef %2218, ptr noundef %2222, ptr noundef null)
  br label %2224

2224:                                             ; preds = %2200, %2197
  %2225 = load i32, ptr %15, align 4, !tbaa !9
  %2226 = and i32 %2225, 524736
  %2227 = icmp ne i32 %2226, 0
  br i1 %2227, label %2228, label %2530

2228:                                             ; preds = %2224
  %2229 = load ptr, ptr %16, align 8, !tbaa !5
  %2230 = icmp ne ptr %2229, null
  br i1 %2230, label %2231, label %2232

2231:                                             ; preds = %2228
  br label %2234

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

2233:                                             ; No predecessors!
  br label %2234

2234:                                             ; preds = %2233, %2231
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #14
  store i32 0, ptr %119, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #14
  store i32 0, ptr %120, align 4, !tbaa !9
  %2235 = load i32, ptr %15, align 4, !tbaa !9
  %2236 = and i32 %2235, 64
  %2237 = icmp ne i32 %2236, 0
  br i1 %2237, label %2238, label %2241

2238:                                             ; preds = %2234
  %2239 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 512, i1 noundef zeroext true)
  br i1 %2239, label %2240, label %2241

2240:                                             ; preds = %2238
  store i32 64, ptr %119, align 4, !tbaa !9
  store i32 512, ptr %120, align 4, !tbaa !9
  br label %2274

2241:                                             ; preds = %2238, %2234
  %2242 = load i32, ptr %15, align 4, !tbaa !9
  %2243 = and i32 %2242, 128
  %2244 = icmp ne i32 %2243, 0
  br i1 %2244, label %2245, label %2248

2245:                                             ; preds = %2241
  %2246 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 515, i1 noundef zeroext true)
  br i1 %2246, label %2247, label %2248

2247:                                             ; preds = %2245
  store i32 128, ptr %119, align 4, !tbaa !9
  store i32 515, ptr %120, align 4, !tbaa !9
  br label %2273

2248:                                             ; preds = %2245, %2241
  %2249 = load i32, ptr %15, align 4, !tbaa !9
  %2250 = and i32 %2249, 128
  %2251 = icmp ne i32 %2250, 0
  br i1 %2251, label %2252, label %2255

2252:                                             ; preds = %2248
  %2253 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 516, i1 noundef zeroext true)
  br i1 %2253, label %2254, label %2255

2254:                                             ; preds = %2252
  store i32 128, ptr %119, align 4, !tbaa !9
  store i32 516, ptr %120, align 4, !tbaa !9
  br label %2272

2255:                                             ; preds = %2252, %2248
  %2256 = load i32, ptr %15, align 4, !tbaa !9
  %2257 = and i32 %2256, 524288
  %2258 = icmp ne i32 %2257, 0
  br i1 %2258, label %2259, label %2265

2259:                                             ; preds = %2255
  %2260 = load ptr, ptr %47, align 8, !tbaa !5
  %2261 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2260, i32 0, i32 15
  %2262 = load i8, ptr %2261, align 2, !tbaa !138, !range !40, !noundef !41
  %2263 = trunc i8 %2262 to i1
  br i1 %2263, label %2264, label %2265

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

2265:                                             ; preds = %2259, %2255
  %2266 = load i32, ptr %15, align 4, !tbaa !9
  %2267 = and i32 %2266, 256
  %2268 = icmp ne i32 %2267, 0
  br i1 %2268, label %2269, label %2270

2269:                                             ; preds = %2265
  store i32 256, ptr %119, align 4, !tbaa !9
  br label %2270

2270:                                             ; preds = %2269, %2265
  br label %2271

2271:                                             ; preds = %2270, %2264
  br label %2272

2272:                                             ; preds = %2271, %2254
  br label %2273

2273:                                             ; preds = %2272, %2247
  br label %2274

2274:                                             ; preds = %2273, %2240
  %2275 = load i32, ptr %119, align 4, !tbaa !9
  %2276 = icmp ne i32 %2275, 0
  br i1 %2276, label %2277, label %2529

2277:                                             ; preds = %2274
  call void @llvm.lifetime.start.p0(i64 56, ptr %121) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %121)
  call void @llvm.memset.p0.i64(ptr align 8 %121, i8 0, i64 56, i1 false)
  %2278 = load i32, ptr %119, align 4, !tbaa !9
  %2279 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 0
  store i32 %2278, ptr %2279, align 8, !tbaa !173
  %2280 = load i32, ptr %15, align 4, !tbaa !9
  %2281 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 1
  store i32 %2280, ptr %2281, align 4, !tbaa !175
  %2282 = load ptr, ptr %17, align 8, !tbaa !5
  %2283 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 2
  store ptr %2282, ptr %2283, align 8, !tbaa !176
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #14
  %2284 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2285 = trunc i8 %2284 to i1
  br i1 %2285, label %2286, label %2288

2286:                                             ; preds = %2277
  %2287 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2293

2288:                                             ; preds = %2277
  %2289 = load ptr, ptr %47, align 8, !tbaa !5
  %2290 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2289, i32 0, i32 5
  %2291 = getelementptr inbounds %struct.ImVector.28, ptr %2290, i32 0, i32 2
  %2292 = load ptr, ptr %2291, align 8, !tbaa !126
  br label %2293

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

2346:                                             ; preds = %2293
  %2347 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2353

2348:                                             ; preds = %2293
  %2349 = load ptr, ptr %47, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2349, i32 0, i32 5
  %2351 = getelementptr inbounds %struct.ImVector.28, ptr %2350, i32 0, i32 2
  %2352 = load ptr, ptr %2351, align 8, !tbaa !126
  br label %2353

2353:                                             ; preds = %2348, %2346
  %2354 = phi ptr [ %2347, %2346 ], [ %2352, %2348 ]
  store ptr %2354, ptr %122, align 8, !tbaa !5
  %2355 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2356 = load ptr, ptr %2355, align 8, !tbaa !178
  %2357 = load ptr, ptr %122, align 8, !tbaa !5
  %2358 = icmp eq ptr %2356, %2357
  br i1 %2358, label %2359, label %2360

2359:                                             ; preds = %2353
  br label %2362

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

2361:                                             ; No predecessors!
  br label %2362

2362:                                             ; preds = %2361, %2359
  %2363 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 7
  %2364 = load i32, ptr %2363, align 4, !tbaa !180
  %2365 = load ptr, ptr %47, align 8, !tbaa !5
  %2366 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2365, i32 0, i32 9
  %2367 = load i32, ptr %2366, align 4, !tbaa !139
  %2368 = icmp eq i32 %2364, %2367
  br i1 %2368, label %2369, label %2370

2369:                                             ; preds = %2362
  br label %2372

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

2371:                                             ; No predecessors!
  br label %2372

2372:                                             ; preds = %2371, %2369
  %2373 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 1
  %2374 = load i32, ptr %2373, align 4, !tbaa !175
  %2375 = load i32, ptr %15, align 4, !tbaa !9
  %2376 = icmp eq i32 %2374, %2375
  br i1 %2376, label %2377, label %2378

2377:                                             ; preds = %2372
  br label %2380

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

2379:                                             ; No predecessors!
  br label %2380

2380:                                             ; preds = %2379, %2377
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #14
  %2381 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 8
  %2382 = load i8, ptr %2381, align 8, !tbaa !181, !range !40, !noundef !41
  %2383 = trunc i8 %2382 to i1
  %2384 = zext i1 %2383 to i8
  store i8 %2384, ptr %127, align 1, !tbaa !42
  %2385 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 9
  %2386 = load i32, ptr %2385, align 4, !tbaa !182
  %2387 = load i32, ptr %124, align 4, !tbaa !9
  %2388 = icmp ne i32 %2386, %2387
  br i1 %2388, label %2392, label %2389

2389:                                             ; preds = %2380
  %2390 = load i8, ptr %127, align 1, !tbaa !42, !range !40, !noundef !41
  %2391 = trunc i8 %2390 to i1
  br i1 %2391, label %2392, label %2407

2392:                                             ; preds = %2389, %2380
  %2393 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2394 = load ptr, ptr %2393, align 8, !tbaa !178
  %2395 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2396 = load ptr, ptr %2395, align 8, !tbaa !178
  %2397 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 9
  %2398 = load i32, ptr %2397, align 4, !tbaa !182
  %2399 = sext i32 %2398 to i64
  %2400 = getelementptr inbounds i8, ptr %2396, i64 %2399
  %2401 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2394, ptr noundef %2400)
  %2402 = load ptr, ptr %47, align 8, !tbaa !5
  %2403 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2402, i32 0, i32 11
  %2404 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2403, i32 0, i32 0
  store i32 %2401, ptr %2404, align 4, !tbaa !152
  %2405 = load ptr, ptr %47, align 8, !tbaa !5
  %2406 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2405, i32 0, i32 13
  store i8 1, ptr %2406, align 4, !tbaa !155
  br label %2407

2407:                                             ; preds = %2392, %2389
  %2408 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  %2409 = load i32, ptr %2408, align 8, !tbaa !183
  %2410 = load i32, ptr %125, align 4, !tbaa !9
  %2411 = icmp ne i32 %2409, %2410
  br i1 %2411, label %2415, label %2412

2412:                                             ; preds = %2407
  %2413 = load i8, ptr %127, align 1, !tbaa !42, !range !40, !noundef !41
  %2414 = trunc i8 %2413 to i1
  br i1 %2414, label %2415, label %2441

2415:                                             ; preds = %2412, %2407
  %2416 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  %2417 = load i32, ptr %2416, align 8, !tbaa !183
  %2418 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 9
  %2419 = load i32, ptr %2418, align 4, !tbaa !182
  %2420 = icmp eq i32 %2417, %2419
  br i1 %2420, label %2421, label %2426

2421:                                             ; preds = %2415
  %2422 = load ptr, ptr %47, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2422, i32 0, i32 11
  %2424 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2423, i32 0, i32 0
  %2425 = load i32, ptr %2424, align 4, !tbaa !152
  br label %2436

2426:                                             ; preds = %2415
  %2427 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2428 = load ptr, ptr %2427, align 8, !tbaa !178
  %2429 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2430 = load ptr, ptr %2429, align 8, !tbaa !178
  %2431 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  %2432 = load i32, ptr %2431, align 8, !tbaa !183
  %2433 = sext i32 %2432 to i64
  %2434 = getelementptr inbounds i8, ptr %2430, i64 %2433
  %2435 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2428, ptr noundef %2434)
  br label %2436

2436:                                             ; preds = %2426, %2421
  %2437 = phi i32 [ %2425, %2421 ], [ %2435, %2426 ]
  %2438 = load ptr, ptr %47, align 8, !tbaa !5
  %2439 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2438, i32 0, i32 11
  %2440 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2439, i32 0, i32 1
  store i32 %2437, ptr %2440, align 4, !tbaa !153
  br label %2441

2441:                                             ; preds = %2436, %2412
  %2442 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 11
  %2443 = load i32, ptr %2442, align 4, !tbaa !184
  %2444 = load i32, ptr %126, align 4, !tbaa !9
  %2445 = icmp ne i32 %2443, %2444
  br i1 %2445, label %2449, label %2446

2446:                                             ; preds = %2441
  %2447 = load i8, ptr %127, align 1, !tbaa !42, !range !40, !noundef !41
  %2448 = trunc i8 %2447 to i1
  br i1 %2448, label %2449, label %2475

2449:                                             ; preds = %2446, %2441
  %2450 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 11
  %2451 = load i32, ptr %2450, align 4, !tbaa !184
  %2452 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 10
  %2453 = load i32, ptr %2452, align 8, !tbaa !183
  %2454 = icmp eq i32 %2451, %2453
  br i1 %2454, label %2455, label %2460

2455:                                             ; preds = %2449
  %2456 = load ptr, ptr %47, align 8, !tbaa !5
  %2457 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2456, i32 0, i32 11
  %2458 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2457, i32 0, i32 1
  %2459 = load i32, ptr %2458, align 4, !tbaa !153
  br label %2470

2460:                                             ; preds = %2449
  %2461 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2462 = load ptr, ptr %2461, align 8, !tbaa !178
  %2463 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2464 = load ptr, ptr %2463, align 8, !tbaa !178
  %2465 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 11
  %2466 = load i32, ptr %2465, align 4, !tbaa !184
  %2467 = sext i32 %2466 to i64
  %2468 = getelementptr inbounds i8, ptr %2464, i64 %2467
  %2469 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2462, ptr noundef %2468)
  br label %2470

2470:                                             ; preds = %2460, %2455
  %2471 = phi i32 [ %2459, %2455 ], [ %2469, %2460 ]
  %2472 = load ptr, ptr %47, align 8, !tbaa !5
  %2473 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2472, i32 0, i32 11
  %2474 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2473, i32 0, i32 2
  store i32 %2471, ptr %2474, align 4, !tbaa !154
  br label %2475

2475:                                             ; preds = %2470, %2446
  %2476 = load i8, ptr %127, align 1, !tbaa !42, !range !40, !noundef !41
  %2477 = trunc i8 %2476 to i1
  br i1 %2477, label %2478, label %2528

2478:                                             ; preds = %2475
  %2479 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  %2480 = load i32, ptr %2479, align 8, !tbaa !179
  %2481 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2482 = load ptr, ptr %2481, align 8, !tbaa !178
  %2483 = call i64 @strlen(ptr noundef %2482) #16
  %2484 = trunc i64 %2483 to i32
  %2485 = icmp eq i32 %2480, %2484
  br i1 %2485, label %2486, label %2487

2486:                                             ; preds = %2478
  br label %2489

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

2488:                                             ; No predecessors!
  br label %2489

2489:                                             ; preds = %2488, %2486
  %2490 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  %2491 = load i32, ptr %2490, align 8, !tbaa !179
  %2492 = load i32, ptr %71, align 4, !tbaa !9
  %2493 = icmp sgt i32 %2491, %2492
  br i1 %2493, label %2494, label %2509

2494:                                             ; preds = %2489
  %2495 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2496 = trunc i8 %2495 to i1
  br i1 %2496, label %2497, label %2509

2497:                                             ; preds = %2494
  %2498 = load ptr, ptr %47, align 8, !tbaa !5
  %2499 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2498, i32 0, i32 4
  %2500 = load ptr, ptr %47, align 8, !tbaa !5
  %2501 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2500, i32 0, i32 4
  %2502 = getelementptr inbounds %struct.ImVector.5, ptr %2501, i32 0, i32 0
  %2503 = load i32, ptr %2502, align 8, !tbaa !125
  %2504 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  %2505 = load i32, ptr %2504, align 8, !tbaa !179
  %2506 = load i32, ptr %71, align 4, !tbaa !9
  %2507 = sub nsw i32 %2505, %2506
  %2508 = add nsw i32 %2503, %2507
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2499, i32 noundef %2508)
  br label %2509

2509:                                             ; preds = %2497, %2494, %2489
  %2510 = load ptr, ptr %47, align 8, !tbaa !5
  %2511 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2510, i32 0, i32 4
  %2512 = getelementptr inbounds %struct.ImVector.5, ptr %2511, i32 0, i32 2
  %2513 = load ptr, ptr %2512, align 8, !tbaa !115
  %2514 = load ptr, ptr %47, align 8, !tbaa !5
  %2515 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2514, i32 0, i32 4
  %2516 = getelementptr inbounds %struct.ImVector.5, ptr %2515, i32 0, i32 0
  %2517 = load i32, ptr %2516, align 8, !tbaa !125
  %2518 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 5
  %2519 = load ptr, ptr %2518, align 8, !tbaa !178
  %2520 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2513, i32 noundef %2517, ptr noundef %2519, ptr noundef null, ptr noundef null)
  %2521 = load ptr, ptr %47, align 8, !tbaa !5
  %2522 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2521, i32 0, i32 1
  store i32 %2520, ptr %2522, align 4, !tbaa !116
  %2523 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %121, i32 0, i32 6
  %2524 = load i32, ptr %2523, align 8, !tbaa !179
  %2525 = load ptr, ptr %47, align 8, !tbaa !5
  %2526 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2525, i32 0, i32 2
  store i32 %2524, ptr %2526, align 8, !tbaa !117
  %2527 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %2527)
  br label %2528

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

2529:                                             ; preds = %2528, %2274
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #14
  br label %2530

2530:                                             ; preds = %2529, %2224
  %2531 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %2532 = trunc i8 %2531 to i1
  br i1 %2532, label %2549, label %2533

2533:                                             ; preds = %2530
  %2534 = load ptr, ptr %47, align 8, !tbaa !5
  %2535 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2534, i32 0, i32 5
  %2536 = getelementptr inbounds %struct.ImVector.28, ptr %2535, i32 0, i32 2
  %2537 = load ptr, ptr %2536, align 8, !tbaa !126
  %2538 = load ptr, ptr %12, align 8, !tbaa !5
  %2539 = call i32 @strcmp(ptr noundef %2537, ptr noundef %2538) #16
  %2540 = icmp ne i32 %2539, 0
  br i1 %2540, label %2541, label %2549

2541:                                             ; preds = %2533
  %2542 = load ptr, ptr %47, align 8, !tbaa !5
  %2543 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2542, i32 0, i32 5
  %2544 = getelementptr inbounds %struct.ImVector.28, ptr %2543, i32 0, i32 2
  %2545 = load ptr, ptr %2544, align 8, !tbaa !126
  store ptr %2545, ptr %113, align 8, !tbaa !5
  %2546 = load ptr, ptr %47, align 8, !tbaa !5
  %2547 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2546, i32 0, i32 2
  %2548 = load i32, ptr %2547, align 8, !tbaa !117
  store i32 %2548, ptr %114, align 4, !tbaa !9
  br label %2549

2549:                                             ; preds = %2541, %2533, %2530
  br label %2550

2550:                                             ; preds = %2549, %2192
  %2551 = load ptr, ptr %47, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2551, i32 0, i32 17
  store i32 0, ptr %2552, align 8, !tbaa !140
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #14
  br label %2553

2553:                                             ; preds = %2550, %2100
  %2554 = load ptr, ptr %113, align 8, !tbaa !5
  %2555 = icmp ne ptr %2554, null
  br i1 %2555, label %2556, label %2606

2556:                                             ; preds = %2553
  %2557 = load i32, ptr %114, align 4, !tbaa !9
  %2558 = icmp sge i32 %2557, 0
  br i1 %2558, label %2559, label %2560

2559:                                             ; preds = %2556
  br label %2562

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

2561:                                             ; No predecessors!
  br label %2562

2562:                                             ; preds = %2561, %2559
  %2563 = load i8, ptr %28, align 1, !tbaa !42, !range !40, !noundef !41
  %2564 = trunc i8 %2563 to i1
  br i1 %2564, label %2565, label %2598

2565:                                             ; preds = %2562
  call void @llvm.lifetime.start.p0(i64 56, ptr %128) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %128)
  %2566 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 0
  store i32 262144, ptr %2566, align 8, !tbaa !173
  %2567 = load i32, ptr %15, align 4, !tbaa !9
  %2568 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 1
  store i32 %2567, ptr %2568, align 4, !tbaa !175
  %2569 = load ptr, ptr %12, align 8, !tbaa !5
  %2570 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 5
  store ptr %2569, ptr %2570, align 8, !tbaa !178
  %2571 = load i32, ptr %114, align 4, !tbaa !9
  %2572 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 6
  store i32 %2571, ptr %2572, align 8, !tbaa !179
  %2573 = load i32, ptr %13, align 4, !tbaa !9
  %2574 = load i32, ptr %114, align 4, !tbaa !9
  %2575 = add nsw i32 %2574, 1
  %2576 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2573, i32 noundef %2575)
  %2577 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 7
  store i32 %2576, ptr %2577, align 4, !tbaa !180
  %2578 = load ptr, ptr %17, align 8, !tbaa !5
  %2579 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 2
  store ptr %2578, ptr %2579, align 8, !tbaa !176
  %2580 = load ptr, ptr %16, align 8, !tbaa !5
  %2581 = call noundef i32 %2580(ptr noundef %128)
  %2582 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 5
  %2583 = load ptr, ptr %2582, align 8, !tbaa !178
  store ptr %2583, ptr %12, align 8, !tbaa !5
  %2584 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 7
  %2585 = load i32, ptr %2584, align 4, !tbaa !180
  store i32 %2585, ptr %13, align 4, !tbaa !9
  %2586 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 6
  %2587 = load i32, ptr %2586, align 8, !tbaa !179
  %2588 = load i32, ptr %13, align 4, !tbaa !9
  %2589 = sub nsw i32 %2588, 1
  %2590 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2587, i32 noundef %2589)
  store i32 %2590, ptr %114, align 4, !tbaa !9
  %2591 = load i32, ptr %114, align 4, !tbaa !9
  %2592 = load i32, ptr %13, align 4, !tbaa !9
  %2593 = icmp sle i32 %2591, %2592
  br i1 %2593, label %2594, label %2595

2594:                                             ; preds = %2565
  br label %2597

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

2596:                                             ; No predecessors!
  br label %2597

2597:                                             ; preds = %2596, %2594
  call void @llvm.lifetime.end.p0(i64 56, ptr %128) #14
  br label %2598

2598:                                             ; preds = %2597, %2562
  %2599 = load ptr, ptr %12, align 8, !tbaa !5
  %2600 = load ptr, ptr %113, align 8, !tbaa !5
  %2601 = load i32, ptr %114, align 4, !tbaa !9
  %2602 = add nsw i32 %2601, 1
  %2603 = load i32, ptr %13, align 4, !tbaa !9
  %2604 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2602, i32 noundef %2603)
  %2605 = sext i32 %2604 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2599, ptr noundef %2600, i64 noundef %2605)
  store i8 1, ptr %64, align 1, !tbaa !42
  br label %2606

2606:                                             ; preds = %2598, %2553
  %2607 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %2608 = trunc i8 %2607 to i1
  br i1 %2608, label %2609, label %2616

2609:                                             ; preds = %2606
  %2610 = load ptr, ptr %20, align 8, !tbaa !5
  %2611 = getelementptr inbounds %struct.ImGuiContext, ptr %2610, i32 0, i32 46
  %2612 = load i32, ptr %2611, align 4, !tbaa !106
  %2613 = load i32, ptr %29, align 4, !tbaa !9
  %2614 = icmp eq i32 %2612, %2613
  br i1 %2614, label %2615, label %2616

2615:                                             ; preds = %2609
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2616

2616:                                             ; preds = %2615, %2609, %2606
  %2617 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2618 = trunc i8 %2617 to i1
  br i1 %2618, label %2629, label %2619

2619:                                             ; preds = %2616
  %2620 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2620, i32 noundef 1)
  %2621 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %129, ptr align 4 %2621, i64 8, i1 false), !tbaa.struct !43
  %2622 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 4 %2622, i64 8, i1 false), !tbaa.struct !43
  %2623 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2624 = load ptr, ptr %22, align 8, !tbaa !5
  %2625 = getelementptr inbounds %struct.ImGuiStyle, ptr %2624, i32 0, i32 13
  %2626 = load float, ptr %2625, align 4, !tbaa !99
  %2627 = load <2 x float>, ptr %129, align 4
  %2628 = load <2 x float>, ptr %130, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2627, <2 x float> %2628, i32 noundef %2623, i1 noundef zeroext true, float noundef %2626)
  br label %2629

2629:                                             ; preds = %2619, %2616
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #14
  %2630 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2631 = getelementptr inbounds %struct.ImVec2, ptr %2630, i32 0, i32 0
  %2632 = load float, ptr %2631, align 4, !tbaa !144
  %2633 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2634 = getelementptr inbounds %struct.ImVec2, ptr %2633, i32 0, i32 1
  %2635 = load float, ptr %2634, align 4, !tbaa !185
  %2636 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2637 = getelementptr inbounds %struct.ImVec2, ptr %2636, i32 0, i32 0
  %2638 = load float, ptr %2637, align 4, !tbaa !144
  %2639 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2640 = load float, ptr %2639, align 4, !tbaa !95
  %2641 = fadd float %2638, %2640
  %2642 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2643 = getelementptr inbounds %struct.ImVec2, ptr %2642, i32 0, i32 1
  %2644 = load float, ptr %2643, align 4, !tbaa !185
  %2645 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2646 = load float, ptr %2645, align 4, !tbaa !93
  %2647 = fadd float %2644, %2646
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %131, float noundef %2632, float noundef %2635, float noundef %2641, float noundef %2647)
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  %2648 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2649 = trunc i8 %2648 to i1
  br i1 %2649, label %2650, label %2654

2650:                                             ; preds = %2629
  %2651 = load ptr, ptr %38, align 8, !tbaa !5
  %2652 = getelementptr inbounds %struct.ImGuiWindow, ptr %2651, i32 0, i32 54
  %2653 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2652, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %132, ptr align 8 %2653, i64 8, i1 false), !tbaa.struct !43
  br label %2659

2654:                                             ; preds = %2629
  %2655 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2656 = load ptr, ptr %22, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.ImGuiStyle, ptr %2656, i32 0, i32 12
  %2658 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2655, ptr noundef nonnull align 4 dereferenceable(8) %2657)
  store <2 x float> %2658, ptr %132, align 4
  br label %2659

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

2662:                                             ; preds = %2659
  %2663 = load ptr, ptr %47, align 8, !tbaa !5
  %2664 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2663, i32 0, i32 5
  %2665 = getelementptr inbounds %struct.ImVector.28, ptr %2664, i32 0, i32 2
  %2666 = load ptr, ptr %2665, align 8, !tbaa !126
  br label %2669

2667:                                             ; preds = %2659
  %2668 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2669

2669:                                             ; preds = %2667, %2662
  %2670 = phi ptr [ %2666, %2662 ], [ %2668, %2667 ]
  store ptr %2670, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #14
  store ptr null, ptr %136, align 8, !tbaa !5
  %2671 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2672 = trunc i8 %2671 to i1
  br i1 %2672, label %2673, label %2679

2673:                                             ; preds = %2669
  %2674 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2674, ptr %135, align 8, !tbaa !5
  %2675 = load ptr, ptr %11, align 8, !tbaa !5
  %2676 = load ptr, ptr %11, align 8, !tbaa !5
  %2677 = call i64 @strlen(ptr noundef %2676) #16
  %2678 = getelementptr inbounds i8, ptr %2675, i64 %2677
  store ptr %2678, ptr %136, align 8, !tbaa !5
  br label %2679

2679:                                             ; preds = %2673, %2669
  %2680 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2681 = trunc i8 %2680 to i1
  br i1 %2681, label %2685, label %2682

2682:                                             ; preds = %2679
  %2683 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2684 = trunc i8 %2683 to i1
  br i1 %2684, label %2685, label %3268

2685:                                             ; preds = %2682, %2679
  %2686 = load ptr, ptr %47, align 8, !tbaa !5
  %2687 = icmp ne ptr %2686, null
  br i1 %2687, label %2688, label %2689

2688:                                             ; preds = %2685
  br label %2691

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

2690:                                             ; No predecessors!
  br label %2691

2691:                                             ; preds = %2690, %2688
  %2692 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2693 = trunc i8 %2692 to i1
  br i1 %2693, label %2701, label %2694

2694:                                             ; preds = %2691
  %2695 = load ptr, ptr %135, align 8, !tbaa !5
  %2696 = load ptr, ptr %47, align 8, !tbaa !5
  %2697 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2696, i32 0, i32 2
  %2698 = load i32, ptr %2697, align 8, !tbaa !117
  %2699 = sext i32 %2698 to i64
  %2700 = getelementptr inbounds i8, ptr %2695, i64 %2699
  store ptr %2700, ptr %136, align 8, !tbaa !5
  br label %2701

2701:                                             ; preds = %2694, %2691
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #14
  %2702 = load ptr, ptr %47, align 8, !tbaa !5
  %2703 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2702, i32 0, i32 4
  %2704 = getelementptr inbounds %struct.ImVector.5, ptr %2703, i32 0, i32 2
  %2705 = load ptr, ptr %2704, align 8, !tbaa !115
  store ptr %2705, ptr %137, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %138)
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %139)
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #14
  call void @llvm.memset.p0.i64(ptr align 16 %140, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %141, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #14
  store i32 0, ptr %142, align 4, !tbaa !9
  %2706 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2707 = trunc i8 %2706 to i1
  br i1 %2707, label %2708, label %2720

2708:                                             ; preds = %2701
  %2709 = load ptr, ptr %137, align 8, !tbaa !5
  %2710 = load ptr, ptr %47, align 8, !tbaa !5
  %2711 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2710, i32 0, i32 11
  %2712 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2711, i32 0, i32 0
  %2713 = load i32, ptr %2712, align 4, !tbaa !152
  %2714 = sext i32 %2713 to i64
  %2715 = getelementptr inbounds i16, ptr %2709, i64 %2714
  %2716 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 0
  store ptr %2715, ptr %2716, align 16, !tbaa !5
  %2717 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  store i32 -1, ptr %2717, align 4, !tbaa !9
  %2718 = load i32, ptr %142, align 4, !tbaa !9
  %2719 = add nsw i32 %2718, 1
  store i32 %2719, ptr %142, align 4, !tbaa !9
  br label %2720

2720:                                             ; preds = %2708, %2701
  %2721 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2722 = trunc i8 %2721 to i1
  br i1 %2722, label %2723, label %2740

2723:                                             ; preds = %2720
  %2724 = load ptr, ptr %137, align 8, !tbaa !5
  %2725 = load ptr, ptr %47, align 8, !tbaa !5
  %2726 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2725, i32 0, i32 11
  %2727 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2726, i32 0, i32 1
  %2728 = load i32, ptr %2727, align 4, !tbaa !153
  %2729 = load ptr, ptr %47, align 8, !tbaa !5
  %2730 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2729, i32 0, i32 11
  %2731 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2730, i32 0, i32 2
  %2732 = load i32, ptr %2731, align 4, !tbaa !154
  %2733 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2728, i32 noundef %2732)
  %2734 = sext i32 %2733 to i64
  %2735 = getelementptr inbounds i16, ptr %2724, i64 %2734
  %2736 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 1
  store ptr %2735, ptr %2736, align 8, !tbaa !5
  %2737 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  store i32 -1, ptr %2737, align 4, !tbaa !9
  %2738 = load i32, ptr %142, align 4, !tbaa !9
  %2739 = add nsw i32 %2738, 1
  store i32 %2739, ptr %142, align 4, !tbaa !9
  br label %2740

2740:                                             ; preds = %2723, %2720
  %2741 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2742 = trunc i8 %2741 to i1
  %2743 = zext i1 %2742 to i64
  %2744 = select i1 %2742, i32 1, i32 0
  %2745 = load i32, ptr %142, align 4, !tbaa !9
  %2746 = add nsw i32 %2745, %2744
  store i32 %2746, ptr %142, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #14
  store i32 0, ptr %143, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #14
  %2747 = load ptr, ptr %137, align 8, !tbaa !5
  store ptr %2747, ptr %144, align 8, !tbaa !5
  br label %2748

2748:                                             ; preds = %2797, %2740
  %2749 = load ptr, ptr %144, align 8, !tbaa !5
  %2750 = load i16, ptr %2749, align 2, !tbaa !150
  %2751 = zext i16 %2750 to i32
  %2752 = icmp ne i32 %2751, 0
  br i1 %2752, label %2754, label %2753

2753:                                             ; preds = %2748
  store i32 7, ptr %19, align 4
  br label %2800

2754:                                             ; preds = %2748
  %2755 = load ptr, ptr %144, align 8, !tbaa !5
  %2756 = load i16, ptr %2755, align 2, !tbaa !150
  %2757 = zext i16 %2756 to i32
  %2758 = icmp eq i32 %2757, 10
  br i1 %2758, label %2759, label %2796

2759:                                             ; preds = %2754
  %2760 = load i32, ptr %143, align 4, !tbaa !9
  %2761 = add nsw i32 %2760, 1
  store i32 %2761, ptr %143, align 4, !tbaa !9
  %2762 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  %2763 = load i32, ptr %2762, align 4, !tbaa !9
  %2764 = icmp eq i32 %2763, -1
  br i1 %2764, label %2765, label %2778

2765:                                             ; preds = %2759
  %2766 = load ptr, ptr %144, align 8, !tbaa !5
  %2767 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 0
  %2768 = load ptr, ptr %2767, align 16, !tbaa !5
  %2769 = icmp uge ptr %2766, %2768
  br i1 %2769, label %2770, label %2778

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

2776:                                             ; preds = %2770
  store i32 7, ptr %19, align 4
  br label %2800

2777:                                             ; preds = %2770
  br label %2778

2778:                                             ; preds = %2777, %2765, %2759
  %2779 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  %2780 = load i32, ptr %2779, align 4, !tbaa !9
  %2781 = icmp eq i32 %2780, -1
  br i1 %2781, label %2782, label %2795

2782:                                             ; preds = %2778
  %2783 = load ptr, ptr %144, align 8, !tbaa !5
  %2784 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 1
  %2785 = load ptr, ptr %2784, align 8, !tbaa !5
  %2786 = icmp uge ptr %2783, %2785
  br i1 %2786, label %2787, label %2795

2787:                                             ; preds = %2782
  %2788 = load i32, ptr %143, align 4, !tbaa !9
  %2789 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  store i32 %2788, ptr %2789, align 4, !tbaa !9
  %2790 = load i32, ptr %142, align 4, !tbaa !9
  %2791 = add nsw i32 %2790, -1
  store i32 %2791, ptr %142, align 4, !tbaa !9
  %2792 = icmp sle i32 %2791, 0
  br i1 %2792, label %2793, label %2794

2793:                                             ; preds = %2787
  store i32 7, ptr %19, align 4
  br label %2800

2794:                                             ; preds = %2787
  br label %2795

2795:                                             ; preds = %2794, %2782, %2778
  br label %2796

2796:                                             ; preds = %2795, %2754
  br label %2797

2797:                                             ; preds = %2796
  %2798 = load ptr, ptr %144, align 8, !tbaa !5
  %2799 = getelementptr inbounds i16, ptr %2798, i32 1
  store ptr %2799, ptr %144, align 8, !tbaa !5
  br label %2748, !llvm.loop !186

2800:                                             ; preds = %2793, %2776, %2753
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #14
  br label %2801

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

2807:                                             ; preds = %2801
  %2808 = load i32, ptr %143, align 4, !tbaa !9
  %2809 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  store i32 %2808, ptr %2809, align 4, !tbaa !9
  br label %2810

2810:                                             ; preds = %2807, %2801
  %2811 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  %2812 = load i32, ptr %2811, align 4, !tbaa !9
  %2813 = icmp eq i32 %2812, -1
  br i1 %2813, label %2814, label %2817

2814:                                             ; preds = %2810
  %2815 = load i32, ptr %143, align 4, !tbaa !9
  %2816 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  store i32 %2815, ptr %2816, align 4, !tbaa !9
  br label %2817

2817:                                             ; preds = %2814, %2810
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #14
  %2818 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 0
  %2819 = load ptr, ptr %2818, align 16, !tbaa !5
  %2820 = load ptr, ptr %137, align 8, !tbaa !5
  %2821 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2819, ptr noundef %2820)
  %2822 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 0
  %2823 = load ptr, ptr %2822, align 16, !tbaa !5
  %2824 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2821, ptr noundef %2823, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2824, ptr %145, align 4
  %2825 = getelementptr inbounds %struct.ImVec2, ptr %145, i32 0, i32 0
  %2826 = load float, ptr %2825, align 4, !tbaa !95
  %2827 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  store float %2826, ptr %2827, align 4, !tbaa !95
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #14
  %2828 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 0
  %2829 = load i32, ptr %2828, align 4, !tbaa !9
  %2830 = sitofp i32 %2829 to float
  %2831 = load ptr, ptr %20, align 8, !tbaa !5
  %2832 = getelementptr inbounds %struct.ImGuiContext, ptr %2831, i32 0, i32 8
  %2833 = load float, ptr %2832, align 8, !tbaa !45
  %2834 = fmul float %2830, %2833
  %2835 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  store float %2834, ptr %2835, align 4, !tbaa !93
  %2836 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  %2837 = load i32, ptr %2836, align 4, !tbaa !9
  %2838 = icmp sge i32 %2837, 0
  br i1 %2838, label %2839, label %2858

2839:                                             ; preds = %2817
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #14
  %2840 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 1
  %2841 = load ptr, ptr %2840, align 8, !tbaa !5
  %2842 = load ptr, ptr %137, align 8, !tbaa !5
  %2843 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2841, ptr noundef %2842)
  %2844 = getelementptr inbounds [2 x ptr], ptr %140, i64 0, i64 1
  %2845 = load ptr, ptr %2844, align 8, !tbaa !5
  %2846 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2843, ptr noundef %2845, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2846, ptr %146, align 4
  %2847 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %2848 = load float, ptr %2847, align 4, !tbaa !95
  %2849 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 0
  store float %2848, ptr %2849, align 4, !tbaa !95
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #14
  %2850 = getelementptr inbounds [2 x i32], ptr %141, i64 0, i64 1
  %2851 = load i32, ptr %2850, align 4, !tbaa !9
  %2852 = sitofp i32 %2851 to float
  %2853 = load ptr, ptr %20, align 8, !tbaa !5
  %2854 = getelementptr inbounds %struct.ImGuiContext, ptr %2853, i32 0, i32 8
  %2855 = load float, ptr %2854, align 8, !tbaa !45
  %2856 = fmul float %2852, %2855
  %2857 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 1
  store float %2856, ptr %2857, align 4, !tbaa !93
  br label %2858

2858:                                             ; preds = %2839, %2817
  %2859 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2860 = trunc i8 %2859 to i1
  br i1 %2860, label %2861, label %2870

2861:                                             ; preds = %2858
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #14
  %2862 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2863 = load float, ptr %2862, align 4, !tbaa !95
  %2864 = load i32, ptr %143, align 4, !tbaa !9
  %2865 = sitofp i32 %2864 to float
  %2866 = load ptr, ptr %20, align 8, !tbaa !5
  %2867 = getelementptr inbounds %struct.ImGuiContext, ptr %2866, i32 0, i32 8
  %2868 = load float, ptr %2867, align 8, !tbaa !45
  %2869 = fmul float %2865, %2868
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %147, float noundef %2863, float noundef %2869)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %133, ptr align 4 %147, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #14
  br label %2870

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

2873:                                             ; preds = %2870
  %2874 = load ptr, ptr %47, align 8, !tbaa !5
  %2875 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2874, i32 0, i32 13
  %2876 = load i8, ptr %2875, align 4, !tbaa !155, !range !40, !noundef !41
  %2877 = trunc i8 %2876 to i1
  br i1 %2877, label %2878, label %3011

2878:                                             ; preds = %2873
  %2879 = load i32, ptr %15, align 4, !tbaa !9
  %2880 = and i32 %2879, 4096
  %2881 = icmp ne i32 %2880, 0
  br i1 %2881, label %2931, label %2882

2882:                                             ; preds = %2878
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #14
  %2883 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2884 = load float, ptr %2883, align 4, !tbaa !95
  %2885 = fmul float %2884, 2.500000e-01
  store float %2885, ptr %148, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #14
  %2886 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2887 = load float, ptr %2886, align 4, !tbaa !95
  %2888 = load ptr, ptr %22, align 8, !tbaa !5
  %2889 = getelementptr inbounds %struct.ImGuiStyle, ptr %2888, i32 0, i32 12
  %2890 = getelementptr inbounds %struct.ImVec2, ptr %2889, i32 0, i32 0
  %2891 = load float, ptr %2890, align 4, !tbaa !145
  %2892 = fsub float %2887, %2891
  store float %2892, ptr %149, align 4, !tbaa !44
  %2893 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  %2894 = load float, ptr %2893, align 4, !tbaa !95
  %2895 = load ptr, ptr %47, align 8, !tbaa !5
  %2896 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2895, i32 0, i32 10
  %2897 = load float, ptr %2896, align 8, !tbaa !119
  %2898 = fcmp olt float %2894, %2897
  br i1 %2898, label %2899, label %2909

2899:                                             ; preds = %2882
  %2900 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  %2901 = load float, ptr %2900, align 4, !tbaa !95
  %2902 = load float, ptr %148, align 4, !tbaa !44
  %2903 = fsub float %2901, %2902
  %2904 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2903)
  %2905 = fptosi float %2904 to i32
  %2906 = sitofp i32 %2905 to float
  %2907 = load ptr, ptr %47, align 8, !tbaa !5
  %2908 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2907, i32 0, i32 10
  store float %2906, ptr %2908, align 8, !tbaa !119
  br label %2930

2909:                                             ; preds = %2882
  %2910 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  %2911 = load float, ptr %2910, align 4, !tbaa !95
  %2912 = load float, ptr %149, align 4, !tbaa !44
  %2913 = fsub float %2911, %2912
  %2914 = load ptr, ptr %47, align 8, !tbaa !5
  %2915 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2914, i32 0, i32 10
  %2916 = load float, ptr %2915, align 8, !tbaa !119
  %2917 = fcmp oge float %2913, %2916
  br i1 %2917, label %2918, label %2929

2918:                                             ; preds = %2909
  %2919 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 0
  %2920 = load float, ptr %2919, align 4, !tbaa !95
  %2921 = load float, ptr %149, align 4, !tbaa !44
  %2922 = fsub float %2920, %2921
  %2923 = load float, ptr %148, align 4, !tbaa !44
  %2924 = fadd float %2922, %2923
  %2925 = fptosi float %2924 to i32
  %2926 = sitofp i32 %2925 to float
  %2927 = load ptr, ptr %47, align 8, !tbaa !5
  %2928 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2927, i32 0, i32 10
  store float %2926, ptr %2928, align 8, !tbaa !119
  br label %2929

2929:                                             ; preds = %2918, %2909
  br label %2930

2930:                                             ; preds = %2929, %2899
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #14
  br label %2934

2931:                                             ; preds = %2878
  %2932 = load ptr, ptr %47, align 8, !tbaa !5
  %2933 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2932, i32 0, i32 10
  store float 0.000000e+00, ptr %2933, align 8, !tbaa !119
  br label %2934

2934:                                             ; preds = %2931, %2930
  %2935 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2936 = trunc i8 %2935 to i1
  br i1 %2936, label %2937, label %3008

2937:                                             ; preds = %2934
  %2938 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  %2939 = load float, ptr %2938, align 4, !tbaa !93
  %2940 = load ptr, ptr %20, align 8, !tbaa !5
  %2941 = getelementptr inbounds %struct.ImGuiContext, ptr %2940, i32 0, i32 8
  %2942 = load float, ptr %2941, align 8, !tbaa !45
  %2943 = fsub float %2939, %2942
  %2944 = load float, ptr %55, align 4, !tbaa !44
  %2945 = fcmp olt float %2943, %2944
  br i1 %2945, label %2946, label %2954

2946:                                             ; preds = %2937
  %2947 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  %2948 = load float, ptr %2947, align 4, !tbaa !93
  %2949 = load ptr, ptr %20, align 8, !tbaa !5
  %2950 = getelementptr inbounds %struct.ImGuiContext, ptr %2949, i32 0, i32 8
  %2951 = load float, ptr %2950, align 8, !tbaa !45
  %2952 = fsub float %2948, %2951
  %2953 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2952)
  store float %2953, ptr %55, align 4, !tbaa !44
  br label %2980

2954:                                             ; preds = %2937
  %2955 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  %2956 = load float, ptr %2955, align 4, !tbaa !93
  %2957 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2958 = load float, ptr %2957, align 4, !tbaa !93
  %2959 = load ptr, ptr %22, align 8, !tbaa !5
  %2960 = getelementptr inbounds %struct.ImGuiStyle, ptr %2959, i32 0, i32 12
  %2961 = getelementptr inbounds %struct.ImVec2, ptr %2960, i32 0, i32 1
  %2962 = load float, ptr %2961, align 4, !tbaa !94
  %2963 = fneg float %2962
  %2964 = call float @llvm.fmuladd.f32(float %2963, float 2.000000e+00, float %2958)
  %2965 = fsub float %2956, %2964
  %2966 = load float, ptr %55, align 4, !tbaa !44
  %2967 = fcmp oge float %2965, %2966
  br i1 %2967, label %2968, label %2979

2968:                                             ; preds = %2954
  %2969 = getelementptr inbounds %struct.ImVec2, ptr %138, i32 0, i32 1
  %2970 = load float, ptr %2969, align 4, !tbaa !93
  %2971 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2972 = load float, ptr %2971, align 4, !tbaa !93
  %2973 = fsub float %2970, %2972
  %2974 = load ptr, ptr %22, align 8, !tbaa !5
  %2975 = getelementptr inbounds %struct.ImGuiStyle, ptr %2974, i32 0, i32 12
  %2976 = getelementptr inbounds %struct.ImVec2, ptr %2975, i32 0, i32 1
  %2977 = load float, ptr %2976, align 4, !tbaa !94
  %2978 = call float @llvm.fmuladd.f32(float %2977, float 2.000000e+00, float %2973)
  store float %2978, ptr %55, align 4, !tbaa !44
  br label %2979

2979:                                             ; preds = %2968, %2954
  br label %2980

2980:                                             ; preds = %2979, %2946
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #14
  %2981 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 1
  %2982 = load float, ptr %2981, align 4, !tbaa !93
  %2983 = load ptr, ptr %22, align 8, !tbaa !5
  %2984 = getelementptr inbounds %struct.ImGuiStyle, ptr %2983, i32 0, i32 12
  %2985 = getelementptr inbounds %struct.ImVec2, ptr %2984, i32 0, i32 1
  %2986 = load float, ptr %2985, align 4, !tbaa !94
  %2987 = call float @llvm.fmuladd.f32(float %2986, float 2.000000e+00, float %2982)
  %2988 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2989 = load float, ptr %2988, align 4, !tbaa !93
  %2990 = fsub float %2987, %2989
  %2991 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2990, float noundef 0.000000e+00)
  store float %2991, ptr %150, align 4, !tbaa !44
  %2992 = load float, ptr %55, align 4, !tbaa !44
  %2993 = load float, ptr %150, align 4, !tbaa !44
  %2994 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %2992, float noundef 0.000000e+00, float noundef %2993)
  store float %2994, ptr %55, align 4, !tbaa !44
  %2995 = load ptr, ptr %38, align 8, !tbaa !5
  %2996 = getelementptr inbounds %struct.ImGuiWindow, ptr %2995, i32 0, i32 15
  %2997 = getelementptr inbounds %struct.ImVec2, ptr %2996, i32 0, i32 1
  %2998 = load float, ptr %2997, align 4, !tbaa !111
  %2999 = load float, ptr %55, align 4, !tbaa !44
  %3000 = fsub float %2998, %2999
  %3001 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %3002 = load float, ptr %3001, align 4, !tbaa !93
  %3003 = fadd float %3002, %3000
  store float %3003, ptr %3001, align 4, !tbaa !93
  %3004 = load float, ptr %55, align 4, !tbaa !44
  %3005 = load ptr, ptr %38, align 8, !tbaa !5
  %3006 = getelementptr inbounds %struct.ImGuiWindow, ptr %3005, i32 0, i32 15
  %3007 = getelementptr inbounds %struct.ImVec2, ptr %3006, i32 0, i32 1
  store float %3004, ptr %3007, align 4, !tbaa !111
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #14
  br label %3008

3008:                                             ; preds = %2980, %2934
  %3009 = load ptr, ptr %47, align 8, !tbaa !5
  %3010 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3009, i32 0, i32 13
  store i8 0, ptr %3010, align 4, !tbaa !155
  br label %3011

3011:                                             ; preds = %3008, %2873, %2870
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #14
  %3012 = load ptr, ptr %47, align 8, !tbaa !5
  %3013 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3012, i32 0, i32 10
  %3014 = load float, ptr %3013, align 8, !tbaa !119
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %151, float noundef %3014, float noundef 0.000000e+00)
  %3015 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3016 = trunc i8 %3015 to i1
  br i1 %3016, label %3017, label %3145

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

3058:                                             ; preds = %3130, %3017
  %3059 = load ptr, ptr %159, align 8, !tbaa !5
  %3060 = load ptr, ptr %153, align 8, !tbaa !5
  %3061 = icmp ult ptr %3059, %3060
  br i1 %3061, label %3063, label %3062

3062:                                             ; preds = %3058
  store i32 10, ptr %19, align 4
  br label %3143

3063:                                             ; preds = %3058
  %3064 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %3065 = load float, ptr %3064, align 4, !tbaa !93
  %3066 = getelementptr inbounds %struct.ImVec4, ptr %131, i32 0, i32 3
  %3067 = load float, ptr %3066, align 4, !tbaa !187
  %3068 = load ptr, ptr %20, align 8, !tbaa !5
  %3069 = getelementptr inbounds %struct.ImGuiContext, ptr %3068, i32 0, i32 8
  %3070 = load float, ptr %3069, align 8, !tbaa !45
  %3071 = fadd float %3067, %3070
  %3072 = fcmp ogt float %3065, %3071
  br i1 %3072, label %3073, label %3074

3073:                                             ; preds = %3063
  store i32 10, ptr %19, align 4
  br label %3143

3074:                                             ; preds = %3063
  %3075 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %3076 = load float, ptr %3075, align 4, !tbaa !93
  %3077 = getelementptr inbounds %struct.ImVec4, ptr %131, i32 0, i32 1
  %3078 = load float, ptr %3077, align 4, !tbaa !188
  %3079 = fcmp olt float %3076, %3078
  br i1 %3079, label %3080, label %3094

3080:                                             ; preds = %3074
  br label %3081

3081:                                             ; preds = %3092, %3080
  %3082 = load ptr, ptr %159, align 8, !tbaa !5
  %3083 = load ptr, ptr %153, align 8, !tbaa !5
  %3084 = icmp ult ptr %3082, %3083
  br i1 %3084, label %3085, label %3093

3085:                                             ; preds = %3081
  %3086 = load ptr, ptr %159, align 8, !tbaa !5
  %3087 = getelementptr inbounds i16, ptr %3086, i32 1
  store ptr %3087, ptr %159, align 8, !tbaa !5
  %3088 = load i16, ptr %3086, align 2, !tbaa !150
  %3089 = zext i16 %3088 to i32
  %3090 = icmp eq i32 %3089, 10
  br i1 %3090, label %3091, label %3092

3091:                                             ; preds = %3085
  br label %3093

3092:                                             ; preds = %3085
  br label %3081, !llvm.loop !189

3093:                                             ; preds = %3091, %3081
  br label %3130

3094:                                             ; preds = %3074
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #14
  %3095 = load ptr, ptr %159, align 8, !tbaa !5
  %3096 = load ptr, ptr %153, align 8, !tbaa !5
  %3097 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %3095, ptr noundef %3096, ptr noundef %159, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %3097, ptr %160, align 4
  %3098 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 0
  %3099 = load float, ptr %3098, align 4, !tbaa !95
  %3100 = fcmp ole float %3099, 0.000000e+00
  br i1 %3100, label %3101, label %3110

3101:                                             ; preds = %3094
  %3102 = load ptr, ptr %20, align 8, !tbaa !5
  %3103 = getelementptr inbounds %struct.ImGuiContext, ptr %3102, i32 0, i32 7
  %3104 = load ptr, ptr %3103, align 8, !tbaa !128
  %3105 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110) %3104, i16 noundef zeroext 32)
  %3106 = fmul float %3105, 5.000000e-01
  %3107 = fptosi float %3106 to i32
  %3108 = sitofp i32 %3107 to float
  %3109 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 0
  store float %3108, ptr %3109, align 4, !tbaa !95
  br label %3110

3110:                                             ; preds = %3101, %3094
  call void @llvm.lifetime.start.p0(i64 16, ptr %161) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #14
  %3111 = load float, ptr %155, align 4, !tbaa !44
  %3112 = load ptr, ptr %20, align 8, !tbaa !5
  %3113 = getelementptr inbounds %struct.ImGuiContext, ptr %3112, i32 0, i32 8
  %3114 = load float, ptr %3113, align 8, !tbaa !45
  %3115 = fsub float %3111, %3114
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %163, float noundef 0.000000e+00, float noundef %3115)
  %3116 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %157, ptr noundef nonnull align 4 dereferenceable(8) %163)
  store <2 x float> %3116, ptr %162, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #14
  %3117 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 0
  %3118 = load float, ptr %3117, align 4, !tbaa !95
  %3119 = load float, ptr %156, align 4, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %165, float noundef %3118, float noundef %3119)
  %3120 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %157, ptr noundef nonnull align 4 dereferenceable(8) %165)
  store <2 x float> %3120, ptr %164, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %161, ptr noundef nonnull align 4 dereferenceable(8) %162, ptr noundef nonnull align 4 dereferenceable(8) %164)
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %166) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %166, ptr noundef nonnull align 4 dereferenceable(16) %131)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %161, ptr noundef nonnull align 4 dereferenceable(16) %166)
  call void @llvm.lifetime.end.p0(i64 16, ptr %166) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %167) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %167, ptr noundef nonnull align 4 dereferenceable(16) %131)
  %3121 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %161, ptr noundef nonnull align 4 dereferenceable(16) %167)
  call void @llvm.lifetime.end.p0(i64 16, ptr %167) #14
  br i1 %3121, label %3122, label %3129

3122:                                             ; preds = %3110
  %3123 = load ptr, ptr %38, align 8, !tbaa !5
  %3124 = getelementptr inbounds %struct.ImGuiWindow, ptr %3123, i32 0, i32 72
  %3125 = load ptr, ptr %3124, align 8, !tbaa !190
  %3126 = getelementptr inbounds %struct.ImRect, ptr %161, i32 0, i32 0
  %3127 = getelementptr inbounds %struct.ImRect, ptr %161, i32 0, i32 1
  %3128 = load i32, ptr %154, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %3125, ptr noundef nonnull align 4 dereferenceable(8) %3126, ptr noundef nonnull align 4 dereferenceable(8) %3127, i32 noundef %3128, float noundef 0.000000e+00, i32 noundef 0)
  br label %3129

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

3130:                                             ; preds = %3129, %3093
  %3131 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %3132 = load float, ptr %3131, align 4, !tbaa !95
  %3133 = getelementptr inbounds %struct.ImVec2, ptr %151, i32 0, i32 0
  %3134 = load float, ptr %3133, align 4, !tbaa !95
  %3135 = fsub float %3132, %3134
  %3136 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  store float %3135, ptr %3136, align 4, !tbaa !95
  %3137 = load ptr, ptr %20, align 8, !tbaa !5
  %3138 = getelementptr inbounds %struct.ImGuiContext, ptr %3137, i32 0, i32 8
  %3139 = load float, ptr %3138, align 8, !tbaa !45
  %3140 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %3141 = load float, ptr %3140, align 4, !tbaa !93
  %3142 = fadd float %3141, %3139
  store float %3142, ptr %3140, align 4, !tbaa !93
  br label %3058, !llvm.loop !191

3143:                                             ; preds = %3073, %3062
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #14
  br label %3144

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

3145:                                             ; preds = %3144, %3011
  %3146 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3147 = trunc i8 %3146 to i1
  br i1 %3147, label %3155, label %3148

3148:                                             ; preds = %3145
  %3149 = load ptr, ptr %136, align 8, !tbaa !5
  %3150 = load ptr, ptr %135, align 8, !tbaa !5
  %3151 = ptrtoint ptr %3149 to i64
  %3152 = ptrtoint ptr %3150 to i64
  %3153 = sub i64 %3151, %3152
  %3154 = icmp slt i64 %3153, 2097152
  br i1 %3154, label %3155, label %3180

3155:                                             ; preds = %3148, %3145
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #14
  %3156 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3157 = trunc i8 %3156 to i1
  %3158 = zext i1 %3157 to i64
  %3159 = select i1 %3157, i32 1, i32 0
  %3160 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3159, float noundef 1.000000e+00)
  store i32 %3160, ptr %168, align 4, !tbaa !9
  %3161 = load ptr, ptr %38, align 8, !tbaa !5
  %3162 = getelementptr inbounds %struct.ImGuiWindow, ptr %3161, i32 0, i32 72
  %3163 = load ptr, ptr %3162, align 8, !tbaa !190
  %3164 = load ptr, ptr %20, align 8, !tbaa !5
  %3165 = getelementptr inbounds %struct.ImGuiContext, ptr %3164, i32 0, i32 7
  %3166 = load ptr, ptr %3165, align 8, !tbaa !128
  %3167 = load ptr, ptr %20, align 8, !tbaa !5
  %3168 = getelementptr inbounds %struct.ImGuiContext, ptr %3167, i32 0, i32 8
  %3169 = load float, ptr %3168, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #14
  %3170 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %151)
  store <2 x float> %3170, ptr %169, align 4
  %3171 = load i32, ptr %168, align 4, !tbaa !9
  %3172 = load ptr, ptr %135, align 8, !tbaa !5
  %3173 = load ptr, ptr %136, align 8, !tbaa !5
  %3174 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3175 = trunc i8 %3174 to i1
  br i1 %3175, label %3176, label %3177

3176:                                             ; preds = %3155
  br label %3178

3177:                                             ; preds = %3155
  br label %3178

3178:                                             ; preds = %3177, %3176
  %3179 = phi ptr [ null, %3176 ], [ %131, %3177 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3163, ptr noundef %3166, float noundef %3169, ptr noundef nonnull align 4 dereferenceable(8) %169, i32 noundef %3171, ptr noundef %3172, ptr noundef %3173, float noundef 0.000000e+00, ptr noundef %3179)
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #14
  br label %3180

3180:                                             ; preds = %3178, %3148
  %3181 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3182 = trunc i8 %3181 to i1
  br i1 %3182, label %3183, label %3267

3183:                                             ; preds = %3180
  %3184 = load ptr, ptr %21, align 8, !tbaa !5
  %3185 = getelementptr inbounds %struct.ImGuiIO, ptr %3184, i32 0, i32 3
  %3186 = load float, ptr %3185, align 8, !tbaa !192
  %3187 = load ptr, ptr %47, align 8, !tbaa !5
  %3188 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3187, i32 0, i32 12
  %3189 = load float, ptr %3188, align 8, !tbaa !193
  %3190 = fadd float %3189, %3186
  store float %3190, ptr %3188, align 8, !tbaa !193
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #14
  %3191 = load ptr, ptr %20, align 8, !tbaa !5
  %3192 = getelementptr inbounds %struct.ImGuiContext, ptr %3191, i32 0, i32 3
  %3193 = getelementptr inbounds %struct.ImGuiIO, ptr %3192, i32 0, i32 21
  %3194 = load i8, ptr %3193, align 1, !tbaa !194, !range !40, !noundef !41
  %3195 = trunc i8 %3194 to i1
  br i1 %3195, label %3196, label %3207

3196:                                             ; preds = %3183
  %3197 = load ptr, ptr %47, align 8, !tbaa !5
  %3198 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3197, i32 0, i32 12
  %3199 = load float, ptr %3198, align 8, !tbaa !193
  %3200 = fcmp ole float %3199, 0.000000e+00
  br i1 %3200, label %3207, label %3201

3201:                                             ; preds = %3196
  %3202 = load ptr, ptr %47, align 8, !tbaa !5
  %3203 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3202, i32 0, i32 12
  %3204 = load float, ptr %3203, align 8, !tbaa !193
  %3205 = call float @fmodf(float noundef %3204, float noundef 0x3FF3333340000000) #14
  %3206 = fcmp ole float %3205, 0x3FE99999A0000000
  br label %3207

3207:                                             ; preds = %3201, %3196, %3183
  %3208 = phi i1 [ true, %3196 ], [ true, %3183 ], [ %3206, %3201 ]
  %3209 = zext i1 %3208 to i8
  store i8 %3209, ptr %170, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #14
  %3210 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %138)
  store <2 x float> %3210, ptr %173, align 4
  %3211 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %173, ptr noundef nonnull align 4 dereferenceable(8) %151)
  store <2 x float> %3211, ptr %172, align 4
  %3212 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %172)
  store <2 x float> %3212, ptr %171, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %174) #14
  %3213 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 0
  %3214 = load float, ptr %3213, align 4, !tbaa !95
  %3215 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 1
  %3216 = load float, ptr %3215, align 4, !tbaa !93
  %3217 = load ptr, ptr %20, align 8, !tbaa !5
  %3218 = getelementptr inbounds %struct.ImGuiContext, ptr %3217, i32 0, i32 8
  %3219 = load float, ptr %3218, align 8, !tbaa !45
  %3220 = fsub float %3216, %3219
  %3221 = fadd float %3220, 5.000000e-01
  %3222 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 0
  %3223 = load float, ptr %3222, align 4, !tbaa !95
  %3224 = fadd float %3223, 1.000000e+00
  %3225 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 1
  %3226 = load float, ptr %3225, align 4, !tbaa !93
  %3227 = fsub float %3226, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %174, float noundef %3214, float noundef %3221, float noundef %3224, float noundef %3227)
  %3228 = load i8, ptr %170, align 1, !tbaa !42, !range !40, !noundef !41
  %3229 = trunc i8 %3228 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %175) #14
  br i1 %3229, label %3230, label %3232

3230:                                             ; preds = %3207
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %175, ptr noundef nonnull align 4 dereferenceable(16) %131)
  %3231 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %174, ptr noundef nonnull align 4 dereferenceable(16) %175)
  br label %3232

3232:                                             ; preds = %3230, %3207
  %3233 = phi i1 [ false, %3207 ], [ %3231, %3230 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #14
  br i1 %3233, label %3234, label %3241

3234:                                             ; preds = %3232
  %3235 = load ptr, ptr %38, align 8, !tbaa !5
  %3236 = getelementptr inbounds %struct.ImGuiWindow, ptr %3235, i32 0, i32 72
  %3237 = load ptr, ptr %3236, align 8, !tbaa !190
  %3238 = getelementptr inbounds %struct.ImRect, ptr %174, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #14
  %3239 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %174)
  store <2 x float> %3239, ptr %176, align 4
  %3240 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %3237, ptr noundef nonnull align 4 dereferenceable(8) %3238, ptr noundef nonnull align 4 dereferenceable(8) %176, i32 noundef %3240, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #14
  br label %3241

3241:                                             ; preds = %3234, %3232
  %3242 = load i8, ptr %25, align 1, !tbaa !42, !range !40, !noundef !41
  %3243 = trunc i8 %3242 to i1
  br i1 %3243, label %3266, label %3244

3244:                                             ; preds = %3241
  %3245 = load ptr, ptr %20, align 8, !tbaa !5
  %3246 = getelementptr inbounds %struct.ImGuiContext, ptr %3245, i32 0, i32 200
  %3247 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3246, i32 0, i32 0
  store i8 1, ptr %3247, align 8, !tbaa !195
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #14
  %3248 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 0
  %3249 = load float, ptr %3248, align 4, !tbaa !95
  %3250 = fsub float %3249, 1.000000e+00
  %3251 = getelementptr inbounds %struct.ImVec2, ptr %171, i32 0, i32 1
  %3252 = load float, ptr %3251, align 4, !tbaa !93
  %3253 = load ptr, ptr %20, align 8, !tbaa !5
  %3254 = getelementptr inbounds %struct.ImGuiContext, ptr %3253, i32 0, i32 8
  %3255 = load float, ptr %3254, align 8, !tbaa !45
  %3256 = fsub float %3252, %3255
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %177, float noundef %3250, float noundef %3256)
  %3257 = load ptr, ptr %20, align 8, !tbaa !5
  %3258 = getelementptr inbounds %struct.ImGuiContext, ptr %3257, i32 0, i32 200
  %3259 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3258, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %3259, ptr align 4 %177, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #14
  %3260 = load ptr, ptr %20, align 8, !tbaa !5
  %3261 = getelementptr inbounds %struct.ImGuiContext, ptr %3260, i32 0, i32 8
  %3262 = load float, ptr %3261, align 8, !tbaa !45
  %3263 = load ptr, ptr %20, align 8, !tbaa !5
  %3264 = getelementptr inbounds %struct.ImGuiContext, ptr %3263, i32 0, i32 200
  %3265 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3264, i32 0, i32 2
  store float %3262, ptr %3265, align 4, !tbaa !196
  br label %3266

3266:                                             ; preds = %3244, %3241
  call void @llvm.lifetime.end.p0(i64 16, ptr %174) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #14
  br label %3267

3267:                                             ; preds = %3266, %3180
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #14
  br label %3342

3268:                                             ; preds = %2682
  %3269 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3270 = trunc i8 %3269 to i1
  br i1 %3270, label %3271, label %3281

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

3281:                                             ; preds = %3268
  %3282 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3283 = trunc i8 %3282 to i1
  br i1 %3283, label %3297, label %3284

3284:                                             ; preds = %3281
  %3285 = load ptr, ptr %20, align 8, !tbaa !5
  %3286 = getelementptr inbounds %struct.ImGuiContext, ptr %3285, i32 0, i32 46
  %3287 = load i32, ptr %3286, align 4, !tbaa !106
  %3288 = load i32, ptr %29, align 4, !tbaa !9
  %3289 = icmp eq i32 %3287, %3288
  br i1 %3289, label %3290, label %3297

3290:                                             ; preds = %3284
  %3291 = load ptr, ptr %135, align 8, !tbaa !5
  %3292 = load ptr, ptr %47, align 8, !tbaa !5
  %3293 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3292, i32 0, i32 2
  %3294 = load i32, ptr %3293, align 8, !tbaa !117
  %3295 = sext i32 %3294 to i64
  %3296 = getelementptr inbounds i8, ptr %3291, i64 %3295
  store ptr %3296, ptr %136, align 8, !tbaa !5
  br label %3306

3297:                                             ; preds = %3284, %3281
  %3298 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3299 = trunc i8 %3298 to i1
  br i1 %3299, label %3305, label %3300

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

3305:                                             ; preds = %3300, %3297
  br label %3306

3306:                                             ; preds = %3305, %3290
  br label %3307

3307:                                             ; preds = %3306, %3271
  %3308 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3309 = trunc i8 %3308 to i1
  br i1 %3309, label %3317, label %3310

3310:                                             ; preds = %3307
  %3311 = load ptr, ptr %136, align 8, !tbaa !5
  %3312 = load ptr, ptr %135, align 8, !tbaa !5
  %3313 = ptrtoint ptr %3311 to i64
  %3314 = ptrtoint ptr %3312 to i64
  %3315 = sub i64 %3313, %3314
  %3316 = icmp slt i64 %3315, 2097152
  br i1 %3316, label %3317, label %3341

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

3337:                                             ; preds = %3317
  br label %3339

3338:                                             ; preds = %3317
  br label %3339

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

3341:                                             ; preds = %3339, %3310
  br label %3342

3342:                                             ; preds = %3341, %3267
  %3343 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3344 = trunc i8 %3343 to i1
  br i1 %3344, label %3345, label %3349

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

3348:                                             ; preds = %3345
  call void @_ZN5ImGui7PopFontEv()
  br label %3349

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

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

3385:                                             ; preds = %3352
  %3386 = load i32, ptr %29, align 4, !tbaa !9
  %3387 = load ptr, ptr %20, align 8, !tbaa !5
  %3388 = getelementptr inbounds %struct.ImGuiContext, ptr %3387, i32 0, i32 74
  %3389 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3388, i32 0, i32 0
  store i32 %3386, ptr %3389, align 8, !tbaa !199
  %3390 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 1
  %3391 = load i32, ptr %3390, align 4, !tbaa !200
  %3392 = load ptr, ptr %20, align 8, !tbaa !5
  %3393 = getelementptr inbounds %struct.ImGuiContext, ptr %3392, i32 0, i32 74
  %3394 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3393, i32 0, i32 1
  store i32 %3391, ptr %3394, align 4, !tbaa !201
  %3395 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %41, i32 0, i32 2
  %3396 = load i32, ptr %3395, align 4, !tbaa !198
  %3397 = load ptr, ptr %20, align 8, !tbaa !5
  %3398 = getelementptr inbounds %struct.ImGuiContext, ptr %3397, i32 0, i32 74
  %3399 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3398, i32 0, i32 2
  store i32 %3396, ptr %3399, align 8, !tbaa !97
  br label %3400

3400:                                             ; preds = %3385, %3352
  call void @llvm.lifetime.end.p0(i64 4, ptr %181) #14
  br label %3401

3401:                                             ; preds = %3400, %3349
  %3402 = load ptr, ptr %20, align 8, !tbaa !5
  %3403 = getelementptr inbounds %struct.ImGuiContext, ptr %3402, i32 0, i32 212
  %3404 = load i8, ptr %3403, align 4, !tbaa !202, !range !40, !noundef !41
  %3405 = trunc i8 %3404 to i1
  br i1 %3405, label %3406, label %3415

3406:                                             ; preds = %3401
  %3407 = load i8, ptr %26, align 1, !tbaa !42, !range !40, !noundef !41
  %3408 = trunc i8 %3407 to i1
  br i1 %3408, label %3409, label %3412

3409:                                             ; preds = %3406
  %3410 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3411 = trunc i8 %3410 to i1
  br i1 %3411, label %3412, label %3415

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

3415:                                             ; preds = %3412, %3409, %3401
  %3416 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3417 = load float, ptr %3416, align 4, !tbaa !95
  %3418 = fcmp ogt float %3417, 0.000000e+00
  br i1 %3418, label %3419, label %3438

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

3438:                                             ; preds = %3419, %3415
  %3439 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3440 = trunc i8 %3439 to i1
  br i1 %3440, label %3441, label %3447

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

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

3447:                                             ; preds = %3445, %3441, %3438
  %3448 = load ptr, ptr %20, align 8, !tbaa !5
  %3449 = load i32, ptr %15, align 4, !tbaa !9
  %3450 = and i32 %3449, 32
  %3451 = icmp ne i32 %3450, 0
  br i1 %3451, label %3452, label %3455

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

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

3458:                                             ; preds = %3455, %3452
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  br label %3459

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

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

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

3467:                                             ; preds = %1353
  unreachable
}

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

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

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

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

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

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

declare void @_ZN5ImGui8EndChildEv() #5

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef) #8

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

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

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) #5

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef, i1 noundef zeroext) #5

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

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

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

declare noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv() #5

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #5

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #5

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #5

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) #5

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() #5

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) #10

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110), i16 noundef zeroext) #11 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #10 align 2

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

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

; Function Attrs: nounwind
declare float @fmodf(float noundef, float noundef) #13

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

declare void @_ZN5ImGui7PopFontEv() #5

declare void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr)

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !15, i64 147}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !14, i64 72, !14, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !13, i64 92, !13, i64 100, !13, i64 108, !13, i64 116, !13, i64 124, !13, i64 132, !15, i64 140, !15, i64 141, !15, i64 142, !15, i64 143, !15, i64 144, !15, i64 145, !15, i64 146, !15, i64 147, !15, i64 148, !15, i64 149, !15, i64 150, !15, i64 151, !15, i64 152, !7, i64 153, !16, i64 154, !16, i64 156, !16, i64 158, !16, i64 160, !10, i64 164, !7, i64 168, !7, i64 169, !7, i64 170, !15, i64 171, !10, i64 172, !7, i64 176, !7, i64 177, !7, i64 178, !7, i64 179, !10, i64 180, !10, i64 181, !10, i64 182, !13, i64 184, !13, i64 192, !17, i64 200, !18, i64 216, !24, i64 448, !24, i64 464, !24, i64 480, !24, i64 496, !24, i64 512, !24, i64 528, !24, i64 544, !25, i64 560, !25, i64 564, !10, i64 568, !14, i64 572, !14, i64 576, !26, i64 584, !28, i64 600, !14, i64 616, !10, i64 620, !6, i64 624, !29, i64 632, !6, i64 832, !6, i64 840, !6, i64 848, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !7, i64 888, !7, i64 896, !10, i64 928, !10, i64 932, !15, i64 936}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!18 = !{!"_ZTS19ImGuiWindowTempData", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !14, i64 56, !14, i64 60, !19, i64 64, !19, i64 68, !19, i64 72, !13, i64 76, !20, i64 84, !16, i64 88, !16, i64 90, !10, i64 92, !15, i64 96, !15, i64 97, !15, i64 98, !13, i64 100, !21, i64 108, !10, i64 136, !10, i64 140, !22, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !14, i64 188, !14, i64 192, !23, i64 200, !23, i64 216}
!19 = !{!"_ZTS6ImVec1", !14, i64 0}
!20 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!21 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !7, i64 18}
!22 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!25 = !{!"_ZTS8ImVec2ih", !16, i64 0, !16, i64 2}
!26 = !{!"_ZTS12ImGuiStorage", !27, i64 0}
!27 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS10ImDrawList", !30, i64 0, !31, i64 16, !32, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !33, i64 88, !34, i64 104, !35, i64 120, !36, i64 136, !38, i64 168, !14, i64 192}
!30 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS15ImDrawCmdHeader", !37, i64 0, !6, i64 16, !10, i64 24}
!37 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!38 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !39, i64 8}
!39 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!15, !15, i64 0}
!43 = !{i64 0, i64 4, !44, i64 4, i64 4, !44}
!44 = !{!14, !14, i64 0}
!45 = !{!46, !14, i64 15256}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !48, i64 14168, !48, i64 14184, !49, i64 14200, !6, i64 15248, !14, i64 15256, !14, i64 15260, !50, i64 15264, !51, i64 15776, !10, i64 15784, !10, i64 15788, !10, i64 15792, !15, i64 15796, !15, i64 15797, !15, i64 15798, !15, i64 15799, !15, i64 15800, !6, i64 15808, !22, i64 15816, !22, i64 15832, !22, i64 15848, !52, i64 15864, !26, i64 15880, !10, i64 15896, !13, i64 15900, !6, i64 15912, !6, i64 15920, !6, i64 15928, !6, i64 15936, !6, i64 15944, !13, i64 15952, !14, i64 15960, !10, i64 15964, !10, i64 15968, !10, i64 15972, !15, i64 15976, !15, i64 15977, !15, i64 15978, !15, i64 15979, !14, i64 15980, !14, i64 15984, !10, i64 15988, !10, i64 15992, !14, i64 15996, !15, i64 16000, !15, i64 16001, !15, i64 16002, !15, i64 16003, !15, i64 16004, !15, i64 16005, !15, i64 16006, !10, i64 16008, !10, i64 16012, !53, i64 16016, !13, i64 16036, !6, i64 16048, !54, i64 16056, !10, i64 16060, !10, i64 16064, !15, i64 16068, !15, i64 16069, !6, i64 16072, !10, i64 16080, !14, i64 16084, !10, i64 16088, !55, i64 16092, !56, i64 16112, !57, i64 16176, !58, i64 16288, !59, i64 16304, !60, i64 16320, !17, i64 16336, !61, i64 16352, !62, i64 16368, !63, i64 16384, !63, i64 16400, !10, i64 16416, !64, i64 16424, !6, i64 16440, !10, i64 16448, !10, i64 16452, !10, i64 16456, !10, i64 16460, !10, i64 16464, !10, i64 16468, !10, i64 16472, !10, i64 16476, !10, i64 16480, !10, i64 16484, !10, i64 16488, !10, i64 16492, !54, i64 16496, !20, i64 16500, !15, i64 16504, !15, i64 16505, !15, i64 16506, !15, i64 16507, !15, i64 16508, !15, i64 16509, !15, i64 16510, !10, i64 16512, !24, i64 16516, !15, i64 16532, !15, i64 16533, !15, i64 16534, !10, i64 16536, !10, i64 16540, !10, i64 16544, !10, i64 16548, !10, i64 16552, !10, i64 16556, !24, i64 16560, !24, i64 16576, !10, i64 16592, !10, i64 16596, !10, i64 16600, !65, i64 16608, !65, i64 16656, !65, i64 16704, !65, i64 16752, !6, i64 16800, !6, i64 16808, !6, i64 16816, !14, i64 16824, !14, i64 16828, !15, i64 16832, !14, i64 16836, !10, i64 16840, !15, i64 16844, !15, i64 16845, !15, i64 16846, !10, i64 16848, !10, i64 16852, !10, i64 16856, !66, i64 16864, !24, i64 16928, !10, i64 16944, !10, i64 16948, !14, i64 16952, !10, i64 16956, !10, i64 16960, !10, i64 16964, !10, i64 16968, !67, i64 16976, !7, i64 16992, !10, i64 17008, !68, i64 17016, !6, i64 17032, !10, i64 17040, !69, i64 17048, !70, i64 17064, !23, i64 17104, !39, i64 17120, !6, i64 17136, !72, i64 17144, !74, i64 17184, !75, i64 17200, !13, i64 17216, !76, i64 17224, !80, i64 20944, !10, i64 21056, !10, i64 21060, !14, i64 21064, !14, i64 21068, !10, i64 21072, !37, i64 21076, !82, i64 21092, !14, i64 21140, !15, i64 21144, !15, i64 21145, !14, i64 21148, !14, i64 21152, !14, i64 21156, !14, i64 21160, !16, i64 21164, !16, i64 21166, !14, i64 21168, !77, i64 21176, !17, i64 21192, !83, i64 21208, !83, i64 21224, !7, i64 21240, !15, i64 21241, !14, i64 21244, !84, i64 21248, !85, i64 21264, !86, i64 21280, !87, i64 21296, !88, i64 21312, !10, i64 21328, !15, i64 21332, !89, i64 21336, !6, i64 21344, !84, i64 21352, !6, i64 21368, !6, i64 21376, !14, i64 21384, !15, i64 21388, !10, i64 21392, !10, i64 21396, !10, i64 21400, !15, i64 21404, !10, i64 21408, !90, i64 21412, !91, i64 21432, !7, i64 21464, !10, i64 21944, !10, i64 21948, !14, i64 21952, !10, i64 21956, !10, i64 21960, !10, i64 21964, !7, i64 21968}
!47 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !6, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !6, i64 64, !6, i64 72, !14, i64 80, !15, i64 84, !6, i64 88, !13, i64 96, !15, i64 104, !15, i64 105, !15, i64 106, !15, i64 107, !15, i64 108, !15, i64 109, !15, i64 110, !14, 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, !6, i64 192, !15, i64 200, !15, i64 201, !15, i64 202, !15, i64 203, !15, i64 204, !15, i64 205, !15, i64 206, !14, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !13, i64 232, !7, i64 240, !7, i64 2820, !13, i64 3332, !7, i64 3340, !14, i64 3348, !14, i64 3352, !15, i64 3356, !15, i64 3357, !15, i64 3358, !15, i64 3359, !7, i64 3360, !10, i64 3440, !10, i64 3444, !7, i64 3448, !15, i64 13768, !13, i64 13772, !7, i64 13780, !7, i64 13824, !7, i64 13864, !7, i64 13869, !7, i64 13874, !7, i64 13884, !7, i64 13894, !7, i64 13899, !7, i64 13904, !7, i64 13912, !7, i64 13932, !7, i64 13952, !7, i64 13972, !7, i64 14052, !14, i64 14132, !15, i64 14136, !7, i64 14137, !15, i64 14138, !16, i64 14140, !31, i64 14144}
!48 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!49 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !14, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !13, i64 24, !13, i64 32, !10, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !13, i64 60, !14, i64 68, !14, i64 72, !13, i64 76, !13, i64 84, !13, i64 92, !13, i64 100, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !14, i64 140, !14, i64 144, !10, i64 148, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !14, i64 184, !15, i64 188, !15, i64 189, !15, i64 190, !14, i64 192, !14, i64 196, !7, i64 200}
!50 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !37, i64 28, !10, i64 44, !7, i64 48, !14, i64 432, !7, i64 436, !6, i64 504}
!51 = !{!"double", !7, i64 0}
!52 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS10ImBitArrayILi133ELin512EE", !7, i64 0}
!54 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!55 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !15, i64 16}
!56 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !24, i64 12, !24, i64 28, !24, i64 44}
!57 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !15, i64 56, !24, i64 60, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100}
!58 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !24, i64 16, !10, i64 32, !14, i64 36, !14, i64 40, !14, i64 44}
!66 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !15, i64 57, !15, i64 58}
!67 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS6ImPoolI10ImGuiTableE", !71, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!71 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !73, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!73 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !31, i64 16, !77, i64 32, !77, i64 48, !15, i64 64, !10, i64 68, !14, i64 72, !78, i64 76, !14, i64 3704, !15, i64 3708, !15, i64 3709, !15, i64 3710, !10, i64 3712}
!77 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!78 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !14, i64 28, !79, i64 32}
!79 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!80 = !{!"_ZTS6ImFont", !23, i64 0, !14, i64 16, !14, i64 20, !31, i64 24, !81, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !16, i64 80, !16, i64 82, !16, i64 84, !16, i64 86, !15, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !10, i64 104, !7, i64 108}
!81 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!82 = !{!"_ZTS21ImGuiComboPreviewData", !24, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!83 = !{!"_ZTS20ImGuiPlatformImeData", !15, i64 0, !13, i64 4, !14, i64 12}
!84 = !{!"_ZTS15ImGuiTextBuffer", !77, i64 0}
!85 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!86 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !77, i64 0}
!87 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !77, i64 0}
!88 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!89 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!90 = !{!"_ZTS18ImGuiMetricsConfig", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !15, i64 4, !15, i64 5, !10, i64 8, !10, i64 12}
!91 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !92, i64 16}
!92 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!93 = !{!13, !14, i64 4}
!94 = !{!49, !14, i64 64}
!95 = !{!13, !14, i64 0}
!96 = !{!49, !14, i64 84}
!97 = !{!46, !10, i64 16120}
!98 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !44, i64 16, i64 4, !44, i64 20, i64 4, !44, i64 24, i64 4, !44, i64 28, i64 4, !44, i64 32, i64 4, !44, i64 36, i64 4, !44, i64 40, i64 4, !44, i64 44, i64 4, !44, i64 48, i64 4, !44, i64 52, i64 4, !44, i64 56, i64 4, !44}
!99 = !{!49, !14, i64 68}
!100 = !{!49, !14, i64 72}
!101 = !{!46, !6, i64 15912}
!102 = !{!12, !20, i64 300}
!103 = !{!12, !16, i64 306}
!104 = !{!12, !14, i64 132}
!105 = !{!46, !10, i64 16840}
!106 = !{!46, !10, i64 15988}
!107 = !{!46, !10, i64 16468}
!108 = !{!46, !10, i64 16456}
!109 = !{!46, !54, i64 16496}
!110 = !{!46, !10, i64 16064}
!111 = !{!12, !14, i64 96}
!112 = !{!76, !7, i64 99}
!113 = !{!76, !6, i64 56}
!114 = !{!76, !15, i64 64}
!115 = !{!76, !6, i64 24}
!116 = !{!76, !10, i64 4}
!117 = !{!76, !10, i64 8}
!118 = !{!76, !10, i64 0}
!119 = !{!76, !14, i64 72}
!120 = !{!46, !10, i64 16472}
!121 = !{!47, !15, i64 3356}
!122 = !{!76, !7, i64 88}
!123 = !{!46, !10, i64 16008}
!124 = !{!46, !10, i64 16012}
!125 = !{!76, !10, i64 16}
!126 = !{!76, !6, i64 40}
!127 = !{!7, !7, i64 0}
!128 = !{!46, !6, i64 15248}
!129 = !{!80, !14, i64 20}
!130 = !{!80, !14, i64 92}
!131 = !{!80, !14, i64 96}
!132 = !{!80, !14, i64 100}
!133 = !{!80, !6, i64 64}
!134 = !{!80, !6, i64 56}
!135 = !{!136, !14, i64 4}
!136 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 0, !10, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36}
!137 = !{!80, !14, i64 16}
!138 = !{!76, !15, i64 3710}
!139 = !{!76, !10, i64 68}
!140 = !{!76, !10, i64 3712}
!141 = !{!46, !15, i64 16001}
!142 = !{!46, !10, i64 21964}
!143 = !{!47, !14, i64 3332}
!144 = !{!24, !14, i64 0}
!145 = !{!49, !14, i64 60}
!146 = !{!47, !14, i64 3336}
!147 = !{!12, !14, i64 220}
!148 = !{!47, !15, i64 105}
!149 = !{!76, !15, i64 3709}
!150 = !{!16, !16, i64 0}
!151 = !{!47, !15, i64 3357}
!152 = !{!76, !10, i64 76}
!153 = !{!76, !10, i64 80}
!154 = !{!76, !10, i64 84}
!155 = !{!76, !15, i64 3708}
!156 = !{!47, !14, i64 232}
!157 = !{!47, !14, i64 236}
!158 = !{!47, !15, i64 3358}
!159 = !{!47, !15, i64 3359}
!160 = !{!47, !10, i64 14144}
!161 = distinct !{!161, !162}
!162 = !{!"llvm.loop.mustprogress"}
!163 = !{!46, !15, i64 16000}
!164 = !{!47, !10, i64 3440}
!165 = !{!76, !10, i64 92}
!166 = !{!46, !15, i64 113}
!167 = !{!47, !6, i64 168}
!168 = distinct !{!168, !162}
!169 = !{!76, !10, i64 48}
!170 = !{!31, !6, i64 8}
!171 = !{!31, !10, i64 0}
!172 = !{!76, !10, i64 32}
!173 = !{!174, !10, i64 0}
!174 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !6, i64 8, !16, i64 16, !10, i64 20, !6, i64 24, !10, i64 32, !10, i64 36, !15, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!175 = !{!174, !10, i64 4}
!176 = !{!174, !6, i64 8}
!177 = !{!174, !10, i64 20}
!178 = !{!174, !6, i64 24}
!179 = !{!174, !10, i64 32}
!180 = !{!174, !10, i64 36}
!181 = !{!174, !15, i64 40}
!182 = !{!174, !10, i64 44}
!183 = !{!174, !10, i64 48}
!184 = !{!174, !10, i64 52}
!185 = !{!24, !14, i64 4}
!186 = distinct !{!186, !162}
!187 = !{!37, !14, i64 12}
!188 = !{!37, !14, i64 4}
!189 = distinct !{!189, !162}
!190 = !{!12, !6, i64 624}
!191 = distinct !{!191, !162}
!192 = !{!47, !14, i64 16}
!193 = !{!76, !14, i64 3704}
!194 = !{!46, !15, i64 115}
!195 = !{!46, !15, i64 21208}
!196 = !{!46, !14, i64 21220}
!197 = !{!46, !10, i64 16088}
!198 = !{!56, !10, i64 8}
!199 = !{!46, !10, i64 16112}
!200 = !{!56, !10, i64 4}
!201 = !{!46, !10, i64 16116}
!202 = !{!46, !15, i64 21332}
!203 = !{!24, !14, i64 8}


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

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

@GImGui = external local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [94 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.59 = 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.60 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no = external hidden unnamed_addr constant [2 x i32], align 4

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #3 align 2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) local_unnamed_addr #5

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #5

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

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

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) local_unnamed_addr #5

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #11 align 2

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

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

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

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #5

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

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

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) local_unnamed_addr #5

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

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

declare void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #5

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #5

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

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

declare void @_Z9ImStrncpyPcPKcm(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.thread1089:                                      ; preds = %205
  %brmerge1090 = select i1 %187, i1 true, i1 %207
  %217 = select i1 %brmerge1090, i1 true, i1 %181
  %spec.select10791092 = select i1 %217, i1 true, i1 %165
  %218 = select i1 %spec.select10791092, i1 true, i1 %206
  br i1 %218, label %219, label %.thread1097.thread

219:                                              ; preds = %.thread1089, %209
  %spec.select10791096 = phi i1 [ %spec.select10791092, %.thread1089 ], [ %spec.select1079, %209 ]
  %220 = phi i1 [ false, %.thread1089 ], [ %214, %209 ]
  %221 = load i32, ptr %166, align 4, !tbaa !102
  %.not949 = icmp ne i32 %221, %89
  %brmerge983 = select i1 %.not949, i1 true, i1 %220
  br i1 %brmerge983, label %223, label %.thread1097

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

223:                                              ; preds = %219, %222
  %224 = phi i8 [ 1, %219 ], [ 0, %222 ]
  %spec.select10791094 = phi i1 [ %spec.select10791096, %219 ], [ false, %222 ]
  %225 = phi i1 [ %220, %219 ], [ true, %222 ]
  %226 = getelementptr inbounds i8, ptr %77, i64 17224
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %226)
  %227 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16
  %228 = trunc i64 %227 to i32
  %229 = getelementptr inbounds i8, ptr %77, i64 17272
  %230 = add nsw i32 %228, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %229, i32 noundef %230)
  %231 = getelementptr inbounds i8, ptr %77, i64 17280
  %232 = load ptr, ptr %231, align 8, !tbaa !110
  %233 = sext i32 %230 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %232, ptr nonnull align 1 %2, i64 %233, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #15
  store ptr null, ptr %18, align 8, !tbaa !40
  %234 = getelementptr inbounds i8, ptr %77, i64 17240
  %235 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %234, i32 noundef %235)
  %236 = getelementptr inbounds i8, ptr %77, i64 17256
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %236, i32 noundef 0)
  %237 = getelementptr inbounds i8, ptr %77, i64 17288
  store i8 0, ptr %237, align 8, !tbaa !111
  %238 = getelementptr inbounds i8, ptr %77, i64 17248
  %239 = load ptr, ptr %238, align 8, !tbaa !112
  %240 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %239, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %18)
  %241 = getelementptr inbounds i8, ptr %77, i64 17228
  store i32 %240, ptr %241, align 4, !tbaa !113
  %242 = load ptr, ptr %18, align 8, !tbaa !40
  %243 = ptrtoint ptr %242 to i64
  %244 = ptrtoint ptr %2 to i64
  %245 = sub i64 %243, %244
  %246 = trunc i64 %245 to i32
  %247 = getelementptr inbounds i8, ptr %77, i64 17232
  store i32 %246, ptr %247, align 8, !tbaa !114
  %248 = load i32, ptr %226, align 8, !tbaa !115
  %249 = icmp ne i32 %248, %89
  %.not951 = select i1 %249, i1 true, i1 %225
  br i1 %.not951, label %251, label %250

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.thread1097.thread:                               ; preds = %222, %.thread1089
  %278 = load i32, ptr %166, align 4, !tbaa !102
  br label %293

.thread1097:                                      ; preds = %219, %277
  %279 = phi i8 [ %224, %277 ], [ 1, %219 ]
  %spec.select10791093 = phi i1 [ %spec.select10791094, %277 ], [ %spec.select10791096, %219 ]
  %.3876 = phi i8 [ %.2875, %277 ], [ 0, %219 ]
  %.0868 = phi ptr [ %226, %277 ], [ %163, %219 ]
  %280 = load i32, ptr %166, align 4, !tbaa !102
  %.not955 = icmp ne i32 %280, %89
  %brmerge986.not = and i1 %spec.select10791093, %.not955
  br i1 %brmerge986.not, label %281, label %293

281:                                              ; preds = %.thread1097
  %.not956 = icmp eq ptr %.0868, null
  br i1 %.not956, label %.critedge, label %282

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

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

285:                                              ; preds = %282
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %89, ptr noundef nonnull %56)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %89, ptr noundef nonnull %56)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %56)
  %286 = getelementptr inbounds i8, ptr %77, i64 16008
  %brmerge987.not = icmp eq i32 %69, 0
  %spec.select.v = select i1 %brmerge987.not, i32 3, i32 15
  %287 = load <2 x i32>, ptr %286, align 8, !tbaa !94
  %288 = insertelement <2 x i32> <i32 poison, i32 2>, i32 %spec.select.v, i64 0
  %289 = or <2 x i32> %287, %288
  store <2 x i32> %289, ptr %286, align 8, !tbaa !94
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 519)
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 520)
  br i1 %68, label %290, label %291

290:                                              ; preds = %285
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 517)
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 518)
  br label %291

291:                                              ; preds = %290, %285
  %.not957 = icmp eq i32 %74, 0
  br i1 %.not957, label %.thread1100, label %292

292:                                              ; preds = %291
  call void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef 512)
  br label %.thread1100

293:                                              ; preds = %.thread1097.thread, %.thread1097
  %294 = phi i32 [ %278, %.thread1097.thread ], [ %280, %.thread1097 ]
  %.08681178 = phi ptr [ %163, %.thread1097.thread ], [ %.0868, %.thread1097 ]
  %.38761177 = phi i8 [ 0, %.thread1097.thread ], [ %.3876, %.thread1097 ]
  %295 = phi i8 [ 0, %.thread1097.thread ], [ %279, %.thread1097 ]
  %296 = icmp eq i32 %294, %89
  %297 = icmp eq ptr %.08681178, null
  %or.cond5 = and i1 %297, %296
  br i1 %or.cond5, label %298, label %.thread1100

298:                                              ; preds = %293
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %.thread1100

.thread1100:                                      ; preds = %292, %291, %298, %293
  %.08681179 = phi ptr [ %.0868, %292 ], [ %.0868, %291 ], [ null, %298 ], [ %.08681178, %293 ]
  %.38761176 = phi i8 [ %.3876, %292 ], [ %.3876, %291 ], [ %.38761177, %298 ], [ %.38761177, %293 ]
  %299 = phi i8 [ %279, %292 ], [ %279, %291 ], [ %295, %298 ], [ %295, %293 ]
  %300 = load i32, ptr %166, align 4, !tbaa !102
  %301 = icmp eq i32 %300, %89
  br i1 %301, label %.thread1102, label %304

.thread1102:                                      ; preds = %.thread1100
  %302 = getelementptr inbounds i8, ptr %77, i64 13872
  %303 = load i8, ptr %302, align 8, !tbaa !106, !range !38, !noundef !39
  %.not1132 = xor i8 %299, 1
  %not.brmerge989 = and i8 %303, %.not1132
  br label %307

304:                                              ; preds = %.thread1100
  %305 = icmp ne ptr %.08681179, null
  %306 = select i1 %305, i1 %206, i1 false
  br label %307

307:                                              ; preds = %.thread1102, %304
  %.08691104 = phi i8 [ 0, %304 ], [ %not.brmerge989, %.thread1102 ]
  %308 = phi i1 [ %306, %304 ], [ true, %.thread1102 ]
  %309 = icmp ne ptr %.08681179, null
  br i1 %309, label %310, label %.thread1105

310:                                              ; preds = %307
  %311 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br i1 %311, label %314, label %312

312:                                              ; preds = %310
  %313 = trunc i8 %.38761176 to i1
  br i1 %313, label %314, label %315

314:                                              ; preds = %312, %310
  br label %315

315:                                              ; preds = %314, %312
  %316 = phi i1 [ false, %312 ], [ %308, %314 ]
  %brmerge990 = or i1 %308, %316
  %or.cond1077 = select i1 %79, i1 %brmerge990, i1 false
  br i1 %or.cond1077, label %317, label %.thread1105

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

.thread1105:                                      ; preds = %307, %317, %315
  %.0880.in = phi i1 [ %332, %317 ], [ %316, %315 ], [ false, %307 ]
  %brmerge991 = select i1 %308, i1 true, i1 %.0880.in
  br i1 %brmerge991, label %337, label %333

333:                                              ; preds = %.thread1105
  %334 = load i32, ptr %166, align 4, !tbaa !102
  %335 = icmp eq i32 %334, %89
  %.not = xor i1 %79, true
  %336 = and i1 %335, %.not
  %or.cond992 = and i1 %309, %336
  br i1 %or.cond992, label %338, label %342

337:                                              ; preds = %.thread1105
  %.not.old = xor i1 %79, true
  %or.cond9.old = and i1 %309, %.not.old
  br i1 %or.cond9.old, label %338, label %342

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

342:                                              ; preds = %338, %337, %333
  %343 = phi i1 [ false, %337 ], [ false, %333 ], [ %341, %338 ]
  %.not958 = icmp eq ptr %1, null
  br i1 %.not958, label %352, label %344

344:                                              ; preds = %342
  br i1 %343, label %345, label %348

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

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

352:                                              ; preds = %348, %342
  %353 = phi i1 [ false, %342 ], [ %351, %348 ]
  %brmerge993 = select i1 %.not945, i1 true, i1 %353
  br i1 %brmerge993, label %384, label %354

354:                                              ; preds = %352
  %355 = getelementptr inbounds i8, ptr %77, i64 15248
  %356 = load ptr, ptr %355, align 8, !tbaa !123
  %357 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(110) %356, i16 noundef zeroext 42)
  %358 = getelementptr inbounds i8, ptr %77, i64 20944
  %359 = load ptr, ptr %355, align 8, !tbaa !123
  %360 = getelementptr inbounds i8, ptr %359, i64 20
  %361 = load float, ptr %360, align 4, !tbaa !124
  %362 = getelementptr inbounds i8, ptr %77, i64 20964
  store float %361, ptr %362, align 4, !tbaa !124
  %363 = getelementptr inbounds i8, ptr %359, i64 92
  %364 = getelementptr inbounds i8, ptr %77, i64 21036
  %365 = load <2 x float>, ptr %363, align 4, !tbaa !91
  store <2 x float> %365, ptr %364, align 4, !tbaa !91
  %366 = getelementptr inbounds i8, ptr %359, i64 100
  %367 = load float, ptr %366, align 4, !tbaa !125
  %368 = getelementptr inbounds i8, ptr %77, i64 21044
  store float %367, ptr %368, align 4, !tbaa !125
  %369 = getelementptr inbounds i8, ptr %359, i64 64
  %370 = load ptr, ptr %369, align 8, !tbaa !126
  %371 = getelementptr inbounds i8, ptr %77, i64 21008
  store ptr %370, ptr %371, align 8, !tbaa !126
  %372 = getelementptr inbounds i8, ptr %77, i64 21000
  store ptr %357, ptr %372, align 8, !tbaa !127
  %373 = getelementptr inbounds i8, ptr %357, i64 4
  %374 = load float, ptr %373, align 4, !tbaa !128
  %375 = getelementptr inbounds i8, ptr %77, i64 20960
  store float %374, ptr %375, align 8, !tbaa !130
  %376 = getelementptr inbounds i8, ptr %77, i64 20984
  %377 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %376)
  br i1 %377, label %378, label %.critedge11

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

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

.critedge11:                                      ; preds = %378, %354, %380
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.2, i32 noundef 4119, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

383:                                              ; preds = %380
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %358)
  br label %384

384:                                              ; preds = %352, %383
  %385 = load i32, ptr %166, align 4, !tbaa !102
  %386 = icmp eq i32 %385, %89
  br i1 %386, label %387, label %556

387:                                              ; preds = %384
  br i1 %309, label %389, label %388

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

389:                                              ; preds = %387
  %390 = getelementptr inbounds i8, ptr %.08681179, i64 8
  %391 = load i32, ptr %390, align 8, !tbaa !114
  %392 = getelementptr inbounds i8, ptr %.08681179, i64 3710
  store i8 0, ptr %392, align 2, !tbaa !131
  %393 = getelementptr inbounds i8, ptr %.08681179, i64 68
  store i32 %3, ptr %393, align 4, !tbaa !132
  %394 = getelementptr inbounds i8, ptr %.08681179, i64 3712
  store i32 %5, ptr %394, align 8, !tbaa !133
  %395 = getelementptr inbounds i8, ptr %77, i64 3348
  %396 = load i8, ptr %395, align 4, !tbaa !106, !range !38, !noundef !39
  %397 = xor i8 %396, 1
  %398 = getelementptr inbounds i8, ptr %77, i64 16001
  store i8 %397, ptr %398, align 1, !tbaa !134
  %399 = getelementptr inbounds i8, ptr %77, i64 21964
  store i32 1, ptr %399, align 4, !tbaa !135
  %400 = getelementptr inbounds i8, ptr %77, i64 3340
  %401 = load float, ptr %400, align 4, !tbaa !136
  %402 = load float, ptr %11, align 8, !tbaa !137
  %403 = fsub float %401, %402
  %404 = load float, ptr %99, align 4, !tbaa !138
  %405 = fsub float %403, %404
  %406 = getelementptr inbounds i8, ptr %.08681179, i64 72
  %407 = load float, ptr %406, align 8, !tbaa !116
  %408 = fadd float %405, %407
  br i1 %68, label %409, label %415

409:                                              ; preds = %389
  %410 = getelementptr inbounds i8, ptr %77, i64 3344
  %411 = load float, ptr %410, align 4, !tbaa !139
  %412 = getelementptr inbounds i8, ptr %.2865, i64 220
  %413 = load float, ptr %412, align 4, !tbaa !140
  %414 = fsub float %411, %413
  br label %419

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

419:                                              ; preds = %415, %409
  %420 = phi float [ %414, %409 ], [ %418, %415 ]
  %421 = getelementptr inbounds i8, ptr %77, i64 113
  %422 = load i8, ptr %421, align 1, !tbaa !141, !range !38, !noundef !39
  %423 = trunc nuw i8 %422 to i1
  %424 = trunc i8 %.38761176 to i1
  br i1 %424, label %425, label %427

425:                                              ; preds = %419
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  %426 = getelementptr inbounds i8, ptr %.08681179, i64 3709
  store i8 1, ptr %426, align 1, !tbaa !142
  br label %496

427:                                              ; preds = %419
  br i1 %159, label %428, label %468

428:                                              ; preds = %427
  %429 = getelementptr inbounds i8, ptr %77, i64 13882
  %430 = load i16, ptr %429, align 2, !tbaa !143
  %431 = icmp ugt i16 %430, 1
  br i1 %431, label %432, label %468

432:                                              ; preds = %428
  %433 = getelementptr inbounds i8, ptr %77, i64 3365
  %434 = load i8, ptr %433, align 1, !tbaa !144, !range !38, !noundef !39
  %435 = trunc nuw i8 %434 to i1
  br i1 %435, label %468, label %436

436:                                              ; preds = %432
  %437 = getelementptr inbounds i8, ptr %.08681179, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08681179, ptr noundef nonnull %437, float noundef %408, float noundef %420)
  %438 = load i16, ptr %429, align 2, !tbaa !143
  %439 = and i16 %438, 1
  %440 = icmp eq i16 %439, 0
  %441 = load i32, ptr %437, align 4, !tbaa !145
  br i1 %440, label %442, label %458

442:                                              ; preds = %436
  %443 = icmp eq i32 %441, 0
  br i1 %443, label %448, label %444

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

448:                                              ; preds = %444, %442
  %449 = phi i1 [ true, %442 ], [ %447, %444 ]
  %450 = getelementptr inbounds i8, ptr %.08681179, i64 80
  %451 = load i32, ptr %450, align 4, !tbaa !146
  %452 = getelementptr inbounds i8, ptr %.08681179, i64 84
  %453 = load i32, ptr %452, align 4, !tbaa !147
  %.not959 = icmp eq i32 %451, %453
  %brmerge995.not = and i1 %449, %.not959
  br i1 %brmerge995.not, label %.thread1187, label %454

454:                                              ; preds = %448
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef 2097164)
  %.pre1150 = load i32, ptr %450, align 4, !tbaa !146
  %.pre1151 = load i32, ptr %452, align 4, !tbaa !147
  %.not960 = icmp eq i32 %.pre1150, %.pre1151
  br i1 %.not960, label %.thread1187, label %455

.thread1187:                                      ; preds = %448, %454
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef nonnull %437)
  br label %455

455:                                              ; preds = %.thread1187, %454
  %456 = load i32, ptr %437, align 4, !tbaa !145
  %457 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef nonnull %.08681179, i32 noundef %456)
  store i32 %457, ptr %437, align 4, !tbaa !145
  store i32 %457, ptr %452, align 4, !tbaa !147
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.08681179, ptr noundef nonnull %437)
  br label %467

458:                                              ; preds = %436
  %459 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.08681179, i32 noundef %441)
  %460 = icmp ne i16 %459, 10
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef 2097156)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef 6291461)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef 6291457)
  %brmerge997.not = and i1 %68, %460
  br i1 %brmerge997.not, label %461, label %465

461:                                              ; preds = %458
  %462 = getelementptr inbounds i8, ptr %.08681179, i64 80
  %463 = getelementptr inbounds i8, ptr %.08681179, i64 84
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %462, ptr noundef nonnull align 4 dereferenceable(4) %463)
  %464 = load i32, ptr %463, align 4, !tbaa !147
  store i32 %464, ptr %437, align 4, !tbaa !145
  br label %465

465:                                              ; preds = %458, %461
  %466 = getelementptr inbounds i8, ptr %.08681179, i64 3708
  store i8 0, ptr %466, align 4, !tbaa !148
  br label %467

467:                                              ; preds = %465, %455
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br label %496

468:                                              ; preds = %432, %428, %427
  %469 = getelementptr inbounds i8, ptr %77, i64 13872
  %470 = load i8, ptr %469, align 8, !tbaa !106, !range !38, !noundef !39
  %471 = trunc nuw i8 %470 to i1
  br i1 %471, label %472, label %479

472:                                              ; preds = %468
  %473 = getelementptr inbounds i8, ptr %.08681179, i64 3709
  %474 = load i8, ptr %473, align 1, !tbaa !142, !range !38, !noundef !39
  %475 = trunc nuw i8 %474 to i1
  br i1 %475, label %479, label %476

476:                                              ; preds = %472
  br i1 %159, label %477, label %496

477:                                              ; preds = %476
  %478 = getelementptr inbounds i8, ptr %.08681179, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08681179, ptr noundef nonnull %478, float noundef %408, float noundef %420)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br label %496

479:                                              ; preds = %472, %468
  %480 = trunc nuw i8 %396 to i1
  br i1 %480, label %481, label %496

481:                                              ; preds = %479
  %482 = getelementptr inbounds i8, ptr %.08681179, i64 3709
  %483 = load i8, ptr %482, align 1, !tbaa !142, !range !38, !noundef !39
  %484 = trunc nuw i8 %483 to i1
  br i1 %484, label %496, label %485

485:                                              ; preds = %481
  %486 = getelementptr inbounds i8, ptr %77, i64 240
  %487 = load float, ptr %486, align 8, !tbaa !149
  %488 = fcmp une float %487, 0.000000e+00
  br i1 %488, label %493, label %489

489:                                              ; preds = %485
  %490 = getelementptr inbounds i8, ptr %77, i64 244
  %491 = load float, ptr %490, align 4, !tbaa !150
  %492 = fcmp une float %491, 0.000000e+00
  br i1 %492, label %493, label %496

493:                                              ; preds = %489, %485
  %494 = getelementptr inbounds i8, ptr %.08681179, i64 76
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08681179, ptr noundef nonnull %494, float noundef %408, float noundef %420)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  %495 = getelementptr inbounds i8, ptr %.08681179, i64 3708
  store i8 1, ptr %495, align 4, !tbaa !148
  br label %496

496:                                              ; preds = %467, %479, %481, %489, %493, %476, %477, %425
  %497 = getelementptr inbounds i8, ptr %.08681179, i64 3709
  %498 = load i8, ptr %497, align 1, !tbaa !142, !range !38, !noundef !39
  %499 = trunc nuw i8 %498 to i1
  br i1 %499, label %500, label %504

500:                                              ; preds = %496
  %501 = load i8, ptr %395, align 4, !tbaa !106, !range !38, !noundef !39
  %502 = trunc nuw i8 %501 to i1
  br i1 %502, label %504, label %503

503:                                              ; preds = %500
  store i8 0, ptr %497, align 1, !tbaa !142
  br label %504

504:                                              ; preds = %503, %500, %496
  %505 = getelementptr inbounds i8, ptr %77, i64 3364
  %506 = load i8, ptr %505, align 4, !tbaa !118, !range !38, !noundef !39
  %507 = trunc nuw i8 %506 to i1
  br i1 %507, label %508, label %513

508:                                              ; preds = %504
  %509 = getelementptr inbounds i8, ptr %77, i64 3366
  %510 = load i8, ptr %509, align 2, !tbaa !151, !range !38, !noundef !39
  %511 = trunc nuw i8 %510 to i1
  %.not998 = xor i1 %511, true
  %512 = select i1 %511, i1 %423, i1 false
  br i1 %512, label %514, label %518

513:                                              ; preds = %504
  br i1 %423, label %514, label %518

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

518:                                              ; preds = %508, %513, %514
  %519 = phi i1 [ %.not998, %508 ], [ false, %513 ], [ %517, %514 ]
  br i1 %.not943, label %534, label %520

520:                                              ; preds = %518
  %521 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 512, i1 noundef zeroext true)
  %.not1001 = xor i1 %521, true
  %brmerge1002 = select i1 %.not1001, i1 true, i1 %519
  br i1 %brmerge1002, label %534, label %522

522:                                              ; preds = %520
  %523 = getelementptr inbounds i8, ptr %77, i64 3365
  %524 = load i8, ptr %523, align 1, !tbaa !144, !range !38, !noundef !39
  %525 = trunc nuw i8 %524 to i1
  %brmerge1003 = or i1 %79, %525
  br i1 %brmerge1003, label %534, label %526

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

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

531:                                              ; preds = %529
  %532 = load i32, ptr %21, align 4, !tbaa !94
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %532)
  br label %533

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

534:                                              ; preds = %522, %520, %526, %533, %518
  %535 = getelementptr inbounds i8, ptr %77, i64 14152
  %536 = load i32, ptr %535, align 8, !tbaa !153
  %537 = icmp sgt i32 %536, 0
  br i1 %537, label %538, label %556

538:                                              ; preds = %534
  %brmerge1004 = or i1 %79, %519
  %brmerge1005 = select i1 %brmerge1004, i1 true, i1 %181
  br i1 %brmerge1005, label %.loopexit1139, label %.lr.ph

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

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

545:                                              ; preds = %540
  %546 = load i8, ptr %539, align 1, !tbaa !144, !range !38, !noundef !39
  %547 = trunc nuw i8 %546 to i1
  br i1 %547, label %552, label %548

548:                                              ; preds = %545, %540
  %549 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %549, label %550, label %552

550:                                              ; preds = %548
  %551 = load i32, ptr %22, align 4, !tbaa !94
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %551)
  br label %552

552:                                              ; preds = %548, %550, %545
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  %553 = add nuw nsw i32 %.08961142, 1
  %554 = load i32, ptr %535, align 8, !tbaa !153
  %555 = icmp slt i32 %553, %554
  br i1 %555, label %540, label %.loopexit1139, !llvm.loop !154

.loopexit1139:                                    ; preds = %552, %538
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %535, i32 noundef 0)
  br label %556

556:                                              ; preds = %534, %.loopexit1139, %384
  %.0886 = phi i32 [ 0, %384 ], [ %391, %.loopexit1139 ], [ %391, %534 ]
  %557 = load i32, ptr %166, align 4, !tbaa !102
  %558 = icmp eq i32 %557, %89
  br i1 %558, label %559, label %880

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

563:                                              ; preds = %559
  %564 = trunc nuw i8 %.08691104 to i1
  br i1 %564, label %.thread1190, label %565

565:                                              ; preds = %563
  br i1 %309, label %567, label %566

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

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

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

573:                                              ; preds = %567
  %574 = load float, ptr %100, align 4, !tbaa !89
  %575 = fsub float %.sroa.11.0.copyload, %574
  %576 = getelementptr inbounds i8, ptr %77, i64 15256
  %577 = load float, ptr %576, align 8, !tbaa !41
  %578 = fdiv float %575, %577
  %579 = fptosi float %578 to i32
  %580 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %579, i32 noundef 1)
  %581 = getelementptr inbounds i8, ptr %.08681179, i64 76
  %582 = getelementptr inbounds i8, ptr %.08681179, i64 92
  store i32 %580, ptr %582, align 4, !tbaa !158
  %583 = getelementptr inbounds i8, ptr %77, i64 3365
  %584 = load i8, ptr %583, align 1, !tbaa !144, !range !38, !noundef !39
  %585 = trunc nuw i8 %584 to i1
  %586 = select i1 %585, i32 4194304, i32 0
  %587 = getelementptr inbounds i8, ptr %77, i64 113
  %588 = load i8, ptr %587, align 1, !tbaa !141, !range !38, !noundef !39
  %589 = trunc nuw i8 %588 to i1
  br i1 %589, label %593, label %590

590:                                              ; preds = %573
  %591 = getelementptr inbounds i8, ptr %77, i64 3366
  %592 = getelementptr inbounds i8, ptr %77, i64 3364
  %.in = load i8, ptr %592, align 2, !tbaa !106, !range !38, !noundef !39
  %.pre1152 = load i32, ptr %568, align 8, !tbaa !157
  br label %607

593:                                              ; preds = %573
  %594 = load i32, ptr %568, align 8, !tbaa !157
  %595 = icmp eq i32 %594, 10
  %596 = getelementptr inbounds i8, ptr %77, i64 3366
  %597 = getelementptr inbounds i8, ptr %77, i64 3364
  %.in1111 = load i8, ptr %596, align 2, !tbaa !106, !range !38, !noundef !39
  %598 = getelementptr inbounds i8, ptr %77, i64 3367
  %599 = load i8, ptr %598, align 1, !tbaa !152, !range !38, !noundef !39
  %600 = trunc nuw i8 %599 to i1
  br i1 %600, label %601, label %607

601:                                              ; preds = %593
  %602 = load i8, ptr %597, align 4, !tbaa !118, !range !38, !noundef !39
  %603 = trunc nuw i8 %602 to i1
  br i1 %603, label %607, label %604

604:                                              ; preds = %601
  %605 = trunc nuw i8 %.in1111 to i1
  %606 = xor i1 %605, true
  br label %607

607:                                              ; preds = %590, %604, %601, %593
  %608 = phi i32 [ %594, %601 ], [ %594, %593 ], [ %.pre1152, %590 ], [ %594, %604 ]
  %.v1135 = phi i32 [ 8, %601 ], [ 8, %593 ], [ 1, %590 ], [ 8, %604 ]
  %.in1134 = phi i8 [ %.in1111, %601 ], [ %.in1111, %593 ], [ %.in, %590 ], [ %.in1111, %604 ]
  %609 = phi ptr [ %597, %601 ], [ %597, %593 ], [ %592, %590 ], [ %597, %604 ]
  %610 = phi ptr [ %596, %601 ], [ %596, %593 ], [ %591, %590 ], [ %596, %604 ]
  %611 = phi i1 [ %595, %601 ], [ %595, %593 ], [ false, %590 ], [ %595, %604 ]
  %612 = phi i1 [ false, %601 ], [ false, %593 ], [ false, %590 ], [ %606, %604 ]
  %613 = trunc nuw i8 %.in1134 to i1
  %614 = icmp eq i32 %608, 1
  %615 = icmp eq i32 %608, 2
  %616 = icmp eq i32 %608, %.v1135
  br i1 %616, label %617, label %619

617:                                              ; preds = %607
  %618 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 569, i1 noundef zeroext true)
  br i1 %618, label %624, label %619

619:                                              ; preds = %617, %607
  br i1 %615, label %620, label %627

620:                                              ; preds = %619
  %621 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 522, i1 noundef zeroext true)
  %622 = and i1 %.not945, %621
  %623 = xor i1 %622, true
  %brmerge1008 = or i1 %79, %623
  %.not1014 = xor i1 %68, true
  %brmerge1015 = or i1 %brmerge1008, %.not1014
  %not.brmerge1008 = xor i1 %brmerge1008, true
  br i1 %brmerge1015, label %627, label %625

624:                                              ; preds = %617
  %.not945.not1009 = xor i1 %.not945, true
  %brmerge1010 = or i1 %79, %.not945.not1009
  %.not1011 = xor i1 %68, true
  %brmerge1012 = or i1 %brmerge1010, %.not1011
  %not.brmerge1010 = xor i1 %brmerge1010, true
  br i1 %brmerge1012, label %.thread1112, label %625

625:                                              ; preds = %620, %624
  %626 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br label %627

627:                                              ; preds = %620, %625, %619
  %628 = phi i1 [ %not.brmerge1008, %620 ], [ false, %619 ], [ %626, %625 ]
  br i1 %616, label %.thread1112, label %631

.thread1112:                                      ; preds = %624, %627
  %629 = phi i1 [ %628, %627 ], [ %not.brmerge1010, %624 ]
  %630 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 548, i1 noundef zeroext true)
  br i1 %630, label %635, label %631

631:                                              ; preds = %.thread1112, %627
  %632 = phi i1 [ %629, %.thread1112 ], [ %628, %627 ]
  br i1 %614, label %633, label %640

633:                                              ; preds = %631
  %634 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 521, i1 noundef zeroext true)
  %brmerge1019.demorgan = and i1 %.not945, %634
  %brmerge1021.not = and i1 %68, %brmerge1019.demorgan
  br i1 %brmerge1021.not, label %637, label %640

635:                                              ; preds = %.thread1112
  %636 = and i32 %5, 67141632
  %brmerge1025.not = icmp eq i32 %636, 67108864
  br i1 %brmerge1025.not, label %637, label %.thread1113

637:                                              ; preds = %635, %633
  %638 = phi i1 [ %629, %635 ], [ %632, %633 ]
  %639 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br label %640

640:                                              ; preds = %633, %637, %631
  %641 = phi i1 [ %632, %633 ], [ %632, %631 ], [ %638, %637 ]
  %642 = phi i1 [ %brmerge1019.demorgan, %633 ], [ false, %631 ], [ %639, %637 ]
  br i1 %616, label %.thread1113, label %646

.thread1113:                                      ; preds = %635, %640
  %643 = phi i1 [ %642, %640 ], [ %.not945, %635 ]
  %644 = phi i1 [ %641, %640 ], [ %629, %635 ]
  %645 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 567, i1 noundef zeroext true)
  br i1 %645, label %651, label %646

646:                                              ; preds = %.thread1113, %640
  %647 = phi i1 [ %643, %.thread1113 ], [ %642, %640 ]
  %648 = phi i1 [ %644, %.thread1113 ], [ %641, %640 ]
  br i1 %615, label %649, label %655

649:                                              ; preds = %646
  %650 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 521, i1 noundef zeroext true)
  br i1 %650, label %651, label %655

651:                                              ; preds = %649, %.thread1113
  %652 = phi i1 [ %647, %649 ], [ %643, %.thread1113 ]
  %653 = phi i1 [ %648, %649 ], [ %644, %.thread1113 ]
  %654 = xor i1 %79, true
  br label %655

655:                                              ; preds = %651, %649, %646
  %656 = phi i1 [ %647, %649 ], [ %647, %646 ], [ %652, %651 ]
  %657 = phi i1 [ %648, %649 ], [ %648, %646 ], [ %653, %651 ]
  %658 = phi i1 [ false, %649 ], [ false, %646 ], [ %654, %651 ]
  br i1 %616, label %659, label %663

659:                                              ; preds = %655
  %660 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 571, i1 noundef zeroext true)
  %not. = xor i1 %79, true
  %661 = and i1 %660, %not.
  %spec.select1080 = and i1 %82, %661
  %662 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 570, i1 noundef zeroext true)
  br i1 %662, label %667, label %663

663:                                              ; preds = %655, %659
  %664 = phi i1 [ %spec.select1080, %659 ], [ false, %655 ]
  br i1 %611, label %665, label %669

665:                                              ; preds = %663
  %666 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 571, i1 noundef zeroext true)
  br i1 %666, label %._crit_edge1165, label %669

._crit_edge1165:                                  ; preds = %665
  %.pre1166 = xor i1 %79, true
  br label %667

667:                                              ; preds = %._crit_edge1165, %659
  %not.1136.pre-phi = phi i1 [ %.pre1166, %._crit_edge1165 ], [ %not., %659 ]
  %668 = phi i1 [ %664, %._crit_edge1165 ], [ %spec.select1080, %659 ]
  %spec.select1028 = and i1 %82, %not.1136.pre-phi
  br label %669

669:                                              ; preds = %667, %665, %663
  %670 = phi i1 [ %664, %665 ], [ %664, %663 ], [ %668, %667 ]
  %671 = phi i1 [ false, %665 ], [ false, %663 ], [ %spec.select1028, %667 ]
  %672 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 525, i1 noundef zeroext true)
  br i1 %672, label %675, label %673

673:                                              ; preds = %669
  %674 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 615, i1 noundef zeroext true)
  br label %675

675:                                              ; preds = %673, %669
  %676 = phi i1 [ true, %669 ], [ %674, %673 ]
  %677 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 0, i32 noundef 1)
  br i1 %677, label %678, label %680

678:                                              ; preds = %675
  %679 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 524, i1 noundef zeroext true)
  br i1 %679, label %680, label %682

680:                                              ; preds = %678, %675
  %681 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 2, i32 noundef 1)
  br label %682

682:                                              ; preds = %680, %678
  %683 = phi i1 [ true, %678 ], [ %681, %680 ]
  %684 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 526, i1 noundef zeroext true)
  br i1 %684, label %687, label %685

685:                                              ; preds = %682
  %686 = call noundef zeroext i1 @_ZN5ImGui14IsNavInputTestEi18ImGuiInputReadMode(i32 noundef 1, i32 noundef 1)
  br label %687

687:                                              ; preds = %685, %682
  %688 = phi i1 [ true, %682 ], [ %686, %685 ]
  %689 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 513, i1 noundef zeroext true)
  br i1 %689, label %690, label %693

690:                                              ; preds = %687
  %691 = select i1 %613, i32 2097164, i32 2097152
  %spec.select1029 = select i1 %612, i32 2097156, i32 %691
  %692 = or disjoint i32 %spec.select1029, %586
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %692)
  br label %876

693:                                              ; preds = %687
  %694 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 514, i1 noundef zeroext true)
  br i1 %694, label %695, label %698

695:                                              ; preds = %693
  %696 = select i1 %613, i32 2097165, i32 2097153
  %spec.select1030 = select i1 %612, i32 2097157, i32 %696
  %697 = or disjoint i32 %spec.select1030, %586
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %697)
  br label %876

698:                                              ; preds = %693
  %699 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 515, i1 noundef zeroext true)
  %brmerge1033.not = and i1 %68, %699
  br i1 %brmerge1033.not, label %700, label %712

700:                                              ; preds = %698
  %701 = load i8, ptr %609, align 4, !tbaa !118, !range !38, !noundef !39
  %702 = trunc nuw i8 %701 to i1
  br i1 %702, label %703, label %709

703:                                              ; preds = %700
  %704 = getelementptr inbounds i8, ptr %.2865, i64 96
  %705 = load float, ptr %704, align 4, !tbaa !108
  %706 = load float, ptr %576, align 8, !tbaa !41
  %707 = fsub float %705, %706
  %708 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %707, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2865, float noundef %708)
  br label %876

709:                                              ; preds = %700
  %710 = select i1 %612, i32 2097158, i32 2097154
  %711 = or disjoint i32 %710, %586
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %711)
  br label %876

712:                                              ; preds = %698
  %713 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 516, i1 noundef zeroext true)
  %brmerge1036.not = and i1 %68, %713
  br i1 %brmerge1036.not, label %714, label %727

714:                                              ; preds = %712
  %715 = load i8, ptr %609, align 4, !tbaa !118, !range !38, !noundef !39
  %716 = trunc nuw i8 %715 to i1
  br i1 %716, label %717, label %724

717:                                              ; preds = %714
  %718 = getelementptr inbounds i8, ptr %.2865, i64 96
  %719 = load float, ptr %718, align 4, !tbaa !108
  %720 = load float, ptr %576, align 8, !tbaa !41
  %721 = fadd float %719, %720
  %722 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %723 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %721, float noundef %722)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2865, float noundef %723)
  br label %876

724:                                              ; preds = %714
  %725 = select i1 %612, i32 2097159, i32 2097155
  %726 = or disjoint i32 %725, %586
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %726)
  br label %876

727:                                              ; preds = %712
  %728 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 517, i1 noundef zeroext true)
  %brmerge1039.not = and i1 %68, %728
  br i1 %brmerge1039.not, label %729, label %735

729:                                              ; preds = %727
  %730 = or disjoint i32 %586, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %730)
  %731 = sitofp i32 %580 to float
  %732 = load float, ptr %576, align 8, !tbaa !41
  %733 = fneg float %731
  %734 = call float @llvm.fmuladd.f32(float %733, float %732, float %208)
  br label %876

735:                                              ; preds = %727
  %736 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 518, i1 noundef zeroext true)
  %brmerge1042.demorgan = and i1 %68, %736
  br i1 %brmerge1042.demorgan, label %737, label %742

737:                                              ; preds = %735
  %738 = or disjoint i32 %586, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %738)
  %739 = sitofp i32 %580 to float
  %740 = load float, ptr %576, align 8, !tbaa !41
  %741 = call float @llvm.fmuladd.f32(float %739, float %740, float %208)
  br label %876

742:                                              ; preds = %735
  %743 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 519, i1 noundef zeroext true)
  br i1 %743, label %744, label %748

744:                                              ; preds = %742
  %745 = load i8, ptr %609, align 4, !tbaa !118, !range !38, !noundef !39
  %746 = trunc nuw i8 %745 to i1
  %.v965 = select i1 %746, i32 2097158, i32 2097156
  %747 = or disjoint i32 %.v965, %586
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %747)
  br label %876

748:                                              ; preds = %742
  %749 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 520, i1 noundef zeroext true)
  br i1 %749, label %750, label %754

750:                                              ; preds = %748
  %751 = load i8, ptr %609, align 4, !tbaa !118, !range !38, !noundef !39
  %752 = trunc nuw i8 %751 to i1
  %.v = select i1 %752, i32 2097159, i32 2097157
  %753 = or disjoint i32 %.v, %586
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %753)
  br label %876

754:                                              ; preds = %748
  %755 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 522, i1 noundef zeroext true)
  %.not1043 = xor i1 %755, true
  %brmerge1044 = or i1 %79, %.not1043
  %brmerge1045 = or i1 %657, %brmerge1044
  br i1 %brmerge1045, label %758, label %756

756:                                              ; preds = %754
  %757 = or disjoint i32 %586, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %757)
  br label %876

758:                                              ; preds = %754
  %759 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 523, i1 noundef zeroext true)
  %.not1046 = xor i1 %759, true
  %brmerge1047 = or i1 %79, %.not1046
  br i1 %brmerge1047, label %776, label %760

760:                                              ; preds = %758
  %761 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br i1 %761, label %774, label %762

762:                                              ; preds = %760
  br i1 %613, label %.sink.split, label %763

763:                                              ; preds = %762
  br i1 %589, label %764, label %774

764:                                              ; preds = %763
  %765 = getelementptr inbounds i8, ptr %77, i64 3367
  %766 = load i8, ptr %765, align 1, !tbaa !152, !range !38, !noundef !39
  %767 = trunc nuw i8 %766 to i1
  br i1 %767, label %768, label %774

768:                                              ; preds = %764
  %769 = load i8, ptr %610, align 2, !tbaa !151, !range !38, !noundef !39
  %770 = trunc nuw i8 %769 to i1
  br i1 %770, label %774, label %771

771:                                              ; preds = %768
  %772 = load i8, ptr %609, align 4, !tbaa !118, !range !38, !noundef !39
  %773 = trunc nuw i8 %772 to i1
  br i1 %773, label %774, label %.sink.split

.sink.split:                                      ; preds = %771, %762
  %.sink = phi i32 [ 6291468, %762 ], [ 6291460, %771 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %.sink)
  br label %774

774:                                              ; preds = %.sink.split, %771, %768, %764, %763, %760
  %775 = or disjoint i32 %586, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %775)
  br label %876

776:                                              ; preds = %758
  br i1 %676, label %777, label %789

777:                                              ; preds = %776
  br i1 %68, label %778, label %876

778:                                              ; preds = %777
  %779 = and i32 %5, 2048
  %.not964 = icmp eq i32 %779, 0
  %780 = load i8, ptr %609, align 4, !tbaa !118, !range !38, !noundef !39
  %781 = trunc nuw i8 %780 to i1
  br i1 %.not964, label %.critedge1049, label %782

782:                                              ; preds = %778
  br i1 %781, label %783, label %876

.critedge1049:                                    ; preds = %778
  %brmerge1050 = or i1 %79, %781
  %.mux1052 = select i1 %781, i8 1, i8 %.08691104
  br i1 %brmerge1050, label %876, label %784

783:                                              ; preds = %782
  br i1 %79, label %876, label %784

784:                                              ; preds = %.critedge1049, %783
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #15
  store i32 10, ptr %23, align 4, !tbaa !94
  %785 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %23, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %785, label %786, label %788

786:                                              ; preds = %784
  %787 = load i32, ptr %23, align 4, !tbaa !94
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %787)
  br label %788

788:                                              ; preds = %786, %784
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #15
  br label %876

789:                                              ; preds = %776
  br i1 %683, label %876, label %790

790:                                              ; preds = %789
  br i1 %688, label %876, label %791

791:                                              ; preds = %790
  %brmerge1053 = or i1 %670, %671
  br i1 %brmerge1053, label %792, label %793

792:                                              ; preds = %791
  %.mux1054 = select i1 %670, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179, i32 noundef %.mux1054)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br label %876

793:                                              ; preds = %791
  br i1 %616, label %794, label %798

794:                                              ; preds = %793
  %795 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 546, i1 noundef zeroext true)
  br i1 %795, label %796, label %798

796:                                              ; preds = %794
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  %797 = getelementptr inbounds i8, ptr %.08681179, i64 3708
  store i8 1, ptr %797, align 4, !tbaa !148
  br label %876

798:                                              ; preds = %794, %793
  %brmerge1055 = or i1 %656, %657
  br i1 %brmerge1055, label %799, label %845

799:                                              ; preds = %798
  %800 = getelementptr inbounds i8, ptr %77, i64 176
  %801 = load ptr, ptr %800, align 8, !tbaa !159
  %.not963 = icmp eq ptr %801, null
  br i1 %.not963, label %838, label %802

802:                                              ; preds = %799
  %803 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br i1 %803, label %804, label %810

804:                                              ; preds = %802
  %805 = getelementptr inbounds i8, ptr %.08681179, i64 80
  %806 = load i32, ptr %805, align 4, !tbaa !146
  %807 = getelementptr inbounds i8, ptr %.08681179, i64 84
  %808 = load i32, ptr %807, align 4, !tbaa !147
  %809 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %806, i32 noundef %808)
  br label %810

810:                                              ; preds = %802, %804
  %811 = phi i32 [ %809, %804 ], [ 0, %802 ]
  %812 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br i1 %812, label %813, label %819

813:                                              ; preds = %810
  %814 = getelementptr inbounds i8, ptr %.08681179, i64 80
  %815 = load i32, ptr %814, align 4, !tbaa !146
  %816 = getelementptr inbounds i8, ptr %.08681179, i64 84
  %817 = load i32, ptr %816, align 4, !tbaa !147
  %818 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %815, i32 noundef %817)
  br label %822

819:                                              ; preds = %810
  %820 = getelementptr inbounds i8, ptr %.08681179, i64 4
  %821 = load i32, ptr %820, align 4, !tbaa !113
  br label %822

822:                                              ; preds = %819, %813
  %823 = phi i32 [ %818, %813 ], [ %821, %819 ]
  %824 = getelementptr inbounds i8, ptr %.08681179, i64 24
  %825 = load ptr, ptr %824, align 8, !tbaa !112
  %826 = sext i32 %811 to i64
  %827 = getelementptr inbounds i16, ptr %825, i64 %826
  %828 = sext i32 %823 to i64
  %829 = getelementptr inbounds i16, ptr %825, i64 %828
  %830 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %827, ptr noundef %829)
  %831 = add nsw i32 %830, 1
  %832 = sext i32 %831 to i64
  %833 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %832)
  %834 = load ptr, ptr %824, align 8, !tbaa !112
  %835 = getelementptr inbounds i16, ptr %834, i64 %826
  %836 = getelementptr inbounds i16, ptr %834, i64 %828
  %837 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %833, i32 noundef %831, ptr noundef %835, ptr noundef %836)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %833)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %833)
  br label %838

838:                                              ; preds = %822, %799
  br i1 %657, label %839, label %876

839:                                              ; preds = %838
  %840 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br i1 %840, label %842, label %841

841:                                              ; preds = %839
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br label %842

842:                                              ; preds = %841, %839
  %843 = getelementptr inbounds i8, ptr %.08681179, i64 3708
  store i8 1, ptr %843, align 4, !tbaa !148
  %844 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.08681179, ptr noundef nonnull %581)
  br label %876

845:                                              ; preds = %798
  br i1 %658, label %846, label %876

846:                                              ; preds = %845
  %847 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not961 = icmp eq ptr %847, null
  br i1 %.not961, label %876, label %848

848:                                              ; preds = %846
  %849 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %847) #16
  %850 = shl i64 %849, 32
  %sext = add i64 %850, 4294967296
  %851 = ashr exact i64 %sext, 31
  %852 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %851)
  %853 = load i8, ptr %847, align 1, !tbaa !122
  %.not9621143 = icmp eq i8 %853, 0
  br i1 %.not9621143, label %.loopexit1137.thread, label %.lr.ph1146

.loopexit1137.thread:                             ; preds = %848
  store i16 0, ptr %852, align 2, !tbaa !143
  br label %875

.lr.ph1146:                                       ; preds = %848, %867
  %.09001145 = phi i32 [ %.1901, %867 ], [ 0, %848 ]
  %.09031144 = phi ptr [ %856, %867 ], [ %847, %848 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #15
  %854 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %24, ptr noundef nonnull %.09031144, ptr noundef null)
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds i8, ptr %.09031144, i64 %855
  %857 = load i32, ptr %24, align 4, !tbaa !94
  %858 = icmp eq i32 %857, 0
  br i1 %858, label %.thread1115, label %859

.thread1115:                                      ; preds = %.lr.ph1146
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #15
  br label %.loopexit1137

859:                                              ; preds = %.lr.ph1146
  %860 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %24, i32 noundef %5, ptr noundef %6, ptr noundef %7, i32 noundef 4)
  br i1 %860, label %861, label %867, !llvm.loop !160

861:                                              ; preds = %859
  %862 = load i32, ptr %24, align 4, !tbaa !94
  %863 = trunc i32 %862 to i16
  %864 = add nsw i32 %.09001145, 1
  %865 = sext i32 %.09001145 to i64
  %866 = getelementptr inbounds i16, ptr %852, i64 %865
  store i16 %863, ptr %866, align 2, !tbaa !143
  br label %867

867:                                              ; preds = %859, %861
  %.1901 = phi i32 [ %864, %861 ], [ %.09001145, %859 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #15
  %868 = load i8, ptr %856, align 1, !tbaa !122
  %.not962 = icmp eq i8 %868, 0
  br i1 %.not962, label %.loopexit1137, label %.lr.ph1146

.loopexit1137:                                    ; preds = %867, %.thread1115
  %.09001141 = phi i32 [ %.09001145, %.thread1115 ], [ %.1901, %867 ]
  %869 = sext i32 %.09001141 to i64
  %870 = getelementptr inbounds i16, ptr %852, i64 %869
  store i16 0, ptr %870, align 2, !tbaa !143
  %871 = icmp sgt i32 %.09001141, 0
  br i1 %871, label %872, label %875

872:                                              ; preds = %.loopexit1137
  %873 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.08681179, ptr noundef nonnull %581, ptr noundef nonnull %852, i32 noundef %.09001141)
  %874 = getelementptr inbounds i8, ptr %.08681179, i64 3708
  store i8 1, ptr %874, align 4, !tbaa !148
  br label %875

875:                                              ; preds = %.loopexit1137.thread, %872, %.loopexit1137
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %852)
  br label %876

876:                                              ; preds = %846, %875, %790, %789, %788, %783, %782, %777, %.critedge1049, %695, %724, %717, %737, %750, %774, %792, %842, %838, %845, %796, %756, %744, %729, %703, %709, %690
  %.0898 = phi i1 [ false, %690 ], [ false, %695 ], [ false, %703 ], [ false, %709 ], [ false, %717 ], [ false, %724 ], [ false, %729 ], [ false, %737 ], [ false, %744 ], [ false, %750 ], [ false, %792 ], [ false, %796 ], [ false, %842 ], [ false, %838 ], [ false, %845 ], [ false, %774 ], [ false, %756 ], [ false, %.critedge1049 ], [ false, %777 ], [ false, %782 ], [ false, %783 ], [ false, %788 ], [ false, %789 ], [ true, %790 ], [ false, %875 ], [ false, %846 ]
  %.1884 = phi i8 [ 0, %690 ], [ 0, %695 ], [ 0, %703 ], [ 0, %709 ], [ 0, %717 ], [ 0, %724 ], [ 0, %729 ], [ 0, %737 ], [ 0, %744 ], [ 0, %750 ], [ 0, %792 ], [ 0, %796 ], [ 0, %842 ], [ 0, %838 ], [ 0, %845 ], [ 0, %774 ], [ 0, %756 ], [ %780, %.critedge1049 ], [ 1, %777 ], [ 1, %782 ], [ 0, %783 ], [ 0, %788 ], [ 1, %789 ], [ 0, %790 ], [ 0, %875 ], [ 0, %846 ]
  %.0877 = phi float [ %208, %690 ], [ %208, %695 ], [ %208, %703 ], [ %208, %709 ], [ %208, %717 ], [ %208, %724 ], [ %734, %729 ], [ %741, %737 ], [ %208, %744 ], [ %208, %750 ], [ %208, %792 ], [ %208, %796 ], [ %208, %842 ], [ %208, %838 ], [ %208, %845 ], [ %208, %774 ], [ %208, %756 ], [ %208, %.critedge1049 ], [ %208, %777 ], [ %208, %782 ], [ %208, %783 ], [ %208, %788 ], [ %208, %789 ], [ %208, %790 ], [ %208, %875 ], [ %208, %846 ]
  %.2871 = phi i8 [ %.08691104, %690 ], [ %.08691104, %695 ], [ %.08691104, %703 ], [ %.08691104, %709 ], [ %.08691104, %717 ], [ %.08691104, %724 ], [ %.08691104, %729 ], [ %.08691104, %737 ], [ %.08691104, %744 ], [ %.08691104, %750 ], [ %.08691104, %792 ], [ %.08691104, %796 ], [ %.08691104, %842 ], [ %.08691104, %838 ], [ %.08691104, %845 ], [ %.08691104, %774 ], [ %.08691104, %756 ], [ %.mux1052, %.critedge1049 ], [ 1, %777 ], [ 1, %782 ], [ %.08691104, %783 ], [ %.08691104, %788 ], [ 1, %789 ], [ 1, %790 ], [ %.08691104, %875 ], [ %.08691104, %846 ]
  %877 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  %878 = select i1 %877, i1 %308, i1 false
  %879 = or i1 %.0880.in, %878
  %.pre1153 = load i32, ptr %166, align 4, !tbaa !102
  br label %880

880:                                              ; preds = %876, %556
  %881 = phi i32 [ %.pre1153, %876 ], [ %557, %556 ]
  %.1899 = phi i1 [ %.0898, %876 ], [ false, %556 ]
  %.2885 = phi i8 [ %.1884, %876 ], [ 0, %556 ]
  %.1881.in = phi i1 [ %879, %876 ], [ %.0880.in, %556 ]
  %.1878 = phi float [ %.0877, %876 ], [ %208, %556 ]
  %.3872 = phi i8 [ %.2871, %876 ], [ %.08691104, %556 ]
  %882 = icmp eq i32 %881, %89
  br i1 %882, label %.thread1190, label %.thread1125

.thread1190:                                      ; preds = %563, %559, %880
  %.38721207 = phi i8 [ %.3872, %880 ], [ %.08691104, %559 ], [ %.08691104, %563 ]
  %.18781205 = phi float [ %.1878, %880 ], [ %208, %559 ], [ %208, %563 ]
  %.1881.in1203 = phi i1 [ %.1881.in, %880 ], [ %.0880.in, %559 ], [ %.0880.in, %563 ]
  %.28851199 = phi i8 [ %.2885, %880 ], [ 0, %559 ], [ 0, %563 ]
  %.18991198 = phi i1 [ %.1899, %880 ], [ false, %559 ], [ false, %563 ]
  br i1 %309, label %884, label %883

883:                                              ; preds = %.thread1190
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.2, i32 noundef 4373, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

884:                                              ; preds = %.thread1190
  %.1899.not = xor i1 %.18991198, true
  %brmerge1056 = or i1 %79, %.1899.not
  br i1 %brmerge1056, label %915, label %885

885:                                              ; preds = %884
  %886 = getelementptr inbounds i8, ptr %.08681179, i64 56
  %887 = load ptr, ptr %886, align 8, !tbaa !110
  %888 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %887) #16
  %.not966 = icmp eq i32 %888, 0
  br i1 %.not966, label %915, label %889

889:                                              ; preds = %885
  %890 = getelementptr inbounds i8, ptr %.08681179, i64 48
  %891 = load i32, ptr %890, align 8, !tbaa !161
  %892 = add nsw i32 %891, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25)
  %893 = icmp sgt i32 %891, 1
  br i1 %893, label %894, label %907

894:                                              ; preds = %889
  %895 = zext nneg i32 %892 to i64
  %896 = getelementptr inbounds i8, ptr %887, i64 %895
  %897 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %887, ptr noundef %896)
          to label %898 unwind label %905

898:                                              ; preds = %894
  %899 = add nsw i32 %897, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %25, i32 noundef %899)
          to label %900 unwind label %905

900:                                              ; preds = %898
  %901 = getelementptr inbounds i8, ptr %25, i64 8
  %902 = load ptr, ptr %901, align 8, !tbaa !162
  %903 = load i32, ptr %25, align 8, !tbaa !163
  %904 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %902, i32 noundef %903, ptr noundef %887, ptr noundef %896, ptr noundef null)
          to label %907 unwind label %905

905:                                              ; preds = %907, %900, %898, %894
  %906 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #15
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %15) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  resume { ptr, i32 } %906

907:                                              ; preds = %900, %889
  %908 = getelementptr inbounds i8, ptr %.08681179, i64 76
  %909 = getelementptr inbounds i8, ptr %25, i64 8
  %910 = load ptr, ptr %909, align 8, !tbaa !162
  %911 = load i32, ptr %25, align 8
  %912 = add nsw i32 %911, -1
  %913 = select i1 %893, i32 %912, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.08681179, ptr noundef nonnull %908, ptr noundef %910, i32 noundef %913)
          to label %914 unwind label %905

914:                                              ; preds = %907
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #15
  br label %915

915:                                              ; preds = %884, %885, %914
  %.0907 = phi i32 [ %892, %914 ], [ 0, %885 ], [ 0, %884 ]
  %.0904 = phi ptr [ %887, %914 ], [ null, %885 ], [ null, %884 ]
  br i1 %.18991198, label %916, label %.critedge1058

916:                                              ; preds = %915
  %917 = trunc nuw i8 %.28851199 to i1
  %918 = and i32 %5, 32
  %919 = icmp ne i32 %918, 0
  %920 = and i1 %919, %917
  br i1 %920, label %.critedge1058, label %1076

.critedge1058:                                    ; preds = %915, %916
  br i1 %79, label %934, label %921

921:                                              ; preds = %.critedge1058
  %922 = getelementptr inbounds i8, ptr %.08681179, i64 64
  store i8 1, ptr %922, align 8, !tbaa !111
  %923 = getelementptr inbounds i8, ptr %.08681179, i64 32
  %924 = getelementptr inbounds i8, ptr %.08681179, i64 16
  %925 = load i32, ptr %924, align 8, !tbaa !120
  %926 = shl nsw i32 %925, 2
  %927 = or disjoint i32 %926, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %923, i32 noundef %927)
  %928 = getelementptr inbounds i8, ptr %.08681179, i64 40
  %929 = load ptr, ptr %928, align 8, !tbaa !121
  %930 = load i32, ptr %923, align 8, !tbaa !164
  %931 = getelementptr inbounds i8, ptr %.08681179, i64 24
  %932 = load ptr, ptr %931, align 8, !tbaa !112
  %933 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %929, i32 noundef %930, ptr noundef %932, ptr noundef null)
  br label %934

934:                                              ; preds = %921, %.critedge1058
  %935 = and i32 %5, 524736
  %.not967 = icmp eq i32 %935, 0
  br i1 %.not967, label %1068, label %936

936:                                              ; preds = %934
  br i1 %84, label %938, label %937

937:                                              ; preds = %936
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.2, i32 noundef 4412, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

938:                                              ; preds = %936
  br i1 %.not942, label %941, label %939

939:                                              ; preds = %938
  %940 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 512, i1 noundef zeroext true)
  br i1 %940, label %.thread1119, label %941

941:                                              ; preds = %939, %938
  br i1 %.not940.not, label %.critedge1060, label %942

942:                                              ; preds = %941
  %943 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 515, i1 noundef zeroext true)
  br i1 %943, label %.thread1119, label %944

944:                                              ; preds = %942
  %945 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef 516, i1 noundef zeroext true)
  br i1 %945, label %.thread1119, label %.critedge1060

.critedge1060:                                    ; preds = %941, %944
  %946 = and i32 %5, 524288
  %.not968 = icmp eq i32 %946, 0
  br i1 %.not968, label %951, label %947

947:                                              ; preds = %.critedge1060
  %948 = getelementptr inbounds i8, ptr %.08681179, i64 3710
  %949 = load i8, ptr %948, align 2, !tbaa !131, !range !38, !noundef !39
  %950 = trunc nuw i8 %949 to i1
  br i1 %950, label %.thread1119, label %951

951:                                              ; preds = %.critedge1060, %947
  %952 = and i32 %5, 256
  %.not969 = icmp eq i32 %952, 0
  br i1 %.not969, label %1068, label %.thread1119

.thread1119:                                      ; preds = %947, %944, %942, %939, %951
  %.09111124 = phi i32 [ 256, %951 ], [ 524288, %947 ], [ 128, %944 ], [ 128, %942 ], [ 64, %939 ]
  %.09121123 = phi i32 [ 0, %951 ], [ 0, %947 ], [ 516, %944 ], [ 515, %942 ], [ 512, %939 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %26) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %26)
  %953 = getelementptr inbounds i8, ptr %26, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %953, i8 0, i64 40, i1 false)
  store i32 %.09111124, ptr %26, align 8, !tbaa !165
  %954 = getelementptr inbounds i8, ptr %26, i64 4
  store i32 %5, ptr %954, align 4, !tbaa !167
  %955 = getelementptr inbounds i8, ptr %26, i64 8
  store ptr %7, ptr %955, align 8, !tbaa !168
  br i1 %79, label %959, label %956

956:                                              ; preds = %.thread1119
  %957 = getelementptr inbounds i8, ptr %.08681179, i64 40
  %958 = load ptr, ptr %957, align 8, !tbaa !121
  br label %959

959:                                              ; preds = %.thread1119, %956
  %960 = phi ptr [ %958, %956 ], [ %2, %.thread1119 ]
  %961 = getelementptr inbounds i8, ptr %26, i64 20
  store i32 %.09121123, ptr %961, align 4, !tbaa !169
  %962 = getelementptr inbounds i8, ptr %26, i64 24
  store ptr %960, ptr %962, align 8, !tbaa !170
  %963 = getelementptr inbounds i8, ptr %.08681179, i64 8
  %964 = load i32, ptr %963, align 8, !tbaa !114
  %965 = getelementptr inbounds i8, ptr %26, i64 32
  store i32 %964, ptr %965, align 8, !tbaa !171
  %966 = getelementptr inbounds i8, ptr %.08681179, i64 68
  %967 = load i32, ptr %966, align 4, !tbaa !132
  %968 = getelementptr inbounds i8, ptr %26, i64 36
  store i32 %967, ptr %968, align 4, !tbaa !172
  %969 = getelementptr inbounds i8, ptr %26, i64 40
  %970 = getelementptr inbounds i8, ptr %.08681179, i64 16
  %971 = getelementptr inbounds i8, ptr %.08681179, i64 24
  %972 = load ptr, ptr %971, align 8, !tbaa !112
  %973 = getelementptr inbounds i8, ptr %.08681179, i64 76
  %974 = load i32, ptr %973, align 4, !tbaa !145
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds i16, ptr %972, i64 %975
  %977 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %972, ptr noundef %976)
  %978 = getelementptr inbounds i8, ptr %26, i64 44
  store i32 %977, ptr %978, align 4, !tbaa !173
  %979 = getelementptr inbounds i8, ptr %.08681179, i64 80
  %980 = load i32, ptr %979, align 4, !tbaa !146
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds i16, ptr %972, i64 %981
  %983 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %972, ptr noundef %982)
  %984 = getelementptr inbounds i8, ptr %26, i64 48
  store i32 %983, ptr %984, align 8, !tbaa !174
  %985 = getelementptr inbounds i8, ptr %.08681179, i64 84
  %986 = load i32, ptr %985, align 4, !tbaa !147
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds i16, ptr %972, i64 %987
  %989 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %972, ptr noundef %988)
  %990 = getelementptr inbounds i8, ptr %26, i64 52
  store i32 %989, ptr %990, align 4, !tbaa !175
  %991 = call noundef i32 %6(ptr noundef nonnull %26)
  br i1 %79, label %995, label %992

992:                                              ; preds = %959
  %993 = getelementptr inbounds i8, ptr %.08681179, i64 40
  %994 = load ptr, ptr %993, align 8, !tbaa !121
  br label %995

995:                                              ; preds = %959, %992
  %996 = phi ptr [ %994, %992 ], [ %2, %959 ]
  %997 = load ptr, ptr %962, align 8, !tbaa !170
  %998 = icmp eq ptr %997, %996
  br i1 %998, label %1000, label %999

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

1000:                                             ; preds = %995
  %1001 = load i32, ptr %968, align 4, !tbaa !172
  %1002 = load i32, ptr %966, align 4, !tbaa !132
  %1003 = icmp eq i32 %1001, %1002
  br i1 %1003, label %1005, label %1004

1004:                                             ; preds = %1000
  call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.2, i32 noundef 4468, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1005:                                             ; preds = %1000
  %1006 = load i32, ptr %954, align 4, !tbaa !167
  %1007 = icmp eq i32 %1006, %5
  br i1 %1007, label %1009, label %1008

1008:                                             ; preds = %1005
  call void @__assert_fail(ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.2, i32 noundef 4469, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1009:                                             ; preds = %1005
  %1010 = load i8, ptr %969, align 8, !tbaa !176, !range !38, !noundef !39
  %1011 = trunc nuw i8 %1010 to i1
  %1012 = load i32, ptr %978, align 4, !tbaa !173
  %.not971 = icmp ne i32 %1012, %977
  %brmerge1063 = select i1 %.not971, i1 true, i1 %1011
  br i1 %brmerge1063, label %1013, label %1018

1013:                                             ; preds = %1009
  %1014 = sext i32 %1012 to i64
  %1015 = getelementptr inbounds i8, ptr %997, i64 %1014
  %1016 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %997, ptr noundef %1015)
  store i32 %1016, ptr %973, align 4, !tbaa !145
  %1017 = getelementptr inbounds i8, ptr %.08681179, i64 3708
  store i8 1, ptr %1017, align 4, !tbaa !148
  br label %1018

1018:                                             ; preds = %1009, %1013
  %1019 = load i32, ptr %984, align 8, !tbaa !174
  %.not972 = icmp ne i32 %1019, %983
  %brmerge1064 = select i1 %.not972, i1 true, i1 %1011
  br i1 %brmerge1064, label %1020, label %1032

1020:                                             ; preds = %1018
  %1021 = load i32, ptr %978, align 4, !tbaa !173
  %1022 = icmp eq i32 %1019, %1021
  br i1 %1022, label %1023, label %1025

1023:                                             ; preds = %1020
  %1024 = load i32, ptr %973, align 4, !tbaa !145
  br label %1030

1025:                                             ; preds = %1020
  %1026 = load ptr, ptr %962, align 8, !tbaa !170
  %1027 = sext i32 %1019 to i64
  %1028 = getelementptr inbounds i8, ptr %1026, i64 %1027
  %1029 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1026, ptr noundef %1028)
  br label %1030

1030:                                             ; preds = %1025, %1023
  %1031 = phi i32 [ %1024, %1023 ], [ %1029, %1025 ]
  store i32 %1031, ptr %979, align 4, !tbaa !146
  br label %1032

1032:                                             ; preds = %1018, %1030
  %1033 = load i32, ptr %990, align 4, !tbaa !175
  %.not973 = icmp ne i32 %1033, %989
  %brmerge1065 = select i1 %.not973, i1 true, i1 %1011
  br i1 %brmerge1065, label %1034, label %1046

1034:                                             ; preds = %1032
  %1035 = load i32, ptr %984, align 8, !tbaa !174
  %1036 = icmp eq i32 %1033, %1035
  br i1 %1036, label %1037, label %1039

1037:                                             ; preds = %1034
  %1038 = load i32, ptr %979, align 4, !tbaa !146
  br label %1044

1039:                                             ; preds = %1034
  %1040 = load ptr, ptr %962, align 8, !tbaa !170
  %1041 = sext i32 %1033 to i64
  %1042 = getelementptr inbounds i8, ptr %1040, i64 %1041
  %1043 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1040, ptr noundef %1042)
  br label %1044

1044:                                             ; preds = %1039, %1037
  %1045 = phi i32 [ %1038, %1037 ], [ %1043, %1039 ]
  store i32 %1045, ptr %985, align 4, !tbaa !147
  br label %1046

1046:                                             ; preds = %1032, %1044
  br i1 %1011, label %1047, label %1067

1047:                                             ; preds = %1046
  %1048 = load i32, ptr %965, align 8, !tbaa !171
  %1049 = load ptr, ptr %962, align 8, !tbaa !170
  %1050 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1049) #16
  %1051 = trunc i64 %1050 to i32
  %1052 = icmp eq i32 %1048, %1051
  br i1 %1052, label %1054, label %1053

1053:                                             ; preds = %1047
  call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.2, i32 noundef 4476, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1054:                                             ; preds = %1047
  %1055 = icmp sle i32 %1048, %.0886
  %brmerge1067 = or i1 %.not946, %1055
  br i1 %brmerge1067, label %1060, label %1056

1056:                                             ; preds = %1054
  %1057 = load i32, ptr %970, align 8, !tbaa !120
  %1058 = sub i32 %1048, %.0886
  %1059 = add nsw i32 %1058, %1057
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %970, i32 noundef %1059)
  %.pre1154 = load ptr, ptr %962, align 8, !tbaa !170
  br label %1060

1060:                                             ; preds = %1054, %1056
  %1061 = phi ptr [ %1049, %1054 ], [ %.pre1154, %1056 ]
  %1062 = load ptr, ptr %971, align 8, !tbaa !112
  %1063 = load i32, ptr %970, align 8, !tbaa !120
  %1064 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1062, i32 noundef %1063, ptr noundef %1061, ptr noundef null, ptr noundef null)
  %1065 = getelementptr inbounds i8, ptr %.08681179, i64 4
  store i32 %1064, ptr %1065, align 4, !tbaa !113
  %1066 = load i32, ptr %965, align 8, !tbaa !171
  store i32 %1066, ptr %963, align 8, !tbaa !114
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3716) %.08681179)
  br label %1067

1067:                                             ; preds = %1060, %1046
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %26) #15
  br label %1068

1068:                                             ; preds = %951, %1067, %934
  br i1 %79, label %1076, label %1069

1069:                                             ; preds = %1068
  %1070 = getelementptr inbounds i8, ptr %.08681179, i64 40
  %1071 = load ptr, ptr %1070, align 8, !tbaa !121
  %1072 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1071, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not974 = icmp eq i32 %1072, 0
  br i1 %.not974, label %1076, label %1073

1073:                                             ; preds = %1069
  %1074 = getelementptr inbounds i8, ptr %.08681179, i64 8
  %1075 = load i32, ptr %1074, align 8, !tbaa !114
  br label %1076

1076:                                             ; preds = %916, %1073, %1069, %1068
  %.1908 = phi i32 [ %.0907, %1068 ], [ %1075, %1073 ], [ %.0907, %1069 ], [ %.0907, %916 ]
  %.1905 = phi ptr [ %.0904, %1068 ], [ %1071, %1073 ], [ %.0904, %1069 ], [ %.0904, %916 ]
  %1077 = getelementptr inbounds i8, ptr %.08681179, i64 3712
  store i32 0, ptr %1077, align 8, !tbaa !133
  %.not975.not = icmp eq ptr %.1905, null
  br i1 %.not975.not, label %.thread1125, label %1078

1078:                                             ; preds = %1076
  %1079 = icmp sgt i32 %.1908, -1
  br i1 %1079, label %1081, label %1080

1080:                                             ; preds = %1078
  call void @__assert_fail(ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.2, i32 noundef 4504, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1081:                                             ; preds = %1078
  br i1 %.not946, label %1098, label %1082

1082:                                             ; preds = %1081
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %27) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %27)
  store i32 262144, ptr %27, align 8, !tbaa !165
  %1083 = getelementptr inbounds i8, ptr %27, i64 4
  store i32 %5, ptr %1083, align 4, !tbaa !167
  %1084 = getelementptr inbounds i8, ptr %27, i64 24
  store ptr %2, ptr %1084, align 8, !tbaa !170
  %1085 = getelementptr inbounds i8, ptr %27, i64 32
  store i32 %.1908, ptr %1085, align 8, !tbaa !171
  %1086 = add nuw nsw i32 %.1908, 1
  %1087 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1086)
  %1088 = getelementptr inbounds i8, ptr %27, i64 36
  store i32 %1087, ptr %1088, align 4, !tbaa !172
  %1089 = getelementptr inbounds i8, ptr %27, i64 8
  store ptr %7, ptr %1089, align 8, !tbaa !168
  %1090 = call noundef i32 %6(ptr noundef nonnull %27)
  %1091 = load ptr, ptr %1084, align 8, !tbaa !170
  %1092 = load i32, ptr %1088, align 4, !tbaa !172
  %1093 = load i32, ptr %1085, align 8, !tbaa !171
  %1094 = add nsw i32 %1092, -1
  %1095 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1093, i32 noundef %1094)
  %.not976 = icmp sgt i32 %1095, %1092
  br i1 %.not976, label %1096, label %1097

1096:                                             ; preds = %1082
  call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.2, i32 noundef 4518, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1097:                                             ; preds = %1082
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #15
  br label %1098

1098:                                             ; preds = %1097, %1081
  %.3910 = phi i32 [ %1095, %1097 ], [ %.1908, %1081 ]
  %.0859 = phi i32 [ %1092, %1097 ], [ %3, %1081 ]
  %.0857 = phi ptr [ %1091, %1097 ], [ %2, %1081 ]
  %1099 = add nsw i32 %.3910, 1
  %1100 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1099, i32 noundef %.0859)
  %1101 = sext i32 %1100 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0857, ptr noundef nonnull %.1905, i64 noundef %1101)
  br label %.thread1125

.thread1125:                                      ; preds = %880, %1098, %1076
  %.38721206 = phi i8 [ %.38721207, %1098 ], [ %.38721207, %1076 ], [ %.3872, %880 ]
  %.18781204 = phi float [ %.18781205, %1098 ], [ %.18781205, %1076 ], [ %.1878, %880 ]
  %.1881.in1202 = phi i1 [ %.1881.in1203, %1098 ], [ %.1881.in1203, %1076 ], [ %.1881.in, %880 ]
  %.28851200 = phi i8 [ %.28851199, %1098 ], [ %.28851199, %1076 ], [ %.2885, %880 ]
  %.not9751129 = phi i1 [ true, %1098 ], [ false, %1076 ], [ false, %880 ]
  %.1858 = phi ptr [ %.0857, %1098 ], [ %2, %1076 ], [ %2, %880 ]
  %1102 = trunc nuw i8 %.38721206 to i1
  br i1 %1102, label %1103, label %1107

1103:                                             ; preds = %.thread1125
  %1104 = load i32, ptr %166, align 4, !tbaa !102
  %1105 = icmp eq i32 %1104, %89
  br i1 %1105, label %1106, label %1107

1106:                                             ; preds = %1103
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1107

1107:                                             ; preds = %1106, %1103, %.thread1125
  br i1 %68, label %1113, label %1108

1108:                                             ; preds = %1107
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %89, i32 noundef 1)
  %.sroa.092.0.copyload = load <2 x float>, ptr %11, align 8
  %1109 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %1109, align 8
  %1110 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1111 = getelementptr inbounds i8, ptr %77, i64 14268
  %1112 = load float, ptr %1111, align 4, !tbaa !95
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %1110, i1 noundef zeroext true, float noundef %1112)
  br label %1113

1113:                                             ; preds = %1108, %1107
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #15
  %1114 = load float, ptr %11, align 8, !tbaa !137
  %1115 = getelementptr inbounds i8, ptr %11, i64 4
  %1116 = load float, ptr %1115, align 4, !tbaa !177
  %1117 = fadd float %.sroa.0494.2, %1114
  %1118 = fadd float %.sroa.11.0.copyload, %1116
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef %1114, float noundef %1116, float noundef %1117, float noundef %1118)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  br i1 %68, label %1119, label %1122

1119:                                             ; preds = %1113
  %1120 = getelementptr inbounds i8, ptr %.2865, i64 216
  %1121 = load i64, ptr %1120, align 8
  br label %1125

1122:                                             ; preds = %1113
  %1123 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %99)
  %1124 = bitcast <2 x float> %1123 to i64
  br label %1125

1125:                                             ; preds = %1122, %1119
  %storemerge = phi i64 [ %1121, %1119 ], [ %1124, %1122 ]
  store i64 %storemerge, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %343, label %1126, label %1129

1126:                                             ; preds = %1125
  %1127 = getelementptr inbounds i8, ptr %.08681179, i64 40
  %1128 = load ptr, ptr %1127, align 8, !tbaa !121
  br label %1129

1129:                                             ; preds = %1125, %1126
  %1130 = phi ptr [ %1128, %1126 ], [ %.1858, %1125 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #15
  store ptr null, ptr %31, align 8, !tbaa !40
  br i1 %353, label %1131, label %1134

1131:                                             ; preds = %1129
  %1132 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1133 = getelementptr inbounds i8, ptr %1, i64 %1132
  store ptr %1133, ptr %31, align 8, !tbaa !40
  br label %1134

1134:                                             ; preds = %1131, %1129
  %1135 = phi ptr [ %1133, %1131 ], [ null, %1129 ]
  %.0897 = phi ptr [ %1, %1131 ], [ %1130, %1129 ]
  %brmerge1068 = select i1 %308, i1 true, i1 %.1881.in1202
  br i1 %brmerge1068, label %1136, label %1397

1136:                                             ; preds = %1134
  br i1 %309, label %1138, label %1137

1137:                                             ; preds = %1136
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.2, i32 noundef 4558, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1138:                                             ; preds = %1136
  br i1 %353, label %1144, label %1139

1139:                                             ; preds = %1138
  %1140 = getelementptr inbounds i8, ptr %.08681179, i64 8
  %1141 = load i32, ptr %1140, align 8, !tbaa !114
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds i8, ptr %.0897, i64 %1142
  store ptr %1143, ptr %31, align 8, !tbaa !40
  br label %1144

1144:                                             ; preds = %1139, %1138
  %.pre11601162 = phi ptr [ %1143, %1139 ], [ %1135, %1138 ]
  %1145 = getelementptr inbounds i8, ptr %.08681179, i64 24
  %1146 = load ptr, ptr %1145, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %33)
  %.sroa.063.0.copyload = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, align 4
  %.sroa.9.0.copyload = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 4), align 4
  br i1 %308, label %1147, label %1152

1147:                                             ; preds = %1144
  %1148 = getelementptr inbounds i8, ptr %.08681179, i64 76
  %1149 = load i32, ptr %1148, align 4, !tbaa !145
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds i16, ptr %1146, i64 %1150
  br label %1152

1152:                                             ; preds = %1147, %1144
  %.sroa.069.0 = phi ptr [ %1151, %1147 ], [ null, %1144 ]
  %.sroa.063.0 = phi i32 [ -1, %1147 ], [ %.sroa.063.0.copyload, %1144 ]
  %.0891 = phi i32 [ 1, %1147 ], [ 0, %1144 ]
  br i1 %.1881.in1202, label %1153, label %1162

1153:                                             ; preds = %1152
  %1154 = getelementptr inbounds i8, ptr %.08681179, i64 80
  %1155 = load i32, ptr %1154, align 4, !tbaa !146
  %1156 = getelementptr inbounds i8, ptr %.08681179, i64 84
  %1157 = load i32, ptr %1156, align 4, !tbaa !147
  %1158 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1155, i32 noundef %1157)
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds i16, ptr %1146, i64 %1159
  %1161 = add nuw nsw i32 %.0891, 1
  br label %1162

1162:                                             ; preds = %1153, %1152
  %.sroa.7.0 = phi ptr [ %1160, %1153 ], [ null, %1152 ]
  %.sroa.9.0 = phi i32 [ -1, %1153 ], [ %.sroa.9.0.copyload, %1152 ]
  %.1892 = phi i32 [ %1161, %1153 ], [ %.0891, %1152 ]
  %.lobit = lshr exact i32 %67, 26
  %1163 = add nuw nsw i32 %.1892, %.lobit
  br label %1164

1164:                                             ; preds = %1179, %1162
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1162 ], [ %.sroa.9.2, %1179 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1162 ], [ %.sroa.063.3, %1179 ]
  %.2893 = phi i32 [ %1163, %1162 ], [ %.4895, %1179 ]
  %.0888 = phi i32 [ 0, %1162 ], [ %.1889, %1179 ]
  %.0887 = phi ptr [ %1146, %1162 ], [ %1180, %1179 ]
  %1165 = load i16, ptr %.0887, align 2, !tbaa !143
  switch i16 %1165, label %1179 [
    i16 0, label %1181
    i16 10, label %1166
  ]

1166:                                             ; preds = %1164
  %1167 = add nsw i32 %.0888, 1
  %1168 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1168, label %1169, label %1173

1169:                                             ; preds = %1166
  %.not978 = icmp ult ptr %.0887, %.sroa.069.0
  br i1 %.not978, label %1173, label %1170

1170:                                             ; preds = %1169
  %1171 = add nsw i32 %.2893, -1
  %1172 = icmp slt i32 %.2893, 2
  br i1 %1172, label %1181, label %1173

1173:                                             ; preds = %1170, %1169, %1166
  %.sroa.063.2 = phi i32 [ %1167, %1170 ], [ -1, %1169 ], [ %.sroa.063.1, %1166 ]
  %.3894 = phi i32 [ %1171, %1170 ], [ %.2893, %1169 ], [ %.2893, %1166 ]
  %1174 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1174, label %1175, label %1179

1175:                                             ; preds = %1173
  %.not979 = icmp ult ptr %.0887, %.sroa.7.0
  br i1 %.not979, label %1179, label %1176

1176:                                             ; preds = %1175
  %1177 = add nsw i32 %.3894, -1
  %1178 = icmp slt i32 %.3894, 2
  br i1 %1178, label %1181, label %1179

1179:                                             ; preds = %1164, %1176, %1175, %1173
  %.sroa.9.2 = phi i32 [ %1167, %1176 ], [ -1, %1175 ], [ %.sroa.9.1, %1173 ], [ %.sroa.9.1, %1164 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1176 ], [ %.sroa.063.2, %1175 ], [ %.sroa.063.2, %1173 ], [ %.sroa.063.1, %1164 ]
  %.4895 = phi i32 [ %1177, %1176 ], [ %.3894, %1175 ], [ %.3894, %1173 ], [ %.2893, %1164 ]
  %.1889 = phi i32 [ %1167, %1176 ], [ %1167, %1175 ], [ %1167, %1173 ], [ %.0888, %1164 ]
  %1180 = getelementptr inbounds i8, ptr %.0887, i64 2
  br label %1164, !llvm.loop !178

1181:                                             ; preds = %1176, %1170, %1164
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1164 ], [ %.sroa.9.1, %1170 ], [ %1167, %1176 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1164 ], [ %1167, %1170 ], [ %.sroa.063.2, %1176 ]
  %.2890 = phi i32 [ %.0888, %1164 ], [ %1167, %1170 ], [ %1167, %1176 ]
  %1182 = add nsw i32 %.2890, 1
  %1183 = icmp eq i32 %.sroa.063.4, -1
  %spec.select1069 = select i1 %1183, i32 %1182, i32 %.sroa.063.4
  %1184 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1184, i32 %1182, i32 %.sroa.9.3
  %1185 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1146)
  %1186 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1185, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1186, i64 0
  store float %.sroa.045.0.vec.extract, ptr %32, align 4, !tbaa !179
  %1187 = sitofp i32 %spec.select1069 to float
  %1188 = getelementptr inbounds i8, ptr %77, i64 15256
  %1189 = load float, ptr %1188, align 8, !tbaa !41
  %1190 = fmul float %1189, %1187
  %1191 = getelementptr inbounds i8, ptr %32, i64 4
  store float %1190, ptr %1191, align 4, !tbaa !180
  %1192 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1192, label %1193, label %1200

1193:                                             ; preds = %1181
  %1194 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1146)
  %1195 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1194, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1195, i64 0
  store float %.sroa.044.0.vec.extract, ptr %33, align 4, !tbaa !179
  %1196 = uitofp nneg i32 %.sroa.9.4 to float
  %1197 = load float, ptr %1188, align 8, !tbaa !41
  %1198 = fmul float %1197, %1196
  %1199 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1198, ptr %1199, align 4, !tbaa !180
  br label %1200

1200:                                             ; preds = %1193, %1181
  %1201 = phi float [ %1197, %1193 ], [ %1189, %1181 ]
  br i1 %68, label %1202, label %1206

1202:                                             ; preds = %1200
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #15
  %1203 = sitofp i32 %1182 to float
  %1204 = fmul float %1201, %1203
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %.sroa.0494.2, float noundef %1204)
  %1205 = load i64, ptr %34, align 8
  store i64 %1205, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #15
  br label %1206

1206:                                             ; preds = %1202, %1200
  br i1 %308, label %1207, label %1267

1207:                                             ; preds = %1206
  %1208 = getelementptr inbounds i8, ptr %.08681179, i64 3708
  %1209 = load i8, ptr %1208, align 4, !tbaa !148, !range !38, !noundef !39
  %1210 = trunc nuw i8 %1209 to i1
  br i1 %1210, label %1211, label %1267

1211:                                             ; preds = %1207
  %1212 = and i32 %5, 4096
  %.not980 = icmp eq i32 %1212, 0
  br i1 %.not980, label %1213, label %1233

1213:                                             ; preds = %1211
  %1214 = fmul float %.sroa.0494.2, 2.500000e-01
  %1215 = load float, ptr %32, align 4, !tbaa !179
  %1216 = getelementptr inbounds i8, ptr %.08681179, i64 72
  %1217 = load float, ptr %1216, align 8, !tbaa !116
  %1218 = fcmp olt float %1215, %1217
  br i1 %1218, label %1219, label %1224

1219:                                             ; preds = %1213
  %1220 = fsub float %1215, %1214
  %1221 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1220)
  %1222 = fptosi float %1221 to i32
  %1223 = sitofp i32 %1222 to float
  store float %1223, ptr %1216, align 8, !tbaa !116
  br label %1235

1224:                                             ; preds = %1213
  %1225 = load float, ptr %99, align 4, !tbaa !138
  %1226 = fsub float %.sroa.0494.2, %1225
  %1227 = fsub float %1215, %1226
  %1228 = fcmp ult float %1227, %1217
  br i1 %1228, label %1235, label %1229

1229:                                             ; preds = %1224
  %1230 = fadd float %1214, %1227
  %1231 = fptosi float %1230 to i32
  %1232 = sitofp i32 %1231 to float
  store float %1232, ptr %1216, align 8, !tbaa !116
  br label %1235

1233:                                             ; preds = %1211
  %1234 = getelementptr inbounds i8, ptr %.08681179, i64 72
  store float 0.000000e+00, ptr %1234, align 8, !tbaa !116
  br label %1235

1235:                                             ; preds = %1219, %1229, %1224, %1233
  br i1 %68, label %1236, label %1266

1236:                                             ; preds = %1235
  %1237 = load float, ptr %1191, align 4, !tbaa !180
  %1238 = load float, ptr %1188, align 8, !tbaa !41
  %1239 = fsub float %1237, %1238
  %1240 = fcmp olt float %1239, %.18781204
  br i1 %1240, label %1241, label %1243

1241:                                             ; preds = %1236
  %1242 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1239)
  %.pre1155 = load float, ptr %100, align 4, !tbaa !89
  br label %1252

1243:                                             ; preds = %1236
  %1244 = load float, ptr %100, align 4, !tbaa !89
  %1245 = fneg float %1244
  %1246 = call float @llvm.fmuladd.f32(float %1245, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1247 = fsub float %1237, %1246
  %1248 = fcmp ult float %1247, %.18781204
  br i1 %1248, label %1252, label %1249

1249:                                             ; preds = %1243
  %1250 = fsub float %1237, %.sroa.11.0.copyload
  %1251 = call float @llvm.fmuladd.f32(float %1244, float 2.000000e+00, float %1250)
  br label %1252

1252:                                             ; preds = %1243, %1249, %1241
  %1253 = phi float [ %.pre1155, %1241 ], [ %1244, %1249 ], [ %1244, %1243 ]
  %.2879 = phi float [ %1242, %1241 ], [ %1251, %1249 ], [ %.18781204, %1243 ]
  %1254 = getelementptr inbounds i8, ptr %30, i64 4
  %1255 = load float, ptr %1254, align 4, !tbaa !180
  %1256 = call float @llvm.fmuladd.f32(float %1253, float 2.000000e+00, float %1255)
  %1257 = fsub float %1256, %.sroa.11.0.copyload
  %1258 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1257, float noundef 0.000000e+00)
  %1259 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2879, float noundef 0.000000e+00, float noundef %1258)
  %1260 = getelementptr inbounds i8, ptr %.2865, i64 96
  %1261 = load float, ptr %1260, align 4, !tbaa !108
  %1262 = fsub float %1261, %1259
  %1263 = getelementptr inbounds i8, ptr %29, i64 4
  %1264 = load float, ptr %1263, align 4, !tbaa !180
  %1265 = fadd float %1264, %1262
  store float %1265, ptr %1263, align 4, !tbaa !180
  store float %1259, ptr %1260, align 4, !tbaa !108
  br label %1266

1266:                                             ; preds = %1252, %1235
  store i8 0, ptr %1208, align 4, !tbaa !148
  br label %1267

1267:                                             ; preds = %1266, %1207, %1206
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #15
  %1268 = getelementptr inbounds i8, ptr %.08681179, i64 72
  %1269 = load float, ptr %1268, align 8, !tbaa !116
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1269, float noundef 0.000000e+00)
  br i1 %.1881.in1202, label %1270, label %1339

1270:                                             ; preds = %1267
  %1271 = getelementptr inbounds i8, ptr %.08681179, i64 80
  %1272 = load i32, ptr %1271, align 4, !tbaa !146
  %1273 = getelementptr inbounds i8, ptr %.08681179, i64 84
  %1274 = load i32, ptr %1273, align 4, !tbaa !147
  %1275 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1272, i32 noundef %1274)
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds i16, ptr %1146, i64 %1276
  %1278 = load i32, ptr %1271, align 4, !tbaa !146
  %1279 = load i32, ptr %1273, align 4, !tbaa !147
  %1280 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1278, i32 noundef %1279)
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i16, ptr %1146, i64 %1281
  %1283 = select i1 %308, float 1.000000e+00, float 0x3FE3333340000000
  %1284 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1283)
  %1285 = select i1 %68, float 0.000000e+00, float -1.000000e+00
  %1286 = select i1 %68, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #15
  %1287 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1287, ptr %37, align 8
  %1288 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1288, ptr %36, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #15
  store ptr %1277, ptr %38, align 8, !tbaa !40
  %1289 = getelementptr inbounds i8, ptr %36, i64 4
  %1290 = icmp slt i32 %1275, %1280
  br i1 %1290, label %.lr.ph1147, label %._crit_edge

.lr.ph1147:                                       ; preds = %1270
  %1291 = extractelement <2 x float> %1288, i64 1
  %1292 = getelementptr inbounds i8, ptr %28, i64 12
  %1293 = getelementptr inbounds i8, ptr %28, i64 4
  %1294 = getelementptr inbounds i8, ptr %77, i64 15248
  %1295 = getelementptr inbounds i8, ptr %.2865, i64 624
  %1296 = getelementptr inbounds i8, ptr %39, i64 8
  %.pre1156 = load float, ptr %1188, align 8, !tbaa !41
  br label %1297

1297:                                             ; preds = %.lr.ph1147, %.loopexit
  %1298 = phi ptr [ %1277, %.lr.ph1147 ], [ %1331, %.loopexit ]
  %1299 = phi float [ %1291, %.lr.ph1147 ], [ %1337, %.loopexit ]
  %1300 = phi float [ %.pre1156, %.lr.ph1147 ], [ %1333, %.loopexit ]
  %1301 = load float, ptr %1292, align 4, !tbaa !181
  %1302 = fadd float %1301, %1300
  %1303 = fcmp ogt float %1299, %1302
  br i1 %1303, label %._crit_edge.loopexit, label %1304

1304:                                             ; preds = %1297
  %1305 = load float, ptr %1293, align 4, !tbaa !182
  %1306 = fcmp olt float %1299, %1305
  br i1 %1306, label %.preheader, label %1313

.preheader:                                       ; preds = %1304, %1309
  %1307 = phi ptr [ %1310, %1309 ], [ %1298, %1304 ]
  %1308 = icmp ult ptr %1307, %1282
  br i1 %1308, label %1309, label %.loopexit

1309:                                             ; preds = %.preheader
  %1310 = getelementptr inbounds i8, ptr %1307, i64 2
  store ptr %1310, ptr %38, align 8, !tbaa !40
  %1311 = load i16, ptr %1307, align 2, !tbaa !143
  %1312 = icmp eq i16 %1311, 10
  br i1 %1312, label %.loopexit, label %.preheader, !llvm.loop !183

1313:                                             ; preds = %1304
  %1314 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1298, ptr noundef nonnull %1282, ptr noundef nonnull %38, ptr noundef null, i1 noundef zeroext true)
  %.sroa.029.0.vec.extract = extractelement <2 x float> %1314, i64 0
  %1315 = fcmp ugt float %.sroa.029.0.vec.extract, 0.000000e+00
  br i1 %1315, label %1322, label %1316

1316:                                             ; preds = %1313
  %1317 = load ptr, ptr %1294, align 8, !tbaa !123
  %1318 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110) %1317, i16 noundef zeroext 32)
  %1319 = fmul float %1318, 5.000000e-01
  %1320 = fptosi float %1319 to i32
  %1321 = sitofp i32 %1320 to float
  br label %1322

1322:                                             ; preds = %1316, %1313
  %.sroa.029.0.vec.extract32.pre-phi = phi float [ %1321, %1316 ], [ %.sroa.029.0.vec.extract, %1313 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #15
  %1323 = load float, ptr %1188, align 8, !tbaa !41
  %1324 = fsub float %1285, %1323
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef %1324)
  %1325 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %41)
  store <2 x float> %1325, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %.sroa.029.0.vec.extract32.pre-phi, float noundef %1286)
  %1326 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %1326, ptr %42, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(8) %42)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %44, ptr noundef nonnull align 4 dereferenceable(16) %28)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %44)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %45, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1327 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %45)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #15
  br i1 %1327, label %1328, label %1330

1328:                                             ; preds = %1322
  %1329 = load ptr, ptr %1295, align 8, !tbaa !184
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1329, ptr noundef nonnull align 4 dereferenceable(8) %39, ptr noundef nonnull align 4 dereferenceable(8) %1296, i32 noundef %1284, float noundef 0.000000e+00, i32 noundef 0)
  br label %1330

1330:                                             ; preds = %1328, %1322
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #15
  %.pre1157 = load float, ptr %1188, align 8, !tbaa !41
  %.pre1158 = load float, ptr %1289, align 4, !tbaa !180
  %.pre1159 = load ptr, ptr %38, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1309, %1330
  %1331 = phi ptr [ %.pre1159, %1330 ], [ %1307, %.preheader ], [ %1310, %1309 ]
  %1332 = phi float [ %.pre1158, %1330 ], [ %1299, %1309 ], [ %1299, %.preheader ]
  %1333 = phi float [ %.pre1157, %1330 ], [ %1300, %1309 ], [ %1300, %.preheader ]
  %1334 = load float, ptr %29, align 8, !tbaa !179
  %1335 = load float, ptr %35, align 4, !tbaa !179
  %1336 = fsub float %1334, %1335
  store float %1336, ptr %36, align 8, !tbaa !179
  %1337 = fadd float %1333, %1332
  store float %1337, ptr %1289, align 4, !tbaa !180
  %1338 = icmp ult ptr %1331, %1282
  br i1 %1338, label %1297, label %._crit_edge.loopexit, !llvm.loop !185

._crit_edge.loopexit:                             ; preds = %1297, %.loopexit
  %.pre1160.pre.pre = load ptr, ptr %31, align 8, !tbaa !40
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1270
  %.pre1160.pre = phi ptr [ %.pre1160.pre.pre, %._crit_edge.loopexit ], [ %.pre11601162, %1270 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #15
  br label %1339

1339:                                             ; preds = %._crit_edge, %1267
  %.pre1160 = phi ptr [ %.pre1160.pre, %._crit_edge ], [ %.pre11601162, %1267 ]
  br i1 %68, label %1345, label %1340

1340:                                             ; preds = %1339
  %1341 = ptrtoint ptr %.pre1160 to i64
  %1342 = ptrtoint ptr %.0897 to i64
  %1343 = sub i64 %1341, %1342
  %1344 = icmp slt i64 %1343, 2097152
  br i1 %1344, label %1345, label %1354

1345:                                             ; preds = %1340, %1339
  %. = phi ptr [ %28, %1340 ], [ null, %1339 ]
  %1346 = zext i1 %353 to i32
  %1347 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1346, float noundef 1.000000e+00)
  %1348 = getelementptr inbounds i8, ptr %.2865, i64 624
  %1349 = load ptr, ptr %1348, align 8, !tbaa !184
  %1350 = getelementptr inbounds i8, ptr %77, i64 15248
  %1351 = load ptr, ptr %1350, align 8, !tbaa !123
  %1352 = load float, ptr %1188, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #15
  %1353 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1353, ptr %46, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1349, ptr noundef %1351, float noundef %1352, ptr noundef nonnull align 4 dereferenceable(8) %46, i32 noundef %1347, ptr noundef %.0897, ptr noundef %.pre1160, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #15
  br label %1354

1354:                                             ; preds = %1345, %1340
  br i1 %308, label %1355, label %1396

1355:                                             ; preds = %1354
  %1356 = getelementptr inbounds i8, ptr %77, i64 24
  %1357 = load float, ptr %1356, align 8, !tbaa !186
  %1358 = getelementptr inbounds i8, ptr %.08681179, i64 3704
  %1359 = load float, ptr %1358, align 8, !tbaa !187
  %1360 = fadd float %1357, %1359
  store float %1360, ptr %1358, align 8, !tbaa !187
  %1361 = getelementptr inbounds i8, ptr %77, i64 115
  %1362 = load i8, ptr %1361, align 1, !tbaa !188, !range !38, !noundef !39
  %1363 = trunc nuw i8 %1362 to i1
  %1364 = fcmp ugt float %1360, 0.000000e+00
  %or.cond1070 = select i1 %1363, i1 %1364, i1 false
  br i1 %or.cond1070, label %1365, label %1368

1365:                                             ; preds = %1355
  %1366 = call float @fmodf(float noundef %1360, float noundef 0x3FF3333340000000) #15
  %1367 = fcmp ole float %1366, 0x3FE99999A0000000
  br label %1368

1368:                                             ; preds = %1365, %1355
  %1369 = phi i1 [ true, %1355 ], [ %1367, %1365 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #15
  %1370 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %32)
  store <2 x float> %1370, ptr %48, align 8
  %1371 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1371, ptr %47, align 8
  %1372 = call <2 x float> @_ZL7ImFloorRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %47)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #15
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1372, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1372, i64 1
  %1373 = load float, ptr %1188, align 8, !tbaa !41
  %1374 = fsub float %.sroa.0.4.vec.extract, %1373
  %1375 = fadd float %1374, 5.000000e-01
  %1376 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1377 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %49, float noundef %.sroa.0.0.vec.extract, float noundef %1375, float noundef %1376, float noundef %1377)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #15
  br i1 %1369, label %1378, label %.critedge13

1378:                                             ; preds = %1368
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1379 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %49, ptr noundef nonnull align 4 dereferenceable(16) %50)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #15
  br i1 %1379, label %1380, label %1385

1380:                                             ; preds = %1378
  %1381 = getelementptr inbounds i8, ptr %.2865, i64 624
  %1382 = load ptr, ptr %1381, align 8, !tbaa !184
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #15
  %1383 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %49)
  store <2 x float> %1383, ptr %51, align 8
  %1384 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1382, ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef %1384, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #15
  br label %1385

.critedge13:                                      ; preds = %1368
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #15
  br label %1385

1385:                                             ; preds = %.critedge13, %1380, %1378
  br i1 %79, label %1395, label %1386

1386:                                             ; preds = %1385
  %1387 = getelementptr inbounds i8, ptr %77, i64 21208
  store i8 1, ptr %1387, align 8, !tbaa !189
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #15
  %1388 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1389 = load float, ptr %1188, align 8, !tbaa !41
  %1390 = fsub float %.sroa.0.4.vec.extract, %1389
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1388, float noundef %1390)
  %1391 = getelementptr inbounds i8, ptr %77, i64 21212
  %1392 = load i64, ptr %52, align 8
  store i64 %1392, ptr %1391, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #15
  %1393 = load float, ptr %1188, align 8, !tbaa !41
  %1394 = getelementptr inbounds i8, ptr %77, i64 21220
  store float %1393, ptr %1394, align 4, !tbaa !190
  br label %1395

1395:                                             ; preds = %1386, %1385
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #15
  br label %1396

1396:                                             ; preds = %1395, %1354
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  br label %1432

1397:                                             ; preds = %1134
  br i1 %68, label %.critedge1072, label %1398

1398:                                             ; preds = %1397
  br i1 %353, label %1416, label %1399

1399:                                             ; preds = %1398
  %1400 = load i32, ptr %166, align 4, !tbaa !102
  %1401 = icmp eq i32 %1400, %89
  br i1 %1401, label %1402, label %1407

1402:                                             ; preds = %1399
  %1403 = getelementptr inbounds i8, ptr %.08681179, i64 8
  %1404 = load i32, ptr %1403, align 8, !tbaa !114
  %1405 = sext i32 %1404 to i64
  %1406 = getelementptr inbounds i8, ptr %.0897, i64 %1405
  store ptr %1406, ptr %31, align 8, !tbaa !40
  br label %1416

1407:                                             ; preds = %1399
  %1408 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0897) #16
  %1409 = getelementptr inbounds i8, ptr %.0897, i64 %1408
  store ptr %1409, ptr %31, align 8, !tbaa !40
  br label %1416

.critedge1072:                                    ; preds = %1397
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #15
  %1410 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0897, ptr noundef nonnull %31)
  %1411 = sitofp i32 %1410 to float
  %1412 = getelementptr inbounds i8, ptr %77, i64 15256
  %1413 = load float, ptr %1412, align 8, !tbaa !41
  %1414 = fmul float %1413, %1411
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %.sroa.0494.2, float noundef %1414)
  %1415 = load i64, ptr %53, align 8
  store i64 %1415, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #15
  br label %1422

1416:                                             ; preds = %1398, %1402, %1407
  %1417 = phi ptr [ %1135, %1398 ], [ %1406, %1402 ], [ %1409, %1407 ]
  %1418 = ptrtoint ptr %1417 to i64
  %1419 = ptrtoint ptr %.0897 to i64
  %1420 = sub i64 %1418, %1419
  %1421 = icmp slt i64 %1420, 2097152
  br i1 %1421, label %1422, label %1432

1422:                                             ; preds = %.critedge1072, %1416
  %.14 = phi ptr [ %28, %1416 ], [ null, %.critedge1072 ]
  %1423 = zext i1 %353 to i32
  %1424 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1423, float noundef 1.000000e+00)
  %1425 = getelementptr inbounds i8, ptr %.2865, i64 624
  %1426 = load ptr, ptr %1425, align 8, !tbaa !184
  %1427 = getelementptr inbounds i8, ptr %77, i64 15248
  %1428 = load ptr, ptr %1427, align 8, !tbaa !123
  %1429 = getelementptr inbounds i8, ptr %77, i64 15256
  %1430 = load float, ptr %1429, align 8, !tbaa !41
  %1431 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1426, ptr noundef %1428, float noundef %1430, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %1424, ptr noundef %.0897, ptr noundef %1431, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1432

1432:                                             ; preds = %1416, %1422, %1396
  br i1 %brmerge993, label %1434, label %1433

1433:                                             ; preds = %1432
  call void @_ZN5ImGui7PopFontEv()
  br label %1434

1434:                                             ; preds = %1432, %1433
  br i1 %68, label %1435, label %1457

1435:                                             ; preds = %1434
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #15
  %1436 = load float, ptr %30, align 8, !tbaa !179
  %1437 = getelementptr inbounds i8, ptr %30, i64 4
  %1438 = load float, ptr %1437, align 4, !tbaa !180
  %1439 = load float, ptr %100, align 4, !tbaa !89
  %1440 = fadd float %1438, %1439
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1436, float noundef %1440)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %54)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #15
  %1441 = getelementptr inbounds i8, ptr %77, i64 16088
  %1442 = load i32, ptr %1441, align 8, !tbaa !191
  %1443 = or i32 %1442, 257
  store i32 %1443, ptr %1441, align 8, !tbaa !191
  call void @_ZN5ImGui8EndChildEv()
  %1444 = getelementptr inbounds i8, ptr %77, i64 16112
  %1445 = getelementptr inbounds i8, ptr %77, i64 16120
  %1446 = load i32, ptr %1445, align 8, !tbaa !92
  %1447 = and i32 %1446, 128
  %1448 = getelementptr inbounds i8, ptr %15, i64 8
  %1449 = load i32, ptr %1448, align 4, !tbaa !192
  %1450 = or i32 %1449, %1447
  store i32 %1450, ptr %1448, align 4, !tbaa !192
  store i32 %1442, ptr %1441, align 8, !tbaa !191
  call void @_ZN5ImGui8EndGroupEv()
  %1451 = load i32, ptr %1444, align 8, !tbaa !193
  %1452 = icmp eq i32 %1451, 0
  br i1 %1452, label %1453, label %1457

1453:                                             ; preds = %1435
  store i32 %89, ptr %1444, align 8, !tbaa !193
  %1454 = getelementptr inbounds i8, ptr %15, i64 4
  %1455 = getelementptr inbounds i8, ptr %77, i64 16116
  %1456 = load <2 x i32>, ptr %1454, align 4, !tbaa !94
  store <2 x i32> %1456, ptr %1455, align 4, !tbaa !94
  br label %1457

1457:                                             ; preds = %1435, %1453, %1434
  %1458 = getelementptr inbounds i8, ptr %77, i64 21332
  %1459 = load i8, ptr %1458, align 4, !tbaa !194, !range !38, !noundef !39
  %1460 = trunc nuw i8 %1459 to i1
  %or.cond1078 = and i1 %brmerge993, %1460
  br i1 %or.cond1078, label %1461, label %1463

1461:                                             ; preds = %1457
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1462 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %29, ptr noundef %.0897, ptr noundef %1462)
  br label %1463

1463:                                             ; preds = %1461, %1457
  br i1 %105, label %1464, label %1474

1464:                                             ; preds = %1463
  %1465 = getelementptr inbounds i8, ptr %11, i64 8
  %1466 = load float, ptr %1465, align 8, !tbaa !195
  %1467 = getelementptr inbounds i8, ptr %77, i64 14284
  %1468 = load float, ptr %1467, align 4, !tbaa !90
  %1469 = fadd float %1466, %1468
  %1470 = load float, ptr %1115, align 4, !tbaa !177
  %1471 = load float, ptr %100, align 4, !tbaa !89
  %1472 = fadd float %1470, %1471
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef %1469, float noundef %1472)
  %1473 = load <2 x float>, ptr %55, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1473, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1474

1474:                                             ; preds = %1464, %1463
  %1475 = and i32 %5, 134217728
  %.not981 = icmp eq i32 %1475, 0
  %or.cond1075 = and i1 %.not981, %.not9751129
  br i1 %or.cond1075, label %1476, label %1477

1476:                                             ; preds = %1474
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %89)
  br label %1477

1477:                                             ; preds = %1476, %1474
  %1478 = and i32 %5, 32
  %.not982 = icmp eq i32 %1478, 0
  %1479 = trunc nuw i8 %.28851200 to i1
  %.2 = select i1 %.not982, i1 %.not9751129, i1 %1479
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #15
  br label %.thread

.thread:                                          ; preds = %134, %122, %153, %1477
  %.3 = phi i1 [ %.2, %1477 ], [ false, %153 ], [ false, %122 ], [ false, %134 ]
  call void @llvm.lifetime.end.p0(i64 60, ptr nonnull %15) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  br label %1480

1480:                                             ; preds = %8, %.thread
  %.4 = phi i1 [ %.3, %.thread ], [ false, %8 ]
  ret i1 %.4
}

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

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

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

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

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

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

declare void @_ZN5ImGui8EndChildEv() local_unnamed_addr #5

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5ImGui19SetActiveIdUsingKeyEi(i32 noundef) local_unnamed_addr #8

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

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

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef, i32 noundef) local_unnamed_addr #11

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

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

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

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

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

declare noundef zeroext i1 @_ZN5ImGui12IsKeyPressedEib(i32 noundef, i1 noundef zeroext) local_unnamed_addr #5

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

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

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

declare noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv() local_unnamed_addr #5

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #5

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #5

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #5

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #5

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #5

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

declare noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #5

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(110), i16 noundef zeroext) local_unnamed_addr #11 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #10 align 2

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

declare void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @fmodf(float noundef, float noundef) local_unnamed_addr #13

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN5ImGui7PopFontEv() local_unnamed_addr #5

declare void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr) local_unnamed_addr

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 147}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !12, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !11, i64 92, !11, i64 100, !11, i64 108, !11, i64 116, !11, i64 124, !11, i64 132, !13, i64 140, !13, i64 141, !13, i64 142, !13, i64 143, !13, i64 144, !13, i64 145, !13, i64 146, !13, i64 147, !13, i64 148, !13, i64 149, !13, i64 150, !13, i64 151, !13, i64 152, !8, i64 153, !14, i64 154, !14, i64 156, !14, i64 158, !14, i64 160, !10, i64 164, !8, i64 168, !8, i64 169, !8, i64 170, !13, i64 171, !10, i64 172, !8, i64 176, !8, i64 177, !8, i64 178, !8, i64 179, !10, i64 180, !10, i64 181, !10, i64 182, !11, i64 184, !11, i64 192, !15, i64 200, !16, i64 216, !22, i64 448, !22, i64 464, !22, i64 480, !22, i64 496, !22, i64 512, !22, i64 528, !22, i64 544, !23, i64 560, !23, i64 564, !10, i64 568, !12, i64 572, !12, i64 576, !24, i64 584, !26, i64 600, !12, i64 616, !10, i64 620, !7, i64 624, !27, i64 632, !7, i64 832, !7, i64 840, !7, i64 848, !7, i64 856, !7, i64 864, !7, i64 872, !7, i64 880, !8, i64 888, !8, i64 896, !10, i64 928, !10, i64 932, !13, i64 936}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS6ImVec2", !12, i64 0, !12, i64 4}
!12 = !{!"float", !8, i64 0}
!13 = !{!"bool", !8, i64 0}
!14 = !{!"short", !8, i64 0}
!15 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!16 = !{!"_ZTS19ImGuiWindowTempData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !12, i64 56, !12, i64 60, !17, i64 64, !17, i64 68, !17, i64 72, !11, i64 76, !18, i64 84, !14, i64 88, !14, i64 90, !10, i64 92, !13, i64 96, !13, i64 97, !13, i64 98, !11, i64 100, !19, i64 108, !10, i64 136, !10, i64 140, !20, i64 144, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !12, i64 188, !12, i64 192, !21, i64 200, !21, i64 216}
!17 = !{!"_ZTS6ImVec1", !12, i64 0}
!18 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!19 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 10, !14, i64 12, !14, i64 14, !14, i64 16, !8, i64 18}
!20 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!21 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!23 = !{!"_ZTS8ImVec2ih", !14, i64 0, !14, i64 2}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!26 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS10ImDrawList", !28, i64 0, !29, i64 16, !30, i64 32, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !31, i64 88, !32, i64 104, !33, i64 120, !34, i64 136, !36, i64 168, !12, i64 192}
!28 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{!"_ZTS15ImDrawCmdHeader", !35, i64 0, !7, i64 16, !10, i64 24}
!35 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!36 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !37, i64 8}
!37 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!7, !7, i64 0}
!41 = !{!42, !12, i64 15256}
!42 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !43, i64 8, !44, i64 14168, !44, i64 14184, !45, i64 14200, !7, i64 15248, !12, i64 15256, !12, i64 15260, !46, i64 15264, !47, i64 15776, !10, i64 15784, !10, i64 15788, !10, i64 15792, !13, i64 15796, !13, i64 15797, !13, i64 15798, !13, i64 15799, !13, i64 15800, !7, i64 15808, !20, i64 15816, !20, i64 15832, !20, i64 15848, !48, i64 15864, !24, i64 15880, !10, i64 15896, !11, i64 15900, !7, i64 15912, !7, i64 15920, !7, i64 15928, !7, i64 15936, !7, i64 15944, !11, i64 15952, !12, i64 15960, !10, i64 15964, !10, i64 15968, !10, i64 15972, !13, i64 15976, !13, i64 15977, !13, i64 15978, !13, i64 15979, !12, i64 15980, !12, i64 15984, !10, i64 15988, !10, i64 15992, !12, i64 15996, !13, i64 16000, !13, i64 16001, !13, i64 16002, !13, i64 16003, !13, i64 16004, !13, i64 16005, !13, i64 16006, !10, i64 16008, !10, i64 16012, !49, i64 16016, !11, i64 16036, !7, i64 16048, !50, i64 16056, !10, i64 16060, !10, i64 16064, !13, i64 16068, !13, i64 16069, !7, i64 16072, !10, i64 16080, !12, i64 16084, !10, i64 16088, !51, i64 16092, !52, i64 16112, !53, i64 16176, !54, i64 16288, !55, i64 16304, !56, i64 16320, !15, i64 16336, !57, i64 16352, !58, i64 16368, !59, i64 16384, !59, i64 16400, !10, i64 16416, !60, i64 16424, !7, i64 16440, !10, i64 16448, !10, i64 16452, !10, i64 16456, !10, i64 16460, !10, i64 16464, !10, i64 16468, !10, i64 16472, !10, i64 16476, !10, i64 16480, !10, i64 16484, !10, i64 16488, !10, i64 16492, !50, i64 16496, !18, i64 16500, !13, i64 16504, !13, i64 16505, !13, i64 16506, !13, i64 16507, !13, i64 16508, !13, i64 16509, !13, i64 16510, !10, i64 16512, !22, i64 16516, !13, i64 16532, !13, i64 16533, !13, i64 16534, !10, i64 16536, !10, i64 16540, !10, i64 16544, !10, i64 16548, !10, i64 16552, !10, i64 16556, !22, i64 16560, !22, i64 16576, !10, i64 16592, !10, i64 16596, !10, i64 16600, !61, i64 16608, !61, i64 16656, !61, i64 16704, !61, i64 16752, !7, i64 16800, !7, i64 16808, !7, i64 16816, !12, i64 16824, !12, i64 16828, !13, i64 16832, !12, i64 16836, !10, i64 16840, !13, i64 16844, !13, i64 16845, !13, i64 16846, !10, i64 16848, !10, i64 16852, !10, i64 16856, !62, i64 16864, !22, i64 16928, !10, i64 16944, !10, i64 16948, !12, i64 16952, !10, i64 16956, !10, i64 16960, !10, i64 16964, !10, i64 16968, !63, i64 16976, !8, i64 16992, !10, i64 17008, !64, i64 17016, !7, i64 17032, !10, i64 17040, !65, i64 17048, !66, i64 17064, !21, i64 17104, !37, i64 17120, !7, i64 17136, !68, i64 17144, !70, i64 17184, !71, i64 17200, !11, i64 17216, !72, i64 17224, !76, i64 20944, !10, i64 21056, !10, i64 21060, !12, i64 21064, !12, i64 21068, !10, i64 21072, !35, i64 21076, !78, i64 21092, !12, i64 21140, !13, i64 21144, !13, i64 21145, !12, i64 21148, !12, i64 21152, !12, i64 21156, !12, i64 21160, !14, i64 21164, !14, i64 21166, !12, i64 21168, !73, i64 21176, !15, i64 21192, !79, i64 21208, !79, i64 21224, !8, i64 21240, !13, i64 21241, !12, i64 21244, !80, i64 21248, !81, i64 21264, !82, i64 21280, !83, i64 21296, !84, i64 21312, !10, i64 21328, !13, i64 21332, !85, i64 21336, !7, i64 21344, !80, i64 21352, !7, i64 21368, !7, i64 21376, !12, i64 21384, !13, i64 21388, !10, i64 21392, !10, i64 21396, !10, i64 21400, !13, i64 21404, !10, i64 21408, !86, i64 21412, !87, i64 21432, !8, i64 21464, !10, i64 21944, !10, i64 21948, !12, i64 21952, !10, i64 21956, !10, i64 21960, !10, i64 21964, !8, i64 21968}
!43 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !7, i64 24, !7, i64 32, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !7, i64 64, !7, i64 72, !12, i64 80, !13, i64 84, !7, i64 88, !11, i64 96, !13, i64 104, !13, i64 105, !13, i64 106, !13, i64 107, !13, i64 108, !13, i64 109, !13, i64 110, !12, 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, !7, i64 192, !13, i64 200, !13, i64 201, !13, i64 202, !13, i64 203, !13, i64 204, !13, i64 205, !13, i64 206, !12, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !11, i64 232, !8, i64 240, !8, i64 2820, !11, i64 3332, !8, i64 3340, !12, i64 3348, !12, i64 3352, !13, i64 3356, !13, i64 3357, !13, i64 3358, !13, i64 3359, !8, i64 3360, !10, i64 3440, !10, i64 3444, !8, i64 3448, !13, i64 13768, !11, i64 13772, !8, i64 13780, !8, i64 13824, !8, i64 13864, !8, i64 13869, !8, i64 13874, !8, i64 13884, !8, i64 13894, !8, i64 13899, !8, i64 13904, !8, i64 13912, !8, i64 13932, !8, i64 13952, !8, i64 13972, !8, i64 14052, !12, i64 14132, !13, i64 14136, !8, i64 14137, !13, i64 14138, !14, i64 14140, !29, i64 14144}
!44 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !7, i64 8}
!45 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !12, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 32, !10, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !11, i64 60, !12, i64 68, !12, i64 72, !11, i64 76, !11, i64 84, !11, i64 92, !11, i64 100, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !10, i64 148, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !12, i64 184, !13, i64 188, !13, i64 189, !13, i64 190, !12, i64 192, !12, i64 196, !8, i64 200}
!46 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !35, i64 28, !10, i64 44, !8, i64 48, !12, i64 432, !8, i64 436, !7, i64 504}
!47 = !{!"double", !8, i64 0}
!48 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!49 = !{!"_ZTS10ImBitArrayILi133ELin512EE", !8, i64 0}
!50 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!51 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !10, i64 8, !10, i64 12, !13, i64 16}
!52 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !22, i64 12, !22, i64 28, !22, i64 44}
!53 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !13, i64 56, !22, i64 60, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100}
!54 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!55 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!56 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!57 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!58 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!59 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!61 = !{!"_ZTS16ImGuiNavItemData", !7, i64 0, !10, i64 8, !10, i64 12, !22, i64 16, !10, i64 32, !12, i64 36, !12, i64 40, !12, i64 44}
!62 = !{!"_ZTS12ImGuiPayload", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !13, i64 57, !13, i64 58}
!63 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS6ImPoolI10ImGuiTableE", !67, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!67 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!68 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !69, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!69 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !29, i64 16, !73, i64 32, !73, i64 48, !13, i64 64, !10, i64 68, !12, i64 72, !74, i64 76, !12, i64 3704, !13, i64 3708, !13, i64 3709, !13, i64 3710, !10, i64 3712}
!73 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!74 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !10, i64 16, !8, i64 20, !8, i64 21, !8, i64 22, !8, i64 23, !8, i64 24, !8, i64 25, !8, i64 26, !12, i64 28, !75, i64 32}
!75 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!76 = !{!"_ZTS6ImFont", !21, i64 0, !12, i64 16, !12, i64 20, !29, i64 24, !77, i64 40, !7, i64 56, !7, i64 64, !7, i64 72, !14, i64 80, !14, i64 82, !14, i64 84, !14, i64 86, !13, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !10, i64 104, !8, i64 108}
!77 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!78 = !{!"_ZTS21ImGuiComboPreviewData", !22, i64 0, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !10, i64 44}
!79 = !{!"_ZTS20ImGuiPlatformImeData", !13, i64 0, !11, i64 4, !12, i64 12}
!80 = !{!"_ZTS15ImGuiTextBuffer", !73, i64 0}
!81 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!82 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !73, i64 0}
!83 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !73, i64 0}
!84 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!85 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!86 = !{!"_ZTS18ImGuiMetricsConfig", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !13, i64 5, !10, i64 8, !10, i64 12}
!87 = !{!"_ZTS14ImGuiStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !88, i64 16}
!88 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!89 = !{!45, !12, i64 64}
!90 = !{!45, !12, i64 84}
!91 = !{!12, !12, i64 0}
!92 = !{!42, !10, i64 16120}
!93 = !{i64 0, i64 4, !94, i64 4, i64 4, !94, i64 8, i64 4, !94, i64 12, i64 4, !91, i64 16, i64 4, !91, i64 20, i64 4, !91, i64 24, i64 4, !91, i64 28, i64 4, !91, i64 32, i64 4, !91, i64 36, i64 4, !91, i64 40, i64 4, !91, i64 44, i64 4, !91, i64 48, i64 4, !91, i64 52, i64 4, !91, i64 56, i64 4, !91}
!94 = !{!10, !10, i64 0}
!95 = !{!45, !12, i64 68}
!96 = !{!45, !12, i64 72}
!97 = !{!42, !7, i64 15912}
!98 = !{!6, !18, i64 300}
!99 = !{!6, !14, i64 306}
!100 = !{!6, !12, i64 132}
!101 = !{!42, !10, i64 16840}
!102 = !{!42, !10, i64 15988}
!103 = !{!42, !10, i64 16468}
!104 = !{!42, !10, i64 16456}
!105 = !{!42, !50, i64 16496}
!106 = !{!13, !13, i64 0}
!107 = !{!42, !10, i64 16064}
!108 = !{!6, !12, i64 96}
!109 = !{!72, !8, i64 99}
!110 = !{!72, !7, i64 56}
!111 = !{!72, !13, i64 64}
!112 = !{!72, !7, i64 24}
!113 = !{!72, !10, i64 4}
!114 = !{!72, !10, i64 8}
!115 = !{!72, !10, i64 0}
!116 = !{!72, !12, i64 72}
!117 = !{!42, !10, i64 16472}
!118 = !{!43, !13, i64 3356}
!119 = !{!72, !8, i64 88}
!120 = !{!72, !10, i64 16}
!121 = !{!72, !7, i64 40}
!122 = !{!8, !8, i64 0}
!123 = !{!42, !7, i64 15248}
!124 = !{!76, !12, i64 20}
!125 = !{!76, !12, i64 100}
!126 = !{!76, !7, i64 64}
!127 = !{!76, !7, i64 56}
!128 = !{!129, !12, i64 4}
!129 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 0, !10, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36}
!130 = !{!76, !12, i64 16}
!131 = !{!72, !13, i64 3710}
!132 = !{!72, !10, i64 68}
!133 = !{!72, !10, i64 3712}
!134 = !{!42, !13, i64 16001}
!135 = !{!42, !10, i64 21964}
!136 = !{!43, !12, i64 3332}
!137 = !{!22, !12, i64 0}
!138 = !{!45, !12, i64 60}
!139 = !{!43, !12, i64 3336}
!140 = !{!6, !12, i64 220}
!141 = !{!43, !13, i64 105}
!142 = !{!72, !13, i64 3709}
!143 = !{!14, !14, i64 0}
!144 = !{!43, !13, i64 3357}
!145 = !{!72, !10, i64 76}
!146 = !{!72, !10, i64 80}
!147 = !{!72, !10, i64 84}
!148 = !{!72, !13, i64 3708}
!149 = !{!43, !12, i64 232}
!150 = !{!43, !12, i64 236}
!151 = !{!43, !13, i64 3358}
!152 = !{!43, !13, i64 3359}
!153 = !{!43, !10, i64 14144}
!154 = distinct !{!154, !155}
!155 = !{!"llvm.loop.mustprogress"}
!156 = !{!42, !13, i64 16000}
!157 = !{!43, !10, i64 3440}
!158 = !{!72, !10, i64 92}
!159 = !{!43, !7, i64 168}
!160 = distinct !{!160, !155}
!161 = !{!72, !10, i64 48}
!162 = !{!29, !7, i64 8}
!163 = !{!29, !10, i64 0}
!164 = !{!72, !10, i64 32}
!165 = !{!166, !10, i64 0}
!166 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !7, i64 8, !14, i64 16, !10, i64 20, !7, i64 24, !10, i64 32, !10, i64 36, !13, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!167 = !{!166, !10, i64 4}
!168 = !{!166, !7, i64 8}
!169 = !{!166, !10, i64 20}
!170 = !{!166, !7, i64 24}
!171 = !{!166, !10, i64 32}
!172 = !{!166, !10, i64 36}
!173 = !{!166, !10, i64 44}
!174 = !{!166, !10, i64 48}
!175 = !{!166, !10, i64 52}
!176 = !{!166, !13, i64 40}
!177 = !{!22, !12, i64 4}
!178 = distinct !{!178, !155}
!179 = !{!11, !12, i64 0}
!180 = !{!11, !12, i64 4}
!181 = !{!35, !12, i64 12}
!182 = !{!35, !12, i64 4}
!183 = distinct !{!183, !155}
!184 = !{!6, !7, i64 624}
!185 = distinct !{!185, !155}
!186 = !{!43, !12, i64 16}
!187 = !{!72, !12, i64 3704}
!188 = !{!42, !13, i64 115}
!189 = !{!42, !13, i64 21208}
!190 = !{!42, !12, i64 21220}
!191 = !{!42, !10, i64 16088}
!192 = !{!52, !10, i64 8}
!193 = !{!42, !10, i64 16112}
!194 = !{!42, !13, i64 21332}
!195 = !{!22, !12, i64 8}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass