; LLVM IR from Overload-Technologies/Overload :: Dependencies/ImGui/src (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.ImRect, i32 }
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { ptr, i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }
%struct.ImGuiWindow = type <{ ptr, ptr, i32, i32, i32, i32, %struct.ImGuiWindowClass, ptr, i32, %struct.ImVec2, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, i32, i32, 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, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, i16, i8, i8, i8, [3 x i8], i32, i8, i8, i8, i8, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8], %struct.ImVector, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImVec2ih, %struct.ImVec2ih, i32, i32, float, float, %struct.ImGuiStorage, %struct.ImVector.3, float, float, float, float, i32, [4 x i8], ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], [2 x %struct.ImVec2], i32, i32, i32, i8, i8, i16, %struct.ImGuiWindowDockStyle, ptr, ptr, i32, [4 x i8] }>
%struct.ImGuiWindowClass = type <{ i32, i32, i32, i32, i32, i32, i32, i8, i8, [2 x i8] }>
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, %struct.ImVec2, i32, i16, i16, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.0, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, 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, %struct.ImVector.7, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, float, ptr }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, i64, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.8 }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImGuiWindowDockStyle = type { [8 x i32] }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiPlatformIO, %struct.ImGuiStyle, i32, i32, ptr, float, float, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i32, i32, i8, i8, i8, i8, ptr, [16 x i8], %struct.ImVector.14, %struct.ImVector.14, i32, i32, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.15, %struct.ImGuiStorage, i32, float, i32, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i32, i32, float, float, i8, i8, i8, i32, i32, float, i8, i8, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, %struct.ImGuiDeactivatedItemData, %struct.ImGuiDataTypeStorage, i32, float, double, double, double, %struct.ImBitArray, [155 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, i8, i32, %struct.ImVector.17, %struct.ImVector.18, %struct.ImVector.19, %struct.ImVector.20, %struct.ImVector.21, %struct.ImVector.22, %struct.ImVector.23, %struct.ImVector.23, %struct.ImVector.24, %struct.ImVector.25, ptr, ptr, ptr, i32, %struct.ImGuiPlatformMonitor, %struct.ImRect, i32, i32, i32, i8, i8, i8, i8, i32, ptr, i32, i32, i32, i32, i32, i32, %struct.ImVector.20, i32, float, i32, i32, i32, i64, i8, i8, i8, i8, %struct.ImGuiNavItemData, i8, i8, i8, i32, i32, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, %struct.ImGuiNavItemData, i32, i32, i32, i32, i8, i8, i32, i32, ptr, ptr, ptr, float, float, i8, i32, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.11, [16 x i8], i32, %struct.ImVector.26, ptr, i32, i32, %struct.ImVector.27, %struct.ImPool, %struct.ImVector.1, %struct.ImVector.8, ptr, %struct.ImPool.29, %struct.ImVector.31, %struct.ImVector.32, %struct.ImGuiBoxSelectState, ptr, i32, %struct.ImVector.33, %struct.ImPool.34, i32, i32, float, float, i32, i32, i32, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, %struct.ImGuiDataTypeStorage, i32, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, %struct.ImRect, i8, i16, float, float, float, i8, i8, float, float, float, i16, i16, ptr, %struct.ImVector.36, %struct.ImVector, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i32, [4 x i8], %struct.ImGuiDockContext, ptr, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.40, %struct.ImChunkStream, %struct.ImChunkStream.41, %struct.ImVector.42, i32, [13 x ptr], i8, i32, ptr, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, ptr, ptr, %struct.ImVec2, i8, i32, %struct.ImGuiErrorRecoveryState, ptr, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, i32, i32, i8, i8, i8, i32, i8, i8, i8, i32, float, %struct.ImVec4, %struct.ImGuiMetricsConfig, %struct.ImGuiIDStackTool, %struct.ImGuiDebugAllocInfo, ptr, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.36, [64 x i8] }
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, %struct.ImVec2, ptr, %struct.ImVec2, [5 x i8], float, float, i32, i32, i8, i8, i8, i8, i32, [155 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 double], [5 x i8], [5 x i8], i8, i8, [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], float, i8, i8, i16, %struct.ImVector.5, ptr, ptr, ptr }
%struct.ImGuiKeyData = type { i8, float, float, float }
%struct.ImGuiPlatformIO = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVector.12, %struct.ImVector.13 }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, 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, float, float, float, float, float, %struct.ImVec2, i32, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, i8, float, float, [58 x %struct.ImVec4], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type <{ %struct.ImVec2, ptr, ptr, float, float, float, float, float, i32, %struct.ImVec4, %struct.ImVector.7, [48 x %struct.ImVec2], float, [64 x i8], [4 x i8] }>
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImGuiDeactivatedItemData = type { i32, i32, i8, i8 }
%struct.ImBitArray = type { [5 x i32] }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [155 x i16], %struct.ImVector.16, %struct.ImVector.16 }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, i32, [4 x i8], i64, float, i32, i32, i8, i8, %struct.ImGuiDataTypeStorage, [2 x i8], i32, [4 x i8] }>
%struct.ImGuiNextWindowData = type { i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i32, i8, i8, %struct.ImRect, ptr, ptr, float, i32, i32, %struct.ImGuiWindowClass, %struct.ImVec2, i32 }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.18 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiPlatformMonitor = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, ptr }
%struct.ImVector.20 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type { ptr, i32, i32, %struct.ImRect, i32, float, float, float, i64 }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImVector.27 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.28, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImPool.29 = type { %struct.ImVector.30, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.30 = type { i32, i32, ptr }
%struct.ImVector.31 = type { i32, i32, ptr }
%struct.ImVector.32 = type { i32, i32, ptr }
%struct.ImGuiBoxSelectState = type <{ i32, i8, i8, i8, i8, i8, i16, i8, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, [4 x i8], ptr, i8, [3 x i8], %struct.ImRect, %struct.ImRect, %struct.ImRect, [4 x i8] }>
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImPool.34 = type { %struct.ImVector.35, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, ptr, i32, i32, i32, [4 x i8], ptr, %struct.ImVector.36, %struct.ImVector.36, %struct.ImVector.36, i32, %struct.ImVec2, float, i8, i8, i8, i8, i32, i32, [4 x i8] }>
%struct.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.36 }
%struct.ImFont = type <{ %struct.ImVector.1, float, float, %struct.ImVector.5, %struct.ImVector.37, ptr, ptr, ptr, i16, i16, i16, i16, float, float, float, float, float, i32, i8, [1 x i8], [6 x i8] }>
%struct.ImVector.37 = type { i32, i32, ptr }
%struct.ImGuiDataTypeStorage = type { [8 x i8] }
%struct.ImGuiComboPreviewData = type { %struct.ImRect, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32 }
%struct.ImGuiTypingSelectState = type <{ %struct.ImGuiTypingSelectRequest, [64 x i8], i32, i32, float, i8, [3 x i8] }>
%struct.ImGuiTypingSelectRequest = type { i32, i32, ptr, i8, i8, i8 }
%struct.ImGuiPlatformImeData = type { i8, %struct.ImVec2, float }
%struct.ImGuiDockContext = type <{ %struct.ImGuiStorage, %struct.ImVector.38, %struct.ImVector.39, i8, [7 x i8] }>
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImVector.39 = type { i32, i32, ptr }
%struct.ImVector.40 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.36 }
%struct.ImChunkStream.41 = type { %struct.ImVector.36 }
%struct.ImVector.42 = type { i32, i32, ptr }
%struct.ImGuiErrorRecoveryState = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.36 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.21, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32 }
%struct.ImGuiIDStackTool = type { i32, i32, i32, %struct.ImVector.43, i8, float, %struct.ImGuiTextBuffer }
%struct.ImVector.43 = type { i32, i32, ptr }
%struct.ImGuiDebugAllocInfo = type { i32, i32, i16, [6 x %struct.ImGuiDebugAllocEntry] }
%struct.ImGuiDebugAllocEntry = type { i32, i16, i16 }
%"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 i8], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImGuiViewport = type <{ i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i32, ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, [4 x i8] }>

@GImGui = external global ptr, align 8
@.str = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [105 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.60 = 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.61 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [25 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys = external hidden unnamed_addr constant [8 x i32], align 16
@.str.69 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [34 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) #4

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) #5

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

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef, i32 noundef) #4

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

declare void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef, i32 noundef, i32 noundef) #4

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() #4

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1212), ptr noundef, ptr noundef) #4

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

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

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

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

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

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

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

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

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

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

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

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

; 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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) #4

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #4

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

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

declare void @_ZN5ImGui14SetMouseCursorEi(i32 noundef) #4

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #4

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

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

declare i32 @__gxx_personality_v0(...)

declare void @_ZN5ImGui10BeginGroupEv() #4

declare void @_ZN5ImGui8EndGroupEv() #4

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

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

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

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

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

194:                                              ; preds = %8
  %195 = load ptr, ptr %12, align 8, !tbaa !5
  %196 = icmp ne ptr %195, null
  br i1 %196, label %197, label %200

197:                                              ; preds = %194
  %198 = load i32, ptr %13, align 4, !tbaa !9
  %199 = icmp sge i32 %198, 0
  br label %200

200:                                              ; preds = %197, %194
  %201 = phi i1 [ false, %194 ], [ %199, %197 ]
  br i1 %201, label %202, label %203

202:                                              ; preds = %200
  br label %205

203:                                              ; preds = %200
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.2, i32 noundef 4467, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

204:                                              ; No predecessors!
  br label %205

205:                                              ; preds = %204, %202
  %206 = load i32, ptr %15, align 4, !tbaa !9
  %207 = and i32 %206, 524288
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %209, label %213

209:                                              ; preds = %205
  %210 = load i32, ptr %15, align 4, !tbaa !9
  %211 = and i32 %210, 67108864
  %212 = icmp ne i32 %211, 0
  br label %213

213:                                              ; preds = %209, %205
  %214 = phi i1 [ false, %205 ], [ %212, %209 ]
  %215 = xor i1 %214, true
  br i1 %215, label %216, label %217

216:                                              ; preds = %213
  br label %219

217:                                              ; preds = %213
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.2, i32 noundef 4468, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

218:                                              ; No predecessors!
  br label %219

219:                                              ; preds = %218, %216
  %220 = load i32, ptr %15, align 4, !tbaa !9
  %221 = and i32 %220, 262144
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %223, label %227

223:                                              ; preds = %219
  %224 = load i32, ptr %15, align 4, !tbaa !9
  %225 = and i32 %224, 32
  %226 = icmp ne i32 %225, 0
  br label %227

227:                                              ; preds = %223, %219
  %228 = phi i1 [ false, %219 ], [ %226, %223 ]
  %229 = xor i1 %228, true
  br i1 %229, label %230, label %231

230:                                              ; preds = %227
  br label %233

231:                                              ; preds = %227
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.2, i32 noundef 4469, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

232:                                              ; No predecessors!
  br label %233

233:                                              ; preds = %232, %230
  %234 = load i32, ptr %15, align 4, !tbaa !9
  %235 = and i32 %234, 131072
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %241

237:                                              ; preds = %233
  %238 = load i32, ptr %15, align 4, !tbaa !9
  %239 = and i32 %238, 67108864
  %240 = icmp ne i32 %239, 0
  br label %241

241:                                              ; preds = %237, %233
  %242 = phi i1 [ false, %233 ], [ %240, %237 ]
  %243 = xor i1 %242, true
  br i1 %243, label %244, label %245

244:                                              ; preds = %241
  br label %247

245:                                              ; preds = %241
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.2, i32 noundef 4470, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

246:                                              ; No predecessors!
  br label %247

247:                                              ; preds = %246, %244
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %248 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %248, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #13
  %249 = load ptr, ptr %20, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.ImGuiContext, ptr %249, i32 0, i32 2
  store ptr %250, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #13
  %251 = load ptr, ptr %20, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.ImGuiContext, ptr %251, i32 0, i32 4
  store ptr %252, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  store i8 0, ptr %23, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #13
  %253 = load i32, ptr %15, align 4, !tbaa !9
  %254 = and i32 %253, 67108864
  %255 = icmp ne i32 %254, 0
  %256 = zext i1 %255 to i8
  store i8 %256, ptr %24, align 1, !tbaa !47
  %257 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %258 = trunc i8 %257 to i1
  br i1 %258, label %259, label %260

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

260:                                              ; preds = %259, %247
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #13
  %261 = load ptr, ptr %18, align 8, !tbaa !5
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1212) %261, ptr noundef %262, ptr noundef null)
  store i32 %263, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #13
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %264, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %265, ptr %26, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #13
  %266 = load ptr, ptr %14, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %266, i64 8, i1 false), !tbaa.struct !48
  %267 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %268 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %269 = trunc i8 %268 to i1
  br i1 %269, label %270, label %275

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

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

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

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

300:                                              ; preds = %278
  br label %301

301:                                              ; preds = %300, %292
  %302 = phi float [ %299, %292 ], [ 0.000000e+00, %300 ]
  %303 = fadd float %288, %302
  %304 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 1
  %305 = load float, ptr %304, align 4, !tbaa !119
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef %303, float noundef %305)
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #13
  %306 = load ptr, ptr %18, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.ImGuiWindow, ptr %306, i32 0, i32 78
  %308 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %307, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #13
  %309 = load ptr, ptr %18, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.ImGuiWindow, ptr %309, i32 0, i32 78
  %311 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %310, i32 0, i32 0
  %312 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %311, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %312, ptr %31, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %30, ptr noundef nonnull align 4 dereferenceable(8) %308, ptr noundef nonnull align 4 dereferenceable(8) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #13
  %313 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #13
  %314 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %315 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %314, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %315, ptr %33, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(8) %313, ptr noundef nonnull align 4 dereferenceable(8) %33)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %316 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %316, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 4 %27, i64 8, i1 false), !tbaa.struct !48
  call void @llvm.lifetime.start.p0(i64 80, ptr %36) #13
  call void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(80) %36)
  %317 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %318 = trunc i8 %317 to i1
  br i1 %318, label %319, label %420

319:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #13
  %320 = load ptr, ptr %18, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct.ImGuiWindow, ptr %320, i32 0, i32 78
  %322 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %321, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 8 %322, i64 8, i1 false), !tbaa.struct !48
  %323 = load ptr, ptr %22, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ImGuiStyle, ptr %323, i32 0, i32 13
  %325 = getelementptr inbounds %struct.ImVec2, ptr %324, i32 0, i32 1
  %326 = load float, ptr %325, align 4, !tbaa !120
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef %326)
  %327 = load i32, ptr %25, align 4, !tbaa !9
  %328 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef %327, ptr noundef %30, i32 noundef 1048576)
  br i1 %328, label %330, label %329

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

330:                                              ; preds = %319
  %331 = load ptr, ptr %20, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ImGuiContext, ptr %331, i32 0, i32 91
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %332, i64 80, i1 false), !tbaa.struct !123
  %333 = load ptr, ptr %18, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.ImGuiWindow, ptr %333, i32 0, i32 78
  %335 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %334, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %335, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !48
  %336 = load ptr, ptr %20, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.ImGuiContext, ptr %336, i32 0, i32 122
  %338 = load i32, ptr %337, align 8, !tbaa !124
  %339 = load i32, ptr %25, align 4, !tbaa !9
  %340 = icmp eq i32 %338, %339
  br i1 %340, label %341, label %354

341:                                              ; preds = %330
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ImGuiContext, ptr %342, i32 0, i32 125
  %344 = load i32, ptr %343, align 4, !tbaa !125
  %345 = and i32 %344, 8
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %354

347:                                              ; preds = %341
  %348 = load i32, ptr %15, align 4, !tbaa !9
  %349 = and i32 %348, 32
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %354

351:                                              ; preds = %347
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ImGuiContext, ptr %352, i32 0, i32 122
  store i32 0, ptr %353, align 8, !tbaa !124
  br label %354

354:                                              ; preds = %351, %347, %341, %330
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #13
  %355 = load ptr, ptr %20, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.ImGuiContext, ptr %355, i32 0, i32 122
  %357 = load i32, ptr %356, align 8, !tbaa !124
  store i32 %357, ptr %38, align 4, !tbaa !9
  %358 = load ptr, ptr %20, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.ImGuiContext, ptr %358, i32 0, i32 59
  %360 = load i32, ptr %359, align 4, !tbaa !126
  %361 = load i32, ptr %25, align 4, !tbaa !9
  %362 = icmp eq i32 %360, %361
  br i1 %362, label %363, label %366

363:                                              ; preds = %354
  %364 = load ptr, ptr %20, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiContext, ptr %364, i32 0, i32 122
  store i32 0, ptr %365, align 8, !tbaa !124
  br label %366

366:                                              ; preds = %363, %354
  %367 = load ptr, ptr %22, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.ImGuiStyle, ptr %367, i32 0, i32 51
  %369 = getelementptr inbounds [58 x %struct.ImVec4], ptr %368, i64 0, i64 7
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %369)
  %370 = load ptr, ptr %22, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.ImGuiStyle, ptr %370, i32 0, i32 14
  %372 = load float, ptr %371, align 4, !tbaa !127
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %372)
  %373 = load ptr, ptr %22, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.ImGuiStyle, ptr %373, i32 0, i32 15
  %375 = load float, ptr %374, align 4, !tbaa !128
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %375)
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(8) %39)
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #13
  %376 = load ptr, ptr %10, align 8, !tbaa !5
  %377 = load i32, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  %378 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %30)
  store <2 x float> %378, ptr %41, align 4
  %379 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2ii(ptr noundef %376, i32 noundef %377, ptr noundef nonnull align 4 dereferenceable(8) %41, i32 noundef 1, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #13
  %380 = zext i1 %379 to i8
  store i8 %380, ptr %40, align 1, !tbaa !47
  %381 = load i32, ptr %38, align 4, !tbaa !9
  %382 = load ptr, ptr %20, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.ImGuiContext, ptr %382, i32 0, i32 122
  store i32 %381, ptr %383, align 8, !tbaa !124
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  %384 = load i8, ptr %40, align 1, !tbaa !47, !range !45, !noundef !46
  %385 = trunc i8 %384 to i1
  br i1 %385, label %387, label %386

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

387:                                              ; preds = %366
  %388 = load ptr, ptr %20, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.ImGuiContext, ptr %388, i32 0, i32 37
  %390 = load ptr, ptr %389, align 8, !tbaa !129
  store ptr %390, ptr %34, align 8, !tbaa !5
  %391 = load ptr, ptr %34, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.ImGuiWindow, ptr %391, i32 0, i32 78
  %393 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %392, i32 0, i32 15
  %394 = load i32, ptr %393, align 8, !tbaa !130
  %395 = shl i32 1, %394
  %396 = load ptr, ptr %34, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.ImGuiWindow, ptr %396, i32 0, i32 78
  %398 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %397, i32 0, i32 17
  %399 = load i16, ptr %398, align 2, !tbaa !131
  %400 = sext i16 %399 to i32
  %401 = or i32 %400, %395
  %402 = trunc i32 %401 to i16
  store i16 %402, ptr %398, align 2, !tbaa !131
  %403 = load ptr, ptr %22, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.ImGuiStyle, ptr %403, i32 0, i32 13
  %405 = load ptr, ptr %34, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.ImGuiWindow, ptr %405, i32 0, i32 78
  %407 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %406, i32 0, i32 0
  %408 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %407, ptr noundef nonnull align 4 dereferenceable(8) %404)
  %409 = load ptr, ptr %34, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.ImGuiWindow, ptr %409, i32 0, i32 38
  %411 = getelementptr inbounds %struct.ImVec2, ptr %410, i32 0, i32 0
  %412 = load float, ptr %411, align 4, !tbaa !132
  %413 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %414 = load float, ptr %413, align 4, !tbaa !121
  %415 = fsub float %414, %412
  store float %415, ptr %413, align 4, !tbaa !121
  store i32 0, ptr %19, align 4
  br label %416

416:                                              ; preds = %387, %386
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #13
  br label %417

417:                                              ; preds = %416, %329
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #13
  %418 = load i32, ptr %19, align 4
  switch i32 %418, label %3707 [
    i32 0, label %419
  ]

419:                                              ; preds = %417
  br label %434

420:                                              ; preds = %301
  %421 = load ptr, ptr %22, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiStyle, ptr %421, i32 0, i32 13
  %423 = getelementptr inbounds %struct.ImVec2, ptr %422, i32 0, i32 1
  %424 = load float, ptr %423, align 4, !tbaa !120
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef %424)
  %425 = load i32, ptr %15, align 4, !tbaa !9
  %426 = and i32 %425, 134217728
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %433, label %428

428:                                              ; preds = %420
  %429 = load i32, ptr %25, align 4, !tbaa !9
  %430 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef %429, ptr noundef %30, i32 noundef 1048576)
  br i1 %430, label %432, label %431

431:                                              ; preds = %428
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3707

432:                                              ; preds = %428
  br label %433

433:                                              ; preds = %432, %420
  br label %434

434:                                              ; preds = %433, %419
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #13
  %435 = load i32, ptr %25, align 4, !tbaa !9
  %436 = load ptr, ptr %20, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ImGuiContext, ptr %436, i32 0, i32 91
  %438 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %437, i32 0, i32 1
  %439 = load i32, ptr %438, align 4, !tbaa !133
  %440 = or i32 %439, 32768
  %441 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %30, i32 noundef %435, i32 noundef %440)
  %442 = zext i1 %441 to i8
  store i8 %442, ptr %42, align 1, !tbaa !47
  %443 = load i8, ptr %42, align 1, !tbaa !47, !range !45, !noundef !46
  %444 = trunc i8 %443 to i1
  br i1 %444, label %445, label %446

445:                                              ; preds = %434
  call void @_ZN5ImGui14SetMouseCursorEi(i32 noundef 1)
  br label %446

446:                                              ; preds = %445, %434
  %447 = load i8, ptr %42, align 1, !tbaa !47, !range !45, !noundef !46
  %448 = trunc i8 %447 to i1
  br i1 %448, label %449, label %455

449:                                              ; preds = %446
  %450 = load ptr, ptr %20, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiContext, ptr %450, i32 0, i32 115
  %452 = load i8, ptr %451, align 1, !tbaa !134, !range !45, !noundef !46
  %453 = trunc i8 %452 to i1
  br i1 %453, label %454, label %455

454:                                              ; preds = %449
  store i8 0, ptr %42, align 1, !tbaa !47
  br label %455

455:                                              ; preds = %454, %449, %446
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #13
  %456 = load i32, ptr %25, align 4, !tbaa !9
  %457 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %456)
  store ptr %457, ptr %43, align 8, !tbaa !5
  %458 = load ptr, ptr %20, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ImGuiContext, ptr %458, i32 0, i32 91
  %460 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %459, i32 0, i32 1
  %461 = load i32, ptr %460, align 4, !tbaa !133
  %462 = and i32 %461, 2048
  %463 = icmp ne i32 %462, 0
  br i1 %463, label %464, label %467

464:                                              ; preds = %455
  %465 = load i32, ptr %15, align 4, !tbaa !9
  %466 = or i32 %465, 512
  store i32 %466, ptr %15, align 4, !tbaa !9
  br label %467

467:                                              ; preds = %464, %455
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #13
  %468 = load i32, ptr %15, align 4, !tbaa !9
  %469 = and i32 %468, 512
  %470 = icmp ne i32 %469, 0
  %471 = zext i1 %470 to i8
  store i8 %471, ptr %44, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #13
  %472 = load i32, ptr %15, align 4, !tbaa !9
  %473 = and i32 %472, 1024
  %474 = icmp ne i32 %473, 0
  %475 = zext i1 %474 to i8
  store i8 %475, ptr %45, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #13
  %476 = load i32, ptr %15, align 4, !tbaa !9
  %477 = and i32 %476, 65536
  %478 = icmp eq i32 %477, 0
  %479 = zext i1 %478 to i8
  store i8 %479, ptr %46, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #13
  %480 = load i32, ptr %15, align 4, !tbaa !9
  %481 = and i32 %480, 4194304
  %482 = icmp ne i32 %481, 0
  %483 = zext i1 %482 to i8
  store i8 %483, ptr %47, align 1, !tbaa !47
  %484 = load i8, ptr %47, align 1, !tbaa !47, !range !45, !noundef !46
  %485 = trunc i8 %484 to i1
  br i1 %485, label %486, label %493

486:                                              ; preds = %467
  %487 = load ptr, ptr %16, align 8, !tbaa !5
  %488 = icmp ne ptr %487, null
  br i1 %488, label %489, label %490

489:                                              ; preds = %486
  br label %492

490:                                              ; preds = %486
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.2, i32 noundef 4559, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

491:                                              ; No predecessors!
  br label %492

492:                                              ; preds = %491, %489
  br label %493

493:                                              ; preds = %492, %467
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #13
  %494 = load ptr, ptr %20, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.ImGuiContext, ptr %494, i32 0, i32 59
  %496 = load i32, ptr %495, align 4, !tbaa !126
  %497 = load i32, ptr %25, align 4, !tbaa !9
  %498 = icmp ne i32 %496, %497
  br i1 %498, label %499, label %520

499:                                              ; preds = %493
  %500 = load ptr, ptr %20, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.ImGuiContext, ptr %500, i32 0, i32 122
  %502 = load i32, ptr %501, align 8, !tbaa !124
  %503 = load i32, ptr %25, align 4, !tbaa !9
  %504 = icmp eq i32 %502, %503
  br i1 %504, label %505, label %518

505:                                              ; preds = %499
  %506 = load ptr, ptr %20, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.ImGuiContext, ptr %506, i32 0, i32 125
  %508 = load i32, ptr %507, align 4, !tbaa !125
  %509 = and i32 %508, 1
  %510 = icmp ne i32 %509, 0
  br i1 %510, label %516, label %511

511:                                              ; preds = %505
  %512 = load ptr, ptr %20, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.ImGuiContext, ptr %512, i32 0, i32 131
  %514 = load i32, ptr %513, align 8, !tbaa !135
  %515 = icmp eq i32 %514, 2
  br label %516

516:                                              ; preds = %511, %505
  %517 = phi i1 [ true, %505 ], [ %515, %511 ]
  br label %518

518:                                              ; preds = %516, %499
  %519 = phi i1 [ false, %499 ], [ %517, %516 ]
  br label %520

520:                                              ; preds = %518, %493
  %521 = phi i1 [ false, %493 ], [ %519, %518 ]
  %522 = zext i1 %521 to i8
  store i8 %522, ptr %48, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #13
  %523 = load i8, ptr %42, align 1, !tbaa !47, !range !45, !noundef !46
  %524 = trunc i8 %523 to i1
  br i1 %524, label %525, label %531

525:                                              ; preds = %520
  %526 = load ptr, ptr %21, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.ImGuiIO, ptr %526, i32 0, i32 90
  %528 = getelementptr inbounds [5 x i8], ptr %527, i64 0, i64 0
  %529 = load i8, ptr %528, align 8, !tbaa !47, !range !45, !noundef !46
  %530 = trunc i8 %529 to i1
  br label %531

531:                                              ; preds = %525, %520
  %532 = phi i1 [ false, %520 ], [ %530, %525 ]
  %533 = zext i1 %532 to i8
  store i8 %533, ptr %49, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #13
  %534 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %535 = trunc i8 %534 to i1
  br i1 %535, label %536, label %551

536:                                              ; preds = %531
  %537 = load ptr, ptr %43, align 8, !tbaa !5
  %538 = icmp ne ptr %537, null
  br i1 %538, label %539, label %551

539:                                              ; preds = %536
  %540 = load ptr, ptr %20, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.ImGuiContext, ptr %540, i32 0, i32 59
  %542 = load i32, ptr %541, align 4, !tbaa !126
  %543 = icmp eq i32 %542, 0
  br i1 %543, label %544, label %551

544:                                              ; preds = %539
  %545 = load ptr, ptr %20, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiContext, ptr %545, i32 0, i32 73
  %547 = load i32, ptr %546, align 4, !tbaa !136
  %548 = load ptr, ptr %34, align 8, !tbaa !5
  %549 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %548, i32 noundef 1)
  %550 = icmp eq i32 %547, %549
  br label %551

551:                                              ; preds = %544, %539, %536, %531
  %552 = phi i1 [ false, %539 ], [ false, %536 ], [ false, %531 ], [ %550, %544 ]
  %553 = zext i1 %552 to i8
  store i8 %553, ptr %50, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #13
  %554 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %555 = trunc i8 %554 to i1
  br i1 %555, label %556, label %566

556:                                              ; preds = %551
  %557 = load ptr, ptr %43, align 8, !tbaa !5
  %558 = icmp ne ptr %557, null
  br i1 %558, label %559, label %566

559:                                              ; preds = %556
  %560 = load ptr, ptr %20, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.ImGuiContext, ptr %560, i32 0, i32 59
  %562 = load i32, ptr %561, align 4, !tbaa !126
  %563 = load ptr, ptr %34, align 8, !tbaa !5
  %564 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %563, i32 noundef 1)
  %565 = icmp eq i32 %562, %564
  br label %566

566:                                              ; preds = %559, %556, %551
  %567 = phi i1 [ false, %556 ], [ false, %551 ], [ %565, %559 ]
  %568 = zext i1 %567 to i8
  store i8 %568, ptr %51, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #13
  store i8 0, ptr %52, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #13
  store i8 0, ptr %53, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #13
  %569 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %570 = trunc i8 %569 to i1
  br i1 %570, label %571, label %576

571:                                              ; preds = %566
  %572 = load ptr, ptr %34, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ImGuiWindow, ptr %572, i32 0, i32 33
  %574 = getelementptr inbounds %struct.ImVec2, ptr %573, i32 0, i32 1
  %575 = load float, ptr %574, align 4, !tbaa !137
  br label %577

576:                                              ; preds = %566
  br label %577

577:                                              ; preds = %576, %571
  %578 = phi float [ %575, %571 ], [ 0x47EFFFFFE0000000, %576 ]
  store float %578, ptr %54, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #13
  %579 = load ptr, ptr %43, align 8, !tbaa !5
  %580 = icmp ne ptr %579, null
  br i1 %580, label %581, label %586

581:                                              ; preds = %577
  %582 = load ptr, ptr %43, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %582, i32 0, i32 16
  %584 = load i8, ptr %583, align 1, !tbaa !138, !range !45, !noundef !46
  %585 = trunc i8 %584 to i1
  br label %586

586:                                              ; preds = %581, %577
  %587 = phi i1 [ false, %577 ], [ %585, %581 ]
  %588 = zext i1 %587 to i8
  store i8 %588, ptr %55, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #13
  %589 = load ptr, ptr %43, align 8, !tbaa !5
  %590 = icmp ne ptr %589, null
  br i1 %590, label %591, label %603

591:                                              ; preds = %586
  %592 = load ptr, ptr %43, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %592, i32 0, i32 1
  %594 = load ptr, ptr %593, align 8, !tbaa !139
  %595 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %594, i32 0, i32 8
  %596 = load i8, ptr %595, align 1, !tbaa !140
  %597 = zext i8 %596 to i32
  %598 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %599 = trunc i8 %598 to i1
  %600 = xor i1 %599, true
  %601 = zext i1 %600 to i32
  %602 = icmp ne i32 %597, %601
  br label %603

603:                                              ; preds = %591, %586
  %604 = phi i1 [ false, %586 ], [ %602, %591 ]
  %605 = zext i1 %604 to i8
  store i8 %605, ptr %56, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #13
  %606 = load i8, ptr %49, align 1, !tbaa !47, !range !45, !noundef !46
  %607 = trunc i8 %606 to i1
  br i1 %607, label %614, label %608

608:                                              ; preds = %603
  %609 = load i8, ptr %50, align 1, !tbaa !47, !range !45, !noundef !46
  %610 = trunc i8 %609 to i1
  br i1 %610, label %614, label %611

611:                                              ; preds = %608
  %612 = load i8, ptr %48, align 1, !tbaa !47, !range !45, !noundef !46
  %613 = trunc i8 %612 to i1
  br label %614

614:                                              ; preds = %611, %608, %603
  %615 = phi i1 [ true, %608 ], [ true, %603 ], [ %613, %611 ]
  %616 = zext i1 %615 to i8
  store i8 %616, ptr %57, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #13
  %617 = load i8, ptr %57, align 1, !tbaa !47, !range !45, !noundef !46
  %618 = trunc i8 %617 to i1
  br i1 %618, label %622, label %619

619:                                              ; preds = %614
  %620 = load i8, ptr %51, align 1, !tbaa !47, !range !45, !noundef !46
  %621 = trunc i8 %620 to i1
  br label %622

622:                                              ; preds = %619, %614
  %623 = phi i1 [ true, %614 ], [ %621, %619 ]
  %624 = zext i1 %623 to i8
  store i8 %624, ptr %58, align 1, !tbaa !47
  %625 = load i8, ptr %55, align 1, !tbaa !47, !range !45, !noundef !46
  %626 = trunc i8 %625 to i1
  br i1 %626, label %627, label %690

627:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #13
  %628 = load ptr, ptr %12, align 8, !tbaa !5
  %629 = call i64 @strlen(ptr noundef %628) #15
  %630 = trunc i64 %629 to i32
  store i32 %630, ptr %59, align 4, !tbaa !9
  %631 = load i32, ptr %59, align 4, !tbaa !9
  %632 = add nsw i32 %631, 1
  %633 = load i32, ptr %13, align 4, !tbaa !9
  %634 = icmp sle i32 %632, %633
  br i1 %634, label %635, label %636

635:                                              ; preds = %627
  br label %636

636:                                              ; preds = %635, %627
  %637 = phi i1 [ false, %627 ], [ true, %635 ]
  br i1 %637, label %638, label %639

638:                                              ; preds = %636
  br label %641

639:                                              ; preds = %636
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.2, i32 noundef 4578, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

640:                                              ; No predecessors!
  br label %641

641:                                              ; preds = %640, %638
  %642 = load ptr, ptr %43, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %642, i32 0, i32 16
  store i8 0, ptr %643, align 1, !tbaa !138
  %644 = load ptr, ptr %43, align 8, !tbaa !5
  %645 = load ptr, ptr %43, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %645, i32 0, i32 7
  %647 = getelementptr inbounds %struct.ImVector.36, ptr %646, i32 0, i32 2
  %648 = load ptr, ptr %647, align 8, !tbaa !143
  %649 = load ptr, ptr %43, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %649, i32 0, i32 4
  %651 = load i32, ptr %650, align 8, !tbaa !144
  %652 = load ptr, ptr %12, align 8, !tbaa !5
  %653 = load i32, ptr %59, align 4, !tbaa !9
  call void @_ZL27InputTextReconcileUndoStateP19ImGuiInputTextStatePKciS2_i(ptr noundef %644, ptr noundef %648, i32 noundef %651, ptr noundef %652, i32 noundef %653)
  %654 = load ptr, ptr %43, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %654, i32 0, i32 7
  %656 = load i32, ptr %13, align 4, !tbaa !9
  %657 = add nsw i32 %656, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %655, i32 noundef %657)
  %658 = load i32, ptr %59, align 4, !tbaa !9
  %659 = load ptr, ptr %43, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %659, i32 0, i32 4
  store i32 %658, ptr %660, align 8, !tbaa !144
  %661 = load ptr, ptr %43, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %661, i32 0, i32 7
  %663 = getelementptr inbounds %struct.ImVector.36, ptr %662, i32 0, i32 2
  %664 = load ptr, ptr %663, align 8, !tbaa !143
  %665 = load ptr, ptr %12, align 8, !tbaa !5
  %666 = load ptr, ptr %43, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %666, i32 0, i32 4
  %668 = load i32, ptr %667, align 8, !tbaa !144
  %669 = add nsw i32 %668, 1
  %670 = sext i32 %669 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %664, ptr align 1 %665, i64 %670, i1 false)
  %671 = load ptr, ptr %43, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %671, i32 0, i32 17
  %673 = load i32, ptr %672, align 4, !tbaa !145
  %674 = load ptr, ptr %43, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %674, i32 0, i32 1
  %676 = load ptr, ptr %675, align 8, !tbaa !139
  %677 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %676, i32 0, i32 1
  store i32 %673, ptr %677, align 4, !tbaa !146
  %678 = load ptr, ptr %43, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %678, i32 0, i32 18
  %680 = load i32, ptr %679, align 8, !tbaa !147
  %681 = load ptr, ptr %43, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %681, i32 0, i32 1
  %683 = load ptr, ptr %682, align 8, !tbaa !139
  %684 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %683, i32 0, i32 2
  store i32 %680, ptr %684, align 4, !tbaa !148
  %685 = load ptr, ptr %43, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %685, i32 0, i32 1
  %687 = load ptr, ptr %686, align 8, !tbaa !139
  %688 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %687, i32 0, i32 0
  store i32 %680, ptr %688, align 4, !tbaa !149
  %689 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(116) %689)
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #13
  br label %876

690:                                              ; preds = %622
  %691 = load i8, ptr %58, align 1, !tbaa !47, !range !45, !noundef !46
  %692 = trunc i8 %691 to i1
  br i1 %692, label %693, label %699

693:                                              ; preds = %690
  %694 = load ptr, ptr %20, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.ImGuiContext, ptr %694, i32 0, i32 59
  %696 = load i32, ptr %695, align 4, !tbaa !126
  %697 = load i32, ptr %25, align 4, !tbaa !9
  %698 = icmp ne i32 %696, %697
  br i1 %698, label %702, label %699

699:                                              ; preds = %693, %690
  %700 = load i8, ptr %56, align 1, !tbaa !47, !range !45, !noundef !46
  %701 = trunc i8 %700 to i1
  br i1 %701, label %702, label %875

702:                                              ; preds = %699, %693
  %703 = load ptr, ptr %20, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.ImGuiContext, ptr %703, i32 0, i32 220
  store ptr %704, ptr %43, align 8, !tbaa !5
  %705 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %705)
  %706 = load ptr, ptr %43, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %706, i32 0, i32 3
  %708 = load i32, ptr %707, align 4, !tbaa !150
  call void @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef %708)
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #13
  %709 = load ptr, ptr %12, align 8, !tbaa !5
  %710 = call i64 @strlen(ptr noundef %709) #15
  %711 = trunc i64 %710 to i32
  store i32 %711, ptr %60, align 4, !tbaa !9
  %712 = load i32, ptr %60, align 4, !tbaa !9
  %713 = add nsw i32 %712, 1
  %714 = load i32, ptr %13, align 4, !tbaa !9
  %715 = icmp sle i32 %713, %714
  br i1 %715, label %716, label %717

716:                                              ; preds = %702
  br label %717

717:                                              ; preds = %716, %702
  %718 = phi i1 [ false, %702 ], [ true, %716 ]
  br i1 %718, label %719, label %720

719:                                              ; preds = %717
  br label %722

720:                                              ; preds = %717
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.2, i32 noundef 4600, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

721:                                              ; No predecessors!
  br label %722

722:                                              ; preds = %721, %719
  %723 = load ptr, ptr %43, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %723, i32 0, i32 8
  %725 = load i32, ptr %60, align 4, !tbaa !9
  %726 = add nsw i32 %725, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %724, i32 noundef %726)
  %727 = load ptr, ptr %43, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %727, i32 0, i32 8
  %729 = getelementptr inbounds %struct.ImVector.36, ptr %728, i32 0, i32 2
  %730 = load ptr, ptr %729, align 8, !tbaa !151
  %731 = load ptr, ptr %12, align 8, !tbaa !5
  %732 = load i32, ptr %60, align 4, !tbaa !9
  %733 = add nsw i32 %732, 1
  %734 = sext i32 %733 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %730, ptr align 1 %731, i64 %734, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #13
  %735 = load ptr, ptr %43, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %735, i32 0, i32 3
  %737 = load i32, ptr %736, align 4, !tbaa !150
  %738 = load i32, ptr %25, align 4, !tbaa !9
  %739 = icmp eq i32 %737, %738
  br i1 %739, label %740, label %744

740:                                              ; preds = %722
  %741 = load i8, ptr %56, align 1, !tbaa !47, !range !45, !noundef !46
  %742 = trunc i8 %741 to i1
  %743 = xor i1 %742, true
  br label %744

744:                                              ; preds = %740, %722
  %745 = phi i1 [ false, %722 ], [ %743, %740 ]
  %746 = zext i1 %745 to i8
  store i8 %746, ptr %61, align 1, !tbaa !47
  %747 = load i8, ptr %61, align 1, !tbaa !47, !range !45, !noundef !46
  %748 = trunc i8 %747 to i1
  br i1 %748, label %749, label %772

749:                                              ; preds = %744
  %750 = load ptr, ptr %43, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %750, i32 0, i32 4
  %752 = load i32, ptr %751, align 8, !tbaa !144
  %753 = load i32, ptr %60, align 4, !tbaa !9
  %754 = icmp ne i32 %752, %753
  br i1 %754, label %771, label %755

755:                                              ; preds = %749
  %756 = load ptr, ptr %43, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %756, i32 0, i32 7
  %758 = getelementptr inbounds %struct.ImVector.36, ptr %757, i32 0, i32 2
  %759 = load ptr, ptr %758, align 8, !tbaa !143
  %760 = icmp eq ptr %759, null
  br i1 %760, label %771, label %761

761:                                              ; preds = %755
  %762 = load ptr, ptr %43, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %762, i32 0, i32 7
  %764 = getelementptr inbounds %struct.ImVector.36, ptr %763, i32 0, i32 2
  %765 = load ptr, ptr %764, align 8, !tbaa !143
  %766 = load ptr, ptr %12, align 8, !tbaa !5
  %767 = load i32, ptr %60, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = call i32 @strncmp(ptr noundef %765, ptr noundef %766, i64 noundef %768) #15
  %770 = icmp ne i32 %769, 0
  br i1 %770, label %771, label %772

771:                                              ; preds = %761, %755, %749
  store i8 0, ptr %61, align 1, !tbaa !47
  br label %772

772:                                              ; preds = %771, %761, %744
  %773 = load i32, ptr %25, align 4, !tbaa !9
  %774 = load ptr, ptr %43, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %774, i32 0, i32 3
  store i32 %773, ptr %775, align 4, !tbaa !150
  %776 = load i32, ptr %60, align 4, !tbaa !9
  %777 = load ptr, ptr %43, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %777, i32 0, i32 4
  store i32 %776, ptr %778, align 8, !tbaa !144
  %779 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %780 = trunc i8 %779 to i1
  br i1 %780, label %796, label %781

781:                                              ; preds = %772
  %782 = load ptr, ptr %43, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %782, i32 0, i32 7
  %784 = load i32, ptr %13, align 4, !tbaa !9
  %785 = add nsw i32 %784, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %783, i32 noundef %785)
  %786 = load ptr, ptr %43, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %786, i32 0, i32 7
  %788 = getelementptr inbounds %struct.ImVector.36, ptr %787, i32 0, i32 2
  %789 = load ptr, ptr %788, align 8, !tbaa !143
  %790 = load ptr, ptr %12, align 8, !tbaa !5
  %791 = load ptr, ptr %43, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %791, i32 0, i32 4
  %793 = load i32, ptr %792, align 8, !tbaa !144
  %794 = add nsw i32 %793, 1
  %795 = sext i32 %794 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %789, ptr align 1 %790, i64 %795, i1 false)
  br label %796

796:                                              ; preds = %781, %772
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %62, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %797 = load ptr, ptr %43, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %797, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %798, ptr align 4 %62, i64 8, i1 false), !tbaa.struct !48
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  %799 = load i32, ptr %15, align 4, !tbaa !9
  %800 = and i32 %799, 131072
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %802, label %821

802:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #13
  %803 = load ptr, ptr %12, align 8, !tbaa !5
  %804 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %803, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  store <2 x float> %804, ptr %63, align 4
  %805 = getelementptr inbounds %struct.ImVec2, ptr %63, i32 0, i32 0
  %806 = load float, ptr %805, align 4, !tbaa !121
  %807 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %808 = load float, ptr %807, align 4, !tbaa !121
  %809 = fsub float %806, %808
  %810 = load ptr, ptr %22, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.ImGuiStyle, ptr %810, i32 0, i32 13
  %812 = getelementptr inbounds %struct.ImVec2, ptr %811, i32 0, i32 0
  %813 = load float, ptr %812, align 4, !tbaa !152
  %814 = call float @llvm.fmuladd.f32(float %813, float 2.000000e+00, float %809)
  %815 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %814)
  %816 = load ptr, ptr %43, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %816, i32 0, i32 11
  %818 = getelementptr inbounds %struct.ImVec2, ptr %817, i32 0, i32 0
  %819 = load float, ptr %818, align 4, !tbaa !153
  %820 = fadd float %819, %815
  store float %820, ptr %818, align 4, !tbaa !153
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #13
  br label %821

821:                                              ; preds = %802, %796
  %822 = load i8, ptr %61, align 1, !tbaa !47, !range !45, !noundef !46
  %823 = trunc i8 %822 to i1
  br i1 %823, label %824, label %826

824:                                              ; preds = %821
  %825 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(116) %825)
  br label %834

826:                                              ; preds = %821
  %827 = load ptr, ptr %43, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %827, i32 0, i32 1
  %829 = load ptr, ptr %828, align 8, !tbaa !139
  %830 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %831 = trunc i8 %830 to i1
  %832 = xor i1 %831, true
  %833 = zext i1 %832 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %829, i32 noundef %833)
  br label %834

834:                                              ; preds = %826, %824
  %835 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %836 = trunc i8 %835 to i1
  br i1 %836, label %865, label %837

837:                                              ; preds = %834
  %838 = load i32, ptr %15, align 4, !tbaa !9
  %839 = and i32 %838, 4096
  %840 = icmp ne i32 %839, 0
  br i1 %840, label %841, label %842

841:                                              ; preds = %837
  store i8 1, ptr %53, align 1, !tbaa !47
  br label %842

842:                                              ; preds = %841, %837
  %843 = load i8, ptr %48, align 1, !tbaa !47, !range !45, !noundef !46
  %844 = trunc i8 %843 to i1
  br i1 %844, label %845, label %855

845:                                              ; preds = %842
  %846 = load i8, ptr %61, align 1, !tbaa !47, !range !45, !noundef !46
  %847 = trunc i8 %846 to i1
  br i1 %847, label %848, label %854

848:                                              ; preds = %845
  %849 = load ptr, ptr %20, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.ImGuiContext, ptr %849, i32 0, i32 125
  %851 = load i32, ptr %850, align 4, !tbaa !125
  %852 = and i32 %851, 4
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %855, label %854

854:                                              ; preds = %848, %845
  store i8 1, ptr %53, align 1, !tbaa !47
  br label %855

855:                                              ; preds = %854, %848, %842
  %856 = load i8, ptr %49, align 1, !tbaa !47, !range !45, !noundef !46
  %857 = trunc i8 %856 to i1
  br i1 %857, label %858, label %864

858:                                              ; preds = %855
  %859 = load ptr, ptr %21, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.ImGuiIO, ptr %859, i32 0, i32 80
  %861 = load i8, ptr %860, align 8, !tbaa !154, !range !45, !noundef !46
  %862 = trunc i8 %861 to i1
  br i1 %862, label %863, label %864

863:                                              ; preds = %858
  store i8 1, ptr %53, align 1, !tbaa !47
  br label %864

864:                                              ; preds = %863, %858, %855
  br label %865

865:                                              ; preds = %864, %834
  %866 = load i32, ptr %15, align 4, !tbaa !9
  %867 = and i32 %866, 2048
  %868 = icmp ne i32 %867, 0
  br i1 %868, label %869, label %874

869:                                              ; preds = %865
  %870 = load ptr, ptr %43, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %870, i32 0, i32 1
  %872 = load ptr, ptr %871, align 8, !tbaa !139
  %873 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %872, i32 0, i32 3
  store i8 1, ptr %873, align 4, !tbaa !155
  br label %874

874:                                              ; preds = %869, %865
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  br label %875

875:                                              ; preds = %874, %699
  br label %876

876:                                              ; preds = %875, %641
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #13
  %877 = load ptr, ptr %21, align 8, !tbaa !5
  %878 = getelementptr inbounds %struct.ImGuiIO, ptr %877, i32 0, i32 29
  %879 = load i8, ptr %878, align 8, !tbaa !156, !range !45, !noundef !46
  %880 = trunc i8 %879 to i1
  %881 = zext i1 %880 to i8
  store i8 %881, ptr %64, align 1, !tbaa !47
  %882 = load ptr, ptr %20, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.ImGuiContext, ptr %882, i32 0, i32 59
  %884 = load i32, ptr %883, align 4, !tbaa !126
  %885 = load i32, ptr %25, align 4, !tbaa !9
  %886 = icmp ne i32 %884, %885
  br i1 %886, label %887, label %910

887:                                              ; preds = %876
  %888 = load i8, ptr %57, align 1, !tbaa !47, !range !45, !noundef !46
  %889 = trunc i8 %888 to i1
  br i1 %889, label %890, label %910

890:                                              ; preds = %887
  %891 = load ptr, ptr %43, align 8, !tbaa !5
  %892 = icmp ne ptr %891, null
  br i1 %892, label %893, label %899

893:                                              ; preds = %890
  %894 = load ptr, ptr %43, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %894, i32 0, i32 3
  %896 = load i32, ptr %895, align 4, !tbaa !150
  %897 = load i32, ptr %25, align 4, !tbaa !9
  %898 = icmp eq i32 %896, %897
  br label %899

899:                                              ; preds = %893, %890
  %900 = phi i1 [ false, %890 ], [ %898, %893 ]
  br i1 %900, label %901, label %902

901:                                              ; preds = %899
  br label %904

902:                                              ; preds = %899
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str.2, i32 noundef 4648, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

903:                                              ; No predecessors!
  br label %904

904:                                              ; preds = %903, %901
  %905 = load i32, ptr %25, align 4, !tbaa !9
  %906 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %905, ptr noundef %906)
  %907 = load i32, ptr %25, align 4, !tbaa !9
  %908 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %907, ptr noundef %908)
  %909 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %909, i32 noundef 0)
  br label %910

910:                                              ; preds = %904, %887, %876
  %911 = load ptr, ptr %20, align 8, !tbaa !5
  %912 = getelementptr inbounds %struct.ImGuiContext, ptr %911, i32 0, i32 59
  %913 = load i32, ptr %912, align 4, !tbaa !126
  %914 = load i32, ptr %25, align 4, !tbaa !9
  %915 = icmp eq i32 %913, %914
  br i1 %915, label %916, label %996

916:                                              ; preds = %910
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %65, ptr align 16 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #13
  store ptr %65, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #13
  %917 = load ptr, ptr %66, align 8, !tbaa !5
  %918 = getelementptr inbounds [8 x i32], ptr %917, i64 0, i64 0
  store ptr %918, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #13
  %919 = load ptr, ptr %66, align 8, !tbaa !5
  %920 = getelementptr inbounds [8 x i32], ptr %919, i64 0, i64 0
  %921 = getelementptr inbounds i32, ptr %920, i64 8
  store ptr %921, ptr %68, align 8, !tbaa !5
  br label %922

922:                                              ; preds = %932, %916
  %923 = load ptr, ptr %67, align 8, !tbaa !5
  %924 = load ptr, ptr %68, align 8, !tbaa !5
  %925 = icmp ne ptr %923, %924
  br i1 %925, label %927, label %926

926:                                              ; preds = %922
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  br label %935

927:                                              ; preds = %922
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #13
  %928 = load ptr, ptr %67, align 8, !tbaa !5
  %929 = load i32, ptr %928, align 4, !tbaa !157
  store i32 %929, ptr %69, align 4, !tbaa !157
  %930 = load i32, ptr %69, align 4, !tbaa !157
  %931 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %930, i32 noundef %931, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #13
  br label %932

932:                                              ; preds = %927
  %933 = load ptr, ptr %67, align 8, !tbaa !5
  %934 = getelementptr inbounds i32, ptr %933, i32 1
  store ptr %934, ptr %67, align 8, !tbaa !5
  br label %922

935:                                              ; preds = %926
  %936 = load i8, ptr %49, align 1, !tbaa !47, !range !45, !noundef !46
  %937 = trunc i8 %936 to i1
  br i1 %937, label %938, label %940

938:                                              ; preds = %935
  %939 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 656, i32 noundef %939, i32 noundef 0)
  br label %940

940:                                              ; preds = %938, %935
  %941 = load ptr, ptr %20, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ImGuiContext, ptr %941, i32 0, i32 84
  %943 = load i32, ptr %942, align 8, !tbaa !158
  %944 = or i32 %943, 3
  store i32 %944, ptr %942, align 8, !tbaa !158
  %945 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %946 = trunc i8 %945 to i1
  br i1 %946, label %951, label %947

947:                                              ; preds = %940
  %948 = load i32, ptr %15, align 4, !tbaa !9
  %949 = and i32 %948, 524288
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %951, label %958

951:                                              ; preds = %947, %940
  %952 = load ptr, ptr %20, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.ImGuiContext, ptr %952, i32 0, i32 84
  %954 = load i32, ptr %953, align 8, !tbaa !158
  %955 = or i32 %954, 12
  store i32 %955, ptr %953, align 8, !tbaa !158
  %956 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 515, i32 noundef %956, i32 noundef 0)
  %957 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 516, i32 noundef %957, i32 noundef 0)
  br label %958

958:                                              ; preds = %951, %947
  %959 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %960 = trunc i8 %959 to i1
  br i1 %960, label %961, label %964

961:                                              ; preds = %958
  %962 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 517, i32 noundef %962, i32 noundef 0)
  %963 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 518, i32 noundef %963, i32 noundef 0)
  br label %964

964:                                              ; preds = %961, %958
  %965 = load i8, ptr %64, align 1, !tbaa !47, !range !45, !noundef !46
  %966 = trunc i8 %965 to i1
  br i1 %966, label %967, label %969

967:                                              ; preds = %964
  %968 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 16384, i32 noundef %968, i32 noundef 0)
  br label %969

969:                                              ; preds = %967, %964
  %970 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %971 = trunc i8 %970 to i1
  br i1 %971, label %972, label %983

972:                                              ; preds = %969
  %973 = load ptr, ptr %43, align 8, !tbaa !5
  %974 = icmp ne ptr %973, null
  br i1 %974, label %975, label %983

975:                                              ; preds = %972
  %976 = load ptr, ptr %34, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.ImGuiWindow, ptr %976, i32 0, i32 33
  %978 = getelementptr inbounds %struct.ImVec2, ptr %977, i32 0, i32 1
  %979 = load float, ptr %978, align 4, !tbaa !137
  %980 = load ptr, ptr %43, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %980, i32 0, i32 11
  %982 = getelementptr inbounds %struct.ImVec2, ptr %981, i32 0, i32 1
  store float %979, ptr %982, align 4, !tbaa !159
  br label %983

983:                                              ; preds = %975, %972, %969
  %984 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %985 = trunc i8 %984 to i1
  br i1 %985, label %986, label %995

986:                                              ; preds = %983
  %987 = load ptr, ptr %43, align 8, !tbaa !5
  %988 = icmp ne ptr %987, null
  br i1 %988, label %989, label %995

989:                                              ; preds = %986
  %990 = load ptr, ptr %12, align 8, !tbaa !5
  %991 = call i64 @strlen(ptr noundef %990) #15
  %992 = trunc i64 %991 to i32
  %993 = load ptr, ptr %43, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %993, i32 0, i32 4
  store i32 %992, ptr %994, align 8, !tbaa !144
  br label %995

995:                                              ; preds = %989, %986, %983
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #13
  br label %996

996:                                              ; preds = %995, %910
  %997 = load ptr, ptr %43, align 8, !tbaa !5
  %998 = icmp ne ptr %997, null
  br i1 %998, label %999, label %1013

999:                                              ; preds = %996
  %1000 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1001 = trunc i8 %1000 to i1
  br i1 %1001, label %1002, label %1004

1002:                                             ; preds = %999
  %1003 = load ptr, ptr %12, align 8, !tbaa !5
  br label %1009

1004:                                             ; preds = %999
  %1005 = load ptr, ptr %43, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1005, i32 0, i32 7
  %1007 = getelementptr inbounds %struct.ImVector.36, ptr %1006, i32 0, i32 2
  %1008 = load ptr, ptr %1007, align 8, !tbaa !143
  br label %1009

1009:                                             ; preds = %1004, %1002
  %1010 = phi ptr [ %1003, %1002 ], [ %1008, %1004 ]
  %1011 = load ptr, ptr %43, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1011, i32 0, i32 6
  store ptr %1010, ptr %1012, align 8, !tbaa !160
  br label %1013

1013:                                             ; preds = %1009, %996
  %1014 = load ptr, ptr %20, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.ImGuiContext, ptr %1014, i32 0, i32 59
  %1016 = load i32, ptr %1015, align 4, !tbaa !126
  %1017 = load i32, ptr %25, align 4, !tbaa !9
  %1018 = icmp eq i32 %1016, %1017
  br i1 %1018, label %1019, label %1023

1019:                                             ; preds = %1013
  %1020 = load ptr, ptr %43, align 8, !tbaa !5
  %1021 = icmp eq ptr %1020, null
  br i1 %1021, label %1022, label %1023

1022:                                             ; preds = %1019
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1023

1023:                                             ; preds = %1022, %1019, %1013
  %1024 = load ptr, ptr %20, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.ImGuiContext, ptr %1024, i32 0, i32 59
  %1026 = load i32, ptr %1025, align 4, !tbaa !126
  %1027 = load i32, ptr %25, align 4, !tbaa !9
  %1028 = icmp eq i32 %1026, %1027
  br i1 %1028, label %1029, label %1042

1029:                                             ; preds = %1023
  %1030 = load ptr, ptr %21, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.ImGuiIO, ptr %1030, i32 0, i32 90
  %1032 = getelementptr inbounds [5 x i8], ptr %1031, i64 0, i64 0
  %1033 = load i8, ptr %1032, align 8, !tbaa !47, !range !45, !noundef !46
  %1034 = trunc i8 %1033 to i1
  br i1 %1034, label %1035, label %1042

1035:                                             ; preds = %1029
  %1036 = load i8, ptr %58, align 1, !tbaa !47, !range !45, !noundef !46
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1042, label %1038

1038:                                             ; preds = %1035
  %1039 = load i8, ptr %57, align 1, !tbaa !47, !range !45, !noundef !46
  %1040 = trunc i8 %1039 to i1
  br i1 %1040, label %1042, label %1041

1041:                                             ; preds = %1038
  store i8 1, ptr %52, align 1, !tbaa !47
  br label %1042

1042:                                             ; preds = %1041, %1038, %1035, %1029, %1023
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1043 = load ptr, ptr %20, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.ImGuiContext, ptr %1043, i32 0, i32 59
  %1045 = load i32, ptr %1044, align 4, !tbaa !126
  %1046 = load i32, ptr %25, align 4, !tbaa !9
  %1047 = icmp eq i32 %1045, %1046
  br i1 %1047, label %1056, label %1048

1048:                                             ; preds = %1042
  %1049 = load ptr, ptr %43, align 8, !tbaa !5
  %1050 = icmp ne ptr %1049, null
  br i1 %1050, label %1051, label %1054

1051:                                             ; preds = %1048
  %1052 = load i8, ptr %51, align 1, !tbaa !47, !range !45, !noundef !46
  %1053 = trunc i8 %1052 to i1
  br label %1054

1054:                                             ; preds = %1051, %1048
  %1055 = phi i1 [ false, %1048 ], [ %1053, %1051 ]
  br label %1056

1056:                                             ; preds = %1054, %1042
  %1057 = phi i1 [ true, %1042 ], [ %1055, %1054 ]
  %1058 = zext i1 %1057 to i8
  store i8 %1058, ptr %70, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #13
  %1059 = load ptr, ptr %43, align 8, !tbaa !5
  %1060 = icmp ne ptr %1059, null
  br i1 %1060, label %1061, label %1070

1061:                                             ; preds = %1056
  %1062 = load ptr, ptr %43, align 8, !tbaa !5
  %1063 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %1062)
  br i1 %1063, label %1067, label %1064

1064:                                             ; preds = %1061
  %1065 = load i8, ptr %53, align 1, !tbaa !47, !range !45, !noundef !46
  %1066 = trunc i8 %1065 to i1
  br i1 %1066, label %1067, label %1070

1067:                                             ; preds = %1064, %1061
  %1068 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %1069 = trunc i8 %1068 to i1
  br label %1070

1070:                                             ; preds = %1067, %1064, %1056
  %1071 = phi i1 [ false, %1064 ], [ false, %1056 ], [ %1069, %1067 ]
  %1072 = zext i1 %1071 to i8
  store i8 %1072, ptr %71, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #13
  store i8 0, ptr %72, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #13
  store i8 0, ptr %73, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #13
  %1073 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %1074 = trunc i8 %1073 to i1
  br i1 %1074, label %1084, label %1075

1075:                                             ; preds = %1070
  %1076 = load i8, ptr %71, align 1, !tbaa !47, !range !45, !noundef !46
  %1077 = trunc i8 %1076 to i1
  br i1 %1077, label %1084, label %1078

1078:                                             ; preds = %1075
  %1079 = load ptr, ptr %20, align 8, !tbaa !5
  %1080 = getelementptr inbounds %struct.ImGuiContext, ptr %1079, i32 0, i32 59
  %1081 = load i32, ptr %1080, align 4, !tbaa !126
  %1082 = load i32, ptr %25, align 4, !tbaa !9
  %1083 = icmp eq i32 %1081, %1082
  br i1 %1083, label %1084, label %1090

1084:                                             ; preds = %1078, %1075, %1070
  %1085 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1086 = trunc i8 %1085 to i1
  br i1 %1086, label %1090, label %1087

1087:                                             ; preds = %1084
  %1088 = load ptr, ptr %43, align 8, !tbaa !5
  %1089 = icmp ne ptr %1088, null
  br label %1090

1090:                                             ; preds = %1087, %1084, %1078
  %1091 = phi i1 [ false, %1084 ], [ false, %1078 ], [ %1089, %1087 ]
  %1092 = zext i1 %1091 to i8
  store i8 %1092, ptr %74, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #13
  %1093 = load ptr, ptr %11, align 8, !tbaa !5
  %1094 = icmp ne ptr %1093, null
  br i1 %1094, label %1095, label %1111

1095:                                             ; preds = %1090
  %1096 = load i8, ptr %74, align 1, !tbaa !47, !range !45, !noundef !46
  %1097 = trunc i8 %1096 to i1
  br i1 %1097, label %1098, label %1103

1098:                                             ; preds = %1095
  %1099 = load ptr, ptr %43, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1099, i32 0, i32 7
  %1101 = getelementptr inbounds %struct.ImVector.36, ptr %1100, i32 0, i32 2
  %1102 = load ptr, ptr %1101, align 8, !tbaa !143
  br label %1105

1103:                                             ; preds = %1095
  %1104 = load ptr, ptr %12, align 8, !tbaa !5
  br label %1105

1105:                                             ; preds = %1103, %1098
  %1106 = phi ptr [ %1102, %1098 ], [ %1104, %1103 ]
  %1107 = getelementptr inbounds i8, ptr %1106, i64 0
  %1108 = load i8, ptr %1107, align 1, !tbaa !161
  %1109 = sext i8 %1108 to i32
  %1110 = icmp eq i32 %1109, 0
  br label %1111

1111:                                             ; preds = %1105, %1090
  %1112 = phi i1 [ false, %1090 ], [ %1110, %1105 ]
  %1113 = zext i1 %1112 to i8
  store i8 %1113, ptr %75, align 1, !tbaa !47
  %1114 = load i8, ptr %45, align 1, !tbaa !47, !range !45, !noundef !46
  %1115 = trunc i8 %1114 to i1
  br i1 %1115, label %1116, label %1120

1116:                                             ; preds = %1111
  %1117 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1120, label %1119

1119:                                             ; preds = %1116
  call void @_ZN5ImGui16PushPasswordFontEv()
  br label %1120

1120:                                             ; preds = %1119, %1116, %1111
  %1121 = load ptr, ptr %20, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.ImGuiContext, ptr %1121, i32 0, i32 59
  %1123 = load i32, ptr %1122, align 4, !tbaa !126
  %1124 = load i32, ptr %25, align 4, !tbaa !9
  %1125 = icmp eq i32 %1123, %1124
  br i1 %1125, label %1126, label %1529

1126:                                             ; preds = %1120
  %1127 = load ptr, ptr %43, align 8, !tbaa !5
  %1128 = icmp ne ptr %1127, null
  br i1 %1128, label %1129, label %1130

1129:                                             ; preds = %1126
  br label %1132

1130:                                             ; preds = %1126
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.2, i32 noundef 4716, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1131:                                             ; No predecessors!
  br label %1132

1132:                                             ; preds = %1131, %1129
  %1133 = load ptr, ptr %43, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1133, i32 0, i32 15
  store i8 0, ptr %1134, align 2, !tbaa !162
  %1135 = load i32, ptr %13, align 4, !tbaa !9
  %1136 = load ptr, ptr %43, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1136, i32 0, i32 10
  store i32 %1135, ptr %1137, align 8, !tbaa !163
  %1138 = load i32, ptr %15, align 4, !tbaa !9
  %1139 = load ptr, ptr %43, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1139, i32 0, i32 2
  store i32 %1138, ptr %1140, align 8, !tbaa !164
  %1141 = load ptr, ptr %21, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.ImGuiIO, ptr %1141, i32 0, i32 75
  %1143 = getelementptr inbounds [5 x i8], ptr %1142, i64 0, i64 0
  %1144 = load i8, ptr %1143, align 8, !tbaa !47, !range !45, !noundef !46
  %1145 = trunc i8 %1144 to i1
  %1146 = xor i1 %1145, true
  %1147 = load ptr, ptr %20, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.ImGuiContext, ptr %1147, i32 0, i32 63
  %1149 = zext i1 %1146 to i8
  store i8 %1149, ptr %1148, align 1, !tbaa !165
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #13
  %1150 = load ptr, ptr %21, align 8, !tbaa !5
  %1151 = getelementptr inbounds %struct.ImGuiIO, ptr %1150, i32 0, i32 74
  %1152 = getelementptr inbounds %struct.ImVec2, ptr %1151, i32 0, i32 0
  %1153 = load float, ptr %1152, align 8, !tbaa !166
  %1154 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %1155 = getelementptr inbounds %struct.ImVec2, ptr %1154, i32 0, i32 0
  %1156 = load float, ptr %1155, align 4, !tbaa !167
  %1157 = fsub float %1153, %1156
  %1158 = load ptr, ptr %22, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.ImGuiStyle, ptr %1158, i32 0, i32 13
  %1160 = getelementptr inbounds %struct.ImVec2, ptr %1159, i32 0, i32 0
  %1161 = load float, ptr %1160, align 4, !tbaa !152
  %1162 = fsub float %1157, %1161
  %1163 = load ptr, ptr %43, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1163, i32 0, i32 11
  %1165 = getelementptr inbounds %struct.ImVec2, ptr %1164, i32 0, i32 0
  %1166 = load float, ptr %1165, align 4, !tbaa !153
  %1167 = fadd float %1162, %1166
  store float %1167, ptr %76, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #13
  %1168 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1169 = trunc i8 %1168 to i1
  br i1 %1169, label %1170, label %1181

1170:                                             ; preds = %1132
  %1171 = load ptr, ptr %21, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.ImGuiIO, ptr %1171, i32 0, i32 74
  %1173 = getelementptr inbounds %struct.ImVec2, ptr %1172, i32 0, i32 1
  %1174 = load float, ptr %1173, align 4, !tbaa !168
  %1175 = load ptr, ptr %34, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.ImGuiWindow, ptr %1175, i32 0, i32 78
  %1177 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1176, i32 0, i32 0
  %1178 = getelementptr inbounds %struct.ImVec2, ptr %1177, i32 0, i32 1
  %1179 = load float, ptr %1178, align 4, !tbaa !169
  %1180 = fsub float %1174, %1179
  br label %1186

1181:                                             ; preds = %1132
  %1182 = load ptr, ptr %20, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.ImGuiContext, ptr %1182, i32 0, i32 8
  %1184 = load float, ptr %1183, align 8, !tbaa !50
  %1185 = fmul float %1184, 5.000000e-01
  br label %1186

1186:                                             ; preds = %1181, %1170
  %1187 = phi float [ %1180, %1170 ], [ %1185, %1181 ]
  store float %1187, ptr %77, align 4, !tbaa !49
  %1188 = load i8, ptr %53, align 1, !tbaa !47, !range !45, !noundef !46
  %1189 = trunc i8 %1188 to i1
  br i1 %1189, label %1190, label %1194

1190:                                             ; preds = %1186
  %1191 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %1191)
  %1192 = load ptr, ptr %43, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1192, i32 0, i32 14
  store i8 1, ptr %1193, align 1, !tbaa !170
  br label %1417

1194:                                             ; preds = %1186
  %1195 = load i8, ptr %42, align 1, !tbaa !47, !range !45, !noundef !46
  %1196 = trunc i8 %1195 to i1
  br i1 %1196, label %1197, label %1345

1197:                                             ; preds = %1194
  %1198 = load ptr, ptr %21, align 8, !tbaa !5
  %1199 = getelementptr inbounds %struct.ImGuiIO, ptr %1198, i32 0, i32 92
  %1200 = getelementptr inbounds [5 x i16], ptr %1199, i64 0, i64 0
  %1201 = load i16, ptr %1200, align 2, !tbaa !171
  %1202 = zext i16 %1201 to i32
  %1203 = icmp sge i32 %1202, 2
  br i1 %1203, label %1204, label %1345

1204:                                             ; preds = %1197
  %1205 = load ptr, ptr %21, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.ImGuiIO, ptr %1205, i32 0, i32 81
  %1207 = load i8, ptr %1206, align 1, !tbaa !172, !range !45, !noundef !46
  %1208 = trunc i8 %1207 to i1
  br i1 %1208, label %1345, label %1209

1209:                                             ; preds = %1204
  %1210 = load ptr, ptr %43, align 8, !tbaa !5
  %1211 = load ptr, ptr %43, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1211, i32 0, i32 1
  %1213 = load ptr, ptr %1212, align 8, !tbaa !139
  %1214 = load float, ptr %76, align 4, !tbaa !49
  %1215 = load float, ptr %77, align 4, !tbaa !49
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1210, ptr noundef %1213, float noundef %1214, float noundef %1215)
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #13
  %1216 = load ptr, ptr %21, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.ImGuiIO, ptr %1216, i32 0, i32 92
  %1218 = getelementptr inbounds [5 x i16], ptr %1217, i64 0, i64 0
  %1219 = load i16, ptr %1218, align 2, !tbaa !171
  %1220 = zext i16 %1219 to i32
  %1221 = sub nsw i32 %1220, 2
  store i32 %1221, ptr %78, align 4, !tbaa !9
  %1222 = load i32, ptr %78, align 4, !tbaa !9
  %1223 = srem i32 %1222, 2
  %1224 = icmp eq i32 %1223, 0
  br i1 %1224, label %1225, label %1303

1225:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #13
  %1226 = load ptr, ptr %43, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1226, i32 0, i32 1
  %1228 = load ptr, ptr %1227, align 8, !tbaa !139
  %1229 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1228, i32 0, i32 0
  %1230 = load i32, ptr %1229, align 4, !tbaa !149
  %1231 = icmp eq i32 %1230, 0
  br i1 %1231, label %1243, label %1232

1232:                                             ; preds = %1225
  %1233 = load ptr, ptr %43, align 8, !tbaa !5
  %1234 = load ptr, ptr %43, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1234, i32 0, i32 1
  %1236 = load ptr, ptr %1235, align 8, !tbaa !139
  %1237 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1236, i32 0, i32 0
  %1238 = load i32, ptr %1237, align 4, !tbaa !149
  %1239 = sub nsw i32 %1238, 1
  %1240 = call noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1233, i32 noundef %1239)
  %1241 = sext i8 %1240 to i32
  %1242 = icmp eq i32 %1241, 10
  br label %1243

1243:                                             ; preds = %1232, %1225
  %1244 = phi i1 [ true, %1225 ], [ %1242, %1232 ]
  %1245 = zext i1 %1244 to i8
  store i8 %1245, ptr %79, align 1, !tbaa !47
  %1246 = load ptr, ptr %43, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1246, i32 0, i32 1
  %1248 = load ptr, ptr %1247, align 8, !tbaa !139
  %1249 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1248, i32 0, i32 1
  %1250 = load i32, ptr %1249, align 4, !tbaa !146
  %1251 = load ptr, ptr %43, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1251, i32 0, i32 1
  %1253 = load ptr, ptr %1252, align 8, !tbaa !139
  %1254 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1253, i32 0, i32 2
  %1255 = load i32, ptr %1254, align 4, !tbaa !148
  %1256 = icmp ne i32 %1250, %1255
  br i1 %1256, label %1260, label %1257

1257:                                             ; preds = %1243
  %1258 = load i8, ptr %79, align 1, !tbaa !47, !range !45, !noundef !46
  %1259 = trunc i8 %1258 to i1
  br i1 %1259, label %1262, label %1260

1260:                                             ; preds = %1257, %1243
  %1261 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1261, i32 noundef 2097164)
  br label %1262

1262:                                             ; preds = %1260, %1257
  %1263 = load ptr, ptr %43, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1263, i32 0, i32 1
  %1265 = load ptr, ptr %1264, align 8, !tbaa !139
  %1266 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1265, i32 0, i32 1
  %1267 = load i32, ptr %1266, align 4, !tbaa !146
  %1268 = load ptr, ptr %43, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1268, i32 0, i32 1
  %1270 = load ptr, ptr %1269, align 8, !tbaa !139
  %1271 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1270, i32 0, i32 2
  %1272 = load i32, ptr %1271, align 4, !tbaa !148
  %1273 = icmp ne i32 %1267, %1272
  br i1 %1273, label %1278, label %1274

1274:                                             ; preds = %1262
  %1275 = load ptr, ptr %43, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1275, i32 0, i32 1
  %1277 = load ptr, ptr %1276, align 8, !tbaa !139
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef %1277)
  br label %1278

1278:                                             ; preds = %1274, %1262
  %1279 = load ptr, ptr %43, align 8, !tbaa !5
  %1280 = load ptr, ptr %43, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1280, i32 0, i32 1
  %1282 = load ptr, ptr %1281, align 8, !tbaa !139
  %1283 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1282, i32 0, i32 0
  %1284 = load i32, ptr %1283, align 4, !tbaa !149
  %1285 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef %1279, i32 noundef %1284)
  %1286 = load ptr, ptr %43, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1286, i32 0, i32 1
  %1288 = load ptr, ptr %1287, align 8, !tbaa !139
  %1289 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1288, i32 0, i32 0
  store i32 %1285, ptr %1289, align 4, !tbaa !149
  %1290 = load ptr, ptr %43, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1290, i32 0, i32 1
  %1292 = load ptr, ptr %1291, align 8, !tbaa !139
  %1293 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1292, i32 0, i32 0
  %1294 = load i32, ptr %1293, align 4, !tbaa !149
  %1295 = load ptr, ptr %43, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1295, i32 0, i32 1
  %1297 = load ptr, ptr %1296, align 8, !tbaa !139
  %1298 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1297, i32 0, i32 2
  store i32 %1294, ptr %1298, align 4, !tbaa !148
  %1299 = load ptr, ptr %43, align 8, !tbaa !5
  %1300 = load ptr, ptr %43, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1300, i32 0, i32 1
  %1302 = load ptr, ptr %1301, align 8, !tbaa !139
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1299, ptr noundef %1302)
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #13
  br label %1343

1303:                                             ; preds = %1209
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #13
  %1304 = load ptr, ptr %43, align 8, !tbaa !5
  %1305 = load ptr, ptr %43, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1305, i32 0, i32 1
  %1307 = load ptr, ptr %1306, align 8, !tbaa !139
  %1308 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1307, i32 0, i32 0
  %1309 = load i32, ptr %1308, align 4, !tbaa !149
  %1310 = call noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1304, i32 noundef %1309)
  %1311 = sext i8 %1310 to i32
  %1312 = icmp eq i32 %1311, 10
  %1313 = zext i1 %1312 to i8
  store i8 %1313, ptr %80, align 1, !tbaa !47
  %1314 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1314, i32 noundef 2097156)
  %1315 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1315, i32 noundef 6291461)
  %1316 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1316, i32 noundef 6291457)
  %1317 = load i8, ptr %80, align 1, !tbaa !47, !range !45, !noundef !46
  %1318 = trunc i8 %1317 to i1
  br i1 %1318, label %1340, label %1319

1319:                                             ; preds = %1303
  %1320 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1321 = trunc i8 %1320 to i1
  br i1 %1321, label %1322, label %1340

1322:                                             ; preds = %1319
  %1323 = load ptr, ptr %43, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1323, i32 0, i32 1
  %1325 = load ptr, ptr %1324, align 8, !tbaa !139
  %1326 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1325, i32 0, i32 1
  %1327 = load ptr, ptr %43, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1327, i32 0, i32 1
  %1329 = load ptr, ptr %1328, align 8, !tbaa !139
  %1330 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1329, i32 0, i32 2
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %1326, ptr noundef nonnull align 4 dereferenceable(4) %1330)
  %1331 = load ptr, ptr %43, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1331, i32 0, i32 1
  %1333 = load ptr, ptr %1332, align 8, !tbaa !139
  %1334 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1333, i32 0, i32 2
  %1335 = load i32, ptr %1334, align 4, !tbaa !148
  %1336 = load ptr, ptr %43, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1336, i32 0, i32 1
  %1338 = load ptr, ptr %1337, align 8, !tbaa !139
  %1339 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1338, i32 0, i32 0
  store i32 %1335, ptr %1339, align 4, !tbaa !149
  br label %1340

1340:                                             ; preds = %1322, %1319, %1303
  %1341 = load ptr, ptr %43, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1341, i32 0, i32 13
  store i8 0, ptr %1342, align 8, !tbaa !173
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #13
  br label %1343

1343:                                             ; preds = %1340, %1278
  %1344 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %1344)
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #13
  br label %1416

1345:                                             ; preds = %1204, %1197, %1194
  %1346 = load ptr, ptr %21, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.ImGuiIO, ptr %1346, i32 0, i32 90
  %1348 = getelementptr inbounds [5 x i8], ptr %1347, i64 0, i64 0
  %1349 = load i8, ptr %1348, align 8, !tbaa !47, !range !45, !noundef !46
  %1350 = trunc i8 %1349 to i1
  br i1 %1350, label %1351, label %1381

1351:                                             ; preds = %1345
  %1352 = load ptr, ptr %43, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1352, i32 0, i32 14
  %1354 = load i8, ptr %1353, align 1, !tbaa !170, !range !45, !noundef !46
  %1355 = trunc i8 %1354 to i1
  br i1 %1355, label %1381, label %1356

1356:                                             ; preds = %1351
  %1357 = load i8, ptr %42, align 1, !tbaa !47, !range !45, !noundef !46
  %1358 = trunc i8 %1357 to i1
  br i1 %1358, label %1359, label %1380

1359:                                             ; preds = %1356
  %1360 = load ptr, ptr %21, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.ImGuiIO, ptr %1360, i32 0, i32 81
  %1362 = load i8, ptr %1361, align 1, !tbaa !172, !range !45, !noundef !46
  %1363 = trunc i8 %1362 to i1
  br i1 %1363, label %1364, label %1371

1364:                                             ; preds = %1359
  %1365 = load ptr, ptr %43, align 8, !tbaa !5
  %1366 = load ptr, ptr %43, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1366, i32 0, i32 1
  %1368 = load ptr, ptr %1367, align 8, !tbaa !139
  %1369 = load float, ptr %76, align 4, !tbaa !49
  %1370 = load float, ptr %77, align 4, !tbaa !49
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1365, ptr noundef %1368, float noundef %1369, float noundef %1370)
  br label %1378

1371:                                             ; preds = %1359
  %1372 = load ptr, ptr %43, align 8, !tbaa !5
  %1373 = load ptr, ptr %43, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1373, i32 0, i32 1
  %1375 = load ptr, ptr %1374, align 8, !tbaa !139
  %1376 = load float, ptr %76, align 4, !tbaa !49
  %1377 = load float, ptr %77, align 4, !tbaa !49
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1372, ptr noundef %1375, float noundef %1376, float noundef %1377)
  br label %1378

1378:                                             ; preds = %1371, %1364
  %1379 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %1379)
  br label %1380

1380:                                             ; preds = %1378, %1356
  br label %1415

1381:                                             ; preds = %1351, %1345
  %1382 = load ptr, ptr %21, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.ImGuiIO, ptr %1382, i32 0, i32 75
  %1384 = getelementptr inbounds [5 x i8], ptr %1383, i64 0, i64 0
  %1385 = load i8, ptr %1384, align 8, !tbaa !47, !range !45, !noundef !46
  %1386 = trunc i8 %1385 to i1
  br i1 %1386, label %1387, label %1414

1387:                                             ; preds = %1381
  %1388 = load ptr, ptr %43, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1388, i32 0, i32 14
  %1390 = load i8, ptr %1389, align 1, !tbaa !170, !range !45, !noundef !46
  %1391 = trunc i8 %1390 to i1
  br i1 %1391, label %1414, label %1392

1392:                                             ; preds = %1387
  %1393 = load ptr, ptr %21, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.ImGuiIO, ptr %1393, i32 0, i32 72
  %1395 = getelementptr inbounds %struct.ImVec2, ptr %1394, i32 0, i32 0
  %1396 = load float, ptr %1395, align 4, !tbaa !174
  %1397 = fcmp une float %1396, 0.000000e+00
  br i1 %1397, label %1404, label %1398

1398:                                             ; preds = %1392
  %1399 = load ptr, ptr %21, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.ImGuiIO, ptr %1399, i32 0, i32 72
  %1401 = getelementptr inbounds %struct.ImVec2, ptr %1400, i32 0, i32 1
  %1402 = load float, ptr %1401, align 4, !tbaa !175
  %1403 = fcmp une float %1402, 0.000000e+00
  br i1 %1403, label %1404, label %1414

1404:                                             ; preds = %1398, %1392
  %1405 = load ptr, ptr %43, align 8, !tbaa !5
  %1406 = load ptr, ptr %43, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1406, i32 0, i32 1
  %1408 = load ptr, ptr %1407, align 8, !tbaa !139
  %1409 = load float, ptr %76, align 4, !tbaa !49
  %1410 = load float, ptr %77, align 4, !tbaa !49
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1405, ptr noundef %1408, float noundef %1409, float noundef %1410)
  %1411 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %1411)
  %1412 = load ptr, ptr %43, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1412, i32 0, i32 13
  store i8 1, ptr %1413, align 8, !tbaa !173
  br label %1414

1414:                                             ; preds = %1404, %1398, %1387, %1381
  br label %1415

1415:                                             ; preds = %1414, %1380
  br label %1416

1416:                                             ; preds = %1415, %1343
  br label %1417

1417:                                             ; preds = %1416, %1190
  %1418 = load ptr, ptr %43, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1418, i32 0, i32 14
  %1420 = load i8, ptr %1419, align 1, !tbaa !170, !range !45, !noundef !46
  %1421 = trunc i8 %1420 to i1
  br i1 %1421, label %1422, label %1431

1422:                                             ; preds = %1417
  %1423 = load ptr, ptr %21, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.ImGuiIO, ptr %1423, i32 0, i32 75
  %1425 = getelementptr inbounds [5 x i8], ptr %1424, i64 0, i64 0
  %1426 = load i8, ptr %1425, align 8, !tbaa !47, !range !45, !noundef !46
  %1427 = trunc i8 %1426 to i1
  br i1 %1427, label %1431, label %1428

1428:                                             ; preds = %1422
  %1429 = load ptr, ptr %43, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1429, i32 0, i32 14
  store i8 0, ptr %1430, align 1, !tbaa !170
  br label %1431

1431:                                             ; preds = %1428, %1422, %1417
  %1432 = load i32, ptr %15, align 4, !tbaa !9
  %1433 = and i32 %1432, 32
  %1434 = icmp ne i32 %1433, 0
  br i1 %1434, label %1435, label %1452

1435:                                             ; preds = %1431
  %1436 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1437 = trunc i8 %1436 to i1
  br i1 %1437, label %1452, label %1438

1438:                                             ; preds = %1435
  %1439 = load i32, ptr %25, align 4, !tbaa !9
  %1440 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 512, i32 noundef 1, i32 noundef %1439)
  br i1 %1440, label %1441, label %1451

1441:                                             ; preds = %1438
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #13
  store i32 9, ptr %81, align 4, !tbaa !9
  %1442 = load ptr, ptr %20, align 8, !tbaa !5
  %1443 = load i32, ptr %15, align 4, !tbaa !9
  %1444 = load ptr, ptr %16, align 8, !tbaa !5
  %1445 = load ptr, ptr %17, align 8, !tbaa !5
  %1446 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %1442, ptr noundef %81, i32 noundef %1443, ptr noundef %1444, ptr noundef %1445, i1 noundef zeroext false)
  br i1 %1446, label %1447, label %1450

1447:                                             ; preds = %1441
  %1448 = load ptr, ptr %43, align 8, !tbaa !5
  %1449 = load i32, ptr %81, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %1448, i32 noundef %1449)
  br label %1450

1450:                                             ; preds = %1447, %1441
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #13
  br label %1451

1451:                                             ; preds = %1450, %1438
  br label %1452

1452:                                             ; preds = %1451, %1435, %1431
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #13
  %1453 = load ptr, ptr %21, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.ImGuiIO, ptr %1453, i32 0, i32 80
  %1455 = load i8, ptr %1454, align 8, !tbaa !154, !range !45, !noundef !46
  %1456 = trunc i8 %1455 to i1
  br i1 %1456, label %1457, label %1462

1457:                                             ; preds = %1452
  %1458 = load ptr, ptr %21, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.ImGuiIO, ptr %1458, i32 0, i32 82
  %1460 = load i8, ptr %1459, align 2, !tbaa !176, !range !45, !noundef !46
  %1461 = trunc i8 %1460 to i1
  br i1 %1461, label %1462, label %1472

1462:                                             ; preds = %1457, %1452
  %1463 = load i8, ptr %64, align 1, !tbaa !47, !range !45, !noundef !46
  %1464 = trunc i8 %1463 to i1
  br i1 %1464, label %1465, label %1470

1465:                                             ; preds = %1462
  %1466 = load ptr, ptr %21, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.ImGuiIO, ptr %1466, i32 0, i32 80
  %1468 = load i8, ptr %1467, align 8, !tbaa !154, !range !45, !noundef !46
  %1469 = trunc i8 %1468 to i1
  br label %1470

1470:                                             ; preds = %1465, %1462
  %1471 = phi i1 [ false, %1462 ], [ %1469, %1465 ]
  br label %1472

1472:                                             ; preds = %1470, %1457
  %1473 = phi i1 [ true, %1457 ], [ %1471, %1470 ]
  %1474 = zext i1 %1473 to i8
  store i8 %1474, ptr %82, align 1, !tbaa !47
  %1475 = load ptr, ptr %21, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.ImGuiIO, ptr %1475, i32 0, i32 108
  %1477 = getelementptr inbounds %struct.ImVector.5, ptr %1476, i32 0, i32 0
  %1478 = load i32, ptr %1477, align 8, !tbaa !177
  %1479 = icmp sgt i32 %1478, 0
  br i1 %1479, label %1480, label %1528

1480:                                             ; preds = %1472
  %1481 = load i8, ptr %82, align 1, !tbaa !47, !range !45, !noundef !46
  %1482 = trunc i8 %1481 to i1
  br i1 %1482, label %1525, label %1483

1483:                                             ; preds = %1480
  %1484 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1485 = trunc i8 %1484 to i1
  br i1 %1485, label %1525, label %1486

1486:                                             ; preds = %1483
  %1487 = load i8, ptr %48, align 1, !tbaa !47, !range !45, !noundef !46
  %1488 = trunc i8 %1487 to i1
  br i1 %1488, label %1525, label %1489

1489:                                             ; preds = %1486
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #13
  store i32 0, ptr %83, align 4, !tbaa !9
  br label %1490

1490:                                             ; preds = %1521, %1489
  %1491 = load i32, ptr %83, align 4, !tbaa !9
  %1492 = load ptr, ptr %21, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.ImGuiIO, ptr %1492, i32 0, i32 108
  %1494 = getelementptr inbounds %struct.ImVector.5, ptr %1493, i32 0, i32 0
  %1495 = load i32, ptr %1494, align 8, !tbaa !177
  %1496 = icmp slt i32 %1491, %1495
  br i1 %1496, label %1498, label %1497

1497:                                             ; preds = %1490
  store i32 4, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #13
  br label %1524

1498:                                             ; preds = %1490
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #13
  %1499 = load ptr, ptr %21, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.ImGuiIO, ptr %1499, i32 0, i32 108
  %1501 = load i32, ptr %83, align 4, !tbaa !9
  %1502 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1500, i32 noundef %1501)
  %1503 = load i16, ptr %1502, align 2, !tbaa !171
  %1504 = zext i16 %1503 to i32
  store i32 %1504, ptr %84, align 4, !tbaa !9
  %1505 = load i32, ptr %84, align 4, !tbaa !9
  %1506 = icmp eq i32 %1505, 9
  br i1 %1506, label %1507, label %1508

1507:                                             ; preds = %1498
  store i32 6, ptr %19, align 4
  br label %1518

1508:                                             ; preds = %1498
  %1509 = load ptr, ptr %20, align 8, !tbaa !5
  %1510 = load i32, ptr %15, align 4, !tbaa !9
  %1511 = load ptr, ptr %16, align 8, !tbaa !5
  %1512 = load ptr, ptr %17, align 8, !tbaa !5
  %1513 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %1509, ptr noundef %84, i32 noundef %1510, ptr noundef %1511, ptr noundef %1512, i1 noundef zeroext false)
  br i1 %1513, label %1514, label %1517

1514:                                             ; preds = %1508
  %1515 = load ptr, ptr %43, align 8, !tbaa !5
  %1516 = load i32, ptr %84, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %1515, i32 noundef %1516)
  br label %1517

1517:                                             ; preds = %1514, %1508
  store i32 0, ptr %19, align 4
  br label %1518

1518:                                             ; preds = %1517, %1507
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #13
  %1519 = load i32, ptr %19, align 4
  switch i32 %1519, label %3715 [
    i32 0, label %1520
    i32 6, label %1521
  ]

1520:                                             ; preds = %1518
  br label %1521

1521:                                             ; preds = %1520, %1518
  %1522 = load i32, ptr %83, align 4, !tbaa !9
  %1523 = add nsw i32 %1522, 1
  store i32 %1523, ptr %83, align 4, !tbaa !9
  br label %1490, !llvm.loop !178

1524:                                             ; preds = %1497
  br label %1525

1525:                                             ; preds = %1524, %1486, %1483, %1480
  %1526 = load ptr, ptr %21, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.ImGuiIO, ptr %1526, i32 0, i32 108
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1527, i32 noundef 0)
  br label %1528

1528:                                             ; preds = %1525, %1472
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #13
  br label %1529

1529:                                             ; preds = %1528, %1120
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #13
  store i8 0, ptr %85, align 1, !tbaa !47
  %1530 = load ptr, ptr %20, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.ImGuiContext, ptr %1530, i32 0, i32 59
  %1532 = load i32, ptr %1531, align 4, !tbaa !126
  %1533 = load i32, ptr %25, align 4, !tbaa !9
  %1534 = icmp eq i32 %1532, %1533
  br i1 %1534, label %1535, label %2302

1535:                                             ; preds = %1529
  %1536 = load ptr, ptr %20, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.ImGuiContext, ptr %1536, i32 0, i32 62
  %1538 = load i8, ptr %1537, align 8, !tbaa !180, !range !45, !noundef !46
  %1539 = trunc i8 %1538 to i1
  br i1 %1539, label %2302, label %1540

1540:                                             ; preds = %1535
  %1541 = load i8, ptr %52, align 1, !tbaa !47, !range !45, !noundef !46
  %1542 = trunc i8 %1541 to i1
  br i1 %1542, label %2302, label %1543

1543:                                             ; preds = %1540
  %1544 = load ptr, ptr %43, align 8, !tbaa !5
  %1545 = icmp ne ptr %1544, null
  br i1 %1545, label %1546, label %1547

1546:                                             ; preds = %1543
  br label %1549

1547:                                             ; preds = %1543
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.2, i32 noundef 4832, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1548:                                             ; No predecessors!
  br label %1549

1549:                                             ; preds = %1548, %1546
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #13
  %1550 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %1551 = load float, ptr %1550, align 4, !tbaa !119
  %1552 = load ptr, ptr %22, align 8, !tbaa !5
  %1553 = getelementptr inbounds %struct.ImGuiStyle, ptr %1552, i32 0, i32 13
  %1554 = getelementptr inbounds %struct.ImVec2, ptr %1553, i32 0, i32 1
  %1555 = load float, ptr %1554, align 4, !tbaa !120
  %1556 = fsub float %1551, %1555
  %1557 = load ptr, ptr %20, align 8, !tbaa !5
  %1558 = getelementptr inbounds %struct.ImGuiContext, ptr %1557, i32 0, i32 8
  %1559 = load float, ptr %1558, align 8, !tbaa !50
  %1560 = fdiv float %1556, %1559
  %1561 = fptosi float %1560 to i32
  %1562 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1561, i32 noundef 1)
  store i32 %1562, ptr %86, align 4, !tbaa !9
  %1563 = load i32, ptr %86, align 4, !tbaa !9
  %1564 = load ptr, ptr %43, align 8, !tbaa !5
  %1565 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1564, i32 0, i32 1
  %1566 = load ptr, ptr %1565, align 8, !tbaa !139
  %1567 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1566, i32 0, i32 4
  store i32 %1563, ptr %1567, align 4, !tbaa !181
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #13
  %1568 = load ptr, ptr %21, align 8, !tbaa !5
  %1569 = getelementptr inbounds %struct.ImGuiIO, ptr %1568, i32 0, i32 81
  %1570 = load i8, ptr %1569, align 1, !tbaa !172, !range !45, !noundef !46
  %1571 = trunc i8 %1570 to i1
  %1572 = zext i1 %1571 to i64
  %1573 = select i1 %1571, i32 4194304, i32 0
  store i32 %1573, ptr %87, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #13
  %1574 = load i8, ptr %64, align 1, !tbaa !47, !range !45, !noundef !46
  %1575 = trunc i8 %1574 to i1
  br i1 %1575, label %1576, label %1581

1576:                                             ; preds = %1549
  %1577 = load ptr, ptr %21, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.ImGuiIO, ptr %1577, i32 0, i32 82
  %1579 = load i8, ptr %1578, align 2, !tbaa !176, !range !45, !noundef !46
  %1580 = trunc i8 %1579 to i1
  br label %1586

1581:                                             ; preds = %1549
  %1582 = load ptr, ptr %21, align 8, !tbaa !5
  %1583 = getelementptr inbounds %struct.ImGuiIO, ptr %1582, i32 0, i32 80
  %1584 = load i8, ptr %1583, align 8, !tbaa !154, !range !45, !noundef !46
  %1585 = trunc i8 %1584 to i1
  br label %1586

1586:                                             ; preds = %1581, %1576
  %1587 = phi i1 [ %1580, %1576 ], [ %1585, %1581 ]
  %1588 = zext i1 %1587 to i8
  store i8 %1588, ptr %88, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #13
  %1589 = load i8, ptr %64, align 1, !tbaa !47, !range !45, !noundef !46
  %1590 = trunc i8 %1589 to i1
  br i1 %1590, label %1591, label %1607

1591:                                             ; preds = %1586
  %1592 = load ptr, ptr %21, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.ImGuiIO, ptr %1592, i32 0, i32 80
  %1594 = load i8, ptr %1593, align 8, !tbaa !154, !range !45, !noundef !46
  %1595 = trunc i8 %1594 to i1
  br i1 %1595, label %1596, label %1607

1596:                                             ; preds = %1591
  %1597 = load ptr, ptr %21, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.ImGuiIO, ptr %1597, i32 0, i32 83
  %1599 = load i8, ptr %1598, align 1, !tbaa !182, !range !45, !noundef !46
  %1600 = trunc i8 %1599 to i1
  br i1 %1600, label %1607, label %1601

1601:                                             ; preds = %1596
  %1602 = load ptr, ptr %21, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.ImGuiIO, ptr %1602, i32 0, i32 82
  %1604 = load i8, ptr %1603, align 2, !tbaa !176, !range !45, !noundef !46
  %1605 = trunc i8 %1604 to i1
  %1606 = xor i1 %1605, true
  br label %1607

1607:                                             ; preds = %1601, %1596, %1591, %1586
  %1608 = phi i1 [ false, %1596 ], [ false, %1591 ], [ false, %1586 ], [ %1606, %1601 ]
  %1609 = zext i1 %1608 to i8
  store i8 %1609, ptr %89, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #13
  store i32 1, ptr %90, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #13
  %1610 = load i32, ptr %25, align 4, !tbaa !9
  %1611 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4665, i32 noundef 1, i32 noundef %1610)
  br i1 %1611, label %1615, label %1612

1612:                                             ; preds = %1607
  %1613 = load i32, ptr %25, align 4, !tbaa !9
  %1614 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 8714, i32 noundef 1, i32 noundef %1613)
  br i1 %1614, label %1615, label %1629

1615:                                             ; preds = %1612, %1607
  %1616 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1617 = trunc i8 %1616 to i1
  br i1 %1617, label %1629, label %1618

1618:                                             ; preds = %1615
  %1619 = load i8, ptr %45, align 1, !tbaa !47, !range !45, !noundef !46
  %1620 = trunc i8 %1619 to i1
  br i1 %1620, label %1629, label %1621

1621:                                             ; preds = %1618
  %1622 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1623 = trunc i8 %1622 to i1
  br i1 %1623, label %1624, label %1627

1624:                                             ; preds = %1621
  %1625 = load ptr, ptr %43, align 8, !tbaa !5
  %1626 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %1625)
  br label %1627

1627:                                             ; preds = %1624, %1621
  %1628 = phi i1 [ true, %1621 ], [ %1626, %1624 ]
  br label %1629

1629:                                             ; preds = %1627, %1618, %1615, %1612
  %1630 = phi i1 [ false, %1618 ], [ false, %1615 ], [ false, %1612 ], [ %1628, %1627 ]
  %1631 = zext i1 %1630 to i8
  store i8 %1631, ptr %91, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #13
  %1632 = load i32, ptr %25, align 4, !tbaa !9
  %1633 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4644, i32 noundef 0, i32 noundef %1632)
  br i1 %1633, label %1637, label %1634

1634:                                             ; preds = %1629
  %1635 = load i32, ptr %25, align 4, !tbaa !9
  %1636 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4617, i32 noundef 0, i32 noundef %1635)
  br i1 %1636, label %1637, label %1648

1637:                                             ; preds = %1634, %1629
  %1638 = load i8, ptr %45, align 1, !tbaa !47, !range !45, !noundef !46
  %1639 = trunc i8 %1638 to i1
  br i1 %1639, label %1648, label %1640

1640:                                             ; preds = %1637
  %1641 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1642 = trunc i8 %1641 to i1
  br i1 %1642, label %1643, label %1646

1643:                                             ; preds = %1640
  %1644 = load ptr, ptr %43, align 8, !tbaa !5
  %1645 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %1644)
  br label %1646

1646:                                             ; preds = %1643, %1640
  %1647 = phi i1 [ true, %1640 ], [ %1645, %1643 ]
  br label %1648

1648:                                             ; preds = %1646, %1637, %1634
  %1649 = phi i1 [ false, %1637 ], [ false, %1634 ], [ %1647, %1646 ]
  %1650 = zext i1 %1649 to i8
  store i8 %1650, ptr %92, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #13
  %1651 = load i32, ptr %25, align 4, !tbaa !9
  %1652 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4663, i32 noundef 1, i32 noundef %1651)
  br i1 %1652, label %1656, label %1653

1653:                                             ; preds = %1648
  %1654 = load i32, ptr %25, align 4, !tbaa !9
  %1655 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 8713, i32 noundef 1, i32 noundef %1654)
  br i1 %1655, label %1656, label %1660

1656:                                             ; preds = %1653, %1648
  %1657 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1658 = trunc i8 %1657 to i1
  %1659 = xor i1 %1658, true
  br label %1660

1660:                                             ; preds = %1656, %1653
  %1661 = phi i1 [ false, %1653 ], [ %1659, %1656 ]
  %1662 = zext i1 %1661 to i8
  store i8 %1662, ptr %93, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #13
  %1663 = load i32, ptr %25, align 4, !tbaa !9
  %1664 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4667, i32 noundef 1, i32 noundef %1663)
  br i1 %1664, label %1665, label %1671

1665:                                             ; preds = %1660
  %1666 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1667 = trunc i8 %1666 to i1
  br i1 %1667, label %1671, label %1668

1668:                                             ; preds = %1665
  %1669 = load i8, ptr %46, align 1, !tbaa !47, !range !45, !noundef !46
  %1670 = trunc i8 %1669 to i1
  br label %1671

1671:                                             ; preds = %1668, %1665, %1660
  %1672 = phi i1 [ false, %1665 ], [ false, %1660 ], [ %1670, %1668 ]
  %1673 = zext i1 %1672 to i8
  store i8 %1673, ptr %94, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #13
  %1674 = load i32, ptr %25, align 4, !tbaa !9
  %1675 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4666, i32 noundef 1, i32 noundef %1674)
  br i1 %1675, label %1679, label %1676

1676:                                             ; preds = %1671
  %1677 = load i32, ptr %25, align 4, !tbaa !9
  %1678 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 12859, i32 noundef 1, i32 noundef %1677)
  br i1 %1678, label %1679, label %1685

1679:                                             ; preds = %1676, %1671
  %1680 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1681 = trunc i8 %1680 to i1
  br i1 %1681, label %1685, label %1682

1682:                                             ; preds = %1679
  %1683 = load i8, ptr %46, align 1, !tbaa !47, !range !45, !noundef !46
  %1684 = trunc i8 %1683 to i1
  br label %1685

1685:                                             ; preds = %1682, %1679, %1676
  %1686 = phi i1 [ false, %1679 ], [ false, %1676 ], [ %1684, %1682 ]
  %1687 = zext i1 %1686 to i8
  store i8 %1687, ptr %95, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #13
  %1688 = load i32, ptr %25, align 4, !tbaa !9
  %1689 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4642, i32 noundef 0, i32 noundef %1688)
  %1690 = zext i1 %1689 to i8
  store i8 %1690, ptr %96, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #13
  %1691 = load ptr, ptr %21, align 8, !tbaa !5
  %1692 = getelementptr inbounds %struct.ImGuiIO, ptr %1691, i32 0, i32 0
  %1693 = load i32, ptr %1692, align 8, !tbaa !183
  %1694 = and i32 %1693, 2
  %1695 = icmp ne i32 %1694, 0
  br i1 %1695, label %1696, label %1702

1696:                                             ; preds = %1685
  %1697 = load ptr, ptr %21, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.ImGuiIO, ptr %1697, i32 0, i32 1
  %1699 = load i32, ptr %1698, align 4, !tbaa !184
  %1700 = and i32 %1699, 1
  %1701 = icmp ne i32 %1700, 0
  br label %1702

1702:                                             ; preds = %1696, %1685
  %1703 = phi i1 [ false, %1685 ], [ %1701, %1696 ]
  %1704 = zext i1 %1703 to i8
  store i8 %1704, ptr %97, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #13
  %1705 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %1705, label %1708, label %1706

1706:                                             ; preds = %1702
  %1707 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 627, i1 noundef zeroext true)
  br label %1708

1708:                                             ; preds = %1706, %1702
  %1709 = phi i1 [ true, %1702 ], [ %1707, %1706 ]
  %1710 = zext i1 %1709 to i8
  store i8 %1710, ptr %98, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #13
  %1711 = load i8, ptr %97, align 1, !tbaa !47, !range !45, !noundef !46
  %1712 = trunc i8 %1711 to i1
  br i1 %1712, label %1713, label %1726

1713:                                             ; preds = %1708
  %1714 = load ptr, ptr %20, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.ImGuiContext, ptr %1714, i32 0, i32 2
  %1716 = getelementptr inbounds %struct.ImGuiIO, ptr %1715, i32 0, i32 13
  %1717 = load i8, ptr %1716, align 8, !tbaa !185, !range !45, !noundef !46
  %1718 = trunc i8 %1717 to i1
  %1719 = zext i1 %1718 to i64
  %1720 = select i1 %1718, i32 635, i32 637
  %1721 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef %1720, i1 noundef zeroext false)
  br i1 %1721, label %1724, label %1722

1722:                                             ; preds = %1713
  %1723 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 636, i1 noundef zeroext false)
  br label %1724

1724:                                             ; preds = %1722, %1713
  %1725 = phi i1 [ true, %1713 ], [ %1723, %1722 ]
  br label %1726

1726:                                             ; preds = %1724, %1708
  %1727 = phi i1 [ false, %1708 ], [ %1725, %1724 ]
  %1728 = zext i1 %1727 to i8
  store i8 %1728, ptr %99, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #13
  %1729 = load i32, ptr %25, align 4, !tbaa !9
  %1730 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 526, i32 noundef 1, i32 noundef %1729)
  br i1 %1730, label %1746, label %1731

1731:                                             ; preds = %1726
  %1732 = load i8, ptr %97, align 1, !tbaa !47, !range !45, !noundef !46
  %1733 = trunc i8 %1732 to i1
  br i1 %1733, label %1734, label %1744

1734:                                             ; preds = %1731
  %1735 = load ptr, ptr %20, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiContext, ptr %1735, i32 0, i32 2
  %1737 = getelementptr inbounds %struct.ImGuiIO, ptr %1736, i32 0, i32 13
  %1738 = load i8, ptr %1737, align 8, !tbaa !185, !range !45, !noundef !46
  %1739 = trunc i8 %1738 to i1
  %1740 = zext i1 %1739 to i64
  %1741 = select i1 %1739, i32 637, i32 635
  %1742 = load i32, ptr %25, align 4, !tbaa !9
  %1743 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef %1741, i32 noundef 1, i32 noundef %1742)
  br label %1744

1744:                                             ; preds = %1734, %1731
  %1745 = phi i1 [ false, %1731 ], [ %1743, %1734 ]
  br label %1746

1746:                                             ; preds = %1744, %1726
  %1747 = phi i1 [ true, %1726 ], [ %1745, %1744 ]
  %1748 = zext i1 %1747 to i8
  store i8 %1748, ptr %100, align 1, !tbaa !47
  %1749 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %1749, label %1750, label %1764

1750:                                             ; preds = %1746
  %1751 = load ptr, ptr %43, align 8, !tbaa !5
  %1752 = load i8, ptr %89, align 1, !tbaa !47, !range !45, !noundef !46
  %1753 = trunc i8 %1752 to i1
  br i1 %1753, label %1754, label %1755

1754:                                             ; preds = %1750
  br label %1760

1755:                                             ; preds = %1750
  %1756 = load i8, ptr %88, align 1, !tbaa !47, !range !45, !noundef !46
  %1757 = trunc i8 %1756 to i1
  %1758 = zext i1 %1757 to i64
  %1759 = select i1 %1757, i32 2097164, i32 2097152
  br label %1760

1760:                                             ; preds = %1755, %1754
  %1761 = phi i32 [ 2097156, %1754 ], [ %1759, %1755 ]
  %1762 = load i32, ptr %87, align 4, !tbaa !9
  %1763 = or i32 %1761, %1762
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1751, i32 noundef %1763)
  br label %2287

1764:                                             ; preds = %1746
  %1765 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %1765, label %1766, label %1780

1766:                                             ; preds = %1764
  %1767 = load ptr, ptr %43, align 8, !tbaa !5
  %1768 = load i8, ptr %89, align 1, !tbaa !47, !range !45, !noundef !46
  %1769 = trunc i8 %1768 to i1
  br i1 %1769, label %1770, label %1771

1770:                                             ; preds = %1766
  br label %1776

1771:                                             ; preds = %1766
  %1772 = load i8, ptr %88, align 1, !tbaa !47, !range !45, !noundef !46
  %1773 = trunc i8 %1772 to i1
  %1774 = zext i1 %1773 to i64
  %1775 = select i1 %1773, i32 2097165, i32 2097153
  br label %1776

1776:                                             ; preds = %1771, %1770
  %1777 = phi i32 [ 2097157, %1770 ], [ %1775, %1771 ]
  %1778 = load i32, ptr %87, align 4, !tbaa !9
  %1779 = or i32 %1777, %1778
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1767, i32 noundef %1779)
  br label %2286

1780:                                             ; preds = %1764
  %1781 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1781, label %1782, label %1810

1782:                                             ; preds = %1780
  %1783 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1784 = trunc i8 %1783 to i1
  br i1 %1784, label %1785, label %1810

1785:                                             ; preds = %1782
  %1786 = load ptr, ptr %21, align 8, !tbaa !5
  %1787 = getelementptr inbounds %struct.ImGuiIO, ptr %1786, i32 0, i32 80
  %1788 = load i8, ptr %1787, align 8, !tbaa !154, !range !45, !noundef !46
  %1789 = trunc i8 %1788 to i1
  br i1 %1789, label %1790, label %1801

1790:                                             ; preds = %1785
  %1791 = load ptr, ptr %34, align 8, !tbaa !5
  %1792 = load ptr, ptr %34, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.ImGuiWindow, ptr %1792, i32 0, i32 33
  %1794 = getelementptr inbounds %struct.ImVec2, ptr %1793, i32 0, i32 1
  %1795 = load float, ptr %1794, align 4, !tbaa !137
  %1796 = load ptr, ptr %20, align 8, !tbaa !5
  %1797 = getelementptr inbounds %struct.ImGuiContext, ptr %1796, i32 0, i32 8
  %1798 = load float, ptr %1797, align 8, !tbaa !50
  %1799 = fsub float %1795, %1798
  %1800 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1799, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1791, float noundef %1800)
  br label %1809

1801:                                             ; preds = %1785
  %1802 = load ptr, ptr %43, align 8, !tbaa !5
  %1803 = load i8, ptr %89, align 1, !tbaa !47, !range !45, !noundef !46
  %1804 = trunc i8 %1803 to i1
  %1805 = zext i1 %1804 to i64
  %1806 = select i1 %1804, i32 2097158, i32 2097154
  %1807 = load i32, ptr %87, align 4, !tbaa !9
  %1808 = or i32 %1806, %1807
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1802, i32 noundef %1808)
  br label %1809

1809:                                             ; preds = %1801, %1790
  br label %2285

1810:                                             ; preds = %1782, %1780
  %1811 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1811, label %1812, label %1841

1812:                                             ; preds = %1810
  %1813 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1814 = trunc i8 %1813 to i1
  br i1 %1814, label %1815, label %1841

1815:                                             ; preds = %1812
  %1816 = load ptr, ptr %21, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.ImGuiIO, ptr %1816, i32 0, i32 80
  %1818 = load i8, ptr %1817, align 8, !tbaa !154, !range !45, !noundef !46
  %1819 = trunc i8 %1818 to i1
  br i1 %1819, label %1820, label %1832

1820:                                             ; preds = %1815
  %1821 = load ptr, ptr %34, align 8, !tbaa !5
  %1822 = load ptr, ptr %34, align 8, !tbaa !5
  %1823 = getelementptr inbounds %struct.ImGuiWindow, ptr %1822, i32 0, i32 33
  %1824 = getelementptr inbounds %struct.ImVec2, ptr %1823, i32 0, i32 1
  %1825 = load float, ptr %1824, align 4, !tbaa !137
  %1826 = load ptr, ptr %20, align 8, !tbaa !5
  %1827 = getelementptr inbounds %struct.ImGuiContext, ptr %1826, i32 0, i32 8
  %1828 = load float, ptr %1827, align 8, !tbaa !50
  %1829 = fadd float %1825, %1828
  %1830 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1831 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1829, float noundef %1830)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1821, float noundef %1831)
  br label %1840

1832:                                             ; preds = %1815
  %1833 = load ptr, ptr %43, align 8, !tbaa !5
  %1834 = load i8, ptr %89, align 1, !tbaa !47, !range !45, !noundef !46
  %1835 = trunc i8 %1834 to i1
  %1836 = zext i1 %1835 to i64
  %1837 = select i1 %1835, i32 2097159, i32 2097155
  %1838 = load i32, ptr %87, align 4, !tbaa !9
  %1839 = or i32 %1837, %1838
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1833, i32 noundef %1839)
  br label %1840

1840:                                             ; preds = %1832, %1820
  br label %2284

1841:                                             ; preds = %1812, %1810
  %1842 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  br i1 %1842, label %1843, label %1858

1843:                                             ; preds = %1841
  %1844 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1845 = trunc i8 %1844 to i1
  br i1 %1845, label %1846, label %1858

1846:                                             ; preds = %1843
  %1847 = load ptr, ptr %43, align 8, !tbaa !5
  %1848 = load i32, ptr %87, align 4, !tbaa !9
  %1849 = or i32 2097166, %1848
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1847, i32 noundef %1849)
  %1850 = load i32, ptr %86, align 4, !tbaa !9
  %1851 = sitofp i32 %1850 to float
  %1852 = load ptr, ptr %20, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.ImGuiContext, ptr %1852, i32 0, i32 8
  %1854 = load float, ptr %1853, align 8, !tbaa !50
  %1855 = load float, ptr %54, align 4, !tbaa !49
  %1856 = fneg float %1851
  %1857 = call float @llvm.fmuladd.f32(float %1856, float %1854, float %1855)
  store float %1857, ptr %54, align 4, !tbaa !49
  br label %2283

1858:                                             ; preds = %1843, %1841
  %1859 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  br i1 %1859, label %1860, label %1874

1860:                                             ; preds = %1858
  %1861 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1862 = trunc i8 %1861 to i1
  br i1 %1862, label %1863, label %1874

1863:                                             ; preds = %1860
  %1864 = load ptr, ptr %43, align 8, !tbaa !5
  %1865 = load i32, ptr %87, align 4, !tbaa !9
  %1866 = or i32 2097167, %1865
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1864, i32 noundef %1866)
  %1867 = load i32, ptr %86, align 4, !tbaa !9
  %1868 = sitofp i32 %1867 to float
  %1869 = load ptr, ptr %20, align 8, !tbaa !5
  %1870 = getelementptr inbounds %struct.ImGuiContext, ptr %1869, i32 0, i32 8
  %1871 = load float, ptr %1870, align 8, !tbaa !50
  %1872 = load float, ptr %54, align 4, !tbaa !49
  %1873 = call float @llvm.fmuladd.f32(float %1868, float %1871, float %1872)
  store float %1873, ptr %54, align 4, !tbaa !49
  br label %2282

1874:                                             ; preds = %1860, %1858
  %1875 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %1875, label %1876, label %1890

1876:                                             ; preds = %1874
  %1877 = load ptr, ptr %43, align 8, !tbaa !5
  %1878 = load ptr, ptr %21, align 8, !tbaa !5
  %1879 = getelementptr inbounds %struct.ImGuiIO, ptr %1878, i32 0, i32 80
  %1880 = load i8, ptr %1879, align 8, !tbaa !154, !range !45, !noundef !46
  %1881 = trunc i8 %1880 to i1
  br i1 %1881, label %1882, label %1885

1882:                                             ; preds = %1876
  %1883 = load i32, ptr %87, align 4, !tbaa !9
  %1884 = or i32 2097158, %1883
  br label %1888

1885:                                             ; preds = %1876
  %1886 = load i32, ptr %87, align 4, !tbaa !9
  %1887 = or i32 2097156, %1886
  br label %1888

1888:                                             ; preds = %1885, %1882
  %1889 = phi i32 [ %1884, %1882 ], [ %1887, %1885 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1877, i32 noundef %1889)
  br label %2281

1890:                                             ; preds = %1874
  %1891 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %1891, label %1892, label %1906

1892:                                             ; preds = %1890
  %1893 = load ptr, ptr %43, align 8, !tbaa !5
  %1894 = load ptr, ptr %21, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.ImGuiIO, ptr %1894, i32 0, i32 80
  %1896 = load i8, ptr %1895, align 8, !tbaa !154, !range !45, !noundef !46
  %1897 = trunc i8 %1896 to i1
  br i1 %1897, label %1898, label %1901

1898:                                             ; preds = %1892
  %1899 = load i32, ptr %87, align 4, !tbaa !9
  %1900 = or i32 2097159, %1899
  br label %1904

1901:                                             ; preds = %1892
  %1902 = load i32, ptr %87, align 4, !tbaa !9
  %1903 = or i32 2097157, %1902
  br label %1904

1904:                                             ; preds = %1901, %1898
  %1905 = phi i32 [ %1900, %1898 ], [ %1903, %1901 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1893, i32 noundef %1905)
  br label %2280

1906:                                             ; preds = %1890
  %1907 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1907, label %1908, label %1927

1908:                                             ; preds = %1906
  %1909 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1910 = trunc i8 %1909 to i1
  br i1 %1910, label %1927, label %1911

1911:                                             ; preds = %1908
  %1912 = load i8, ptr %91, align 1, !tbaa !47, !range !45, !noundef !46
  %1913 = trunc i8 %1912 to i1
  br i1 %1913, label %1927, label %1914

1914:                                             ; preds = %1911
  %1915 = load ptr, ptr %43, align 8, !tbaa !5
  %1916 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %1915)
  br i1 %1916, label %1923, label %1917

1917:                                             ; preds = %1914
  %1918 = load i8, ptr %88, align 1, !tbaa !47, !range !45, !noundef !46
  %1919 = trunc i8 %1918 to i1
  br i1 %1919, label %1920, label %1922

1920:                                             ; preds = %1917
  %1921 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1921, i32 noundef 6291469)
  br label %1922

1922:                                             ; preds = %1920, %1917
  br label %1923

1923:                                             ; preds = %1922, %1914
  %1924 = load ptr, ptr %43, align 8, !tbaa !5
  %1925 = load i32, ptr %87, align 4, !tbaa !9
  %1926 = or i32 2097160, %1925
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1924, i32 noundef %1926)
  br label %2279

1927:                                             ; preds = %1911, %1908, %1906
  %1928 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  br i1 %1928, label %1929, label %1966

1929:                                             ; preds = %1927
  %1930 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %1931 = trunc i8 %1930 to i1
  br i1 %1931, label %1966, label %1932

1932:                                             ; preds = %1929
  %1933 = load ptr, ptr %43, align 8, !tbaa !5
  %1934 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %1933)
  br i1 %1934, label %1962, label %1935

1935:                                             ; preds = %1932
  %1936 = load i8, ptr %88, align 1, !tbaa !47, !range !45, !noundef !46
  %1937 = trunc i8 %1936 to i1
  br i1 %1937, label %1938, label %1940

1938:                                             ; preds = %1935
  %1939 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1939, i32 noundef 6291468)
  br label %1961

1940:                                             ; preds = %1935
  %1941 = load i8, ptr %64, align 1, !tbaa !47, !range !45, !noundef !46
  %1942 = trunc i8 %1941 to i1
  br i1 %1942, label %1943, label %1960

1943:                                             ; preds = %1940
  %1944 = load ptr, ptr %21, align 8, !tbaa !5
  %1945 = getelementptr inbounds %struct.ImGuiIO, ptr %1944, i32 0, i32 80
  %1946 = load i8, ptr %1945, align 8, !tbaa !154, !range !45, !noundef !46
  %1947 = trunc i8 %1946 to i1
  br i1 %1947, label %1948, label %1960

1948:                                             ; preds = %1943
  %1949 = load ptr, ptr %21, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.ImGuiIO, ptr %1949, i32 0, i32 82
  %1951 = load i8, ptr %1950, align 2, !tbaa !176, !range !45, !noundef !46
  %1952 = trunc i8 %1951 to i1
  br i1 %1952, label %1960, label %1953

1953:                                             ; preds = %1948
  %1954 = load ptr, ptr %21, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.ImGuiIO, ptr %1954, i32 0, i32 83
  %1956 = load i8, ptr %1955, align 1, !tbaa !182, !range !45, !noundef !46
  %1957 = trunc i8 %1956 to i1
  br i1 %1957, label %1960, label %1958

1958:                                             ; preds = %1953
  %1959 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1959, i32 noundef 6291460)
  br label %1960

1960:                                             ; preds = %1958, %1953, %1948, %1943, %1940
  br label %1961

1961:                                             ; preds = %1960, %1938
  br label %1962

1962:                                             ; preds = %1961, %1932
  %1963 = load ptr, ptr %43, align 8, !tbaa !5
  %1964 = load i32, ptr %87, align 4, !tbaa !9
  %1965 = or i32 2097161, %1964
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1963, i32 noundef %1965)
  br label %2278

1966:                                             ; preds = %1929, %1927
  %1967 = load i8, ptr %98, align 1, !tbaa !47, !range !45, !noundef !46
  %1968 = trunc i8 %1967 to i1
  br i1 %1968, label %1972, label %1969

1969:                                             ; preds = %1966
  %1970 = load i8, ptr %99, align 1, !tbaa !47, !range !45, !noundef !46
  %1971 = trunc i8 %1970 to i1
  br i1 %1971, label %1972, label %2025

1972:                                             ; preds = %1969, %1966
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #13
  %1973 = load i32, ptr %15, align 4, !tbaa !9
  %1974 = and i32 %1973, 256
  %1975 = icmp ne i32 %1974, 0
  %1976 = zext i1 %1975 to i8
  store i8 %1976, ptr %101, align 1, !tbaa !47
  %1977 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %1978 = trunc i8 %1977 to i1
  br i1 %1978, label %1979, label %1998

1979:                                             ; preds = %1972
  %1980 = load i8, ptr %99, align 1, !tbaa !47, !range !45, !noundef !46
  %1981 = trunc i8 %1980 to i1
  br i1 %1981, label %1998, label %1982

1982:                                             ; preds = %1979
  %1983 = load i8, ptr %101, align 1, !tbaa !47, !range !45, !noundef !46
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1985, label %1990

1985:                                             ; preds = %1982
  %1986 = load ptr, ptr %21, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.ImGuiIO, ptr %1986, i32 0, i32 80
  %1988 = load i8, ptr %1987, align 8, !tbaa !154, !range !45, !noundef !46
  %1989 = trunc i8 %1988 to i1
  br i1 %1989, label %1990, label %1998

1990:                                             ; preds = %1985, %1982
  %1991 = load i8, ptr %101, align 1, !tbaa !47, !range !45, !noundef !46
  %1992 = trunc i8 %1991 to i1
  br i1 %1992, label %2010, label %1993

1993:                                             ; preds = %1990
  %1994 = load ptr, ptr %21, align 8, !tbaa !5
  %1995 = getelementptr inbounds %struct.ImGuiIO, ptr %1994, i32 0, i32 80
  %1996 = load i8, ptr %1995, align 8, !tbaa !154, !range !45, !noundef !46
  %1997 = trunc i8 %1996 to i1
  br i1 %1997, label %1998, label %2010

1998:                                             ; preds = %1993, %1985, %1979, %1972
  store i8 1, ptr %73, align 1, !tbaa !47
  %1999 = load ptr, ptr %21, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.ImGuiIO, ptr %1999, i32 0, i32 32
  %2001 = load i8, ptr %2000, align 1, !tbaa !186, !range !45, !noundef !46
  %2002 = trunc i8 %2001 to i1
  br i1 %2002, label %2003, label %2008

2003:                                             ; preds = %1998
  %2004 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %2005 = trunc i8 %2004 to i1
  br i1 %2005, label %2008, label %2006

2006:                                             ; preds = %2003
  %2007 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %2007)
  br label %2009

2008:                                             ; preds = %2003, %1998
  store i8 1, ptr %52, align 1, !tbaa !47
  br label %2009

2009:                                             ; preds = %2008, %2006
  br label %2024

2010:                                             ; preds = %1993, %1990
  %2011 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %2012 = trunc i8 %2011 to i1
  br i1 %2012, label %2023, label %2013

2013:                                             ; preds = %2010
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #13
  store i32 10, ptr %102, align 4, !tbaa !9
  %2014 = load ptr, ptr %20, align 8, !tbaa !5
  %2015 = load i32, ptr %15, align 4, !tbaa !9
  %2016 = load ptr, ptr %16, align 8, !tbaa !5
  %2017 = load ptr, ptr %17, align 8, !tbaa !5
  %2018 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %2014, ptr noundef %102, i32 noundef %2015, ptr noundef %2016, ptr noundef %2017, i1 noundef zeroext false)
  br i1 %2018, label %2019, label %2022

2019:                                             ; preds = %2013
  %2020 = load ptr, ptr %43, align 8, !tbaa !5
  %2021 = load i32, ptr %102, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %2020, i32 noundef %2021)
  br label %2022

2022:                                             ; preds = %2019, %2013
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #13
  br label %2023

2023:                                             ; preds = %2022, %2010
  br label %2024

2024:                                             ; preds = %2023, %2009
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #13
  br label %2277

2025:                                             ; preds = %1969
  %2026 = load i8, ptr %100, align 1, !tbaa !47, !range !45, !noundef !46
  %2027 = trunc i8 %2026 to i1
  br i1 %2027, label %2028, label %2043

2028:                                             ; preds = %2025
  %2029 = load i32, ptr %15, align 4, !tbaa !9
  %2030 = and i32 %2029, 128
  %2031 = icmp ne i32 %2030, 0
  br i1 %2031, label %2032, label %2041

2032:                                             ; preds = %2028
  %2033 = load ptr, ptr %12, align 8, !tbaa !5
  %2034 = getelementptr inbounds i8, ptr %2033, i64 0
  %2035 = load i8, ptr %2034, align 1, !tbaa !161
  %2036 = sext i8 %2035 to i32
  %2037 = icmp ne i32 %2036, 0
  br i1 %2037, label %2038, label %2039

2038:                                             ; preds = %2032
  store i8 1, ptr %85, align 1, !tbaa !47
  br label %2040

2039:                                             ; preds = %2032
  store i8 0, ptr %71, align 1, !tbaa !47
  store i8 0, ptr %70, align 1, !tbaa !47
  store i8 1, ptr %52, align 1, !tbaa !47
  br label %2040

2040:                                             ; preds = %2039, %2038
  br label %2042

2041:                                             ; preds = %2028
  store i8 1, ptr %85, align 1, !tbaa !47
  store i8 1, ptr %52, align 1, !tbaa !47
  store i8 0, ptr %71, align 1, !tbaa !47
  store i8 0, ptr %70, align 1, !tbaa !47
  br label %2042

2042:                                             ; preds = %2041, %2040
  br label %2276

2043:                                             ; preds = %2025
  %2044 = load i8, ptr %94, align 1, !tbaa !47, !range !45, !noundef !46
  %2045 = trunc i8 %2044 to i1
  br i1 %2045, label %2049, label %2046

2046:                                             ; preds = %2043
  %2047 = load i8, ptr %95, align 1, !tbaa !47, !range !45, !noundef !46
  %2048 = trunc i8 %2047 to i1
  br i1 %2048, label %2049, label %2056

2049:                                             ; preds = %2046, %2043
  %2050 = load ptr, ptr %43, align 8, !tbaa !5
  %2051 = load i8, ptr %94, align 1, !tbaa !47, !range !45, !noundef !46
  %2052 = trunc i8 %2051 to i1
  %2053 = zext i1 %2052 to i64
  %2054 = select i1 %2052, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %2050, i32 noundef %2054)
  %2055 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2055)
  br label %2275

2056:                                             ; preds = %2046
  %2057 = load i8, ptr %96, align 1, !tbaa !47, !range !45, !noundef !46
  %2058 = trunc i8 %2057 to i1
  br i1 %2058, label %2059, label %2063

2059:                                             ; preds = %2056
  %2060 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %2060)
  %2061 = load ptr, ptr %43, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2061, i32 0, i32 13
  store i8 1, ptr %2062, align 8, !tbaa !173
  br label %2274

2063:                                             ; preds = %2056
  %2064 = load i8, ptr %91, align 1, !tbaa !47, !range !45, !noundef !46
  %2065 = trunc i8 %2064 to i1
  br i1 %2065, label %2069, label %2066

2066:                                             ; preds = %2063
  %2067 = load i8, ptr %92, align 1, !tbaa !47, !range !45, !noundef !46
  %2068 = trunc i8 %2067 to i1
  br i1 %2068, label %2069, label %2163

2069:                                             ; preds = %2066, %2063
  %2070 = load ptr, ptr %20, align 8, !tbaa !5
  %2071 = getelementptr inbounds %struct.ImGuiContext, ptr %2070, i32 0, i32 3
  %2072 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %2071, i32 0, i32 1
  %2073 = load ptr, ptr %2072, align 8, !tbaa !187
  %2074 = icmp ne ptr %2073, null
  br i1 %2074, label %2075, label %2146

2075:                                             ; preds = %2069
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #13
  %2076 = load ptr, ptr %43, align 8, !tbaa !5
  %2077 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2076)
  br i1 %2077, label %2078, label %2090

2078:                                             ; preds = %2075
  %2079 = load ptr, ptr %43, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2079, i32 0, i32 1
  %2081 = load ptr, ptr %2080, align 8, !tbaa !139
  %2082 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2081, i32 0, i32 1
  %2083 = load i32, ptr %2082, align 4, !tbaa !146
  %2084 = load ptr, ptr %43, align 8, !tbaa !5
  %2085 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2084, i32 0, i32 1
  %2086 = load ptr, ptr %2085, align 8, !tbaa !139
  %2087 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2086, i32 0, i32 2
  %2088 = load i32, ptr %2087, align 4, !tbaa !148
  %2089 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2083, i32 noundef %2088)
  br label %2091

2090:                                             ; preds = %2075
  br label %2091

2091:                                             ; preds = %2090, %2078
  %2092 = phi i32 [ %2089, %2078 ], [ 0, %2090 ]
  store i32 %2092, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #13
  %2093 = load ptr, ptr %43, align 8, !tbaa !5
  %2094 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2093)
  br i1 %2094, label %2095, label %2107

2095:                                             ; preds = %2091
  %2096 = load ptr, ptr %43, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2096, i32 0, i32 1
  %2098 = load ptr, ptr %2097, align 8, !tbaa !139
  %2099 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2098, i32 0, i32 1
  %2100 = load i32, ptr %2099, align 4, !tbaa !146
  %2101 = load ptr, ptr %43, align 8, !tbaa !5
  %2102 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2101, i32 0, i32 1
  %2103 = load ptr, ptr %2102, align 8, !tbaa !139
  %2104 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2103, i32 0, i32 2
  %2105 = load i32, ptr %2104, align 4, !tbaa !148
  %2106 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2100, i32 noundef %2105)
  br label %2111

2107:                                             ; preds = %2091
  %2108 = load ptr, ptr %43, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2108, i32 0, i32 4
  %2110 = load i32, ptr %2109, align 8, !tbaa !144
  br label %2111

2111:                                             ; preds = %2107, %2095
  %2112 = phi i32 [ %2106, %2095 ], [ %2110, %2107 ]
  store i32 %2112, ptr %104, align 4, !tbaa !9
  %2113 = load ptr, ptr %20, align 8, !tbaa !5
  %2114 = getelementptr inbounds %struct.ImGuiContext, ptr %2113, i32 0, i32 313
  %2115 = load i32, ptr %104, align 4, !tbaa !9
  %2116 = load i32, ptr %103, align 4, !tbaa !9
  %2117 = sub nsw i32 %2115, %2116
  %2118 = add nsw i32 %2117, 1
  call void @_ZN8ImVectorIcE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %2114, i32 noundef %2118)
  %2119 = load ptr, ptr %20, align 8, !tbaa !5
  %2120 = getelementptr inbounds %struct.ImGuiContext, ptr %2119, i32 0, i32 313
  %2121 = getelementptr inbounds %struct.ImVector.36, ptr %2120, i32 0, i32 2
  %2122 = load ptr, ptr %2121, align 8, !tbaa !188
  %2123 = load ptr, ptr %43, align 8, !tbaa !5
  %2124 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2123, i32 0, i32 6
  %2125 = load ptr, ptr %2124, align 8, !tbaa !160
  %2126 = load i32, ptr %103, align 4, !tbaa !9
  %2127 = sext i32 %2126 to i64
  %2128 = getelementptr inbounds i8, ptr %2125, i64 %2127
  %2129 = load i32, ptr %104, align 4, !tbaa !9
  %2130 = load i32, ptr %103, align 4, !tbaa !9
  %2131 = sub nsw i32 %2129, %2130
  %2132 = sext i32 %2131 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2122, ptr align 1 %2128, i64 %2132, i1 false)
  %2133 = load ptr, ptr %20, align 8, !tbaa !5
  %2134 = getelementptr inbounds %struct.ImGuiContext, ptr %2133, i32 0, i32 313
  %2135 = getelementptr inbounds %struct.ImVector.36, ptr %2134, i32 0, i32 2
  %2136 = load ptr, ptr %2135, align 8, !tbaa !188
  %2137 = load i32, ptr %104, align 4, !tbaa !9
  %2138 = load i32, ptr %103, align 4, !tbaa !9
  %2139 = sub nsw i32 %2137, %2138
  %2140 = sext i32 %2139 to i64
  %2141 = getelementptr inbounds i8, ptr %2136, i64 %2140
  store i8 0, ptr %2141, align 1, !tbaa !161
  %2142 = load ptr, ptr %20, align 8, !tbaa !5
  %2143 = getelementptr inbounds %struct.ImGuiContext, ptr %2142, i32 0, i32 313
  %2144 = getelementptr inbounds %struct.ImVector.36, ptr %2143, i32 0, i32 2
  %2145 = load ptr, ptr %2144, align 8, !tbaa !188
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %2145)
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #13
  br label %2146

2146:                                             ; preds = %2111, %2069
  %2147 = load i8, ptr %91, align 1, !tbaa !47, !range !45, !noundef !46
  %2148 = trunc i8 %2147 to i1
  br i1 %2148, label %2149, label %2162

2149:                                             ; preds = %2146
  %2150 = load ptr, ptr %43, align 8, !tbaa !5
  %2151 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2150)
  br i1 %2151, label %2154, label %2152

2152:                                             ; preds = %2149
  %2153 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %2153)
  br label %2154

2154:                                             ; preds = %2152, %2149
  %2155 = load ptr, ptr %43, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2155, i32 0, i32 13
  store i8 1, ptr %2156, align 8, !tbaa !173
  %2157 = load ptr, ptr %43, align 8, !tbaa !5
  %2158 = load ptr, ptr %43, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2158, i32 0, i32 1
  %2160 = load ptr, ptr %2159, align 8, !tbaa !139
  %2161 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %2157, ptr noundef %2160)
  br label %2162

2162:                                             ; preds = %2154, %2146
  br label %2273

2163:                                             ; preds = %2066
  %2164 = load i8, ptr %93, align 1, !tbaa !47, !range !45, !noundef !46
  %2165 = trunc i8 %2164 to i1
  br i1 %2165, label %2166, label %2272

2166:                                             ; preds = %2163
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #13
  %2167 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %2167, ptr %105, align 8, !tbaa !5
  %2168 = load ptr, ptr %105, align 8, !tbaa !5
  %2169 = icmp ne ptr %2168, null
  br i1 %2169, label %2170, label %2271

2170:                                             ; preds = %2166
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #13
  %2171 = load ptr, ptr %105, align 8, !tbaa !5
  %2172 = call i64 @strlen(ptr noundef %2171) #15
  %2173 = trunc i64 %2172 to i32
  store i32 %2173, ptr %106, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #13
  call void @_ZN8ImVectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107)
  %2174 = load i32, ptr %106, align 4, !tbaa !9
  %2175 = add nsw i32 %2174, 1
  invoke void @_ZN8ImVectorIcE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %107, i32 noundef %2175)
          to label %2176 unwind label %2184

2176:                                             ; preds = %2170
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #13
  %2177 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2177, ptr %110, align 8, !tbaa !5
  br label %2178

2178:                                             ; preds = %2235, %2233, %2176
  %2179 = load ptr, ptr %110, align 8, !tbaa !5
  %2180 = load i8, ptr %2179, align 1, !tbaa !161
  %2181 = sext i8 %2180 to i32
  %2182 = icmp ne i32 %2181, 0
  br i1 %2182, label %2188, label %2183

2183:                                             ; preds = %2178
  store i32 7, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #13
  br label %2246

2184:                                             ; preds = %2251, %2170
  %2185 = landingpad { ptr, i32 }
          cleanup
  %2186 = extractvalue { ptr, i32 } %2185, 0
  store ptr %2186, ptr %108, align 8
  %2187 = extractvalue { ptr, i32 } %2185, 1
  store i32 %2187, ptr %109, align 4
  br label %2270

2188:                                             ; preds = %2178
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #13
  %2189 = load ptr, ptr %110, align 8, !tbaa !5
  %2190 = invoke noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %111, ptr noundef %2189, ptr noundef null)
          to label %2191 unwind label %2203

2191:                                             ; preds = %2188
  store i32 %2190, ptr %112, align 4, !tbaa !9
  %2192 = load i32, ptr %112, align 4, !tbaa !9
  %2193 = load ptr, ptr %110, align 8, !tbaa !5
  %2194 = sext i32 %2192 to i64
  %2195 = getelementptr inbounds i8, ptr %2193, i64 %2194
  store ptr %2195, ptr %110, align 8, !tbaa !5
  %2196 = load ptr, ptr %20, align 8, !tbaa !5
  %2197 = load i32, ptr %15, align 4, !tbaa !9
  %2198 = load ptr, ptr %16, align 8, !tbaa !5
  %2199 = load ptr, ptr %17, align 8, !tbaa !5
  %2200 = invoke noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %2196, ptr noundef %111, i32 noundef %2197, ptr noundef %2198, ptr noundef %2199, i1 noundef zeroext true)
          to label %2201 unwind label %2203

2201:                                             ; preds = %2191
  br i1 %2200, label %2207, label %2202

2202:                                             ; preds = %2201
  store i32 8, ptr %19, align 4
  br label %2233, !llvm.loop !189

2203:                                             ; preds = %2191, %2188
  %2204 = landingpad { ptr, i32 }
          cleanup
  %2205 = extractvalue { ptr, i32 } %2204, 0
  store ptr %2205, ptr %108, align 8
  %2206 = extractvalue { ptr, i32 } %2204, 1
  store i32 %2206, ptr %109, align 4
  br label %2245

2207:                                             ; preds = %2201
  call void @llvm.lifetime.start.p0(i64 5, ptr %113) #13
  %2208 = getelementptr inbounds [5 x i8], ptr %113, i64 0, i64 0
  %2209 = load i32, ptr %111, align 4, !tbaa !9
  %2210 = invoke noundef ptr @_Z16ImTextCharToUtf8Pcj(ptr noundef %2208, i32 noundef %2209)
          to label %2211 unwind label %2236

2211:                                             ; preds = %2207
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #13
  %2212 = getelementptr inbounds [5 x i8], ptr %113, i64 0, i64 0
  %2213 = call i64 @strlen(ptr noundef %2212) #15
  %2214 = trunc i64 %2213 to i32
  store i32 %2214, ptr %114, align 4, !tbaa !9
  %2215 = getelementptr inbounds %struct.ImVector.36, ptr %107, i32 0, i32 0
  %2216 = load i32, ptr %2215, align 8, !tbaa !190
  %2217 = load i32, ptr %114, align 4, !tbaa !9
  %2218 = add nsw i32 %2216, %2217
  invoke void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %107, i32 noundef %2218)
          to label %2219 unwind label %2240

2219:                                             ; preds = %2211
  %2220 = getelementptr inbounds %struct.ImVector.36, ptr %107, i32 0, i32 2
  %2221 = load ptr, ptr %2220, align 8, !tbaa !191
  %2222 = getelementptr inbounds %struct.ImVector.36, ptr %107, i32 0, i32 0
  %2223 = load i32, ptr %2222, align 8, !tbaa !190
  %2224 = sext i32 %2223 to i64
  %2225 = getelementptr inbounds i8, ptr %2221, i64 %2224
  %2226 = load i32, ptr %114, align 4, !tbaa !9
  %2227 = sext i32 %2226 to i64
  %2228 = sub i64 0, %2227
  %2229 = getelementptr inbounds i8, ptr %2225, i64 %2228
  %2230 = getelementptr inbounds [5 x i8], ptr %113, i64 0, i64 0
  %2231 = load i32, ptr %114, align 4, !tbaa !9
  %2232 = sext i32 %2231 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2229, ptr align 1 %2230, i64 %2232, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #13
  call void @llvm.lifetime.end.p0(i64 5, ptr %113) #13
  store i32 0, ptr %19, align 4
  br label %2233

2233:                                             ; preds = %2219, %2202
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #13
  %2234 = load i32, ptr %19, align 4
  switch i32 %2234, label %3715 [
    i32 0, label %2235
    i32 8, label %2178
  ]

2235:                                             ; preds = %2233
  br label %2178, !llvm.loop !189

2236:                                             ; preds = %2207
  %2237 = landingpad { ptr, i32 }
          cleanup
  %2238 = extractvalue { ptr, i32 } %2237, 0
  store ptr %2238, ptr %108, align 8
  %2239 = extractvalue { ptr, i32 } %2237, 1
  store i32 %2239, ptr %109, align 4
  br label %2244

2240:                                             ; preds = %2211
  %2241 = landingpad { ptr, i32 }
          cleanup
  %2242 = extractvalue { ptr, i32 } %2241, 0
  store ptr %2242, ptr %108, align 8
  %2243 = extractvalue { ptr, i32 } %2241, 1
  store i32 %2243, ptr %109, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #13
  br label %2244

2244:                                             ; preds = %2240, %2236
  call void @llvm.lifetime.end.p0(i64 5, ptr %113) #13
  br label %2245

2245:                                             ; preds = %2244, %2203
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #13
  br label %2270

2246:                                             ; preds = %2183
  %2247 = getelementptr inbounds %struct.ImVector.36, ptr %107, i32 0, i32 0
  %2248 = load i32, ptr %2247, align 8, !tbaa !190
  %2249 = icmp sgt i32 %2248, 0
  br i1 %2249, label %2250, label %2269

2250:                                             ; preds = %2246
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #13
  store i8 0, ptr %115, align 1, !tbaa !161
  invoke void @_ZN8ImVectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(16) %107, ptr noundef nonnull align 1 dereferenceable(1) %115)
          to label %2251 unwind label %2265

2251:                                             ; preds = %2250
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #13
  %2252 = load ptr, ptr %43, align 8, !tbaa !5
  %2253 = load ptr, ptr %43, align 8, !tbaa !5
  %2254 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2253, i32 0, i32 1
  %2255 = load ptr, ptr %2254, align 8, !tbaa !139
  %2256 = getelementptr inbounds %struct.ImVector.36, ptr %107, i32 0, i32 2
  %2257 = load ptr, ptr %2256, align 8, !tbaa !191
  %2258 = getelementptr inbounds %struct.ImVector.36, ptr %107, i32 0, i32 0
  %2259 = load i32, ptr %2258, align 8, !tbaa !190
  %2260 = sub nsw i32 %2259, 1
  %2261 = invoke noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef %2252, ptr noundef %2255, ptr noundef %2257, i32 noundef %2260)
          to label %2262 unwind label %2184

2262:                                             ; preds = %2251
  %2263 = load ptr, ptr %43, align 8, !tbaa !5
  %2264 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2263, i32 0, i32 13
  store i8 1, ptr %2264, align 8, !tbaa !173
  br label %2269

2265:                                             ; preds = %2250
  %2266 = landingpad { ptr, i32 }
          cleanup
  %2267 = extractvalue { ptr, i32 } %2266, 0
  store ptr %2267, ptr %108, align 8
  %2268 = extractvalue { ptr, i32 } %2266, 1
  store i32 %2268, ptr %109, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #13
  br label %2270

2269:                                             ; preds = %2262, %2246
  call void @_ZN8ImVectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #13
  br label %2271

2270:                                             ; preds = %2265, %2245, %2184
  call void @_ZN8ImVectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 80, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  br label %3710

2271:                                             ; preds = %2269, %2166
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  br label %2272

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

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

2274:                                             ; preds = %2273, %2059
  br label %2275

2275:                                             ; preds = %2274, %2049
  br label %2276

2276:                                             ; preds = %2275, %2042
  br label %2277

2277:                                             ; preds = %2276, %2024
  br label %2278

2278:                                             ; preds = %2277, %1962
  br label %2279

2279:                                             ; preds = %2278, %1923
  br label %2280

2280:                                             ; preds = %2279, %1904
  br label %2281

2281:                                             ; preds = %2280, %1888
  br label %2282

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

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

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

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

2286:                                             ; preds = %2285, %1776
  br label %2287

2287:                                             ; preds = %2286, %1760
  %2288 = load ptr, ptr %43, align 8, !tbaa !5
  %2289 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2288)
  br i1 %2289, label %2290, label %2293

2290:                                             ; preds = %2287
  %2291 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %2292 = trunc i8 %2291 to i1
  br label %2293

2293:                                             ; preds = %2290, %2287
  %2294 = phi i1 [ false, %2287 ], [ %2292, %2290 ]
  %2295 = zext i1 %2294 to i32
  %2296 = load i8, ptr %71, align 1, !tbaa !47, !range !45, !noundef !46
  %2297 = trunc i8 %2296 to i1
  %2298 = zext i1 %2297 to i32
  %2299 = or i32 %2298, %2295
  %2300 = icmp ne i32 %2299, 0
  %2301 = zext i1 %2300 to i8
  store i8 %2301, ptr %71, align 1, !tbaa !47
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #13
  br label %2302

2302:                                             ; preds = %2293, %1540, %1535, %1529
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #13
  store ptr null, ptr %116, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #13
  store i32 0, ptr %117, align 4, !tbaa !9
  %2303 = load ptr, ptr %20, align 8, !tbaa !5
  %2304 = getelementptr inbounds %struct.ImGuiContext, ptr %2303, i32 0, i32 59
  %2305 = load i32, ptr %2304, align 4, !tbaa !126
  %2306 = load i32, ptr %25, align 4, !tbaa !9
  %2307 = icmp eq i32 %2305, %2306
  br i1 %2307, label %2308, label %2672

2308:                                             ; preds = %2302
  %2309 = load ptr, ptr %43, align 8, !tbaa !5
  %2310 = icmp ne ptr %2309, null
  br i1 %2310, label %2311, label %2312

2311:                                             ; preds = %2308
  br label %2314

2312:                                             ; preds = %2308
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.2, i32 noundef 4997, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2313:                                             ; No predecessors!
  br label %2314

2314:                                             ; preds = %2313, %2311
  %2315 = load i8, ptr %85, align 1, !tbaa !47, !range !45, !noundef !46
  %2316 = trunc i8 %2315 to i1
  br i1 %2316, label %2317, label %2371

2317:                                             ; preds = %2314
  %2318 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %2319 = trunc i8 %2318 to i1
  br i1 %2319, label %2371, label %2320

2320:                                             ; preds = %2317
  %2321 = load i32, ptr %15, align 4, !tbaa !9
  %2322 = and i32 %2321, 128
  %2323 = icmp ne i32 %2322, 0
  br i1 %2323, label %2324, label %2338

2324:                                             ; preds = %2320
  %2325 = load ptr, ptr %12, align 8, !tbaa !5
  %2326 = getelementptr inbounds i8, ptr %2325, i64 0
  %2327 = load i8, ptr %2326, align 1, !tbaa !161
  %2328 = sext i8 %2327 to i32
  %2329 = icmp ne i32 %2328, 0
  br i1 %2329, label %2330, label %2331

2330:                                             ; preds = %2324
  br label %2333

2331:                                             ; preds = %2324
  call void @__assert_fail(ptr noundef @.str.70, ptr noundef @.str.2, i32 noundef 5003, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2332:                                             ; No predecessors!
  br label %2333

2333:                                             ; preds = %2332, %2330
  store ptr @.str, ptr %116, align 8, !tbaa !5
  store i32 0, ptr %117, align 4, !tbaa !9
  store i8 1, ptr %72, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #13
  %2334 = load ptr, ptr %43, align 8, !tbaa !5
  %2335 = load ptr, ptr %43, align 8, !tbaa !5
  %2336 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2335, i32 0, i32 1
  %2337 = load ptr, ptr %2336, align 8, !tbaa !139
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef %2334, ptr noundef %2337, ptr noundef %118, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #13
  br label %2370

2338:                                             ; preds = %2320
  %2339 = load ptr, ptr %12, align 8, !tbaa !5
  %2340 = load ptr, ptr %43, align 8, !tbaa !5
  %2341 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2340, i32 0, i32 8
  %2342 = getelementptr inbounds %struct.ImVector.36, ptr %2341, i32 0, i32 2
  %2343 = load ptr, ptr %2342, align 8, !tbaa !151
  %2344 = call i32 @strcmp(ptr noundef %2339, ptr noundef %2343) #15
  %2345 = icmp ne i32 %2344, 0
  br i1 %2345, label %2346, label %2369

2346:                                             ; preds = %2338
  %2347 = load ptr, ptr %43, align 8, !tbaa !5
  %2348 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2347, i32 0, i32 8
  %2349 = getelementptr inbounds %struct.ImVector.36, ptr %2348, i32 0, i32 2
  %2350 = load ptr, ptr %2349, align 8, !tbaa !151
  store ptr %2350, ptr %116, align 8, !tbaa !5
  %2351 = load ptr, ptr %43, align 8, !tbaa !5
  %2352 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2351, i32 0, i32 8
  %2353 = getelementptr inbounds %struct.ImVector.36, ptr %2352, i32 0, i32 0
  %2354 = load i32, ptr %2353, align 8, !tbaa !192
  %2355 = sub nsw i32 %2354, 1
  store i32 %2355, ptr %117, align 4, !tbaa !9
  store i8 1, ptr %72, align 1, !tbaa !47
  %2356 = load ptr, ptr %43, align 8, !tbaa !5
  %2357 = load ptr, ptr %43, align 8, !tbaa !5
  %2358 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2357, i32 0, i32 1
  %2359 = load ptr, ptr %2358, align 8, !tbaa !139
  %2360 = load ptr, ptr %43, align 8, !tbaa !5
  %2361 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2360, i32 0, i32 8
  %2362 = getelementptr inbounds %struct.ImVector.36, ptr %2361, i32 0, i32 2
  %2363 = load ptr, ptr %2362, align 8, !tbaa !151
  %2364 = load ptr, ptr %43, align 8, !tbaa !5
  %2365 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2364, i32 0, i32 8
  %2366 = getelementptr inbounds %struct.ImVector.36, ptr %2365, i32 0, i32 0
  %2367 = load i32, ptr %2366, align 8, !tbaa !192
  %2368 = sub nsw i32 %2367, 1
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef %2356, ptr noundef %2359, ptr noundef %2363, i32 noundef %2368)
  br label %2369

2369:                                             ; preds = %2346, %2338
  br label %2370

2370:                                             ; preds = %2369, %2333
  br label %2371

2371:                                             ; preds = %2370, %2317, %2314
  call void @llvm.lifetime.start.p0(i64 1, ptr %119) #13
  store i8 1, ptr %119, align 1, !tbaa !47
  %2372 = load i32, ptr %15, align 4, !tbaa !9
  %2373 = and i32 %2372, 10223616
  %2374 = icmp ne i32 %2373, 0
  br i1 %2374, label %2375, label %2654

2375:                                             ; preds = %2371
  %2376 = load ptr, ptr %16, align 8, !tbaa !5
  %2377 = icmp ne ptr %2376, null
  br i1 %2377, label %2378, label %2379

2378:                                             ; preds = %2375
  br label %2381

2379:                                             ; preds = %2375
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.2, i32 noundef 5037, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2380:                                             ; No predecessors!
  br label %2381

2381:                                             ; preds = %2380, %2378
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #13
  store i32 0, ptr %120, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #13
  store i32 0, ptr %121, align 4, !tbaa !157
  %2382 = load i32, ptr %15, align 4, !tbaa !9
  %2383 = and i32 %2382, 262144
  %2384 = icmp ne i32 %2383, 0
  br i1 %2384, label %2385, label %2389

2385:                                             ; preds = %2381
  %2386 = load i32, ptr %25, align 4, !tbaa !9
  %2387 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 512, i32 noundef 0, i32 noundef %2386)
  br i1 %2387, label %2388, label %2389

2388:                                             ; preds = %2385
  store i32 262144, ptr %120, align 4, !tbaa !9
  store i32 512, ptr %121, align 4, !tbaa !157
  br label %2422

2389:                                             ; preds = %2385, %2381
  %2390 = load i32, ptr %15, align 4, !tbaa !9
  %2391 = and i32 %2390, 524288
  %2392 = icmp ne i32 %2391, 0
  br i1 %2392, label %2393, label %2396

2393:                                             ; preds = %2389
  %2394 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %2394, label %2395, label %2396

2395:                                             ; preds = %2393
  store i32 524288, ptr %120, align 4, !tbaa !9
  store i32 515, ptr %121, align 4, !tbaa !157
  br label %2421

2396:                                             ; preds = %2393, %2389
  %2397 = load i32, ptr %15, align 4, !tbaa !9
  %2398 = and i32 %2397, 524288
  %2399 = icmp ne i32 %2398, 0
  br i1 %2399, label %2400, label %2403

2400:                                             ; preds = %2396
  %2401 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %2401, label %2402, label %2403

2402:                                             ; preds = %2400
  store i32 524288, ptr %120, align 4, !tbaa !9
  store i32 516, ptr %121, align 4, !tbaa !157
  br label %2420

2403:                                             ; preds = %2400, %2396
  %2404 = load i32, ptr %15, align 4, !tbaa !9
  %2405 = and i32 %2404, 8388608
  %2406 = icmp ne i32 %2405, 0
  br i1 %2406, label %2407, label %2413

2407:                                             ; preds = %2403
  %2408 = load ptr, ptr %43, align 8, !tbaa !5
  %2409 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2408, i32 0, i32 15
  %2410 = load i8, ptr %2409, align 2, !tbaa !162, !range !45, !noundef !46
  %2411 = trunc i8 %2410 to i1
  br i1 %2411, label %2412, label %2413

2412:                                             ; preds = %2407
  store i32 8388608, ptr %120, align 4, !tbaa !9
  br label %2419

2413:                                             ; preds = %2407, %2403
  %2414 = load i32, ptr %15, align 4, !tbaa !9
  %2415 = and i32 %2414, 1048576
  %2416 = icmp ne i32 %2415, 0
  br i1 %2416, label %2417, label %2418

2417:                                             ; preds = %2413
  store i32 1048576, ptr %120, align 4, !tbaa !9
  br label %2418

2418:                                             ; preds = %2417, %2413
  br label %2419

2419:                                             ; preds = %2418, %2412
  br label %2420

2420:                                             ; preds = %2419, %2402
  br label %2421

2421:                                             ; preds = %2420, %2395
  br label %2422

2422:                                             ; preds = %2421, %2388
  %2423 = load i32, ptr %120, align 4, !tbaa !9
  %2424 = icmp ne i32 %2423, 0
  br i1 %2424, label %2425, label %2653

2425:                                             ; preds = %2422
  call void @llvm.lifetime.start.p0(i64 64, ptr %122) #13
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %122)
  %2426 = load ptr, ptr %20, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 0
  store ptr %2426, ptr %2427, align 8, !tbaa !193
  %2428 = load i32, ptr %120, align 4, !tbaa !9
  %2429 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 1
  store i32 %2428, ptr %2429, align 8, !tbaa !195
  %2430 = load i32, ptr %15, align 4, !tbaa !9
  %2431 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 2
  store i32 %2430, ptr %2431, align 4, !tbaa !196
  %2432 = load ptr, ptr %17, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 3
  store ptr %2432, ptr %2433, align 8, !tbaa !197
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #13
  %2434 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %2435 = trunc i8 %2434 to i1
  br i1 %2435, label %2436, label %2438

2436:                                             ; preds = %2425
  %2437 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2443

2438:                                             ; preds = %2425
  %2439 = load ptr, ptr %43, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2439, i32 0, i32 7
  %2441 = getelementptr inbounds %struct.ImVector.36, ptr %2440, i32 0, i32 2
  %2442 = load ptr, ptr %2441, align 8, !tbaa !143
  br label %2443

2443:                                             ; preds = %2438, %2436
  %2444 = phi ptr [ %2437, %2436 ], [ %2442, %2438 ]
  store ptr %2444, ptr %123, align 8, !tbaa !5
  %2445 = load ptr, ptr %123, align 8, !tbaa !5
  %2446 = load ptr, ptr %43, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2446, i32 0, i32 6
  %2448 = load ptr, ptr %2447, align 8, !tbaa !160
  %2449 = icmp eq ptr %2445, %2448
  br i1 %2449, label %2450, label %2451

2450:                                             ; preds = %2443
  br label %2453

2451:                                             ; preds = %2443
  call void @__assert_fail(ptr noundef @.str.71, ptr noundef @.str.2, i32 noundef 5076, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2452:                                             ; No predecessors!
  br label %2453

2453:                                             ; preds = %2452, %2450
  %2454 = load ptr, ptr %43, align 8, !tbaa !5
  %2455 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2454, i32 0, i32 9
  %2456 = load ptr, ptr %43, align 8, !tbaa !5
  %2457 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2456, i32 0, i32 4
  %2458 = load i32, ptr %2457, align 8, !tbaa !144
  %2459 = add nsw i32 %2458, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2455, i32 noundef %2459)
  %2460 = load ptr, ptr %43, align 8, !tbaa !5
  %2461 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2460, i32 0, i32 9
  %2462 = getelementptr inbounds %struct.ImVector.36, ptr %2461, i32 0, i32 2
  %2463 = load ptr, ptr %2462, align 8, !tbaa !198
  %2464 = load ptr, ptr %123, align 8, !tbaa !5
  %2465 = load ptr, ptr %43, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2465, i32 0, i32 4
  %2467 = load i32, ptr %2466, align 8, !tbaa !144
  %2468 = add nsw i32 %2467, 1
  %2469 = sext i32 %2468 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2463, ptr align 1 %2464, i64 %2469, i1 false)
  %2470 = load i32, ptr %121, align 4, !tbaa !157
  %2471 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 5
  store i32 %2470, ptr %2471, align 4, !tbaa !199
  %2472 = load ptr, ptr %123, align 8, !tbaa !5
  %2473 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 6
  store ptr %2472, ptr %2473, align 8, !tbaa !200
  %2474 = load ptr, ptr %43, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2474, i32 0, i32 4
  %2476 = load i32, ptr %2475, align 8, !tbaa !144
  %2477 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 7
  store i32 %2476, ptr %2477, align 8, !tbaa !201
  %2478 = load ptr, ptr %43, align 8, !tbaa !5
  %2479 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2478, i32 0, i32 10
  %2480 = load i32, ptr %2479, align 8, !tbaa !163
  %2481 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 8
  store i32 %2480, ptr %2481, align 4, !tbaa !202
  %2482 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 9
  store i8 0, ptr %2482, align 8, !tbaa !203
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #13
  %2483 = load ptr, ptr %43, align 8, !tbaa !5
  %2484 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2483, i32 0, i32 1
  %2485 = load ptr, ptr %2484, align 8, !tbaa !139
  %2486 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2485, i32 0, i32 0
  %2487 = load i32, ptr %2486, align 4, !tbaa !149
  %2488 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 10
  store i32 %2487, ptr %2488, align 4, !tbaa !204
  store i32 %2487, ptr %124, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #13
  %2489 = load ptr, ptr %43, align 8, !tbaa !5
  %2490 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2489, i32 0, i32 1
  %2491 = load ptr, ptr %2490, align 8, !tbaa !139
  %2492 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2491, i32 0, i32 1
  %2493 = load i32, ptr %2492, align 4, !tbaa !146
  %2494 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 11
  store i32 %2493, ptr %2494, align 8, !tbaa !205
  store i32 %2493, ptr %125, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #13
  %2495 = load ptr, ptr %43, align 8, !tbaa !5
  %2496 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2495, i32 0, i32 1
  %2497 = load ptr, ptr %2496, align 8, !tbaa !139
  %2498 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2497, i32 0, i32 2
  %2499 = load i32, ptr %2498, align 4, !tbaa !148
  %2500 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 12
  store i32 %2499, ptr %2500, align 4, !tbaa !206
  store i32 %2499, ptr %126, align 4, !tbaa !9
  %2501 = load ptr, ptr %16, align 8, !tbaa !5
  %2502 = call noundef i32 %2501(ptr noundef %122)
  %2503 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %2504 = trunc i8 %2503 to i1
  br i1 %2504, label %2505, label %2507

2505:                                             ; preds = %2453
  %2506 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2512

2507:                                             ; preds = %2453
  %2508 = load ptr, ptr %43, align 8, !tbaa !5
  %2509 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2508, i32 0, i32 7
  %2510 = getelementptr inbounds %struct.ImVector.36, ptr %2509, i32 0, i32 2
  %2511 = load ptr, ptr %2510, align 8, !tbaa !143
  br label %2512

2512:                                             ; preds = %2507, %2505
  %2513 = phi ptr [ %2506, %2505 ], [ %2511, %2507 ]
  store ptr %2513, ptr %123, align 8, !tbaa !5
  %2514 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 6
  %2515 = load ptr, ptr %2514, align 8, !tbaa !200
  %2516 = load ptr, ptr %123, align 8, !tbaa !5
  %2517 = icmp eq ptr %2515, %2516
  br i1 %2517, label %2518, label %2519

2518:                                             ; preds = %2512
  br label %2521

2519:                                             ; preds = %2512
  call void @__assert_fail(ptr noundef @.str.72, ptr noundef @.str.2, i32 noundef 5095, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2520:                                             ; No predecessors!
  br label %2521

2521:                                             ; preds = %2520, %2518
  %2522 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 8
  %2523 = load i32, ptr %2522, align 4, !tbaa !202
  %2524 = load ptr, ptr %43, align 8, !tbaa !5
  %2525 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2524, i32 0, i32 10
  %2526 = load i32, ptr %2525, align 8, !tbaa !163
  %2527 = icmp eq i32 %2523, %2526
  br i1 %2527, label %2528, label %2529

2528:                                             ; preds = %2521
  br label %2531

2529:                                             ; preds = %2521
  call void @__assert_fail(ptr noundef @.str.73, ptr noundef @.str.2, i32 noundef 5096, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2530:                                             ; No predecessors!
  br label %2531

2531:                                             ; preds = %2530, %2528
  %2532 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 2
  %2533 = load i32, ptr %2532, align 4, !tbaa !196
  %2534 = load i32, ptr %15, align 4, !tbaa !9
  %2535 = icmp eq i32 %2533, %2534
  br i1 %2535, label %2536, label %2537

2536:                                             ; preds = %2531
  br label %2539

2537:                                             ; preds = %2531
  call void @__assert_fail(ptr noundef @.str.74, ptr noundef @.str.2, i32 noundef 5097, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2538:                                             ; No predecessors!
  br label %2539

2539:                                             ; preds = %2538, %2536
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #13
  %2540 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 9
  %2541 = load i8, ptr %2540, align 8, !tbaa !203, !range !45, !noundef !46
  %2542 = trunc i8 %2541 to i1
  %2543 = zext i1 %2542 to i8
  store i8 %2543, ptr %127, align 1, !tbaa !47
  %2544 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 10
  %2545 = load i32, ptr %2544, align 4, !tbaa !204
  %2546 = load i32, ptr %124, align 4, !tbaa !9
  %2547 = icmp ne i32 %2545, %2546
  br i1 %2547, label %2551, label %2548

2548:                                             ; preds = %2539
  %2549 = load i8, ptr %127, align 1, !tbaa !47, !range !45, !noundef !46
  %2550 = trunc i8 %2549 to i1
  br i1 %2550, label %2551, label %2560

2551:                                             ; preds = %2548, %2539
  %2552 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 10
  %2553 = load i32, ptr %2552, align 4, !tbaa !204
  %2554 = load ptr, ptr %43, align 8, !tbaa !5
  %2555 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2554, i32 0, i32 1
  %2556 = load ptr, ptr %2555, align 8, !tbaa !139
  %2557 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2556, i32 0, i32 0
  store i32 %2553, ptr %2557, align 4, !tbaa !149
  %2558 = load ptr, ptr %43, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2558, i32 0, i32 13
  store i8 1, ptr %2559, align 8, !tbaa !173
  br label %2560

2560:                                             ; preds = %2551, %2548
  %2561 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 11
  %2562 = load i32, ptr %2561, align 8, !tbaa !205
  %2563 = load i32, ptr %125, align 4, !tbaa !9
  %2564 = icmp ne i32 %2562, %2563
  br i1 %2564, label %2568, label %2565

2565:                                             ; preds = %2560
  %2566 = load i8, ptr %127, align 1, !tbaa !47, !range !45, !noundef !46
  %2567 = trunc i8 %2566 to i1
  br i1 %2567, label %2568, label %2589

2568:                                             ; preds = %2565, %2560
  %2569 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 11
  %2570 = load i32, ptr %2569, align 8, !tbaa !205
  %2571 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 10
  %2572 = load i32, ptr %2571, align 4, !tbaa !204
  %2573 = icmp eq i32 %2570, %2572
  br i1 %2573, label %2574, label %2580

2574:                                             ; preds = %2568
  %2575 = load ptr, ptr %43, align 8, !tbaa !5
  %2576 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2575, i32 0, i32 1
  %2577 = load ptr, ptr %2576, align 8, !tbaa !139
  %2578 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2577, i32 0, i32 0
  %2579 = load i32, ptr %2578, align 4, !tbaa !149
  br label %2583

2580:                                             ; preds = %2568
  %2581 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 11
  %2582 = load i32, ptr %2581, align 8, !tbaa !205
  br label %2583

2583:                                             ; preds = %2580, %2574
  %2584 = phi i32 [ %2579, %2574 ], [ %2582, %2580 ]
  %2585 = load ptr, ptr %43, align 8, !tbaa !5
  %2586 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2585, i32 0, i32 1
  %2587 = load ptr, ptr %2586, align 8, !tbaa !139
  %2588 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2587, i32 0, i32 1
  store i32 %2584, ptr %2588, align 4, !tbaa !146
  br label %2589

2589:                                             ; preds = %2583, %2565
  %2590 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 12
  %2591 = load i32, ptr %2590, align 4, !tbaa !206
  %2592 = load i32, ptr %126, align 4, !tbaa !9
  %2593 = icmp ne i32 %2591, %2592
  br i1 %2593, label %2597, label %2594

2594:                                             ; preds = %2589
  %2595 = load i8, ptr %127, align 1, !tbaa !47, !range !45, !noundef !46
  %2596 = trunc i8 %2595 to i1
  br i1 %2596, label %2597, label %2618

2597:                                             ; preds = %2594, %2589
  %2598 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 12
  %2599 = load i32, ptr %2598, align 4, !tbaa !206
  %2600 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 11
  %2601 = load i32, ptr %2600, align 8, !tbaa !205
  %2602 = icmp eq i32 %2599, %2601
  br i1 %2602, label %2603, label %2609

2603:                                             ; preds = %2597
  %2604 = load ptr, ptr %43, align 8, !tbaa !5
  %2605 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2604, i32 0, i32 1
  %2606 = load ptr, ptr %2605, align 8, !tbaa !139
  %2607 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2606, i32 0, i32 1
  %2608 = load i32, ptr %2607, align 4, !tbaa !146
  br label %2612

2609:                                             ; preds = %2597
  %2610 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 12
  %2611 = load i32, ptr %2610, align 4, !tbaa !206
  br label %2612

2612:                                             ; preds = %2609, %2603
  %2613 = phi i32 [ %2608, %2603 ], [ %2611, %2609 ]
  %2614 = load ptr, ptr %43, align 8, !tbaa !5
  %2615 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2614, i32 0, i32 1
  %2616 = load ptr, ptr %2615, align 8, !tbaa !139
  %2617 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2616, i32 0, i32 2
  store i32 %2613, ptr %2617, align 4, !tbaa !148
  br label %2618

2618:                                             ; preds = %2612, %2594
  %2619 = load i8, ptr %127, align 1, !tbaa !47, !range !45, !noundef !46
  %2620 = trunc i8 %2619 to i1
  br i1 %2620, label %2621, label %2652

2621:                                             ; preds = %2618
  %2622 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 7
  %2623 = load i32, ptr %2622, align 8, !tbaa !201
  %2624 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 6
  %2625 = load ptr, ptr %2624, align 8, !tbaa !200
  %2626 = call i64 @strlen(ptr noundef %2625) #15
  %2627 = trunc i64 %2626 to i32
  %2628 = icmp eq i32 %2623, %2627
  br i1 %2628, label %2629, label %2630

2629:                                             ; preds = %2621
  br label %2632

2630:                                             ; preds = %2621
  call void @__assert_fail(ptr noundef @.str.75, ptr noundef @.str.2, i32 noundef 5105, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2631:                                             ; No predecessors!
  br label %2632

2632:                                             ; preds = %2631, %2629
  %2633 = load ptr, ptr %43, align 8, !tbaa !5
  %2634 = load ptr, ptr %43, align 8, !tbaa !5
  %2635 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2634, i32 0, i32 9
  %2636 = getelementptr inbounds %struct.ImVector.36, ptr %2635, i32 0, i32 2
  %2637 = load ptr, ptr %2636, align 8, !tbaa !198
  %2638 = load ptr, ptr %43, align 8, !tbaa !5
  %2639 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2638, i32 0, i32 9
  %2640 = getelementptr inbounds %struct.ImVector.36, ptr %2639, i32 0, i32 0
  %2641 = load i32, ptr %2640, align 8, !tbaa !207
  %2642 = sub nsw i32 %2641, 1
  %2643 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 6
  %2644 = load ptr, ptr %2643, align 8, !tbaa !200
  %2645 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 7
  %2646 = load i32, ptr %2645, align 8, !tbaa !201
  call void @_ZL27InputTextReconcileUndoStateP19ImGuiInputTextStatePKciS2_i(ptr noundef %2633, ptr noundef %2637, i32 noundef %2642, ptr noundef %2644, i32 noundef %2646)
  %2647 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %122, i32 0, i32 7
  %2648 = load i32, ptr %2647, align 8, !tbaa !201
  %2649 = load ptr, ptr %43, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2649, i32 0, i32 4
  store i32 %2648, ptr %2650, align 8, !tbaa !144
  %2651 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %2651)
  br label %2652

2652:                                             ; preds = %2632, %2618
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %122) #13
  br label %2653

2653:                                             ; preds = %2652, %2422
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #13
  br label %2654

2654:                                             ; preds = %2653, %2371
  %2655 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %2656 = trunc i8 %2655 to i1
  br i1 %2656, label %2671, label %2657

2657:                                             ; preds = %2654
  %2658 = load ptr, ptr %43, align 8, !tbaa !5
  %2659 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2658, i32 0, i32 6
  %2660 = load ptr, ptr %2659, align 8, !tbaa !160
  %2661 = load ptr, ptr %12, align 8, !tbaa !5
  %2662 = call i32 @strcmp(ptr noundef %2660, ptr noundef %2661) #15
  %2663 = icmp ne i32 %2662, 0
  br i1 %2663, label %2664, label %2671

2664:                                             ; preds = %2657
  %2665 = load ptr, ptr %43, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2665, i32 0, i32 6
  %2667 = load ptr, ptr %2666, align 8, !tbaa !160
  store ptr %2667, ptr %116, align 8, !tbaa !5
  %2668 = load ptr, ptr %43, align 8, !tbaa !5
  %2669 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2668, i32 0, i32 4
  %2670 = load i32, ptr %2669, align 8, !tbaa !144
  store i32 %2670, ptr %117, align 4, !tbaa !9
  store i8 1, ptr %72, align 1, !tbaa !47
  br label %2671

2671:                                             ; preds = %2664, %2657, %2654
  call void @llvm.lifetime.end.p0(i64 1, ptr %119) #13
  br label %2672

2672:                                             ; preds = %2671, %2302
  %2673 = load ptr, ptr %20, align 8, !tbaa !5
  %2674 = getelementptr inbounds %struct.ImGuiContext, ptr %2673, i32 0, i32 221
  %2675 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2674, i32 0, i32 0
  %2676 = load i32, ptr %2675, align 8, !tbaa !208
  %2677 = load i32, ptr %25, align 4, !tbaa !9
  %2678 = icmp eq i32 %2676, %2677
  br i1 %2678, label %2679, label %2715

2679:                                             ; preds = %2672
  %2680 = load ptr, ptr %20, align 8, !tbaa !5
  %2681 = getelementptr inbounds %struct.ImGuiContext, ptr %2680, i32 0, i32 59
  %2682 = load i32, ptr %2681, align 4, !tbaa !126
  %2683 = load i32, ptr %25, align 4, !tbaa !9
  %2684 = icmp ne i32 %2682, %2683
  br i1 %2684, label %2685, label %2711

2685:                                             ; preds = %2679
  %2686 = call noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv()
  br i1 %2686, label %2687, label %2711

2687:                                             ; preds = %2685
  %2688 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %2689 = trunc i8 %2688 to i1
  br i1 %2689, label %2711, label %2690

2690:                                             ; preds = %2687
  %2691 = load ptr, ptr %20, align 8, !tbaa !5
  %2692 = getelementptr inbounds %struct.ImGuiContext, ptr %2691, i32 0, i32 221
  %2693 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2692, i32 0, i32 1
  %2694 = getelementptr inbounds %struct.ImVector.36, ptr %2693, i32 0, i32 2
  %2695 = load ptr, ptr %2694, align 8, !tbaa !209
  %2696 = load ptr, ptr %12, align 8, !tbaa !5
  %2697 = call i32 @strcmp(ptr noundef %2695, ptr noundef %2696) #15
  %2698 = icmp ne i32 %2697, 0
  br i1 %2698, label %2699, label %2711

2699:                                             ; preds = %2690
  %2700 = load ptr, ptr %20, align 8, !tbaa !5
  %2701 = getelementptr inbounds %struct.ImGuiContext, ptr %2700, i32 0, i32 221
  %2702 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2701, i32 0, i32 1
  %2703 = getelementptr inbounds %struct.ImVector.36, ptr %2702, i32 0, i32 2
  %2704 = load ptr, ptr %2703, align 8, !tbaa !209
  store ptr %2704, ptr %116, align 8, !tbaa !5
  %2705 = load ptr, ptr %20, align 8, !tbaa !5
  %2706 = getelementptr inbounds %struct.ImGuiContext, ptr %2705, i32 0, i32 221
  %2707 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2706, i32 0, i32 1
  %2708 = getelementptr inbounds %struct.ImVector.36, ptr %2707, i32 0, i32 0
  %2709 = load i32, ptr %2708, align 8, !tbaa !210
  %2710 = sub nsw i32 %2709, 1
  store i32 %2710, ptr %117, align 4, !tbaa !9
  store i8 1, ptr %72, align 1, !tbaa !47
  br label %2711

2711:                                             ; preds = %2699, %2690, %2687, %2685, %2679
  %2712 = load ptr, ptr %20, align 8, !tbaa !5
  %2713 = getelementptr inbounds %struct.ImGuiContext, ptr %2712, i32 0, i32 221
  %2714 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2713, i32 0, i32 0
  store i32 0, ptr %2714, align 8, !tbaa !208
  br label %2715

2715:                                             ; preds = %2711, %2672
  %2716 = load ptr, ptr %116, align 8, !tbaa !5
  %2717 = icmp ne ptr %2716, null
  br i1 %2717, label %2718, label %2770

2718:                                             ; preds = %2715
  %2719 = load i32, ptr %117, align 4, !tbaa !9
  %2720 = icmp sge i32 %2719, 0
  br i1 %2720, label %2721, label %2722

2721:                                             ; preds = %2718
  br label %2724

2722:                                             ; preds = %2718
  call void @__assert_fail(ptr noundef @.str.76, ptr noundef @.str.2, i32 noundef 5142, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2723:                                             ; No predecessors!
  br label %2724

2724:                                             ; preds = %2723, %2721
  %2725 = load i8, ptr %47, align 1, !tbaa !47, !range !45, !noundef !46
  %2726 = trunc i8 %2725 to i1
  br i1 %2726, label %2727, label %2762

2727:                                             ; preds = %2724
  call void @llvm.lifetime.start.p0(i64 64, ptr %128) #13
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %128)
  %2728 = load ptr, ptr %20, align 8, !tbaa !5
  %2729 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 0
  store ptr %2728, ptr %2729, align 8, !tbaa !193
  %2730 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 1
  store i32 4194304, ptr %2730, align 8, !tbaa !195
  %2731 = load i32, ptr %15, align 4, !tbaa !9
  %2732 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 2
  store i32 %2731, ptr %2732, align 4, !tbaa !196
  %2733 = load ptr, ptr %12, align 8, !tbaa !5
  %2734 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 6
  store ptr %2733, ptr %2734, align 8, !tbaa !200
  %2735 = load i32, ptr %117, align 4, !tbaa !9
  %2736 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 7
  store i32 %2735, ptr %2736, align 8, !tbaa !201
  %2737 = load i32, ptr %13, align 4, !tbaa !9
  %2738 = load i32, ptr %117, align 4, !tbaa !9
  %2739 = add nsw i32 %2738, 1
  %2740 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2737, i32 noundef %2739)
  %2741 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 8
  store i32 %2740, ptr %2741, align 4, !tbaa !202
  %2742 = load ptr, ptr %17, align 8, !tbaa !5
  %2743 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 3
  store ptr %2742, ptr %2743, align 8, !tbaa !197
  %2744 = load ptr, ptr %16, align 8, !tbaa !5
  %2745 = call noundef i32 %2744(ptr noundef %128)
  %2746 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 6
  %2747 = load ptr, ptr %2746, align 8, !tbaa !200
  store ptr %2747, ptr %12, align 8, !tbaa !5
  %2748 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 8
  %2749 = load i32, ptr %2748, align 4, !tbaa !202
  store i32 %2749, ptr %13, align 4, !tbaa !9
  %2750 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %128, i32 0, i32 7
  %2751 = load i32, ptr %2750, align 8, !tbaa !201
  %2752 = load i32, ptr %13, align 4, !tbaa !9
  %2753 = sub nsw i32 %2752, 1
  %2754 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2751, i32 noundef %2753)
  store i32 %2754, ptr %117, align 4, !tbaa !9
  %2755 = load i32, ptr %117, align 4, !tbaa !9
  %2756 = load i32, ptr %13, align 4, !tbaa !9
  %2757 = icmp sle i32 %2755, %2756
  br i1 %2757, label %2758, label %2759

2758:                                             ; preds = %2727
  br label %2761

2759:                                             ; preds = %2727
  call void @__assert_fail(ptr noundef @.str.77, ptr noundef @.str.2, i32 noundef 5157, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2760:                                             ; No predecessors!
  br label %2761

2761:                                             ; preds = %2760, %2758
  call void @llvm.lifetime.end.p0(i64 64, ptr %128) #13
  br label %2762

2762:                                             ; preds = %2761, %2724
  %2763 = load ptr, ptr %12, align 8, !tbaa !5
  %2764 = load ptr, ptr %116, align 8, !tbaa !5
  %2765 = load i32, ptr %117, align 4, !tbaa !9
  %2766 = add nsw i32 %2765, 1
  %2767 = load i32, ptr %13, align 4, !tbaa !9
  %2768 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2766, i32 noundef %2767)
  %2769 = sext i32 %2768 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2763, ptr noundef %2764, i64 noundef %2769)
  br label %2770

2770:                                             ; preds = %2762, %2715
  %2771 = load ptr, ptr %20, align 8, !tbaa !5
  %2772 = getelementptr inbounds %struct.ImGuiContext, ptr %2771, i32 0, i32 59
  %2773 = load i32, ptr %2772, align 4, !tbaa !126
  %2774 = load i32, ptr %25, align 4, !tbaa !9
  %2775 = icmp eq i32 %2773, %2774
  br i1 %2775, label %2776, label %2780

2776:                                             ; preds = %2770
  %2777 = load i8, ptr %52, align 1, !tbaa !47, !range !45, !noundef !46
  %2778 = trunc i8 %2777 to i1
  br i1 %2778, label %2779, label %2780

2779:                                             ; preds = %2776
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2790

2780:                                             ; preds = %2776, %2770
  %2781 = load ptr, ptr %20, align 8, !tbaa !5
  %2782 = getelementptr inbounds %struct.ImGuiContext, ptr %2781, i32 0, i32 59
  %2783 = load i32, ptr %2782, align 4, !tbaa !126
  %2784 = load i32, ptr %25, align 4, !tbaa !9
  %2785 = icmp eq i32 %2783, %2784
  br i1 %2785, label %2786, label %2789

2786:                                             ; preds = %2780
  %2787 = load ptr, ptr %20, align 8, !tbaa !5
  %2788 = getelementptr inbounds %struct.ImGuiContext, ptr %2787, i32 0, i32 312
  store i32 1, ptr %2788, align 4, !tbaa !211
  br label %2789

2789:                                             ; preds = %2786, %2780
  br label %2790

2790:                                             ; preds = %2789, %2779
  %2791 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %2792 = trunc i8 %2791 to i1
  br i1 %2792, label %2803, label %2793

2793:                                             ; preds = %2790
  %2794 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui15RenderNavCursorERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %30, i32 noundef %2794, i32 noundef 0)
  %2795 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %129, ptr align 4 %2795, i64 8, i1 false), !tbaa.struct !48
  %2796 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 4 %2796, i64 8, i1 false), !tbaa.struct !48
  %2797 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2798 = load ptr, ptr %22, align 8, !tbaa !5
  %2799 = getelementptr inbounds %struct.ImGuiStyle, ptr %2798, i32 0, i32 14
  %2800 = load float, ptr %2799, align 4, !tbaa !127
  %2801 = load <2 x float>, ptr %129, align 4
  %2802 = load <2 x float>, ptr %130, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2801, <2 x float> %2802, i32 noundef %2797, i1 noundef zeroext true, float noundef %2800)
  br label %2803

2803:                                             ; preds = %2793, %2790
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #13
  %2804 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2805 = getelementptr inbounds %struct.ImVec2, ptr %2804, i32 0, i32 0
  %2806 = load float, ptr %2805, align 4, !tbaa !167
  %2807 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2808 = getelementptr inbounds %struct.ImVec2, ptr %2807, i32 0, i32 1
  %2809 = load float, ptr %2808, align 4, !tbaa !212
  %2810 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2811 = getelementptr inbounds %struct.ImVec2, ptr %2810, i32 0, i32 0
  %2812 = load float, ptr %2811, align 4, !tbaa !167
  %2813 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %2814 = load float, ptr %2813, align 4, !tbaa !121
  %2815 = fadd float %2812, %2814
  %2816 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2817 = getelementptr inbounds %struct.ImVec2, ptr %2816, i32 0, i32 1
  %2818 = load float, ptr %2817, align 4, !tbaa !212
  %2819 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %2820 = load float, ptr %2819, align 4, !tbaa !119
  %2821 = fadd float %2818, %2820
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %131, float noundef %2806, float noundef %2809, float noundef %2815, float noundef %2821)
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #13
  %2822 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %2823 = trunc i8 %2822 to i1
  br i1 %2823, label %2824, label %2828

2824:                                             ; preds = %2803
  %2825 = load ptr, ptr %34, align 8, !tbaa !5
  %2826 = getelementptr inbounds %struct.ImGuiWindow, ptr %2825, i32 0, i32 78
  %2827 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2826, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %132, ptr align 8 %2827, i64 8, i1 false), !tbaa.struct !48
  br label %2833

2828:                                             ; preds = %2803
  %2829 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2830 = load ptr, ptr %22, align 8, !tbaa !5
  %2831 = getelementptr inbounds %struct.ImGuiStyle, ptr %2830, i32 0, i32 13
  %2832 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2829, ptr noundef nonnull align 4 dereferenceable(8) %2831)
  store <2 x float> %2832, ptr %132, align 4
  br label %2833

2833:                                             ; preds = %2828, %2824
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #13
  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) #13
  store i32 2097152, ptr %134, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #13
  %2834 = load i8, ptr %74, align 1, !tbaa !47, !range !45, !noundef !46
  %2835 = trunc i8 %2834 to i1
  br i1 %2835, label %2836, label %2841

2836:                                             ; preds = %2833
  %2837 = load ptr, ptr %43, align 8, !tbaa !5
  %2838 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2837, i32 0, i32 7
  %2839 = getelementptr inbounds %struct.ImVector.36, ptr %2838, i32 0, i32 2
  %2840 = load ptr, ptr %2839, align 8, !tbaa !143
  br label %2843

2841:                                             ; preds = %2833
  %2842 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2843

2843:                                             ; preds = %2841, %2836
  %2844 = phi ptr [ %2840, %2836 ], [ %2842, %2841 ]
  store ptr %2844, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #13
  store ptr null, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %137) #13
  %2845 = load ptr, ptr %11, align 8, !tbaa !5
  %2846 = icmp ne ptr %2845, null
  br i1 %2846, label %2847, label %2863

2847:                                             ; preds = %2843
  %2848 = load i8, ptr %74, align 1, !tbaa !47, !range !45, !noundef !46
  %2849 = trunc i8 %2848 to i1
  br i1 %2849, label %2850, label %2855

2850:                                             ; preds = %2847
  %2851 = load ptr, ptr %43, align 8, !tbaa !5
  %2852 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2851, i32 0, i32 7
  %2853 = getelementptr inbounds %struct.ImVector.36, ptr %2852, i32 0, i32 2
  %2854 = load ptr, ptr %2853, align 8, !tbaa !143
  br label %2857

2855:                                             ; preds = %2847
  %2856 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2857

2857:                                             ; preds = %2855, %2850
  %2858 = phi ptr [ %2854, %2850 ], [ %2856, %2855 ]
  %2859 = getelementptr inbounds i8, ptr %2858, i64 0
  %2860 = load i8, ptr %2859, align 1, !tbaa !161
  %2861 = sext i8 %2860 to i32
  %2862 = icmp eq i32 %2861, 0
  br label %2863

2863:                                             ; preds = %2857, %2843
  %2864 = phi i1 [ false, %2843 ], [ %2862, %2857 ]
  %2865 = zext i1 %2864 to i8
  store i8 %2865, ptr %137, align 1, !tbaa !47
  %2866 = load i8, ptr %137, align 1, !tbaa !47, !range !45, !noundef !46
  %2867 = trunc i8 %2866 to i1
  %2868 = zext i1 %2867 to i32
  %2869 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %2870 = trunc i8 %2869 to i1
  %2871 = zext i1 %2870 to i32
  %2872 = icmp ne i32 %2868, %2871
  br i1 %2872, label %2873, label %2891

2873:                                             ; preds = %2863
  %2874 = load i8, ptr %45, align 1, !tbaa !47, !range !45, !noundef !46
  %2875 = trunc i8 %2874 to i1
  br i1 %2875, label %2876, label %2880

2876:                                             ; preds = %2873
  %2877 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %2878 = trunc i8 %2877 to i1
  br i1 %2878, label %2880, label %2879

2879:                                             ; preds = %2876
  call void @_ZN5ImGui7PopFontEv()
  br label %2880

2880:                                             ; preds = %2879, %2876, %2873
  %2881 = load i8, ptr %137, align 1, !tbaa !47, !range !45, !noundef !46
  %2882 = trunc i8 %2881 to i1
  %2883 = zext i1 %2882 to i8
  store i8 %2883, ptr %75, align 1, !tbaa !47
  %2884 = load i8, ptr %45, align 1, !tbaa !47, !range !45, !noundef !46
  %2885 = trunc i8 %2884 to i1
  br i1 %2885, label %2886, label %2890

2886:                                             ; preds = %2880
  %2887 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %2888 = trunc i8 %2887 to i1
  br i1 %2888, label %2890, label %2889

2889:                                             ; preds = %2886
  call void @_ZN5ImGui16PushPasswordFontEv()
  br label %2890

2890:                                             ; preds = %2889, %2886, %2880
  br label %2891

2891:                                             ; preds = %2890, %2863
  %2892 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %2893 = trunc i8 %2892 to i1
  br i1 %2893, label %2894, label %2900

2894:                                             ; preds = %2891
  %2895 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2895, ptr %135, align 8, !tbaa !5
  %2896 = load ptr, ptr %11, align 8, !tbaa !5
  %2897 = load ptr, ptr %11, align 8, !tbaa !5
  %2898 = call i64 @strlen(ptr noundef %2897) #15
  %2899 = getelementptr inbounds i8, ptr %2896, i64 %2898
  store ptr %2899, ptr %136, align 8, !tbaa !5
  br label %2900

2900:                                             ; preds = %2894, %2891
  %2901 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %2902 = trunc i8 %2901 to i1
  br i1 %2902, label %2906, label %2903

2903:                                             ; preds = %2900
  %2904 = load i8, ptr %71, align 1, !tbaa !47, !range !45, !noundef !46
  %2905 = trunc i8 %2904 to i1
  br i1 %2905, label %2906, label %3488

2906:                                             ; preds = %2903, %2900
  %2907 = load ptr, ptr %43, align 8, !tbaa !5
  %2908 = icmp ne ptr %2907, null
  br i1 %2908, label %2909, label %2910

2909:                                             ; preds = %2906
  br label %2912

2910:                                             ; preds = %2906
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.2, i32 noundef 5211, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2911:                                             ; No predecessors!
  br label %2912

2912:                                             ; preds = %2911, %2909
  %2913 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %2914 = trunc i8 %2913 to i1
  br i1 %2914, label %2922, label %2915

2915:                                             ; preds = %2912
  %2916 = load ptr, ptr %135, align 8, !tbaa !5
  %2917 = load ptr, ptr %43, align 8, !tbaa !5
  %2918 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2917, i32 0, i32 4
  %2919 = load i32, ptr %2918, align 8, !tbaa !144
  %2920 = sext i32 %2919 to i64
  %2921 = getelementptr inbounds i8, ptr %2916, i64 %2920
  store ptr %2921, ptr %136, align 8, !tbaa !5
  br label %2922

2922:                                             ; preds = %2915, %2912
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #13
  %2923 = load ptr, ptr %135, align 8, !tbaa !5
  store ptr %2923, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #13
  %2924 = load ptr, ptr %138, align 8, !tbaa !5
  %2925 = load ptr, ptr %43, align 8, !tbaa !5
  %2926 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2925, i32 0, i32 4
  %2927 = load i32, ptr %2926, align 8, !tbaa !144
  %2928 = sext i32 %2927 to i64
  %2929 = getelementptr inbounds i8, ptr %2924, i64 %2928
  store ptr %2929, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %140)
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %141)
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #13
  %2930 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %2931 = trunc i8 %2930 to i1
  %2932 = zext i1 %2931 to i64
  %2933 = select i1 %2931, i32 -1, i32 -1000
  store i32 %2933, ptr %142, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #13
  %2934 = load i8, ptr %71, align 1, !tbaa !47, !range !45, !noundef !46
  %2935 = trunc i8 %2934 to i1
  %2936 = zext i1 %2935 to i64
  %2937 = select i1 %2935, i32 -1, i32 -1000
  store i32 %2937, ptr %143, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #13
  %2938 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %2939 = trunc i8 %2938 to i1
  br i1 %2939, label %2940, label %2949

2940:                                             ; preds = %2922
  %2941 = load ptr, ptr %138, align 8, !tbaa !5
  %2942 = load ptr, ptr %43, align 8, !tbaa !5
  %2943 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2942, i32 0, i32 1
  %2944 = load ptr, ptr %2943, align 8, !tbaa !139
  %2945 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2944, i32 0, i32 0
  %2946 = load i32, ptr %2945, align 4, !tbaa !149
  %2947 = sext i32 %2946 to i64
  %2948 = getelementptr inbounds i8, ptr %2941, i64 %2947
  br label %2950

2949:                                             ; preds = %2922
  br label %2950

2950:                                             ; preds = %2949, %2940
  %2951 = phi ptr [ %2948, %2940 ], [ null, %2949 ]
  store ptr %2951, ptr %144, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #13
  %2952 = load i8, ptr %71, align 1, !tbaa !47, !range !45, !noundef !46
  %2953 = trunc i8 %2952 to i1
  br i1 %2953, label %2954, label %2969

2954:                                             ; preds = %2950
  %2955 = load ptr, ptr %138, align 8, !tbaa !5
  %2956 = load ptr, ptr %43, align 8, !tbaa !5
  %2957 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2956, i32 0, i32 1
  %2958 = load ptr, ptr %2957, align 8, !tbaa !139
  %2959 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2958, i32 0, i32 1
  %2960 = load i32, ptr %2959, align 4, !tbaa !146
  %2961 = load ptr, ptr %43, align 8, !tbaa !5
  %2962 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2961, i32 0, i32 1
  %2963 = load ptr, ptr %2962, align 8, !tbaa !139
  %2964 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2963, i32 0, i32 2
  %2965 = load i32, ptr %2964, align 4, !tbaa !148
  %2966 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2960, i32 noundef %2965)
  %2967 = sext i32 %2966 to i64
  %2968 = getelementptr inbounds i8, ptr %2955, i64 %2967
  br label %2970

2969:                                             ; preds = %2950
  br label %2970

2970:                                             ; preds = %2969, %2954
  %2971 = phi ptr [ %2968, %2954 ], [ null, %2969 ]
  store ptr %2971, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #13
  store i32 1, ptr %146, align 4, !tbaa !9
  %2972 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %2973 = trunc i8 %2972 to i1
  br i1 %2973, label %2974, label %3011

2974:                                             ; preds = %2970
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #13
  %2975 = load ptr, ptr %138, align 8, !tbaa !5
  store ptr %2975, ptr %147, align 8, !tbaa !5
  br label %2976

2976:                                             ; preds = %3007, %2974
  %2977 = load ptr, ptr %147, align 8, !tbaa !5
  %2978 = load ptr, ptr %139, align 8, !tbaa !5
  %2979 = load ptr, ptr %147, align 8, !tbaa !5
  %2980 = ptrtoint ptr %2978 to i64
  %2981 = ptrtoint ptr %2979 to i64
  %2982 = sub i64 %2980, %2981
  %2983 = call noundef ptr @memchr(ptr noundef %2977, i32 noundef 10, i64 noundef %2982) #15
  store ptr %2983, ptr %147, align 8, !tbaa !5
  %2984 = icmp ne ptr %2983, null
  br i1 %2984, label %2986, label %2985

2985:                                             ; preds = %2976
  store i32 9, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #13
  br label %3010

2986:                                             ; preds = %2976
  %2987 = load i32, ptr %142, align 4, !tbaa !9
  %2988 = icmp eq i32 %2987, -1
  br i1 %2988, label %2989, label %2995

2989:                                             ; preds = %2986
  %2990 = load ptr, ptr %147, align 8, !tbaa !5
  %2991 = load ptr, ptr %144, align 8, !tbaa !5
  %2992 = icmp uge ptr %2990, %2991
  br i1 %2992, label %2993, label %2995

2993:                                             ; preds = %2989
  %2994 = load i32, ptr %146, align 4, !tbaa !9
  store i32 %2994, ptr %142, align 4, !tbaa !9
  br label %2995

2995:                                             ; preds = %2993, %2989, %2986
  %2996 = load i32, ptr %143, align 4, !tbaa !9
  %2997 = icmp eq i32 %2996, -1
  br i1 %2997, label %2998, label %3004

2998:                                             ; preds = %2995
  %2999 = load ptr, ptr %147, align 8, !tbaa !5
  %3000 = load ptr, ptr %145, align 8, !tbaa !5
  %3001 = icmp uge ptr %2999, %3000
  br i1 %3001, label %3002, label %3004

3002:                                             ; preds = %2998
  %3003 = load i32, ptr %146, align 4, !tbaa !9
  store i32 %3003, ptr %143, align 4, !tbaa !9
  br label %3004

3004:                                             ; preds = %3002, %2998, %2995
  %3005 = load i32, ptr %146, align 4, !tbaa !9
  %3006 = add nsw i32 %3005, 1
  store i32 %3006, ptr %146, align 4, !tbaa !9
  br label %3007

3007:                                             ; preds = %3004
  %3008 = load ptr, ptr %147, align 8, !tbaa !5
  %3009 = getelementptr inbounds i8, ptr %3008, i32 1
  store ptr %3009, ptr %147, align 8, !tbaa !5
  br label %2976, !llvm.loop !213

3010:                                             ; preds = %2985
  br label %3011

3011:                                             ; preds = %3010, %2970
  %3012 = load i32, ptr %142, align 4, !tbaa !9
  %3013 = icmp eq i32 %3012, -1
  br i1 %3013, label %3014, label %3016

3014:                                             ; preds = %3011
  %3015 = load i32, ptr %146, align 4, !tbaa !9
  store i32 %3015, ptr %142, align 4, !tbaa !9
  br label %3016

3016:                                             ; preds = %3014, %3011
  %3017 = load i32, ptr %143, align 4, !tbaa !9
  %3018 = icmp eq i32 %3017, -1
  br i1 %3018, label %3019, label %3021

3019:                                             ; preds = %3016
  %3020 = load i32, ptr %146, align 4, !tbaa !9
  store i32 %3020, ptr %143, align 4, !tbaa !9
  br label %3021

3021:                                             ; preds = %3019, %3016
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #13
  %3022 = load ptr, ptr %20, align 8, !tbaa !5
  %3023 = load ptr, ptr %144, align 8, !tbaa !5
  %3024 = load ptr, ptr %138, align 8, !tbaa !5
  %3025 = call noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef %3023, ptr noundef %3024)
  %3026 = load ptr, ptr %144, align 8, !tbaa !5
  %3027 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef %3022, ptr noundef %3025, ptr noundef %3026, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %3027, ptr %148, align 4
  %3028 = getelementptr inbounds %struct.ImVec2, ptr %148, i32 0, i32 0
  %3029 = load float, ptr %3028, align 4, !tbaa !121
  %3030 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  store float %3029, ptr %3030, align 4, !tbaa !121
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #13
  %3031 = load i32, ptr %142, align 4, !tbaa !9
  %3032 = sitofp i32 %3031 to float
  %3033 = load ptr, ptr %20, align 8, !tbaa !5
  %3034 = getelementptr inbounds %struct.ImGuiContext, ptr %3033, i32 0, i32 8
  %3035 = load float, ptr %3034, align 8, !tbaa !50
  %3036 = fmul float %3032, %3035
  %3037 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 1
  store float %3036, ptr %3037, align 4, !tbaa !119
  %3038 = load i32, ptr %143, align 4, !tbaa !9
  %3039 = icmp sge i32 %3038, 0
  br i1 %3039, label %3040, label %3057

3040:                                             ; preds = %3021
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #13
  %3041 = load ptr, ptr %20, align 8, !tbaa !5
  %3042 = load ptr, ptr %145, align 8, !tbaa !5
  %3043 = load ptr, ptr %138, align 8, !tbaa !5
  %3044 = call noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef %3042, ptr noundef %3043)
  %3045 = load ptr, ptr %145, align 8, !tbaa !5
  %3046 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef %3041, ptr noundef %3044, ptr noundef %3045, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %3046, ptr %149, align 4
  %3047 = getelementptr inbounds %struct.ImVec2, ptr %149, i32 0, i32 0
  %3048 = load float, ptr %3047, align 4, !tbaa !121
  %3049 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 0
  store float %3048, ptr %3049, align 4, !tbaa !121
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #13
  %3050 = load i32, ptr %143, align 4, !tbaa !9
  %3051 = sitofp i32 %3050 to float
  %3052 = load ptr, ptr %20, align 8, !tbaa !5
  %3053 = getelementptr inbounds %struct.ImGuiContext, ptr %3052, i32 0, i32 8
  %3054 = load float, ptr %3053, align 8, !tbaa !50
  %3055 = fmul float %3051, %3054
  %3056 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 1
  store float %3055, ptr %3056, align 4, !tbaa !119
  br label %3057

3057:                                             ; preds = %3040, %3021
  %3058 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3059 = trunc i8 %3058 to i1
  br i1 %3059, label %3060, label %3069

3060:                                             ; preds = %3057
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #13
  %3061 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3062 = load float, ptr %3061, align 4, !tbaa !121
  %3063 = load i32, ptr %146, align 4, !tbaa !9
  %3064 = sitofp i32 %3063 to float
  %3065 = load ptr, ptr %20, align 8, !tbaa !5
  %3066 = getelementptr inbounds %struct.ImGuiContext, ptr %3065, i32 0, i32 8
  %3067 = load float, ptr %3066, align 8, !tbaa !50
  %3068 = fmul float %3064, %3067
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %150, float noundef %3062, float noundef %3068)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %133, ptr align 4 %150, i64 8, i1 false), !tbaa.struct !48
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #13
  br label %3069

3069:                                             ; preds = %3060, %3057
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #13
  %3070 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %3071 = trunc i8 %3070 to i1
  br i1 %3071, label %3072, label %3215

3072:                                             ; preds = %3069
  %3073 = load ptr, ptr %43, align 8, !tbaa !5
  %3074 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3073, i32 0, i32 13
  %3075 = load i8, ptr %3074, align 8, !tbaa !173, !range !45, !noundef !46
  %3076 = trunc i8 %3075 to i1
  br i1 %3076, label %3077, label %3215

3077:                                             ; preds = %3072
  %3078 = load i32, ptr %15, align 4, !tbaa !9
  %3079 = and i32 %3078, 32768
  %3080 = icmp ne i32 %3079, 0
  br i1 %3080, label %3134, label %3081

3081:                                             ; preds = %3077
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #13
  %3082 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3083 = load float, ptr %3082, align 4, !tbaa !121
  %3084 = fmul float %3083, 2.500000e-01
  store float %3084, ptr %151, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #13
  %3085 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3086 = load float, ptr %3085, align 4, !tbaa !121
  %3087 = load ptr, ptr %22, align 8, !tbaa !5
  %3088 = getelementptr inbounds %struct.ImGuiStyle, ptr %3087, i32 0, i32 13
  %3089 = getelementptr inbounds %struct.ImVec2, ptr %3088, i32 0, i32 0
  %3090 = load float, ptr %3089, align 4, !tbaa !152
  %3091 = fsub float %3086, %3090
  store float %3091, ptr %152, align 4, !tbaa !49
  %3092 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  %3093 = load float, ptr %3092, align 4, !tbaa !121
  %3094 = load ptr, ptr %43, align 8, !tbaa !5
  %3095 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3094, i32 0, i32 11
  %3096 = getelementptr inbounds %struct.ImVec2, ptr %3095, i32 0, i32 0
  %3097 = load float, ptr %3096, align 4, !tbaa !153
  %3098 = fcmp olt float %3093, %3097
  br i1 %3098, label %3099, label %3110

3099:                                             ; preds = %3081
  %3100 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  %3101 = load float, ptr %3100, align 4, !tbaa !121
  %3102 = load float, ptr %151, align 4, !tbaa !49
  %3103 = fsub float %3101, %3102
  %3104 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %3103)
  %3105 = fptosi float %3104 to i32
  %3106 = sitofp i32 %3105 to float
  %3107 = load ptr, ptr %43, align 8, !tbaa !5
  %3108 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3107, i32 0, i32 11
  %3109 = getelementptr inbounds %struct.ImVec2, ptr %3108, i32 0, i32 0
  store float %3106, ptr %3109, align 4, !tbaa !153
  br label %3133

3110:                                             ; preds = %3081
  %3111 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  %3112 = load float, ptr %3111, align 4, !tbaa !121
  %3113 = load float, ptr %152, align 4, !tbaa !49
  %3114 = fsub float %3112, %3113
  %3115 = load ptr, ptr %43, align 8, !tbaa !5
  %3116 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3115, i32 0, i32 11
  %3117 = getelementptr inbounds %struct.ImVec2, ptr %3116, i32 0, i32 0
  %3118 = load float, ptr %3117, align 4, !tbaa !153
  %3119 = fcmp oge float %3114, %3118
  br i1 %3119, label %3120, label %3132

3120:                                             ; preds = %3110
  %3121 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  %3122 = load float, ptr %3121, align 4, !tbaa !121
  %3123 = load float, ptr %152, align 4, !tbaa !49
  %3124 = fsub float %3122, %3123
  %3125 = load float, ptr %151, align 4, !tbaa !49
  %3126 = fadd float %3124, %3125
  %3127 = fptosi float %3126 to i32
  %3128 = sitofp i32 %3127 to float
  %3129 = load ptr, ptr %43, align 8, !tbaa !5
  %3130 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3129, i32 0, i32 11
  %3131 = getelementptr inbounds %struct.ImVec2, ptr %3130, i32 0, i32 0
  store float %3128, ptr %3131, align 4, !tbaa !153
  br label %3132

3132:                                             ; preds = %3120, %3110
  br label %3133

3133:                                             ; preds = %3132, %3099
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #13
  br label %3138

3134:                                             ; preds = %3077
  %3135 = load ptr, ptr %43, align 8, !tbaa !5
  %3136 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3135, i32 0, i32 11
  %3137 = getelementptr inbounds %struct.ImVec2, ptr %3136, i32 0, i32 1
  store float 0.000000e+00, ptr %3137, align 4, !tbaa !159
  br label %3138

3138:                                             ; preds = %3134, %3133
  %3139 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3140 = trunc i8 %3139 to i1
  br i1 %3140, label %3141, label %3212

3141:                                             ; preds = %3138
  %3142 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 1
  %3143 = load float, ptr %3142, align 4, !tbaa !119
  %3144 = load ptr, ptr %20, align 8, !tbaa !5
  %3145 = getelementptr inbounds %struct.ImGuiContext, ptr %3144, i32 0, i32 8
  %3146 = load float, ptr %3145, align 8, !tbaa !50
  %3147 = fsub float %3143, %3146
  %3148 = load float, ptr %54, align 4, !tbaa !49
  %3149 = fcmp olt float %3147, %3148
  br i1 %3149, label %3150, label %3158

3150:                                             ; preds = %3141
  %3151 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 1
  %3152 = load float, ptr %3151, align 4, !tbaa !119
  %3153 = load ptr, ptr %20, align 8, !tbaa !5
  %3154 = getelementptr inbounds %struct.ImGuiContext, ptr %3153, i32 0, i32 8
  %3155 = load float, ptr %3154, align 8, !tbaa !50
  %3156 = fsub float %3152, %3155
  %3157 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %3156)
  store float %3157, ptr %54, align 4, !tbaa !49
  br label %3184

3158:                                             ; preds = %3141
  %3159 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 1
  %3160 = load float, ptr %3159, align 4, !tbaa !119
  %3161 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3162 = load float, ptr %3161, align 4, !tbaa !119
  %3163 = load ptr, ptr %22, align 8, !tbaa !5
  %3164 = getelementptr inbounds %struct.ImGuiStyle, ptr %3163, i32 0, i32 13
  %3165 = getelementptr inbounds %struct.ImVec2, ptr %3164, i32 0, i32 1
  %3166 = load float, ptr %3165, align 4, !tbaa !120
  %3167 = fneg float %3166
  %3168 = call float @llvm.fmuladd.f32(float %3167, float 2.000000e+00, float %3162)
  %3169 = fsub float %3160, %3168
  %3170 = load float, ptr %54, align 4, !tbaa !49
  %3171 = fcmp oge float %3169, %3170
  br i1 %3171, label %3172, label %3183

3172:                                             ; preds = %3158
  %3173 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 1
  %3174 = load float, ptr %3173, align 4, !tbaa !119
  %3175 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3176 = load float, ptr %3175, align 4, !tbaa !119
  %3177 = fsub float %3174, %3176
  %3178 = load ptr, ptr %22, align 8, !tbaa !5
  %3179 = getelementptr inbounds %struct.ImGuiStyle, ptr %3178, i32 0, i32 13
  %3180 = getelementptr inbounds %struct.ImVec2, ptr %3179, i32 0, i32 1
  %3181 = load float, ptr %3180, align 4, !tbaa !120
  %3182 = call float @llvm.fmuladd.f32(float %3181, float 2.000000e+00, float %3177)
  store float %3182, ptr %54, align 4, !tbaa !49
  br label %3183

3183:                                             ; preds = %3172, %3158
  br label %3184

3184:                                             ; preds = %3183, %3150
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #13
  %3185 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 1
  %3186 = load float, ptr %3185, align 4, !tbaa !119
  %3187 = load ptr, ptr %22, align 8, !tbaa !5
  %3188 = getelementptr inbounds %struct.ImGuiStyle, ptr %3187, i32 0, i32 13
  %3189 = getelementptr inbounds %struct.ImVec2, ptr %3188, i32 0, i32 1
  %3190 = load float, ptr %3189, align 4, !tbaa !120
  %3191 = call float @llvm.fmuladd.f32(float %3190, float 2.000000e+00, float %3186)
  %3192 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3193 = load float, ptr %3192, align 4, !tbaa !119
  %3194 = fsub float %3191, %3193
  %3195 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %3194, float noundef 0.000000e+00)
  store float %3195, ptr %153, align 4, !tbaa !49
  %3196 = load float, ptr %54, align 4, !tbaa !49
  %3197 = load float, ptr %153, align 4, !tbaa !49
  %3198 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %3196, float noundef 0.000000e+00, float noundef %3197)
  store float %3198, ptr %54, align 4, !tbaa !49
  %3199 = load ptr, ptr %34, align 8, !tbaa !5
  %3200 = getelementptr inbounds %struct.ImGuiWindow, ptr %3199, i32 0, i32 33
  %3201 = getelementptr inbounds %struct.ImVec2, ptr %3200, i32 0, i32 1
  %3202 = load float, ptr %3201, align 4, !tbaa !137
  %3203 = load float, ptr %54, align 4, !tbaa !49
  %3204 = fsub float %3202, %3203
  %3205 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 1
  %3206 = load float, ptr %3205, align 4, !tbaa !119
  %3207 = fadd float %3206, %3204
  store float %3207, ptr %3205, align 4, !tbaa !119
  %3208 = load float, ptr %54, align 4, !tbaa !49
  %3209 = load ptr, ptr %34, align 8, !tbaa !5
  %3210 = getelementptr inbounds %struct.ImGuiWindow, ptr %3209, i32 0, i32 33
  %3211 = getelementptr inbounds %struct.ImVec2, ptr %3210, i32 0, i32 1
  store float %3208, ptr %3211, align 4, !tbaa !137
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #13
  br label %3212

3212:                                             ; preds = %3184, %3138
  %3213 = load ptr, ptr %43, align 8, !tbaa !5
  %3214 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3213, i32 0, i32 13
  store i8 0, ptr %3214, align 8, !tbaa !173
  br label %3215

3215:                                             ; preds = %3212, %3072, %3069
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #13
  %3216 = load ptr, ptr %43, align 8, !tbaa !5
  %3217 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3216, i32 0, i32 11
  %3218 = getelementptr inbounds %struct.ImVec2, ptr %3217, i32 0, i32 0
  %3219 = load float, ptr %3218, align 4, !tbaa !153
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %154, float noundef %3219, float noundef 0.000000e+00)
  %3220 = load i8, ptr %71, align 1, !tbaa !47, !range !45, !noundef !46
  %3221 = trunc i8 %3220 to i1
  br i1 %3221, label %3222, label %3358

3222:                                             ; preds = %3215
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #13
  %3223 = load ptr, ptr %138, align 8, !tbaa !5
  %3224 = load ptr, ptr %43, align 8, !tbaa !5
  %3225 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3224, i32 0, i32 1
  %3226 = load ptr, ptr %3225, align 8, !tbaa !139
  %3227 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3226, i32 0, i32 1
  %3228 = load i32, ptr %3227, align 4, !tbaa !146
  %3229 = load ptr, ptr %43, align 8, !tbaa !5
  %3230 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3229, i32 0, i32 1
  %3231 = load ptr, ptr %3230, align 8, !tbaa !139
  %3232 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3231, i32 0, i32 2
  %3233 = load i32, ptr %3232, align 4, !tbaa !148
  %3234 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %3228, i32 noundef %3233)
  %3235 = sext i32 %3234 to i64
  %3236 = getelementptr inbounds i8, ptr %3223, i64 %3235
  store ptr %3236, ptr %155, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #13
  %3237 = load ptr, ptr %138, align 8, !tbaa !5
  %3238 = load ptr, ptr %43, align 8, !tbaa !5
  %3239 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3238, i32 0, i32 1
  %3240 = load ptr, ptr %3239, align 8, !tbaa !139
  %3241 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3240, i32 0, i32 1
  %3242 = load i32, ptr %3241, align 4, !tbaa !146
  %3243 = load ptr, ptr %43, align 8, !tbaa !5
  %3244 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3243, i32 0, i32 1
  %3245 = load ptr, ptr %3244, align 8, !tbaa !139
  %3246 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3245, i32 0, i32 2
  %3247 = load i32, ptr %3246, align 4, !tbaa !148
  %3248 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3242, i32 noundef %3247)
  %3249 = sext i32 %3248 to i64
  %3250 = getelementptr inbounds i8, ptr %3237, i64 %3249
  store ptr %3250, ptr %156, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #13
  %3251 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %3252 = trunc i8 %3251 to i1
  %3253 = zext i1 %3252 to i64
  %3254 = select i1 %3252, float 1.000000e+00, float 0x3FE3333340000000
  %3255 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 52, float noundef %3254)
  store i32 %3255, ptr %157, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #13
  %3256 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3257 = trunc i8 %3256 to i1
  %3258 = zext i1 %3257 to i64
  %3259 = select i1 %3257, float 0.000000e+00, float -1.000000e+00
  store float %3259, ptr %158, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #13
  %3260 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3261 = trunc i8 %3260 to i1
  %3262 = zext i1 %3261 to i64
  %3263 = select i1 %3261, float 0.000000e+00, float 2.000000e+00
  store float %3263, ptr %159, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #13
  %3264 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %141)
  store <2 x float> %3264, ptr %161, align 4
  %3265 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %161, ptr noundef nonnull align 4 dereferenceable(8) %154)
  store <2 x float> %3265, ptr %160, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #13
  %3266 = load ptr, ptr %155, align 8, !tbaa !5
  store ptr %3266, ptr %162, align 8, !tbaa !5
  br label %3267

3267:                                             ; preds = %3349, %3222
  %3268 = load ptr, ptr %162, align 8, !tbaa !5
  %3269 = load ptr, ptr %156, align 8, !tbaa !5
  %3270 = icmp ult ptr %3268, %3269
  br i1 %3270, label %3272, label %3271

3271:                                             ; preds = %3267
  store i32 12, ptr %19, align 4
  br label %3356

3272:                                             ; preds = %3267
  %3273 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 1
  %3274 = load float, ptr %3273, align 4, !tbaa !119
  %3275 = getelementptr inbounds %struct.ImVec4, ptr %131, i32 0, i32 3
  %3276 = load float, ptr %3275, align 4, !tbaa !214
  %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 !50
  %3280 = fadd float %3276, %3279
  %3281 = fcmp ogt float %3274, %3280
  br i1 %3281, label %3282, label %3283

3282:                                             ; preds = %3272
  store i32 12, ptr %19, align 4
  br label %3356

3283:                                             ; preds = %3272
  %3284 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 1
  %3285 = load float, ptr %3284, align 4, !tbaa !119
  %3286 = getelementptr inbounds %struct.ImVec4, ptr %131, i32 0, i32 1
  %3287 = load float, ptr %3286, align 4, !tbaa !215
  %3288 = fcmp olt float %3285, %3287
  br i1 %3288, label %3289, label %3306

3289:                                             ; preds = %3283
  %3290 = load ptr, ptr %162, align 8, !tbaa !5
  %3291 = load ptr, ptr %156, align 8, !tbaa !5
  %3292 = load ptr, ptr %162, align 8, !tbaa !5
  %3293 = ptrtoint ptr %3291 to i64
  %3294 = ptrtoint ptr %3292 to i64
  %3295 = sub i64 %3293, %3294
  %3296 = call noundef ptr @memchr(ptr noundef %3290, i32 noundef 10, i64 noundef %3295) #15
  store ptr %3296, ptr %162, align 8, !tbaa !5
  %3297 = load ptr, ptr %162, align 8, !tbaa !5
  %3298 = icmp ne ptr %3297, null
  br i1 %3298, label %3299, label %3302

3299:                                             ; preds = %3289
  %3300 = load ptr, ptr %162, align 8, !tbaa !5
  %3301 = getelementptr inbounds i8, ptr %3300, i64 1
  br label %3304

3302:                                             ; preds = %3289
  %3303 = load ptr, ptr %156, align 8, !tbaa !5
  br label %3304

3304:                                             ; preds = %3302, %3299
  %3305 = phi ptr [ %3301, %3299 ], [ %3303, %3302 ]
  store ptr %3305, ptr %162, align 8, !tbaa !5
  br label %3349

3306:                                             ; preds = %3283
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #13
  %3307 = load ptr, ptr %20, align 8, !tbaa !5
  %3308 = load ptr, ptr %162, align 8, !tbaa !5
  %3309 = load ptr, ptr %156, align 8, !tbaa !5
  %3310 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef %3307, ptr noundef %3308, ptr noundef %3309, ptr noundef %162, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %3310, ptr %163, align 4
  %3311 = getelementptr inbounds %struct.ImVec2, ptr %163, i32 0, i32 0
  %3312 = load float, ptr %3311, align 4, !tbaa !121
  %3313 = fcmp ole float %3312, 0.000000e+00
  br i1 %3313, label %3314, label %3323

3314:                                             ; preds = %3306
  %3315 = load ptr, ptr %20, align 8, !tbaa !5
  %3316 = getelementptr inbounds %struct.ImGuiContext, ptr %3315, i32 0, i32 7
  %3317 = load ptr, ptr %3316, align 8, !tbaa !216
  %3318 = call noundef float @_ZN6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114) %3317, i16 noundef zeroext 32)
  %3319 = fmul float %3318, 5.000000e-01
  %3320 = fptosi float %3319 to i32
  %3321 = sitofp i32 %3320 to float
  %3322 = getelementptr inbounds %struct.ImVec2, ptr %163, i32 0, i32 0
  store float %3321, ptr %3322, align 4, !tbaa !121
  br label %3323

3323:                                             ; preds = %3314, %3306
  call void @llvm.lifetime.start.p0(i64 16, ptr %164) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #13
  %3324 = load float, ptr %158, align 4, !tbaa !49
  %3325 = load ptr, ptr %20, align 8, !tbaa !5
  %3326 = getelementptr inbounds %struct.ImGuiContext, ptr %3325, i32 0, i32 8
  %3327 = load float, ptr %3326, align 8, !tbaa !50
  %3328 = fsub float %3324, %3327
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %166, float noundef 0.000000e+00, float noundef %3328)
  %3329 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %160, ptr noundef nonnull align 4 dereferenceable(8) %166)
  store <2 x float> %3329, ptr %165, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #13
  %3330 = getelementptr inbounds %struct.ImVec2, ptr %163, i32 0, i32 0
  %3331 = load float, ptr %3330, align 4, !tbaa !121
  %3332 = load float, ptr %159, align 4, !tbaa !49
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %168, float noundef %3331, float noundef %3332)
  %3333 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %160, ptr noundef nonnull align 4 dereferenceable(8) %168)
  store <2 x float> %3333, ptr %167, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %164, ptr noundef nonnull align 4 dereferenceable(8) %165, ptr noundef nonnull align 4 dereferenceable(8) %167)
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %169) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %169, ptr noundef nonnull align 4 dereferenceable(16) %131)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %164, ptr noundef nonnull align 4 dereferenceable(16) %169)
  call void @llvm.lifetime.end.p0(i64 16, ptr %169) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %170) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %170, ptr noundef nonnull align 4 dereferenceable(16) %131)
  %3334 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %164, ptr noundef nonnull align 4 dereferenceable(16) %170)
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #13
  br i1 %3334, label %3335, label %3342

3335:                                             ; preds = %3323
  %3336 = load ptr, ptr %34, align 8, !tbaa !5
  %3337 = getelementptr inbounds %struct.ImGuiWindow, ptr %3336, i32 0, i32 100
  %3338 = load ptr, ptr %3337, align 8, !tbaa !217
  %3339 = getelementptr inbounds %struct.ImRect, ptr %164, i32 0, i32 0
  %3340 = getelementptr inbounds %struct.ImRect, ptr %164, i32 0, i32 1
  %3341 = load i32, ptr %157, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(216) %3338, ptr noundef nonnull align 4 dereferenceable(8) %3339, ptr noundef nonnull align 4 dereferenceable(8) %3340, i32 noundef %3341, float noundef 0.000000e+00, i32 noundef 0)
  br label %3342

3342:                                             ; preds = %3335, %3323
  %3343 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %3344 = load float, ptr %3343, align 4, !tbaa !121
  %3345 = getelementptr inbounds %struct.ImVec2, ptr %154, i32 0, i32 0
  %3346 = load float, ptr %3345, align 4, !tbaa !121
  %3347 = fsub float %3344, %3346
  %3348 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 0
  store float %3347, ptr %3348, align 4, !tbaa !121
  call void @llvm.lifetime.end.p0(i64 16, ptr %164) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #13
  br label %3349

3349:                                             ; preds = %3342, %3304
  %3350 = load ptr, ptr %20, align 8, !tbaa !5
  %3351 = getelementptr inbounds %struct.ImGuiContext, ptr %3350, i32 0, i32 8
  %3352 = load float, ptr %3351, align 8, !tbaa !50
  %3353 = getelementptr inbounds %struct.ImVec2, ptr %160, i32 0, i32 1
  %3354 = load float, ptr %3353, align 4, !tbaa !119
  %3355 = fadd float %3354, %3352
  store float %3355, ptr %3353, align 4, !tbaa !119
  br label %3267, !llvm.loop !218

3356:                                             ; preds = %3282, %3271
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #13
  br label %3357

3357:                                             ; preds = %3356
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #13
  br label %3358

3358:                                             ; preds = %3357, %3215
  %3359 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3360 = trunc i8 %3359 to i1
  br i1 %3360, label %3368, label %3361

3361:                                             ; preds = %3358
  %3362 = load ptr, ptr %136, align 8, !tbaa !5
  %3363 = load ptr, ptr %135, align 8, !tbaa !5
  %3364 = ptrtoint ptr %3362 to i64
  %3365 = ptrtoint ptr %3363 to i64
  %3366 = sub i64 %3364, %3365
  %3367 = icmp slt i64 %3366, 2097152
  br i1 %3367, label %3368, label %3393

3368:                                             ; preds = %3361, %3358
  call void @llvm.lifetime.start.p0(i64 4, ptr %171) #13
  %3369 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %3370 = trunc i8 %3369 to i1
  %3371 = zext i1 %3370 to i64
  %3372 = select i1 %3370, i32 1, i32 0
  %3373 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3372, float noundef 1.000000e+00)
  store i32 %3373, ptr %171, align 4, !tbaa !9
  %3374 = load ptr, ptr %34, align 8, !tbaa !5
  %3375 = getelementptr inbounds %struct.ImGuiWindow, ptr %3374, i32 0, i32 100
  %3376 = load ptr, ptr %3375, align 8, !tbaa !217
  %3377 = load ptr, ptr %20, align 8, !tbaa !5
  %3378 = getelementptr inbounds %struct.ImGuiContext, ptr %3377, i32 0, i32 7
  %3379 = load ptr, ptr %3378, align 8, !tbaa !216
  %3380 = load ptr, ptr %20, align 8, !tbaa !5
  %3381 = getelementptr inbounds %struct.ImGuiContext, ptr %3380, i32 0, i32 8
  %3382 = load float, ptr %3381, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #13
  %3383 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %154)
  store <2 x float> %3383, ptr %172, align 4
  %3384 = load i32, ptr %171, align 4, !tbaa !9
  %3385 = load ptr, ptr %135, align 8, !tbaa !5
  %3386 = load ptr, ptr %136, align 8, !tbaa !5
  %3387 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3388 = trunc i8 %3387 to i1
  br i1 %3388, label %3389, label %3390

3389:                                             ; preds = %3368
  br label %3391

3390:                                             ; preds = %3368
  br label %3391

3391:                                             ; preds = %3390, %3389
  %3392 = phi ptr [ null, %3389 ], [ %131, %3390 ]
  call void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216) %3376, ptr noundef %3379, float noundef %3382, ptr noundef nonnull align 4 dereferenceable(8) %172, i32 noundef %3384, ptr noundef %3385, ptr noundef %3386, float noundef 0.000000e+00, ptr noundef %3392)
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %171) #13
  br label %3393

3393:                                             ; preds = %3391, %3361
  %3394 = load i8, ptr %70, align 1, !tbaa !47, !range !45, !noundef !46
  %3395 = trunc i8 %3394 to i1
  br i1 %3395, label %3396, label %3487

3396:                                             ; preds = %3393
  %3397 = load ptr, ptr %21, align 8, !tbaa !5
  %3398 = getelementptr inbounds %struct.ImGuiIO, ptr %3397, i32 0, i32 3
  %3399 = load float, ptr %3398, align 8, !tbaa !219
  %3400 = load ptr, ptr %43, align 8, !tbaa !5
  %3401 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3400, i32 0, i32 12
  %3402 = load float, ptr %3401, align 4, !tbaa !220
  %3403 = fadd float %3402, %3399
  store float %3403, ptr %3401, align 4, !tbaa !220
  call void @llvm.lifetime.start.p0(i64 1, ptr %173) #13
  %3404 = load ptr, ptr %20, align 8, !tbaa !5
  %3405 = getelementptr inbounds %struct.ImGuiContext, ptr %3404, i32 0, i32 2
  %3406 = getelementptr inbounds %struct.ImGuiIO, ptr %3405, i32 0, i32 31
  %3407 = load i8, ptr %3406, align 2, !tbaa !221, !range !45, !noundef !46
  %3408 = trunc i8 %3407 to i1
  br i1 %3408, label %3409, label %3420

3409:                                             ; preds = %3396
  %3410 = load ptr, ptr %43, align 8, !tbaa !5
  %3411 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3410, i32 0, i32 12
  %3412 = load float, ptr %3411, align 4, !tbaa !220
  %3413 = fcmp ole float %3412, 0.000000e+00
  br i1 %3413, label %3420, label %3414

3414:                                             ; preds = %3409
  %3415 = load ptr, ptr %43, align 8, !tbaa !5
  %3416 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3415, i32 0, i32 12
  %3417 = load float, ptr %3416, align 4, !tbaa !220
  %3418 = call float @fmodf(float noundef %3417, float noundef 0x3FF3333340000000) #13
  %3419 = fcmp ole float %3418, 0x3FE99999A0000000
  br label %3420

3420:                                             ; preds = %3414, %3409, %3396
  %3421 = phi i1 [ true, %3409 ], [ true, %3396 ], [ %3419, %3414 ]
  %3422 = zext i1 %3421 to i8
  store i8 %3422, ptr %173, align 1, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #13
  %3423 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %140)
  store <2 x float> %3423, ptr %176, align 4
  %3424 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %176, ptr noundef nonnull align 4 dereferenceable(8) %154)
  store <2 x float> %3424, ptr %175, align 4
  %3425 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %175)
  store <2 x float> %3425, ptr %174, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %177) #13
  %3426 = getelementptr inbounds %struct.ImVec2, ptr %174, i32 0, i32 0
  %3427 = load float, ptr %3426, align 4, !tbaa !121
  %3428 = getelementptr inbounds %struct.ImVec2, ptr %174, i32 0, i32 1
  %3429 = load float, ptr %3428, align 4, !tbaa !119
  %3430 = load ptr, ptr %20, align 8, !tbaa !5
  %3431 = getelementptr inbounds %struct.ImGuiContext, ptr %3430, i32 0, i32 8
  %3432 = load float, ptr %3431, align 8, !tbaa !50
  %3433 = fsub float %3429, %3432
  %3434 = fadd float %3433, 5.000000e-01
  %3435 = getelementptr inbounds %struct.ImVec2, ptr %174, i32 0, i32 0
  %3436 = load float, ptr %3435, align 4, !tbaa !121
  %3437 = fadd float %3436, 1.000000e+00
  %3438 = getelementptr inbounds %struct.ImVec2, ptr %174, i32 0, i32 1
  %3439 = load float, ptr %3438, align 4, !tbaa !119
  %3440 = fsub float %3439, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %177, float noundef %3427, float noundef %3434, float noundef %3437, float noundef %3440)
  %3441 = load i8, ptr %173, align 1, !tbaa !47, !range !45, !noundef !46
  %3442 = trunc i8 %3441 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %178) #13
  br i1 %3442, label %3443, label %3445

3443:                                             ; preds = %3420
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %178, ptr noundef nonnull align 4 dereferenceable(16) %131)
  %3444 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %177, ptr noundef nonnull align 4 dereferenceable(16) %178)
  br label %3445

3445:                                             ; preds = %3443, %3420
  %3446 = phi i1 [ false, %3420 ], [ %3444, %3443 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %178) #13
  br i1 %3446, label %3447, label %3454

3447:                                             ; preds = %3445
  %3448 = load ptr, ptr %34, align 8, !tbaa !5
  %3449 = getelementptr inbounds %struct.ImGuiWindow, ptr %3448, i32 0, i32 100
  %3450 = load ptr, ptr %3449, align 8, !tbaa !217
  %3451 = getelementptr inbounds %struct.ImRect, ptr %177, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #13
  %3452 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %177)
  store <2 x float> %3452, ptr %179, align 4
  %3453 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(216) %3450, ptr noundef nonnull align 4 dereferenceable(8) %3451, ptr noundef nonnull align 4 dereferenceable(8) %179, i32 noundef %3453, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #13
  br label %3454

3454:                                             ; preds = %3447, %3445
  %3455 = load i8, ptr %44, align 1, !tbaa !47, !range !45, !noundef !46
  %3456 = trunc i8 %3455 to i1
  br i1 %3456, label %3486, label %3457

3457:                                             ; preds = %3454
  %3458 = load ptr, ptr %20, align 8, !tbaa !5
  %3459 = getelementptr inbounds %struct.ImGuiContext, ptr %3458, i32 0, i32 252
  %3460 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3459, i32 0, i32 0
  store i8 1, ptr %3460, align 8, !tbaa !222
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #13
  %3461 = getelementptr inbounds %struct.ImVec2, ptr %174, i32 0, i32 0
  %3462 = load float, ptr %3461, align 4, !tbaa !121
  %3463 = fsub float %3462, 1.000000e+00
  %3464 = getelementptr inbounds %struct.ImVec2, ptr %174, i32 0, i32 1
  %3465 = load float, ptr %3464, align 4, !tbaa !119
  %3466 = load ptr, ptr %20, align 8, !tbaa !5
  %3467 = getelementptr inbounds %struct.ImGuiContext, ptr %3466, i32 0, i32 8
  %3468 = load float, ptr %3467, align 8, !tbaa !50
  %3469 = fsub float %3465, %3468
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %180, float noundef %3463, float noundef %3469)
  %3470 = load ptr, ptr %20, align 8, !tbaa !5
  %3471 = getelementptr inbounds %struct.ImGuiContext, ptr %3470, i32 0, i32 252
  %3472 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3471, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %3472, ptr align 4 %180, i64 8, i1 false), !tbaa.struct !48
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #13
  %3473 = load ptr, ptr %20, align 8, !tbaa !5
  %3474 = getelementptr inbounds %struct.ImGuiContext, ptr %3473, i32 0, i32 8
  %3475 = load float, ptr %3474, align 8, !tbaa !50
  %3476 = load ptr, ptr %20, align 8, !tbaa !5
  %3477 = getelementptr inbounds %struct.ImGuiContext, ptr %3476, i32 0, i32 252
  %3478 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3477, i32 0, i32 2
  store float %3475, ptr %3478, align 4, !tbaa !223
  %3479 = load ptr, ptr %18, align 8, !tbaa !5
  %3480 = getelementptr inbounds %struct.ImGuiWindow, ptr %3479, i32 0, i32 7
  %3481 = load ptr, ptr %3480, align 8, !tbaa !224
  %3482 = getelementptr inbounds %struct.ImGuiViewport, ptr %3481, i32 0, i32 0
  %3483 = load i32, ptr %3482, align 8, !tbaa !225
  %3484 = load ptr, ptr %20, align 8, !tbaa !5
  %3485 = getelementptr inbounds %struct.ImGuiContext, ptr %3484, i32 0, i32 254
  store i32 %3483, ptr %3485, align 8, !tbaa !227
  br label %3486

3486:                                             ; preds = %3457, %3454
  call void @llvm.lifetime.end.p0(i64 16, ptr %177) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %173) #13
  br label %3487

3487:                                             ; preds = %3486, %3393
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #13
  br label %3585

3488:                                             ; preds = %2903
  %3489 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3490 = trunc i8 %3489 to i1
  br i1 %3490, label %3491, label %3501

3491:                                             ; preds = %3488
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #13
  %3492 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3493 = load float, ptr %3492, align 4, !tbaa !121
  %3494 = load ptr, ptr %135, align 8, !tbaa !5
  %3495 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3494, ptr noundef %136)
  %3496 = sitofp i32 %3495 to float
  %3497 = load ptr, ptr %20, align 8, !tbaa !5
  %3498 = getelementptr inbounds %struct.ImGuiContext, ptr %3497, i32 0, i32 8
  %3499 = load float, ptr %3498, align 8, !tbaa !50
  %3500 = fmul float %3496, %3499
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %181, float noundef %3493, float noundef %3500)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %133, ptr align 4 %181, i64 8, i1 false), !tbaa.struct !48
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #13
  br label %3527

3501:                                             ; preds = %3488
  %3502 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %3503 = trunc i8 %3502 to i1
  br i1 %3503, label %3517, label %3504

3504:                                             ; preds = %3501
  %3505 = load ptr, ptr %20, align 8, !tbaa !5
  %3506 = getelementptr inbounds %struct.ImGuiContext, ptr %3505, i32 0, i32 59
  %3507 = load i32, ptr %3506, align 4, !tbaa !126
  %3508 = load i32, ptr %25, align 4, !tbaa !9
  %3509 = icmp eq i32 %3507, %3508
  br i1 %3509, label %3510, label %3517

3510:                                             ; preds = %3504
  %3511 = load ptr, ptr %135, align 8, !tbaa !5
  %3512 = load ptr, ptr %43, align 8, !tbaa !5
  %3513 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3512, i32 0, i32 4
  %3514 = load i32, ptr %3513, align 8, !tbaa !144
  %3515 = sext i32 %3514 to i64
  %3516 = getelementptr inbounds i8, ptr %3511, i64 %3515
  store ptr %3516, ptr %136, align 8, !tbaa !5
  br label %3526

3517:                                             ; preds = %3504, %3501
  %3518 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %3519 = trunc i8 %3518 to i1
  br i1 %3519, label %3525, label %3520

3520:                                             ; preds = %3517
  %3521 = load ptr, ptr %135, align 8, !tbaa !5
  %3522 = load ptr, ptr %135, align 8, !tbaa !5
  %3523 = call i64 @strlen(ptr noundef %3522) #15
  %3524 = getelementptr inbounds i8, ptr %3521, i64 %3523
  store ptr %3524, ptr %136, align 8, !tbaa !5
  br label %3525

3525:                                             ; preds = %3520, %3517
  br label %3526

3526:                                             ; preds = %3525, %3510
  br label %3527

3527:                                             ; preds = %3526, %3491
  %3528 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3529 = trunc i8 %3528 to i1
  br i1 %3529, label %3537, label %3530

3530:                                             ; preds = %3527
  %3531 = load ptr, ptr %136, align 8, !tbaa !5
  %3532 = load ptr, ptr %135, align 8, !tbaa !5
  %3533 = ptrtoint ptr %3531 to i64
  %3534 = ptrtoint ptr %3532 to i64
  %3535 = sub i64 %3533, %3534
  %3536 = icmp slt i64 %3535, 2097152
  br i1 %3536, label %3537, label %3584

3537:                                             ; preds = %3530, %3527
  %3538 = load i32, ptr %15, align 4, !tbaa !9
  %3539 = and i32 %3538, 131072
  %3540 = icmp ne i32 %3539, 0
  br i1 %3540, label %3541, label %3559

3541:                                             ; preds = %3537
  %3542 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %3543 = load float, ptr %3542, align 4, !tbaa !121
  %3544 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  %3545 = getelementptr inbounds %struct.ImVec2, ptr %3544, i32 0, i32 0
  %3546 = load float, ptr %3545, align 4, !tbaa !228
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #13
  %3547 = load ptr, ptr %135, align 8, !tbaa !5
  %3548 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %3547, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  store <2 x float> %3548, ptr %182, align 4
  %3549 = getelementptr inbounds %struct.ImVec2, ptr %182, i32 0, i32 0
  %3550 = load float, ptr %3549, align 4, !tbaa !121
  %3551 = fsub float %3546, %3550
  %3552 = load ptr, ptr %22, align 8, !tbaa !5
  %3553 = getelementptr inbounds %struct.ImGuiStyle, ptr %3552, i32 0, i32 13
  %3554 = getelementptr inbounds %struct.ImVec2, ptr %3553, i32 0, i32 0
  %3555 = load float, ptr %3554, align 4, !tbaa !152
  %3556 = fsub float %3551, %3555
  %3557 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %3543, float noundef %3556)
  %3558 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  store float %3557, ptr %3558, align 4, !tbaa !121
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #13
  br label %3559

3559:                                             ; preds = %3541, %3537
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %183, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %184) #13
  %3560 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %3561 = trunc i8 %3560 to i1
  %3562 = zext i1 %3561 to i64
  %3563 = select i1 %3561, i32 1, i32 0
  %3564 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3563, float noundef 1.000000e+00)
  store i32 %3564, ptr %184, align 4, !tbaa !9
  %3565 = load ptr, ptr %34, align 8, !tbaa !5
  %3566 = getelementptr inbounds %struct.ImGuiWindow, ptr %3565, i32 0, i32 100
  %3567 = load ptr, ptr %3566, align 8, !tbaa !217
  %3568 = load ptr, ptr %20, align 8, !tbaa !5
  %3569 = getelementptr inbounds %struct.ImGuiContext, ptr %3568, i32 0, i32 7
  %3570 = load ptr, ptr %3569, align 8, !tbaa !216
  %3571 = load ptr, ptr %20, align 8, !tbaa !5
  %3572 = getelementptr inbounds %struct.ImGuiContext, ptr %3571, i32 0, i32 8
  %3573 = load float, ptr %3572, align 8, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #13
  %3574 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %132, ptr noundef nonnull align 4 dereferenceable(8) %183)
  store <2 x float> %3574, ptr %185, align 4
  %3575 = load i32, ptr %184, align 4, !tbaa !9
  %3576 = load ptr, ptr %135, align 8, !tbaa !5
  %3577 = load ptr, ptr %136, align 8, !tbaa !5
  %3578 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3579 = trunc i8 %3578 to i1
  br i1 %3579, label %3580, label %3581

3580:                                             ; preds = %3559
  br label %3582

3581:                                             ; preds = %3559
  br label %3582

3582:                                             ; preds = %3581, %3580
  %3583 = phi ptr [ null, %3580 ], [ %131, %3581 ]
  call void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216) %3567, ptr noundef %3570, float noundef %3573, ptr noundef nonnull align 4 dereferenceable(8) %185, i32 noundef %3575, ptr noundef %3576, ptr noundef %3577, float noundef 0.000000e+00, ptr noundef %3583)
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %184) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #13
  br label %3584

3584:                                             ; preds = %3582, %3530
  br label %3585

3585:                                             ; preds = %3584, %3487
  %3586 = load i8, ptr %45, align 1, !tbaa !47, !range !45, !noundef !46
  %3587 = trunc i8 %3586 to i1
  br i1 %3587, label %3588, label %3592

3588:                                             ; preds = %3585
  %3589 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %3590 = trunc i8 %3589 to i1
  br i1 %3590, label %3592, label %3591

3591:                                             ; preds = %3588
  call void @_ZN5ImGui7PopFontEv()
  br label %3592

3592:                                             ; preds = %3591, %3588, %3585
  %3593 = load i8, ptr %24, align 1, !tbaa !47, !range !45, !noundef !46
  %3594 = trunc i8 %3593 to i1
  br i1 %3594, label %3595, label %3647

3595:                                             ; preds = %3592
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #13
  %3596 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 0
  %3597 = load float, ptr %3596, align 4, !tbaa !121
  %3598 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 1
  %3599 = load float, ptr %3598, align 4, !tbaa !119
  %3600 = load ptr, ptr %22, align 8, !tbaa !5
  %3601 = getelementptr inbounds %struct.ImGuiStyle, ptr %3600, i32 0, i32 13
  %3602 = getelementptr inbounds %struct.ImVec2, ptr %3601, i32 0, i32 1
  %3603 = load float, ptr %3602, align 4, !tbaa !120
  %3604 = fadd float %3599, %3603
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %186, float noundef %3597, float noundef %3604)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %186)
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #13
  %3605 = load ptr, ptr %20, align 8, !tbaa !5
  %3606 = getelementptr inbounds %struct.ImGuiContext, ptr %3605, i32 0, i32 90
  %3607 = getelementptr inbounds %struct.ImGuiNextItemData, ptr %3606, i32 0, i32 1
  %3608 = load i32, ptr %3607, align 4, !tbaa !229
  %3609 = or i32 %3608, 1048577
  store i32 %3609, ptr %3607, align 4, !tbaa !229
  call void @_ZN5ImGui8EndChildEv()
  %3610 = load ptr, ptr %20, align 8, !tbaa !5
  %3611 = getelementptr inbounds %struct.ImGuiContext, ptr %3610, i32 0, i32 91
  %3612 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3611, i32 0, i32 2
  %3613 = load i32, ptr %3612, align 8, !tbaa !230
  %3614 = and i32 %3613, 128
  %3615 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 2
  %3616 = load i32, ptr %3615, align 4, !tbaa !231
  %3617 = or i32 %3616, %3614
  store i32 %3617, ptr %3615, align 4, !tbaa !231
  call void @_ZN5ImGui8EndGroupEv()
  %3618 = load ptr, ptr %20, align 8, !tbaa !5
  %3619 = getelementptr inbounds %struct.ImGuiContext, ptr %3618, i32 0, i32 91
  %3620 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3619, i32 0, i32 0
  %3621 = load i32, ptr %3620, align 8, !tbaa !232
  %3622 = icmp eq i32 %3621, 0
  br i1 %3622, label %3631, label %3623

3623:                                             ; preds = %3595
  %3624 = load ptr, ptr %20, align 8, !tbaa !5
  %3625 = getelementptr inbounds %struct.ImGuiContext, ptr %3624, i32 0, i32 91
  %3626 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3625, i32 0, i32 0
  %3627 = load i32, ptr %3626, align 8, !tbaa !232
  %3628 = load ptr, ptr %34, align 8, !tbaa !5
  %3629 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %3628, i32 noundef 1)
  %3630 = icmp ne i32 %3627, %3629
  br i1 %3630, label %3631, label %3646

3631:                                             ; preds = %3623, %3595
  %3632 = load i32, ptr %25, align 4, !tbaa !9
  %3633 = load ptr, ptr %20, align 8, !tbaa !5
  %3634 = getelementptr inbounds %struct.ImGuiContext, ptr %3633, i32 0, i32 91
  %3635 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3634, i32 0, i32 0
  store i32 %3632, ptr %3635, align 8, !tbaa !232
  %3636 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 1
  %3637 = load i32, ptr %3636, align 4, !tbaa !233
  %3638 = load ptr, ptr %20, align 8, !tbaa !5
  %3639 = getelementptr inbounds %struct.ImGuiContext, ptr %3638, i32 0, i32 91
  %3640 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3639, i32 0, i32 1
  store i32 %3637, ptr %3640, align 4, !tbaa !133
  %3641 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 2
  %3642 = load i32, ptr %3641, align 4, !tbaa !231
  %3643 = load ptr, ptr %20, align 8, !tbaa !5
  %3644 = getelementptr inbounds %struct.ImGuiContext, ptr %3643, i32 0, i32 91
  %3645 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3644, i32 0, i32 2
  store i32 %3642, ptr %3645, align 8, !tbaa !230
  br label %3646

3646:                                             ; preds = %3631, %3623
  br label %3647

3647:                                             ; preds = %3646, %3592
  %3648 = load ptr, ptr %43, align 8, !tbaa !5
  %3649 = icmp ne ptr %3648, null
  br i1 %3649, label %3650, label %3653

3650:                                             ; preds = %3647
  %3651 = load ptr, ptr %43, align 8, !tbaa !5
  %3652 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3651, i32 0, i32 6
  store ptr null, ptr %3652, align 8, !tbaa !160
  br label %3653

3653:                                             ; preds = %3650, %3647
  %3654 = load ptr, ptr %20, align 8, !tbaa !5
  %3655 = getelementptr inbounds %struct.ImGuiContext, ptr %3654, i32 0, i32 267
  %3656 = load i8, ptr %3655, align 8, !tbaa !234, !range !45, !noundef !46
  %3657 = trunc i8 %3656 to i1
  br i1 %3657, label %3658, label %3667

3658:                                             ; preds = %3653
  %3659 = load i8, ptr %45, align 1, !tbaa !47, !range !45, !noundef !46
  %3660 = trunc i8 %3659 to i1
  br i1 %3660, label %3661, label %3664

3661:                                             ; preds = %3658
  %3662 = load i8, ptr %75, align 1, !tbaa !47, !range !45, !noundef !46
  %3663 = trunc i8 %3662 to i1
  br i1 %3663, label %3664, label %3667

3664:                                             ; preds = %3661, %3658
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef @.str.25, ptr noundef @.str.26)
  %3665 = load ptr, ptr %135, align 8, !tbaa !5
  %3666 = load ptr, ptr %136, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %132, ptr noundef %3665, ptr noundef %3666)
  br label %3667

3667:                                             ; preds = %3664, %3661, %3653
  %3668 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %3669 = load float, ptr %3668, align 4, !tbaa !121
  %3670 = fcmp ogt float %3669, 0.000000e+00
  br i1 %3670, label %3671, label %3690

3671:                                             ; preds = %3667
  %3672 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  %3673 = getelementptr inbounds %struct.ImVec2, ptr %3672, i32 0, i32 0
  %3674 = load float, ptr %3673, align 4, !tbaa !228
  %3675 = load ptr, ptr %22, align 8, !tbaa !5
  %3676 = getelementptr inbounds %struct.ImGuiStyle, ptr %3675, i32 0, i32 17
  %3677 = getelementptr inbounds %struct.ImVec2, ptr %3676, i32 0, i32 0
  %3678 = load float, ptr %3677, align 4, !tbaa !122
  %3679 = fadd float %3674, %3678
  %3680 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %3681 = getelementptr inbounds %struct.ImVec2, ptr %3680, i32 0, i32 1
  %3682 = load float, ptr %3681, align 4, !tbaa !212
  %3683 = load ptr, ptr %22, align 8, !tbaa !5
  %3684 = getelementptr inbounds %struct.ImGuiStyle, ptr %3683, i32 0, i32 13
  %3685 = getelementptr inbounds %struct.ImVec2, ptr %3684, i32 0, i32 1
  %3686 = load float, ptr %3685, align 4, !tbaa !120
  %3687 = fadd float %3682, %3686
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %187, float noundef %3679, float noundef %3687)
  %3688 = load ptr, ptr %10, align 8, !tbaa !5
  %3689 = load <2 x float>, ptr %187, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3689, ptr noundef %3688, ptr noundef null, i1 noundef zeroext true)
  br label %3690

3690:                                             ; preds = %3671, %3667
  %3691 = load i8, ptr %72, align 1, !tbaa !47, !range !45, !noundef !46
  %3692 = trunc i8 %3691 to i1
  br i1 %3692, label %3693, label %3695

3693:                                             ; preds = %3690
  %3694 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3694)
  br label %3695

3695:                                             ; preds = %3693, %3690
  %3696 = load ptr, ptr %20, align 8, !tbaa !5
  %3697 = load i32, ptr %15, align 4, !tbaa !9
  %3698 = and i32 %3697, 64
  %3699 = icmp ne i32 %3698, 0
  br i1 %3699, label %3700, label %3703

3700:                                             ; preds = %3695
  %3701 = load i8, ptr %73, align 1, !tbaa !47, !range !45, !noundef !46
  %3702 = trunc i8 %3701 to i1
  store i1 %3702, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3706

3703:                                             ; preds = %3695
  %3704 = load i8, ptr %72, align 1, !tbaa !47, !range !45, !noundef !46
  %3705 = trunc i8 %3704 to i1
  store i1 %3705, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3706

3706:                                             ; preds = %3703, %3700
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #13
  br label %3707

3707:                                             ; preds = %3706, %431, %417
  call void @llvm.lifetime.end.p0(i64 80, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %3708

3708:                                             ; preds = %3707, %193
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  %3709 = load i1, ptr %9, align 1
  ret i1 %3709

3710:                                             ; preds = %2270
  %3711 = load ptr, ptr %108, align 8
  %3712 = load i32, ptr %109, align 4
  %3713 = insertvalue { ptr, i32 } poison, ptr %3711, 0
  %3714 = insertvalue { ptr, i32 } %3713, i32 %3712, 1
  resume { ptr, i32 } %3714

3715:                                             ; preds = %2233, %1518
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8ImVectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8ImVectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116), i32 noundef) #10 align 2

declare noundef ptr @_Z16ImTextCharToUtf8Pcj(ptr noundef, i32 noundef) #4

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui16PushPasswordFontEv() #10

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef) #10

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

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

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

declare void @_ZN5ImGui8EndChildEv() #4

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef, i32 noundef, i32 noundef) #4

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

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

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

declare noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef, i1 noundef zeroext) #4

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #4

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

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() #4

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

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

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

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

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

declare noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv() #4

declare void @_ZN5ImGui7PopFontEv() #4

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

declare noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114), i16 noundef zeroext) #10 align 2

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

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

declare void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) #4

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

declare void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr)

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !14, i64 262}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !13, i64 32, !6, i64 64, !10, i64 72, !15, i64 76, !10, i64 84, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !15, i64 136, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !16, i64 160, !16, i64 164, !16, i64 168, !16, i64 172, !16, i64 176, !16, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !15, i64 204, !15, i64 212, !15, i64 220, !15, i64 228, !15, i64 236, !15, i64 244, !14, i64 252, !14, i64 253, !14, i64 254, !7, i64 255, !14, i64 256, !14, i64 257, !14, i64 258, !14, i64 259, !14, i64 260, !14, i64 261, !14, i64 262, !14, i64 263, !14, i64 264, !14, i64 265, !14, i64 266, !14, i64 267, !14, i64 268, !7, i64 269, !7, i64 270, !17, i64 272, !17, i64 274, !17, i64 276, !17, i64 278, !17, i64 280, !7, i64 282, !7, i64 283, !14, i64 284, !18, i64 288, !7, i64 292, !7, i64 293, !7, i64 294, !7, i64 295, !10, i64 296, !10, i64 297, !10, i64 298, !10, i64 299, !15, i64 300, !15, i64 308, !19, i64 320, !20, i64 336, !25, i64 600, !25, i64 616, !25, i64 632, !25, i64 648, !25, i64 664, !25, i64 680, !25, i64 696, !27, i64 712, !27, i64 716, !10, i64 720, !10, i64 724, !16, i64 728, !16, i64 732, !28, i64 736, !30, i64 752, !16, i64 768, !16, i64 772, !16, i64 776, !16, i64 780, !10, i64 784, !6, i64 792, !31, i64 800, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !6, i64 1064, !6, i64 1072, !6, i64 1080, !7, i64 1088, !7, i64 1096, !7, i64 1128, !10, i64 1144, !10, i64 1148, !10, i64 1152, !14, i64 1156, !14, i64 1157, !14, i64 1157, !14, i64 1157, !14, i64 1157, !17, i64 1158, !44, i64 1160, !6, i64 1192, !6, i64 1200, !10, i64 1208}
!13 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !14, i64 28, !14, i64 29}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = !{!"_ZTS8ImGuiDir", !7, i64 0}
!19 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!20 = !{!"_ZTS19ImGuiWindowTempData", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !16, i64 56, !16, i64 60, !14, i64 64, !14, i64 65, !21, i64 68, !21, i64 72, !21, i64 76, !15, i64 80, !22, i64 88, !17, i64 92, !17, i64 94, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !15, i64 100, !23, i64 108, !10, i64 136, !10, i64 140, !24, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !25, i64 204, !16, i64 220, !16, i64 224, !26, i64 232, !26, i64 248}
!21 = !{!"_ZTS6ImVec1", !16, i64 0}
!22 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!23 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16, !7, i64 18}
!24 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS6ImRect", !15, i64 0, !15, i64 8}
!26 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVec2ih", !17, i64 0, !17, i64 2}
!28 = !{!"_ZTS12ImGuiStorage", !29, i64 0}
!29 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS10ImDrawList", !32, i64 0, !33, i64 16, !34, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !35, i64 80, !36, i64 96, !39, i64 128, !41, i64 152, !42, i64 168, !43, i64 184, !16, i64 200, !6, i64 208}
!32 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI10ImDrawVertE", !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, !38, i64 16, !10, i64 24}
!37 = !{!"_ZTS6ImVec4", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!38 = !{!"long long", !7, i64 0}
!39 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !40, i64 8}
!40 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorIyE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!44 = !{!"_ZTS20ImGuiWindowDockStyle", !7, i64 0}
!45 = !{i8 0, i8 2}
!46 = !{}
!47 = !{!14, !14, i64 0}
!48 = !{i64 0, i64 4, !49, i64 4, i64 4, !49}
!49 = !{!16, !16, i64 0}
!50 = !{!51, !16, i64 4616}
!51 = !{!"_ZTS12ImGuiContext", !14, i64 0, !14, i64 1, !52, i64 8, !54, i64 3096, !57, i64 3392, !10, i64 4596, !10, i64 4600, !6, i64 4608, !16, i64 4616, !16, i64 4620, !16, i64 4624, !16, i64 4628, !58, i64 4632, !59, i64 5168, !10, i64 5176, !10, i64 5180, !10, i64 5184, !10, i64 5188, !10, i64 5192, !14, i64 5196, !14, i64 5197, !14, i64 5198, !14, i64 5199, !6, i64 5200, !7, i64 5208, !60, i64 5224, !60, i64 5240, !53, i64 5256, !10, i64 5260, !24, i64 5264, !24, i64 5280, !24, i64 5296, !61, i64 5312, !28, i64 5328, !10, i64 5344, !16, i64 5348, !10, i64 5352, !6, i64 5360, !6, i64 5368, !6, i64 5376, !6, i64 5384, !6, i64 5392, !6, i64 5400, !15, i64 5408, !10, i64 5416, !10, i64 5420, !16, i64 5424, !15, i64 5428, !15, i64 5436, !10, i64 5444, !10, i64 5448, !10, i64 5452, !10, i64 5456, !10, i64 5460, !16, i64 5464, !16, i64 5468, !14, i64 5472, !14, i64 5473, !14, i64 5474, !10, i64 5476, !10, i64 5480, !16, i64 5484, !14, i64 5488, !14, i64 5489, !14, i64 5490, !14, i64 5491, !14, i64 5492, !14, i64 5493, !14, i64 5494, !10, i64 5495, !15, i64 5496, !6, i64 5504, !62, i64 5512, !10, i64 5516, !63, i64 5520, !64, i64 5532, !10, i64 5540, !16, i64 5544, !59, i64 5552, !59, i64 5560, !59, i64 5568, !65, i64 5576, !7, i64 5596, !66, i64 7456, !10, i64 7800, !14, i64 7804, !10, i64 7808, !10, i64 7812, !10, i64 7816, !10, i64 7820, !68, i64 7824, !69, i64 7880, !70, i64 7960, !14, i64 8120, !10, i64 8124, !71, i64 8128, !72, i64 8144, !73, i64 8160, !74, i64 8176, !75, i64 8192, !76, i64 8208, !77, i64 8224, !77, i64 8240, !78, i64 8256, !79, i64 8272, !6, i64 8288, !6, i64 8296, !6, i64 8304, !10, i64 8312, !80, i64 8320, !25, i64 8368, !10, i64 8384, !10, i64 8388, !10, i64 8392, !14, i64 8396, !14, i64 8397, !14, i64 8398, !14, i64 8399, !10, i64 8400, !6, i64 8408, !10, i64 8416, !22, i64 8420, !10, i64 8424, !10, i64 8428, !10, i64 8432, !10, i64 8436, !74, i64 8440, !10, i64 8456, !16, i64 8460, !10, i64 8464, !10, i64 8468, !62, i64 8472, !38, i64 8480, !7, i64 8488, !14, i64 8489, !14, i64 8490, !14, i64 8491, !81, i64 8496, !14, i64 8552, !14, i64 8553, !14, i64 8554, !10, i64 8556, !10, i64 8560, !10, i64 8564, !18, i64 8568, !18, i64 8572, !18, i64 8576, !25, i64 8580, !25, i64 8596, !10, i64 8612, !10, i64 8616, !10, i64 8620, !81, i64 8624, !81, i64 8680, !81, i64 8736, !81, i64 8792, !10, i64 8848, !10, i64 8852, !10, i64 8856, !10, i64 8860, !14, i64 8864, !14, i64 8865, !10, i64 8868, !10, i64 8872, !6, i64 8880, !6, i64 8888, !6, i64 8896, !16, i64 8904, !16, i64 8908, !14, i64 8912, !82, i64 8916, !15, i64 8920, !15, i64 8928, !16, i64 8936, !14, i64 8940, !14, i64 8941, !14, i64 8942, !10, i64 8944, !10, i64 8948, !10, i64 8952, !83, i64 8960, !25, i64 9024, !25, i64 9040, !10, i64 9056, !10, i64 9060, !16, i64 9064, !10, i64 9068, !10, i64 9072, !10, i64 9076, !10, i64 9080, !43, i64 9088, !7, i64 9104, !10, i64 9120, !84, i64 9128, !6, i64 9144, !10, i64 9152, !10, i64 9156, !85, i64 9160, !86, i64 9176, !26, i64 9216, !40, i64 9232, !6, i64 9248, !88, i64 9256, !90, i64 9296, !91, i64 9312, !92, i64 9328, !6, i64 9432, !10, i64 9440, !93, i64 9448, !94, i64 9464, !10, i64 9504, !10, i64 9508, !16, i64 9512, !16, i64 9516, !10, i64 9520, !10, i64 9524, !10, i64 9528, !16, i64 9532, !15, i64 9536, !96, i64 9544, !98, i64 9664, !99, i64 9688, !10, i64 9808, !64, i64 9812, !10, i64 9820, !10, i64 9824, !10, i64 9828, !10, i64 9832, !10, i64 9836, !16, i64 9840, !16, i64 9844, !10, i64 9848, !37, i64 9852, !101, i64 9868, !25, i64 9916, !14, i64 9932, !17, i64 9934, !16, i64 9936, !16, i64 9940, !16, i64 9944, !14, i64 9948, !14, i64 9949, !16, i64 9952, !16, i64 9956, !16, i64 9960, !17, i64 9964, !17, i64 9966, !6, i64 9968, !97, i64 9976, !19, i64 9992, !102, i64 10008, !104, i64 10112, !104, i64 10128, !10, i64 10144, !105, i64 10152, !6, i64 10208, !14, i64 10216, !16, i64 10220, !108, i64 10224, !109, i64 10240, !110, i64 10256, !111, i64 10272, !112, i64 10288, !10, i64 10304, !7, i64 10312, !14, i64 10416, !10, i64 10420, !6, i64 10424, !6, i64 10432, !108, i64 10440, !6, i64 10456, !6, i64 10464, !16, i64 10472, !14, i64 10476, !10, i64 10480, !10, i64 10484, !10, i64 10488, !6, i64 10496, !6, i64 10504, !15, i64 10512, !14, i64 10520, !10, i64 10524, !113, i64 10528, !6, i64 10552, !10, i64 10560, !10, i64 10564, !108, i64 10568, !114, i64 10584, !10, i64 10608, !10, i64 10612, !7, i64 10616, !7, i64 10617, !14, i64 10618, !10, i64 10620, !7, i64 10624, !14, i64 10625, !7, i64 10626, !10, i64 10628, !16, i64 10632, !37, i64 10636, !115, i64 10652, !116, i64 10680, !118, i64 10736, !6, i64 10800, !7, i64 10808, !10, i64 11048, !10, i64 11052, !16, i64 11056, !10, i64 11060, !10, i64 11064, !10, i64 11068, !97, i64 11072, !7, i64 11088}
!52 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !16, i64 56, !14, i64 60, !6, i64 64, !15, i64 72, !14, i64 80, !14, i64 81, !14, i64 82, !14, i64 83, !14, i64 84, !14, i64 85, !14, i64 86, !14, i64 87, !14, i64 88, !14, i64 89, !14, i64 90, !14, i64 91, !14, i64 92, !14, i64 93, !14, i64 94, !14, i64 95, !14, i64 96, !14, i64 97, !14, i64 98, !14, i64 99, !14, i64 100, !14, i64 101, !14, i64 102, !14, i64 103, !14, i64 104, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !14, i64 132, !14, i64 133, !14, i64 134, !14, i64 135, !14, i64 136, !14, i64 137, !14, i64 138, !14, i64 139, !14, i64 140, !14, i64 141, !14, i64 142, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !14, i64 184, !14, i64 185, !14, i64 186, !14, i64 187, !14, i64 188, !14, i64 189, !14, i64 190, !16, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !15, i64 212, !6, i64 224, !15, i64 232, !7, i64 240, !16, i64 248, !16, i64 252, !53, i64 256, !10, i64 260, !14, i64 264, !14, i64 265, !14, i64 266, !14, i64 267, !10, i64 268, !7, i64 272, !14, i64 2752, !15, i64 2756, !7, i64 2764, !7, i64 2808, !7, i64 2848, !7, i64 2853, !7, i64 2858, !7, i64 2868, !7, i64 2878, !7, i64 2888, !7, i64 2928, !7, i64 2933, !14, i64 2938, !14, i64 2939, !7, i64 2940, !7, i64 2960, !7, i64 2980, !7, i64 3020, !16, i64 3040, !14, i64 3044, !14, i64 3045, !17, i64 3046, !33, i64 3048, !6, i64 3064, !6, i64 3072, !6, i64 3080}
!53 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!54 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !17, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !55, i64 264, !56, i64 280}
!55 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !16, i64 4, !15, i64 8, !16, i64 16, !16, i64 20, !16, i64 24, !15, i64 28, !15, i64 36, !18, i64 44, !16, i64 48, !16, i64 52, !16, i64 56, !16, i64 60, !15, i64 64, !16, i64 72, !16, i64 76, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !16, i64 136, !16, i64 140, !16, i64 144, !16, i64 148, !16, i64 152, !16, i64 156, !16, i64 160, !16, i64 164, !16, i64 168, !15, i64 172, !18, i64 180, !15, i64 184, !15, i64 192, !16, i64 200, !15, i64 204, !15, i64 212, !15, i64 220, !15, i64 228, !16, i64 236, !16, i64 240, !14, i64 244, !14, i64 245, !14, i64 246, !16, i64 248, !16, i64 252, !7, i64 256, !16, i64 1184, !16, i64 1188, !16, i64 1192, !10, i64 1196, !10, i64 1200}
!58 = !{!"_ZTS20ImDrawListSharedData", !15, i64 0, !6, i64 8, !6, i64 16, !16, i64 24, !16, i64 28, !16, i64 32, !16, i64 36, !16, i64 40, !10, i64 44, !37, i64 48, !35, i64 64, !7, i64 80, !16, i64 464, !7, i64 468}
!59 = !{!"double", !7, i64 0}
!60 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!63 = !{!"_ZTS24ImGuiDeactivatedItemData", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 9}
!64 = !{!"_ZTS20ImGuiDataTypeStorage", !7, i64 0}
!65 = !{!"_ZTS10ImBitArrayILi155ELin512EE", !7, i64 0}
!66 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !67, i64 312, !67, i64 328}
!67 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !10, i64 8, !38, i64 16, !16, i64 24, !10, i64 28, !10, i64 32, !14, i64 36, !7, i64 37, !64, i64 38, !10, i64 48}
!69 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !25, i64 12, !25, i64 28, !25, i64 44, !25, i64 60, !10, i64 76}
!70 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !15, i64 20, !15, i64 28, !15, i64 36, !15, i64 44, !15, i64 52, !10, i64 60, !10, i64 64, !14, i64 68, !14, i64 69, !25, i64 72, !6, i64 88, !6, i64 96, !16, i64 104, !10, i64 108, !10, i64 112, !13, i64 116, !15, i64 148, !10, i64 156}
!71 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!78 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!79 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS20ImGuiPlatformMonitor", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !16, i64 32, !6, i64 40}
!81 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !25, i64 16, !10, i64 32, !16, i64 36, !16, i64 40, !16, i64 44, !38, i64 48}
!82 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!83 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !14, i64 57, !14, i64 58}
!84 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!85 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!86 = !{!"_ZTS6ImPoolI10ImGuiTableE", !87, i64 0, !28, i64 16, !10, i64 32, !10, i64 36}
!87 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!88 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !89, i64 0, !28, i64 16, !10, i64 32, !10, i64 36}
!89 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!90 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!91 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!92 = !{!"_ZTS19ImGuiBoxSelectState", !10, i64 0, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 9, !15, i64 12, !15, i64 20, !15, i64 28, !6, i64 40, !14, i64 48, !25, i64 52, !25, i64 68, !25, i64 84}
!93 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!94 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !95, i64 0, !28, i64 16, !10, i64 32, !10, i64 36}
!95 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !10, i64 0, !10, i64 4, !6, i64 8}
!96 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !97, i64 40, !97, i64 56, !97, i64 72, !10, i64 88, !15, i64 92, !16, i64 100, !14, i64 104, !14, i64 105, !14, i64 106, !14, i64 107, !10, i64 108, !10, i64 112}
!97 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!98 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !97, i64 8}
!99 = !{!"_ZTS6ImFont", !26, i64 0, !16, i64 16, !16, i64 20, !33, i64 24, !100, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !17, i64 80, !17, i64 82, !17, i64 84, !17, i64 86, !16, i64 88, !16, i64 92, !16, i64 96, !16, i64 100, !16, i64 104, !10, i64 108, !14, i64 112, !7, i64 113}
!100 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!101 = !{!"_ZTS21ImGuiComboPreviewData", !25, i64 0, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !10, i64 44}
!102 = !{!"_ZTS22ImGuiTypingSelectState", !103, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !16, i64 96, !14, i64 100}
!103 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 17, !7, i64 18}
!104 = !{!"_ZTS20ImGuiPlatformImeData", !14, i64 0, !15, i64 4, !16, i64 12}
!105 = !{!"_ZTS16ImGuiDockContext", !28, i64 0, !106, i64 16, !107, i64 32, !14, i64 48}
!106 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !6, i64 8}
!107 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!108 = !{!"_ZTS15ImGuiTextBuffer", !97, i64 0}
!109 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!110 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !97, i64 0}
!111 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !97, i64 0}
!112 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!113 = !{!"_ZTS23ImGuiErrorRecoveryState", !17, i64 0, !17, i64 2, !17, i64 4, !17, i64 6, !17, i64 8, !17, i64 10, !17, i64 12, !17, i64 14, !17, i64 16, !17, i64 18, !17, i64 20}
!114 = !{!"_ZTS14ImGuiTextIndex", !75, i64 0, !10, i64 16}
!115 = !{!"_ZTS18ImGuiMetricsConfig", !14, i64 0, !14, i64 1, !14, i64 2, !14, i64 3, !14, i64 4, !14, i64 5, !14, i64 6, !14, i64 7, !14, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!116 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !117, i64 16, !14, i64 32, !16, i64 36, !108, i64 40}
!117 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!118 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !17, i64 8, !7, i64 12}
!119 = !{!15, !16, i64 4}
!120 = !{!57, !16, i64 68}
!121 = !{!15, !16, i64 0}
!122 = !{!57, !16, i64 88}
!123 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !49, i64 16, i64 4, !49, i64 20, i64 4, !49, i64 24, i64 4, !49, i64 28, i64 4, !49, i64 32, i64 4, !49, i64 36, i64 4, !49, i64 40, i64 4, !49, i64 44, i64 4, !49, i64 48, i64 4, !49, i64 52, i64 4, !49, i64 56, i64 4, !49, i64 60, i64 4, !49, i64 64, i64 4, !49, i64 68, i64 4, !49, i64 72, i64 4, !49, i64 76, i64 4, !9}
!124 = !{!51, !10, i64 8424}
!125 = !{!51, !10, i64 8436}
!126 = !{!51, !10, i64 5476}
!127 = !{!57, !16, i64 72}
!128 = !{!57, !16, i64 76}
!129 = !{!51, !6, i64 5360}
!130 = !{!12, !22, i64 424}
!131 = !{!12, !17, i64 430}
!132 = !{!12, !16, i64 244}
!133 = !{!51, !10, i64 7884}
!134 = !{!51, !14, i64 8397}
!135 = !{!51, !62, i64 8472}
!136 = !{!51, !10, i64 5516}
!137 = !{!12, !16, i64 208}
!138 = !{!96, !14, i64 107}
!139 = !{!96, !6, i64 8}
!140 = !{!141, !7, i64 23}
!141 = !{!"_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, !16, i64 28, !142, i64 32}
!142 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !17, i64 2584, !17, i64 2586, !10, i64 2588, !10, i64 2592}
!143 = !{!96, !6, i64 48}
!144 = !{!96, !10, i64 24}
!145 = !{!96, !10, i64 108}
!146 = !{!141, !10, i64 4}
!147 = !{!96, !10, i64 112}
!148 = !{!141, !10, i64 8}
!149 = !{!141, !10, i64 0}
!150 = !{!96, !10, i64 20}
!151 = !{!96, !6, i64 64}
!152 = !{!57, !16, i64 64}
!153 = !{!96, !16, i64 92}
!154 = !{!52, !14, i64 264}
!155 = !{!141, !7, i64 12}
!156 = !{!52, !14, i64 96}
!157 = !{!82, !82, i64 0}
!158 = !{!51, !10, i64 7800}
!159 = !{!96, !16, i64 96}
!160 = !{!96, !6, i64 32}
!161 = !{!7, !7, i64 0}
!162 = !{!96, !14, i64 106}
!163 = !{!96, !10, i64 88}
!164 = !{!96, !10, i64 16}
!165 = !{!51, !14, i64 5489}
!166 = !{!52, !16, i64 232}
!167 = !{!25, !16, i64 0}
!168 = !{!52, !16, i64 236}
!169 = !{!12, !16, i64 340}
!170 = !{!96, !14, i64 105}
!171 = !{!17, !17, i64 0}
!172 = !{!52, !14, i64 265}
!173 = !{!96, !14, i64 104}
!174 = !{!52, !16, i64 212}
!175 = !{!52, !16, i64 216}
!176 = !{!52, !14, i64 266}
!177 = !{!52, !10, i64 3048}
!178 = distinct !{!178, !179}
!179 = !{!"llvm.loop.mustprogress"}
!180 = !{!51, !14, i64 5488}
!181 = !{!141, !10, i64 16}
!182 = !{!52, !14, i64 267}
!183 = !{!52, !10, i64 0}
!184 = !{!52, !10, i64 4}
!185 = !{!51, !14, i64 88}
!186 = !{!52, !14, i64 99}
!187 = !{!51, !6, i64 3104}
!188 = !{!51, !6, i64 11080}
!189 = distinct !{!189, !179}
!190 = !{!97, !10, i64 0}
!191 = !{!97, !6, i64 8}
!192 = !{!96, !10, i64 56}
!193 = !{!194, !6, i64 0}
!194 = !{!"_ZTS26ImGuiInputTextCallbackData", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !17, i64 24, !82, i64 28, !6, i64 32, !10, i64 40, !10, i64 44, !14, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!195 = !{!194, !10, i64 8}
!196 = !{!194, !10, i64 12}
!197 = !{!194, !6, i64 16}
!198 = !{!96, !6, i64 80}
!199 = !{!194, !82, i64 28}
!200 = !{!194, !6, i64 32}
!201 = !{!194, !10, i64 40}
!202 = !{!194, !10, i64 44}
!203 = !{!194, !14, i64 48}
!204 = !{!194, !10, i64 52}
!205 = !{!194, !10, i64 56}
!206 = !{!194, !10, i64 60}
!207 = !{!96, !10, i64 72}
!208 = !{!51, !10, i64 9664}
!209 = !{!51, !6, i64 9680}
!210 = !{!51, !10, i64 9672}
!211 = !{!51, !10, i64 11068}
!212 = !{!25, !16, i64 4}
!213 = distinct !{!213, !179}
!214 = !{!37, !16, i64 12}
!215 = !{!37, !16, i64 4}
!216 = !{!51, !6, i64 4608}
!217 = !{!12, !6, i64 792}
!218 = distinct !{!218, !179}
!219 = !{!52, !16, i64 16}
!220 = !{!96, !16, i64 100}
!221 = !{!51, !14, i64 106}
!222 = !{!51, !14, i64 10112}
!223 = !{!51, !16, i64 10124}
!224 = !{!12, !6, i64 64}
!225 = !{!226, !10, i64 0}
!226 = !{!"_ZTS13ImGuiViewport", !10, i64 0, !10, i64 4, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !10, i64 44, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !14, i64 88, !14, i64 89, !14, i64 90, !14, i64 91}
!227 = !{!51, !10, i64 10144}
!228 = !{!25, !16, i64 8}
!229 = !{!51, !10, i64 7828}
!230 = !{!51, !10, i64 7888}
!231 = !{!69, !10, i64 8}
!232 = !{!51, !10, i64 7880}
!233 = !{!69, !10, i64 4}
!234 = !{!51, !14, i64 10416}


; 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.ImRect, i32 }
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { ptr, i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external local_unnamed_addr global ptr, align 8
@.str = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [105 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.60 = 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.61 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [25 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys = external hidden unnamed_addr constant [8 x i32], align 16
@.str.69 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [34 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) local_unnamed_addr #4

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) local_unnamed_addr #5

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

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef, i32 noundef) local_unnamed_addr #4

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

declare void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #4

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1212), ptr noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

; 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

declare void @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) local_unnamed_addr #4

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) local_unnamed_addr #4

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @fmodf(float noundef, float noundef) local_unnamed_addr #11

declare void @_ZN5ImGui14SetMouseCursorEi(i32 noundef) local_unnamed_addr #4

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #4

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

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

declare i32 @__gxx_personality_v0(...)

declare void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #4

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #4

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

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

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

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

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

67:                                               ; preds = %63
  tail call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.2, i32 noundef 4467, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

68:                                               ; preds = %63
  %69 = and i32 %5, 67108864
  %70 = icmp ne i32 %69, 0
  %71 = and i32 %5, 67633152
  %.not1025 = icmp eq i32 %71, 67633152
  br i1 %.not1025, label %72, label %73

72:                                               ; preds = %68
  tail call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.2, i32 noundef 4468, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

73:                                               ; preds = %68
  %74 = and i32 %5, 32
  %.not1026 = icmp eq i32 %74, 0
  %75 = and i32 %5, 262176
  %.not1027 = icmp eq i32 %75, 262176
  br i1 %.not1027, label %76, label %77

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

77:                                               ; preds = %73
  %78 = and i32 %5, 67239936
  %.not1028 = icmp eq i32 %78, 67239936
  br i1 %.not1028, label %79, label %80

79:                                               ; preds = %77
  tail call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.2, i32 noundef 4470, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

80:                                               ; preds = %77
  %81 = load ptr, ptr @GImGui, align 8, !tbaa !45
  %82 = getelementptr inbounds i8, ptr %81, i64 8
  br i1 %70, label %83, label %84

83:                                               ; preds = %80
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %84

84:                                               ; preds = %83, %80
  %85 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1212) %59, ptr noundef %0, ptr noundef null)
  %86 = tail call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %0, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #14
  %.sroa.0555.0.copyload = load <2 x float>, ptr %4, align 4
  %87 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %70, label %88, label %92

88:                                               ; preds = %84
  %89 = getelementptr inbounds i8, ptr %81, i64 4616
  %90 = load float, ptr %89, align 8, !tbaa !46
  %91 = fmul float %90, 8.000000e+00
  br label %93

92:                                               ; preds = %84
  %.sroa.0556.4.vec.extract = extractelement <2 x float> %86, i64 1
  br label %93

93:                                               ; preds = %92, %88
  %94 = phi float [ %91, %88 ], [ %.sroa.0556.4.vec.extract, %92 ]
  %95 = getelementptr inbounds i8, ptr %81, i64 3456
  %96 = getelementptr inbounds i8, ptr %81, i64 3460
  %97 = load float, ptr %96, align 4, !tbaa !115
  %98 = tail call float @llvm.fmuladd.f32(float %97, float 2.000000e+00, float %94)
  %99 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0555.0.copyload, float noundef %87, float noundef %98)
  store <2 x float> %99, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  %100 = extractelement <2 x float> %99, i64 0
  %.sroa.0556.0.vec.extract = extractelement <2 x float> %86, i64 0
  %101 = fcmp ogt float %.sroa.0556.0.vec.extract, 0.000000e+00
  %102 = extractelement <2 x float> %99, i64 1
  br i1 %101, label %103, label %107

103:                                              ; preds = %93
  %104 = getelementptr inbounds i8, ptr %81, i64 3480
  %105 = load float, ptr %104, align 4, !tbaa !116
  %106 = fadd float %.sroa.0556.0.vec.extract, %105
  br label %107

107:                                              ; preds = %93, %103
  %108 = phi float [ %106, %103 ], [ 0.000000e+00, %93 ]
  %109 = fadd float %100, %108
  %110 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %109, float noundef %102)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #14
  %111 = getelementptr inbounds i8, ptr %59, i64 336
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %112 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %111, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %112, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %111, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  %113 = 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> %113, ptr %14, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %14)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #14
  %.sroa.0524.0.copyload = load float, ptr %9, align 8, !tbaa !117
  %.sroa.11.0.copyload = load float, ptr %110, align 4, !tbaa !117
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %15) #14
  call void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(80) %15)
  br i1 %70, label %114, label %159

114:                                              ; preds = %107
  %115 = load i64, ptr %111, align 8
  %116 = load float, ptr %96, align 4, !tbaa !115
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %116)
  %117 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %85, ptr noundef nonnull %11, i32 noundef 1048576)
  br i1 %117, label %119, label %118

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

119:                                              ; preds = %114
  %120 = getelementptr inbounds i8, ptr %81, i64 7880
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(80) %15, ptr noundef nonnull align 8 dereferenceable(80) %120, i64 80, i1 false), !tbaa.struct !118
  store i64 %115, ptr %111, align 8
  %121 = getelementptr inbounds i8, ptr %81, i64 8424
  %122 = load i32, ptr %121, align 8, !tbaa !120
  %123 = icmp eq i32 %122, %85
  br i1 %123, label %124, label %129

124:                                              ; preds = %119
  %125 = getelementptr inbounds i8, ptr %81, i64 8436
  %126 = load i32, ptr %125, align 4, !tbaa !121
  %127 = and i32 %126, 8
  %.not1030 = icmp eq i32 %127, 0
  %brmerge = or i1 %.not1026, %.not1030
  br i1 %brmerge, label %129, label %128

128:                                              ; preds = %124
  store i32 0, ptr %121, align 8, !tbaa !120
  br label %129

129:                                              ; preds = %124, %128, %119
  %130 = phi i32 [ %85, %124 ], [ 0, %128 ], [ %122, %119 ]
  %131 = getelementptr inbounds i8, ptr %81, i64 5476
  %132 = load i32, ptr %131, align 4, !tbaa !122
  %133 = icmp eq i32 %132, %85
  br i1 %133, label %134, label %135

134:                                              ; preds = %129
  store i32 0, ptr %121, align 8, !tbaa !120
  br label %135

135:                                              ; preds = %134, %129
  %136 = getelementptr inbounds i8, ptr %81, i64 3760
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %136)
  %137 = getelementptr inbounds i8, ptr %81, i64 3464
  %138 = load float, ptr %137, align 4, !tbaa !123
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %138)
  %139 = getelementptr inbounds i8, ptr %81, i64 3468
  %140 = load float, ptr %139, align 4, !tbaa !124
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %140)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 2, ptr noundef nonnull align 4 dereferenceable(8) %16)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  %141 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %141, ptr %17, align 8
  %142 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2ii(ptr noundef %0, i32 noundef %85, ptr noundef nonnull align 4 dereferenceable(8) %17, i32 noundef 1, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #14
  store i32 %130, ptr %121, align 8, !tbaa !120
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  br i1 %142, label %144, label %143

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

144:                                              ; preds = %135
  %145 = getelementptr inbounds i8, ptr %81, i64 5360
  %146 = load ptr, ptr %145, align 8, !tbaa !125
  %147 = getelementptr inbounds i8, ptr %146, i64 336
  %148 = getelementptr inbounds i8, ptr %146, i64 424
  %149 = load i32, ptr %148, align 8, !tbaa !126
  %150 = shl nuw i32 1, %149
  %151 = getelementptr inbounds i8, ptr %146, i64 430
  %152 = load i16, ptr %151, align 2, !tbaa !127
  %153 = trunc i32 %150 to i16
  %154 = or i16 %152, %153
  store i16 %154, ptr %151, align 2, !tbaa !127
  %155 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %147, ptr noundef nonnull align 4 dereferenceable(8) %95)
  %156 = getelementptr inbounds i8, ptr %146, i64 244
  %157 = load float, ptr %156, align 4, !tbaa !128
  %158 = fsub float %.sroa.0524.0.copyload, %157
  br label %164

159:                                              ; preds = %107
  %160 = load float, ptr %96, align 4, !tbaa !115
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %160)
  %161 = and i32 %5, 134217728
  %.not1029 = icmp eq i32 %161, 0
  br i1 %.not1029, label %162, label %164

162:                                              ; preds = %159
  %163 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %85, ptr noundef nonnull %11, i32 noundef 1048576)
  br i1 %163, label %164, label %.thread

164:                                              ; preds = %144, %159, %162
  %.sroa.0524.2 = phi float [ %158, %144 ], [ %.sroa.0524.0.copyload, %159 ], [ %.sroa.0524.0.copyload, %162 ]
  %.2930 = phi ptr [ %146, %144 ], [ %59, %159 ], [ %59, %162 ]
  %165 = getelementptr inbounds i8, ptr %81, i64 7880
  %166 = getelementptr inbounds i8, ptr %81, i64 7884
  %167 = load i32, ptr %166, align 4, !tbaa !129
  %168 = or i32 %167, 32768
  %169 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %85, i32 noundef %168)
  br i1 %169, label %170, label %.critedge1092

170:                                              ; preds = %164
  call void @_ZN5ImGui14SetMouseCursorEi(i32 noundef 1)
  %171 = getelementptr inbounds i8, ptr %81, i64 8397
  %172 = load i8, ptr %171, align 1, !tbaa !130, !range !43, !noundef !44
  %173 = trunc nuw i8 %172 to i1
  %not. = xor i1 %173, true
  br label %.critedge1092

.critedge1092:                                    ; preds = %170, %164
  %.0931.shrunk = phi i1 [ %not., %170 ], [ false, %164 ]
  %174 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %85)
  %175 = load i32, ptr %166, align 4, !tbaa !129
  %176 = lshr i32 %175, 2
  %177 = and i32 %176, 512
  %spec.select1093 = or i32 %177, %5
  %178 = and i32 %spec.select1093, 512
  %179 = icmp ne i32 %178, 0
  %180 = and i32 %5, 1024
  %.not1032 = icmp eq i32 %180, 0
  %181 = and i32 %5, 65536
  %182 = icmp eq i32 %181, 0
  %183 = and i32 %5, 4194304
  %.not1033 = icmp eq i32 %183, 0
  %184 = icmp ne ptr %6, null
  %or.cond15 = or i1 %.not1033, %184
  br i1 %or.cond15, label %186, label %185

185:                                              ; preds = %.critedge1092
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.2, i32 noundef 4559, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

186:                                              ; preds = %.critedge1092
  %187 = getelementptr inbounds i8, ptr %81, i64 5476
  %188 = load i32, ptr %187, align 4, !tbaa !122
  %.not = icmp eq i32 %188, %85
  br i1 %.not, label %201, label %189

189:                                              ; preds = %186
  %190 = getelementptr inbounds i8, ptr %81, i64 8424
  %191 = load i32, ptr %190, align 8, !tbaa !120
  %192 = icmp eq i32 %191, %85
  br i1 %192, label %193, label %201

193:                                              ; preds = %189
  %194 = getelementptr inbounds i8, ptr %81, i64 8436
  %195 = load i32, ptr %194, align 4, !tbaa !121
  %196 = and i32 %195, 1
  %.not1034 = icmp eq i32 %196, 0
  br i1 %.not1034, label %197, label %201

197:                                              ; preds = %193
  %198 = getelementptr inbounds i8, ptr %81, i64 8472
  %199 = load i32, ptr %198, align 8, !tbaa !131
  %200 = icmp eq i32 %199, 2
  br label %201

201:                                              ; preds = %189, %197, %193, %186
  %202 = phi i1 [ false, %186 ], [ false, %189 ], [ true, %193 ], [ %200, %197 ]
  br i1 %.0931.shrunk, label %203, label %207

203:                                              ; preds = %201
  %204 = getelementptr inbounds i8, ptr %81, i64 2856
  %205 = load i8, ptr %204, align 8, !tbaa !132, !range !43, !noundef !44
  %206 = trunc nuw i8 %205 to i1
  br label %207

207:                                              ; preds = %203, %201
  %208 = phi i1 [ false, %201 ], [ %206, %203 ]
  %209 = icmp ne ptr %174, null
  %or.cond = and i1 %70, %209
  br i1 %or.cond, label %210, label %220

210:                                              ; preds = %207
  %211 = icmp eq i32 %188, 0
  br i1 %211, label %212, label %.thread1208

212:                                              ; preds = %210
  %213 = getelementptr inbounds i8, ptr %81, i64 5516
  %214 = load i32, ptr %213, align 4, !tbaa !133
  %215 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2930, i32 noundef 1)
  %216 = icmp eq i32 %214, %215
  %.pre = load i32, ptr %187, align 4, !tbaa !122
  br label %.thread1208

.thread1208:                                      ; preds = %210, %212
  %217 = phi i32 [ %.pre, %212 ], [ %188, %210 ]
  %.ph = phi i1 [ %216, %212 ], [ false, %210 ]
  %218 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2930, i32 noundef 1)
  %219 = icmp eq i32 %217, %218
  br label %221

220:                                              ; preds = %207
  br i1 %70, label %221, label %226

221:                                              ; preds = %.thread1208, %220
  %222 = phi i1 [ %219, %.thread1208 ], [ false, %220 ]
  %223 = phi i1 [ %.ph, %.thread1208 ], [ false, %220 ]
  %224 = getelementptr inbounds i8, ptr %.2930, i64 208
  %225 = load float, ptr %224, align 4, !tbaa !134
  br label %226

226:                                              ; preds = %220, %221
  %227 = phi i1 [ %222, %221 ], [ false, %220 ]
  %228 = phi i1 [ %223, %221 ], [ false, %220 ]
  %229 = phi float [ %225, %221 ], [ 0x47EFFFFFE0000000, %220 ]
  br i1 %209, label %232, label %.thread1210

.thread1210:                                      ; preds = %226
  %230 = select i1 %208, i1 true, i1 %228
  %spec.select12001212 = select i1 %230, i1 true, i1 %202
  %231 = select i1 %spec.select12001212, i1 true, i1 %227
  br i1 %231, label %267, label %.thread1218.thread

232:                                              ; preds = %226
  %233 = getelementptr inbounds i8, ptr %174, i64 107
  %234 = load i8, ptr %233, align 1, !tbaa !135, !range !43, !noundef !44
  %235 = trunc nuw i8 %234 to i1
  %236 = getelementptr inbounds i8, ptr %174, i64 8
  %237 = load ptr, ptr %236, align 8, !tbaa !136
  %238 = getelementptr inbounds i8, ptr %237, i64 23
  %239 = load i8, ptr %238, align 1, !tbaa !137
  %240 = xor i1 %70, true
  %241 = zext i1 %240 to i8
  %242 = icmp ne i8 %239, %241
  %243 = select i1 %208, i1 true, i1 %228
  %spec.select1200 = select i1 %243, i1 true, i1 %202
  %244 = select i1 %spec.select1200, i1 true, i1 %227
  br i1 %235, label %245, label %266

245:                                              ; preds = %232
  %246 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %247 = trunc i64 %246 to i32
  %.not1043.not = icmp slt i32 %247, %3
  br i1 %.not1043.not, label %249, label %248

248:                                              ; preds = %245
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.2, i32 noundef 4578, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

249:                                              ; preds = %245
  store i8 0, ptr %233, align 1, !tbaa !135
  %250 = getelementptr inbounds i8, ptr %174, i64 40
  %251 = getelementptr inbounds i8, ptr %174, i64 48
  %252 = load ptr, ptr %251, align 8, !tbaa !140
  %253 = getelementptr inbounds i8, ptr %174, i64 24
  %254 = load i32, ptr %253, align 8, !tbaa !141
  call void @_ZL27InputTextReconcileUndoStateP19ImGuiInputTextStatePKciS2_i(ptr noundef nonnull %174, ptr noundef %252, i32 noundef %254, ptr noundef nonnull %2, i32 noundef %247)
  %255 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %250, i32 noundef %255)
  store i32 %247, ptr %253, align 8, !tbaa !141
  %256 = load ptr, ptr %251, align 8, !tbaa !140
  %257 = shl i64 %246, 32
  %sext1044 = add i64 %257, 4294967296
  %258 = ashr exact i64 %sext1044, 32
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %256, ptr nonnull align 1 %2, i64 %258, i1 false)
  %259 = getelementptr inbounds i8, ptr %174, i64 108
  %260 = load i32, ptr %259, align 4, !tbaa !142
  %261 = load ptr, ptr %236, align 8, !tbaa !136
  %262 = getelementptr inbounds i8, ptr %261, i64 4
  store i32 %260, ptr %262, align 4, !tbaa !143
  %263 = getelementptr inbounds i8, ptr %174, i64 112
  %264 = load i32, ptr %263, align 8, !tbaa !144
  %265 = getelementptr inbounds i8, ptr %261, i64 8
  store i32 %264, ptr %265, align 4, !tbaa !145
  store i32 %264, ptr %261, align 4, !tbaa !146
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(116) %174)
  br label %.thread1218

266:                                              ; preds = %232
  br i1 %244, label %267, label %270

267:                                              ; preds = %.thread1210, %266
  %268 = phi i1 [ false, %.thread1210 ], [ %242, %266 ]
  %spec.select120012141216 = phi i1 [ %spec.select12001212, %.thread1210 ], [ %spec.select1200, %266 ]
  %269 = load i32, ptr %187, align 4, !tbaa !122
  %.not1035 = icmp ne i32 %269, %85
  %brmerge1095 = select i1 %.not1035, i1 true, i1 %268
  br i1 %brmerge1095, label %271, label %.thread1218

270:                                              ; preds = %266
  br i1 %242, label %271, label %.thread1218.thread

271:                                              ; preds = %267, %270
  %272 = phi i1 [ %268, %267 ], [ true, %270 ]
  %spec.select120012141217 = phi i1 [ %spec.select120012141216, %267 ], [ false, %270 ]
  %273 = phi i1 [ true, %267 ], [ false, %270 ]
  %274 = getelementptr inbounds i8, ptr %81, i64 9544
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %274)
  %275 = getelementptr inbounds i8, ptr %81, i64 9564
  %276 = load i32, ptr %275, align 4, !tbaa !147
  call void @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef %276)
  %277 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %278 = trunc i64 %277 to i32
  %.not1036.not = icmp slt i32 %278, %3
  br i1 %.not1036.not, label %280, label %279

279:                                              ; preds = %271
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.2, i32 noundef 4600, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

280:                                              ; preds = %271
  %281 = add nsw i32 %278, 1
  %282 = getelementptr inbounds i8, ptr %81, i64 9600
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %282, i32 noundef %281)
  %283 = getelementptr inbounds i8, ptr %81, i64 9608
  %284 = load ptr, ptr %283, align 8, !tbaa !148
  %285 = sext i32 %281 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %284, ptr nonnull align 1 %2, i64 %285, i1 false)
  %286 = load i32, ptr %275, align 4, !tbaa !147
  %287 = icmp ne i32 %286, %85
  %.not1257 = select i1 %287, i1 true, i1 %272
  br i1 %.not1257, label %299, label %288

288:                                              ; preds = %280
  %289 = getelementptr inbounds i8, ptr %81, i64 9568
  %290 = load i32, ptr %289, align 8, !tbaa !141
  %.not1037 = icmp eq i32 %290, %278
  br i1 %.not1037, label %291, label %298

291:                                              ; preds = %288
  %292 = getelementptr inbounds i8, ptr %81, i64 9592
  %293 = load ptr, ptr %292, align 8, !tbaa !140
  %294 = icmp eq ptr %293, null
  br i1 %294, label %298, label %295

295:                                              ; preds = %291
  %sext = shl i64 %277, 32
  %296 = ashr exact i64 %sext, 32
  %297 = call i32 @strncmp(ptr noundef nonnull %293, ptr noundef nonnull %2, i64 noundef %296) #15
  %.not1038 = icmp eq i32 %297, 0
  br i1 %.not1038, label %299, label %298

298:                                              ; preds = %295, %291, %288
  br label %299

299:                                              ; preds = %298, %295, %280
  %.0944.shrunk = phi i1 [ false, %298 ], [ true, %295 ], [ false, %280 ]
  store i32 %85, ptr %275, align 4, !tbaa !147
  %300 = getelementptr inbounds i8, ptr %81, i64 9568
  store i32 %278, ptr %300, align 8, !tbaa !141
  br i1 %179, label %309, label %301

301:                                              ; preds = %299
  %302 = getelementptr inbounds i8, ptr %81, i64 9584
  %303 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %302, i32 noundef %303)
  %304 = getelementptr inbounds i8, ptr %81, i64 9592
  %305 = load ptr, ptr %304, align 8, !tbaa !140
  %306 = load i32, ptr %300, align 8, !tbaa !141
  %307 = add nsw i32 %306, 1
  %308 = sext i32 %307 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %305, ptr nonnull align 1 %2, i64 %308, i1 false)
  br label %309

309:                                              ; preds = %301, %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %18, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %310 = getelementptr inbounds i8, ptr %81, i64 9636
  %311 = load i64, ptr %18, align 8
  store i64 %311, ptr %310, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  %312 = and i32 %5, 131072
  %.not1039 = icmp eq i32 %312, 0
  br i1 %.not1039, label %322, label %313

313:                                              ; preds = %309
  %314 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef nonnull %2, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  %.sroa.0236.0.vec.extract = extractelement <2 x float> %314, i64 0
  %315 = load float, ptr %9, align 8, !tbaa !149
  %316 = fsub float %.sroa.0236.0.vec.extract, %315
  %317 = load float, ptr %95, align 4, !tbaa !150
  %318 = call float @llvm.fmuladd.f32(float %317, float 2.000000e+00, float %316)
  %319 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %318)
  %320 = load float, ptr %310, align 4, !tbaa !151
  %321 = fadd float %319, %320
  store float %321, ptr %310, align 4, !tbaa !151
  br label %322

322:                                              ; preds = %313, %309
  br i1 %.0944.shrunk, label %323, label %324

323:                                              ; preds = %322
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(116) %274)
  br label %329

324:                                              ; preds = %322
  %325 = getelementptr inbounds i8, ptr %81, i64 9552
  %326 = load ptr, ptr %325, align 8, !tbaa !136
  %327 = xor i1 %70, true
  %328 = zext i1 %327 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %326, i32 noundef %328)
  br label %329

329:                                              ; preds = %324, %323
  br i1 %70, label %344, label %330

330:                                              ; preds = %329
  %331 = lshr i32 %5, 12
  %332 = trunc i32 %331 to i8
  br i1 %202, label %333, label %339

333:                                              ; preds = %330
  br i1 %.0944.shrunk, label %334, label %338

334:                                              ; preds = %333
  %335 = getelementptr inbounds i8, ptr %81, i64 8436
  %336 = load i32, ptr %335, align 4, !tbaa !121
  %337 = and i32 %336, 4
  %.not1041 = icmp eq i32 %337, 0
  br i1 %.not1041, label %338, label %339

338:                                              ; preds = %334, %333
  br label %339

339:                                              ; preds = %338, %334, %330
  %.1938 = phi i8 [ %332, %334 ], [ 1, %338 ], [ %332, %330 ]
  br i1 %208, label %340, label %344

340:                                              ; preds = %339
  %341 = getelementptr inbounds i8, ptr %81, i64 272
  %342 = load i8, ptr %341, align 8, !tbaa !152, !range !43, !noundef !44
  %343 = trunc nuw i8 %342 to i1
  %spec.select1097 = select i1 %343, i8 1, i8 %.1938
  br label %344

344:                                              ; preds = %340, %339, %329
  %.2939 = phi i8 [ 0, %329 ], [ %.1938, %339 ], [ %spec.select1097, %340 ]
  %345 = and i32 %5, 2048
  %.not1042 = icmp eq i32 %345, 0
  br i1 %.not1042, label %.thread1218, label %346

346:                                              ; preds = %344
  %347 = getelementptr inbounds i8, ptr %81, i64 9552
  %348 = load ptr, ptr %347, align 8, !tbaa !136
  %349 = getelementptr inbounds i8, ptr %348, i64 12
  store i8 1, ptr %349, align 4, !tbaa !153
  br label %.thread1218

.thread1218.thread:                               ; preds = %270, %.thread1210
  %350 = getelementptr inbounds i8, ptr %81, i64 104
  %351 = load i8, ptr %350, align 8, !tbaa !154, !range !43, !noundef !44
  %352 = trunc nuw i8 %351 to i1
  br label %.sink.split

.thread1218:                                      ; preds = %344, %346, %267, %249
  %353 = phi i1 [ %244, %249 ], [ true, %267 ], [ %273, %346 ], [ %273, %344 ]
  %spec.select12001213 = phi i1 [ %spec.select1200, %249 ], [ %spec.select120012141216, %267 ], [ %spec.select120012141217, %346 ], [ %spec.select120012141217, %344 ]
  %.3940 = phi i8 [ 0, %249 ], [ 0, %267 ], [ %.2939, %346 ], [ %.2939, %344 ]
  %.0932 = phi ptr [ %174, %249 ], [ %174, %267 ], [ %274, %346 ], [ %274, %344 ]
  %354 = getelementptr inbounds i8, ptr %81, i64 104
  %355 = load i8, ptr %354, align 8, !tbaa !154, !range !43, !noundef !44
  %356 = trunc nuw i8 %355 to i1
  %357 = load i32, ptr %187, align 4, !tbaa !122
  %.not1045 = icmp ne i32 %357, %85
  %brmerge1099.not = select i1 %.not1045, i1 %spec.select12001213, i1 false
  br i1 %brmerge1099.not, label %358, label %365

358:                                              ; preds = %.thread1218
  %.not1046 = icmp eq ptr %.0932, null
  br i1 %.not1046, label %.critedge, label %359

359:                                              ; preds = %358
  %360 = getelementptr inbounds i8, ptr %.0932, i64 20
  %361 = load i32, ptr %360, align 4, !tbaa !147
  %362 = icmp eq i32 %361, %85
  br i1 %362, label %363, label %.critedge

.critedge:                                        ; preds = %358, %359
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.2, i32 noundef 4648, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

363:                                              ; preds = %359
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %85, ptr noundef nonnull %59)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %85, ptr noundef nonnull %59)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef nonnull %59, i32 noundef 0)
  br label %.sink.split

.sink.split:                                      ; preds = %363, %.thread1218.thread
  %.ph1352 = phi i1 [ %352, %.thread1218.thread ], [ %356, %363 ]
  %.09321317.ph = phi ptr [ %174, %.thread1218.thread ], [ %.0932, %363 ]
  %.39401316.ph = phi i8 [ 0, %.thread1218.thread ], [ %.3940, %363 ]
  %.ph1353 = phi i1 [ false, %.thread1218.thread ], [ %353, %363 ]
  %364 = load i32, ptr %187, align 4, !tbaa !122
  br label %365

365:                                              ; preds = %.sink.split, %.thread1218
  %366 = phi i1 [ %356, %.thread1218 ], [ %.ph1352, %.sink.split ]
  %.09321317 = phi ptr [ %.0932, %.thread1218 ], [ %.09321317.ph, %.sink.split ]
  %.39401316 = phi i8 [ %.3940, %.thread1218 ], [ %.39401316.ph, %.sink.split ]
  %367 = phi i1 [ %353, %.thread1218 ], [ %.ph1353, %.sink.split ]
  %368 = phi i32 [ %357, %.thread1218 ], [ %364, %.sink.split ]
  %369 = icmp eq i32 %368, %85
  br i1 %369, label %.preheader1266.preheader, label %397

.preheader1266.preheader:                         ; preds = %365
  %370 = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, align 16, !tbaa !155
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %370, i32 noundef %85, i32 noundef 0)
  %371 = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, i64 4), align 4, !tbaa !155
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %371, i32 noundef %85, i32 noundef 0)
  %372 = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, i64 8), align 8, !tbaa !155
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %372, i32 noundef %85, i32 noundef 0)
  %373 = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, i64 12), align 4, !tbaa !155
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %373, i32 noundef %85, i32 noundef 0)
  %374 = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, i64 16), align 16, !tbaa !155
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %374, i32 noundef %85, i32 noundef 0)
  %375 = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, i64 20), align 4, !tbaa !155
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %375, i32 noundef %85, i32 noundef 0)
  %376 = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, i64 24), align 8, !tbaa !155
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %376, i32 noundef %85, i32 noundef 0)
  %377 = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, i64 28), align 4, !tbaa !155
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %377, i32 noundef %85, i32 noundef 0)
  br i1 %208, label %378, label %379

378:                                              ; preds = %.preheader1266.preheader
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 656, i32 noundef %85, i32 noundef 0)
  br label %379

379:                                              ; preds = %378, %.preheader1266.preheader
  %380 = getelementptr inbounds i8, ptr %81, i64 7800
  %381 = load i32, ptr %380, align 8, !tbaa !156
  %382 = or i32 %381, 3
  store i32 %382, ptr %380, align 8, !tbaa !156
  %or.cond1101.not.not = icmp eq i32 %71, 0
  br i1 %or.cond1101.not.not, label %.thread1220, label %383

383:                                              ; preds = %379
  %384 = or i32 %381, 15
  store i32 %384, ptr %380, align 8, !tbaa !156
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 515, i32 noundef %85, i32 noundef 0)
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 516, i32 noundef %85, i32 noundef 0)
  br i1 %70, label %385, label %.thread1220

385:                                              ; preds = %383
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 517, i32 noundef %85, i32 noundef 0)
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 518, i32 noundef %85, i32 noundef 0)
  br label %.thread1220

.thread1220:                                      ; preds = %379, %385, %383
  br i1 %366, label %386, label %387

386:                                              ; preds = %.thread1220
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 16384, i32 noundef %85, i32 noundef 0)
  br label %387

387:                                              ; preds = %386, %.thread1220
  %388 = icmp ne ptr %.09321317, null
  %or.cond6 = and i1 %70, %388
  br i1 %or.cond6, label %389, label %393

389:                                              ; preds = %387
  %390 = getelementptr inbounds i8, ptr %.2930, i64 208
  %391 = load float, ptr %390, align 4, !tbaa !134
  %392 = getelementptr inbounds i8, ptr %.09321317, i64 96
  store float %391, ptr %392, align 4, !tbaa !157
  br label %393

393:                                              ; preds = %389, %387
  %or.cond8 = and i1 %179, %388
  br i1 %or.cond8, label %.thread1222, label %397

.thread1222:                                      ; preds = %393
  %394 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %395 = trunc i64 %394 to i32
  %396 = getelementptr inbounds i8, ptr %.09321317, i64 24
  store i32 %395, ptr %396, align 8, !tbaa !141
  br label %.thread1223

397:                                              ; preds = %393, %365
  %.not1258 = icmp eq ptr %.09321317, null
  br i1 %.not1258, label %404, label %398

398:                                              ; preds = %397
  br i1 %179, label %.thread1223, label %399

399:                                              ; preds = %398
  %400 = getelementptr inbounds i8, ptr %.09321317, i64 48
  %401 = load ptr, ptr %400, align 8, !tbaa !140
  br label %.thread1223

.thread1223:                                      ; preds = %399, %398, %.thread1222
  %402 = phi ptr [ %401, %399 ], [ %2, %398 ], [ %2, %.thread1222 ]
  %403 = getelementptr inbounds i8, ptr %.09321317, i64 32
  store ptr %402, ptr %403, align 8, !tbaa !158
  br label %408

404:                                              ; preds = %397
  %405 = load i32, ptr %187, align 4, !tbaa !122
  %406 = icmp eq i32 %405, %85
  br i1 %406, label %407, label %408

407:                                              ; preds = %404
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %408

408:                                              ; preds = %.thread1223, %407, %404
  %.09321318 = phi ptr [ %.09321317, %.thread1223 ], [ null, %407 ], [ null, %404 ]
  %409 = phi i1 [ true, %.thread1223 ], [ false, %407 ], [ false, %404 ]
  %410 = load i32, ptr %187, align 4, !tbaa !122
  %411 = icmp eq i32 %410, %85
  br i1 %411, label %412, label %416

412:                                              ; preds = %408
  %413 = getelementptr inbounds i8, ptr %81, i64 2856
  %414 = load i8, ptr %413, align 8, !tbaa !132, !range !43, !noundef !44
  %415 = trunc nuw i8 %414 to i1
  %.not1259 = xor i1 %367, true
  %not.brmerge1103 = select i1 %415, i1 %.not1259, i1 false
  %spec.select1198 = zext i1 %not.brmerge1103 to i8
  br label %416

416:                                              ; preds = %412, %408
  %.0933 = phi i8 [ 0, %408 ], [ %spec.select1198, %412 ]
  %417 = select i1 %409, i1 %227, i1 false
  %spec.select1104 = select i1 %411, i1 true, i1 %417
  %418 = zext i1 %spec.select1104 to i8
  br i1 %409, label %419, label %424

419:                                              ; preds = %416
  %420 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br i1 %420, label %423, label %421

421:                                              ; preds = %419
  %422 = trunc i8 %.39401316 to i1
  br i1 %422, label %423, label %424

423:                                              ; preds = %421, %419
  br label %424

424:                                              ; preds = %423, %421, %416
  %425 = phi i1 [ false, %421 ], [ false, %416 ], [ %spec.select1104, %423 ]
  %426 = zext i1 %425 to i8
  br i1 %spec.select1104, label %430, label %427

427:                                              ; preds = %424
  %428 = load i32, ptr %187, align 4, !tbaa !122
  %429 = icmp eq i32 %428, %85
  br i1 %429, label %430, label %.thread1225

430:                                              ; preds = %427, %424
  %not.1260 = xor i1 %179, true
  %spec.select1106 = and i1 %409, %not.1260
  %.not1049 = icmp eq ptr %1, null
  br i1 %.not1049, label %439, label %431

.thread1225:                                      ; preds = %427
  %.not10491226 = icmp eq ptr %1, null
  br i1 %.not10491226, label %439, label %.thread1229

431:                                              ; preds = %430
  br i1 %spec.select1106, label %432, label %.thread1229

432:                                              ; preds = %431
  %433 = getelementptr inbounds i8, ptr %.09321318, i64 48
  %434 = load ptr, ptr %433, align 8, !tbaa !140
  br label %.thread1229

.thread1229:                                      ; preds = %.thread1225, %431, %432
  %435 = phi i1 [ true, %432 ], [ false, %431 ], [ false, %.thread1225 ]
  %436 = phi ptr [ %434, %432 ], [ %2, %431 ], [ %2, %.thread1225 ]
  %437 = load i8, ptr %436, align 1, !tbaa !159
  %438 = icmp eq i8 %437, 0
  br label %439

439:                                              ; preds = %.thread1225, %.thread1229, %430
  %.not10491228 = phi i1 [ true, %430 ], [ false, %.thread1229 ], [ true, %.thread1225 ]
  %440 = phi i1 [ %spec.select1106, %430 ], [ %435, %.thread1229 ], [ false, %.thread1225 ]
  %441 = phi i1 [ false, %430 ], [ %438, %.thread1229 ], [ false, %.thread1225 ]
  %brmerge1107 = select i1 %.not1032, i1 true, i1 %441
  br i1 %brmerge1107, label %443, label %442

442:                                              ; preds = %439
  call void @_ZN5ImGui16PushPasswordFontEv()
  br label %443

443:                                              ; preds = %439, %442
  %444 = load i32, ptr %187, align 4, !tbaa !122
  %445 = icmp eq i32 %444, %85
  br i1 %445, label %446, label %613

446:                                              ; preds = %443
  br i1 %409, label %448, label %447

447:                                              ; preds = %446
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 4716, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

448:                                              ; preds = %446
  %449 = getelementptr inbounds i8, ptr %.09321318, i64 106
  store i8 0, ptr %449, align 2, !tbaa !160
  %450 = getelementptr inbounds i8, ptr %.09321318, i64 88
  store i32 %3, ptr %450, align 8, !tbaa !161
  %451 = getelementptr inbounds i8, ptr %.09321318, i64 16
  store i32 %spec.select1093, ptr %451, align 8, !tbaa !162
  %452 = getelementptr inbounds i8, ptr %81, i64 248
  %453 = load i8, ptr %452, align 8, !tbaa !132, !range !43, !noundef !44
  %454 = xor i8 %453, 1
  %455 = getelementptr inbounds i8, ptr %81, i64 5489
  store i8 %454, ptr %455, align 1, !tbaa !163
  %456 = getelementptr inbounds i8, ptr %81, i64 240
  %457 = load float, ptr %456, align 8, !tbaa !164
  %458 = load float, ptr %11, align 8, !tbaa !165
  %459 = fsub float %457, %458
  %460 = load float, ptr %95, align 4, !tbaa !150
  %461 = fsub float %459, %460
  %462 = getelementptr inbounds i8, ptr %.09321318, i64 92
  %463 = load float, ptr %462, align 4, !tbaa !151
  %464 = fadd float %461, %463
  br i1 %70, label %465, label %471

465:                                              ; preds = %448
  %466 = getelementptr inbounds i8, ptr %81, i64 244
  %467 = load float, ptr %466, align 4, !tbaa !166
  %468 = getelementptr inbounds i8, ptr %.2930, i64 340
  %469 = load float, ptr %468, align 4, !tbaa !167
  %470 = fsub float %467, %469
  br label %475

471:                                              ; preds = %448
  %472 = getelementptr inbounds i8, ptr %81, i64 4616
  %473 = load float, ptr %472, align 8, !tbaa !46
  %474 = fmul float %473, 5.000000e-01
  br label %475

475:                                              ; preds = %471, %465
  %476 = phi float [ %470, %465 ], [ %474, %471 ]
  %477 = trunc i8 %.39401316 to i1
  br i1 %477, label %478, label %480

478:                                              ; preds = %475
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  %479 = getelementptr inbounds i8, ptr %.09321318, i64 105
  store i8 1, ptr %479, align 1, !tbaa !168
  br label %567

480:                                              ; preds = %475
  br i1 %.0931.shrunk, label %481, label %531

481:                                              ; preds = %480
  %482 = getelementptr inbounds i8, ptr %81, i64 2866
  %483 = load i16, ptr %482, align 2, !tbaa !169
  %484 = icmp ugt i16 %483, 1
  br i1 %484, label %485, label %531

485:                                              ; preds = %481
  %486 = getelementptr inbounds i8, ptr %81, i64 273
  %487 = load i8, ptr %486, align 1, !tbaa !170, !range !43, !noundef !44
  %488 = trunc nuw i8 %487 to i1
  br i1 %488, label %531, label %489

489:                                              ; preds = %485
  %490 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %491 = load ptr, ptr %490, align 8, !tbaa !136
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09321318, ptr noundef %491, float noundef %464, float noundef %476)
  %492 = load i16, ptr %482, align 2, !tbaa !169
  %493 = and i16 %492, 1
  %494 = icmp eq i16 %493, 0
  %495 = load ptr, ptr %490, align 8, !tbaa !136
  %496 = load i32, ptr %495, align 4, !tbaa !146
  br i1 %494, label %497, label %518

497:                                              ; preds = %489
  %498 = icmp eq i32 %496, 0
  br i1 %498, label %503, label %499

499:                                              ; preds = %497
  %500 = add nsw i32 %496, -1
  %501 = call noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09321318, i32 noundef %500)
  %502 = icmp eq i8 %501, 10
  %.pre1284 = load ptr, ptr %490, align 8, !tbaa !136
  br label %503

503:                                              ; preds = %499, %497
  %504 = phi ptr [ %495, %497 ], [ %.pre1284, %499 ]
  %505 = phi i1 [ true, %497 ], [ %502, %499 ]
  %506 = getelementptr inbounds i8, ptr %504, i64 4
  %507 = load i32, ptr %506, align 4, !tbaa !143
  %508 = getelementptr inbounds i8, ptr %504, i64 8
  %509 = load i32, ptr %508, align 4, !tbaa !145
  %.not1050 = icmp eq i32 %507, %509
  %brmerge1109.not = and i1 %505, %.not1050
  br i1 %brmerge1109.not, label %.thread1330, label %510

510:                                              ; preds = %503
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef 2097164)
  %.pre1285 = load ptr, ptr %490, align 8, !tbaa !136
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre1285, i64 4
  %.pre1286 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !143
  %.phi.trans.insert1287 = getelementptr inbounds i8, ptr %.pre1285, i64 8
  %.pre1288 = load i32, ptr %.phi.trans.insert1287, align 4, !tbaa !145
  %.not1051 = icmp eq i32 %.pre1286, %.pre1288
  br i1 %.not1051, label %.thread1330, label %512

.thread1330:                                      ; preds = %503, %510
  %511 = phi ptr [ %.pre1285, %510 ], [ %504, %503 ]
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef nonnull %511)
  %.pre1289 = load ptr, ptr %490, align 8, !tbaa !136
  br label %512

512:                                              ; preds = %.thread1330, %510
  %513 = phi ptr [ %.pre1289, %.thread1330 ], [ %.pre1285, %510 ]
  %514 = load i32, ptr %513, align 4, !tbaa !146
  %515 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef nonnull %.09321318, i32 noundef %514)
  %516 = load ptr, ptr %490, align 8, !tbaa !136
  store i32 %515, ptr %516, align 4, !tbaa !146
  %517 = getelementptr inbounds i8, ptr %516, i64 8
  store i32 %515, ptr %517, align 4, !tbaa !145
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09321318, ptr noundef nonnull %516)
  br label %530

518:                                              ; preds = %489
  %519 = call noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09321318, i32 noundef %496)
  %520 = icmp ne i8 %519, 10
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef 2097156)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef 6291461)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef 6291457)
  %brmerge1111.not = and i1 %70, %520
  br i1 %brmerge1111.not, label %521, label %528

521:                                              ; preds = %518
  %522 = load ptr, ptr %490, align 8, !tbaa !136
  %523 = getelementptr inbounds i8, ptr %522, i64 4
  %524 = getelementptr inbounds i8, ptr %522, i64 8
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %523, ptr noundef nonnull align 4 dereferenceable(4) %524)
  %525 = load ptr, ptr %490, align 8, !tbaa !136
  %526 = getelementptr inbounds i8, ptr %525, i64 8
  %527 = load i32, ptr %526, align 4, !tbaa !145
  store i32 %527, ptr %525, align 4, !tbaa !146
  br label %528

528:                                              ; preds = %518, %521
  %529 = getelementptr inbounds i8, ptr %.09321318, i64 104
  store i8 0, ptr %529, align 8, !tbaa !171
  br label %530

530:                                              ; preds = %528, %512
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br label %567

531:                                              ; preds = %485, %481, %480
  %532 = getelementptr inbounds i8, ptr %81, i64 2856
  %533 = load i8, ptr %532, align 8, !tbaa !132, !range !43, !noundef !44
  %534 = trunc nuw i8 %533 to i1
  br i1 %534, label %535, label %549

535:                                              ; preds = %531
  %536 = getelementptr inbounds i8, ptr %.09321318, i64 105
  %537 = load i8, ptr %536, align 1, !tbaa !168, !range !43, !noundef !44
  %538 = trunc nuw i8 %537 to i1
  br i1 %538, label %549, label %539

539:                                              ; preds = %535
  br i1 %.0931.shrunk, label %540, label %567

540:                                              ; preds = %539
  %541 = getelementptr inbounds i8, ptr %81, i64 273
  %542 = load i8, ptr %541, align 1, !tbaa !170, !range !43, !noundef !44
  %543 = trunc nuw i8 %542 to i1
  %544 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %545 = load ptr, ptr %544, align 8, !tbaa !136
  br i1 %543, label %546, label %547

546:                                              ; preds = %540
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09321318, ptr noundef %545, float noundef %464, float noundef %476)
  br label %548

547:                                              ; preds = %540
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09321318, ptr noundef %545, float noundef %464, float noundef %476)
  br label %548

548:                                              ; preds = %547, %546
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br label %567

549:                                              ; preds = %535, %531
  %550 = trunc nuw i8 %453 to i1
  br i1 %550, label %551, label %567

551:                                              ; preds = %549
  %552 = getelementptr inbounds i8, ptr %.09321318, i64 105
  %553 = load i8, ptr %552, align 1, !tbaa !168, !range !43, !noundef !44
  %554 = trunc nuw i8 %553 to i1
  br i1 %554, label %567, label %555

555:                                              ; preds = %551
  %556 = getelementptr inbounds i8, ptr %81, i64 220
  %557 = load float, ptr %556, align 4, !tbaa !172
  %558 = fcmp une float %557, 0.000000e+00
  br i1 %558, label %563, label %559

559:                                              ; preds = %555
  %560 = getelementptr inbounds i8, ptr %81, i64 224
  %561 = load float, ptr %560, align 4, !tbaa !173
  %562 = fcmp une float %561, 0.000000e+00
  br i1 %562, label %563, label %567

563:                                              ; preds = %559, %555
  %564 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %565 = load ptr, ptr %564, align 8, !tbaa !136
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09321318, ptr noundef %565, float noundef %464, float noundef %476)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  %566 = getelementptr inbounds i8, ptr %.09321318, i64 104
  store i8 1, ptr %566, align 8, !tbaa !171
  br label %567

567:                                              ; preds = %530, %549, %551, %559, %563, %539, %548, %478
  %568 = getelementptr inbounds i8, ptr %.09321318, i64 105
  %569 = load i8, ptr %568, align 1, !tbaa !168, !range !43, !noundef !44
  %570 = trunc nuw i8 %569 to i1
  br i1 %570, label %571, label %575

571:                                              ; preds = %567
  %572 = load i8, ptr %452, align 8, !tbaa !132, !range !43, !noundef !44
  %573 = trunc nuw i8 %572 to i1
  br i1 %573, label %575, label %574

574:                                              ; preds = %571
  store i8 0, ptr %568, align 1, !tbaa !168
  br label %575

575:                                              ; preds = %574, %571, %567
  %brmerge1112 = or i1 %.not1026, %179
  br i1 %brmerge1112, label %583, label %576

576:                                              ; preds = %575
  %577 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 512, i32 noundef 1, i32 noundef %85)
  br i1 %577, label %578, label %583

578:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #14
  store i32 9, ptr %19, align 4, !tbaa !119
  %579 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef nonnull %81, ptr noundef nonnull %19, i32 noundef %spec.select1093, ptr noundef %6, ptr noundef %7, i1 noundef zeroext false)
  br i1 %579, label %580, label %582

580:                                              ; preds = %578
  %581 = load i32, ptr %19, align 4, !tbaa !119
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %581)
  br label %582

582:                                              ; preds = %580, %578
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #14
  br label %583

583:                                              ; preds = %575, %576, %582
  %584 = getelementptr inbounds i8, ptr %81, i64 272
  %585 = load i8, ptr %584, align 8, !tbaa !152, !range !43, !noundef !44
  %586 = trunc nuw i8 %585 to i1
  br i1 %586, label %587, label %592

587:                                              ; preds = %583
  %588 = getelementptr inbounds i8, ptr %81, i64 274
  %589 = load i8, ptr %588, align 2, !tbaa !174, !range !43, !noundef !44
  %590 = trunc nuw i8 %589 to i1
  %.not1113 = xor i1 %590, true
  %591 = select i1 %590, i1 %366, i1 false
  br i1 %591, label %593, label %594

592:                                              ; preds = %583
  br i1 %366, label %593, label %594

593:                                              ; preds = %587, %592
  br label %594

594:                                              ; preds = %587, %592, %593
  %595 = phi i1 [ %366, %587 ], [ false, %592 ], [ %366, %593 ]
  %596 = phi i1 [ %.not1113, %587 ], [ false, %592 ], [ %586, %593 ]
  %597 = getelementptr inbounds i8, ptr %81, i64 3056
  %598 = load i32, ptr %597, align 8, !tbaa !175
  %599 = icmp sgt i32 %598, 0
  br i1 %599, label %600, label %613

600:                                              ; preds = %594
  %brmerge1116 = or i1 %179, %596
  %brmerge1117 = select i1 %brmerge1116, i1 true, i1 %202
  br i1 %brmerge1117, label %.loopexit1265, label %.lr.ph

.lr.ph:                                           ; preds = %600, %609
  %.09701268 = phi i32 [ %610, %609 ], [ 0, %600 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #14
  %601 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %597, i32 noundef %.09701268)
  %602 = load i16, ptr %601, align 2, !tbaa !169
  %603 = zext i16 %602 to i32
  store i32 %603, ptr %20, align 4, !tbaa !119
  %604 = icmp eq i16 %602, 9
  br i1 %604, label %609, label %605

605:                                              ; preds = %.lr.ph
  %606 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %81, ptr noundef nonnull %20, i32 noundef %spec.select1093, ptr noundef %6, ptr noundef %7, i1 noundef zeroext false)
  br i1 %606, label %607, label %609

607:                                              ; preds = %605
  %608 = load i32, ptr %20, align 4, !tbaa !119
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %608)
  br label %609

609:                                              ; preds = %605, %607, %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #14
  %610 = add nuw nsw i32 %.09701268, 1
  %611 = load i32, ptr %597, align 8, !tbaa !175
  %612 = icmp slt i32 %610, %611
  br i1 %612, label %.lr.ph, label %.loopexit1265, !llvm.loop !176

.loopexit1265:                                    ; preds = %609, %600
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %597, i32 noundef 0)
  br label %613

613:                                              ; preds = %594, %.loopexit1265, %443
  %614 = phi i1 [ %595, %594 ], [ %595, %.loopexit1265 ], [ %366, %443 ]
  %615 = load i32, ptr %187, align 4, !tbaa !122
  %616 = icmp eq i32 %615, %85
  br i1 %616, label %617, label %954

617:                                              ; preds = %613
  %618 = getelementptr inbounds i8, ptr %81, i64 5488
  %619 = load i8, ptr %618, align 8, !tbaa !178, !range !43, !noundef !44
  %620 = trunc nuw i8 %619 to i1
  br i1 %620, label %.thread1332, label %621

621:                                              ; preds = %617
  %622 = trunc nuw i8 %.0933 to i1
  br i1 %622, label %.thread1332, label %623

623:                                              ; preds = %621
  br i1 %409, label %625, label %624

624:                                              ; preds = %623
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 4832, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

625:                                              ; preds = %623
  %626 = load float, ptr %96, align 4, !tbaa !115
  %627 = fsub float %.sroa.11.0.copyload, %626
  %628 = getelementptr inbounds i8, ptr %81, i64 4616
  %629 = load float, ptr %628, align 8, !tbaa !46
  %630 = fdiv float %627, %629
  %631 = fptosi float %630 to i32
  %632 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %631, i32 noundef 1)
  %633 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %634 = load ptr, ptr %633, align 8, !tbaa !136
  %635 = getelementptr inbounds i8, ptr %634, i64 16
  store i32 %632, ptr %635, align 4, !tbaa !179
  %636 = getelementptr inbounds i8, ptr %81, i64 273
  %637 = load i8, ptr %636, align 1, !tbaa !170, !range !43, !noundef !44
  %638 = trunc nuw i8 %637 to i1
  %639 = select i1 %638, i32 4194304, i32 0
  %640 = getelementptr inbounds i8, ptr %81, i64 274
  %641 = getelementptr inbounds i8, ptr %81, i64 272
  %.in.in = select i1 %614, ptr %640, ptr %641
  %.in = load i8, ptr %.in.in, align 2, !tbaa !132, !range !43, !noundef !44
  %642 = trunc nuw i8 %.in to i1
  br i1 %614, label %643, label %654

643:                                              ; preds = %625
  %644 = load i8, ptr %641, align 8, !tbaa !152, !range !43, !noundef !44
  %645 = trunc nuw i8 %644 to i1
  br i1 %645, label %646, label %654

646:                                              ; preds = %643
  %647 = getelementptr inbounds i8, ptr %81, i64 275
  %648 = load i8, ptr %647, align 1, !tbaa !180, !range !43, !noundef !44
  %649 = trunc nuw i8 %648 to i1
  br i1 %649, label %654, label %650

650:                                              ; preds = %646
  %651 = load i8, ptr %640, align 2, !tbaa !174, !range !43, !noundef !44
  %652 = trunc nuw i8 %651 to i1
  %653 = xor i1 %652, true
  br label %654

654:                                              ; preds = %650, %646, %643, %625
  %655 = phi i1 [ false, %646 ], [ false, %643 ], [ false, %625 ], [ %653, %650 ]
  %656 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4665, i32 noundef 1, i32 noundef %85)
  br i1 %656, label %661, label %657

657:                                              ; preds = %654
  %658 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 8714, i32 noundef 1, i32 noundef %85)
  %659 = and i1 %.not1032, %658
  %660 = xor i1 %659, true
  %brmerge1120 = or i1 %179, %660
  %.not1126 = xor i1 %70, true
  %brmerge1127 = or i1 %brmerge1120, %.not1126
  %not.brmerge1120 = xor i1 %brmerge1120, true
  br i1 %brmerge1127, label %664, label %662

661:                                              ; preds = %654
  %.not1032.not1121 = xor i1 %.not1032, true
  %brmerge1122 = or i1 %179, %.not1032.not1121
  %.not1123 = xor i1 %70, true
  %brmerge1124 = or i1 %brmerge1122, %.not1123
  %not.brmerge1122 = xor i1 %brmerge1122, true
  br i1 %brmerge1124, label %664, label %662

662:                                              ; preds = %657, %661
  %663 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br label %664

664:                                              ; preds = %657, %661, %662
  %665 = phi i1 [ %not.brmerge1122, %661 ], [ %not.brmerge1120, %657 ], [ %663, %662 ]
  %666 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4644, i32 noundef 0, i32 noundef %85)
  br i1 %666, label %669, label %667

667:                                              ; preds = %664
  %668 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4617, i32 noundef 0, i32 noundef %85)
  %brmerge1131.demorgan = and i1 %.not1032, %668
  %brmerge1133.not = and i1 %70, %brmerge1131.demorgan
  br i1 %brmerge1133.not, label %671, label %673

669:                                              ; preds = %664
  %670 = and i32 %5, 67109888
  %brmerge1137.not = icmp eq i32 %670, 67108864
  br i1 %brmerge1137.not, label %671, label %673

671:                                              ; preds = %669, %667
  %672 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br label %673

673:                                              ; preds = %669, %667, %671
  %674 = phi i1 [ %.not1032, %669 ], [ %brmerge1131.demorgan, %667 ], [ %672, %671 ]
  %675 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4663, i32 noundef 1, i32 noundef %85)
  br i1 %675, label %678, label %676

676:                                              ; preds = %673
  %677 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 8713, i32 noundef 1, i32 noundef %85)
  br i1 %677, label %678, label %._crit_edge1305

._crit_edge1305:                                  ; preds = %676
  %.pre1306 = xor i1 %179, true
  br label %680

678:                                              ; preds = %676, %673
  %679 = xor i1 %179, true
  br label %680

680:                                              ; preds = %._crit_edge1305, %678
  %not.1262.pre-phi = phi i1 [ %.pre1306, %._crit_edge1305 ], [ %679, %678 ]
  %681 = phi i1 [ false, %._crit_edge1305 ], [ %679, %678 ]
  %682 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4667, i32 noundef 1, i32 noundef %85)
  %spec.select1139 = and i1 %182, %not.1262.pre-phi
  %spec.select1201 = select i1 %682, i1 %spec.select1139, i1 false
  %683 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4666, i32 noundef 1, i32 noundef %85)
  br i1 %683, label %686, label %684

684:                                              ; preds = %680
  %685 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 12859, i32 noundef 1, i32 noundef %85)
  br i1 %685, label %686, label %687

686:                                              ; preds = %684, %680
  br label %687

687:                                              ; preds = %686, %684
  %688 = phi i1 [ false, %684 ], [ %spec.select1139, %686 ]
  %689 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4642, i32 noundef 0, i32 noundef %85)
  %690 = load i32, ptr %82, align 8, !tbaa !181
  %691 = and i32 %690, 2
  %.not1053 = icmp eq i32 %691, 0
  br i1 %.not1053, label %697, label %692

692:                                              ; preds = %687
  %693 = getelementptr inbounds i8, ptr %81, i64 12
  %694 = load i32, ptr %693, align 4, !tbaa !182
  %695 = and i32 %694, 1
  %696 = icmp ne i32 %695, 0
  br label %697

697:                                              ; preds = %692, %687
  %698 = phi i1 [ false, %687 ], [ %696, %692 ]
  %699 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %699, label %702, label %700

700:                                              ; preds = %697
  %701 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 627, i1 noundef zeroext true)
  br label %702

702:                                              ; preds = %700, %697
  %703 = phi i1 [ true, %697 ], [ %701, %700 ]
  br i1 %698, label %704, label %.sink.split1355

704:                                              ; preds = %702
  %705 = getelementptr inbounds i8, ptr %81, i64 88
  %706 = load i8, ptr %705, align 8, !tbaa !183, !range !43, !noundef !44
  %707 = trunc nuw i8 %706 to i1
  %708 = select i1 %707, i32 635, i32 637
  %709 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef %708, i1 noundef zeroext false)
  br i1 %709, label %712, label %710

710:                                              ; preds = %704
  %711 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 636, i1 noundef zeroext false)
  br label %712

712:                                              ; preds = %704, %710
  %713 = phi i1 [ true, %704 ], [ %711, %710 ]
  %714 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 526, i32 noundef 1, i32 noundef %85)
  br i1 %714, label %720, label %715

715:                                              ; preds = %712
  %716 = load i8, ptr %705, align 8, !tbaa !183, !range !43, !noundef !44
  %717 = trunc nuw i8 %716 to i1
  %718 = select i1 %717, i32 637, i32 635
  br label %.sink.split1355

.sink.split1355:                                  ; preds = %702, %715
  %.sink = phi i32 [ %718, %715 ], [ 526, %702 ]
  %.ph1356 = phi i1 [ %713, %715 ], [ false, %702 ]
  %719 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef %.sink, i32 noundef 1, i32 noundef %85)
  br label %720

720:                                              ; preds = %.sink.split1355, %712
  %721 = phi i1 [ %713, %712 ], [ %.ph1356, %.sink.split1355 ]
  %722 = phi i1 [ true, %712 ], [ %719, %.sink.split1355 ]
  %723 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %723, label %724, label %727

724:                                              ; preds = %720
  %725 = select i1 %642, i32 2097164, i32 2097152
  %spec.select1144 = select i1 %655, i32 2097156, i32 %725
  %726 = or disjoint i32 %spec.select1144, %639
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %726)
  br label %.thread1236

727:                                              ; preds = %720
  %728 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %728, label %729, label %732

729:                                              ; preds = %727
  %730 = select i1 %642, i32 2097165, i32 2097153
  %spec.select1145 = select i1 %655, i32 2097157, i32 %730
  %731 = or disjoint i32 %spec.select1145, %639
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %731)
  br label %.thread1236

732:                                              ; preds = %727
  %733 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  %.not1147 = xor i1 %70, true
  %brmerge1148.not = and i1 %70, %733
  br i1 %brmerge1148.not, label %734, label %746

734:                                              ; preds = %732
  %735 = load i8, ptr %641, align 8, !tbaa !152, !range !43, !noundef !44
  %736 = trunc nuw i8 %735 to i1
  br i1 %736, label %737, label %743

737:                                              ; preds = %734
  %738 = getelementptr inbounds i8, ptr %.2930, i64 208
  %739 = load float, ptr %738, align 4, !tbaa !134
  %740 = load float, ptr %628, align 8, !tbaa !46
  %741 = fsub float %739, %740
  %742 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %741, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2930, float noundef %742)
  br label %.thread1236

743:                                              ; preds = %734
  %744 = select i1 %655, i32 2097158, i32 2097154
  %745 = or disjoint i32 %744, %639
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %745)
  br label %.thread1236

746:                                              ; preds = %732
  %747 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  %brmerge1151.not = and i1 %70, %747
  br i1 %brmerge1151.not, label %748, label %761

748:                                              ; preds = %746
  %749 = load i8, ptr %641, align 8, !tbaa !152, !range !43, !noundef !44
  %750 = trunc nuw i8 %749 to i1
  br i1 %750, label %751, label %758

751:                                              ; preds = %748
  %752 = getelementptr inbounds i8, ptr %.2930, i64 208
  %753 = load float, ptr %752, align 4, !tbaa !134
  %754 = load float, ptr %628, align 8, !tbaa !46
  %755 = fadd float %753, %754
  %756 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %757 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %755, float noundef %756)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2930, float noundef %757)
  br label %.thread1236

758:                                              ; preds = %748
  %759 = select i1 %655, i32 2097159, i32 2097155
  %760 = or disjoint i32 %759, %639
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %760)
  br label %.thread1236

761:                                              ; preds = %746
  %762 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  %brmerge1154.not = and i1 %70, %762
  br i1 %brmerge1154.not, label %763, label %769

763:                                              ; preds = %761
  %764 = or disjoint i32 %639, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %764)
  %765 = sitofp i32 %632 to float
  %766 = load float, ptr %628, align 8, !tbaa !46
  %767 = fneg float %765
  %768 = call float @llvm.fmuladd.f32(float %767, float %766, float %229)
  br label %.thread1236

769:                                              ; preds = %761
  %770 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  %brmerge1157.not = and i1 %70, %770
  br i1 %brmerge1157.not, label %771, label %776

771:                                              ; preds = %769
  %772 = or disjoint i32 %639, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %772)
  %773 = sitofp i32 %632 to float
  %774 = load float, ptr %628, align 8, !tbaa !46
  %775 = call float @llvm.fmuladd.f32(float %773, float %774, float %229)
  br label %.thread1236

776:                                              ; preds = %769
  %777 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %777, label %778, label %782

778:                                              ; preds = %776
  %779 = load i8, ptr %641, align 8, !tbaa !152, !range !43, !noundef !44
  %780 = trunc nuw i8 %779 to i1
  %.v1064 = select i1 %780, i32 2097158, i32 2097156
  %781 = or disjoint i32 %.v1064, %639
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %781)
  br label %.thread1236

782:                                              ; preds = %776
  %783 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %783, label %784, label %788

784:                                              ; preds = %782
  %785 = load i8, ptr %641, align 8, !tbaa !152, !range !43, !noundef !44
  %786 = trunc nuw i8 %785 to i1
  %.v = select i1 %786, i32 2097159, i32 2097157
  %787 = or disjoint i32 %.v, %639
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %787)
  br label %.thread1236

788:                                              ; preds = %782
  %789 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  %.not1158 = xor i1 %789, true
  %brmerge1159 = or i1 %179, %.not1158
  %brmerge1160 = or i1 %665, %brmerge1159
  br i1 %brmerge1160, label %795, label %790

790:                                              ; preds = %788
  %791 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  %.not1161 = xor i1 %642, true
  %brmerge1162 = select i1 %791, i1 true, i1 %.not1161
  br i1 %brmerge1162, label %793, label %792

792:                                              ; preds = %790
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef 6291469)
  br label %793

793:                                              ; preds = %790, %792
  %794 = or disjoint i32 %639, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %794)
  br label %.thread1236

795:                                              ; preds = %788
  %796 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  %.not1163 = xor i1 %796, true
  %brmerge1164 = or i1 %179, %.not1163
  br i1 %brmerge1164, label %813, label %797

797:                                              ; preds = %795
  %798 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br i1 %798, label %811, label %799

799:                                              ; preds = %797
  br i1 %642, label %.sink.split1358, label %800

800:                                              ; preds = %799
  br i1 %614, label %801, label %811

801:                                              ; preds = %800
  %802 = load i8, ptr %641, align 8, !tbaa !152, !range !43, !noundef !44
  %803 = trunc nuw i8 %802 to i1
  br i1 %803, label %804, label %811

804:                                              ; preds = %801
  %805 = load i8, ptr %640, align 2, !tbaa !174, !range !43, !noundef !44
  %806 = trunc nuw i8 %805 to i1
  br i1 %806, label %811, label %807

807:                                              ; preds = %804
  %808 = getelementptr inbounds i8, ptr %81, i64 275
  %809 = load i8, ptr %808, align 1, !tbaa !180, !range !43, !noundef !44
  %810 = trunc nuw i8 %809 to i1
  br i1 %810, label %811, label %.sink.split1358

.sink.split1358:                                  ; preds = %807, %799
  %.sink1359 = phi i32 [ 6291468, %799 ], [ 6291460, %807 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %.sink1359)
  br label %811

811:                                              ; preds = %.sink.split1358, %807, %804, %801, %800, %797
  %812 = or disjoint i32 %639, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %812)
  br label %.thread1236

813:                                              ; preds = %795
  %brmerge1165 = or i1 %703, %721
  br i1 %brmerge1165, label %814, label %831

814:                                              ; preds = %813
  %brmerge1167 = or i1 %721, %.not1147
  br i1 %brmerge1167, label %820, label %815

815:                                              ; preds = %814
  %816 = and i32 %5, 256
  %.not1063 = icmp eq i32 %816, 0
  %817 = load i8, ptr %641, align 8, !tbaa !152, !range !43, !noundef !44
  %818 = trunc nuw i8 %817 to i1
  br i1 %.not1063, label %.critedge1169, label %819

819:                                              ; preds = %815
  br i1 %818, label %825, label %.thread1236

.critedge1169:                                    ; preds = %815
  br i1 %818, label %.thread1236, label %825

820:                                              ; preds = %814
  %821 = getelementptr inbounds i8, ptr %81, i64 107
  %822 = load i8, ptr %821, align 1, !tbaa !184, !range !43, !noundef !44
  %823 = trunc nuw i8 %822 to i1
  %.not1170 = xor i1 %823, true
  %brmerge1171 = or i1 %70, %.not1170
  br i1 %brmerge1171, label %.thread1236, label %824

824:                                              ; preds = %820
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br label %.thread1236

825:                                              ; preds = %819, %.critedge1169
  br i1 %179, label %.thread1236, label %826

826:                                              ; preds = %825
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #14
  store i32 10, ptr %21, align 4, !tbaa !119
  %827 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef nonnull %81, ptr noundef nonnull %21, i32 noundef %spec.select1093, ptr noundef %6, ptr noundef %7, i1 noundef zeroext false)
  br i1 %827, label %828, label %830

828:                                              ; preds = %826
  %829 = load i32, ptr %21, align 4, !tbaa !119
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %829)
  br label %830

830:                                              ; preds = %828, %826
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #14
  br label %.thread1236

831:                                              ; preds = %813
  br i1 %722, label %832, label %836

832:                                              ; preds = %831
  %833 = and i32 %5, 128
  %.not1061 = icmp eq i32 %833, 0
  br i1 %.not1061, label %.thread1236, label %834

834:                                              ; preds = %832
  %835 = load i8, ptr %2, align 1, !tbaa !159
  %.not1062 = icmp ne i8 %835, 0
  %.1173 = select i1 %.not1062, i1 %425, i1 false
  %.1174 = select i1 %.not1062, i8 %418, i8 0
  %..0933 = select i1 %.not1062, i8 %.0933, i8 1
  br label %.thread1236

836:                                              ; preds = %831
  %brmerge1175 = or i1 %spec.select1201, %688
  br i1 %brmerge1175, label %837, label %838

837:                                              ; preds = %836
  %.mux1176 = select i1 %spec.select1201, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09321318, i32 noundef %.mux1176)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br label %.thread1236

838:                                              ; preds = %836
  br i1 %689, label %839, label %841

839:                                              ; preds = %838
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  %840 = getelementptr inbounds i8, ptr %.09321318, i64 104
  store i8 1, ptr %840, align 8, !tbaa !171
  br label %.thread1236

841:                                              ; preds = %838
  %brmerge1177 = or i1 %665, %674
  br i1 %brmerge1177, label %842, label %890

842:                                              ; preds = %841
  %843 = getelementptr inbounds i8, ptr %81, i64 3104
  %844 = load ptr, ptr %843, align 8, !tbaa !185
  %.not1060 = icmp eq ptr %844, null
  br i1 %.not1060, label %882, label %845

845:                                              ; preds = %842
  %846 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br i1 %846, label %847, label %854

847:                                              ; preds = %845
  %848 = load ptr, ptr %633, align 8, !tbaa !136
  %849 = getelementptr inbounds i8, ptr %848, i64 4
  %850 = load i32, ptr %849, align 4, !tbaa !143
  %851 = getelementptr inbounds i8, ptr %848, i64 8
  %852 = load i32, ptr %851, align 4, !tbaa !145
  %853 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %850, i32 noundef %852)
  br label %854

854:                                              ; preds = %845, %847
  %855 = phi i32 [ %853, %847 ], [ 0, %845 ]
  %856 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br i1 %856, label %857, label %864

857:                                              ; preds = %854
  %858 = load ptr, ptr %633, align 8, !tbaa !136
  %859 = getelementptr inbounds i8, ptr %858, i64 4
  %860 = load i32, ptr %859, align 4, !tbaa !143
  %861 = getelementptr inbounds i8, ptr %858, i64 8
  %862 = load i32, ptr %861, align 4, !tbaa !145
  %863 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %860, i32 noundef %862)
  br label %867

864:                                              ; preds = %854
  %865 = getelementptr inbounds i8, ptr %.09321318, i64 24
  %866 = load i32, ptr %865, align 8, !tbaa !141
  br label %867

867:                                              ; preds = %864, %857
  %868 = phi i32 [ %863, %857 ], [ %866, %864 ]
  %869 = getelementptr inbounds i8, ptr %81, i64 11072
  %870 = sub nsw i32 %868, %855
  %871 = add nsw i32 %870, 1
  call void @_ZN8ImVectorIcE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %869, i32 noundef %871)
  %872 = getelementptr inbounds i8, ptr %81, i64 11080
  %873 = load ptr, ptr %872, align 8, !tbaa !186
  %874 = getelementptr inbounds i8, ptr %.09321318, i64 32
  %875 = load ptr, ptr %874, align 8, !tbaa !158
  %876 = sext i32 %855 to i64
  %877 = getelementptr inbounds i8, ptr %875, i64 %876
  %878 = sext i32 %870 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %873, ptr align 1 %877, i64 %878, i1 false)
  %879 = load ptr, ptr %872, align 8, !tbaa !186
  %880 = getelementptr inbounds i8, ptr %879, i64 %878
  store i8 0, ptr %880, align 1, !tbaa !159
  %881 = load ptr, ptr %872, align 8, !tbaa !186
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %881)
  br label %882

882:                                              ; preds = %867, %842
  br i1 %665, label %883, label %.thread1236

883:                                              ; preds = %882
  %884 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br i1 %884, label %886, label %885

885:                                              ; preds = %883
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br label %886

886:                                              ; preds = %885, %883
  %887 = getelementptr inbounds i8, ptr %.09321318, i64 104
  store i8 1, ptr %887, align 8, !tbaa !171
  %888 = load ptr, ptr %633, align 8, !tbaa !136
  %889 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09321318, ptr noundef %888)
  br label %.thread1236

890:                                              ; preds = %841
  br i1 %681, label %891, label %.thread1236

891:                                              ; preds = %890
  %892 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not1054 = icmp eq ptr %892, null
  br i1 %.not1054, label %.thread1236, label %893

893:                                              ; preds = %891
  %894 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %892) #15
  %895 = trunc i64 %894 to i32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #14
  call void @_ZN8ImVectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22)
  %896 = add nsw i32 %895, 1
  invoke void @_ZN8ImVectorIcE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %896)
          to label %.preheader1263 unwind label %901

.preheader1263:                                   ; preds = %893
  %897 = load i8, ptr %892, align 1, !tbaa !159
  %.not10551269 = icmp eq i8 %897, 0
  br i1 %.not10551269, label %._crit_edge, label %.lr.ph1271

.lr.ph1271:                                       ; preds = %.preheader1263
  %898 = getelementptr inbounds i8, ptr %22, i64 8
  br label %903

._crit_edge:                                      ; preds = %928, %.preheader1263
  %899 = load i32, ptr %22, align 8, !tbaa !187
  %900 = icmp sgt i32 %899, 0
  br i1 %900, label %936, label %948

901:                                              ; preds = %937, %893
  %902 = landingpad { ptr, i32 }
          cleanup
  br label %949

903:                                              ; preds = %.lr.ph1271, %928
  %.09801270 = phi ptr [ %892, %.lr.ph1271 ], [ %907, %928 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #14
  %904 = invoke noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %23, ptr noundef nonnull %.09801270, ptr noundef null)
          to label %905 unwind label %910

905:                                              ; preds = %903
  %906 = sext i32 %904 to i64
  %907 = getelementptr inbounds i8, ptr %.09801270, i64 %906
  %908 = invoke noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %81, ptr noundef nonnull %23, i32 noundef %spec.select1093, ptr noundef %6, ptr noundef %7, i1 noundef zeroext true)
          to label %909 unwind label %910

909:                                              ; preds = %905
  br i1 %908, label %912, label %928, !llvm.loop !188

910:                                              ; preds = %905, %903
  %911 = landingpad { ptr, i32 }
          cleanup
  br label %935

912:                                              ; preds = %909
  call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %24) #14
  %913 = load i32, ptr %23, align 4, !tbaa !119
  %914 = invoke noundef ptr @_Z16ImTextCharToUtf8Pcj(ptr noundef nonnull %24, i32 noundef %913)
          to label %915 unwind label %930

915:                                              ; preds = %912
  %916 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %24) #15
  %917 = trunc i64 %916 to i32
  %918 = load i32, ptr %22, align 8, !tbaa !187
  %919 = add nsw i32 %918, %917
  invoke void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %919)
          to label %920 unwind label %932

920:                                              ; preds = %915
  %921 = load ptr, ptr %898, align 8, !tbaa !189
  %922 = load i32, ptr %22, align 8, !tbaa !187
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds i8, ptr %921, i64 %923
  %sext1059 = shl i64 %916, 32
  %925 = ashr exact i64 %sext1059, 32
  %926 = sub nsw i64 0, %925
  %927 = getelementptr inbounds i8, ptr %924, i64 %926
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %927, ptr nonnull align 1 %24, i64 %925, i1 false)
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %24) #14
  br label %928

928:                                              ; preds = %909, %920
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #14
  %929 = load i8, ptr %907, align 1, !tbaa !159
  %.not1055 = icmp eq i8 %929, 0
  br i1 %.not1055, label %._crit_edge, label %903

930:                                              ; preds = %912
  %931 = landingpad { ptr, i32 }
          cleanup
  br label %934

932:                                              ; preds = %915
  %933 = landingpad { ptr, i32 }
          cleanup
  br label %934

934:                                              ; preds = %932, %930
  %.pn = phi { ptr, i32 } [ %933, %932 ], [ %931, %930 ]
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %24) #14
  br label %935

935:                                              ; preds = %934, %910
  %.pn.pn = phi { ptr, i32 } [ %.pn, %934 ], [ %911, %910 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #14
  br label %949

936:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #14
  store i8 0, ptr %25, align 1, !tbaa !159
  invoke void @_ZN8ImVectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %937 unwind label %946

937:                                              ; preds = %936
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #14
  %938 = load ptr, ptr %633, align 8, !tbaa !136
  %939 = getelementptr inbounds i8, ptr %22, i64 8
  %940 = load ptr, ptr %939, align 8, !tbaa !189
  %941 = load i32, ptr %22, align 8, !tbaa !187
  %942 = add nsw i32 %941, -1
  %943 = invoke noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef nonnull %.09321318, ptr noundef %938, ptr noundef %940, i32 noundef %942)
          to label %944 unwind label %901

944:                                              ; preds = %937
  %945 = getelementptr inbounds i8, ptr %.09321318, i64 104
  store i8 1, ptr %945, align 8, !tbaa !171
  br label %948

946:                                              ; preds = %936
  %947 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #14
  br label %949

948:                                              ; preds = %944, %._crit_edge
  call void @_ZN8ImVectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #14
  br label %.thread1236

949:                                              ; preds = %946, %935, %901
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %935 ], [ %902, %901 ], [ %947, %946 ]
  call void @_ZN8ImVectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  resume { ptr, i32 } %.pn.pn.pn

.thread1236:                                      ; preds = %819, %.critedge1169, %891, %948, %832, %834, %824, %830, %825, %820, %729, %758, %751, %771, %784, %811, %839, %890, %882, %886, %837, %793, %778, %763, %737, %743, %724
  %.0972 = phi i1 [ false, %724 ], [ false, %729 ], [ false, %737 ], [ false, %743 ], [ false, %751 ], [ false, %758 ], [ false, %763 ], [ false, %771 ], [ false, %778 ], [ false, %784 ], [ false, %837 ], [ false, %839 ], [ false, %886 ], [ false, %882 ], [ false, %890 ], [ false, %811 ], [ false, %793 ], [ false, %820 ], [ false, %825 ], [ false, %830 ], [ false, %824 ], [ %.not1062, %834 ], [ true, %832 ], [ false, %948 ], [ false, %891 ], [ false, %.critedge1169 ], [ false, %819 ]
  %.1967 = phi i1 [ false, %724 ], [ false, %729 ], [ false, %737 ], [ false, %743 ], [ false, %751 ], [ false, %758 ], [ false, %763 ], [ false, %771 ], [ false, %778 ], [ false, %784 ], [ false, %837 ], [ false, %839 ], [ false, %886 ], [ false, %882 ], [ false, %890 ], [ false, %811 ], [ false, %793 ], [ true, %820 ], [ false, %825 ], [ false, %830 ], [ true, %824 ], [ false, %834 ], [ false, %832 ], [ false, %948 ], [ false, %891 ], [ true, %.critedge1169 ], [ true, %819 ]
  %.0951 = phi i1 [ %425, %724 ], [ %425, %729 ], [ %425, %737 ], [ %425, %743 ], [ %425, %751 ], [ %425, %758 ], [ %425, %763 ], [ %425, %771 ], [ %425, %778 ], [ %425, %784 ], [ %425, %837 ], [ %425, %839 ], [ %425, %886 ], [ %425, %882 ], [ %425, %890 ], [ %425, %811 ], [ %425, %793 ], [ %425, %820 ], [ %425, %825 ], [ %425, %830 ], [ %425, %824 ], [ %.1173, %834 ], [ false, %832 ], [ %425, %948 ], [ %425, %891 ], [ %425, %.critedge1169 ], [ %425, %819 ]
  %.0946 = phi i8 [ %418, %724 ], [ %418, %729 ], [ %418, %737 ], [ %418, %743 ], [ %418, %751 ], [ %418, %758 ], [ %418, %763 ], [ %418, %771 ], [ %418, %778 ], [ %418, %784 ], [ %418, %837 ], [ %418, %839 ], [ %418, %886 ], [ %418, %882 ], [ %418, %890 ], [ %418, %811 ], [ %418, %793 ], [ %418, %820 ], [ %418, %825 ], [ %418, %830 ], [ %418, %824 ], [ %.1174, %834 ], [ 0, %832 ], [ %418, %948 ], [ %418, %891 ], [ %418, %.critedge1169 ], [ %418, %819 ]
  %.0941 = phi float [ %229, %724 ], [ %229, %729 ], [ %229, %737 ], [ %229, %743 ], [ %229, %751 ], [ %229, %758 ], [ %768, %763 ], [ %775, %771 ], [ %229, %778 ], [ %229, %784 ], [ %229, %837 ], [ %229, %839 ], [ %229, %886 ], [ %229, %882 ], [ %229, %890 ], [ %229, %811 ], [ %229, %793 ], [ %229, %820 ], [ %229, %825 ], [ %229, %830 ], [ %229, %824 ], [ %229, %834 ], [ %229, %832 ], [ %229, %948 ], [ %229, %891 ], [ %229, %.critedge1169 ], [ %229, %819 ]
  %.2935 = phi i8 [ %.0933, %724 ], [ %.0933, %729 ], [ %.0933, %737 ], [ %.0933, %743 ], [ %.0933, %751 ], [ %.0933, %758 ], [ %.0933, %763 ], [ %.0933, %771 ], [ %.0933, %778 ], [ %.0933, %784 ], [ %.0933, %837 ], [ %.0933, %839 ], [ %.0933, %886 ], [ %.0933, %882 ], [ %.0933, %890 ], [ %.0933, %811 ], [ %.0933, %793 ], [ 1, %820 ], [ %.0933, %825 ], [ %.0933, %830 ], [ %.0933, %824 ], [ %..0933, %834 ], [ 1, %832 ], [ %.0933, %948 ], [ %.0933, %891 ], [ 1, %.critedge1169 ], [ 1, %819 ]
  %950 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  %951 = select i1 %950, i8 %.0946, i8 0
  %952 = zext i1 %.0951 to i8
  %953 = or i8 %951, %952
  %.pre1290 = load i32, ptr %187, align 4, !tbaa !122
  br label %954

954:                                              ; preds = %.thread1236, %613
  %955 = phi i32 [ %.pre1290, %.thread1236 ], [ %615, %613 ]
  %.1973 = phi i1 [ %.0972, %.thread1236 ], [ false, %613 ]
  %.2968 = phi i1 [ %.1967, %.thread1236 ], [ false, %613 ]
  %.1952 = phi i8 [ %953, %.thread1236 ], [ %426, %613 ]
  %.1947 = phi i8 [ %.0946, %.thread1236 ], [ %418, %613 ]
  %.1942 = phi float [ %.0941, %.thread1236 ], [ %229, %613 ]
  %.3936 = phi i8 [ %.2935, %.thread1236 ], [ %.0933, %613 ]
  %956 = icmp eq i32 %955, %85
  br i1 %956, label %.thread1332, label %1103

.thread1332:                                      ; preds = %621, %617, %954
  %.39361351 = phi i8 [ %.3936, %954 ], [ %.0933, %617 ], [ %.0933, %621 ]
  %.19421349 = phi float [ %.1942, %954 ], [ %229, %617 ], [ %229, %621 ]
  %.19471347 = phi i8 [ %.1947, %954 ], [ %418, %617 ], [ %418, %621 ]
  %.19521345 = phi i8 [ %.1952, %954 ], [ %426, %617 ], [ %426, %621 ]
  %.29681343 = phi i1 [ %.2968, %954 ], [ false, %617 ], [ false, %621 ]
  %.19731341 = phi i1 [ %.1973, %954 ], [ false, %617 ], [ false, %621 ]
  br i1 %409, label %958, label %957

957:                                              ; preds = %.thread1332
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 4997, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

958:                                              ; preds = %.thread1332
  %.1973.not = xor i1 %.19731341, true
  %brmerge1178 = or i1 %179, %.1973.not
  br i1 %brmerge1178, label %977, label %959

959:                                              ; preds = %958
  %960 = and i32 %5, 128
  %.not1065 = icmp eq i32 %960, 0
  br i1 %.not1065, label %967, label %961

961:                                              ; preds = %959
  %962 = load i8, ptr %2, align 1, !tbaa !159
  %.not1067 = icmp eq i8 %962, 0
  br i1 %.not1067, label %963, label %964

963:                                              ; preds = %961
  call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.2, i32 noundef 5003, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

964:                                              ; preds = %961
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #14
  %965 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %966 = load ptr, ptr %965, align 8, !tbaa !136
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef %.09321318, ptr noundef %966, ptr noundef nonnull %26, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #14
  br label %977

967:                                              ; preds = %959
  %968 = getelementptr inbounds i8, ptr %.09321318, i64 64
  %969 = load ptr, ptr %968, align 8, !tbaa !148
  %970 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %969) #15
  %.not1066 = icmp eq i32 %970, 0
  br i1 %.not1066, label %977, label %971

971:                                              ; preds = %967
  %972 = getelementptr inbounds i8, ptr %.09321318, i64 56
  %973 = load i32, ptr %972, align 8, !tbaa !190
  %974 = add nsw i32 %973, -1
  %975 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %976 = load ptr, ptr %975, align 8, !tbaa !136
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef nonnull %.09321318, ptr noundef %976, ptr noundef %969, i32 noundef %974)
  br label %977

977:                                              ; preds = %958, %964, %971, %967
  %.0986 = phi i32 [ 0, %964 ], [ %974, %971 ], [ 0, %967 ], [ 0, %958 ]
  %.0981 = phi ptr [ @.str, %964 ], [ %969, %971 ], [ null, %967 ], [ null, %958 ]
  %.0953 = phi i1 [ true, %964 ], [ true, %971 ], [ false, %967 ], [ false, %958 ]
  %978 = and i32 %5, 10223616
  %.not1068 = icmp eq i32 %978, 0
  br i1 %.not1068, label %1095, label %979

979:                                              ; preds = %977
  br i1 %184, label %981, label %980

980:                                              ; preds = %979
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.2, i32 noundef 5037, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

981:                                              ; preds = %979
  %982 = and i32 %5, 262144
  %.not1069 = icmp eq i32 %982, 0
  br i1 %.not1069, label %985, label %983

983:                                              ; preds = %981
  %984 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 512, i32 noundef 0, i32 noundef %85)
  br i1 %984, label %.thread1240, label %985

985:                                              ; preds = %983, %981
  %986 = and i32 %5, 524288
  %.not1070 = icmp eq i32 %986, 0
  br i1 %.not1070, label %.critedge1180, label %987

987:                                              ; preds = %985
  %988 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %988, label %.thread1240, label %989

989:                                              ; preds = %987
  %990 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %990, label %.thread1240, label %.critedge1180

.critedge1180:                                    ; preds = %985, %989
  %991 = and i32 %5, 8388608
  %.not1071 = icmp eq i32 %991, 0
  br i1 %.not1071, label %996, label %992

992:                                              ; preds = %.critedge1180
  %993 = getelementptr inbounds i8, ptr %.09321318, i64 106
  %994 = load i8, ptr %993, align 2, !tbaa !160, !range !43, !noundef !44
  %995 = trunc nuw i8 %994 to i1
  br i1 %995, label %.thread1240, label %996

996:                                              ; preds = %.critedge1180, %992
  %997 = and i32 %5, 1048576
  %.not1072 = icmp eq i32 %997, 0
  br i1 %.not1072, label %1095, label %.thread1240

.thread1240:                                      ; preds = %992, %989, %987, %983, %996
  %.09911245 = phi i32 [ 1048576, %996 ], [ 8388608, %992 ], [ 524288, %989 ], [ 524288, %987 ], [ 262144, %983 ]
  %.09921244 = phi i32 [ 0, %996 ], [ 0, %992 ], [ 516, %989 ], [ 515, %987 ], [ 512, %983 ]
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %27) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %27)
  store ptr %81, ptr %27, align 8, !tbaa !191
  %998 = getelementptr inbounds i8, ptr %27, i64 8
  store i32 %.09911245, ptr %998, align 8, !tbaa !193
  %999 = getelementptr inbounds i8, ptr %27, i64 12
  store i32 %spec.select1093, ptr %999, align 4, !tbaa !194
  %1000 = getelementptr inbounds i8, ptr %27, i64 16
  store ptr %7, ptr %1000, align 8, !tbaa !195
  br i1 %179, label %1004, label %1001

1001:                                             ; preds = %.thread1240
  %1002 = getelementptr inbounds i8, ptr %.09321318, i64 48
  %1003 = load ptr, ptr %1002, align 8, !tbaa !140
  br label %1004

1004:                                             ; preds = %.thread1240, %1001
  %1005 = phi ptr [ %1003, %1001 ], [ %2, %.thread1240 ]
  %1006 = getelementptr inbounds i8, ptr %.09321318, i64 32
  %1007 = load ptr, ptr %1006, align 8, !tbaa !158
  %1008 = icmp eq ptr %1005, %1007
  br i1 %1008, label %1010, label %1009

1009:                                             ; preds = %1004
  call void @__assert_fail(ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.2, i32 noundef 5076, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1010:                                             ; preds = %1004
  %1011 = getelementptr inbounds i8, ptr %.09321318, i64 72
  %1012 = getelementptr inbounds i8, ptr %.09321318, i64 24
  %1013 = load i32, ptr %1012, align 8, !tbaa !141
  %1014 = add nsw i32 %1013, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1011, i32 noundef %1014)
  %1015 = getelementptr inbounds i8, ptr %.09321318, i64 80
  %1016 = load ptr, ptr %1015, align 8, !tbaa !196
  %1017 = load i32, ptr %1012, align 8, !tbaa !141
  %1018 = add nsw i32 %1017, 1
  %1019 = sext i32 %1018 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1016, ptr align 1 %1005, i64 %1019, i1 false)
  %1020 = getelementptr inbounds i8, ptr %27, i64 28
  store i32 %.09921244, ptr %1020, align 4, !tbaa !197
  %1021 = getelementptr inbounds i8, ptr %27, i64 32
  store ptr %1005, ptr %1021, align 8, !tbaa !198
  %1022 = load i32, ptr %1012, align 8, !tbaa !141
  %1023 = getelementptr inbounds i8, ptr %27, i64 40
  store i32 %1022, ptr %1023, align 8, !tbaa !199
  %1024 = getelementptr inbounds i8, ptr %.09321318, i64 88
  %1025 = load i32, ptr %1024, align 8, !tbaa !161
  %1026 = getelementptr inbounds i8, ptr %27, i64 44
  store i32 %1025, ptr %1026, align 4, !tbaa !200
  %1027 = getelementptr inbounds i8, ptr %27, i64 48
  store i8 0, ptr %1027, align 8, !tbaa !201
  %1028 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %1029 = load ptr, ptr %1028, align 8, !tbaa !136
  %1030 = load i32, ptr %1029, align 4, !tbaa !146
  %1031 = getelementptr inbounds i8, ptr %27, i64 52
  store i32 %1030, ptr %1031, align 4, !tbaa !202
  %1032 = getelementptr inbounds i8, ptr %1029, i64 4
  %1033 = load i32, ptr %1032, align 4, !tbaa !143
  %1034 = getelementptr inbounds i8, ptr %27, i64 56
  store i32 %1033, ptr %1034, align 8, !tbaa !203
  %1035 = getelementptr inbounds i8, ptr %1029, i64 8
  %1036 = load i32, ptr %1035, align 4, !tbaa !145
  %1037 = getelementptr inbounds i8, ptr %27, i64 60
  store i32 %1036, ptr %1037, align 4, !tbaa !204
  %1038 = call noundef i32 %6(ptr noundef nonnull %27)
  br i1 %179, label %1042, label %1039

1039:                                             ; preds = %1010
  %1040 = getelementptr inbounds i8, ptr %.09321318, i64 48
  %1041 = load ptr, ptr %1040, align 8, !tbaa !140
  br label %1042

1042:                                             ; preds = %1010, %1039
  %1043 = phi ptr [ %1041, %1039 ], [ %2, %1010 ]
  %1044 = load ptr, ptr %1021, align 8, !tbaa !198
  %1045 = icmp eq ptr %1044, %1043
  br i1 %1045, label %1047, label %1046

1046:                                             ; preds = %1042
  call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.2, i32 noundef 5095, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1047:                                             ; preds = %1042
  %1048 = load i32, ptr %1026, align 4, !tbaa !200
  %1049 = load i32, ptr %1024, align 8, !tbaa !161
  %1050 = icmp eq i32 %1048, %1049
  br i1 %1050, label %1052, label %1051

1051:                                             ; preds = %1047
  call void @__assert_fail(ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.2, i32 noundef 5096, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1052:                                             ; preds = %1047
  %1053 = load i32, ptr %999, align 4, !tbaa !194
  %1054 = icmp eq i32 %1053, %spec.select1093
  br i1 %1054, label %1056, label %1055

1055:                                             ; preds = %1052
  call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.2, i32 noundef 5097, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1056:                                             ; preds = %1052
  %1057 = load i8, ptr %1027, align 8, !tbaa !201, !range !43, !noundef !44
  %1058 = trunc nuw i8 %1057 to i1
  %1059 = load i32, ptr %1031, align 4, !tbaa !202
  %.not1074 = icmp ne i32 %1059, %1030
  %brmerge1183 = select i1 %.not1074, i1 true, i1 %1058
  br i1 %brmerge1183, label %1060, label %1063

1060:                                             ; preds = %1056
  %1061 = load ptr, ptr %1028, align 8, !tbaa !136
  store i32 %1059, ptr %1061, align 4, !tbaa !146
  %1062 = getelementptr inbounds i8, ptr %.09321318, i64 104
  store i8 1, ptr %1062, align 8, !tbaa !171
  br label %1063

1063:                                             ; preds = %1056, %1060
  %1064 = load i32, ptr %1034, align 8, !tbaa !203
  %.not1075 = icmp ne i32 %1064, %1033
  %brmerge1184 = select i1 %.not1075, i1 true, i1 %1058
  br i1 %brmerge1184, label %1065, label %1072

1065:                                             ; preds = %1063
  %1066 = icmp eq i32 %1064, %1059
  %.pre1291 = load ptr, ptr %1028, align 8, !tbaa !136
  br i1 %1066, label %1067, label %1069

1067:                                             ; preds = %1065
  %1068 = load i32, ptr %.pre1291, align 4, !tbaa !146
  br label %1069

1069:                                             ; preds = %1065, %1067
  %1070 = phi i32 [ %1068, %1067 ], [ %1064, %1065 ]
  %1071 = getelementptr inbounds i8, ptr %.pre1291, i64 4
  store i32 %1070, ptr %1071, align 4, !tbaa !143
  br label %1072

1072:                                             ; preds = %1063, %1069
  %1073 = load i32, ptr %1037, align 4, !tbaa !204
  %.not1076 = icmp ne i32 %1073, %1036
  %brmerge1185 = select i1 %.not1076, i1 true, i1 %1058
  br i1 %brmerge1185, label %1074, label %1082

1074:                                             ; preds = %1072
  %1075 = icmp eq i32 %1073, %1064
  %.pre1292 = load ptr, ptr %1028, align 8, !tbaa !136
  br i1 %1075, label %1076, label %1079

1076:                                             ; preds = %1074
  %1077 = getelementptr inbounds i8, ptr %.pre1292, i64 4
  %1078 = load i32, ptr %1077, align 4, !tbaa !143
  br label %1079

1079:                                             ; preds = %1074, %1076
  %1080 = phi i32 [ %1078, %1076 ], [ %1073, %1074 ]
  %1081 = getelementptr inbounds i8, ptr %.pre1292, i64 8
  store i32 %1080, ptr %1081, align 4, !tbaa !145
  br label %1082

1082:                                             ; preds = %1072, %1079
  br i1 %1058, label %1083, label %1094

1083:                                             ; preds = %1082
  %1084 = load i32, ptr %1023, align 8, !tbaa !199
  %1085 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1044) #15
  %1086 = trunc i64 %1085 to i32
  %1087 = icmp eq i32 %1084, %1086
  br i1 %1087, label %1089, label %1088

1088:                                             ; preds = %1083
  call void @__assert_fail(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.2, i32 noundef 5105, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1089:                                             ; preds = %1083
  %1090 = load ptr, ptr %1015, align 8, !tbaa !196
  %1091 = load i32, ptr %1011, align 8, !tbaa !205
  %1092 = add nsw i32 %1091, -1
  call void @_ZL27InputTextReconcileUndoStateP19ImGuiInputTextStatePKciS2_i(ptr noundef nonnull %.09321318, ptr noundef %1090, i32 noundef %1092, ptr noundef %1044, i32 noundef %1084)
  %1093 = load i32, ptr %1023, align 8, !tbaa !199
  store i32 %1093, ptr %1012, align 8, !tbaa !141
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %.09321318)
  br label %1094

1094:                                             ; preds = %1089, %1082
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #14
  br label %1095

1095:                                             ; preds = %996, %1094, %977
  br i1 %179, label %1103, label %1096

1096:                                             ; preds = %1095
  %1097 = getelementptr inbounds i8, ptr %.09321318, i64 32
  %1098 = load ptr, ptr %1097, align 8, !tbaa !158
  %1099 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1098, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not1077 = icmp eq i32 %1099, 0
  br i1 %.not1077, label %1103, label %1100

1100:                                             ; preds = %1096
  %1101 = getelementptr inbounds i8, ptr %.09321318, i64 24
  %1102 = load i32, ptr %1101, align 8, !tbaa !141
  br label %1103

1103:                                             ; preds = %1095, %1096, %1100, %954
  %.39361350 = phi i8 [ %.3936, %954 ], [ %.39361351, %1095 ], [ %.39361351, %1100 ], [ %.39361351, %1096 ]
  %.19421348 = phi float [ %.1942, %954 ], [ %.19421349, %1095 ], [ %.19421349, %1100 ], [ %.19421349, %1096 ]
  %.19471346 = phi i8 [ %.1947, %954 ], [ %.19471347, %1095 ], [ %.19471347, %1100 ], [ %.19471347, %1096 ]
  %.19521344 = phi i8 [ %.1952, %954 ], [ %.19521345, %1095 ], [ %.19521345, %1100 ], [ %.19521345, %1096 ]
  %.29681342 = phi i1 [ %.2968, %954 ], [ %.29681343, %1095 ], [ %.29681343, %1100 ], [ %.29681343, %1096 ]
  %.2988 = phi i32 [ 0, %954 ], [ %.0986, %1095 ], [ %1102, %1100 ], [ %.0986, %1096 ]
  %.2983 = phi ptr [ null, %954 ], [ %.0981, %1095 ], [ %1098, %1100 ], [ %.0981, %1096 ]
  %.2955 = phi i1 [ false, %954 ], [ %.0953, %1095 ], [ true, %1100 ], [ %.0953, %1096 ]
  %1104 = getelementptr inbounds i8, ptr %81, i64 9664
  %1105 = load i32, ptr %1104, align 8, !tbaa !206
  %1106 = icmp eq i32 %1105, %85
  br i1 %1106, label %1107, label %1120

1107:                                             ; preds = %1103
  %1108 = load i32, ptr %187, align 4, !tbaa !122
  %.not1078 = icmp eq i32 %1108, %85
  br i1 %.not1078, label %1119, label %1109

1109:                                             ; preds = %1107
  %1110 = call noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv()
  %.not1186 = xor i1 %1110, true
  %brmerge1187 = or i1 %179, %.not1186
  br i1 %brmerge1187, label %1119, label %1111

1111:                                             ; preds = %1109
  %1112 = getelementptr inbounds i8, ptr %81, i64 9680
  %1113 = load ptr, ptr %1112, align 8, !tbaa !207
  %1114 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1113, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not1079 = icmp eq i32 %1114, 0
  br i1 %.not1079, label %1119, label %1115

1115:                                             ; preds = %1111
  %1116 = getelementptr inbounds i8, ptr %81, i64 9672
  %1117 = load i32, ptr %1116, align 8, !tbaa !208
  %1118 = add nsw i32 %1117, -1
  br label %1119

1119:                                             ; preds = %1109, %1115, %1111, %1107
  %.3989 = phi i32 [ %1118, %1115 ], [ %.2988, %1111 ], [ %.2988, %1109 ], [ %.2988, %1107 ]
  %.3984 = phi ptr [ %1113, %1115 ], [ %.2983, %1111 ], [ %.2983, %1109 ], [ %.2983, %1107 ]
  %.3956 = phi i1 [ true, %1115 ], [ %.2955, %1111 ], [ %.2955, %1109 ], [ %.2955, %1107 ]
  store i32 0, ptr %1104, align 8, !tbaa !206
  br label %1120

1120:                                             ; preds = %1119, %1103
  %.4990 = phi i32 [ %.3989, %1119 ], [ %.2988, %1103 ]
  %.4985 = phi ptr [ %.3984, %1119 ], [ %.2983, %1103 ]
  %.4957 = phi i1 [ %.3956, %1119 ], [ %.2955, %1103 ]
  %.not1080 = icmp eq ptr %.4985, null
  br i1 %.not1080, label %1146, label %1121

1121:                                             ; preds = %1120
  %1122 = icmp sgt i32 %.4990, -1
  br i1 %1122, label %1124, label %1123

1123:                                             ; preds = %1121
  call void @__assert_fail(ptr noundef nonnull @.str.76, ptr noundef nonnull @.str.2, i32 noundef 5142, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1124:                                             ; preds = %1121
  br i1 %.not1033, label %1142, label %1125

1125:                                             ; preds = %1124
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %28) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %28)
  store ptr %81, ptr %28, align 8, !tbaa !191
  %1126 = getelementptr inbounds i8, ptr %28, i64 8
  store i32 4194304, ptr %1126, align 8, !tbaa !193
  %1127 = getelementptr inbounds i8, ptr %28, i64 12
  store i32 %spec.select1093, ptr %1127, align 4, !tbaa !194
  %1128 = getelementptr inbounds i8, ptr %28, i64 32
  store ptr %2, ptr %1128, align 8, !tbaa !198
  %1129 = getelementptr inbounds i8, ptr %28, i64 40
  store i32 %.4990, ptr %1129, align 8, !tbaa !199
  %1130 = add nuw nsw i32 %.4990, 1
  %1131 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1130)
  %1132 = getelementptr inbounds i8, ptr %28, i64 44
  store i32 %1131, ptr %1132, align 4, !tbaa !200
  %1133 = getelementptr inbounds i8, ptr %28, i64 16
  store ptr %7, ptr %1133, align 8, !tbaa !195
  %1134 = call noundef i32 %6(ptr noundef nonnull %28)
  %1135 = load ptr, ptr %1128, align 8, !tbaa !198
  %1136 = load i32, ptr %1132, align 4, !tbaa !200
  %1137 = load i32, ptr %1129, align 8, !tbaa !199
  %1138 = add nsw i32 %1136, -1
  %1139 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1137, i32 noundef %1138)
  %.not1081 = icmp sgt i32 %1139, %1136
  br i1 %.not1081, label %1140, label %1141

1140:                                             ; preds = %1125
  call void @__assert_fail(ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.2, i32 noundef 5157, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1141:                                             ; preds = %1125
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %28) #14
  br label %1142

1142:                                             ; preds = %1141, %1124
  %.5 = phi i32 [ %1139, %1141 ], [ %.4990, %1124 ]
  %.0924 = phi i32 [ %1136, %1141 ], [ %3, %1124 ]
  %.0922 = phi ptr [ %1135, %1141 ], [ %2, %1124 ]
  %1143 = add nsw i32 %.5, 1
  %1144 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1143, i32 noundef %.0924)
  %1145 = sext i32 %1144 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0922, ptr noundef nonnull %.4985, i64 noundef %1145)
  br label %1146

1146:                                             ; preds = %1142, %1120
  %.1923 = phi ptr [ %.0922, %1142 ], [ %2, %1120 ]
  %1147 = load i32, ptr %187, align 4, !tbaa !122
  %1148 = icmp eq i32 %1147, %85
  br i1 %1148, label %1149, label %1154

1149:                                             ; preds = %1146
  %1150 = trunc nuw i8 %.39361350 to i1
  br i1 %1150, label %1151, label %1152

1151:                                             ; preds = %1149
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1154

1152:                                             ; preds = %1149
  %1153 = getelementptr inbounds i8, ptr %81, i64 11068
  store i32 1, ptr %1153, align 4, !tbaa !209
  br label %1154

1154:                                             ; preds = %1146, %1152, %1151
  br i1 %70, label %1160, label %1155

1155:                                             ; preds = %1154
  call void @_ZN5ImGui15RenderNavCursorERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %85, i32 noundef 0)
  %.sroa.093.0.copyload = load <2 x float>, ptr %11, align 8
  %1156 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.092.0.copyload = load <2 x float>, ptr %1156, align 8
  %1157 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1158 = getelementptr inbounds i8, ptr %81, i64 3464
  %1159 = load float, ptr %1158, align 4, !tbaa !123
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.093.0.copyload, <2 x float> %.sroa.092.0.copyload, i32 noundef %1157, i1 noundef zeroext true, float noundef %1159)
  br label %1160

1160:                                             ; preds = %1155, %1154
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #14
  %1161 = load float, ptr %11, align 8, !tbaa !165
  %1162 = getelementptr inbounds i8, ptr %11, i64 4
  %1163 = load float, ptr %1162, align 4, !tbaa !210
  %1164 = fadd float %.sroa.0524.2, %1161
  %1165 = fadd float %.sroa.11.0.copyload, %1163
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %29, float noundef %1161, float noundef %1163, float noundef %1164, float noundef %1165)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  br i1 %70, label %1166, label %1169

1166:                                             ; preds = %1160
  %1167 = getelementptr inbounds i8, ptr %.2930, i64 336
  %1168 = load i64, ptr %1167, align 8
  br label %1172

1169:                                             ; preds = %1160
  %1170 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %95)
  %1171 = bitcast <2 x float> %1170 to i64
  br label %1172

1172:                                             ; preds = %1169, %1166
  %storemerge = phi i64 [ %1168, %1166 ], [ %1171, %1169 ]
  store i64 %storemerge, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %440, label %1173, label %.thread1247

1173:                                             ; preds = %1172
  %1174 = getelementptr inbounds i8, ptr %.09321318, i64 48
  %1175 = load ptr, ptr %1174, align 8, !tbaa !140
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  store ptr null, ptr %32, align 8, !tbaa !45
  br i1 %.not10491228, label %.thr_comm1249, label %.thread1248

.thread1247:                                      ; preds = %1172
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  store ptr null, ptr %32, align 8, !tbaa !45
  br i1 %.not10491228, label %.thr_comm1249, label %.thread1248

.thr_comm1249:                                    ; preds = %.thread1247, %1173
  %.ph1250 = phi ptr [ %.1923, %.thread1247 ], [ %1175, %1173 ]
  br i1 %441, label %1180, label %.thread1251

.thread1248:                                      ; preds = %1173, %.thread1247
  %1176 = phi ptr [ %.1923, %.thread1247 ], [ %1175, %1173 ]
  %1177 = load i8, ptr %1176, align 1, !tbaa !159
  %1178 = icmp eq i8 %1177, 0
  %1179 = xor i1 %441, %1178
  br i1 %1179, label %1180, label %1186

1180:                                             ; preds = %.thr_comm1249, %.thread1248
  %1181 = phi i1 [ false, %.thr_comm1249 ], [ %1178, %.thread1248 ]
  %1182 = phi ptr [ %.ph1250, %.thr_comm1249 ], [ %1176, %.thread1248 ]
  br i1 %brmerge1107, label %1184, label %1183

1183:                                             ; preds = %1180
  call void @_ZN5ImGui7PopFontEv()
  br label %1184

1184:                                             ; preds = %1180, %1183
  %brmerge1189 = or i1 %.not1032, %1181
  br i1 %brmerge1189, label %1186, label %1185

1185:                                             ; preds = %1184
  call void @_ZN5ImGui16PushPasswordFontEv()
  br label %.thread1251

1186:                                             ; preds = %1184, %.thread1248
  %1187 = phi ptr [ %1182, %1184 ], [ %1176, %.thread1248 ]
  %.0969.in = phi i1 [ %1181, %1184 ], [ %441, %.thread1248 ]
  br i1 %.0969.in, label %1188, label %.thread1251

1188:                                             ; preds = %1186
  %1189 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #15
  %1190 = getelementptr inbounds i8, ptr %1, i64 %1189
  store ptr %1190, ptr %32, align 8, !tbaa !45
  br label %.thread1251

.thread1251:                                      ; preds = %1185, %.thr_comm1249, %1188, %1186
  %1191 = phi ptr [ %1190, %1188 ], [ null, %1186 ], [ null, %1185 ], [ null, %.thr_comm1249 ]
  %.0969.in1253 = phi i1 [ true, %1188 ], [ false, %1186 ], [ false, %1185 ], [ false, %.thr_comm1249 ]
  %.0971 = phi ptr [ %1, %1188 ], [ %1187, %1186 ], [ %1182, %1185 ], [ %.ph1250, %.thr_comm1249 ]
  %1192 = trunc nuw i8 %.19471346 to i1
  br i1 %1192, label %1195, label %1193

1193:                                             ; preds = %.thread1251
  %1194 = trunc nuw i8 %.19521344 to i1
  br i1 %1194, label %1195, label %1459

1195:                                             ; preds = %1193, %.thread1251
  br i1 %409, label %1197, label %1196

1196:                                             ; preds = %1195
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 5211, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1197:                                             ; preds = %1195
  %.phi.trans.insert1295 = getelementptr inbounds i8, ptr %.09321318, i64 24
  %.pre1296 = load i32, ptr %.phi.trans.insert1295, align 8, !tbaa !141
  %.pre1303 = sext i32 %.pre1296 to i64
  br i1 %.0969.in1253, label %._crit_edge1294, label %1198

1198:                                             ; preds = %1197
  %1199 = getelementptr inbounds i8, ptr %.0971, i64 %.pre1303
  store ptr %1199, ptr %32, align 8, !tbaa !45
  br label %._crit_edge1294

._crit_edge1294:                                  ; preds = %1197, %1198
  %1200 = getelementptr inbounds i8, ptr %.0971, i64 %.pre1303
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %33)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %34)
  %1201 = select i1 %1192, i32 -1, i32 -1000
  %1202 = trunc nuw i8 %.19521344 to i1
  %1203 = select i1 %1202, i32 -1, i32 -1000
  br i1 %1192, label %1204, label %1210

1204:                                             ; preds = %._crit_edge1294
  %1205 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %1206 = load ptr, ptr %1205, align 8, !tbaa !136
  %1207 = load i32, ptr %1206, align 4, !tbaa !146
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds i8, ptr %.0971, i64 %1208
  br label %1210

1210:                                             ; preds = %._crit_edge1294, %1204
  %1211 = phi ptr [ %1209, %1204 ], [ null, %._crit_edge1294 ]
  br i1 %1202, label %1212, label %1222

1212:                                             ; preds = %1210
  %1213 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %1214 = load ptr, ptr %1213, align 8, !tbaa !136
  %1215 = getelementptr inbounds i8, ptr %1214, i64 4
  %1216 = load i32, ptr %1215, align 4, !tbaa !143
  %1217 = getelementptr inbounds i8, ptr %1214, i64 8
  %1218 = load i32, ptr %1217, align 4, !tbaa !145
  %1219 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1216, i32 noundef %1218)
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds i8, ptr %.0971, i64 %1220
  br label %1222

1222:                                             ; preds = %1210, %1212
  %1223 = phi ptr [ %1221, %1212 ], [ null, %1210 ]
  br i1 %70, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %1222
  %1224 = ptrtoint ptr %1200 to i64
  %1225 = call noundef ptr @memchr(ptr noundef %.0971, i32 noundef 10, i64 noundef %.pre1303) #15
  %.not10841272 = icmp eq ptr %1225, null
  br i1 %.not10841272, label %.loopexit, label %.lr.ph1276

.lr.ph1276:                                       ; preds = %.preheader, %.lr.ph1276
  %1226 = phi ptr [ %1233, %.lr.ph1276 ], [ %1225, %.preheader ]
  %.09491275 = phi i32 [ %1229, %.lr.ph1276 ], [ 1, %.preheader ]
  %.09581274 = phi i32 [ %.1959, %.lr.ph1276 ], [ %1203, %.preheader ]
  %.09621273 = phi i32 [ %.1963, %.lr.ph1276 ], [ %1201, %.preheader ]
  %1227 = icmp eq i32 %.09621273, -1
  %.not1089 = icmp ult ptr %1226, %1211
  %spec.select1190 = select i1 %.not1089, i32 -1, i32 %.09491275
  %.1963 = select i1 %1227, i32 %spec.select1190, i32 %.09621273
  %1228 = icmp eq i32 %.09581274, -1
  %.not1090 = icmp ult ptr %1226, %1223
  %spec.select1191 = select i1 %.not1090, i32 -1, i32 %.09491275
  %.1959 = select i1 %1228, i32 %spec.select1191, i32 %.09581274
  %1229 = add nuw nsw i32 %.09491275, 1
  %1230 = getelementptr inbounds i8, ptr %1226, i64 1
  %1231 = ptrtoint ptr %1230 to i64
  %1232 = sub i64 %1224, %1231
  %1233 = call noundef ptr @memchr(ptr noundef nonnull %1230, i32 noundef 10, i64 noundef %1232) #15
  %.not1084 = icmp eq ptr %1233, null
  br i1 %.not1084, label %.loopexit, label %.lr.ph1276, !llvm.loop !211

.loopexit:                                        ; preds = %.lr.ph1276, %.preheader, %1222
  %.2964 = phi i32 [ %1201, %1222 ], [ %1201, %.preheader ], [ %.1963, %.lr.ph1276 ]
  %.2960 = phi i32 [ %1203, %1222 ], [ %1203, %.preheader ], [ %.1959, %.lr.ph1276 ]
  %.1950 = phi i32 [ 1, %1222 ], [ 1, %.preheader ], [ %1229, %.lr.ph1276 ]
  %1234 = icmp eq i32 %.2964, -1
  %spec.select1192 = select i1 %1234, i32 %.1950, i32 %.2964
  %1235 = icmp eq i32 %.2960, -1
  %.3961 = select i1 %1235, i32 %.1950, i32 %.2960
  %1236 = call noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef %1211, ptr noundef %.0971)
  %1237 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef %81, ptr noundef %1236, ptr noundef %1211, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1237, i64 0
  store float %.sroa.044.0.vec.extract, ptr %33, align 4, !tbaa !149
  %1238 = sitofp i32 %spec.select1192 to float
  %1239 = getelementptr inbounds i8, ptr %81, i64 4616
  %1240 = load float, ptr %1239, align 8, !tbaa !46
  %1241 = fmul float %1240, %1238
  %1242 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1241, ptr %1242, align 4, !tbaa !212
  %1243 = icmp sgt i32 %.3961, -1
  br i1 %1243, label %1244, label %1251

1244:                                             ; preds = %.loopexit
  %1245 = call noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef %1223, ptr noundef %.0971)
  %1246 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef nonnull %81, ptr noundef %1245, ptr noundef %1223, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.043.0.vec.extract = extractelement <2 x float> %1246, i64 0
  store float %.sroa.043.0.vec.extract, ptr %34, align 4, !tbaa !149
  %1247 = uitofp nneg i32 %.3961 to float
  %1248 = load float, ptr %1239, align 8, !tbaa !46
  %1249 = fmul float %1248, %1247
  %1250 = getelementptr inbounds i8, ptr %34, i64 4
  store float %1249, ptr %1250, align 4, !tbaa !212
  br label %1251

1251:                                             ; preds = %1244, %.loopexit
  %1252 = phi float [ %1248, %1244 ], [ %1240, %.loopexit ]
  br i1 %70, label %1253, label %1257

1253:                                             ; preds = %1251
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %1254 = uitofp nneg i32 %.1950 to float
  %1255 = fmul float %1252, %1254
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %.sroa.0524.2, float noundef %1255)
  %1256 = load i64, ptr %35, align 8
  store i64 %1256, ptr %31, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  br label %1257

1257:                                             ; preds = %1253, %1251
  br i1 %1192, label %1258, label %1318

1258:                                             ; preds = %1257
  %1259 = getelementptr inbounds i8, ptr %.09321318, i64 104
  %1260 = load i8, ptr %1259, align 8, !tbaa !171, !range !43, !noundef !44
  %1261 = trunc nuw i8 %1260 to i1
  br i1 %1261, label %1262, label %1318

1262:                                             ; preds = %1258
  %1263 = and i32 %5, 32768
  %.not1085 = icmp eq i32 %1263, 0
  br i1 %.not1085, label %1264, label %1284

1264:                                             ; preds = %1262
  %1265 = fmul float %.sroa.0524.2, 2.500000e-01
  %1266 = load float, ptr %33, align 4, !tbaa !149
  %1267 = getelementptr inbounds i8, ptr %.09321318, i64 92
  %1268 = load float, ptr %1267, align 4, !tbaa !151
  %1269 = fcmp olt float %1266, %1268
  br i1 %1269, label %1270, label %1275

1270:                                             ; preds = %1264
  %1271 = fsub float %1266, %1265
  %1272 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1271)
  %1273 = fptosi float %1272 to i32
  %1274 = sitofp i32 %1273 to float
  store float %1274, ptr %1267, align 4, !tbaa !151
  br label %1286

1275:                                             ; preds = %1264
  %1276 = load float, ptr %95, align 4, !tbaa !150
  %1277 = fsub float %.sroa.0524.2, %1276
  %1278 = fsub float %1266, %1277
  %1279 = fcmp ult float %1278, %1268
  br i1 %1279, label %1286, label %1280

1280:                                             ; preds = %1275
  %1281 = fadd float %1265, %1278
  %1282 = fptosi float %1281 to i32
  %1283 = sitofp i32 %1282 to float
  store float %1283, ptr %1267, align 4, !tbaa !151
  br label %1286

1284:                                             ; preds = %1262
  %1285 = getelementptr inbounds i8, ptr %.09321318, i64 96
  store float 0.000000e+00, ptr %1285, align 4, !tbaa !157
  br label %1286

1286:                                             ; preds = %1270, %1280, %1275, %1284
  br i1 %70, label %1287, label %1317

1287:                                             ; preds = %1286
  %1288 = load float, ptr %1242, align 4, !tbaa !212
  %1289 = load float, ptr %1239, align 8, !tbaa !46
  %1290 = fsub float %1288, %1289
  %1291 = fcmp olt float %1290, %.19421348
  br i1 %1291, label %1292, label %1294

1292:                                             ; preds = %1287
  %1293 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1290)
  %.pre1297 = load float, ptr %96, align 4, !tbaa !115
  br label %1303

1294:                                             ; preds = %1287
  %1295 = load float, ptr %96, align 4, !tbaa !115
  %1296 = fneg float %1295
  %1297 = call float @llvm.fmuladd.f32(float %1296, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1298 = fsub float %1288, %1297
  %1299 = fcmp ult float %1298, %.19421348
  br i1 %1299, label %1303, label %1300

1300:                                             ; preds = %1294
  %1301 = fsub float %1288, %.sroa.11.0.copyload
  %1302 = call float @llvm.fmuladd.f32(float %1295, float 2.000000e+00, float %1301)
  br label %1303

1303:                                             ; preds = %1294, %1300, %1292
  %1304 = phi float [ %.pre1297, %1292 ], [ %1295, %1300 ], [ %1295, %1294 ]
  %.2943 = phi float [ %1293, %1292 ], [ %1302, %1300 ], [ %.19421348, %1294 ]
  %1305 = getelementptr inbounds i8, ptr %31, i64 4
  %1306 = load float, ptr %1305, align 4, !tbaa !212
  %1307 = call float @llvm.fmuladd.f32(float %1304, float 2.000000e+00, float %1306)
  %1308 = fsub float %1307, %.sroa.11.0.copyload
  %1309 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1308, float noundef 0.000000e+00)
  %1310 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2943, float noundef 0.000000e+00, float noundef %1309)
  %1311 = getelementptr inbounds i8, ptr %.2930, i64 208
  %1312 = load float, ptr %1311, align 4, !tbaa !134
  %1313 = fsub float %1312, %1310
  %1314 = getelementptr inbounds i8, ptr %30, i64 4
  %1315 = load float, ptr %1314, align 4, !tbaa !212
  %1316 = fadd float %1315, %1313
  store float %1316, ptr %1314, align 4, !tbaa !212
  store float %1310, ptr %1311, align 4, !tbaa !134
  br label %1317

1317:                                             ; preds = %1303, %1286
  store i8 0, ptr %1259, align 8, !tbaa !171
  br label %1318

1318:                                             ; preds = %1317, %1258, %1257
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #14
  %1319 = getelementptr inbounds i8, ptr %.09321318, i64 92
  %1320 = load float, ptr %1319, align 4, !tbaa !151
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef %1320, float noundef 0.000000e+00)
  br i1 %1202, label %1321, label %1397

1321:                                             ; preds = %1318
  %1322 = getelementptr inbounds i8, ptr %.09321318, i64 8
  %1323 = load ptr, ptr %1322, align 8, !tbaa !136
  %1324 = getelementptr inbounds i8, ptr %1323, i64 4
  %1325 = load i32, ptr %1324, align 4, !tbaa !143
  %1326 = getelementptr inbounds i8, ptr %1323, i64 8
  %1327 = load i32, ptr %1326, align 4, !tbaa !145
  %1328 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1325, i32 noundef %1327)
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds i8, ptr %.0971, i64 %1329
  %1331 = load ptr, ptr %1322, align 8, !tbaa !136
  %1332 = getelementptr inbounds i8, ptr %1331, i64 4
  %1333 = load i32, ptr %1332, align 4, !tbaa !143
  %1334 = getelementptr inbounds i8, ptr %1331, i64 8
  %1335 = load i32, ptr %1334, align 4, !tbaa !145
  %1336 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1333, i32 noundef %1335)
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds i8, ptr %.0971, i64 %1337
  %1339 = select i1 %1192, float 1.000000e+00, float 0x3FE3333340000000
  %1340 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 52, float noundef %1339)
  %1341 = select i1 %70, float 0.000000e+00, float -1.000000e+00
  %1342 = select i1 %70, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #14
  %1343 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %34)
  store <2 x float> %1343, ptr %38, align 8
  %1344 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef nonnull align 4 dereferenceable(8) %36)
  store <2 x float> %1344, ptr %37, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #14
  store ptr %1330, ptr %39, align 8, !tbaa !45
  %1345 = getelementptr inbounds i8, ptr %37, i64 4
  %1346 = icmp slt i32 %1328, %1336
  br i1 %1346, label %.lr.ph1280, label %._crit_edge1281

.lr.ph1280:                                       ; preds = %1321
  %1347 = extractelement <2 x float> %1344, i64 1
  %1348 = getelementptr inbounds i8, ptr %29, i64 12
  %1349 = getelementptr inbounds i8, ptr %29, i64 4
  %1350 = getelementptr inbounds i8, ptr %81, i64 4608
  %1351 = getelementptr inbounds i8, ptr %.2930, i64 792
  %1352 = getelementptr inbounds i8, ptr %40, i64 8
  %1353 = ptrtoint ptr %1338 to i64
  %.pre1298 = load float, ptr %1239, align 8, !tbaa !46
  br label %1354

1354:                                             ; preds = %.lr.ph1280, %1391
  %1355 = phi float [ %1347, %.lr.ph1280 ], [ %1395, %1391 ]
  %1356 = phi float [ %.pre1298, %.lr.ph1280 ], [ %1394, %1391 ]
  %1357 = phi ptr [ %1330, %.lr.ph1280 ], [ %1392, %1391 ]
  %1358 = load float, ptr %1348, align 4, !tbaa !213
  %1359 = fadd float %1358, %1356
  %1360 = fcmp ogt float %1355, %1359
  br i1 %1360, label %._crit_edge1281, label %1361

1361:                                             ; preds = %1354
  %1362 = load float, ptr %1349, align 4, !tbaa !214
  %1363 = fcmp olt float %1355, %1362
  br i1 %1363, label %1364, label %1370

1364:                                             ; preds = %1361
  %1365 = ptrtoint ptr %1357 to i64
  %1366 = sub i64 %1353, %1365
  %1367 = call noundef ptr @memchr(ptr noundef %1357, i32 noundef 10, i64 noundef %1366) #15
  %.not1086 = icmp eq ptr %1367, null
  %1368 = getelementptr inbounds i8, ptr %1367, i64 1
  %1369 = select i1 %.not1086, ptr %1338, ptr %1368
  store ptr %1369, ptr %39, align 8, !tbaa !45
  br label %1391

1370:                                             ; preds = %1361
  %1371 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef nonnull %81, ptr noundef %1357, ptr noundef nonnull %1338, ptr noundef nonnull %39, ptr noundef null, i1 noundef zeroext true)
  %.sroa.027.0.vec.extract = extractelement <2 x float> %1371, i64 0
  %1372 = fcmp ugt float %.sroa.027.0.vec.extract, 0.000000e+00
  br i1 %1372, label %1379, label %1373

1373:                                             ; preds = %1370
  %1374 = load ptr, ptr %1350, align 8, !tbaa !215
  %1375 = call noundef float @_ZN6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114) %1374, i16 noundef zeroext 32)
  %1376 = fmul float %1375, 5.000000e-01
  %1377 = fptosi float %1376 to i32
  %1378 = sitofp i32 %1377 to float
  br label %1379

1379:                                             ; preds = %1373, %1370
  %.sroa.027.0.vec.extract30.pre-phi = phi float [ %1378, %1373 ], [ %.sroa.027.0.vec.extract, %1370 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #14
  %1380 = load float, ptr %1239, align 8, !tbaa !46
  %1381 = fsub float %1341, %1380
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %42, float noundef 0.000000e+00, float noundef %1381)
  %1382 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %42)
  store <2 x float> %1382, ptr %41, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef %.sroa.027.0.vec.extract30.pre-phi, float noundef %1342)
  %1383 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %44)
  store <2 x float> %1383, ptr %43, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %40, ptr noundef nonnull align 4 dereferenceable(8) %41, ptr noundef nonnull align 4 dereferenceable(8) %43)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %45, ptr noundef nonnull align 4 dereferenceable(16) %29)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %40, ptr noundef nonnull align 4 dereferenceable(16) %45)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %46, ptr noundef nonnull align 4 dereferenceable(16) %29)
  %1384 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %40, ptr noundef nonnull align 4 dereferenceable(16) %46)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #14
  br i1 %1384, label %1385, label %1387

1385:                                             ; preds = %1379
  %1386 = load ptr, ptr %1351, align 8, !tbaa !216
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(216) %1386, ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(8) %1352, i32 noundef %1340, float noundef 0.000000e+00, i32 noundef 0)
  br label %1387

1387:                                             ; preds = %1385, %1379
  %1388 = load float, ptr %30, align 8, !tbaa !149
  %1389 = load float, ptr %36, align 4, !tbaa !149
  %1390 = fsub float %1388, %1389
  store float %1390, ptr %37, align 8, !tbaa !149
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #14
  %.pre1299 = load float, ptr %1239, align 8, !tbaa !46
  %.pre1300 = load float, ptr %1345, align 4, !tbaa !212
  %.pre1301 = load ptr, ptr %39, align 8, !tbaa !45
  br label %1391

1391:                                             ; preds = %1387, %1364
  %1392 = phi ptr [ %.pre1301, %1387 ], [ %1369, %1364 ]
  %1393 = phi float [ %.pre1300, %1387 ], [ %1355, %1364 ]
  %1394 = phi float [ %.pre1299, %1387 ], [ %1356, %1364 ]
  %1395 = fadd float %1394, %1393
  store float %1395, ptr %1345, align 4, !tbaa !212
  %1396 = icmp ult ptr %1392, %1338
  br i1 %1396, label %1354, label %._crit_edge1281, !llvm.loop !217

._crit_edge1281:                                  ; preds = %1391, %1354, %1321
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #14
  br label %1397

1397:                                             ; preds = %._crit_edge1281, %1318
  %.pre1302 = load ptr, ptr %32, align 8, !tbaa !45
  br i1 %70, label %1403, label %1398

1398:                                             ; preds = %1397
  %1399 = ptrtoint ptr %.pre1302 to i64
  %1400 = ptrtoint ptr %.0971 to i64
  %1401 = sub i64 %1399, %1400
  %1402 = icmp slt i64 %1401, 2097152
  br i1 %1402, label %1403, label %1412

1403:                                             ; preds = %1398, %1397
  %. = phi ptr [ %29, %1398 ], [ null, %1397 ]
  %1404 = zext i1 %.0969.in1253 to i32
  %1405 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1404, float noundef 1.000000e+00)
  %1406 = getelementptr inbounds i8, ptr %.2930, i64 792
  %1407 = load ptr, ptr %1406, align 8, !tbaa !216
  %1408 = getelementptr inbounds i8, ptr %81, i64 4608
  %1409 = load ptr, ptr %1408, align 8, !tbaa !215
  %1410 = load float, ptr %1239, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  %1411 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %36)
  store <2 x float> %1411, ptr %47, align 8
  call void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216) %1407, ptr noundef %1409, float noundef %1410, ptr noundef nonnull align 4 dereferenceable(8) %47, i32 noundef %1405, ptr noundef %.0971, ptr noundef %.pre1302, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #14
  br label %1412

1412:                                             ; preds = %1403, %1398
  br i1 %1192, label %1413, label %1458

1413:                                             ; preds = %1412
  %1414 = getelementptr inbounds i8, ptr %81, i64 24
  %1415 = load float, ptr %1414, align 8, !tbaa !218
  %1416 = getelementptr inbounds i8, ptr %.09321318, i64 100
  %1417 = load float, ptr %1416, align 4, !tbaa !219
  %1418 = fadd float %1415, %1417
  store float %1418, ptr %1416, align 4, !tbaa !219
  %1419 = getelementptr inbounds i8, ptr %81, i64 106
  %1420 = load i8, ptr %1419, align 2, !tbaa !220, !range !43, !noundef !44
  %1421 = trunc nuw i8 %1420 to i1
  %1422 = fcmp ugt float %1418, 0.000000e+00
  %or.cond1193 = select i1 %1421, i1 %1422, i1 false
  br i1 %or.cond1193, label %1423, label %1426

1423:                                             ; preds = %1413
  %1424 = call float @fmodf(float noundef %1418, float noundef 0x3FF3333340000000) #14
  %1425 = fcmp ole float %1424, 0x3FE99999A0000000
  br label %1426

1426:                                             ; preds = %1423, %1413
  %1427 = phi i1 [ true, %1413 ], [ %1425, %1423 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #14
  %1428 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1428, ptr %49, align 8
  %1429 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %36)
  store <2 x float> %1429, ptr %48, align 8
  %1430 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %48)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #14
  %.sroa.016.0.vec.extract = extractelement <2 x float> %1430, i64 0
  %.sroa.016.4.vec.extract = extractelement <2 x float> %1430, i64 1
  %1431 = load float, ptr %1239, align 8, !tbaa !46
  %1432 = fsub float %.sroa.016.4.vec.extract, %1431
  %1433 = fadd float %1432, 5.000000e-01
  %1434 = fadd float %.sroa.016.0.vec.extract, 1.000000e+00
  %1435 = fadd float %.sroa.016.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %50, float noundef %.sroa.016.0.vec.extract, float noundef %1433, float noundef %1434, float noundef %1435)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #14
  br i1 %1427, label %1436, label %.critedge12

1436:                                             ; preds = %1426
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %51, ptr noundef nonnull align 4 dereferenceable(16) %29)
  %1437 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(16) %51)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #14
  br i1 %1437, label %1438, label %1443

1438:                                             ; preds = %1436
  %1439 = getelementptr inbounds i8, ptr %.2930, i64 792
  %1440 = load ptr, ptr %1439, align 8, !tbaa !216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #14
  %1441 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %50)
  store <2 x float> %1441, ptr %52, align 8
  %1442 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(216) %1440, ptr noundef nonnull align 4 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(8) %52, i32 noundef %1442, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #14
  br label %1443

.critedge12:                                      ; preds = %1426
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #14
  br label %1443

1443:                                             ; preds = %.critedge12, %1438, %1436
  br i1 %179, label %1457, label %1444

1444:                                             ; preds = %1443
  %1445 = getelementptr inbounds i8, ptr %81, i64 10112
  store i8 1, ptr %1445, align 8, !tbaa !221
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #14
  %1446 = fadd float %.sroa.016.0.vec.extract, -1.000000e+00
  %1447 = load float, ptr %1239, align 8, !tbaa !46
  %1448 = fsub float %.sroa.016.4.vec.extract, %1447
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %1446, float noundef %1448)
  %1449 = getelementptr inbounds i8, ptr %81, i64 10116
  %1450 = load i64, ptr %53, align 8
  store i64 %1450, ptr %1449, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #14
  %1451 = load float, ptr %1239, align 8, !tbaa !46
  %1452 = getelementptr inbounds i8, ptr %81, i64 10124
  store float %1451, ptr %1452, align 4, !tbaa !222
  %1453 = getelementptr inbounds i8, ptr %59, i64 64
  %1454 = load ptr, ptr %1453, align 8, !tbaa !223
  %1455 = load i32, ptr %1454, align 8, !tbaa !224
  %1456 = getelementptr inbounds i8, ptr %81, i64 10144
  store i32 %1455, ptr %1456, align 8, !tbaa !226
  br label %1457

1457:                                             ; preds = %1444, %1443
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #14
  br label %1458

1458:                                             ; preds = %1457, %1412
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  br label %1506

1459:                                             ; preds = %1193
  br i1 %70, label %.critedge1195, label %1460

1460:                                             ; preds = %1459
  br i1 %.0969.in1253, label %1478, label %1461

1461:                                             ; preds = %1460
  %1462 = load i32, ptr %187, align 4, !tbaa !122
  %1463 = icmp eq i32 %1462, %85
  br i1 %1463, label %1464, label %1469

1464:                                             ; preds = %1461
  %1465 = getelementptr inbounds i8, ptr %.09321318, i64 24
  %1466 = load i32, ptr %1465, align 8, !tbaa !141
  %1467 = sext i32 %1466 to i64
  %1468 = getelementptr inbounds i8, ptr %.0971, i64 %1467
  store ptr %1468, ptr %32, align 8, !tbaa !45
  br label %1478

1469:                                             ; preds = %1461
  %1470 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0971) #15
  %1471 = getelementptr inbounds i8, ptr %.0971, i64 %1470
  store ptr %1471, ptr %32, align 8, !tbaa !45
  br label %1478

.critedge1195:                                    ; preds = %1459
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #14
  %1472 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0971, ptr noundef nonnull %32)
  %1473 = sitofp i32 %1472 to float
  %1474 = getelementptr inbounds i8, ptr %81, i64 4616
  %1475 = load float, ptr %1474, align 8, !tbaa !46
  %1476 = fmul float %1475, %1473
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %.sroa.0524.2, float noundef %1476)
  %1477 = load i64, ptr %54, align 8
  store i64 %1477, ptr %31, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #14
  br label %1484

1478:                                             ; preds = %1460, %1464, %1469
  %1479 = phi ptr [ %1191, %1460 ], [ %1468, %1464 ], [ %1471, %1469 ]
  %1480 = ptrtoint ptr %1479 to i64
  %1481 = ptrtoint ptr %.0971 to i64
  %1482 = sub i64 %1480, %1481
  %1483 = icmp slt i64 %1482, 2097152
  br i1 %1483, label %1484, label %1506

1484:                                             ; preds = %.critedge1195, %1478
  %1485 = and i32 %5, 131072
  %.not1083 = icmp eq i32 %1485, 0
  br i1 %.not1083, label %1495, label %1486

1486:                                             ; preds = %1484
  %1487 = load float, ptr %30, align 8, !tbaa !149
  %1488 = getelementptr inbounds i8, ptr %11, i64 8
  %1489 = load float, ptr %1488, align 8, !tbaa !227
  %1490 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %.0971, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1490, i64 0
  %1491 = fsub float %1489, %.sroa.0.0.vec.extract
  %1492 = load float, ptr %95, align 4, !tbaa !150
  %1493 = fsub float %1491, %1492
  %1494 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1487, float noundef %1493)
  store float %1494, ptr %30, align 8, !tbaa !149
  br label %1495

1495:                                             ; preds = %1486, %1484
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1496 = zext i1 %.0969.in1253 to i32
  %1497 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1496, float noundef 1.000000e+00)
  %1498 = getelementptr inbounds i8, ptr %.2930, i64 792
  %1499 = load ptr, ptr %1498, align 8, !tbaa !216
  %1500 = getelementptr inbounds i8, ptr %81, i64 4608
  %1501 = load ptr, ptr %1500, align 8, !tbaa !215
  %1502 = getelementptr inbounds i8, ptr %81, i64 4616
  %1503 = load float, ptr %1502, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #14
  %1504 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %55)
  store <2 x float> %1504, ptr %56, align 8
  %1505 = load ptr, ptr %32, align 8, !tbaa !45
  %.13 = select i1 %70, ptr null, ptr %29
  call void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216) %1499, ptr noundef %1501, float noundef %1503, ptr noundef nonnull align 4 dereferenceable(8) %56, i32 noundef %1497, ptr noundef %.0971, ptr noundef %1505, float noundef 0.000000e+00, ptr noundef %.13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #14
  br label %1506

1506:                                             ; preds = %1478, %1495, %1458
  %brmerge1196 = or i1 %.not1032, %.0969.in1253
  br i1 %brmerge1196, label %1508, label %1507

1507:                                             ; preds = %1506
  call void @_ZN5ImGui7PopFontEv()
  br label %1508

1508:                                             ; preds = %1506, %1507
  br i1 %70, label %1509, label %1531

1509:                                             ; preds = %1508
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #14
  %1510 = load float, ptr %31, align 8, !tbaa !149
  %1511 = getelementptr inbounds i8, ptr %31, i64 4
  %1512 = load float, ptr %1511, align 4, !tbaa !212
  %1513 = load float, ptr %96, align 4, !tbaa !115
  %1514 = fadd float %1512, %1513
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %57, float noundef %1510, float noundef %1514)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %57)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #14
  %1515 = getelementptr inbounds i8, ptr %81, i64 7828
  %1516 = load i32, ptr %1515, align 4, !tbaa !228
  %1517 = or i32 %1516, 1048577
  store i32 %1517, ptr %1515, align 4, !tbaa !228
  call void @_ZN5ImGui8EndChildEv()
  %1518 = getelementptr inbounds i8, ptr %81, i64 7888
  %1519 = load i32, ptr %1518, align 8, !tbaa !229
  %1520 = and i32 %1519, 128
  %1521 = getelementptr inbounds i8, ptr %15, i64 8
  %1522 = load i32, ptr %1521, align 4, !tbaa !230
  %1523 = or i32 %1522, %1520
  store i32 %1523, ptr %1521, align 4, !tbaa !230
  call void @_ZN5ImGui8EndGroupEv()
  %1524 = load i32, ptr %165, align 8, !tbaa !231
  %1525 = icmp eq i32 %1524, 0
  br i1 %1525, label %1528, label %1526

1526:                                             ; preds = %1509
  %1527 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %.2930, i32 noundef 1)
  %.not1087 = icmp eq i32 %1524, %1527
  br i1 %.not1087, label %1531, label %1528

1528:                                             ; preds = %1526, %1509
  store i32 %85, ptr %165, align 8, !tbaa !231
  %1529 = getelementptr inbounds i8, ptr %15, i64 4
  %1530 = load <2 x i32>, ptr %1529, align 4, !tbaa !119
  store <2 x i32> %1530, ptr %166, align 4, !tbaa !119
  br label %1531

1531:                                             ; preds = %1526, %1528, %1508
  br i1 %409, label %1532, label %1534

1532:                                             ; preds = %1531
  %1533 = getelementptr inbounds i8, ptr %.09321318, i64 32
  store ptr null, ptr %1533, align 8, !tbaa !158
  br label %1534

1534:                                             ; preds = %1532, %1531
  %1535 = getelementptr inbounds i8, ptr %81, i64 10416
  %1536 = load i8, ptr %1535, align 8, !tbaa !232, !range !43, !noundef !44
  %1537 = trunc nuw i8 %1536 to i1
  %or.cond1199 = and i1 %brmerge1196, %1537
  br i1 %or.cond1199, label %1538, label %1540

1538:                                             ; preds = %1534
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1539 = load ptr, ptr %32, align 8, !tbaa !45
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %30, ptr noundef %.0971, ptr noundef %1539)
  br label %1540

1540:                                             ; preds = %1538, %1534
  br i1 %101, label %1541, label %1551

1541:                                             ; preds = %1540
  %1542 = getelementptr inbounds i8, ptr %11, i64 8
  %1543 = load float, ptr %1542, align 8, !tbaa !227
  %1544 = getelementptr inbounds i8, ptr %81, i64 3480
  %1545 = load float, ptr %1544, align 4, !tbaa !116
  %1546 = fadd float %1543, %1545
  %1547 = load float, ptr %1162, align 4, !tbaa !210
  %1548 = load float, ptr %96, align 4, !tbaa !115
  %1549 = fadd float %1547, %1548
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %58, float noundef %1546, float noundef %1549)
  %1550 = load <2 x float>, ptr %58, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1550, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1551

1551:                                             ; preds = %1541, %1540
  br i1 %.4957, label %1552, label %1553

1552:                                             ; preds = %1551
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %85)
  br label %1553

1553:                                             ; preds = %1552, %1551
  %1554 = and i32 %5, 64
  %.not1088 = icmp eq i32 %1554, 0
  %..2968 = select i1 %.not1088, i1 %.4957, i1 %.29681342
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #14
  br label %.thread

.thread:                                          ; preds = %143, %118, %162, %1553
  %.3 = phi i1 [ %..2968, %1553 ], [ false, %162 ], [ false, %118 ], [ false, %143 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %1555

1555:                                             ; preds = %8, %.thread
  %.4 = phi i1 [ %.3, %.thread ], [ false, %8 ]
  ret i1 %.4
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8ImVectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN8ImVectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116), i32 noundef) local_unnamed_addr #10 align 2

declare noundef ptr @_Z16ImTextCharToUtf8Pcj(ptr noundef, i32 noundef) local_unnamed_addr #4

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui16PushPasswordFontEv() local_unnamed_addr #10

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef) local_unnamed_addr #10

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

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

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

declare void @_ZN5ImGui8EndChildEv() local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL27InputTextReconcileUndoStateP19ImGuiInputTextStatePKciS2_i(ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #10

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef, i32 noundef) local_unnamed_addr #3

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

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

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

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

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

declare noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #10

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

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

declare noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef, i1 noundef zeroext) local_unnamed_addr #4

declare void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef, float noundef) local_unnamed_addr #4

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #4

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

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #4

declare noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #10

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #10

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

declare noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv() local_unnamed_addr #4

declare void @_ZN5ImGui7PopFontEv() local_unnamed_addr #4

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

declare noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114), i16 noundef zeroext) local_unnamed_addr #10 align 2

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

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

declare void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) local_unnamed_addr #4

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

declare void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr) local_unnamed_addr

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 262}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !11, i64 32, !7, i64 64, !10, i64 72, !13, i64 76, !10, i64 84, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !14, i64 144, !14, i64 148, !14, i64 152, !14, i64 156, !14, i64 160, !14, i64 164, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !13, i64 204, !13, i64 212, !13, i64 220, !13, i64 228, !13, i64 236, !13, i64 244, !12, i64 252, !12, i64 253, !12, i64 254, !8, i64 255, !12, i64 256, !12, i64 257, !12, i64 258, !12, i64 259, !12, i64 260, !12, i64 261, !12, i64 262, !12, i64 263, !12, i64 264, !12, i64 265, !12, i64 266, !12, i64 267, !12, i64 268, !8, i64 269, !8, i64 270, !15, i64 272, !15, i64 274, !15, i64 276, !15, i64 278, !15, i64 280, !8, i64 282, !8, i64 283, !12, i64 284, !16, i64 288, !8, i64 292, !8, i64 293, !8, i64 294, !8, i64 295, !10, i64 296, !10, i64 297, !10, i64 298, !10, i64 299, !13, i64 300, !13, i64 308, !17, i64 320, !18, i64 336, !23, i64 600, !23, i64 616, !23, i64 632, !23, i64 648, !23, i64 664, !23, i64 680, !23, i64 696, !25, i64 712, !25, i64 716, !10, i64 720, !10, i64 724, !14, i64 728, !14, i64 732, !26, i64 736, !28, i64 752, !14, i64 768, !14, i64 772, !14, i64 776, !14, i64 780, !10, i64 784, !7, i64 792, !29, i64 800, !7, i64 1016, !7, i64 1024, !7, i64 1032, !7, i64 1040, !7, i64 1048, !7, i64 1056, !7, i64 1064, !7, i64 1072, !7, i64 1080, !8, i64 1088, !8, i64 1096, !8, i64 1128, !10, i64 1144, !10, i64 1148, !10, i64 1152, !12, i64 1156, !12, i64 1157, !12, i64 1157, !12, i64 1157, !12, i64 1157, !15, i64 1158, !42, i64 1160, !7, i64 1192, !7, i64 1200, !10, i64 1208}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS16ImGuiWindowClass", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !12, i64 28, !12, i64 29}
!12 = !{!"bool", !8, i64 0}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !8, i64 0}
!15 = !{!"short", !8, i64 0}
!16 = !{!"_ZTS8ImGuiDir", !8, i64 0}
!17 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, 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, !12, i64 64, !12, i64 65, !19, i64 68, !19, i64 72, !19, i64 76, !13, i64 80, !20, i64 88, !15, i64 92, !15, i64 94, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !13, i64 100, !21, i64 108, !10, i64 136, !10, i64 140, !22, i64 144, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !23, i64 204, !14, i64 220, !14, i64 224, !24, i64 232, !24, i64 248}
!19 = !{!"_ZTS6ImVec1", !14, i64 0}
!20 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!21 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !15, i64 8, !15, i64 10, !15, i64 12, !15, i64 14, !15, i64 16, !8, i64 18}
!22 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!23 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!24 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!25 = !{!"_ZTS8ImVec2ih", !15, i64 0, !15, i64 2}
!26 = !{!"_ZTS12ImGuiStorage", !27, i64 0}
!27 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !10, i64 0, !10, i64 4, !7, i64 8}
!28 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS10ImDrawList", !30, i64 0, !31, i64 16, !32, i64 32, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 64, !7, i64 72, !33, i64 80, !34, i64 96, !37, i64 128, !39, i64 152, !40, i64 168, !41, i64 184, !14, i64 200, !7, i64 208}
!30 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorI10ImDrawVertE", !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, !36, i64 16, !10, i64 24}
!35 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!36 = !{!"long long", !8, i64 0}
!37 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !38, i64 8}
!38 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!39 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!40 = !{!"_ZTS8ImVectorIyE", !10, i64 0, !10, i64 4, !7, i64 8}
!41 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!42 = !{!"_ZTS20ImGuiWindowDockStyle", !8, i64 0}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!7, !7, i64 0}
!46 = !{!47, !14, i64 4616}
!47 = !{!"_ZTS12ImGuiContext", !12, i64 0, !12, i64 1, !48, i64 8, !50, i64 3096, !53, i64 3392, !10, i64 4596, !10, i64 4600, !7, i64 4608, !14, i64 4616, !14, i64 4620, !14, i64 4624, !14, i64 4628, !54, i64 4632, !55, i64 5168, !10, i64 5176, !10, i64 5180, !10, i64 5184, !10, i64 5188, !10, i64 5192, !12, i64 5196, !12, i64 5197, !12, i64 5198, !12, i64 5199, !7, i64 5200, !8, i64 5208, !56, i64 5224, !56, i64 5240, !49, i64 5256, !10, i64 5260, !22, i64 5264, !22, i64 5280, !22, i64 5296, !57, i64 5312, !26, i64 5328, !10, i64 5344, !14, i64 5348, !10, i64 5352, !7, i64 5360, !7, i64 5368, !7, i64 5376, !7, i64 5384, !7, i64 5392, !7, i64 5400, !13, i64 5408, !10, i64 5416, !10, i64 5420, !14, i64 5424, !13, i64 5428, !13, i64 5436, !10, i64 5444, !10, i64 5448, !10, i64 5452, !10, i64 5456, !10, i64 5460, !14, i64 5464, !14, i64 5468, !12, i64 5472, !12, i64 5473, !12, i64 5474, !10, i64 5476, !10, i64 5480, !14, i64 5484, !12, i64 5488, !12, i64 5489, !12, i64 5490, !12, i64 5491, !12, i64 5492, !12, i64 5493, !12, i64 5494, !10, i64 5495, !13, i64 5496, !7, i64 5504, !58, i64 5512, !10, i64 5516, !59, i64 5520, !60, i64 5532, !10, i64 5540, !14, i64 5544, !55, i64 5552, !55, i64 5560, !55, i64 5568, !61, i64 5576, !8, i64 5596, !62, i64 7456, !10, i64 7800, !12, i64 7804, !10, i64 7808, !10, i64 7812, !10, i64 7816, !10, i64 7820, !64, i64 7824, !65, i64 7880, !66, i64 7960, !12, i64 8120, !10, i64 8124, !67, i64 8128, !68, i64 8144, !69, i64 8160, !70, i64 8176, !71, i64 8192, !72, i64 8208, !73, i64 8224, !73, i64 8240, !74, i64 8256, !75, i64 8272, !7, i64 8288, !7, i64 8296, !7, i64 8304, !10, i64 8312, !76, i64 8320, !23, i64 8368, !10, i64 8384, !10, i64 8388, !10, i64 8392, !12, i64 8396, !12, i64 8397, !12, i64 8398, !12, i64 8399, !10, i64 8400, !7, i64 8408, !10, i64 8416, !20, i64 8420, !10, i64 8424, !10, i64 8428, !10, i64 8432, !10, i64 8436, !70, i64 8440, !10, i64 8456, !14, i64 8460, !10, i64 8464, !10, i64 8468, !58, i64 8472, !36, i64 8480, !8, i64 8488, !12, i64 8489, !12, i64 8490, !12, i64 8491, !77, i64 8496, !12, i64 8552, !12, i64 8553, !12, i64 8554, !10, i64 8556, !10, i64 8560, !10, i64 8564, !16, i64 8568, !16, i64 8572, !16, i64 8576, !23, i64 8580, !23, i64 8596, !10, i64 8612, !10, i64 8616, !10, i64 8620, !77, i64 8624, !77, i64 8680, !77, i64 8736, !77, i64 8792, !10, i64 8848, !10, i64 8852, !10, i64 8856, !10, i64 8860, !12, i64 8864, !12, i64 8865, !10, i64 8868, !10, i64 8872, !7, i64 8880, !7, i64 8888, !7, i64 8896, !14, i64 8904, !14, i64 8908, !12, i64 8912, !78, i64 8916, !13, i64 8920, !13, i64 8928, !14, i64 8936, !12, i64 8940, !12, i64 8941, !12, i64 8942, !10, i64 8944, !10, i64 8948, !10, i64 8952, !79, i64 8960, !23, i64 9024, !23, i64 9040, !10, i64 9056, !10, i64 9060, !14, i64 9064, !10, i64 9068, !10, i64 9072, !10, i64 9076, !10, i64 9080, !41, i64 9088, !8, i64 9104, !10, i64 9120, !80, i64 9128, !7, i64 9144, !10, i64 9152, !10, i64 9156, !81, i64 9160, !82, i64 9176, !24, i64 9216, !38, i64 9232, !7, i64 9248, !84, i64 9256, !86, i64 9296, !87, i64 9312, !88, i64 9328, !7, i64 9432, !10, i64 9440, !89, i64 9448, !90, i64 9464, !10, i64 9504, !10, i64 9508, !14, i64 9512, !14, i64 9516, !10, i64 9520, !10, i64 9524, !10, i64 9528, !14, i64 9532, !13, i64 9536, !92, i64 9544, !94, i64 9664, !95, i64 9688, !10, i64 9808, !60, i64 9812, !10, i64 9820, !10, i64 9824, !10, i64 9828, !10, i64 9832, !10, i64 9836, !14, i64 9840, !14, i64 9844, !10, i64 9848, !35, i64 9852, !97, i64 9868, !23, i64 9916, !12, i64 9932, !15, i64 9934, !14, i64 9936, !14, i64 9940, !14, i64 9944, !12, i64 9948, !12, i64 9949, !14, i64 9952, !14, i64 9956, !14, i64 9960, !15, i64 9964, !15, i64 9966, !7, i64 9968, !93, i64 9976, !17, i64 9992, !98, i64 10008, !100, i64 10112, !100, i64 10128, !10, i64 10144, !101, i64 10152, !7, i64 10208, !12, i64 10216, !14, i64 10220, !104, i64 10224, !105, i64 10240, !106, i64 10256, !107, i64 10272, !108, i64 10288, !10, i64 10304, !8, i64 10312, !12, i64 10416, !10, i64 10420, !7, i64 10424, !7, i64 10432, !104, i64 10440, !7, i64 10456, !7, i64 10464, !14, i64 10472, !12, i64 10476, !10, i64 10480, !10, i64 10484, !10, i64 10488, !7, i64 10496, !7, i64 10504, !13, i64 10512, !12, i64 10520, !10, i64 10524, !109, i64 10528, !7, i64 10552, !10, i64 10560, !10, i64 10564, !104, i64 10568, !110, i64 10584, !10, i64 10608, !10, i64 10612, !8, i64 10616, !8, i64 10617, !12, i64 10618, !10, i64 10620, !8, i64 10624, !12, i64 10625, !8, i64 10626, !10, i64 10628, !14, i64 10632, !35, i64 10636, !111, i64 10652, !112, i64 10680, !114, i64 10736, !7, i64 10800, !8, i64 10808, !10, i64 11048, !10, i64 11052, !14, i64 11056, !10, i64 11060, !10, i64 11064, !10, i64 11068, !93, i64 11072, !8, i64 11088}
!48 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !14, i64 56, !12, i64 60, !7, i64 64, !13, i64 72, !12, i64 80, !12, i64 81, !12, i64 82, !12, i64 83, !12, i64 84, !12, i64 85, !12, i64 86, !12, i64 87, !12, i64 88, !12, i64 89, !12, i64 90, !12, i64 91, !12, i64 92, !12, i64 93, !12, i64 94, !12, i64 95, !12, i64 96, !12, i64 97, !12, i64 98, !12, i64 99, !12, i64 100, !12, i64 101, !12, i64 102, !12, i64 103, !12, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !12, i64 132, !12, i64 133, !12, i64 134, !12, i64 135, !12, i64 136, !12, i64 137, !12, i64 138, !12, i64 139, !12, i64 140, !12, i64 141, !12, i64 142, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !12, i64 184, !12, i64 185, !12, i64 186, !12, i64 187, !12, i64 188, !12, i64 189, !12, i64 190, !14, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !13, i64 212, !7, i64 224, !13, i64 232, !8, i64 240, !14, i64 248, !14, i64 252, !49, i64 256, !10, i64 260, !12, i64 264, !12, i64 265, !12, i64 266, !12, i64 267, !10, i64 268, !8, i64 272, !12, i64 2752, !13, i64 2756, !8, i64 2764, !8, i64 2808, !8, i64 2848, !8, i64 2853, !8, i64 2858, !8, i64 2868, !8, i64 2878, !8, i64 2888, !8, i64 2928, !8, i64 2933, !12, i64 2938, !12, i64 2939, !8, i64 2940, !8, i64 2960, !8, i64 2980, !8, i64 3020, !14, i64 3040, !12, i64 3044, !12, i64 3045, !15, i64 3046, !31, i64 3048, !7, i64 3064, !7, i64 3072, !7, i64 3080}
!49 = !{!"_ZTS16ImGuiMouseSource", !8, i64 0}
!50 = !{!"_ZTS15ImGuiPlatformIO", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !15, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !51, i64 264, !52, i64 280}
!51 = !{!"_ZTS8ImVectorI20ImGuiPlatformMonitorE", !10, i64 0, !10, i64 4, !7, i64 8}
!52 = !{!"_ZTS8ImVectorIP13ImGuiViewportE", !10, i64 0, !10, i64 4, !7, i64 8}
!53 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !14, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !13, i64 28, !13, i64 36, !16, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !14, i64 60, !13, i64 64, !14, i64 72, !14, i64 76, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !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, !14, i64 148, !14, i64 152, !14, i64 156, !14, i64 160, !14, i64 164, !14, i64 168, !13, i64 172, !16, i64 180, !13, i64 184, !13, i64 192, !14, i64 200, !13, i64 204, !13, i64 212, !13, i64 220, !13, i64 228, !14, i64 236, !14, i64 240, !12, i64 244, !12, i64 245, !12, i64 246, !14, i64 248, !14, i64 252, !8, i64 256, !14, i64 1184, !14, i64 1188, !14, i64 1192, !10, i64 1196, !10, i64 1200}
!54 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !7, i64 8, !7, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !10, i64 44, !35, i64 48, !33, i64 64, !8, i64 80, !14, i64 464, !8, i64 468}
!55 = !{!"double", !8, i64 0}
!56 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !7, i64 8}
!57 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!58 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!59 = !{!"_ZTS24ImGuiDeactivatedItemData", !10, i64 0, !10, i64 4, !12, i64 8, !12, i64 9}
!60 = !{!"_ZTS20ImGuiDataTypeStorage", !8, i64 0}
!61 = !{!"_ZTS10ImBitArrayILi155ELin512EE", !8, i64 0}
!62 = !{!"_ZTS20ImGuiKeyRoutingTable", !8, i64 0, !63, i64 312, !63, i64 328}
!63 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !10, i64 8, !36, i64 16, !14, i64 24, !10, i64 28, !10, i64 32, !12, i64 36, !8, i64 37, !60, i64 38, !10, i64 48}
!65 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !23, i64 12, !23, i64 28, !23, i64 44, !23, i64 60, !10, i64 76}
!66 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !13, i64 20, !13, i64 28, !13, i64 36, !13, i64 44, !13, i64 52, !10, i64 60, !10, i64 64, !12, i64 68, !12, i64 69, !23, i64 72, !7, i64 88, !7, i64 96, !14, i64 104, !10, i64 108, !10, i64 112, !11, i64 116, !13, i64 148, !10, i64 156}
!67 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!68 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!73 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!74 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!75 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!76 = !{!"_ZTS20ImGuiPlatformMonitor", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !14, i64 32, !7, i64 40}
!77 = !{!"_ZTS16ImGuiNavItemData", !7, i64 0, !10, i64 8, !10, i64 12, !23, i64 16, !10, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !36, i64 48}
!78 = !{!"_ZTS8ImGuiKey", !8, i64 0}
!79 = !{!"_ZTS12ImGuiPayload", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !12, i64 57, !12, i64 58}
!80 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!81 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!82 = !{!"_ZTS6ImPoolI10ImGuiTableE", !83, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!83 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!84 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !85, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!85 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!86 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!87 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!88 = !{!"_ZTS19ImGuiBoxSelectState", !10, i64 0, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !10, i64 9, !13, i64 12, !13, i64 20, !13, i64 28, !7, i64 40, !12, i64 48, !23, i64 52, !23, i64 68, !23, i64 84}
!89 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!90 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !91, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!91 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !10, i64 0, !10, i64 4, !7, i64 8}
!92 = !{!"_ZTS19ImGuiInputTextState", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 32, !93, i64 40, !93, i64 56, !93, i64 72, !10, i64 88, !13, i64 92, !14, i64 100, !12, i64 104, !12, i64 105, !12, i64 106, !12, i64 107, !10, i64 108, !10, i64 112}
!93 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!94 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !93, i64 8}
!95 = !{!"_ZTS6ImFont", !24, i64 0, !14, i64 16, !14, i64 20, !31, i64 24, !96, i64 40, !7, i64 56, !7, i64 64, !7, i64 72, !15, i64 80, !15, i64 82, !15, i64 84, !15, i64 86, !14, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !10, i64 108, !12, i64 112, !8, i64 113}
!96 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!97 = !{!"_ZTS21ImGuiComboPreviewData", !23, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!98 = !{!"_ZTS22ImGuiTypingSelectState", !99, i64 0, !8, i64 24, !10, i64 88, !10, i64 92, !14, i64 96, !12, i64 100}
!99 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !7, i64 8, !12, i64 16, !12, i64 17, !8, i64 18}
!100 = !{!"_ZTS20ImGuiPlatformImeData", !12, i64 0, !13, i64 4, !14, i64 12}
!101 = !{!"_ZTS16ImGuiDockContext", !26, i64 0, !102, i64 16, !103, i64 32, !12, i64 48}
!102 = !{!"_ZTS8ImVectorI16ImGuiDockRequestE", !10, i64 0, !10, i64 4, !7, i64 8}
!103 = !{!"_ZTS8ImVectorI21ImGuiDockNodeSettingsE", !10, i64 0, !10, i64 4, !7, i64 8}
!104 = !{!"_ZTS15ImGuiTextBuffer", !93, i64 0}
!105 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!106 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !93, i64 0}
!107 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !93, i64 0}
!108 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!109 = !{!"_ZTS23ImGuiErrorRecoveryState", !15, i64 0, !15, i64 2, !15, i64 4, !15, i64 6, !15, i64 8, !15, i64 10, !15, i64 12, !15, i64 14, !15, i64 16, !15, i64 18, !15, i64 20}
!110 = !{!"_ZTS14ImGuiTextIndex", !71, i64 0, !10, i64 16}
!111 = !{!"_ZTS18ImGuiMetricsConfig", !12, i64 0, !12, i64 1, !12, i64 2, !12, i64 3, !12, i64 4, !12, i64 5, !12, i64 6, !12, i64 7, !12, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!112 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !113, i64 16, !12, i64 32, !14, i64 36, !104, i64 40}
!113 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!114 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !15, i64 8, !8, i64 12}
!115 = !{!53, !14, i64 68}
!116 = !{!53, !14, i64 88}
!117 = !{!14, !14, i64 0}
!118 = !{i64 0, i64 4, !119, i64 4, i64 4, !119, i64 8, i64 4, !119, i64 12, i64 4, !117, i64 16, i64 4, !117, i64 20, i64 4, !117, i64 24, i64 4, !117, i64 28, i64 4, !117, i64 32, i64 4, !117, i64 36, i64 4, !117, i64 40, i64 4, !117, i64 44, i64 4, !117, i64 48, i64 4, !117, i64 52, i64 4, !117, i64 56, i64 4, !117, i64 60, i64 4, !117, i64 64, i64 4, !117, i64 68, i64 4, !117, i64 72, i64 4, !117, i64 76, i64 4, !119}
!119 = !{!10, !10, i64 0}
!120 = !{!47, !10, i64 8424}
!121 = !{!47, !10, i64 8436}
!122 = !{!47, !10, i64 5476}
!123 = !{!53, !14, i64 72}
!124 = !{!53, !14, i64 76}
!125 = !{!47, !7, i64 5360}
!126 = !{!6, !20, i64 424}
!127 = !{!6, !15, i64 430}
!128 = !{!6, !14, i64 244}
!129 = !{!47, !10, i64 7884}
!130 = !{!47, !12, i64 8397}
!131 = !{!47, !58, i64 8472}
!132 = !{!12, !12, i64 0}
!133 = !{!47, !10, i64 5516}
!134 = !{!6, !14, i64 208}
!135 = !{!92, !12, i64 107}
!136 = !{!92, !7, i64 8}
!137 = !{!138, !8, i64 23}
!138 = !{!"_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, !14, i64 28, !139, i64 32}
!139 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !15, i64 2584, !15, i64 2586, !10, i64 2588, !10, i64 2592}
!140 = !{!92, !7, i64 48}
!141 = !{!92, !10, i64 24}
!142 = !{!92, !10, i64 108}
!143 = !{!138, !10, i64 4}
!144 = !{!92, !10, i64 112}
!145 = !{!138, !10, i64 8}
!146 = !{!138, !10, i64 0}
!147 = !{!92, !10, i64 20}
!148 = !{!92, !7, i64 64}
!149 = !{!13, !14, i64 0}
!150 = !{!53, !14, i64 64}
!151 = !{!92, !14, i64 92}
!152 = !{!48, !12, i64 264}
!153 = !{!138, !8, i64 12}
!154 = !{!48, !12, i64 96}
!155 = !{!78, !78, i64 0}
!156 = !{!47, !10, i64 7800}
!157 = !{!92, !14, i64 96}
!158 = !{!92, !7, i64 32}
!159 = !{!8, !8, i64 0}
!160 = !{!92, !12, i64 106}
!161 = !{!92, !10, i64 88}
!162 = !{!92, !10, i64 16}
!163 = !{!47, !12, i64 5489}
!164 = !{!48, !14, i64 232}
!165 = !{!23, !14, i64 0}
!166 = !{!48, !14, i64 236}
!167 = !{!6, !14, i64 340}
!168 = !{!92, !12, i64 105}
!169 = !{!15, !15, i64 0}
!170 = !{!48, !12, i64 265}
!171 = !{!92, !12, i64 104}
!172 = !{!48, !14, i64 212}
!173 = !{!48, !14, i64 216}
!174 = !{!48, !12, i64 266}
!175 = !{!48, !10, i64 3048}
!176 = distinct !{!176, !177}
!177 = !{!"llvm.loop.mustprogress"}
!178 = !{!47, !12, i64 5488}
!179 = !{!138, !10, i64 16}
!180 = !{!48, !12, i64 267}
!181 = !{!48, !10, i64 0}
!182 = !{!48, !10, i64 4}
!183 = !{!47, !12, i64 88}
!184 = !{!48, !12, i64 99}
!185 = !{!47, !7, i64 3104}
!186 = !{!47, !7, i64 11080}
!187 = !{!93, !10, i64 0}
!188 = distinct !{!188, !177}
!189 = !{!93, !7, i64 8}
!190 = !{!92, !10, i64 56}
!191 = !{!192, !7, i64 0}
!192 = !{!"_ZTS26ImGuiInputTextCallbackData", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !15, i64 24, !78, i64 28, !7, i64 32, !10, i64 40, !10, i64 44, !12, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!193 = !{!192, !10, i64 8}
!194 = !{!192, !10, i64 12}
!195 = !{!192, !7, i64 16}
!196 = !{!92, !7, i64 80}
!197 = !{!192, !78, i64 28}
!198 = !{!192, !7, i64 32}
!199 = !{!192, !10, i64 40}
!200 = !{!192, !10, i64 44}
!201 = !{!192, !12, i64 48}
!202 = !{!192, !10, i64 52}
!203 = !{!192, !10, i64 56}
!204 = !{!192, !10, i64 60}
!205 = !{!92, !10, i64 72}
!206 = !{!47, !10, i64 9664}
!207 = !{!47, !7, i64 9680}
!208 = !{!47, !10, i64 9672}
!209 = !{!47, !10, i64 11068}
!210 = !{!23, !14, i64 4}
!211 = distinct !{!211, !177}
!212 = !{!13, !14, i64 4}
!213 = !{!35, !14, i64 12}
!214 = !{!35, !14, i64 4}
!215 = !{!47, !7, i64 4608}
!216 = !{!6, !7, i64 792}
!217 = distinct !{!217, !177}
!218 = !{!48, !14, i64 16}
!219 = !{!92, !14, i64 100}
!220 = !{!47, !12, i64 106}
!221 = !{!47, !12, i64 10112}
!222 = !{!47, !14, i64 10124}
!223 = !{!6, !7, i64 64}
!224 = !{!225, !10, i64 0}
!225 = !{!"_ZTS13ImGuiViewport", !10, i64 0, !10, i64 4, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !12, i64 88, !12, i64 89, !12, i64 90, !12, i64 91}
!226 = !{!47, !10, i64 10144}
!227 = !{!23, !14, i64 8}
!228 = !{!47, !10, i64 7828}
!229 = !{!47, !10, i64 7888}
!230 = !{!65, !10, i64 8}
!231 = !{!47, !10, i64 7880}
!232 = !{!47, !12, i64 10416}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass