; LLVM IR from xhub/reshop :: gui/external/imgui (imgui_widgets)

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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32 }
%struct.ImVector.34 = 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, [4 x i8], ptr, %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, %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, 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, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.3, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], [2 x %struct.ImVec2], i32, i32, i32, i8, [3 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, 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.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiPlatformIO, %struct.ImGuiStyle, ptr, float, float, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i32, i8, i8, i8, i8, ptr, [16 x i8], %struct.ImVector.12, %struct.ImVector.12, i32, i32, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.13, %struct.ImGuiStorage, i32, %struct.ImVec2, 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, [154 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, %struct.ImGuiNextWindowData, i8, i32, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector.17, %struct.ImVector.18, %struct.ImVector.19, %struct.ImVector.20, %struct.ImVector.21, %struct.ImVector.21, %struct.ImVector.22, %struct.ImVector.23, i8, i8, i8, i8, i32, ptr, i32, i32, i32, i32, i32, i32, %struct.ImVector.18, 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.24, ptr, i32, i32, %struct.ImVector.25, %struct.ImPool, %struct.ImVector.1, %struct.ImVector.8, ptr, %struct.ImPool.27, %struct.ImVector.29, %struct.ImVector.30, %struct.ImGuiBoxSelectState, ptr, i32, %struct.ImVector.31, %struct.ImPool.32, 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.34, %struct.ImVector, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.36, %struct.ImChunkStream, %struct.ImChunkStream.37, %struct.ImVector.38, i32, [10 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, [60 x float], i32, i32, float, i32, i32, i32, %struct.ImVector.34, [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, float, float, float, float, float, float, 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, i8, i8, i8, i8, i32, [154 x %struct.ImGuiKeyData], i8, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i16], [5 x i16], [5 x i8], [5 x i8], [5 x i8], i8, i8, [5 x float], [5 x float], [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 }
%struct.ImGuiStyle = type { float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, float, float, float, float, float, %struct.ImVec2, i32, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [56 x %struct.ImVec4], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type <{ %struct.ImVec2, ptr, ptr, float, float, float, float, %struct.ImVec4, i32, [4 x i8], %struct.ImVector.7, [48 x %struct.ImVec2], float, [64 x i8], [4 x i8] }>
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImVector.13 = 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 { [154 x i16], %struct.ImVector.14, %struct.ImVector.14 }
%struct.ImVector.14 = 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, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i8, %struct.ImRect, ptr, ptr, float, %struct.ImVec2, i32 }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.17 = type { i32, i32, ptr }
%struct.ImVector.19 = type { i32, i32, ptr }
%struct.ImVector.20 = 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.18 = 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.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImPool = type { %struct.ImVector.26, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.26 = type { i32, i32, ptr }
%struct.ImPool.27 = type { %struct.ImVector.28, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.28 = type { i32, i32, ptr }
%struct.ImVector.29 = type { i32, i32, ptr }
%struct.ImVector.30 = 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.31 = type { i32, i32, ptr }
%struct.ImPool.32 = type { %struct.ImVector.33, %struct.ImGuiStorage, i32, i32 }
%struct.ImVector.33 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type <{ ptr, ptr, i32, i32, i32, [4 x i8], ptr, %struct.ImVector.34, %struct.ImVector.34, %struct.ImVector.34, i32, %struct.ImVec2, float, i8, i8, i8, i8, i32, i32, [4 x i8] }>
%struct.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.34 }
%struct.ImFont = type <{ %struct.ImVector.1, float, float, %struct.ImVector.5, %struct.ImVector.35, ptr, ptr, ptr, i16, i16, i16, i16, float, float, i8, [3 x i8], float, float, float, i32, [2 x i8], [2 x i8] }>
%struct.ImVector.35 = 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.ImVector.36 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.34 }
%struct.ImChunkStream.37 = type { %struct.ImVector.34 }
%struct.ImVector.38 = type { i32, i32, ptr }
%struct.ImGuiErrorRecoveryState = type { i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.34 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.19, 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.39, i8, float }
%struct.ImVector.39 = 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.ImFontGlyph = type { i32, float, float, float, float, float, float, float, float, float }

@GImGui = external global ptr, align 8
@.str = external hidden unnamed_addr constant [1 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [31 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.67 = 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.68 = external hidden unnamed_addr constant [108 x i8], align 1
@.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(1045), 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 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 void @_ZN5ImGui11PopStyleVarEi(i32 noundef) #4

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 ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca float, align 4
  %79 = alloca float, align 4
  %80 = alloca i32, align 4
  %81 = alloca i8, align 1
  %82 = alloca i8, align 1
  %83 = alloca i32, align 4
  %84 = alloca i8, align 1
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i8, align 1
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i8, align 1
  %91 = alloca i8, align 1
  %92 = alloca i32, align 4
  %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 i8, align 1
  %103 = alloca i8, align 1
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca ptr, align 8
  %108 = alloca i32, align 4
  %109 = alloca %struct.ImVector.34, align 8
  %110 = alloca ptr, align 8
  %111 = alloca i32, align 4
  %112 = alloca ptr, align 8
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca [5 x i8], align 1
  %116 = alloca i32, align 4
  %117 = alloca i8, align 1
  %118 = alloca ptr, align 8
  %119 = alloca i32, align 4
  %120 = alloca i8, align 1
  %121 = alloca i8, align 1
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %125 = alloca ptr, align 8
  %126 = alloca i32, align 4
  %127 = alloca i32, align 4
  %128 = alloca i32, align 4
  %129 = alloca i8, align 1
  %130 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %131 = alloca %struct.ImVec2, align 4
  %132 = alloca %struct.ImVec2, align 4
  %133 = alloca %struct.ImVec4, align 4
  %134 = alloca %struct.ImVec2, align 4
  %135 = alloca %struct.ImVec2, align 4
  %136 = alloca i32, align 4
  %137 = alloca ptr, align 8
  %138 = alloca ptr, align 8
  %139 = alloca ptr, align 8
  %140 = alloca ptr, align 8
  %141 = alloca %struct.ImVec2, align 4
  %142 = alloca %struct.ImVec2, align 4
  %143 = alloca i32, align 4
  %144 = alloca i32, align 4
  %145 = alloca ptr, align 8
  %146 = alloca ptr, align 8
  %147 = alloca i32, align 4
  %148 = alloca ptr, align 8
  %149 = alloca %struct.ImVec2, align 4
  %150 = alloca %struct.ImVec2, align 4
  %151 = alloca %struct.ImVec2, align 4
  %152 = alloca float, align 4
  %153 = alloca float, align 4
  %154 = alloca float, align 4
  %155 = alloca %struct.ImVec2, align 4
  %156 = alloca ptr, align 8
  %157 = alloca ptr, align 8
  %158 = alloca i32, align 4
  %159 = alloca float, align 4
  %160 = alloca float, align 4
  %161 = alloca %struct.ImVec2, align 4
  %162 = alloca %struct.ImVec2, align 4
  %163 = alloca ptr, align 8
  %164 = alloca %struct.ImVec2, align 4
  %165 = alloca %struct.ImRect, align 4
  %166 = alloca %struct.ImVec2, align 4
  %167 = alloca %struct.ImVec2, align 4
  %168 = alloca %struct.ImVec2, align 4
  %169 = alloca %struct.ImVec2, align 4
  %170 = alloca %struct.ImRect, align 4
  %171 = alloca %struct.ImRect, align 4
  %172 = alloca i32, align 4
  %173 = alloca %struct.ImVec2, align 4
  %174 = alloca i8, align 1
  %175 = alloca %struct.ImVec2, align 4
  %176 = alloca %struct.ImVec2, align 4
  %177 = alloca %struct.ImVec2, align 4
  %178 = alloca %struct.ImRect, align 4
  %179 = alloca %struct.ImRect, 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 %struct.ImVec2, align 4
  %185 = alloca i32, align 4
  %186 = alloca %struct.ImVec2, align 4
  %187 = alloca %struct.ImVec2, align 4
  %188 = 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
  %189 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %189, ptr %18, align 8, !tbaa !5
  %190 = load ptr, ptr %18, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.ImGuiWindow, ptr %190, i32 0, i32 41
  %192 = load i8, ptr %191, align 1, !tbaa !11, !range !43, !noundef !44
  %193 = trunc i8 %192 to i1
  br i1 %193, label %194, label %195

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

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

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

201:                                              ; preds = %198, %195
  %202 = phi i1 [ false, %195 ], [ %200, %198 ]
  br i1 %202, label %203, label %204

203:                                              ; preds = %201
  br label %206

204:                                              ; preds = %201
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.2, i32 noundef 4413, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

205:                                              ; No predecessors!
  br label %206

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

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

214:                                              ; preds = %210, %206
  %215 = phi i1 [ false, %206 ], [ %213, %210 ]
  %216 = xor i1 %215, true
  br i1 %216, label %217, label %218

217:                                              ; preds = %214
  br label %220

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

219:                                              ; No predecessors!
  br label %220

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

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

228:                                              ; preds = %224, %220
  %229 = phi i1 [ false, %220 ], [ %227, %224 ]
  %230 = xor i1 %229, true
  br i1 %230, label %231, label %232

231:                                              ; preds = %228
  br label %234

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

233:                                              ; No predecessors!
  br label %234

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

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

242:                                              ; preds = %238, %234
  %243 = phi i1 [ false, %234 ], [ %241, %238 ]
  %244 = xor i1 %243, true
  br i1 %244, label %245, label %246

245:                                              ; preds = %242
  br label %248

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

247:                                              ; No predecessors!
  br label %248

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

260:                                              ; preds = %248
  call void @_ZN5ImGui10BeginGroupEv()
  br label %261

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

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

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

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

293:                                              ; preds = %279
  %294 = load ptr, ptr %22, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.ImGuiStyle, ptr %294, i32 0, i32 16
  %296 = getelementptr inbounds %struct.ImVec2, ptr %295, i32 0, i32 0
  %297 = load float, ptr %296, align 4, !tbaa !114
  %298 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %299 = load float, ptr %298, align 4, !tbaa !113
  %300 = fadd float %297, %299
  br label %302

301:                                              ; preds = %279
  br label %302

302:                                              ; preds = %301, %293
  %303 = phi float [ %300, %293 ], [ 0.000000e+00, %301 ]
  %304 = fadd float %289, %303
  %305 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 1
  %306 = load float, ptr %305, align 4, !tbaa !111
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef %304, float noundef %306)
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #13
  %307 = load ptr, ptr %18, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.ImGuiWindow, ptr %307, i32 0, i32 69
  %309 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %308, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #13
  %310 = load ptr, ptr %18, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.ImGuiWindow, ptr %310, i32 0, i32 69
  %312 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %311, i32 0, i32 0
  %313 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %312, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %313, ptr %31, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %30, ptr noundef nonnull align 4 dereferenceable(8) %309, 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
  %314 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #13
  %315 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %316 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %315, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %316, ptr %33, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(8) %314, 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
  %317 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %317, 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 !46
  call void @llvm.lifetime.start.p0(i64 80, ptr %36) #13
  call void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(80) %36)
  %318 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %319 = trunc i8 %318 to i1
  br i1 %319, label %320, label %421

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

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

331:                                              ; preds = %320
  %332 = load ptr, ptr %20, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.ImGuiContext, ptr %332, i32 0, i32 88
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %333, i64 80, i1 false), !tbaa.struct !115
  %334 = load ptr, ptr %18, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.ImGuiWindow, ptr %334, i32 0, i32 69
  %336 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %335, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %336, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !46
  %337 = load ptr, ptr %20, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.ImGuiContext, ptr %337, i32 0, i32 110
  %339 = load i32, ptr %338, align 8, !tbaa !116
  %340 = load i32, ptr %25, align 4, !tbaa !9
  %341 = icmp eq i32 %339, %340
  br i1 %341, label %342, label %355

342:                                              ; preds = %331
  %343 = load ptr, ptr %20, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.ImGuiContext, ptr %343, i32 0, i32 113
  %345 = load i32, ptr %344, align 4, !tbaa !117
  %346 = and i32 %345, 8
  %347 = icmp ne i32 %346, 0
  br i1 %347, label %348, label %355

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

352:                                              ; preds = %348
  %353 = load ptr, ptr %20, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.ImGuiContext, ptr %353, i32 0, i32 110
  store i32 0, ptr %354, align 8, !tbaa !116
  br label %355

355:                                              ; preds = %352, %348, %342, %331
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #13
  %356 = load ptr, ptr %20, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImGuiContext, ptr %356, i32 0, i32 110
  %358 = load i32, ptr %357, align 8, !tbaa !116
  store i32 %358, ptr %38, align 4, !tbaa !9
  %359 = load ptr, ptr %20, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.ImGuiContext, ptr %359, i32 0, i32 56
  %361 = load i32, ptr %360, align 4, !tbaa !118
  %362 = load i32, ptr %25, align 4, !tbaa !9
  %363 = icmp eq i32 %361, %362
  br i1 %363, label %364, label %367

364:                                              ; preds = %355
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.ImGuiContext, ptr %365, i32 0, i32 110
  store i32 0, ptr %366, align 8, !tbaa !116
  br label %367

367:                                              ; preds = %364, %355
  %368 = load ptr, ptr %22, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.ImGuiStyle, ptr %368, i32 0, i32 47
  %370 = getelementptr inbounds [56 x %struct.ImVec4], ptr %369, i64 0, i64 7
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %370)
  %371 = load ptr, ptr %22, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.ImGuiStyle, ptr %371, i32 0, i32 13
  %373 = load float, ptr %372, align 4, !tbaa !119
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %373)
  %374 = load ptr, ptr %22, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.ImGuiStyle, ptr %374, i32 0, i32 14
  %376 = load float, ptr %375, align 4, !tbaa !120
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %376)
  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
  %377 = load ptr, ptr %10, align 8, !tbaa !5
  %378 = load i32, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #13
  %379 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %30)
  store <2 x float> %379, ptr %41, align 4
  %380 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2ii(ptr noundef %377, i32 noundef %378, 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
  %381 = zext i1 %380 to i8
  store i8 %381, ptr %40, align 1, !tbaa !45
  %382 = load i32, ptr %38, align 4, !tbaa !9
  %383 = load ptr, ptr %20, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.ImGuiContext, ptr %383, i32 0, i32 110
  store i32 %382, ptr %384, align 8, !tbaa !116
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  %385 = load i8, ptr %40, align 1, !tbaa !45, !range !43, !noundef !44
  %386 = trunc i8 %385 to i1
  br i1 %386, label %388, label %387

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

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

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

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

420:                                              ; preds = %418
  br label %435

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

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

432:                                              ; preds = %429
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3724

433:                                              ; preds = %429
  br label %434

434:                                              ; preds = %433, %421
  br label %435

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

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

447:                                              ; preds = %446, %435
  %448 = load i8, ptr %42, align 1, !tbaa !45, !range !43, !noundef !44
  %449 = trunc i8 %448 to i1
  br i1 %449, label %450, label %456

450:                                              ; preds = %447
  %451 = load ptr, ptr %20, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.ImGuiContext, ptr %451, i32 0, i32 103
  %453 = load i8, ptr %452, align 1, !tbaa !126, !range !43, !noundef !44
  %454 = trunc i8 %453 to i1
  br i1 %454, label %455, label %456

455:                                              ; preds = %450
  store i8 0, ptr %42, align 1, !tbaa !45
  br label %456

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

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

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

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

490:                                              ; preds = %487
  br label %493

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

492:                                              ; No predecessors!
  br label %493

493:                                              ; preds = %492, %490
  br label %494

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

500:                                              ; preds = %494
  %501 = load ptr, ptr %20, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.ImGuiContext, ptr %501, i32 0, i32 110
  %503 = load i32, ptr %502, align 8, !tbaa !116
  %504 = load i32, ptr %25, align 4, !tbaa !9
  %505 = icmp eq i32 %503, %504
  br i1 %505, label %506, label %519

506:                                              ; preds = %500
  %507 = load ptr, ptr %20, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.ImGuiContext, ptr %507, i32 0, i32 113
  %509 = load i32, ptr %508, align 4, !tbaa !117
  %510 = and i32 %509, 1
  %511 = icmp ne i32 %510, 0
  br i1 %511, label %517, label %512

512:                                              ; preds = %506
  %513 = load ptr, ptr %20, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.ImGuiContext, ptr %513, i32 0, i32 119
  %515 = load i32, ptr %514, align 8, !tbaa !127
  %516 = icmp eq i32 %515, 2
  br label %517

517:                                              ; preds = %512, %506
  %518 = phi i1 [ true, %506 ], [ %516, %512 ]
  br label %519

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

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

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

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

537:                                              ; preds = %532
  %538 = load ptr, ptr %43, align 8, !tbaa !5
  %539 = icmp ne ptr %538, null
  br i1 %539, label %540, label %552

540:                                              ; preds = %537
  %541 = load ptr, ptr %20, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.ImGuiContext, ptr %541, i32 0, i32 56
  %543 = load i32, ptr %542, align 4, !tbaa !118
  %544 = icmp eq i32 %543, 0
  br i1 %544, label %545, label %552

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

552:                                              ; preds = %545, %540, %537, %532
  %553 = phi i1 [ false, %540 ], [ false, %537 ], [ false, %532 ], [ %551, %545 ]
  %554 = zext i1 %553 to i8
  store i8 %554, ptr %50, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #13
  %555 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %556 = trunc i8 %555 to i1
  br i1 %556, label %557, label %567

557:                                              ; preds = %552
  %558 = load ptr, ptr %43, align 8, !tbaa !5
  %559 = icmp ne ptr %558, null
  br i1 %559, label %560, label %567

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

567:                                              ; preds = %560, %557, %552
  %568 = phi i1 [ false, %557 ], [ false, %552 ], [ %566, %560 ]
  %569 = zext i1 %568 to i8
  store i8 %569, ptr %51, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #13
  store i8 0, ptr %52, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #13
  store i8 0, ptr %53, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #13
  %570 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %571 = trunc i8 %570 to i1
  br i1 %571, label %572, label %577

572:                                              ; preds = %567
  %573 = load ptr, ptr %34, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.ImGuiWindow, ptr %573, i32 0, i32 28
  %575 = getelementptr inbounds %struct.ImVec2, ptr %574, i32 0, i32 1
  %576 = load float, ptr %575, align 4, !tbaa !129
  br label %578

577:                                              ; preds = %567
  br label %578

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

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

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

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

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

609:                                              ; preds = %604
  %610 = load i8, ptr %50, align 1, !tbaa !45, !range !43, !noundef !44
  %611 = trunc i8 %610 to i1
  br i1 %611, label %615, label %612

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

615:                                              ; preds = %612, %609, %604
  %616 = phi i1 [ true, %609 ], [ true, %604 ], [ %614, %612 ]
  %617 = zext i1 %616 to i8
  store i8 %617, ptr %57, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #13
  %618 = load i8, ptr %57, align 1, !tbaa !45, !range !43, !noundef !44
  %619 = trunc i8 %618 to i1
  br i1 %619, label %623, label %620

620:                                              ; preds = %615
  %621 = load i8, ptr %51, align 1, !tbaa !45, !range !43, !noundef !44
  %622 = trunc i8 %621 to i1
  br label %623

623:                                              ; preds = %620, %615
  %624 = phi i1 [ true, %615 ], [ %622, %620 ]
  %625 = zext i1 %624 to i8
  store i8 %625, ptr %58, align 1, !tbaa !45
  %626 = load i8, ptr %55, align 1, !tbaa !45, !range !43, !noundef !44
  %627 = trunc i8 %626 to i1
  br i1 %627, label %628, label %691

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

636:                                              ; preds = %628
  br label %637

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

639:                                              ; preds = %637
  br label %642

640:                                              ; preds = %637
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.2, i32 noundef 4524, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

641:                                              ; No predecessors!
  br label %642

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

691:                                              ; preds = %623
  %692 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %693 = trunc i8 %692 to i1
  br i1 %693, label %694, label %700

694:                                              ; preds = %691
  %695 = load ptr, ptr %20, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.ImGuiContext, ptr %695, i32 0, i32 56
  %697 = load i32, ptr %696, align 4, !tbaa !118
  %698 = load i32, ptr %25, align 4, !tbaa !9
  %699 = icmp ne i32 %697, %698
  br i1 %699, label %703, label %700

700:                                              ; preds = %694, %691
  %701 = load i8, ptr %56, align 1, !tbaa !45, !range !43, !noundef !44
  %702 = trunc i8 %701 to i1
  br i1 %702, label %703, label %876

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

717:                                              ; preds = %703
  br label %718

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

720:                                              ; preds = %718
  br label %723

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

722:                                              ; No predecessors!
  br label %723

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

741:                                              ; preds = %723
  %742 = load i8, ptr %56, align 1, !tbaa !45, !range !43, !noundef !44
  %743 = trunc i8 %742 to i1
  %744 = xor i1 %743, true
  br label %745

745:                                              ; preds = %741, %723
  %746 = phi i1 [ false, %723 ], [ %744, %741 ]
  %747 = zext i1 %746 to i8
  store i8 %747, ptr %61, align 1, !tbaa !45
  %748 = load i8, ptr %61, align 1, !tbaa !45, !range !43, !noundef !44
  %749 = trunc i8 %748 to i1
  br i1 %749, label %750, label %773

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

756:                                              ; preds = %750
  %757 = load ptr, ptr %43, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %757, i32 0, i32 7
  %759 = getelementptr inbounds %struct.ImVector.34, ptr %758, i32 0, i32 2
  %760 = load ptr, ptr %759, align 8, !tbaa !135
  %761 = icmp eq ptr %760, null
  br i1 %761, label %772, label %762

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

772:                                              ; preds = %762, %756, %750
  store i8 0, ptr %61, align 1, !tbaa !45
  br label %773

773:                                              ; preds = %772, %762, %745
  %774 = load i32, ptr %25, align 4, !tbaa !9
  %775 = load ptr, ptr %43, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %775, i32 0, i32 3
  store i32 %774, ptr %776, align 4, !tbaa !142
  %777 = load i32, ptr %60, align 4, !tbaa !9
  %778 = load ptr, ptr %43, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %778, i32 0, i32 4
  store i32 %777, ptr %779, align 8, !tbaa !136
  %780 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %781 = trunc i8 %780 to i1
  br i1 %781, label %797, label %782

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

797:                                              ; preds = %782, %773
  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)
  %798 = load ptr, ptr %43, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %798, i32 0, i32 11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %799, ptr align 4 %62, i64 8, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  %800 = load i32, ptr %15, align 4, !tbaa !9
  %801 = and i32 %800, 131072
  %802 = icmp ne i32 %801, 0
  br i1 %802, label %803, label %822

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

822:                                              ; preds = %803, %797
  %823 = load i8, ptr %61, align 1, !tbaa !45, !range !43, !noundef !44
  %824 = trunc i8 %823 to i1
  br i1 %824, label %825, label %827

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

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

835:                                              ; preds = %827, %825
  %836 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %837 = trunc i8 %836 to i1
  br i1 %837, label %866, label %838

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

842:                                              ; preds = %838
  store i8 1, ptr %53, align 1, !tbaa !45
  br label %843

843:                                              ; preds = %842, %838
  %844 = load i8, ptr %48, align 1, !tbaa !45, !range !43, !noundef !44
  %845 = trunc i8 %844 to i1
  br i1 %845, label %846, label %856

846:                                              ; preds = %843
  %847 = load i8, ptr %61, align 1, !tbaa !45, !range !43, !noundef !44
  %848 = trunc i8 %847 to i1
  br i1 %848, label %849, label %855

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

855:                                              ; preds = %849, %846
  store i8 1, ptr %53, align 1, !tbaa !45
  br label %856

856:                                              ; preds = %855, %849, %843
  %857 = load i8, ptr %49, align 1, !tbaa !45, !range !43, !noundef !44
  %858 = trunc i8 %857 to i1
  br i1 %858, label %859, label %865

859:                                              ; preds = %856
  %860 = load ptr, ptr %21, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.ImGuiIO, ptr %860, i32 0, i32 70
  %862 = load i8, ptr %861, align 4, !tbaa !146, !range !43, !noundef !44
  %863 = trunc i8 %862 to i1
  br i1 %863, label %864, label %865

864:                                              ; preds = %859
  store i8 1, ptr %53, align 1, !tbaa !45
  br label %865

865:                                              ; preds = %864, %859, %856
  br label %866

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

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

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

876:                                              ; preds = %875, %700
  br label %877

877:                                              ; preds = %876, %642
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #13
  %878 = load ptr, ptr %21, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.ImGuiIO, ptr %878, i32 0, i32 21
  %880 = load i8, ptr %879, align 8, !tbaa !148, !range !43, !noundef !44
  %881 = trunc i8 %880 to i1
  %882 = zext i1 %881 to i8
  store i8 %882, ptr %64, align 1, !tbaa !45
  %883 = load ptr, ptr %20, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.ImGuiContext, ptr %883, i32 0, i32 56
  %885 = load i32, ptr %884, align 4, !tbaa !118
  %886 = load i32, ptr %25, align 4, !tbaa !9
  %887 = icmp ne i32 %885, %886
  br i1 %887, label %888, label %911

888:                                              ; preds = %877
  %889 = load i8, ptr %57, align 1, !tbaa !45, !range !43, !noundef !44
  %890 = trunc i8 %889 to i1
  br i1 %890, label %891, label %911

891:                                              ; preds = %888
  %892 = load ptr, ptr %43, align 8, !tbaa !5
  %893 = icmp ne ptr %892, null
  br i1 %893, label %894, label %900

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

900:                                              ; preds = %894, %891
  %901 = phi i1 [ false, %891 ], [ %899, %894 ]
  br i1 %901, label %902, label %903

902:                                              ; preds = %900
  br label %905

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

904:                                              ; No predecessors!
  br label %905

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

911:                                              ; preds = %905, %888, %877
  %912 = load ptr, ptr %20, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.ImGuiContext, ptr %912, i32 0, i32 56
  %914 = load i32, ptr %913, align 4, !tbaa !118
  %915 = load i32, ptr %25, align 4, !tbaa !9
  %916 = icmp eq i32 %914, %915
  br i1 %916, label %917, label %997

917:                                              ; preds = %911
  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
  %918 = load ptr, ptr %66, align 8, !tbaa !5
  %919 = getelementptr inbounds [8 x i32], ptr %918, i64 0, i64 0
  store ptr %919, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #13
  %920 = load ptr, ptr %66, align 8, !tbaa !5
  %921 = getelementptr inbounds [8 x i32], ptr %920, i64 0, i64 0
  %922 = getelementptr inbounds i32, ptr %921, i64 8
  store ptr %922, ptr %68, align 8, !tbaa !5
  br label %923

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

927:                                              ; preds = %923
  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 %936

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

933:                                              ; preds = %928
  %934 = load ptr, ptr %67, align 8, !tbaa !5
  %935 = getelementptr inbounds i32, ptr %934, i32 1
  store ptr %935, ptr %67, align 8, !tbaa !5
  br label %923

936:                                              ; preds = %927
  %937 = load i8, ptr %49, align 1, !tbaa !45, !range !43, !noundef !44
  %938 = trunc i8 %937 to i1
  br i1 %938, label %939, label %941

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

941:                                              ; preds = %939, %936
  %942 = load ptr, ptr %20, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.ImGuiContext, ptr %942, i32 0, i32 81
  %944 = load i32, ptr %943, align 8, !tbaa !150
  %945 = or i32 %944, 3
  store i32 %945, ptr %943, align 8, !tbaa !150
  %946 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %947 = trunc i8 %946 to i1
  br i1 %947, label %952, label %948

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

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

959:                                              ; preds = %952, %948
  %960 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %961 = trunc i8 %960 to i1
  br i1 %961, label %962, label %965

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

965:                                              ; preds = %962, %959
  %966 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %967 = trunc i8 %966 to i1
  br i1 %967, label %968, label %970

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

970:                                              ; preds = %968, %965
  %971 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %972 = trunc i8 %971 to i1
  br i1 %972, label %973, label %984

973:                                              ; preds = %970
  %974 = load ptr, ptr %43, align 8, !tbaa !5
  %975 = icmp ne ptr %974, null
  br i1 %975, label %976, label %984

976:                                              ; preds = %973
  %977 = load ptr, ptr %34, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiWindow, ptr %977, i32 0, i32 28
  %979 = getelementptr inbounds %struct.ImVec2, ptr %978, i32 0, i32 1
  %980 = load float, ptr %979, align 4, !tbaa !129
  %981 = load ptr, ptr %43, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %981, i32 0, i32 11
  %983 = getelementptr inbounds %struct.ImVec2, ptr %982, i32 0, i32 1
  store float %980, ptr %983, align 4, !tbaa !151
  br label %984

984:                                              ; preds = %976, %973, %970
  %985 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %986 = trunc i8 %985 to i1
  br i1 %986, label %987, label %996

987:                                              ; preds = %984
  %988 = load ptr, ptr %43, align 8, !tbaa !5
  %989 = icmp ne ptr %988, null
  br i1 %989, label %990, label %996

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

996:                                              ; preds = %990, %987, %984
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #13
  br label %997

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

1000:                                             ; preds = %997
  %1001 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1002 = trunc i8 %1001 to i1
  br i1 %1002, label %1003, label %1005

1003:                                             ; preds = %1000
  %1004 = load ptr, ptr %12, align 8, !tbaa !5
  br label %1010

1005:                                             ; preds = %1000
  %1006 = load ptr, ptr %43, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1006, i32 0, i32 7
  %1008 = getelementptr inbounds %struct.ImVector.34, ptr %1007, i32 0, i32 2
  %1009 = load ptr, ptr %1008, align 8, !tbaa !135
  br label %1010

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

1014:                                             ; preds = %1010, %997
  %1015 = load ptr, ptr %20, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.ImGuiContext, ptr %1015, i32 0, i32 56
  %1017 = load i32, ptr %1016, align 4, !tbaa !118
  %1018 = load i32, ptr %25, align 4, !tbaa !9
  %1019 = icmp eq i32 %1017, %1018
  br i1 %1019, label %1020, label %1024

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

1023:                                             ; preds = %1020
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1024

1024:                                             ; preds = %1023, %1020, %1014
  %1025 = load ptr, ptr %20, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.ImGuiContext, ptr %1025, i32 0, i32 56
  %1027 = load i32, ptr %1026, align 4, !tbaa !118
  %1028 = load i32, ptr %25, align 4, !tbaa !9
  %1029 = icmp eq i32 %1027, %1028
  br i1 %1029, label %1030, label %1043

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %21, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.ImGuiIO, ptr %1031, i32 0, i32 80
  %1033 = getelementptr inbounds [5 x i8], ptr %1032, i64 0, i64 0
  %1034 = load i8, ptr %1033, align 8, !tbaa !45, !range !43, !noundef !44
  %1035 = trunc i8 %1034 to i1
  br i1 %1035, label %1036, label %1043

1036:                                             ; preds = %1030
  %1037 = load i8, ptr %58, align 1, !tbaa !45, !range !43, !noundef !44
  %1038 = trunc i8 %1037 to i1
  br i1 %1038, label %1043, label %1039

1039:                                             ; preds = %1036
  %1040 = load i8, ptr %57, align 1, !tbaa !45, !range !43, !noundef !44
  %1041 = trunc i8 %1040 to i1
  br i1 %1041, label %1043, label %1042

1042:                                             ; preds = %1039
  store i8 1, ptr %52, align 1, !tbaa !45
  br label %1043

1043:                                             ; preds = %1042, %1039, %1036, %1030, %1024
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1044 = load ptr, ptr %20, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.ImGuiContext, ptr %1044, i32 0, i32 56
  %1046 = load i32, ptr %1045, align 4, !tbaa !118
  %1047 = load i32, ptr %25, align 4, !tbaa !9
  %1048 = icmp eq i32 %1046, %1047
  br i1 %1048, label %1057, label %1049

1049:                                             ; preds = %1043
  %1050 = load ptr, ptr %43, align 8, !tbaa !5
  %1051 = icmp ne ptr %1050, null
  br i1 %1051, label %1052, label %1055

1052:                                             ; preds = %1049
  %1053 = load i8, ptr %51, align 1, !tbaa !45, !range !43, !noundef !44
  %1054 = trunc i8 %1053 to i1
  br label %1055

1055:                                             ; preds = %1052, %1049
  %1056 = phi i1 [ false, %1049 ], [ %1054, %1052 ]
  br label %1057

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

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

1065:                                             ; preds = %1062
  %1066 = load i8, ptr %53, align 1, !tbaa !45, !range !43, !noundef !44
  %1067 = trunc i8 %1066 to i1
  br i1 %1067, label %1068, label %1071

1068:                                             ; preds = %1065, %1062
  %1069 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %1070 = trunc i8 %1069 to i1
  br label %1071

1071:                                             ; preds = %1068, %1065, %1057
  %1072 = phi i1 [ false, %1065 ], [ false, %1057 ], [ %1070, %1068 ]
  %1073 = zext i1 %1072 to i8
  store i8 %1073, ptr %71, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #13
  store i8 0, ptr %72, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #13
  store i8 0, ptr %73, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #13
  %1074 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %1075 = trunc i8 %1074 to i1
  br i1 %1075, label %1085, label %1076

1076:                                             ; preds = %1071
  %1077 = load i8, ptr %71, align 1, !tbaa !45, !range !43, !noundef !44
  %1078 = trunc i8 %1077 to i1
  br i1 %1078, label %1085, label %1079

1079:                                             ; preds = %1076
  %1080 = load ptr, ptr %20, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.ImGuiContext, ptr %1080, i32 0, i32 56
  %1082 = load i32, ptr %1081, align 4, !tbaa !118
  %1083 = load i32, ptr %25, align 4, !tbaa !9
  %1084 = icmp eq i32 %1082, %1083
  br i1 %1084, label %1085, label %1091

1085:                                             ; preds = %1079, %1076, %1071
  %1086 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1087 = trunc i8 %1086 to i1
  br i1 %1087, label %1091, label %1088

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

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

1096:                                             ; preds = %1091
  %1097 = load i8, ptr %74, align 1, !tbaa !45, !range !43, !noundef !44
  %1098 = trunc i8 %1097 to i1
  br i1 %1098, label %1099, label %1104

1099:                                             ; preds = %1096
  %1100 = load ptr, ptr %43, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1100, i32 0, i32 7
  %1102 = getelementptr inbounds %struct.ImVector.34, ptr %1101, i32 0, i32 2
  %1103 = load ptr, ptr %1102, align 8, !tbaa !135
  br label %1106

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

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

1112:                                             ; preds = %1106, %1091
  %1113 = phi i1 [ false, %1091 ], [ %1111, %1106 ]
  %1114 = zext i1 %1113 to i8
  store i8 %1114, ptr %75, align 1, !tbaa !45
  %1115 = load i8, ptr %45, align 1, !tbaa !45, !range !43, !noundef !44
  %1116 = trunc i8 %1115 to i1
  br i1 %1116, label %1117, label %1188

1117:                                             ; preds = %1112
  %1118 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %1119 = trunc i8 %1118 to i1
  br i1 %1119, label %1188, label %1120

1120:                                             ; preds = %1117
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #13
  %1121 = load ptr, ptr %20, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.ImGuiContext, ptr %1121, i32 0, i32 5
  %1123 = load ptr, ptr %1122, align 8, !tbaa !154
  %1124 = call noundef ptr @_ZN6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118) %1123, i16 noundef zeroext 42)
  store ptr %1124, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #13
  %1125 = load ptr, ptr %20, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.ImGuiContext, ptr %1125, i32 0, i32 210
  store ptr %1126, ptr %77, align 8, !tbaa !5
  %1127 = load ptr, ptr %20, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.ImGuiContext, ptr %1127, i32 0, i32 5
  %1129 = load ptr, ptr %1128, align 8, !tbaa !154
  %1130 = getelementptr inbounds %struct.ImFont, ptr %1129, i32 0, i32 2
  %1131 = load float, ptr %1130, align 4, !tbaa !155
  %1132 = load ptr, ptr %77, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.ImFont, ptr %1132, i32 0, i32 2
  store float %1131, ptr %1133, align 4, !tbaa !155
  %1134 = load ptr, ptr %20, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.ImGuiContext, ptr %1134, i32 0, i32 5
  %1136 = load ptr, ptr %1135, align 8, !tbaa !154
  %1137 = getelementptr inbounds %struct.ImFont, ptr %1136, i32 0, i32 16
  %1138 = load float, ptr %1137, align 4, !tbaa !156
  %1139 = load ptr, ptr %77, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.ImFont, ptr %1139, i32 0, i32 16
  store float %1138, ptr %1140, align 4, !tbaa !156
  %1141 = load ptr, ptr %20, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.ImGuiContext, ptr %1141, i32 0, i32 5
  %1143 = load ptr, ptr %1142, align 8, !tbaa !154
  %1144 = getelementptr inbounds %struct.ImFont, ptr %1143, i32 0, i32 17
  %1145 = load float, ptr %1144, align 8, !tbaa !157
  %1146 = load ptr, ptr %77, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.ImFont, ptr %1146, i32 0, i32 17
  store float %1145, ptr %1147, align 8, !tbaa !157
  %1148 = load ptr, ptr %20, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.ImGuiContext, ptr %1148, i32 0, i32 5
  %1150 = load ptr, ptr %1149, align 8, !tbaa !154
  %1151 = getelementptr inbounds %struct.ImFont, ptr %1150, i32 0, i32 18
  %1152 = load float, ptr %1151, align 4, !tbaa !158
  %1153 = load ptr, ptr %77, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.ImFont, ptr %1153, i32 0, i32 18
  store float %1152, ptr %1154, align 4, !tbaa !158
  %1155 = load ptr, ptr %20, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.ImGuiContext, ptr %1155, i32 0, i32 5
  %1157 = load ptr, ptr %1156, align 8, !tbaa !154
  %1158 = getelementptr inbounds %struct.ImFont, ptr %1157, i32 0, i32 6
  %1159 = load ptr, ptr %1158, align 8, !tbaa !159
  %1160 = load ptr, ptr %77, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.ImFont, ptr %1160, i32 0, i32 6
  store ptr %1159, ptr %1161, align 8, !tbaa !159
  %1162 = load ptr, ptr %76, align 8, !tbaa !5
  %1163 = load ptr, ptr %77, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.ImFont, ptr %1163, i32 0, i32 5
  store ptr %1162, ptr %1164, align 8, !tbaa !160
  %1165 = load ptr, ptr %76, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.ImFontGlyph, ptr %1165, i32 0, i32 1
  %1167 = load float, ptr %1166, align 4, !tbaa !161
  %1168 = load ptr, ptr %77, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImFont, ptr %1168, i32 0, i32 1
  store float %1167, ptr %1169, align 8, !tbaa !163
  %1170 = load ptr, ptr %77, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.ImFont, ptr %1170, i32 0, i32 4
  %1172 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1171)
  br i1 %1172, label %1173, label %1181

1173:                                             ; preds = %1120
  %1174 = load ptr, ptr %77, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.ImFont, ptr %1174, i32 0, i32 0
  %1176 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1175)
  br i1 %1176, label %1177, label %1181

1177:                                             ; preds = %1173
  %1178 = load ptr, ptr %77, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.ImFont, ptr %1178, i32 0, i32 3
  %1180 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1179)
  br label %1181

1181:                                             ; preds = %1177, %1173, %1120
  %1182 = phi i1 [ false, %1173 ], [ false, %1120 ], [ %1180, %1177 ]
  br i1 %1182, label %1183, label %1184

1183:                                             ; preds = %1181
  br label %1186

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

1185:                                             ; No predecessors!
  br label %1186

1186:                                             ; preds = %1185, %1183
  %1187 = load ptr, ptr %77, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %1187)
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #13
  br label %1188

1188:                                             ; preds = %1186, %1117, %1112
  %1189 = load ptr, ptr %20, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.ImGuiContext, ptr %1189, i32 0, i32 56
  %1191 = load i32, ptr %1190, align 4, !tbaa !118
  %1192 = load i32, ptr %25, align 4, !tbaa !9
  %1193 = icmp eq i32 %1191, %1192
  br i1 %1193, label %1194, label %1597

1194:                                             ; preds = %1188
  %1195 = load ptr, ptr %43, align 8, !tbaa !5
  %1196 = icmp ne ptr %1195, null
  br i1 %1196, label %1197, label %1198

1197:                                             ; preds = %1194
  br label %1200

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

1199:                                             ; No predecessors!
  br label %1200

1200:                                             ; preds = %1199, %1197
  %1201 = load ptr, ptr %43, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1201, i32 0, i32 15
  store i8 0, ptr %1202, align 2, !tbaa !164
  %1203 = load i32, ptr %13, align 4, !tbaa !9
  %1204 = load ptr, ptr %43, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1204, i32 0, i32 10
  store i32 %1203, ptr %1205, align 8, !tbaa !165
  %1206 = load i32, ptr %15, align 4, !tbaa !9
  %1207 = load ptr, ptr %43, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1207, i32 0, i32 2
  store i32 %1206, ptr %1208, align 8, !tbaa !166
  %1209 = load ptr, ptr %21, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.ImGuiIO, ptr %1209, i32 0, i32 66
  %1211 = getelementptr inbounds [5 x i8], ptr %1210, i64 0, i64 0
  %1212 = load i8, ptr %1211, align 8, !tbaa !45, !range !43, !noundef !44
  %1213 = trunc i8 %1212 to i1
  %1214 = xor i1 %1213, true
  %1215 = load ptr, ptr %20, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.ImGuiContext, ptr %1215, i32 0, i32 60
  %1217 = zext i1 %1214 to i8
  store i8 %1217, ptr %1216, align 1, !tbaa !167
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #13
  %1218 = load ptr, ptr %21, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiIO, ptr %1218, i32 0, i32 65
  %1220 = getelementptr inbounds %struct.ImVec2, ptr %1219, i32 0, i32 0
  %1221 = load float, ptr %1220, align 8, !tbaa !168
  %1222 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %1223 = getelementptr inbounds %struct.ImVec2, ptr %1222, i32 0, i32 0
  %1224 = load float, ptr %1223, align 4, !tbaa !169
  %1225 = fsub float %1221, %1224
  %1226 = load ptr, ptr %22, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.ImGuiStyle, ptr %1226, i32 0, i32 12
  %1228 = getelementptr inbounds %struct.ImVec2, ptr %1227, i32 0, i32 0
  %1229 = load float, ptr %1228, align 4, !tbaa !144
  %1230 = fsub float %1225, %1229
  %1231 = load ptr, ptr %43, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1231, i32 0, i32 11
  %1233 = getelementptr inbounds %struct.ImVec2, ptr %1232, i32 0, i32 0
  %1234 = load float, ptr %1233, align 4, !tbaa !145
  %1235 = fadd float %1230, %1234
  store float %1235, ptr %78, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #13
  %1236 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1237 = trunc i8 %1236 to i1
  br i1 %1237, label %1238, label %1249

1238:                                             ; preds = %1200
  %1239 = load ptr, ptr %21, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.ImGuiIO, ptr %1239, i32 0, i32 65
  %1241 = getelementptr inbounds %struct.ImVec2, ptr %1240, i32 0, i32 1
  %1242 = load float, ptr %1241, align 4, !tbaa !170
  %1243 = load ptr, ptr %34, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.ImGuiWindow, ptr %1243, i32 0, i32 69
  %1245 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1244, i32 0, i32 0
  %1246 = getelementptr inbounds %struct.ImVec2, ptr %1245, i32 0, i32 1
  %1247 = load float, ptr %1246, align 4, !tbaa !171
  %1248 = fsub float %1242, %1247
  br label %1254

1249:                                             ; preds = %1200
  %1250 = load ptr, ptr %20, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.ImGuiContext, ptr %1250, i32 0, i32 6
  %1252 = load float, ptr %1251, align 8, !tbaa !48
  %1253 = fmul float %1252, 5.000000e-01
  br label %1254

1254:                                             ; preds = %1249, %1238
  %1255 = phi float [ %1248, %1238 ], [ %1253, %1249 ]
  store float %1255, ptr %79, align 4, !tbaa !47
  %1256 = load i8, ptr %53, align 1, !tbaa !45, !range !43, !noundef !44
  %1257 = trunc i8 %1256 to i1
  br i1 %1257, label %1258, label %1262

1258:                                             ; preds = %1254
  %1259 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %1259)
  %1260 = load ptr, ptr %43, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1260, i32 0, i32 14
  store i8 1, ptr %1261, align 1, !tbaa !172
  br label %1485

1262:                                             ; preds = %1254
  %1263 = load i8, ptr %42, align 1, !tbaa !45, !range !43, !noundef !44
  %1264 = trunc i8 %1263 to i1
  br i1 %1264, label %1265, label %1413

1265:                                             ; preds = %1262
  %1266 = load ptr, ptr %21, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.ImGuiIO, ptr %1266, i32 0, i32 82
  %1268 = getelementptr inbounds [5 x i16], ptr %1267, i64 0, i64 0
  %1269 = load i16, ptr %1268, align 2, !tbaa !173
  %1270 = zext i16 %1269 to i32
  %1271 = icmp sge i32 %1270, 2
  br i1 %1271, label %1272, label %1413

1272:                                             ; preds = %1265
  %1273 = load ptr, ptr %21, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.ImGuiIO, ptr %1273, i32 0, i32 71
  %1275 = load i8, ptr %1274, align 1, !tbaa !174, !range !43, !noundef !44
  %1276 = trunc i8 %1275 to i1
  br i1 %1276, label %1413, label %1277

1277:                                             ; preds = %1272
  %1278 = load ptr, ptr %43, align 8, !tbaa !5
  %1279 = load ptr, ptr %43, align 8, !tbaa !5
  %1280 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1279, i32 0, i32 1
  %1281 = load ptr, ptr %1280, align 8, !tbaa !131
  %1282 = load float, ptr %78, align 4, !tbaa !47
  %1283 = load float, ptr %79, align 4, !tbaa !47
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1278, ptr noundef %1281, float noundef %1282, float noundef %1283)
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  %1284 = load ptr, ptr %21, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.ImGuiIO, ptr %1284, i32 0, i32 82
  %1286 = getelementptr inbounds [5 x i16], ptr %1285, i64 0, i64 0
  %1287 = load i16, ptr %1286, align 2, !tbaa !173
  %1288 = zext i16 %1287 to i32
  %1289 = sub nsw i32 %1288, 2
  store i32 %1289, ptr %80, align 4, !tbaa !9
  %1290 = load i32, ptr %80, align 4, !tbaa !9
  %1291 = srem i32 %1290, 2
  %1292 = icmp eq i32 %1291, 0
  br i1 %1292, label %1293, label %1371

1293:                                             ; preds = %1277
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #13
  %1294 = load ptr, ptr %43, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1294, i32 0, i32 1
  %1296 = load ptr, ptr %1295, align 8, !tbaa !131
  %1297 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1296, i32 0, i32 0
  %1298 = load i32, ptr %1297, align 4, !tbaa !141
  %1299 = icmp eq i32 %1298, 0
  br i1 %1299, label %1311, label %1300

1300:                                             ; preds = %1293
  %1301 = load ptr, ptr %43, align 8, !tbaa !5
  %1302 = load ptr, ptr %43, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1302, i32 0, i32 1
  %1304 = load ptr, ptr %1303, align 8, !tbaa !131
  %1305 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1304, i32 0, i32 0
  %1306 = load i32, ptr %1305, align 4, !tbaa !141
  %1307 = sub nsw i32 %1306, 1
  %1308 = call noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1301, i32 noundef %1307)
  %1309 = sext i8 %1308 to i32
  %1310 = icmp eq i32 %1309, 10
  br label %1311

1311:                                             ; preds = %1300, %1293
  %1312 = phi i1 [ true, %1293 ], [ %1310, %1300 ]
  %1313 = zext i1 %1312 to i8
  store i8 %1313, ptr %81, align 1, !tbaa !45
  %1314 = load ptr, ptr %43, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1314, i32 0, i32 1
  %1316 = load ptr, ptr %1315, align 8, !tbaa !131
  %1317 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1316, i32 0, i32 1
  %1318 = load i32, ptr %1317, align 4, !tbaa !138
  %1319 = load ptr, ptr %43, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1319, i32 0, i32 1
  %1321 = load ptr, ptr %1320, align 8, !tbaa !131
  %1322 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1321, i32 0, i32 2
  %1323 = load i32, ptr %1322, align 4, !tbaa !140
  %1324 = icmp ne i32 %1318, %1323
  br i1 %1324, label %1328, label %1325

1325:                                             ; preds = %1311
  %1326 = load i8, ptr %81, align 1, !tbaa !45, !range !43, !noundef !44
  %1327 = trunc i8 %1326 to i1
  br i1 %1327, label %1330, label %1328

1328:                                             ; preds = %1325, %1311
  %1329 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1329, i32 noundef 2097164)
  br label %1330

1330:                                             ; preds = %1328, %1325
  %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 !131
  %1334 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1333, i32 0, i32 1
  %1335 = load i32, ptr %1334, align 4, !tbaa !138
  %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 !131
  %1339 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1338, i32 0, i32 2
  %1340 = load i32, ptr %1339, align 4, !tbaa !140
  %1341 = icmp ne i32 %1335, %1340
  br i1 %1341, label %1346, label %1342

1342:                                             ; preds = %1330
  %1343 = load ptr, ptr %43, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1343, i32 0, i32 1
  %1345 = load ptr, ptr %1344, align 8, !tbaa !131
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef %1345)
  br label %1346

1346:                                             ; preds = %1342, %1330
  %1347 = load ptr, ptr %43, align 8, !tbaa !5
  %1348 = load ptr, ptr %43, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1348, i32 0, i32 1
  %1350 = load ptr, ptr %1349, align 8, !tbaa !131
  %1351 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1350, i32 0, i32 0
  %1352 = load i32, ptr %1351, align 4, !tbaa !141
  %1353 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef %1347, i32 noundef %1352)
  %1354 = load ptr, ptr %43, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1354, i32 0, i32 1
  %1356 = load ptr, ptr %1355, align 8, !tbaa !131
  %1357 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1356, i32 0, i32 0
  store i32 %1353, ptr %1357, align 4, !tbaa !141
  %1358 = load ptr, ptr %43, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1358, i32 0, i32 1
  %1360 = load ptr, ptr %1359, align 8, !tbaa !131
  %1361 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1360, i32 0, i32 0
  %1362 = load i32, ptr %1361, align 4, !tbaa !141
  %1363 = load ptr, ptr %43, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1363, i32 0, i32 1
  %1365 = load ptr, ptr %1364, align 8, !tbaa !131
  %1366 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1365, i32 0, i32 2
  store i32 %1362, ptr %1366, align 4, !tbaa !140
  %1367 = load ptr, ptr %43, align 8, !tbaa !5
  %1368 = load ptr, ptr %43, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1368, i32 0, i32 1
  %1370 = load ptr, ptr %1369, align 8, !tbaa !131
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1367, ptr noundef %1370)
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #13
  br label %1411

1371:                                             ; preds = %1277
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #13
  %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 !131
  %1376 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1375, i32 0, i32 0
  %1377 = load i32, ptr %1376, align 4, !tbaa !141
  %1378 = call noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1372, i32 noundef %1377)
  %1379 = sext i8 %1378 to i32
  %1380 = icmp eq i32 %1379, 10
  %1381 = zext i1 %1380 to i8
  store i8 %1381, ptr %82, align 1, !tbaa !45
  %1382 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1382, i32 noundef 2097156)
  %1383 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1383, i32 noundef 6291461)
  %1384 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1384, i32 noundef 6291457)
  %1385 = load i8, ptr %82, align 1, !tbaa !45, !range !43, !noundef !44
  %1386 = trunc i8 %1385 to i1
  br i1 %1386, label %1408, label %1387

1387:                                             ; preds = %1371
  %1388 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1389 = trunc i8 %1388 to i1
  br i1 %1389, label %1390, label %1408

1390:                                             ; preds = %1387
  %1391 = load ptr, ptr %43, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1391, i32 0, i32 1
  %1393 = load ptr, ptr %1392, align 8, !tbaa !131
  %1394 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1393, i32 0, i32 1
  %1395 = load ptr, ptr %43, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1395, i32 0, i32 1
  %1397 = load ptr, ptr %1396, align 8, !tbaa !131
  %1398 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1397, i32 0, i32 2
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %1394, ptr noundef nonnull align 4 dereferenceable(4) %1398)
  %1399 = load ptr, ptr %43, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1399, i32 0, i32 1
  %1401 = load ptr, ptr %1400, align 8, !tbaa !131
  %1402 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1401, i32 0, i32 2
  %1403 = load i32, ptr %1402, align 4, !tbaa !140
  %1404 = load ptr, ptr %43, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1404, i32 0, i32 1
  %1406 = load ptr, ptr %1405, align 8, !tbaa !131
  %1407 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1406, i32 0, i32 0
  store i32 %1403, ptr %1407, align 4, !tbaa !141
  br label %1408

1408:                                             ; preds = %1390, %1387, %1371
  %1409 = load ptr, ptr %43, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1409, i32 0, i32 13
  store i8 0, ptr %1410, align 8, !tbaa !175
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #13
  br label %1411

1411:                                             ; preds = %1408, %1346
  %1412 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %1412)
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  br label %1484

1413:                                             ; preds = %1272, %1265, %1262
  %1414 = load ptr, ptr %21, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.ImGuiIO, ptr %1414, i32 0, i32 80
  %1416 = getelementptr inbounds [5 x i8], ptr %1415, i64 0, i64 0
  %1417 = load i8, ptr %1416, align 8, !tbaa !45, !range !43, !noundef !44
  %1418 = trunc i8 %1417 to i1
  br i1 %1418, label %1419, label %1449

1419:                                             ; preds = %1413
  %1420 = load ptr, ptr %43, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1420, i32 0, i32 14
  %1422 = load i8, ptr %1421, align 1, !tbaa !172, !range !43, !noundef !44
  %1423 = trunc i8 %1422 to i1
  br i1 %1423, label %1449, label %1424

1424:                                             ; preds = %1419
  %1425 = load i8, ptr %42, align 1, !tbaa !45, !range !43, !noundef !44
  %1426 = trunc i8 %1425 to i1
  br i1 %1426, label %1427, label %1448

1427:                                             ; preds = %1424
  %1428 = load ptr, ptr %21, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.ImGuiIO, ptr %1428, i32 0, i32 71
  %1430 = load i8, ptr %1429, align 1, !tbaa !174, !range !43, !noundef !44
  %1431 = trunc i8 %1430 to i1
  br i1 %1431, label %1432, label %1439

1432:                                             ; preds = %1427
  %1433 = load ptr, ptr %43, align 8, !tbaa !5
  %1434 = load ptr, ptr %43, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1434, i32 0, i32 1
  %1436 = load ptr, ptr %1435, align 8, !tbaa !131
  %1437 = load float, ptr %78, align 4, !tbaa !47
  %1438 = load float, ptr %79, align 4, !tbaa !47
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1433, ptr noundef %1436, float noundef %1437, float noundef %1438)
  br label %1446

1439:                                             ; preds = %1427
  %1440 = load ptr, ptr %43, align 8, !tbaa !5
  %1441 = load ptr, ptr %43, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1441, i32 0, i32 1
  %1443 = load ptr, ptr %1442, align 8, !tbaa !131
  %1444 = load float, ptr %78, align 4, !tbaa !47
  %1445 = load float, ptr %79, align 4, !tbaa !47
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1440, ptr noundef %1443, float noundef %1444, float noundef %1445)
  br label %1446

1446:                                             ; preds = %1439, %1432
  %1447 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %1447)
  br label %1448

1448:                                             ; preds = %1446, %1424
  br label %1483

1449:                                             ; preds = %1419, %1413
  %1450 = load ptr, ptr %21, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct.ImGuiIO, ptr %1450, i32 0, i32 66
  %1452 = getelementptr inbounds [5 x i8], ptr %1451, i64 0, i64 0
  %1453 = load i8, ptr %1452, align 8, !tbaa !45, !range !43, !noundef !44
  %1454 = trunc i8 %1453 to i1
  br i1 %1454, label %1455, label %1482

1455:                                             ; preds = %1449
  %1456 = load ptr, ptr %43, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1456, i32 0, i32 14
  %1458 = load i8, ptr %1457, align 1, !tbaa !172, !range !43, !noundef !44
  %1459 = trunc i8 %1458 to i1
  br i1 %1459, label %1482, label %1460

1460:                                             ; preds = %1455
  %1461 = load ptr, ptr %21, align 8, !tbaa !5
  %1462 = getelementptr inbounds %struct.ImGuiIO, ptr %1461, i32 0, i32 63
  %1463 = getelementptr inbounds %struct.ImVec2, ptr %1462, i32 0, i32 0
  %1464 = load float, ptr %1463, align 4, !tbaa !176
  %1465 = fcmp une float %1464, 0.000000e+00
  br i1 %1465, label %1472, label %1466

1466:                                             ; preds = %1460
  %1467 = load ptr, ptr %21, align 8, !tbaa !5
  %1468 = getelementptr inbounds %struct.ImGuiIO, ptr %1467, i32 0, i32 63
  %1469 = getelementptr inbounds %struct.ImVec2, ptr %1468, i32 0, i32 1
  %1470 = load float, ptr %1469, align 4, !tbaa !177
  %1471 = fcmp une float %1470, 0.000000e+00
  br i1 %1471, label %1472, label %1482

1472:                                             ; preds = %1466, %1460
  %1473 = load ptr, ptr %43, align 8, !tbaa !5
  %1474 = load ptr, ptr %43, align 8, !tbaa !5
  %1475 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1474, i32 0, i32 1
  %1476 = load ptr, ptr %1475, align 8, !tbaa !131
  %1477 = load float, ptr %78, align 4, !tbaa !47
  %1478 = load float, ptr %79, align 4, !tbaa !47
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1473, ptr noundef %1476, float noundef %1477, float noundef %1478)
  %1479 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %1479)
  %1480 = load ptr, ptr %43, align 8, !tbaa !5
  %1481 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1480, i32 0, i32 13
  store i8 1, ptr %1481, align 8, !tbaa !175
  br label %1482

1482:                                             ; preds = %1472, %1466, %1455, %1449
  br label %1483

1483:                                             ; preds = %1482, %1448
  br label %1484

1484:                                             ; preds = %1483, %1411
  br label %1485

1485:                                             ; preds = %1484, %1258
  %1486 = load ptr, ptr %43, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1486, i32 0, i32 14
  %1488 = load i8, ptr %1487, align 1, !tbaa !172, !range !43, !noundef !44
  %1489 = trunc i8 %1488 to i1
  br i1 %1489, label %1490, label %1499

1490:                                             ; preds = %1485
  %1491 = load ptr, ptr %21, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.ImGuiIO, ptr %1491, i32 0, i32 66
  %1493 = getelementptr inbounds [5 x i8], ptr %1492, i64 0, i64 0
  %1494 = load i8, ptr %1493, align 8, !tbaa !45, !range !43, !noundef !44
  %1495 = trunc i8 %1494 to i1
  br i1 %1495, label %1499, label %1496

1496:                                             ; preds = %1490
  %1497 = load ptr, ptr %43, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1497, i32 0, i32 14
  store i8 0, ptr %1498, align 1, !tbaa !172
  br label %1499

1499:                                             ; preds = %1496, %1490, %1485
  %1500 = load i32, ptr %15, align 4, !tbaa !9
  %1501 = and i32 %1500, 32
  %1502 = icmp ne i32 %1501, 0
  br i1 %1502, label %1503, label %1520

1503:                                             ; preds = %1499
  %1504 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1505 = trunc i8 %1504 to i1
  br i1 %1505, label %1520, label %1506

1506:                                             ; preds = %1503
  %1507 = load i32, ptr %25, align 4, !tbaa !9
  %1508 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 512, i32 noundef 1, i32 noundef %1507)
  br i1 %1508, label %1509, label %1519

1509:                                             ; preds = %1506
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #13
  store i32 9, ptr %83, align 4, !tbaa !9
  %1510 = load ptr, ptr %20, align 8, !tbaa !5
  %1511 = load i32, ptr %15, align 4, !tbaa !9
  %1512 = load ptr, ptr %16, align 8, !tbaa !5
  %1513 = load ptr, ptr %17, align 8, !tbaa !5
  %1514 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %1510, ptr noundef %83, i32 noundef %1511, ptr noundef %1512, ptr noundef %1513, i1 noundef zeroext false)
  br i1 %1514, label %1515, label %1518

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

1518:                                             ; preds = %1515, %1509
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #13
  br label %1519

1519:                                             ; preds = %1518, %1506
  br label %1520

1520:                                             ; preds = %1519, %1503, %1499
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #13
  %1521 = load ptr, ptr %21, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.ImGuiIO, ptr %1521, i32 0, i32 70
  %1523 = load i8, ptr %1522, align 4, !tbaa !146, !range !43, !noundef !44
  %1524 = trunc i8 %1523 to i1
  br i1 %1524, label %1525, label %1530

1525:                                             ; preds = %1520
  %1526 = load ptr, ptr %21, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.ImGuiIO, ptr %1526, i32 0, i32 72
  %1528 = load i8, ptr %1527, align 2, !tbaa !178, !range !43, !noundef !44
  %1529 = trunc i8 %1528 to i1
  br i1 %1529, label %1530, label %1540

1530:                                             ; preds = %1525, %1520
  %1531 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %1532 = trunc i8 %1531 to i1
  br i1 %1532, label %1533, label %1538

1533:                                             ; preds = %1530
  %1534 = load ptr, ptr %21, align 8, !tbaa !5
  %1535 = getelementptr inbounds %struct.ImGuiIO, ptr %1534, i32 0, i32 70
  %1536 = load i8, ptr %1535, align 4, !tbaa !146, !range !43, !noundef !44
  %1537 = trunc i8 %1536 to i1
  br label %1538

1538:                                             ; preds = %1533, %1530
  %1539 = phi i1 [ false, %1530 ], [ %1537, %1533 ]
  br label %1540

1540:                                             ; preds = %1538, %1525
  %1541 = phi i1 [ true, %1525 ], [ %1539, %1538 ]
  %1542 = zext i1 %1541 to i8
  store i8 %1542, ptr %84, align 1, !tbaa !45
  %1543 = load ptr, ptr %21, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.ImGuiIO, ptr %1543, i32 0, i32 96
  %1545 = getelementptr inbounds %struct.ImVector.5, ptr %1544, i32 0, i32 0
  %1546 = load i32, ptr %1545, align 8, !tbaa !179
  %1547 = icmp sgt i32 %1546, 0
  br i1 %1547, label %1548, label %1596

1548:                                             ; preds = %1540
  %1549 = load i8, ptr %84, align 1, !tbaa !45, !range !43, !noundef !44
  %1550 = trunc i8 %1549 to i1
  br i1 %1550, label %1593, label %1551

1551:                                             ; preds = %1548
  %1552 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1553 = trunc i8 %1552 to i1
  br i1 %1553, label %1593, label %1554

1554:                                             ; preds = %1551
  %1555 = load i8, ptr %48, align 1, !tbaa !45, !range !43, !noundef !44
  %1556 = trunc i8 %1555 to i1
  br i1 %1556, label %1593, label %1557

1557:                                             ; preds = %1554
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #13
  store i32 0, ptr %85, align 4, !tbaa !9
  br label %1558

1558:                                             ; preds = %1589, %1557
  %1559 = load i32, ptr %85, align 4, !tbaa !9
  %1560 = load ptr, ptr %21, align 8, !tbaa !5
  %1561 = getelementptr inbounds %struct.ImGuiIO, ptr %1560, i32 0, i32 96
  %1562 = getelementptr inbounds %struct.ImVector.5, ptr %1561, i32 0, i32 0
  %1563 = load i32, ptr %1562, align 8, !tbaa !179
  %1564 = icmp slt i32 %1559, %1563
  br i1 %1564, label %1566, label %1565

1565:                                             ; preds = %1558
  store i32 4, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #13
  br label %1592

1566:                                             ; preds = %1558
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #13
  %1567 = load ptr, ptr %21, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.ImGuiIO, ptr %1567, i32 0, i32 96
  %1569 = load i32, ptr %85, align 4, !tbaa !9
  %1570 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1568, i32 noundef %1569)
  %1571 = load i16, ptr %1570, align 2, !tbaa !173
  %1572 = zext i16 %1571 to i32
  store i32 %1572, ptr %86, align 4, !tbaa !9
  %1573 = load i32, ptr %86, align 4, !tbaa !9
  %1574 = icmp eq i32 %1573, 9
  br i1 %1574, label %1575, label %1576

1575:                                             ; preds = %1566
  store i32 6, ptr %19, align 4
  br label %1586

1576:                                             ; preds = %1566
  %1577 = load ptr, ptr %20, align 8, !tbaa !5
  %1578 = load i32, ptr %15, align 4, !tbaa !9
  %1579 = load ptr, ptr %16, align 8, !tbaa !5
  %1580 = load ptr, ptr %17, align 8, !tbaa !5
  %1581 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %1577, ptr noundef %86, i32 noundef %1578, ptr noundef %1579, ptr noundef %1580, i1 noundef zeroext false)
  br i1 %1581, label %1582, label %1585

1582:                                             ; preds = %1576
  %1583 = load ptr, ptr %43, align 8, !tbaa !5
  %1584 = load i32, ptr %86, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %1583, i32 noundef %1584)
  br label %1585

1585:                                             ; preds = %1582, %1576
  store i32 0, ptr %19, align 4
  br label %1586

1586:                                             ; preds = %1585, %1575
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #13
  %1587 = load i32, ptr %19, align 4
  switch i32 %1587, label %3732 [
    i32 0, label %1588
    i32 6, label %1589
  ]

1588:                                             ; preds = %1586
  br label %1589

1589:                                             ; preds = %1588, %1586
  %1590 = load i32, ptr %85, align 4, !tbaa !9
  %1591 = add nsw i32 %1590, 1
  store i32 %1591, ptr %85, align 4, !tbaa !9
  br label %1558, !llvm.loop !180

1592:                                             ; preds = %1565
  br label %1593

1593:                                             ; preds = %1592, %1554, %1551, %1548
  %1594 = load ptr, ptr %21, align 8, !tbaa !5
  %1595 = getelementptr inbounds %struct.ImGuiIO, ptr %1594, i32 0, i32 96
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1595, i32 noundef 0)
  br label %1596

1596:                                             ; preds = %1593, %1540
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #13
  br label %1597

1597:                                             ; preds = %1596, %1188
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #13
  store i8 0, ptr %87, align 1, !tbaa !45
  %1598 = load ptr, ptr %20, align 8, !tbaa !5
  %1599 = getelementptr inbounds %struct.ImGuiContext, ptr %1598, i32 0, i32 56
  %1600 = load i32, ptr %1599, align 4, !tbaa !118
  %1601 = load i32, ptr %25, align 4, !tbaa !9
  %1602 = icmp eq i32 %1600, %1601
  br i1 %1602, label %1603, label %2373

1603:                                             ; preds = %1597
  %1604 = load ptr, ptr %20, align 8, !tbaa !5
  %1605 = getelementptr inbounds %struct.ImGuiContext, ptr %1604, i32 0, i32 59
  %1606 = load i8, ptr %1605, align 8, !tbaa !182, !range !43, !noundef !44
  %1607 = trunc i8 %1606 to i1
  br i1 %1607, label %2373, label %1608

1608:                                             ; preds = %1603
  %1609 = load i8, ptr %52, align 1, !tbaa !45, !range !43, !noundef !44
  %1610 = trunc i8 %1609 to i1
  br i1 %1610, label %2373, label %1611

1611:                                             ; preds = %1608
  %1612 = load ptr, ptr %43, align 8, !tbaa !5
  %1613 = icmp ne ptr %1612, null
  br i1 %1613, label %1614, label %1615

1614:                                             ; preds = %1611
  br label %1617

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

1616:                                             ; No predecessors!
  br label %1617

1617:                                             ; preds = %1616, %1614
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #13
  %1618 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %1619 = load float, ptr %1618, align 4, !tbaa !111
  %1620 = load ptr, ptr %22, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.ImGuiStyle, ptr %1620, i32 0, i32 12
  %1622 = getelementptr inbounds %struct.ImVec2, ptr %1621, i32 0, i32 1
  %1623 = load float, ptr %1622, align 4, !tbaa !112
  %1624 = fsub float %1619, %1623
  %1625 = load ptr, ptr %20, align 8, !tbaa !5
  %1626 = getelementptr inbounds %struct.ImGuiContext, ptr %1625, i32 0, i32 6
  %1627 = load float, ptr %1626, align 8, !tbaa !48
  %1628 = fdiv float %1624, %1627
  %1629 = fptosi float %1628 to i32
  %1630 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1629, i32 noundef 1)
  store i32 %1630, ptr %88, align 4, !tbaa !9
  %1631 = load i32, ptr %88, align 4, !tbaa !9
  %1632 = load ptr, ptr %43, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1632, i32 0, i32 1
  %1634 = load ptr, ptr %1633, align 8, !tbaa !131
  %1635 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1634, i32 0, i32 4
  store i32 %1631, ptr %1635, align 4, !tbaa !183
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #13
  %1636 = load ptr, ptr %21, align 8, !tbaa !5
  %1637 = getelementptr inbounds %struct.ImGuiIO, ptr %1636, i32 0, i32 71
  %1638 = load i8, ptr %1637, align 1, !tbaa !174, !range !43, !noundef !44
  %1639 = trunc i8 %1638 to i1
  %1640 = zext i1 %1639 to i64
  %1641 = select i1 %1639, i32 4194304, i32 0
  store i32 %1641, ptr %89, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #13
  %1642 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %1643 = trunc i8 %1642 to i1
  br i1 %1643, label %1644, label %1649

1644:                                             ; preds = %1617
  %1645 = load ptr, ptr %21, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct.ImGuiIO, ptr %1645, i32 0, i32 72
  %1647 = load i8, ptr %1646, align 2, !tbaa !178, !range !43, !noundef !44
  %1648 = trunc i8 %1647 to i1
  br label %1654

1649:                                             ; preds = %1617
  %1650 = load ptr, ptr %21, align 8, !tbaa !5
  %1651 = getelementptr inbounds %struct.ImGuiIO, ptr %1650, i32 0, i32 70
  %1652 = load i8, ptr %1651, align 4, !tbaa !146, !range !43, !noundef !44
  %1653 = trunc i8 %1652 to i1
  br label %1654

1654:                                             ; preds = %1649, %1644
  %1655 = phi i1 [ %1648, %1644 ], [ %1653, %1649 ]
  %1656 = zext i1 %1655 to i8
  store i8 %1656, ptr %90, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #13
  %1657 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %1658 = trunc i8 %1657 to i1
  br i1 %1658, label %1659, label %1675

1659:                                             ; preds = %1654
  %1660 = load ptr, ptr %21, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.ImGuiIO, ptr %1660, i32 0, i32 70
  %1662 = load i8, ptr %1661, align 4, !tbaa !146, !range !43, !noundef !44
  %1663 = trunc i8 %1662 to i1
  br i1 %1663, label %1664, label %1675

1664:                                             ; preds = %1659
  %1665 = load ptr, ptr %21, align 8, !tbaa !5
  %1666 = getelementptr inbounds %struct.ImGuiIO, ptr %1665, i32 0, i32 73
  %1667 = load i8, ptr %1666, align 1, !tbaa !184, !range !43, !noundef !44
  %1668 = trunc i8 %1667 to i1
  br i1 %1668, label %1675, label %1669

1669:                                             ; preds = %1664
  %1670 = load ptr, ptr %21, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.ImGuiIO, ptr %1670, i32 0, i32 72
  %1672 = load i8, ptr %1671, align 2, !tbaa !178, !range !43, !noundef !44
  %1673 = trunc i8 %1672 to i1
  %1674 = xor i1 %1673, true
  br label %1675

1675:                                             ; preds = %1669, %1664, %1659, %1654
  %1676 = phi i1 [ false, %1664 ], [ false, %1659 ], [ false, %1654 ], [ %1674, %1669 ]
  %1677 = zext i1 %1676 to i8
  store i8 %1677, ptr %91, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #13
  store i32 1, ptr %92, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #13
  %1678 = load i32, ptr %25, align 4, !tbaa !9
  %1679 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4665, i32 noundef 1, i32 noundef %1678)
  br i1 %1679, label %1683, label %1680

1680:                                             ; preds = %1675
  %1681 = load i32, ptr %25, align 4, !tbaa !9
  %1682 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 8714, i32 noundef 1, i32 noundef %1681)
  br i1 %1682, label %1683, label %1697

1683:                                             ; preds = %1680, %1675
  %1684 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1685 = trunc i8 %1684 to i1
  br i1 %1685, label %1697, label %1686

1686:                                             ; preds = %1683
  %1687 = load i8, ptr %45, align 1, !tbaa !45, !range !43, !noundef !44
  %1688 = trunc i8 %1687 to i1
  br i1 %1688, label %1697, label %1689

1689:                                             ; preds = %1686
  %1690 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1691 = trunc i8 %1690 to i1
  br i1 %1691, label %1692, label %1695

1692:                                             ; preds = %1689
  %1693 = load ptr, ptr %43, align 8, !tbaa !5
  %1694 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %1693)
  br label %1695

1695:                                             ; preds = %1692, %1689
  %1696 = phi i1 [ true, %1689 ], [ %1694, %1692 ]
  br label %1697

1697:                                             ; preds = %1695, %1686, %1683, %1680
  %1698 = phi i1 [ false, %1686 ], [ false, %1683 ], [ false, %1680 ], [ %1696, %1695 ]
  %1699 = zext i1 %1698 to i8
  store i8 %1699, ptr %93, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #13
  %1700 = load i32, ptr %25, align 4, !tbaa !9
  %1701 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4644, i32 noundef 0, i32 noundef %1700)
  br i1 %1701, label %1705, label %1702

1702:                                             ; preds = %1697
  %1703 = load i32, ptr %25, align 4, !tbaa !9
  %1704 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4617, i32 noundef 0, i32 noundef %1703)
  br i1 %1704, label %1705, label %1716

1705:                                             ; preds = %1702, %1697
  %1706 = load i8, ptr %45, align 1, !tbaa !45, !range !43, !noundef !44
  %1707 = trunc i8 %1706 to i1
  br i1 %1707, label %1716, label %1708

1708:                                             ; preds = %1705
  %1709 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1710 = trunc i8 %1709 to i1
  br i1 %1710, label %1711, label %1714

1711:                                             ; preds = %1708
  %1712 = load ptr, ptr %43, align 8, !tbaa !5
  %1713 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %1712)
  br label %1714

1714:                                             ; preds = %1711, %1708
  %1715 = phi i1 [ true, %1708 ], [ %1713, %1711 ]
  br label %1716

1716:                                             ; preds = %1714, %1705, %1702
  %1717 = phi i1 [ false, %1705 ], [ false, %1702 ], [ %1715, %1714 ]
  %1718 = zext i1 %1717 to i8
  store i8 %1718, ptr %94, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #13
  %1719 = load i32, ptr %25, align 4, !tbaa !9
  %1720 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4663, i32 noundef 1, i32 noundef %1719)
  br i1 %1720, label %1724, label %1721

1721:                                             ; preds = %1716
  %1722 = load i32, ptr %25, align 4, !tbaa !9
  %1723 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 8713, i32 noundef 1, i32 noundef %1722)
  br i1 %1723, label %1724, label %1728

1724:                                             ; preds = %1721, %1716
  %1725 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1726 = trunc i8 %1725 to i1
  %1727 = xor i1 %1726, true
  br label %1728

1728:                                             ; preds = %1724, %1721
  %1729 = phi i1 [ false, %1721 ], [ %1727, %1724 ]
  %1730 = zext i1 %1729 to i8
  store i8 %1730, ptr %95, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #13
  %1731 = load i32, ptr %25, align 4, !tbaa !9
  %1732 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4667, i32 noundef 1, i32 noundef %1731)
  br i1 %1732, label %1733, label %1739

1733:                                             ; preds = %1728
  %1734 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1735 = trunc i8 %1734 to i1
  br i1 %1735, label %1739, label %1736

1736:                                             ; preds = %1733
  %1737 = load i8, ptr %46, align 1, !tbaa !45, !range !43, !noundef !44
  %1738 = trunc i8 %1737 to i1
  br label %1739

1739:                                             ; preds = %1736, %1733, %1728
  %1740 = phi i1 [ false, %1733 ], [ false, %1728 ], [ %1738, %1736 ]
  %1741 = zext i1 %1740 to i8
  store i8 %1741, ptr %96, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #13
  %1742 = load i32, ptr %25, align 4, !tbaa !9
  %1743 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4666, i32 noundef 1, i32 noundef %1742)
  br i1 %1743, label %1750, label %1744

1744:                                             ; preds = %1739
  %1745 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %1746 = trunc i8 %1745 to i1
  br i1 %1746, label %1747, label %1756

1747:                                             ; preds = %1744
  %1748 = load i32, ptr %25, align 4, !tbaa !9
  %1749 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 12859, i32 noundef 1, i32 noundef %1748)
  br i1 %1749, label %1750, label %1756

1750:                                             ; preds = %1747, %1739
  %1751 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1752 = trunc i8 %1751 to i1
  br i1 %1752, label %1756, label %1753

1753:                                             ; preds = %1750
  %1754 = load i8, ptr %46, align 1, !tbaa !45, !range !43, !noundef !44
  %1755 = trunc i8 %1754 to i1
  br label %1756

1756:                                             ; preds = %1753, %1750, %1747, %1744
  %1757 = phi i1 [ false, %1750 ], [ false, %1747 ], [ false, %1744 ], [ %1755, %1753 ]
  %1758 = zext i1 %1757 to i8
  store i8 %1758, ptr %97, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #13
  %1759 = load i32, ptr %25, align 4, !tbaa !9
  %1760 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4642, i32 noundef 0, i32 noundef %1759)
  %1761 = zext i1 %1760 to i8
  store i8 %1761, ptr %98, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #13
  %1762 = load ptr, ptr %21, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.ImGuiIO, ptr %1762, i32 0, i32 0
  %1764 = load i32, ptr %1763, align 8, !tbaa !185
  %1765 = and i32 %1764, 2
  %1766 = icmp ne i32 %1765, 0
  br i1 %1766, label %1767, label %1773

1767:                                             ; preds = %1756
  %1768 = load ptr, ptr %21, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.ImGuiIO, ptr %1768, i32 0, i32 1
  %1770 = load i32, ptr %1769, align 4, !tbaa !186
  %1771 = and i32 %1770, 1
  %1772 = icmp ne i32 %1771, 0
  br label %1773

1773:                                             ; preds = %1767, %1756
  %1774 = phi i1 [ false, %1756 ], [ %1772, %1767 ]
  %1775 = zext i1 %1774 to i8
  store i8 %1775, ptr %99, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #13
  %1776 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %1776, label %1779, label %1777

1777:                                             ; preds = %1773
  %1778 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 627, i1 noundef zeroext true)
  br label %1779

1779:                                             ; preds = %1777, %1773
  %1780 = phi i1 [ true, %1773 ], [ %1778, %1777 ]
  %1781 = zext i1 %1780 to i8
  store i8 %1781, ptr %100, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %101) #13
  %1782 = load i8, ptr %99, align 1, !tbaa !45, !range !43, !noundef !44
  %1783 = trunc i8 %1782 to i1
  br i1 %1783, label %1784, label %1797

1784:                                             ; preds = %1779
  %1785 = load ptr, ptr %20, align 8, !tbaa !5
  %1786 = getelementptr inbounds %struct.ImGuiContext, ptr %1785, i32 0, i32 2
  %1787 = getelementptr inbounds %struct.ImGuiIO, ptr %1786, i32 0, i32 13
  %1788 = load i8, ptr %1787, align 8, !tbaa !187, !range !43, !noundef !44
  %1789 = trunc i8 %1788 to i1
  %1790 = zext i1 %1789 to i64
  %1791 = select i1 %1789, i32 634, i32 636
  %1792 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef %1791, i1 noundef zeroext false)
  br i1 %1792, label %1795, label %1793

1793:                                             ; preds = %1784
  %1794 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 635, i1 noundef zeroext false)
  br label %1795

1795:                                             ; preds = %1793, %1784
  %1796 = phi i1 [ true, %1784 ], [ %1794, %1793 ]
  br label %1797

1797:                                             ; preds = %1795, %1779
  %1798 = phi i1 [ false, %1779 ], [ %1796, %1795 ]
  %1799 = zext i1 %1798 to i8
  store i8 %1799, ptr %101, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #13
  %1800 = load i32, ptr %25, align 4, !tbaa !9
  %1801 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 526, i32 noundef 1, i32 noundef %1800)
  br i1 %1801, label %1817, label %1802

1802:                                             ; preds = %1797
  %1803 = load i8, ptr %99, align 1, !tbaa !45, !range !43, !noundef !44
  %1804 = trunc i8 %1803 to i1
  br i1 %1804, label %1805, label %1815

1805:                                             ; preds = %1802
  %1806 = load ptr, ptr %20, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.ImGuiContext, ptr %1806, i32 0, i32 2
  %1808 = getelementptr inbounds %struct.ImGuiIO, ptr %1807, i32 0, i32 13
  %1809 = load i8, ptr %1808, align 8, !tbaa !187, !range !43, !noundef !44
  %1810 = trunc i8 %1809 to i1
  %1811 = zext i1 %1810 to i64
  %1812 = select i1 %1810, i32 636, i32 634
  %1813 = load i32, ptr %25, align 4, !tbaa !9
  %1814 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef %1812, i32 noundef 1, i32 noundef %1813)
  br label %1815

1815:                                             ; preds = %1805, %1802
  %1816 = phi i1 [ false, %1802 ], [ %1814, %1805 ]
  br label %1817

1817:                                             ; preds = %1815, %1797
  %1818 = phi i1 [ true, %1797 ], [ %1816, %1815 ]
  %1819 = zext i1 %1818 to i8
  store i8 %1819, ptr %102, align 1, !tbaa !45
  %1820 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %1820, label %1821, label %1835

1821:                                             ; preds = %1817
  %1822 = load ptr, ptr %43, align 8, !tbaa !5
  %1823 = load i8, ptr %91, align 1, !tbaa !45, !range !43, !noundef !44
  %1824 = trunc i8 %1823 to i1
  br i1 %1824, label %1825, label %1826

1825:                                             ; preds = %1821
  br label %1831

1826:                                             ; preds = %1821
  %1827 = load i8, ptr %90, align 1, !tbaa !45, !range !43, !noundef !44
  %1828 = trunc i8 %1827 to i1
  %1829 = zext i1 %1828 to i64
  %1830 = select i1 %1828, i32 2097164, i32 2097152
  br label %1831

1831:                                             ; preds = %1826, %1825
  %1832 = phi i32 [ 2097156, %1825 ], [ %1830, %1826 ]
  %1833 = load i32, ptr %89, align 4, !tbaa !9
  %1834 = or i32 %1832, %1833
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1822, i32 noundef %1834)
  br label %2358

1835:                                             ; preds = %1817
  %1836 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %1836, label %1837, label %1851

1837:                                             ; preds = %1835
  %1838 = load ptr, ptr %43, align 8, !tbaa !5
  %1839 = load i8, ptr %91, align 1, !tbaa !45, !range !43, !noundef !44
  %1840 = trunc i8 %1839 to i1
  br i1 %1840, label %1841, label %1842

1841:                                             ; preds = %1837
  br label %1847

1842:                                             ; preds = %1837
  %1843 = load i8, ptr %90, align 1, !tbaa !45, !range !43, !noundef !44
  %1844 = trunc i8 %1843 to i1
  %1845 = zext i1 %1844 to i64
  %1846 = select i1 %1844, i32 2097165, i32 2097153
  br label %1847

1847:                                             ; preds = %1842, %1841
  %1848 = phi i32 [ 2097157, %1841 ], [ %1846, %1842 ]
  %1849 = load i32, ptr %89, align 4, !tbaa !9
  %1850 = or i32 %1848, %1849
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1838, i32 noundef %1850)
  br label %2357

1851:                                             ; preds = %1835
  %1852 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1852, label %1853, label %1881

1853:                                             ; preds = %1851
  %1854 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1855 = trunc i8 %1854 to i1
  br i1 %1855, label %1856, label %1881

1856:                                             ; preds = %1853
  %1857 = load ptr, ptr %21, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.ImGuiIO, ptr %1857, i32 0, i32 70
  %1859 = load i8, ptr %1858, align 4, !tbaa !146, !range !43, !noundef !44
  %1860 = trunc i8 %1859 to i1
  br i1 %1860, label %1861, label %1872

1861:                                             ; preds = %1856
  %1862 = load ptr, ptr %34, align 8, !tbaa !5
  %1863 = load ptr, ptr %34, align 8, !tbaa !5
  %1864 = getelementptr inbounds %struct.ImGuiWindow, ptr %1863, i32 0, i32 28
  %1865 = getelementptr inbounds %struct.ImVec2, ptr %1864, i32 0, i32 1
  %1866 = load float, ptr %1865, align 4, !tbaa !129
  %1867 = load ptr, ptr %20, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct.ImGuiContext, ptr %1867, i32 0, i32 6
  %1869 = load float, ptr %1868, align 8, !tbaa !48
  %1870 = fsub float %1866, %1869
  %1871 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1870, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1862, float noundef %1871)
  br label %1880

1872:                                             ; preds = %1856
  %1873 = load ptr, ptr %43, align 8, !tbaa !5
  %1874 = load i8, ptr %91, align 1, !tbaa !45, !range !43, !noundef !44
  %1875 = trunc i8 %1874 to i1
  %1876 = zext i1 %1875 to i64
  %1877 = select i1 %1875, i32 2097158, i32 2097154
  %1878 = load i32, ptr %89, align 4, !tbaa !9
  %1879 = or i32 %1877, %1878
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1873, i32 noundef %1879)
  br label %1880

1880:                                             ; preds = %1872, %1861
  br label %2356

1881:                                             ; preds = %1853, %1851
  %1882 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1882, label %1883, label %1912

1883:                                             ; preds = %1881
  %1884 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1885 = trunc i8 %1884 to i1
  br i1 %1885, label %1886, label %1912

1886:                                             ; preds = %1883
  %1887 = load ptr, ptr %21, align 8, !tbaa !5
  %1888 = getelementptr inbounds %struct.ImGuiIO, ptr %1887, i32 0, i32 70
  %1889 = load i8, ptr %1888, align 4, !tbaa !146, !range !43, !noundef !44
  %1890 = trunc i8 %1889 to i1
  br i1 %1890, label %1891, label %1903

1891:                                             ; preds = %1886
  %1892 = load ptr, ptr %34, align 8, !tbaa !5
  %1893 = load ptr, ptr %34, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.ImGuiWindow, ptr %1893, i32 0, i32 28
  %1895 = getelementptr inbounds %struct.ImVec2, ptr %1894, i32 0, i32 1
  %1896 = load float, ptr %1895, align 4, !tbaa !129
  %1897 = load ptr, ptr %20, align 8, !tbaa !5
  %1898 = getelementptr inbounds %struct.ImGuiContext, ptr %1897, i32 0, i32 6
  %1899 = load float, ptr %1898, align 8, !tbaa !48
  %1900 = fadd float %1896, %1899
  %1901 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1902 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1900, float noundef %1901)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1892, float noundef %1902)
  br label %1911

1903:                                             ; preds = %1886
  %1904 = load ptr, ptr %43, align 8, !tbaa !5
  %1905 = load i8, ptr %91, align 1, !tbaa !45, !range !43, !noundef !44
  %1906 = trunc i8 %1905 to i1
  %1907 = zext i1 %1906 to i64
  %1908 = select i1 %1906, i32 2097159, i32 2097155
  %1909 = load i32, ptr %89, align 4, !tbaa !9
  %1910 = or i32 %1908, %1909
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1904, i32 noundef %1910)
  br label %1911

1911:                                             ; preds = %1903, %1891
  br label %2355

1912:                                             ; preds = %1883, %1881
  %1913 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  br i1 %1913, label %1914, label %1929

1914:                                             ; preds = %1912
  %1915 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1916 = trunc i8 %1915 to i1
  br i1 %1916, label %1917, label %1929

1917:                                             ; preds = %1914
  %1918 = load ptr, ptr %43, align 8, !tbaa !5
  %1919 = load i32, ptr %89, align 4, !tbaa !9
  %1920 = or i32 2097166, %1919
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1918, i32 noundef %1920)
  %1921 = load i32, ptr %88, align 4, !tbaa !9
  %1922 = sitofp i32 %1921 to float
  %1923 = load ptr, ptr %20, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.ImGuiContext, ptr %1923, i32 0, i32 6
  %1925 = load float, ptr %1924, align 8, !tbaa !48
  %1926 = load float, ptr %54, align 4, !tbaa !47
  %1927 = fneg float %1922
  %1928 = call float @llvm.fmuladd.f32(float %1927, float %1925, float %1926)
  store float %1928, ptr %54, align 4, !tbaa !47
  br label %2354

1929:                                             ; preds = %1914, %1912
  %1930 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  br i1 %1930, label %1931, label %1945

1931:                                             ; preds = %1929
  %1932 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %1933 = trunc i8 %1932 to i1
  br i1 %1933, label %1934, label %1945

1934:                                             ; preds = %1931
  %1935 = load ptr, ptr %43, align 8, !tbaa !5
  %1936 = load i32, ptr %89, align 4, !tbaa !9
  %1937 = or i32 2097167, %1936
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1935, i32 noundef %1937)
  %1938 = load i32, ptr %88, align 4, !tbaa !9
  %1939 = sitofp i32 %1938 to float
  %1940 = load ptr, ptr %20, align 8, !tbaa !5
  %1941 = getelementptr inbounds %struct.ImGuiContext, ptr %1940, i32 0, i32 6
  %1942 = load float, ptr %1941, align 8, !tbaa !48
  %1943 = load float, ptr %54, align 4, !tbaa !47
  %1944 = call float @llvm.fmuladd.f32(float %1939, float %1942, float %1943)
  store float %1944, ptr %54, align 4, !tbaa !47
  br label %2353

1945:                                             ; preds = %1931, %1929
  %1946 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %1946, label %1947, label %1961

1947:                                             ; preds = %1945
  %1948 = load ptr, ptr %43, align 8, !tbaa !5
  %1949 = load ptr, ptr %21, align 8, !tbaa !5
  %1950 = getelementptr inbounds %struct.ImGuiIO, ptr %1949, i32 0, i32 70
  %1951 = load i8, ptr %1950, align 4, !tbaa !146, !range !43, !noundef !44
  %1952 = trunc i8 %1951 to i1
  br i1 %1952, label %1953, label %1956

1953:                                             ; preds = %1947
  %1954 = load i32, ptr %89, align 4, !tbaa !9
  %1955 = or i32 2097158, %1954
  br label %1959

1956:                                             ; preds = %1947
  %1957 = load i32, ptr %89, align 4, !tbaa !9
  %1958 = or i32 2097156, %1957
  br label %1959

1959:                                             ; preds = %1956, %1953
  %1960 = phi i32 [ %1955, %1953 ], [ %1958, %1956 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1948, i32 noundef %1960)
  br label %2352

1961:                                             ; preds = %1945
  %1962 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %1962, label %1963, label %1977

1963:                                             ; preds = %1961
  %1964 = load ptr, ptr %43, align 8, !tbaa !5
  %1965 = load ptr, ptr %21, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.ImGuiIO, ptr %1965, i32 0, i32 70
  %1967 = load i8, ptr %1966, align 4, !tbaa !146, !range !43, !noundef !44
  %1968 = trunc i8 %1967 to i1
  br i1 %1968, label %1969, label %1972

1969:                                             ; preds = %1963
  %1970 = load i32, ptr %89, align 4, !tbaa !9
  %1971 = or i32 2097159, %1970
  br label %1975

1972:                                             ; preds = %1963
  %1973 = load i32, ptr %89, align 4, !tbaa !9
  %1974 = or i32 2097157, %1973
  br label %1975

1975:                                             ; preds = %1972, %1969
  %1976 = phi i32 [ %1971, %1969 ], [ %1974, %1972 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1964, i32 noundef %1976)
  br label %2351

1977:                                             ; preds = %1961
  %1978 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1978, label %1979, label %1998

1979:                                             ; preds = %1977
  %1980 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %1981 = trunc i8 %1980 to i1
  br i1 %1981, label %1998, label %1982

1982:                                             ; preds = %1979
  %1983 = load i8, ptr %93, align 1, !tbaa !45, !range !43, !noundef !44
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1998, label %1985

1985:                                             ; preds = %1982
  %1986 = load ptr, ptr %43, align 8, !tbaa !5
  %1987 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %1986)
  br i1 %1987, label %1994, label %1988

1988:                                             ; preds = %1985
  %1989 = load i8, ptr %90, align 1, !tbaa !45, !range !43, !noundef !44
  %1990 = trunc i8 %1989 to i1
  br i1 %1990, label %1991, label %1993

1991:                                             ; preds = %1988
  %1992 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1992, i32 noundef 6291469)
  br label %1993

1993:                                             ; preds = %1991, %1988
  br label %1994

1994:                                             ; preds = %1993, %1985
  %1995 = load ptr, ptr %43, align 8, !tbaa !5
  %1996 = load i32, ptr %89, align 4, !tbaa !9
  %1997 = or i32 2097160, %1996
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %1995, i32 noundef %1997)
  br label %2350

1998:                                             ; preds = %1982, %1979, %1977
  %1999 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  br i1 %1999, label %2000, label %2037

2000:                                             ; preds = %1998
  %2001 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %2002 = trunc i8 %2001 to i1
  br i1 %2002, label %2037, label %2003

2003:                                             ; preds = %2000
  %2004 = load ptr, ptr %43, align 8, !tbaa !5
  %2005 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2004)
  br i1 %2005, label %2033, label %2006

2006:                                             ; preds = %2003
  %2007 = load i8, ptr %90, align 1, !tbaa !45, !range !43, !noundef !44
  %2008 = trunc i8 %2007 to i1
  br i1 %2008, label %2009, label %2011

2009:                                             ; preds = %2006
  %2010 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %2010, i32 noundef 6291468)
  br label %2032

2011:                                             ; preds = %2006
  %2012 = load i8, ptr %64, align 1, !tbaa !45, !range !43, !noundef !44
  %2013 = trunc i8 %2012 to i1
  br i1 %2013, label %2014, label %2031

2014:                                             ; preds = %2011
  %2015 = load ptr, ptr %21, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.ImGuiIO, ptr %2015, i32 0, i32 70
  %2017 = load i8, ptr %2016, align 4, !tbaa !146, !range !43, !noundef !44
  %2018 = trunc i8 %2017 to i1
  br i1 %2018, label %2019, label %2031

2019:                                             ; preds = %2014
  %2020 = load ptr, ptr %21, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.ImGuiIO, ptr %2020, i32 0, i32 72
  %2022 = load i8, ptr %2021, align 2, !tbaa !178, !range !43, !noundef !44
  %2023 = trunc i8 %2022 to i1
  br i1 %2023, label %2031, label %2024

2024:                                             ; preds = %2019
  %2025 = load ptr, ptr %21, align 8, !tbaa !5
  %2026 = getelementptr inbounds %struct.ImGuiIO, ptr %2025, i32 0, i32 73
  %2027 = load i8, ptr %2026, align 1, !tbaa !184, !range !43, !noundef !44
  %2028 = trunc i8 %2027 to i1
  br i1 %2028, label %2031, label %2029

2029:                                             ; preds = %2024
  %2030 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %2030, i32 noundef 6291460)
  br label %2031

2031:                                             ; preds = %2029, %2024, %2019, %2014, %2011
  br label %2032

2032:                                             ; preds = %2031, %2009
  br label %2033

2033:                                             ; preds = %2032, %2003
  %2034 = load ptr, ptr %43, align 8, !tbaa !5
  %2035 = load i32, ptr %89, align 4, !tbaa !9
  %2036 = or i32 2097161, %2035
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %2034, i32 noundef %2036)
  br label %2349

2037:                                             ; preds = %2000, %1998
  %2038 = load i8, ptr %100, align 1, !tbaa !45, !range !43, !noundef !44
  %2039 = trunc i8 %2038 to i1
  br i1 %2039, label %2043, label %2040

2040:                                             ; preds = %2037
  %2041 = load i8, ptr %101, align 1, !tbaa !45, !range !43, !noundef !44
  %2042 = trunc i8 %2041 to i1
  br i1 %2042, label %2043, label %2096

2043:                                             ; preds = %2040, %2037
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #13
  %2044 = load i32, ptr %15, align 4, !tbaa !9
  %2045 = and i32 %2044, 256
  %2046 = icmp ne i32 %2045, 0
  %2047 = zext i1 %2046 to i8
  store i8 %2047, ptr %103, align 1, !tbaa !45
  %2048 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2049 = trunc i8 %2048 to i1
  br i1 %2049, label %2050, label %2069

2050:                                             ; preds = %2043
  %2051 = load i8, ptr %101, align 1, !tbaa !45, !range !43, !noundef !44
  %2052 = trunc i8 %2051 to i1
  br i1 %2052, label %2069, label %2053

2053:                                             ; preds = %2050
  %2054 = load i8, ptr %103, align 1, !tbaa !45, !range !43, !noundef !44
  %2055 = trunc i8 %2054 to i1
  br i1 %2055, label %2056, label %2061

2056:                                             ; preds = %2053
  %2057 = load ptr, ptr %21, align 8, !tbaa !5
  %2058 = getelementptr inbounds %struct.ImGuiIO, ptr %2057, i32 0, i32 70
  %2059 = load i8, ptr %2058, align 4, !tbaa !146, !range !43, !noundef !44
  %2060 = trunc i8 %2059 to i1
  br i1 %2060, label %2061, label %2069

2061:                                             ; preds = %2056, %2053
  %2062 = load i8, ptr %103, align 1, !tbaa !45, !range !43, !noundef !44
  %2063 = trunc i8 %2062 to i1
  br i1 %2063, label %2081, label %2064

2064:                                             ; preds = %2061
  %2065 = load ptr, ptr %21, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.ImGuiIO, ptr %2065, i32 0, i32 70
  %2067 = load i8, ptr %2066, align 4, !tbaa !146, !range !43, !noundef !44
  %2068 = trunc i8 %2067 to i1
  br i1 %2068, label %2069, label %2081

2069:                                             ; preds = %2064, %2056, %2050, %2043
  store i8 1, ptr %73, align 1, !tbaa !45
  %2070 = load ptr, ptr %21, align 8, !tbaa !5
  %2071 = getelementptr inbounds %struct.ImGuiIO, ptr %2070, i32 0, i32 24
  %2072 = load i8, ptr %2071, align 1, !tbaa !188, !range !43, !noundef !44
  %2073 = trunc i8 %2072 to i1
  br i1 %2073, label %2074, label %2079

2074:                                             ; preds = %2069
  %2075 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2076 = trunc i8 %2075 to i1
  br i1 %2076, label %2079, label %2077

2077:                                             ; preds = %2074
  %2078 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %2078)
  br label %2080

2079:                                             ; preds = %2074, %2069
  store i8 1, ptr %52, align 1, !tbaa !45
  br label %2080

2080:                                             ; preds = %2079, %2077
  br label %2095

2081:                                             ; preds = %2064, %2061
  %2082 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %2083 = trunc i8 %2082 to i1
  br i1 %2083, label %2094, label %2084

2084:                                             ; preds = %2081
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #13
  store i32 10, ptr %104, align 4, !tbaa !9
  %2085 = load ptr, ptr %20, align 8, !tbaa !5
  %2086 = load i32, ptr %15, align 4, !tbaa !9
  %2087 = load ptr, ptr %16, align 8, !tbaa !5
  %2088 = load ptr, ptr %17, align 8, !tbaa !5
  %2089 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %2085, ptr noundef %104, i32 noundef %2086, ptr noundef %2087, ptr noundef %2088, i1 noundef zeroext false)
  br i1 %2089, label %2090, label %2093

2090:                                             ; preds = %2084
  %2091 = load ptr, ptr %43, align 8, !tbaa !5
  %2092 = load i32, ptr %104, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %2091, i32 noundef %2092)
  br label %2093

2093:                                             ; preds = %2090, %2084
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #13
  br label %2094

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

2095:                                             ; preds = %2094, %2080
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #13
  br label %2348

2096:                                             ; preds = %2040
  %2097 = load i8, ptr %102, align 1, !tbaa !45, !range !43, !noundef !44
  %2098 = trunc i8 %2097 to i1
  br i1 %2098, label %2099, label %2114

2099:                                             ; preds = %2096
  %2100 = load i32, ptr %15, align 4, !tbaa !9
  %2101 = and i32 %2100, 128
  %2102 = icmp ne i32 %2101, 0
  br i1 %2102, label %2103, label %2112

2103:                                             ; preds = %2099
  %2104 = load ptr, ptr %12, align 8, !tbaa !5
  %2105 = getelementptr inbounds i8, ptr %2104, i64 0
  %2106 = load i8, ptr %2105, align 1, !tbaa !153
  %2107 = sext i8 %2106 to i32
  %2108 = icmp ne i32 %2107, 0
  br i1 %2108, label %2109, label %2110

2109:                                             ; preds = %2103
  store i8 1, ptr %87, align 1, !tbaa !45
  br label %2111

2110:                                             ; preds = %2103
  store i8 0, ptr %71, align 1, !tbaa !45
  store i8 0, ptr %70, align 1, !tbaa !45
  store i8 1, ptr %52, align 1, !tbaa !45
  br label %2111

2111:                                             ; preds = %2110, %2109
  br label %2113

2112:                                             ; preds = %2099
  store i8 1, ptr %87, align 1, !tbaa !45
  store i8 1, ptr %52, align 1, !tbaa !45
  store i8 0, ptr %71, align 1, !tbaa !45
  store i8 0, ptr %70, align 1, !tbaa !45
  br label %2113

2113:                                             ; preds = %2112, %2111
  br label %2347

2114:                                             ; preds = %2096
  %2115 = load i8, ptr %96, align 1, !tbaa !45, !range !43, !noundef !44
  %2116 = trunc i8 %2115 to i1
  br i1 %2116, label %2120, label %2117

2117:                                             ; preds = %2114
  %2118 = load i8, ptr %97, align 1, !tbaa !45, !range !43, !noundef !44
  %2119 = trunc i8 %2118 to i1
  br i1 %2119, label %2120, label %2127

2120:                                             ; preds = %2117, %2114
  %2121 = load ptr, ptr %43, align 8, !tbaa !5
  %2122 = load i8, ptr %96, align 1, !tbaa !45, !range !43, !noundef !44
  %2123 = trunc i8 %2122 to i1
  %2124 = zext i1 %2123 to i64
  %2125 = select i1 %2123, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %2121, i32 noundef %2125)
  %2126 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2126)
  br label %2346

2127:                                             ; preds = %2117
  %2128 = load i8, ptr %98, align 1, !tbaa !45, !range !43, !noundef !44
  %2129 = trunc i8 %2128 to i1
  br i1 %2129, label %2130, label %2134

2130:                                             ; preds = %2127
  %2131 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %2131)
  %2132 = load ptr, ptr %43, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2132, i32 0, i32 13
  store i8 1, ptr %2133, align 8, !tbaa !175
  br label %2345

2134:                                             ; preds = %2127
  %2135 = load i8, ptr %93, align 1, !tbaa !45, !range !43, !noundef !44
  %2136 = trunc i8 %2135 to i1
  br i1 %2136, label %2140, label %2137

2137:                                             ; preds = %2134
  %2138 = load i8, ptr %94, align 1, !tbaa !45, !range !43, !noundef !44
  %2139 = trunc i8 %2138 to i1
  br i1 %2139, label %2140, label %2234

2140:                                             ; preds = %2137, %2134
  %2141 = load ptr, ptr %20, align 8, !tbaa !5
  %2142 = getelementptr inbounds %struct.ImGuiContext, ptr %2141, i32 0, i32 3
  %2143 = getelementptr inbounds %struct.ImGuiPlatformIO, ptr %2142, i32 0, i32 1
  %2144 = load ptr, ptr %2143, align 8, !tbaa !189
  %2145 = icmp ne ptr %2144, null
  br i1 %2145, label %2146, label %2217

2146:                                             ; preds = %2140
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #13
  %2147 = load ptr, ptr %43, align 8, !tbaa !5
  %2148 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2147)
  br i1 %2148, label %2149, label %2161

2149:                                             ; preds = %2146
  %2150 = load ptr, ptr %43, align 8, !tbaa !5
  %2151 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2150, i32 0, i32 1
  %2152 = load ptr, ptr %2151, align 8, !tbaa !131
  %2153 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2152, i32 0, i32 1
  %2154 = load i32, ptr %2153, align 4, !tbaa !138
  %2155 = load ptr, ptr %43, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2155, i32 0, i32 1
  %2157 = load ptr, ptr %2156, align 8, !tbaa !131
  %2158 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2157, i32 0, i32 2
  %2159 = load i32, ptr %2158, align 4, !tbaa !140
  %2160 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2154, i32 noundef %2159)
  br label %2162

2161:                                             ; preds = %2146
  br label %2162

2162:                                             ; preds = %2161, %2149
  %2163 = phi i32 [ %2160, %2149 ], [ 0, %2161 ]
  store i32 %2163, ptr %105, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #13
  %2164 = load ptr, ptr %43, align 8, !tbaa !5
  %2165 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2164)
  br i1 %2165, label %2166, label %2178

2166:                                             ; preds = %2162
  %2167 = load ptr, ptr %43, align 8, !tbaa !5
  %2168 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2167, i32 0, i32 1
  %2169 = load ptr, ptr %2168, align 8, !tbaa !131
  %2170 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2169, i32 0, i32 1
  %2171 = load i32, ptr %2170, align 4, !tbaa !138
  %2172 = load ptr, ptr %43, align 8, !tbaa !5
  %2173 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2172, i32 0, i32 1
  %2174 = load ptr, ptr %2173, align 8, !tbaa !131
  %2175 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2174, i32 0, i32 2
  %2176 = load i32, ptr %2175, align 4, !tbaa !140
  %2177 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2171, i32 noundef %2176)
  br label %2182

2178:                                             ; preds = %2162
  %2179 = load ptr, ptr %43, align 8, !tbaa !5
  %2180 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2179, i32 0, i32 4
  %2181 = load i32, ptr %2180, align 8, !tbaa !136
  br label %2182

2182:                                             ; preds = %2178, %2166
  %2183 = phi i32 [ %2177, %2166 ], [ %2181, %2178 ]
  store i32 %2183, ptr %106, align 4, !tbaa !9
  %2184 = load ptr, ptr %20, align 8, !tbaa !5
  %2185 = getelementptr inbounds %struct.ImGuiContext, ptr %2184, i32 0, i32 296
  %2186 = load i32, ptr %106, align 4, !tbaa !9
  %2187 = load i32, ptr %105, align 4, !tbaa !9
  %2188 = sub nsw i32 %2186, %2187
  %2189 = add nsw i32 %2188, 1
  call void @_ZN8ImVectorIcE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %2185, i32 noundef %2189)
  %2190 = load ptr, ptr %20, align 8, !tbaa !5
  %2191 = getelementptr inbounds %struct.ImGuiContext, ptr %2190, i32 0, i32 296
  %2192 = getelementptr inbounds %struct.ImVector.34, ptr %2191, i32 0, i32 2
  %2193 = load ptr, ptr %2192, align 8, !tbaa !190
  %2194 = load ptr, ptr %43, align 8, !tbaa !5
  %2195 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2194, i32 0, i32 6
  %2196 = load ptr, ptr %2195, align 8, !tbaa !152
  %2197 = load i32, ptr %105, align 4, !tbaa !9
  %2198 = sext i32 %2197 to i64
  %2199 = getelementptr inbounds i8, ptr %2196, i64 %2198
  %2200 = load i32, ptr %106, align 4, !tbaa !9
  %2201 = load i32, ptr %105, align 4, !tbaa !9
  %2202 = sub nsw i32 %2200, %2201
  %2203 = sext i32 %2202 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2193, ptr align 1 %2199, i64 %2203, i1 false)
  %2204 = load ptr, ptr %20, align 8, !tbaa !5
  %2205 = getelementptr inbounds %struct.ImGuiContext, ptr %2204, i32 0, i32 296
  %2206 = getelementptr inbounds %struct.ImVector.34, ptr %2205, i32 0, i32 2
  %2207 = load ptr, ptr %2206, align 8, !tbaa !190
  %2208 = load i32, ptr %106, align 4, !tbaa !9
  %2209 = load i32, ptr %105, align 4, !tbaa !9
  %2210 = sub nsw i32 %2208, %2209
  %2211 = sext i32 %2210 to i64
  %2212 = getelementptr inbounds i8, ptr %2207, i64 %2211
  store i8 0, ptr %2212, align 1, !tbaa !153
  %2213 = load ptr, ptr %20, align 8, !tbaa !5
  %2214 = getelementptr inbounds %struct.ImGuiContext, ptr %2213, i32 0, i32 296
  %2215 = getelementptr inbounds %struct.ImVector.34, ptr %2214, i32 0, i32 2
  %2216 = load ptr, ptr %2215, align 8, !tbaa !190
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %2216)
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #13
  br label %2217

2217:                                             ; preds = %2182, %2140
  %2218 = load i8, ptr %93, align 1, !tbaa !45, !range !43, !noundef !44
  %2219 = trunc i8 %2218 to i1
  br i1 %2219, label %2220, label %2233

2220:                                             ; preds = %2217
  %2221 = load ptr, ptr %43, align 8, !tbaa !5
  %2222 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2221)
  br i1 %2222, label %2225, label %2223

2223:                                             ; preds = %2220
  %2224 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %2224)
  br label %2225

2225:                                             ; preds = %2223, %2220
  %2226 = load ptr, ptr %43, align 8, !tbaa !5
  %2227 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2226, i32 0, i32 13
  store i8 1, ptr %2227, align 8, !tbaa !175
  %2228 = load ptr, ptr %43, align 8, !tbaa !5
  %2229 = load ptr, ptr %43, align 8, !tbaa !5
  %2230 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2229, i32 0, i32 1
  %2231 = load ptr, ptr %2230, align 8, !tbaa !131
  %2232 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %2228, ptr noundef %2231)
  br label %2233

2233:                                             ; preds = %2225, %2217
  br label %2344

2234:                                             ; preds = %2137
  %2235 = load i8, ptr %95, align 1, !tbaa !45, !range !43, !noundef !44
  %2236 = trunc i8 %2235 to i1
  br i1 %2236, label %2237, label %2343

2237:                                             ; preds = %2234
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #13
  %2238 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %2238, ptr %107, align 8, !tbaa !5
  %2239 = load ptr, ptr %107, align 8, !tbaa !5
  %2240 = icmp ne ptr %2239, null
  br i1 %2240, label %2241, label %2342

2241:                                             ; preds = %2237
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #13
  %2242 = load ptr, ptr %107, align 8, !tbaa !5
  %2243 = call i64 @strlen(ptr noundef %2242) #15
  %2244 = trunc i64 %2243 to i32
  store i32 %2244, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %109) #13
  call void @_ZN8ImVectorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109)
  %2245 = load i32, ptr %108, align 4, !tbaa !9
  %2246 = add nsw i32 %2245, 1
  invoke void @_ZN8ImVectorIcE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %109, i32 noundef %2246)
          to label %2247 unwind label %2255

2247:                                             ; preds = %2241
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #13
  %2248 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %2248, ptr %112, align 8, !tbaa !5
  br label %2249

2249:                                             ; preds = %2306, %2304, %2247
  %2250 = load ptr, ptr %112, align 8, !tbaa !5
  %2251 = load i8, ptr %2250, align 1, !tbaa !153
  %2252 = sext i8 %2251 to i32
  %2253 = icmp ne i32 %2252, 0
  br i1 %2253, label %2259, label %2254

2254:                                             ; preds = %2249
  store i32 7, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #13
  br label %2317

2255:                                             ; preds = %2322, %2241
  %2256 = landingpad { ptr, i32 }
          cleanup
  %2257 = extractvalue { ptr, i32 } %2256, 0
  store ptr %2257, ptr %110, align 8
  %2258 = extractvalue { ptr, i32 } %2256, 1
  store i32 %2258, ptr %111, align 4
  br label %2341

2259:                                             ; preds = %2249
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #13
  %2260 = load ptr, ptr %112, align 8, !tbaa !5
  %2261 = invoke noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %113, ptr noundef %2260, ptr noundef null)
          to label %2262 unwind label %2274

2262:                                             ; preds = %2259
  store i32 %2261, ptr %114, align 4, !tbaa !9
  %2263 = load i32, ptr %114, align 4, !tbaa !9
  %2264 = load ptr, ptr %112, align 8, !tbaa !5
  %2265 = sext i32 %2263 to i64
  %2266 = getelementptr inbounds i8, ptr %2264, i64 %2265
  store ptr %2266, ptr %112, align 8, !tbaa !5
  %2267 = load ptr, ptr %20, align 8, !tbaa !5
  %2268 = load i32, ptr %15, align 4, !tbaa !9
  %2269 = load ptr, ptr %16, align 8, !tbaa !5
  %2270 = load ptr, ptr %17, align 8, !tbaa !5
  %2271 = invoke noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %2267, ptr noundef %113, i32 noundef %2268, ptr noundef %2269, ptr noundef %2270, i1 noundef zeroext true)
          to label %2272 unwind label %2274

2272:                                             ; preds = %2262
  br i1 %2271, label %2278, label %2273

2273:                                             ; preds = %2272
  store i32 8, ptr %19, align 4
  br label %2304, !llvm.loop !191

2274:                                             ; preds = %2262, %2259
  %2275 = landingpad { ptr, i32 }
          cleanup
  %2276 = extractvalue { ptr, i32 } %2275, 0
  store ptr %2276, ptr %110, align 8
  %2277 = extractvalue { ptr, i32 } %2275, 1
  store i32 %2277, ptr %111, align 4
  br label %2316

2278:                                             ; preds = %2272
  call void @llvm.lifetime.start.p0(i64 5, ptr %115) #13
  %2279 = getelementptr inbounds [5 x i8], ptr %115, i64 0, i64 0
  %2280 = load i32, ptr %113, align 4, !tbaa !9
  %2281 = invoke noundef ptr @_Z16ImTextCharToUtf8Pcj(ptr noundef %2279, i32 noundef %2280)
          to label %2282 unwind label %2307

2282:                                             ; preds = %2278
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #13
  %2283 = getelementptr inbounds [5 x i8], ptr %115, i64 0, i64 0
  %2284 = call i64 @strlen(ptr noundef %2283) #15
  %2285 = trunc i64 %2284 to i32
  store i32 %2285, ptr %116, align 4, !tbaa !9
  %2286 = getelementptr inbounds %struct.ImVector.34, ptr %109, i32 0, i32 0
  %2287 = load i32, ptr %2286, align 8, !tbaa !192
  %2288 = load i32, ptr %116, align 4, !tbaa !9
  %2289 = add nsw i32 %2287, %2288
  invoke void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %109, i32 noundef %2289)
          to label %2290 unwind label %2311

2290:                                             ; preds = %2282
  %2291 = getelementptr inbounds %struct.ImVector.34, ptr %109, i32 0, i32 2
  %2292 = load ptr, ptr %2291, align 8, !tbaa !193
  %2293 = getelementptr inbounds %struct.ImVector.34, ptr %109, i32 0, i32 0
  %2294 = load i32, ptr %2293, align 8, !tbaa !192
  %2295 = sext i32 %2294 to i64
  %2296 = getelementptr inbounds i8, ptr %2292, i64 %2295
  %2297 = load i32, ptr %116, align 4, !tbaa !9
  %2298 = sext i32 %2297 to i64
  %2299 = sub i64 0, %2298
  %2300 = getelementptr inbounds i8, ptr %2296, i64 %2299
  %2301 = getelementptr inbounds [5 x i8], ptr %115, i64 0, i64 0
  %2302 = load i32, ptr %116, align 4, !tbaa !9
  %2303 = sext i32 %2302 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2300, ptr align 1 %2301, i64 %2303, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #13
  call void @llvm.lifetime.end.p0(i64 5, ptr %115) #13
  store i32 0, ptr %19, align 4
  br label %2304

2304:                                             ; preds = %2290, %2273
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #13
  %2305 = load i32, ptr %19, align 4
  switch i32 %2305, label %3732 [
    i32 0, label %2306
    i32 8, label %2249
  ]

2306:                                             ; preds = %2304
  br label %2249, !llvm.loop !191

2307:                                             ; preds = %2278
  %2308 = landingpad { ptr, i32 }
          cleanup
  %2309 = extractvalue { ptr, i32 } %2308, 0
  store ptr %2309, ptr %110, align 8
  %2310 = extractvalue { ptr, i32 } %2308, 1
  store i32 %2310, ptr %111, align 4
  br label %2315

2311:                                             ; preds = %2282
  %2312 = landingpad { ptr, i32 }
          cleanup
  %2313 = extractvalue { ptr, i32 } %2312, 0
  store ptr %2313, ptr %110, align 8
  %2314 = extractvalue { ptr, i32 } %2312, 1
  store i32 %2314, ptr %111, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #13
  br label %2315

2315:                                             ; preds = %2311, %2307
  call void @llvm.lifetime.end.p0(i64 5, ptr %115) #13
  br label %2316

2316:                                             ; preds = %2315, %2274
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #13
  br label %2341

2317:                                             ; preds = %2254
  %2318 = getelementptr inbounds %struct.ImVector.34, ptr %109, i32 0, i32 0
  %2319 = load i32, ptr %2318, align 8, !tbaa !192
  %2320 = icmp sgt i32 %2319, 0
  br i1 %2320, label %2321, label %2340

2321:                                             ; preds = %2317
  call void @llvm.lifetime.start.p0(i64 1, ptr %117) #13
  store i8 0, ptr %117, align 1, !tbaa !153
  invoke void @_ZN8ImVectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef nonnull align 1 dereferenceable(1) %117)
          to label %2322 unwind label %2336

2322:                                             ; preds = %2321
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #13
  %2323 = load ptr, ptr %43, align 8, !tbaa !5
  %2324 = load ptr, ptr %43, align 8, !tbaa !5
  %2325 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2324, i32 0, i32 1
  %2326 = load ptr, ptr %2325, align 8, !tbaa !131
  %2327 = getelementptr inbounds %struct.ImVector.34, ptr %109, i32 0, i32 2
  %2328 = load ptr, ptr %2327, align 8, !tbaa !193
  %2329 = getelementptr inbounds %struct.ImVector.34, ptr %109, i32 0, i32 0
  %2330 = load i32, ptr %2329, align 8, !tbaa !192
  %2331 = sub nsw i32 %2330, 1
  %2332 = invoke noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef %2323, ptr noundef %2326, ptr noundef %2328, i32 noundef %2331)
          to label %2333 unwind label %2255

2333:                                             ; preds = %2322
  %2334 = load ptr, ptr %43, align 8, !tbaa !5
  %2335 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2334, i32 0, i32 13
  store i8 1, ptr %2335, align 8, !tbaa !175
  br label %2340

2336:                                             ; preds = %2321
  %2337 = landingpad { ptr, i32 }
          cleanup
  %2338 = extractvalue { ptr, i32 } %2337, 0
  store ptr %2338, ptr %110, align 8
  %2339 = extractvalue { ptr, i32 } %2337, 1
  store i32 %2339, ptr %111, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #13
  br label %2341

2340:                                             ; preds = %2333, %2317
  call void @_ZN8ImVectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #13
  br label %2342

2341:                                             ; preds = %2336, %2316, %2255
  call void @_ZN8ImVectorIcED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %109) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #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 4, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #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 %3727

2342:                                             ; preds = %2340, %2237
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  br label %2343

2343:                                             ; preds = %2342, %2234
  br label %2344

2344:                                             ; preds = %2343, %2233
  br label %2345

2345:                                             ; preds = %2344, %2130
  br label %2346

2346:                                             ; preds = %2345, %2120
  br label %2347

2347:                                             ; preds = %2346, %2113
  br label %2348

2348:                                             ; preds = %2347, %2095
  br label %2349

2349:                                             ; preds = %2348, %2033
  br label %2350

2350:                                             ; preds = %2349, %1994
  br label %2351

2351:                                             ; preds = %2350, %1975
  br label %2352

2352:                                             ; preds = %2351, %1959
  br label %2353

2353:                                             ; preds = %2352, %1934
  br label %2354

2354:                                             ; preds = %2353, %1917
  br label %2355

2355:                                             ; preds = %2354, %1911
  br label %2356

2356:                                             ; preds = %2355, %1880
  br label %2357

2357:                                             ; preds = %2356, %1847
  br label %2358

2358:                                             ; preds = %2357, %1831
  %2359 = load ptr, ptr %43, align 8, !tbaa !5
  %2360 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %2359)
  br i1 %2360, label %2361, label %2364

2361:                                             ; preds = %2358
  %2362 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %2363 = trunc i8 %2362 to i1
  br label %2364

2364:                                             ; preds = %2361, %2358
  %2365 = phi i1 [ false, %2358 ], [ %2363, %2361 ]
  %2366 = zext i1 %2365 to i32
  %2367 = load i8, ptr %71, align 1, !tbaa !45, !range !43, !noundef !44
  %2368 = trunc i8 %2367 to i1
  %2369 = zext i1 %2368 to i32
  %2370 = or i32 %2369, %2366
  %2371 = icmp ne i32 %2370, 0
  %2372 = zext i1 %2371 to i8
  store i8 %2372, ptr %71, align 1, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %101) #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 4, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #13
  br label %2373

2373:                                             ; preds = %2364, %1608, %1603, %1597
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #13
  store ptr null, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #13
  store i32 0, ptr %119, align 4, !tbaa !9
  %2374 = load ptr, ptr %20, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.ImGuiContext, ptr %2374, i32 0, i32 56
  %2376 = load i32, ptr %2375, align 4, !tbaa !118
  %2377 = load i32, ptr %25, align 4, !tbaa !9
  %2378 = icmp eq i32 %2376, %2377
  br i1 %2378, label %2379, label %2743

2379:                                             ; preds = %2373
  %2380 = load ptr, ptr %43, align 8, !tbaa !5
  %2381 = icmp ne ptr %2380, null
  br i1 %2381, label %2382, label %2383

2382:                                             ; preds = %2379
  br label %2385

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

2384:                                             ; No predecessors!
  br label %2385

2385:                                             ; preds = %2384, %2382
  %2386 = load i8, ptr %87, align 1, !tbaa !45, !range !43, !noundef !44
  %2387 = trunc i8 %2386 to i1
  br i1 %2387, label %2388, label %2442

2388:                                             ; preds = %2385
  %2389 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %2390 = trunc i8 %2389 to i1
  br i1 %2390, label %2442, label %2391

2391:                                             ; preds = %2388
  %2392 = load i32, ptr %15, align 4, !tbaa !9
  %2393 = and i32 %2392, 128
  %2394 = icmp ne i32 %2393, 0
  br i1 %2394, label %2395, label %2409

2395:                                             ; preds = %2391
  %2396 = load ptr, ptr %12, align 8, !tbaa !5
  %2397 = getelementptr inbounds i8, ptr %2396, i64 0
  %2398 = load i8, ptr %2397, align 1, !tbaa !153
  %2399 = sext i8 %2398 to i32
  %2400 = icmp ne i32 %2399, 0
  br i1 %2400, label %2401, label %2402

2401:                                             ; preds = %2395
  br label %2404

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

2403:                                             ; No predecessors!
  br label %2404

2404:                                             ; preds = %2403, %2401
  store ptr @.str, ptr %118, align 8, !tbaa !5
  store i32 0, ptr %119, align 4, !tbaa !9
  store i8 1, ptr %72, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #13
  %2405 = load ptr, ptr %43, align 8, !tbaa !5
  %2406 = load ptr, ptr %43, align 8, !tbaa !5
  %2407 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2406, i32 0, i32 1
  %2408 = load ptr, ptr %2407, align 8, !tbaa !131
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef %2405, ptr noundef %2408, ptr noundef %120, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #13
  br label %2441

2409:                                             ; preds = %2391
  %2410 = load ptr, ptr %12, align 8, !tbaa !5
  %2411 = load ptr, ptr %43, align 8, !tbaa !5
  %2412 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2411, i32 0, i32 8
  %2413 = getelementptr inbounds %struct.ImVector.34, ptr %2412, i32 0, i32 2
  %2414 = load ptr, ptr %2413, align 8, !tbaa !143
  %2415 = call i32 @strcmp(ptr noundef %2410, ptr noundef %2414) #15
  %2416 = icmp ne i32 %2415, 0
  br i1 %2416, label %2417, label %2440

2417:                                             ; preds = %2409
  %2418 = load ptr, ptr %43, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2418, i32 0, i32 8
  %2420 = getelementptr inbounds %struct.ImVector.34, ptr %2419, i32 0, i32 2
  %2421 = load ptr, ptr %2420, align 8, !tbaa !143
  store ptr %2421, ptr %118, align 8, !tbaa !5
  %2422 = load ptr, ptr %43, align 8, !tbaa !5
  %2423 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2422, i32 0, i32 8
  %2424 = getelementptr inbounds %struct.ImVector.34, ptr %2423, i32 0, i32 0
  %2425 = load i32, ptr %2424, align 8, !tbaa !194
  %2426 = sub nsw i32 %2425, 1
  store i32 %2426, ptr %119, align 4, !tbaa !9
  store i8 1, ptr %72, align 1, !tbaa !45
  %2427 = load ptr, ptr %43, align 8, !tbaa !5
  %2428 = load ptr, ptr %43, align 8, !tbaa !5
  %2429 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2428, i32 0, i32 1
  %2430 = load ptr, ptr %2429, align 8, !tbaa !131
  %2431 = load ptr, ptr %43, align 8, !tbaa !5
  %2432 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2431, i32 0, i32 8
  %2433 = getelementptr inbounds %struct.ImVector.34, ptr %2432, i32 0, i32 2
  %2434 = load ptr, ptr %2433, align 8, !tbaa !143
  %2435 = load ptr, ptr %43, align 8, !tbaa !5
  %2436 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2435, i32 0, i32 8
  %2437 = getelementptr inbounds %struct.ImVector.34, ptr %2436, i32 0, i32 0
  %2438 = load i32, ptr %2437, align 8, !tbaa !194
  %2439 = sub nsw i32 %2438, 1
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef %2427, ptr noundef %2430, ptr noundef %2434, i32 noundef %2439)
  br label %2440

2440:                                             ; preds = %2417, %2409
  br label %2441

2441:                                             ; preds = %2440, %2404
  br label %2442

2442:                                             ; preds = %2441, %2388, %2385
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #13
  store i8 1, ptr %121, align 1, !tbaa !45
  %2443 = load i32, ptr %15, align 4, !tbaa !9
  %2444 = and i32 %2443, 10223616
  %2445 = icmp ne i32 %2444, 0
  br i1 %2445, label %2446, label %2725

2446:                                             ; preds = %2442
  %2447 = load ptr, ptr %16, align 8, !tbaa !5
  %2448 = icmp ne ptr %2447, null
  br i1 %2448, label %2449, label %2450

2449:                                             ; preds = %2446
  br label %2452

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

2451:                                             ; No predecessors!
  br label %2452

2452:                                             ; preds = %2451, %2449
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #13
  store i32 0, ptr %122, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #13
  store i32 0, ptr %123, align 4, !tbaa !149
  %2453 = load i32, ptr %15, align 4, !tbaa !9
  %2454 = and i32 %2453, 262144
  %2455 = icmp ne i32 %2454, 0
  br i1 %2455, label %2456, label %2460

2456:                                             ; preds = %2452
  %2457 = load i32, ptr %25, align 4, !tbaa !9
  %2458 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 512, i32 noundef 0, i32 noundef %2457)
  br i1 %2458, label %2459, label %2460

2459:                                             ; preds = %2456
  store i32 262144, ptr %122, align 4, !tbaa !9
  store i32 512, ptr %123, align 4, !tbaa !149
  br label %2493

2460:                                             ; preds = %2456, %2452
  %2461 = load i32, ptr %15, align 4, !tbaa !9
  %2462 = and i32 %2461, 524288
  %2463 = icmp ne i32 %2462, 0
  br i1 %2463, label %2464, label %2467

2464:                                             ; preds = %2460
  %2465 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %2465, label %2466, label %2467

2466:                                             ; preds = %2464
  store i32 524288, ptr %122, align 4, !tbaa !9
  store i32 515, ptr %123, align 4, !tbaa !149
  br label %2492

2467:                                             ; preds = %2464, %2460
  %2468 = load i32, ptr %15, align 4, !tbaa !9
  %2469 = and i32 %2468, 524288
  %2470 = icmp ne i32 %2469, 0
  br i1 %2470, label %2471, label %2474

2471:                                             ; preds = %2467
  %2472 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %2472, label %2473, label %2474

2473:                                             ; preds = %2471
  store i32 524288, ptr %122, align 4, !tbaa !9
  store i32 516, ptr %123, align 4, !tbaa !149
  br label %2491

2474:                                             ; preds = %2471, %2467
  %2475 = load i32, ptr %15, align 4, !tbaa !9
  %2476 = and i32 %2475, 8388608
  %2477 = icmp ne i32 %2476, 0
  br i1 %2477, label %2478, label %2484

2478:                                             ; preds = %2474
  %2479 = load ptr, ptr %43, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2479, i32 0, i32 15
  %2481 = load i8, ptr %2480, align 2, !tbaa !164, !range !43, !noundef !44
  %2482 = trunc i8 %2481 to i1
  br i1 %2482, label %2483, label %2484

2483:                                             ; preds = %2478
  store i32 8388608, ptr %122, align 4, !tbaa !9
  br label %2490

2484:                                             ; preds = %2478, %2474
  %2485 = load i32, ptr %15, align 4, !tbaa !9
  %2486 = and i32 %2485, 1048576
  %2487 = icmp ne i32 %2486, 0
  br i1 %2487, label %2488, label %2489

2488:                                             ; preds = %2484
  store i32 1048576, ptr %122, align 4, !tbaa !9
  br label %2489

2489:                                             ; preds = %2488, %2484
  br label %2490

2490:                                             ; preds = %2489, %2483
  br label %2491

2491:                                             ; preds = %2490, %2473
  br label %2492

2492:                                             ; preds = %2491, %2466
  br label %2493

2493:                                             ; preds = %2492, %2459
  %2494 = load i32, ptr %122, align 4, !tbaa !9
  %2495 = icmp ne i32 %2494, 0
  br i1 %2495, label %2496, label %2724

2496:                                             ; preds = %2493
  call void @llvm.lifetime.start.p0(i64 64, ptr %124) #13
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %124)
  %2497 = load ptr, ptr %20, align 8, !tbaa !5
  %2498 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 0
  store ptr %2497, ptr %2498, align 8, !tbaa !195
  %2499 = load i32, ptr %122, align 4, !tbaa !9
  %2500 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 1
  store i32 %2499, ptr %2500, align 8, !tbaa !197
  %2501 = load i32, ptr %15, align 4, !tbaa !9
  %2502 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 2
  store i32 %2501, ptr %2502, align 4, !tbaa !198
  %2503 = load ptr, ptr %17, align 8, !tbaa !5
  %2504 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 3
  store ptr %2503, ptr %2504, align 8, !tbaa !199
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #13
  %2505 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %2506 = trunc i8 %2505 to i1
  br i1 %2506, label %2507, label %2509

2507:                                             ; preds = %2496
  %2508 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2514

2509:                                             ; preds = %2496
  %2510 = load ptr, ptr %43, align 8, !tbaa !5
  %2511 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2510, i32 0, i32 7
  %2512 = getelementptr inbounds %struct.ImVector.34, ptr %2511, i32 0, i32 2
  %2513 = load ptr, ptr %2512, align 8, !tbaa !135
  br label %2514

2514:                                             ; preds = %2509, %2507
  %2515 = phi ptr [ %2508, %2507 ], [ %2513, %2509 ]
  store ptr %2515, ptr %125, align 8, !tbaa !5
  %2516 = load ptr, ptr %125, align 8, !tbaa !5
  %2517 = load ptr, ptr %43, align 8, !tbaa !5
  %2518 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2517, i32 0, i32 6
  %2519 = load ptr, ptr %2518, align 8, !tbaa !152
  %2520 = icmp eq ptr %2516, %2519
  br i1 %2520, label %2521, label %2522

2521:                                             ; preds = %2514
  br label %2524

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

2523:                                             ; No predecessors!
  br label %2524

2524:                                             ; preds = %2523, %2521
  %2525 = load ptr, ptr %43, align 8, !tbaa !5
  %2526 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2525, i32 0, i32 9
  %2527 = load ptr, ptr %43, align 8, !tbaa !5
  %2528 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2527, i32 0, i32 4
  %2529 = load i32, ptr %2528, align 8, !tbaa !136
  %2530 = add nsw i32 %2529, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2526, i32 noundef %2530)
  %2531 = load ptr, ptr %43, align 8, !tbaa !5
  %2532 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2531, i32 0, i32 9
  %2533 = getelementptr inbounds %struct.ImVector.34, ptr %2532, i32 0, i32 2
  %2534 = load ptr, ptr %2533, align 8, !tbaa !200
  %2535 = load ptr, ptr %125, align 8, !tbaa !5
  %2536 = load ptr, ptr %43, align 8, !tbaa !5
  %2537 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2536, i32 0, i32 4
  %2538 = load i32, ptr %2537, align 8, !tbaa !136
  %2539 = add nsw i32 %2538, 1
  %2540 = sext i32 %2539 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %2534, ptr align 1 %2535, i64 %2540, i1 false)
  %2541 = load i32, ptr %123, align 4, !tbaa !149
  %2542 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 5
  store i32 %2541, ptr %2542, align 4, !tbaa !201
  %2543 = load ptr, ptr %125, align 8, !tbaa !5
  %2544 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 6
  store ptr %2543, ptr %2544, align 8, !tbaa !202
  %2545 = load ptr, ptr %43, align 8, !tbaa !5
  %2546 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2545, i32 0, i32 4
  %2547 = load i32, ptr %2546, align 8, !tbaa !136
  %2548 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 7
  store i32 %2547, ptr %2548, align 8, !tbaa !203
  %2549 = load ptr, ptr %43, align 8, !tbaa !5
  %2550 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2549, i32 0, i32 10
  %2551 = load i32, ptr %2550, align 8, !tbaa !165
  %2552 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 8
  store i32 %2551, ptr %2552, align 4, !tbaa !204
  %2553 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 9
  store i8 0, ptr %2553, align 8, !tbaa !205
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #13
  %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 !131
  %2557 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2556, i32 0, i32 0
  %2558 = load i32, ptr %2557, align 4, !tbaa !141
  %2559 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 10
  store i32 %2558, ptr %2559, align 4, !tbaa !206
  store i32 %2558, ptr %126, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #13
  %2560 = load ptr, ptr %43, align 8, !tbaa !5
  %2561 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2560, i32 0, i32 1
  %2562 = load ptr, ptr %2561, align 8, !tbaa !131
  %2563 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2562, i32 0, i32 1
  %2564 = load i32, ptr %2563, align 4, !tbaa !138
  %2565 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 11
  store i32 %2564, ptr %2565, align 8, !tbaa !207
  store i32 %2564, ptr %127, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #13
  %2566 = load ptr, ptr %43, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2566, i32 0, i32 1
  %2568 = load ptr, ptr %2567, align 8, !tbaa !131
  %2569 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2568, i32 0, i32 2
  %2570 = load i32, ptr %2569, align 4, !tbaa !140
  %2571 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 12
  store i32 %2570, ptr %2571, align 4, !tbaa !208
  store i32 %2570, ptr %128, align 4, !tbaa !9
  %2572 = load ptr, ptr %16, align 8, !tbaa !5
  %2573 = call noundef i32 %2572(ptr noundef %124)
  %2574 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %2575 = trunc i8 %2574 to i1
  br i1 %2575, label %2576, label %2578

2576:                                             ; preds = %2524
  %2577 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2583

2578:                                             ; preds = %2524
  %2579 = load ptr, ptr %43, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2579, i32 0, i32 7
  %2581 = getelementptr inbounds %struct.ImVector.34, ptr %2580, i32 0, i32 2
  %2582 = load ptr, ptr %2581, align 8, !tbaa !135
  br label %2583

2583:                                             ; preds = %2578, %2576
  %2584 = phi ptr [ %2577, %2576 ], [ %2582, %2578 ]
  store ptr %2584, ptr %125, align 8, !tbaa !5
  %2585 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 6
  %2586 = load ptr, ptr %2585, align 8, !tbaa !202
  %2587 = load ptr, ptr %125, align 8, !tbaa !5
  %2588 = icmp eq ptr %2586, %2587
  br i1 %2588, label %2589, label %2590

2589:                                             ; preds = %2583
  br label %2592

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

2591:                                             ; No predecessors!
  br label %2592

2592:                                             ; preds = %2591, %2589
  %2593 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 8
  %2594 = load i32, ptr %2593, align 4, !tbaa !204
  %2595 = load ptr, ptr %43, align 8, !tbaa !5
  %2596 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2595, i32 0, i32 10
  %2597 = load i32, ptr %2596, align 8, !tbaa !165
  %2598 = icmp eq i32 %2594, %2597
  br i1 %2598, label %2599, label %2600

2599:                                             ; preds = %2592
  br label %2602

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

2601:                                             ; No predecessors!
  br label %2602

2602:                                             ; preds = %2601, %2599
  %2603 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 2
  %2604 = load i32, ptr %2603, align 4, !tbaa !198
  %2605 = load i32, ptr %15, align 4, !tbaa !9
  %2606 = icmp eq i32 %2604, %2605
  br i1 %2606, label %2607, label %2608

2607:                                             ; preds = %2602
  br label %2610

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

2609:                                             ; No predecessors!
  br label %2610

2610:                                             ; preds = %2609, %2607
  call void @llvm.lifetime.start.p0(i64 1, ptr %129) #13
  %2611 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 9
  %2612 = load i8, ptr %2611, align 8, !tbaa !205, !range !43, !noundef !44
  %2613 = trunc i8 %2612 to i1
  %2614 = zext i1 %2613 to i8
  store i8 %2614, ptr %129, align 1, !tbaa !45
  %2615 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 10
  %2616 = load i32, ptr %2615, align 4, !tbaa !206
  %2617 = load i32, ptr %126, align 4, !tbaa !9
  %2618 = icmp ne i32 %2616, %2617
  br i1 %2618, label %2622, label %2619

2619:                                             ; preds = %2610
  %2620 = load i8, ptr %129, align 1, !tbaa !45, !range !43, !noundef !44
  %2621 = trunc i8 %2620 to i1
  br i1 %2621, label %2622, label %2631

2622:                                             ; preds = %2619, %2610
  %2623 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 10
  %2624 = load i32, ptr %2623, align 4, !tbaa !206
  %2625 = load ptr, ptr %43, align 8, !tbaa !5
  %2626 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2625, i32 0, i32 1
  %2627 = load ptr, ptr %2626, align 8, !tbaa !131
  %2628 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2627, i32 0, i32 0
  store i32 %2624, ptr %2628, align 4, !tbaa !141
  %2629 = load ptr, ptr %43, align 8, !tbaa !5
  %2630 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2629, i32 0, i32 13
  store i8 1, ptr %2630, align 8, !tbaa !175
  br label %2631

2631:                                             ; preds = %2622, %2619
  %2632 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 11
  %2633 = load i32, ptr %2632, align 8, !tbaa !207
  %2634 = load i32, ptr %127, align 4, !tbaa !9
  %2635 = icmp ne i32 %2633, %2634
  br i1 %2635, label %2639, label %2636

2636:                                             ; preds = %2631
  %2637 = load i8, ptr %129, align 1, !tbaa !45, !range !43, !noundef !44
  %2638 = trunc i8 %2637 to i1
  br i1 %2638, label %2639, label %2660

2639:                                             ; preds = %2636, %2631
  %2640 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 11
  %2641 = load i32, ptr %2640, align 8, !tbaa !207
  %2642 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 10
  %2643 = load i32, ptr %2642, align 4, !tbaa !206
  %2644 = icmp eq i32 %2641, %2643
  br i1 %2644, label %2645, label %2651

2645:                                             ; preds = %2639
  %2646 = load ptr, ptr %43, align 8, !tbaa !5
  %2647 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2646, i32 0, i32 1
  %2648 = load ptr, ptr %2647, align 8, !tbaa !131
  %2649 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2648, i32 0, i32 0
  %2650 = load i32, ptr %2649, align 4, !tbaa !141
  br label %2654

2651:                                             ; preds = %2639
  %2652 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 11
  %2653 = load i32, ptr %2652, align 8, !tbaa !207
  br label %2654

2654:                                             ; preds = %2651, %2645
  %2655 = phi i32 [ %2650, %2645 ], [ %2653, %2651 ]
  %2656 = load ptr, ptr %43, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2656, i32 0, i32 1
  %2658 = load ptr, ptr %2657, align 8, !tbaa !131
  %2659 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2658, i32 0, i32 1
  store i32 %2655, ptr %2659, align 4, !tbaa !138
  br label %2660

2660:                                             ; preds = %2654, %2636
  %2661 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 12
  %2662 = load i32, ptr %2661, align 4, !tbaa !208
  %2663 = load i32, ptr %128, align 4, !tbaa !9
  %2664 = icmp ne i32 %2662, %2663
  br i1 %2664, label %2668, label %2665

2665:                                             ; preds = %2660
  %2666 = load i8, ptr %129, align 1, !tbaa !45, !range !43, !noundef !44
  %2667 = trunc i8 %2666 to i1
  br i1 %2667, label %2668, label %2689

2668:                                             ; preds = %2665, %2660
  %2669 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 12
  %2670 = load i32, ptr %2669, align 4, !tbaa !208
  %2671 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 11
  %2672 = load i32, ptr %2671, align 8, !tbaa !207
  %2673 = icmp eq i32 %2670, %2672
  br i1 %2673, label %2674, label %2680

2674:                                             ; preds = %2668
  %2675 = load ptr, ptr %43, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2675, i32 0, i32 1
  %2677 = load ptr, ptr %2676, align 8, !tbaa !131
  %2678 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2677, i32 0, i32 1
  %2679 = load i32, ptr %2678, align 4, !tbaa !138
  br label %2683

2680:                                             ; preds = %2668
  %2681 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 12
  %2682 = load i32, ptr %2681, align 4, !tbaa !208
  br label %2683

2683:                                             ; preds = %2680, %2674
  %2684 = phi i32 [ %2679, %2674 ], [ %2682, %2680 ]
  %2685 = load ptr, ptr %43, align 8, !tbaa !5
  %2686 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2685, i32 0, i32 1
  %2687 = load ptr, ptr %2686, align 8, !tbaa !131
  %2688 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2687, i32 0, i32 2
  store i32 %2684, ptr %2688, align 4, !tbaa !140
  br label %2689

2689:                                             ; preds = %2683, %2665
  %2690 = load i8, ptr %129, align 1, !tbaa !45, !range !43, !noundef !44
  %2691 = trunc i8 %2690 to i1
  br i1 %2691, label %2692, label %2723

2692:                                             ; preds = %2689
  %2693 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 7
  %2694 = load i32, ptr %2693, align 8, !tbaa !203
  %2695 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 6
  %2696 = load ptr, ptr %2695, align 8, !tbaa !202
  %2697 = call i64 @strlen(ptr noundef %2696) #15
  %2698 = trunc i64 %2697 to i32
  %2699 = icmp eq i32 %2694, %2698
  br i1 %2699, label %2700, label %2701

2700:                                             ; preds = %2692
  br label %2703

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

2702:                                             ; No predecessors!
  br label %2703

2703:                                             ; preds = %2702, %2700
  %2704 = load ptr, ptr %43, align 8, !tbaa !5
  %2705 = load ptr, ptr %43, align 8, !tbaa !5
  %2706 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2705, i32 0, i32 9
  %2707 = getelementptr inbounds %struct.ImVector.34, ptr %2706, i32 0, i32 2
  %2708 = load ptr, ptr %2707, align 8, !tbaa !200
  %2709 = load ptr, ptr %43, align 8, !tbaa !5
  %2710 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2709, i32 0, i32 9
  %2711 = getelementptr inbounds %struct.ImVector.34, ptr %2710, i32 0, i32 0
  %2712 = load i32, ptr %2711, align 8, !tbaa !209
  %2713 = sub nsw i32 %2712, 1
  %2714 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 6
  %2715 = load ptr, ptr %2714, align 8, !tbaa !202
  %2716 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 7
  %2717 = load i32, ptr %2716, align 8, !tbaa !203
  call void @_ZL27InputTextReconcileUndoStateP19ImGuiInputTextStatePKciS2_i(ptr noundef %2704, ptr noundef %2708, i32 noundef %2713, ptr noundef %2715, i32 noundef %2717)
  %2718 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %124, i32 0, i32 7
  %2719 = load i32, ptr %2718, align 8, !tbaa !203
  %2720 = load ptr, ptr %43, align 8, !tbaa !5
  %2721 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2720, i32 0, i32 4
  store i32 %2719, ptr %2721, align 8, !tbaa !136
  %2722 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %2722)
  br label %2723

2723:                                             ; preds = %2703, %2689
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %124) #13
  br label %2724

2724:                                             ; preds = %2723, %2493
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #13
  br label %2725

2725:                                             ; preds = %2724, %2442
  %2726 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %2727 = trunc i8 %2726 to i1
  br i1 %2727, label %2742, label %2728

2728:                                             ; preds = %2725
  %2729 = load ptr, ptr %43, align 8, !tbaa !5
  %2730 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2729, i32 0, i32 6
  %2731 = load ptr, ptr %2730, align 8, !tbaa !152
  %2732 = load ptr, ptr %12, align 8, !tbaa !5
  %2733 = call i32 @strcmp(ptr noundef %2731, ptr noundef %2732) #15
  %2734 = icmp ne i32 %2733, 0
  br i1 %2734, label %2735, label %2742

2735:                                             ; preds = %2728
  %2736 = load ptr, ptr %43, align 8, !tbaa !5
  %2737 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2736, i32 0, i32 6
  %2738 = load ptr, ptr %2737, align 8, !tbaa !152
  store ptr %2738, ptr %118, align 8, !tbaa !5
  %2739 = load ptr, ptr %43, align 8, !tbaa !5
  %2740 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2739, i32 0, i32 4
  %2741 = load i32, ptr %2740, align 8, !tbaa !136
  store i32 %2741, ptr %119, align 4, !tbaa !9
  store i8 1, ptr %72, align 1, !tbaa !45
  br label %2742

2742:                                             ; preds = %2735, %2728, %2725
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #13
  br label %2743

2743:                                             ; preds = %2742, %2373
  %2744 = load ptr, ptr %20, align 8, !tbaa !5
  %2745 = getelementptr inbounds %struct.ImGuiContext, ptr %2744, i32 0, i32 209
  %2746 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2745, i32 0, i32 0
  %2747 = load i32, ptr %2746, align 8, !tbaa !210
  %2748 = load i32, ptr %25, align 4, !tbaa !9
  %2749 = icmp eq i32 %2747, %2748
  br i1 %2749, label %2750, label %2786

2750:                                             ; preds = %2743
  %2751 = load ptr, ptr %20, align 8, !tbaa !5
  %2752 = getelementptr inbounds %struct.ImGuiContext, ptr %2751, i32 0, i32 56
  %2753 = load i32, ptr %2752, align 4, !tbaa !118
  %2754 = load i32, ptr %25, align 4, !tbaa !9
  %2755 = icmp ne i32 %2753, %2754
  br i1 %2755, label %2756, label %2782

2756:                                             ; preds = %2750
  %2757 = call noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv()
  br i1 %2757, label %2758, label %2782

2758:                                             ; preds = %2756
  %2759 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %2760 = trunc i8 %2759 to i1
  br i1 %2760, label %2782, label %2761

2761:                                             ; preds = %2758
  %2762 = load ptr, ptr %20, align 8, !tbaa !5
  %2763 = getelementptr inbounds %struct.ImGuiContext, ptr %2762, i32 0, i32 209
  %2764 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2763, i32 0, i32 1
  %2765 = getelementptr inbounds %struct.ImVector.34, ptr %2764, i32 0, i32 2
  %2766 = load ptr, ptr %2765, align 8, !tbaa !211
  %2767 = load ptr, ptr %12, align 8, !tbaa !5
  %2768 = call i32 @strcmp(ptr noundef %2766, ptr noundef %2767) #15
  %2769 = icmp ne i32 %2768, 0
  br i1 %2769, label %2770, label %2782

2770:                                             ; preds = %2761
  %2771 = load ptr, ptr %20, align 8, !tbaa !5
  %2772 = getelementptr inbounds %struct.ImGuiContext, ptr %2771, i32 0, i32 209
  %2773 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2772, i32 0, i32 1
  %2774 = getelementptr inbounds %struct.ImVector.34, ptr %2773, i32 0, i32 2
  %2775 = load ptr, ptr %2774, align 8, !tbaa !211
  store ptr %2775, ptr %118, align 8, !tbaa !5
  %2776 = load ptr, ptr %20, align 8, !tbaa !5
  %2777 = getelementptr inbounds %struct.ImGuiContext, ptr %2776, i32 0, i32 209
  %2778 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2777, i32 0, i32 1
  %2779 = getelementptr inbounds %struct.ImVector.34, ptr %2778, i32 0, i32 0
  %2780 = load i32, ptr %2779, align 8, !tbaa !212
  %2781 = sub nsw i32 %2780, 1
  store i32 %2781, ptr %119, align 4, !tbaa !9
  store i8 1, ptr %72, align 1, !tbaa !45
  br label %2782

2782:                                             ; preds = %2770, %2761, %2758, %2756, %2750
  %2783 = load ptr, ptr %20, align 8, !tbaa !5
  %2784 = getelementptr inbounds %struct.ImGuiContext, ptr %2783, i32 0, i32 209
  %2785 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2784, i32 0, i32 0
  store i32 0, ptr %2785, align 8, !tbaa !210
  br label %2786

2786:                                             ; preds = %2782, %2743
  %2787 = load ptr, ptr %118, align 8, !tbaa !5
  %2788 = icmp ne ptr %2787, null
  br i1 %2788, label %2789, label %2841

2789:                                             ; preds = %2786
  %2790 = load i32, ptr %119, align 4, !tbaa !9
  %2791 = icmp sge i32 %2790, 0
  br i1 %2791, label %2792, label %2793

2792:                                             ; preds = %2789
  br label %2795

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

2794:                                             ; No predecessors!
  br label %2795

2795:                                             ; preds = %2794, %2792
  %2796 = load i8, ptr %47, align 1, !tbaa !45, !range !43, !noundef !44
  %2797 = trunc i8 %2796 to i1
  br i1 %2797, label %2798, label %2833

2798:                                             ; preds = %2795
  call void @llvm.lifetime.start.p0(i64 64, ptr %130) #13
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %130)
  %2799 = load ptr, ptr %20, align 8, !tbaa !5
  %2800 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 0
  store ptr %2799, ptr %2800, align 8, !tbaa !195
  %2801 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 1
  store i32 4194304, ptr %2801, align 8, !tbaa !197
  %2802 = load i32, ptr %15, align 4, !tbaa !9
  %2803 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 2
  store i32 %2802, ptr %2803, align 4, !tbaa !198
  %2804 = load ptr, ptr %12, align 8, !tbaa !5
  %2805 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 6
  store ptr %2804, ptr %2805, align 8, !tbaa !202
  %2806 = load i32, ptr %119, align 4, !tbaa !9
  %2807 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 7
  store i32 %2806, ptr %2807, align 8, !tbaa !203
  %2808 = load i32, ptr %13, align 4, !tbaa !9
  %2809 = load i32, ptr %119, align 4, !tbaa !9
  %2810 = add nsw i32 %2809, 1
  %2811 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2808, i32 noundef %2810)
  %2812 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 8
  store i32 %2811, ptr %2812, align 4, !tbaa !204
  %2813 = load ptr, ptr %17, align 8, !tbaa !5
  %2814 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 3
  store ptr %2813, ptr %2814, align 8, !tbaa !199
  %2815 = load ptr, ptr %16, align 8, !tbaa !5
  %2816 = call noundef i32 %2815(ptr noundef %130)
  %2817 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 6
  %2818 = load ptr, ptr %2817, align 8, !tbaa !202
  store ptr %2818, ptr %12, align 8, !tbaa !5
  %2819 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 8
  %2820 = load i32, ptr %2819, align 4, !tbaa !204
  store i32 %2820, ptr %13, align 4, !tbaa !9
  %2821 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %130, i32 0, i32 7
  %2822 = load i32, ptr %2821, align 8, !tbaa !203
  %2823 = load i32, ptr %13, align 4, !tbaa !9
  %2824 = sub nsw i32 %2823, 1
  %2825 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2822, i32 noundef %2824)
  store i32 %2825, ptr %119, align 4, !tbaa !9
  %2826 = load i32, ptr %119, align 4, !tbaa !9
  %2827 = load i32, ptr %13, align 4, !tbaa !9
  %2828 = icmp sle i32 %2826, %2827
  br i1 %2828, label %2829, label %2830

2829:                                             ; preds = %2798
  br label %2832

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

2831:                                             ; No predecessors!
  br label %2832

2832:                                             ; preds = %2831, %2829
  call void @llvm.lifetime.end.p0(i64 64, ptr %130) #13
  br label %2833

2833:                                             ; preds = %2832, %2795
  %2834 = load ptr, ptr %12, align 8, !tbaa !5
  %2835 = load ptr, ptr %118, align 8, !tbaa !5
  %2836 = load i32, ptr %119, align 4, !tbaa !9
  %2837 = add nsw i32 %2836, 1
  %2838 = load i32, ptr %13, align 4, !tbaa !9
  %2839 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2837, i32 noundef %2838)
  %2840 = sext i32 %2839 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2834, ptr noundef %2835, i64 noundef %2840)
  br label %2841

2841:                                             ; preds = %2833, %2786
  %2842 = load ptr, ptr %20, align 8, !tbaa !5
  %2843 = getelementptr inbounds %struct.ImGuiContext, ptr %2842, i32 0, i32 56
  %2844 = load i32, ptr %2843, align 4, !tbaa !118
  %2845 = load i32, ptr %25, align 4, !tbaa !9
  %2846 = icmp eq i32 %2844, %2845
  br i1 %2846, label %2847, label %2851

2847:                                             ; preds = %2841
  %2848 = load i8, ptr %52, align 1, !tbaa !45, !range !43, !noundef !44
  %2849 = trunc i8 %2848 to i1
  br i1 %2849, label %2850, label %2851

2850:                                             ; preds = %2847
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2861

2851:                                             ; preds = %2847, %2841
  %2852 = load ptr, ptr %20, align 8, !tbaa !5
  %2853 = getelementptr inbounds %struct.ImGuiContext, ptr %2852, i32 0, i32 56
  %2854 = load i32, ptr %2853, align 4, !tbaa !118
  %2855 = load i32, ptr %25, align 4, !tbaa !9
  %2856 = icmp eq i32 %2854, %2855
  br i1 %2856, label %2857, label %2860

2857:                                             ; preds = %2851
  %2858 = load ptr, ptr %20, align 8, !tbaa !5
  %2859 = getelementptr inbounds %struct.ImGuiContext, ptr %2858, i32 0, i32 295
  store i32 1, ptr %2859, align 8, !tbaa !213
  br label %2860

2860:                                             ; preds = %2857, %2851
  br label %2861

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

2864:                                             ; preds = %2861
  %2865 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui15RenderNavCursorERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %30, i32 noundef %2865, i32 noundef 0)
  %2866 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %131, ptr align 4 %2866, i64 8, i1 false), !tbaa.struct !46
  %2867 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %132, ptr align 4 %2867, i64 8, i1 false), !tbaa.struct !46
  %2868 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2869 = load ptr, ptr %22, align 8, !tbaa !5
  %2870 = getelementptr inbounds %struct.ImGuiStyle, ptr %2869, i32 0, i32 13
  %2871 = load float, ptr %2870, align 4, !tbaa !119
  %2872 = load <2 x float>, ptr %131, align 4
  %2873 = load <2 x float>, ptr %132, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2872, <2 x float> %2873, i32 noundef %2868, i1 noundef zeroext true, float noundef %2871)
  br label %2874

2874:                                             ; preds = %2864, %2861
  call void @llvm.lifetime.start.p0(i64 16, ptr %133) #13
  %2875 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2876 = getelementptr inbounds %struct.ImVec2, ptr %2875, i32 0, i32 0
  %2877 = load float, ptr %2876, align 4, !tbaa !169
  %2878 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2879 = getelementptr inbounds %struct.ImVec2, ptr %2878, i32 0, i32 1
  %2880 = load float, ptr %2879, align 4, !tbaa !214
  %2881 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2882 = getelementptr inbounds %struct.ImVec2, ptr %2881, i32 0, i32 0
  %2883 = load float, ptr %2882, align 4, !tbaa !169
  %2884 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %2885 = load float, ptr %2884, align 4, !tbaa !113
  %2886 = fadd float %2883, %2885
  %2887 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2888 = getelementptr inbounds %struct.ImVec2, ptr %2887, i32 0, i32 1
  %2889 = load float, ptr %2888, align 4, !tbaa !214
  %2890 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %2891 = load float, ptr %2890, align 4, !tbaa !111
  %2892 = fadd float %2889, %2891
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %133, float noundef %2877, float noundef %2880, float noundef %2886, float noundef %2892)
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #13
  %2893 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2894 = trunc i8 %2893 to i1
  br i1 %2894, label %2895, label %2899

2895:                                             ; preds = %2874
  %2896 = load ptr, ptr %34, align 8, !tbaa !5
  %2897 = getelementptr inbounds %struct.ImGuiWindow, ptr %2896, i32 0, i32 69
  %2898 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2897, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %134, ptr align 8 %2898, i64 8, i1 false), !tbaa.struct !46
  br label %2904

2899:                                             ; preds = %2874
  %2900 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2901 = load ptr, ptr %22, align 8, !tbaa !5
  %2902 = getelementptr inbounds %struct.ImGuiStyle, ptr %2901, i32 0, i32 12
  %2903 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2900, ptr noundef nonnull align 4 dereferenceable(8) %2902)
  store <2 x float> %2903, ptr %134, align 4
  br label %2904

2904:                                             ; preds = %2899, %2895
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %135, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #13
  store i32 2097152, ptr %136, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #13
  %2905 = load i8, ptr %74, align 1, !tbaa !45, !range !43, !noundef !44
  %2906 = trunc i8 %2905 to i1
  br i1 %2906, label %2907, label %2912

2907:                                             ; preds = %2904
  %2908 = load ptr, ptr %43, align 8, !tbaa !5
  %2909 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2908, i32 0, i32 7
  %2910 = getelementptr inbounds %struct.ImVector.34, ptr %2909, i32 0, i32 2
  %2911 = load ptr, ptr %2910, align 8, !tbaa !135
  br label %2914

2912:                                             ; preds = %2904
  %2913 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2914

2914:                                             ; preds = %2912, %2907
  %2915 = phi ptr [ %2911, %2907 ], [ %2913, %2912 ]
  store ptr %2915, ptr %137, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #13
  store ptr null, ptr %138, align 8, !tbaa !5
  %2916 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %2917 = trunc i8 %2916 to i1
  br i1 %2917, label %2918, label %2924

2918:                                             ; preds = %2914
  %2919 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2919, ptr %137, align 8, !tbaa !5
  %2920 = load ptr, ptr %11, align 8, !tbaa !5
  %2921 = load ptr, ptr %11, align 8, !tbaa !5
  %2922 = call i64 @strlen(ptr noundef %2921) #15
  %2923 = getelementptr inbounds i8, ptr %2920, i64 %2922
  store ptr %2923, ptr %138, align 8, !tbaa !5
  br label %2924

2924:                                             ; preds = %2918, %2914
  %2925 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %2926 = trunc i8 %2925 to i1
  br i1 %2926, label %2930, label %2927

2927:                                             ; preds = %2924
  %2928 = load i8, ptr %71, align 1, !tbaa !45, !range !43, !noundef !44
  %2929 = trunc i8 %2928 to i1
  br i1 %2929, label %2930, label %3505

2930:                                             ; preds = %2927, %2924
  %2931 = load ptr, ptr %43, align 8, !tbaa !5
  %2932 = icmp ne ptr %2931, null
  br i1 %2932, label %2933, label %2934

2933:                                             ; preds = %2930
  br label %2936

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

2935:                                             ; No predecessors!
  br label %2936

2936:                                             ; preds = %2935, %2933
  %2937 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %2938 = trunc i8 %2937 to i1
  br i1 %2938, label %2946, label %2939

2939:                                             ; preds = %2936
  %2940 = load ptr, ptr %137, align 8, !tbaa !5
  %2941 = load ptr, ptr %43, align 8, !tbaa !5
  %2942 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2941, i32 0, i32 4
  %2943 = load i32, ptr %2942, align 8, !tbaa !136
  %2944 = sext i32 %2943 to i64
  %2945 = getelementptr inbounds i8, ptr %2940, i64 %2944
  store ptr %2945, ptr %138, align 8, !tbaa !5
  br label %2946

2946:                                             ; preds = %2939, %2936
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #13
  %2947 = load ptr, ptr %137, align 8, !tbaa !5
  store ptr %2947, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #13
  %2948 = load ptr, ptr %139, align 8, !tbaa !5
  %2949 = load ptr, ptr %43, align 8, !tbaa !5
  %2950 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2949, i32 0, i32 4
  %2951 = load i32, ptr %2950, align 8, !tbaa !136
  %2952 = sext i32 %2951 to i64
  %2953 = getelementptr inbounds i8, ptr %2948, i64 %2952
  store ptr %2953, ptr %140, align 8, !tbaa !5
  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 8, ptr %142) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %142)
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #13
  %2954 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %2955 = trunc i8 %2954 to i1
  %2956 = zext i1 %2955 to i64
  %2957 = select i1 %2955, i32 -1, i32 -1000
  store i32 %2957, ptr %143, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #13
  %2958 = load i8, ptr %71, align 1, !tbaa !45, !range !43, !noundef !44
  %2959 = trunc i8 %2958 to i1
  %2960 = zext i1 %2959 to i64
  %2961 = select i1 %2959, i32 -1, i32 -1000
  store i32 %2961, ptr %144, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #13
  %2962 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %2963 = trunc i8 %2962 to i1
  br i1 %2963, label %2964, label %2973

2964:                                             ; preds = %2946
  %2965 = load ptr, ptr %139, align 8, !tbaa !5
  %2966 = load ptr, ptr %43, align 8, !tbaa !5
  %2967 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2966, i32 0, i32 1
  %2968 = load ptr, ptr %2967, align 8, !tbaa !131
  %2969 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2968, i32 0, i32 0
  %2970 = load i32, ptr %2969, align 4, !tbaa !141
  %2971 = sext i32 %2970 to i64
  %2972 = getelementptr inbounds i8, ptr %2965, i64 %2971
  br label %2974

2973:                                             ; preds = %2946
  br label %2974

2974:                                             ; preds = %2973, %2964
  %2975 = phi ptr [ %2972, %2964 ], [ null, %2973 ]
  store ptr %2975, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #13
  %2976 = load i8, ptr %71, align 1, !tbaa !45, !range !43, !noundef !44
  %2977 = trunc i8 %2976 to i1
  br i1 %2977, label %2978, label %2993

2978:                                             ; preds = %2974
  %2979 = load ptr, ptr %139, align 8, !tbaa !5
  %2980 = load ptr, ptr %43, align 8, !tbaa !5
  %2981 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2980, i32 0, i32 1
  %2982 = load ptr, ptr %2981, align 8, !tbaa !131
  %2983 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2982, i32 0, i32 1
  %2984 = load i32, ptr %2983, align 4, !tbaa !138
  %2985 = load ptr, ptr %43, align 8, !tbaa !5
  %2986 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2985, i32 0, i32 1
  %2987 = load ptr, ptr %2986, align 8, !tbaa !131
  %2988 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2987, i32 0, i32 2
  %2989 = load i32, ptr %2988, align 4, !tbaa !140
  %2990 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2984, i32 noundef %2989)
  %2991 = sext i32 %2990 to i64
  %2992 = getelementptr inbounds i8, ptr %2979, i64 %2991
  br label %2994

2993:                                             ; preds = %2974
  br label %2994

2994:                                             ; preds = %2993, %2978
  %2995 = phi ptr [ %2992, %2978 ], [ null, %2993 ]
  store ptr %2995, ptr %146, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #13
  store i32 1, ptr %147, align 4, !tbaa !9
  %2996 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %2997 = trunc i8 %2996 to i1
  br i1 %2997, label %2998, label %3035

2998:                                             ; preds = %2994
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #13
  %2999 = load ptr, ptr %139, align 8, !tbaa !5
  store ptr %2999, ptr %148, align 8, !tbaa !5
  br label %3000

3000:                                             ; preds = %3031, %2998
  %3001 = load ptr, ptr %148, align 8, !tbaa !5
  %3002 = load ptr, ptr %140, align 8, !tbaa !5
  %3003 = load ptr, ptr %148, align 8, !tbaa !5
  %3004 = ptrtoint ptr %3002 to i64
  %3005 = ptrtoint ptr %3003 to i64
  %3006 = sub i64 %3004, %3005
  %3007 = call noundef ptr @memchr(ptr noundef %3001, i32 noundef 10, i64 noundef %3006) #15
  store ptr %3007, ptr %148, align 8, !tbaa !5
  %3008 = icmp ne ptr %3007, null
  br i1 %3008, label %3010, label %3009

3009:                                             ; preds = %3000
  store i32 9, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #13
  br label %3034

3010:                                             ; preds = %3000
  %3011 = load i32, ptr %143, align 4, !tbaa !9
  %3012 = icmp eq i32 %3011, -1
  br i1 %3012, label %3013, label %3019

3013:                                             ; preds = %3010
  %3014 = load ptr, ptr %148, align 8, !tbaa !5
  %3015 = load ptr, ptr %145, align 8, !tbaa !5
  %3016 = icmp uge ptr %3014, %3015
  br i1 %3016, label %3017, label %3019

3017:                                             ; preds = %3013
  %3018 = load i32, ptr %147, align 4, !tbaa !9
  store i32 %3018, ptr %143, align 4, !tbaa !9
  br label %3019

3019:                                             ; preds = %3017, %3013, %3010
  %3020 = load i32, ptr %144, align 4, !tbaa !9
  %3021 = icmp eq i32 %3020, -1
  br i1 %3021, label %3022, label %3028

3022:                                             ; preds = %3019
  %3023 = load ptr, ptr %148, align 8, !tbaa !5
  %3024 = load ptr, ptr %146, align 8, !tbaa !5
  %3025 = icmp uge ptr %3023, %3024
  br i1 %3025, label %3026, label %3028

3026:                                             ; preds = %3022
  %3027 = load i32, ptr %147, align 4, !tbaa !9
  store i32 %3027, ptr %144, align 4, !tbaa !9
  br label %3028

3028:                                             ; preds = %3026, %3022, %3019
  %3029 = load i32, ptr %147, align 4, !tbaa !9
  %3030 = add nsw i32 %3029, 1
  store i32 %3030, ptr %147, align 4, !tbaa !9
  br label %3031

3031:                                             ; preds = %3028
  %3032 = load ptr, ptr %148, align 8, !tbaa !5
  %3033 = getelementptr inbounds i8, ptr %3032, i32 1
  store ptr %3033, ptr %148, align 8, !tbaa !5
  br label %3000, !llvm.loop !215

3034:                                             ; preds = %3009
  br label %3035

3035:                                             ; preds = %3034, %2994
  %3036 = load i32, ptr %143, align 4, !tbaa !9
  %3037 = icmp eq i32 %3036, -1
  br i1 %3037, label %3038, label %3040

3038:                                             ; preds = %3035
  %3039 = load i32, ptr %147, align 4, !tbaa !9
  store i32 %3039, ptr %143, align 4, !tbaa !9
  br label %3040

3040:                                             ; preds = %3038, %3035
  %3041 = load i32, ptr %144, align 4, !tbaa !9
  %3042 = icmp eq i32 %3041, -1
  br i1 %3042, label %3043, label %3045

3043:                                             ; preds = %3040
  %3044 = load i32, ptr %147, align 4, !tbaa !9
  store i32 %3044, ptr %144, align 4, !tbaa !9
  br label %3045

3045:                                             ; preds = %3043, %3040
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #13
  %3046 = load ptr, ptr %20, align 8, !tbaa !5
  %3047 = load ptr, ptr %145, align 8, !tbaa !5
  %3048 = load ptr, ptr %139, align 8, !tbaa !5
  %3049 = call noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef %3047, ptr noundef %3048)
  %3050 = load ptr, ptr %145, align 8, !tbaa !5
  %3051 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef %3046, ptr noundef %3049, ptr noundef %3050, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %3051, ptr %149, align 4
  %3052 = getelementptr inbounds %struct.ImVec2, ptr %149, i32 0, i32 0
  %3053 = load float, ptr %3052, align 4, !tbaa !113
  %3054 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 0
  store float %3053, ptr %3054, align 4, !tbaa !113
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #13
  %3055 = load i32, ptr %143, align 4, !tbaa !9
  %3056 = sitofp i32 %3055 to float
  %3057 = load ptr, ptr %20, align 8, !tbaa !5
  %3058 = getelementptr inbounds %struct.ImGuiContext, ptr %3057, i32 0, i32 6
  %3059 = load float, ptr %3058, align 8, !tbaa !48
  %3060 = fmul float %3056, %3059
  %3061 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 1
  store float %3060, ptr %3061, align 4, !tbaa !111
  %3062 = load i32, ptr %144, align 4, !tbaa !9
  %3063 = icmp sge i32 %3062, 0
  br i1 %3063, label %3064, label %3081

3064:                                             ; preds = %3045
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #13
  %3065 = load ptr, ptr %20, align 8, !tbaa !5
  %3066 = load ptr, ptr %146, align 8, !tbaa !5
  %3067 = load ptr, ptr %139, align 8, !tbaa !5
  %3068 = call noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef %3066, ptr noundef %3067)
  %3069 = load ptr, ptr %146, align 8, !tbaa !5
  %3070 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef %3065, ptr noundef %3068, ptr noundef %3069, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %3070, ptr %150, align 4
  %3071 = getelementptr inbounds %struct.ImVec2, ptr %150, i32 0, i32 0
  %3072 = load float, ptr %3071, align 4, !tbaa !113
  %3073 = getelementptr inbounds %struct.ImVec2, ptr %142, i32 0, i32 0
  store float %3072, ptr %3073, align 4, !tbaa !113
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #13
  %3074 = load i32, ptr %144, align 4, !tbaa !9
  %3075 = sitofp i32 %3074 to float
  %3076 = load ptr, ptr %20, align 8, !tbaa !5
  %3077 = getelementptr inbounds %struct.ImGuiContext, ptr %3076, i32 0, i32 6
  %3078 = load float, ptr %3077, align 8, !tbaa !48
  %3079 = fmul float %3075, %3078
  %3080 = getelementptr inbounds %struct.ImVec2, ptr %142, i32 0, i32 1
  store float %3079, ptr %3080, align 4, !tbaa !111
  br label %3081

3081:                                             ; preds = %3064, %3045
  %3082 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3083 = trunc i8 %3082 to i1
  br i1 %3083, label %3084, label %3093

3084:                                             ; preds = %3081
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #13
  %3085 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3086 = load float, ptr %3085, align 4, !tbaa !113
  %3087 = load i32, ptr %147, align 4, !tbaa !9
  %3088 = sitofp i32 %3087 to float
  %3089 = load ptr, ptr %20, align 8, !tbaa !5
  %3090 = getelementptr inbounds %struct.ImGuiContext, ptr %3089, i32 0, i32 6
  %3091 = load float, ptr %3090, align 8, !tbaa !48
  %3092 = fmul float %3088, %3091
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %151, float noundef %3086, float noundef %3092)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %135, ptr align 4 %151, i64 8, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #13
  br label %3093

3093:                                             ; preds = %3084, %3081
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #13
  %3094 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %3095 = trunc i8 %3094 to i1
  br i1 %3095, label %3096, label %3239

3096:                                             ; preds = %3093
  %3097 = load ptr, ptr %43, align 8, !tbaa !5
  %3098 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3097, i32 0, i32 13
  %3099 = load i8, ptr %3098, align 8, !tbaa !175, !range !43, !noundef !44
  %3100 = trunc i8 %3099 to i1
  br i1 %3100, label %3101, label %3239

3101:                                             ; preds = %3096
  %3102 = load i32, ptr %15, align 4, !tbaa !9
  %3103 = and i32 %3102, 32768
  %3104 = icmp ne i32 %3103, 0
  br i1 %3104, label %3158, label %3105

3105:                                             ; preds = %3101
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #13
  %3106 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3107 = load float, ptr %3106, align 4, !tbaa !113
  %3108 = fmul float %3107, 2.500000e-01
  store float %3108, ptr %152, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #13
  %3109 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3110 = load float, ptr %3109, align 4, !tbaa !113
  %3111 = load ptr, ptr %22, align 8, !tbaa !5
  %3112 = getelementptr inbounds %struct.ImGuiStyle, ptr %3111, i32 0, i32 12
  %3113 = getelementptr inbounds %struct.ImVec2, ptr %3112, i32 0, i32 0
  %3114 = load float, ptr %3113, align 4, !tbaa !144
  %3115 = fsub float %3110, %3114
  store float %3115, ptr %153, align 4, !tbaa !47
  %3116 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 0
  %3117 = load float, ptr %3116, align 4, !tbaa !113
  %3118 = load ptr, ptr %43, align 8, !tbaa !5
  %3119 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3118, i32 0, i32 11
  %3120 = getelementptr inbounds %struct.ImVec2, ptr %3119, i32 0, i32 0
  %3121 = load float, ptr %3120, align 4, !tbaa !145
  %3122 = fcmp olt float %3117, %3121
  br i1 %3122, label %3123, label %3134

3123:                                             ; preds = %3105
  %3124 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 0
  %3125 = load float, ptr %3124, align 4, !tbaa !113
  %3126 = load float, ptr %152, align 4, !tbaa !47
  %3127 = fsub float %3125, %3126
  %3128 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %3127)
  %3129 = fptosi float %3128 to i32
  %3130 = sitofp i32 %3129 to float
  %3131 = load ptr, ptr %43, align 8, !tbaa !5
  %3132 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3131, i32 0, i32 11
  %3133 = getelementptr inbounds %struct.ImVec2, ptr %3132, i32 0, i32 0
  store float %3130, ptr %3133, align 4, !tbaa !145
  br label %3157

3134:                                             ; preds = %3105
  %3135 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 0
  %3136 = load float, ptr %3135, align 4, !tbaa !113
  %3137 = load float, ptr %153, align 4, !tbaa !47
  %3138 = fsub float %3136, %3137
  %3139 = load ptr, ptr %43, align 8, !tbaa !5
  %3140 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3139, i32 0, i32 11
  %3141 = getelementptr inbounds %struct.ImVec2, ptr %3140, i32 0, i32 0
  %3142 = load float, ptr %3141, align 4, !tbaa !145
  %3143 = fcmp oge float %3138, %3142
  br i1 %3143, label %3144, label %3156

3144:                                             ; preds = %3134
  %3145 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 0
  %3146 = load float, ptr %3145, align 4, !tbaa !113
  %3147 = load float, ptr %153, align 4, !tbaa !47
  %3148 = fsub float %3146, %3147
  %3149 = load float, ptr %152, align 4, !tbaa !47
  %3150 = fadd float %3148, %3149
  %3151 = fptosi float %3150 to i32
  %3152 = sitofp i32 %3151 to float
  %3153 = load ptr, ptr %43, align 8, !tbaa !5
  %3154 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3153, i32 0, i32 11
  %3155 = getelementptr inbounds %struct.ImVec2, ptr %3154, i32 0, i32 0
  store float %3152, ptr %3155, align 4, !tbaa !145
  br label %3156

3156:                                             ; preds = %3144, %3134
  br label %3157

3157:                                             ; preds = %3156, %3123
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #13
  br label %3162

3158:                                             ; preds = %3101
  %3159 = load ptr, ptr %43, align 8, !tbaa !5
  %3160 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3159, i32 0, i32 11
  %3161 = getelementptr inbounds %struct.ImVec2, ptr %3160, i32 0, i32 1
  store float 0.000000e+00, ptr %3161, align 4, !tbaa !151
  br label %3162

3162:                                             ; preds = %3158, %3157
  %3163 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3164 = trunc i8 %3163 to i1
  br i1 %3164, label %3165, label %3236

3165:                                             ; preds = %3162
  %3166 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 1
  %3167 = load float, ptr %3166, align 4, !tbaa !111
  %3168 = load ptr, ptr %20, align 8, !tbaa !5
  %3169 = getelementptr inbounds %struct.ImGuiContext, ptr %3168, i32 0, i32 6
  %3170 = load float, ptr %3169, align 8, !tbaa !48
  %3171 = fsub float %3167, %3170
  %3172 = load float, ptr %54, align 4, !tbaa !47
  %3173 = fcmp olt float %3171, %3172
  br i1 %3173, label %3174, label %3182

3174:                                             ; preds = %3165
  %3175 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 1
  %3176 = load float, ptr %3175, align 4, !tbaa !111
  %3177 = load ptr, ptr %20, align 8, !tbaa !5
  %3178 = getelementptr inbounds %struct.ImGuiContext, ptr %3177, i32 0, i32 6
  %3179 = load float, ptr %3178, align 8, !tbaa !48
  %3180 = fsub float %3176, %3179
  %3181 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %3180)
  store float %3181, ptr %54, align 4, !tbaa !47
  br label %3208

3182:                                             ; preds = %3165
  %3183 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 1
  %3184 = load float, ptr %3183, align 4, !tbaa !111
  %3185 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3186 = load float, ptr %3185, align 4, !tbaa !111
  %3187 = load ptr, ptr %22, align 8, !tbaa !5
  %3188 = getelementptr inbounds %struct.ImGuiStyle, ptr %3187, i32 0, i32 12
  %3189 = getelementptr inbounds %struct.ImVec2, ptr %3188, i32 0, i32 1
  %3190 = load float, ptr %3189, align 4, !tbaa !112
  %3191 = fneg float %3190
  %3192 = call float @llvm.fmuladd.f32(float %3191, float 2.000000e+00, float %3186)
  %3193 = fsub float %3184, %3192
  %3194 = load float, ptr %54, align 4, !tbaa !47
  %3195 = fcmp oge float %3193, %3194
  br i1 %3195, label %3196, label %3207

3196:                                             ; preds = %3182
  %3197 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 1
  %3198 = load float, ptr %3197, align 4, !tbaa !111
  %3199 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3200 = load float, ptr %3199, align 4, !tbaa !111
  %3201 = fsub float %3198, %3200
  %3202 = load ptr, ptr %22, align 8, !tbaa !5
  %3203 = getelementptr inbounds %struct.ImGuiStyle, ptr %3202, i32 0, i32 12
  %3204 = getelementptr inbounds %struct.ImVec2, ptr %3203, i32 0, i32 1
  %3205 = load float, ptr %3204, align 4, !tbaa !112
  %3206 = call float @llvm.fmuladd.f32(float %3205, float 2.000000e+00, float %3201)
  store float %3206, ptr %54, align 4, !tbaa !47
  br label %3207

3207:                                             ; preds = %3196, %3182
  br label %3208

3208:                                             ; preds = %3207, %3174
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #13
  %3209 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 1
  %3210 = load float, ptr %3209, align 4, !tbaa !111
  %3211 = load ptr, ptr %22, align 8, !tbaa !5
  %3212 = getelementptr inbounds %struct.ImGuiStyle, ptr %3211, i32 0, i32 12
  %3213 = getelementptr inbounds %struct.ImVec2, ptr %3212, i32 0, i32 1
  %3214 = load float, ptr %3213, align 4, !tbaa !112
  %3215 = call float @llvm.fmuladd.f32(float %3214, float 2.000000e+00, float %3210)
  %3216 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3217 = load float, ptr %3216, align 4, !tbaa !111
  %3218 = fsub float %3215, %3217
  %3219 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %3218, float noundef 0.000000e+00)
  store float %3219, ptr %154, align 4, !tbaa !47
  %3220 = load float, ptr %54, align 4, !tbaa !47
  %3221 = load float, ptr %154, align 4, !tbaa !47
  %3222 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %3220, float noundef 0.000000e+00, float noundef %3221)
  store float %3222, ptr %54, align 4, !tbaa !47
  %3223 = load ptr, ptr %34, align 8, !tbaa !5
  %3224 = getelementptr inbounds %struct.ImGuiWindow, ptr %3223, i32 0, i32 28
  %3225 = getelementptr inbounds %struct.ImVec2, ptr %3224, i32 0, i32 1
  %3226 = load float, ptr %3225, align 4, !tbaa !129
  %3227 = load float, ptr %54, align 4, !tbaa !47
  %3228 = fsub float %3226, %3227
  %3229 = getelementptr inbounds %struct.ImVec2, ptr %134, i32 0, i32 1
  %3230 = load float, ptr %3229, align 4, !tbaa !111
  %3231 = fadd float %3230, %3228
  store float %3231, ptr %3229, align 4, !tbaa !111
  %3232 = load float, ptr %54, align 4, !tbaa !47
  %3233 = load ptr, ptr %34, align 8, !tbaa !5
  %3234 = getelementptr inbounds %struct.ImGuiWindow, ptr %3233, i32 0, i32 28
  %3235 = getelementptr inbounds %struct.ImVec2, ptr %3234, i32 0, i32 1
  store float %3232, ptr %3235, align 4, !tbaa !129
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #13
  br label %3236

3236:                                             ; preds = %3208, %3162
  %3237 = load ptr, ptr %43, align 8, !tbaa !5
  %3238 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3237, i32 0, i32 13
  store i8 0, ptr %3238, align 8, !tbaa !175
  br label %3239

3239:                                             ; preds = %3236, %3096, %3093
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #13
  %3240 = load ptr, ptr %43, align 8, !tbaa !5
  %3241 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3240, i32 0, i32 11
  %3242 = getelementptr inbounds %struct.ImVec2, ptr %3241, i32 0, i32 0
  %3243 = load float, ptr %3242, align 4, !tbaa !145
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %155, float noundef %3243, float noundef 0.000000e+00)
  %3244 = load i8, ptr %71, align 1, !tbaa !45, !range !43, !noundef !44
  %3245 = trunc i8 %3244 to i1
  br i1 %3245, label %3246, label %3382

3246:                                             ; preds = %3239
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #13
  %3247 = load ptr, ptr %139, align 8, !tbaa !5
  %3248 = load ptr, ptr %43, align 8, !tbaa !5
  %3249 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3248, i32 0, i32 1
  %3250 = load ptr, ptr %3249, align 8, !tbaa !131
  %3251 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3250, i32 0, i32 1
  %3252 = load i32, ptr %3251, align 4, !tbaa !138
  %3253 = load ptr, ptr %43, align 8, !tbaa !5
  %3254 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3253, i32 0, i32 1
  %3255 = load ptr, ptr %3254, align 8, !tbaa !131
  %3256 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3255, i32 0, i32 2
  %3257 = load i32, ptr %3256, align 4, !tbaa !140
  %3258 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %3252, i32 noundef %3257)
  %3259 = sext i32 %3258 to i64
  %3260 = getelementptr inbounds i8, ptr %3247, i64 %3259
  store ptr %3260, ptr %156, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #13
  %3261 = load ptr, ptr %139, align 8, !tbaa !5
  %3262 = load ptr, ptr %43, align 8, !tbaa !5
  %3263 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3262, i32 0, i32 1
  %3264 = load ptr, ptr %3263, align 8, !tbaa !131
  %3265 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3264, i32 0, i32 1
  %3266 = load i32, ptr %3265, align 4, !tbaa !138
  %3267 = load ptr, ptr %43, align 8, !tbaa !5
  %3268 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3267, i32 0, i32 1
  %3269 = load ptr, ptr %3268, align 8, !tbaa !131
  %3270 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3269, i32 0, i32 2
  %3271 = load i32, ptr %3270, align 4, !tbaa !140
  %3272 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3266, i32 noundef %3271)
  %3273 = sext i32 %3272 to i64
  %3274 = getelementptr inbounds i8, ptr %3261, i64 %3273
  store ptr %3274, ptr %157, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #13
  %3275 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %3276 = trunc i8 %3275 to i1
  %3277 = zext i1 %3276 to i64
  %3278 = select i1 %3276, float 1.000000e+00, float 0x3FE3333340000000
  %3279 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 50, float noundef %3278)
  store i32 %3279, ptr %158, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #13
  %3280 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3281 = trunc i8 %3280 to i1
  %3282 = zext i1 %3281 to i64
  %3283 = select i1 %3281, float 0.000000e+00, float -1.000000e+00
  store float %3283, ptr %159, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #13
  %3284 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3285 = trunc i8 %3284 to i1
  %3286 = zext i1 %3285 to i64
  %3287 = select i1 %3285, float 0.000000e+00, float 2.000000e+00
  store float %3287, ptr %160, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #13
  %3288 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %134, ptr noundef nonnull align 4 dereferenceable(8) %142)
  store <2 x float> %3288, ptr %162, align 4
  %3289 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %162, ptr noundef nonnull align 4 dereferenceable(8) %155)
  store <2 x float> %3289, ptr %161, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #13
  %3290 = load ptr, ptr %156, align 8, !tbaa !5
  store ptr %3290, ptr %163, align 8, !tbaa !5
  br label %3291

3291:                                             ; preds = %3373, %3246
  %3292 = load ptr, ptr %163, align 8, !tbaa !5
  %3293 = load ptr, ptr %157, align 8, !tbaa !5
  %3294 = icmp ult ptr %3292, %3293
  br i1 %3294, label %3296, label %3295

3295:                                             ; preds = %3291
  store i32 12, ptr %19, align 4
  br label %3380

3296:                                             ; preds = %3291
  %3297 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 1
  %3298 = load float, ptr %3297, align 4, !tbaa !111
  %3299 = getelementptr inbounds %struct.ImVec4, ptr %133, i32 0, i32 3
  %3300 = load float, ptr %3299, align 4, !tbaa !216
  %3301 = load ptr, ptr %20, align 8, !tbaa !5
  %3302 = getelementptr inbounds %struct.ImGuiContext, ptr %3301, i32 0, i32 6
  %3303 = load float, ptr %3302, align 8, !tbaa !48
  %3304 = fadd float %3300, %3303
  %3305 = fcmp ogt float %3298, %3304
  br i1 %3305, label %3306, label %3307

3306:                                             ; preds = %3296
  store i32 12, ptr %19, align 4
  br label %3380

3307:                                             ; preds = %3296
  %3308 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 1
  %3309 = load float, ptr %3308, align 4, !tbaa !111
  %3310 = getelementptr inbounds %struct.ImVec4, ptr %133, i32 0, i32 1
  %3311 = load float, ptr %3310, align 4, !tbaa !217
  %3312 = fcmp olt float %3309, %3311
  br i1 %3312, label %3313, label %3330

3313:                                             ; preds = %3307
  %3314 = load ptr, ptr %163, align 8, !tbaa !5
  %3315 = load ptr, ptr %157, align 8, !tbaa !5
  %3316 = load ptr, ptr %163, align 8, !tbaa !5
  %3317 = ptrtoint ptr %3315 to i64
  %3318 = ptrtoint ptr %3316 to i64
  %3319 = sub i64 %3317, %3318
  %3320 = call noundef ptr @memchr(ptr noundef %3314, i32 noundef 10, i64 noundef %3319) #15
  store ptr %3320, ptr %163, align 8, !tbaa !5
  %3321 = load ptr, ptr %163, align 8, !tbaa !5
  %3322 = icmp ne ptr %3321, null
  br i1 %3322, label %3323, label %3326

3323:                                             ; preds = %3313
  %3324 = load ptr, ptr %163, align 8, !tbaa !5
  %3325 = getelementptr inbounds i8, ptr %3324, i64 1
  br label %3328

3326:                                             ; preds = %3313
  %3327 = load ptr, ptr %157, align 8, !tbaa !5
  br label %3328

3328:                                             ; preds = %3326, %3323
  %3329 = phi ptr [ %3325, %3323 ], [ %3327, %3326 ]
  store ptr %3329, ptr %163, align 8, !tbaa !5
  br label %3373

3330:                                             ; preds = %3307
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #13
  %3331 = load ptr, ptr %20, align 8, !tbaa !5
  %3332 = load ptr, ptr %163, align 8, !tbaa !5
  %3333 = load ptr, ptr %157, align 8, !tbaa !5
  %3334 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef %3331, ptr noundef %3332, ptr noundef %3333, ptr noundef %163, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %3334, ptr %164, align 4
  %3335 = getelementptr inbounds %struct.ImVec2, ptr %164, i32 0, i32 0
  %3336 = load float, ptr %3335, align 4, !tbaa !113
  %3337 = fcmp ole float %3336, 0.000000e+00
  br i1 %3337, label %3338, label %3347

3338:                                             ; preds = %3330
  %3339 = load ptr, ptr %20, align 8, !tbaa !5
  %3340 = getelementptr inbounds %struct.ImGuiContext, ptr %3339, i32 0, i32 5
  %3341 = load ptr, ptr %3340, align 8, !tbaa !154
  %3342 = call noundef float @_ZN6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %3341, i16 noundef zeroext 32)
  %3343 = fmul float %3342, 5.000000e-01
  %3344 = fptosi float %3343 to i32
  %3345 = sitofp i32 %3344 to float
  %3346 = getelementptr inbounds %struct.ImVec2, ptr %164, i32 0, i32 0
  store float %3345, ptr %3346, align 4, !tbaa !113
  br label %3347

3347:                                             ; preds = %3338, %3330
  call void @llvm.lifetime.start.p0(i64 16, ptr %165) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #13
  %3348 = load float, ptr %159, align 4, !tbaa !47
  %3349 = load ptr, ptr %20, align 8, !tbaa !5
  %3350 = getelementptr inbounds %struct.ImGuiContext, ptr %3349, i32 0, i32 6
  %3351 = load float, ptr %3350, align 8, !tbaa !48
  %3352 = fsub float %3348, %3351
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %167, float noundef 0.000000e+00, float noundef %3352)
  %3353 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %161, ptr noundef nonnull align 4 dereferenceable(8) %167)
  store <2 x float> %3353, ptr %166, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #13
  %3354 = getelementptr inbounds %struct.ImVec2, ptr %164, i32 0, i32 0
  %3355 = load float, ptr %3354, align 4, !tbaa !113
  %3356 = load float, ptr %160, align 4, !tbaa !47
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %169, float noundef %3355, float noundef %3356)
  %3357 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %161, ptr noundef nonnull align 4 dereferenceable(8) %169)
  store <2 x float> %3357, ptr %168, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %165, ptr noundef nonnull align 4 dereferenceable(8) %166, ptr noundef nonnull align 4 dereferenceable(8) %168)
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #13
  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.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) %133)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %165, ptr noundef nonnull align 4 dereferenceable(16) %170)
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %171) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %171, ptr noundef nonnull align 4 dereferenceable(16) %133)
  %3358 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %165, ptr noundef nonnull align 4 dereferenceable(16) %171)
  call void @llvm.lifetime.end.p0(i64 16, ptr %171) #13
  br i1 %3358, label %3359, label %3366

3359:                                             ; preds = %3347
  %3360 = load ptr, ptr %34, align 8, !tbaa !5
  %3361 = getelementptr inbounds %struct.ImGuiWindow, ptr %3360, i32 0, i32 87
  %3362 = load ptr, ptr %3361, align 8, !tbaa !218
  %3363 = getelementptr inbounds %struct.ImRect, ptr %165, i32 0, i32 0
  %3364 = getelementptr inbounds %struct.ImRect, ptr %165, i32 0, i32 1
  %3365 = load i32, ptr %158, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(216) %3362, ptr noundef nonnull align 4 dereferenceable(8) %3363, ptr noundef nonnull align 4 dereferenceable(8) %3364, i32 noundef %3365, float noundef 0.000000e+00, i32 noundef 0)
  br label %3366

3366:                                             ; preds = %3359, %3347
  %3367 = getelementptr inbounds %struct.ImVec2, ptr %134, i32 0, i32 0
  %3368 = load float, ptr %3367, align 4, !tbaa !113
  %3369 = getelementptr inbounds %struct.ImVec2, ptr %155, i32 0, i32 0
  %3370 = load float, ptr %3369, align 4, !tbaa !113
  %3371 = fsub float %3368, %3370
  %3372 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 0
  store float %3371, ptr %3372, align 4, !tbaa !113
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #13
  br label %3373

3373:                                             ; preds = %3366, %3328
  %3374 = load ptr, ptr %20, align 8, !tbaa !5
  %3375 = getelementptr inbounds %struct.ImGuiContext, ptr %3374, i32 0, i32 6
  %3376 = load float, ptr %3375, align 8, !tbaa !48
  %3377 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 1
  %3378 = load float, ptr %3377, align 4, !tbaa !111
  %3379 = fadd float %3378, %3376
  store float %3379, ptr %3377, align 4, !tbaa !111
  br label %3291, !llvm.loop !219

3380:                                             ; preds = %3306, %3295
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #13
  br label %3381

3381:                                             ; preds = %3380
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #13
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %157) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #13
  br label %3382

3382:                                             ; preds = %3381, %3239
  %3383 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3384 = trunc i8 %3383 to i1
  br i1 %3384, label %3392, label %3385

3385:                                             ; preds = %3382
  %3386 = load ptr, ptr %138, align 8, !tbaa !5
  %3387 = load ptr, ptr %137, align 8, !tbaa !5
  %3388 = ptrtoint ptr %3386 to i64
  %3389 = ptrtoint ptr %3387 to i64
  %3390 = sub i64 %3388, %3389
  %3391 = icmp slt i64 %3390, 2097152
  br i1 %3391, label %3392, label %3417

3392:                                             ; preds = %3385, %3382
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #13
  %3393 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %3394 = trunc i8 %3393 to i1
  %3395 = zext i1 %3394 to i64
  %3396 = select i1 %3394, i32 1, i32 0
  %3397 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3396, float noundef 1.000000e+00)
  store i32 %3397, ptr %172, align 4, !tbaa !9
  %3398 = load ptr, ptr %34, align 8, !tbaa !5
  %3399 = getelementptr inbounds %struct.ImGuiWindow, ptr %3398, i32 0, i32 87
  %3400 = load ptr, ptr %3399, align 8, !tbaa !218
  %3401 = load ptr, ptr %20, align 8, !tbaa !5
  %3402 = getelementptr inbounds %struct.ImGuiContext, ptr %3401, i32 0, i32 5
  %3403 = load ptr, ptr %3402, align 8, !tbaa !154
  %3404 = load ptr, ptr %20, align 8, !tbaa !5
  %3405 = getelementptr inbounds %struct.ImGuiContext, ptr %3404, i32 0, i32 6
  %3406 = load float, ptr %3405, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #13
  %3407 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %134, ptr noundef nonnull align 4 dereferenceable(8) %155)
  store <2 x float> %3407, ptr %173, align 4
  %3408 = load i32, ptr %172, align 4, !tbaa !9
  %3409 = load ptr, ptr %137, align 8, !tbaa !5
  %3410 = load ptr, ptr %138, align 8, !tbaa !5
  %3411 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3412 = trunc i8 %3411 to i1
  br i1 %3412, label %3413, label %3414

3413:                                             ; preds = %3392
  br label %3415

3414:                                             ; preds = %3392
  br label %3415

3415:                                             ; preds = %3414, %3413
  %3416 = phi ptr [ null, %3413 ], [ %133, %3414 ]
  call void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216) %3400, ptr noundef %3403, float noundef %3406, ptr noundef nonnull align 4 dereferenceable(8) %173, i32 noundef %3408, ptr noundef %3409, ptr noundef %3410, float noundef 0.000000e+00, ptr noundef %3416)
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #13
  br label %3417

3417:                                             ; preds = %3415, %3385
  %3418 = load i8, ptr %70, align 1, !tbaa !45, !range !43, !noundef !44
  %3419 = trunc i8 %3418 to i1
  br i1 %3419, label %3420, label %3504

3420:                                             ; preds = %3417
  %3421 = load ptr, ptr %21, align 8, !tbaa !5
  %3422 = getelementptr inbounds %struct.ImGuiIO, ptr %3421, i32 0, i32 3
  %3423 = load float, ptr %3422, align 8, !tbaa !220
  %3424 = load ptr, ptr %43, align 8, !tbaa !5
  %3425 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3424, i32 0, i32 12
  %3426 = load float, ptr %3425, align 4, !tbaa !221
  %3427 = fadd float %3426, %3423
  store float %3427, ptr %3425, align 4, !tbaa !221
  call void @llvm.lifetime.start.p0(i64 1, ptr %174) #13
  %3428 = load ptr, ptr %20, align 8, !tbaa !5
  %3429 = getelementptr inbounds %struct.ImGuiContext, ptr %3428, i32 0, i32 2
  %3430 = getelementptr inbounds %struct.ImGuiIO, ptr %3429, i32 0, i32 23
  %3431 = load i8, ptr %3430, align 2, !tbaa !222, !range !43, !noundef !44
  %3432 = trunc i8 %3431 to i1
  br i1 %3432, label %3433, label %3444

3433:                                             ; preds = %3420
  %3434 = load ptr, ptr %43, align 8, !tbaa !5
  %3435 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3434, i32 0, i32 12
  %3436 = load float, ptr %3435, align 4, !tbaa !221
  %3437 = fcmp ole float %3436, 0.000000e+00
  br i1 %3437, label %3444, label %3438

3438:                                             ; preds = %3433
  %3439 = load ptr, ptr %43, align 8, !tbaa !5
  %3440 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3439, i32 0, i32 12
  %3441 = load float, ptr %3440, align 4, !tbaa !221
  %3442 = call float @fmodf(float noundef %3441, float noundef 0x3FF3333340000000) #13
  %3443 = fcmp ole float %3442, 0x3FE99999A0000000
  br label %3444

3444:                                             ; preds = %3438, %3433, %3420
  %3445 = phi i1 [ true, %3433 ], [ true, %3420 ], [ %3443, %3438 ]
  %3446 = zext i1 %3445 to i8
  store i8 %3446, ptr %174, align 1, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #13
  %3447 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %134, ptr noundef nonnull align 4 dereferenceable(8) %141)
  store <2 x float> %3447, ptr %177, align 4
  %3448 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %177, ptr noundef nonnull align 4 dereferenceable(8) %155)
  store <2 x float> %3448, ptr %176, align 4
  %3449 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %176)
  store <2 x float> %3449, ptr %175, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %178) #13
  %3450 = getelementptr inbounds %struct.ImVec2, ptr %175, i32 0, i32 0
  %3451 = load float, ptr %3450, align 4, !tbaa !113
  %3452 = getelementptr inbounds %struct.ImVec2, ptr %175, i32 0, i32 1
  %3453 = load float, ptr %3452, align 4, !tbaa !111
  %3454 = load ptr, ptr %20, align 8, !tbaa !5
  %3455 = getelementptr inbounds %struct.ImGuiContext, ptr %3454, i32 0, i32 6
  %3456 = load float, ptr %3455, align 8, !tbaa !48
  %3457 = fsub float %3453, %3456
  %3458 = fadd float %3457, 5.000000e-01
  %3459 = getelementptr inbounds %struct.ImVec2, ptr %175, i32 0, i32 0
  %3460 = load float, ptr %3459, align 4, !tbaa !113
  %3461 = fadd float %3460, 1.000000e+00
  %3462 = getelementptr inbounds %struct.ImVec2, ptr %175, i32 0, i32 1
  %3463 = load float, ptr %3462, align 4, !tbaa !111
  %3464 = fsub float %3463, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %178, float noundef %3451, float noundef %3458, float noundef %3461, float noundef %3464)
  %3465 = load i8, ptr %174, align 1, !tbaa !45, !range !43, !noundef !44
  %3466 = trunc i8 %3465 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %179) #13
  br i1 %3466, label %3467, label %3469

3467:                                             ; preds = %3444
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %179, ptr noundef nonnull align 4 dereferenceable(16) %133)
  %3468 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %178, ptr noundef nonnull align 4 dereferenceable(16) %179)
  br label %3469

3469:                                             ; preds = %3467, %3444
  %3470 = phi i1 [ false, %3444 ], [ %3468, %3467 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %179) #13
  br i1 %3470, label %3471, label %3478

3471:                                             ; preds = %3469
  %3472 = load ptr, ptr %34, align 8, !tbaa !5
  %3473 = getelementptr inbounds %struct.ImGuiWindow, ptr %3472, i32 0, i32 87
  %3474 = load ptr, ptr %3473, align 8, !tbaa !218
  %3475 = getelementptr inbounds %struct.ImRect, ptr %178, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #13
  %3476 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %178)
  store <2 x float> %3476, ptr %180, align 4
  %3477 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(216) %3474, ptr noundef nonnull align 4 dereferenceable(8) %3475, ptr noundef nonnull align 4 dereferenceable(8) %180, i32 noundef %3477, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #13
  br label %3478

3478:                                             ; preds = %3471, %3469
  %3479 = load i8, ptr %44, align 1, !tbaa !45, !range !43, !noundef !44
  %3480 = trunc i8 %3479 to i1
  br i1 %3480, label %3503, label %3481

3481:                                             ; preds = %3478
  %3482 = load ptr, ptr %20, align 8, !tbaa !5
  %3483 = getelementptr inbounds %struct.ImGuiContext, ptr %3482, i32 0, i32 240
  %3484 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3483, i32 0, i32 0
  store i8 1, ptr %3484, align 8, !tbaa !223
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #13
  %3485 = getelementptr inbounds %struct.ImVec2, ptr %175, i32 0, i32 0
  %3486 = load float, ptr %3485, align 4, !tbaa !113
  %3487 = fsub float %3486, 1.000000e+00
  %3488 = getelementptr inbounds %struct.ImVec2, ptr %175, i32 0, i32 1
  %3489 = load float, ptr %3488, align 4, !tbaa !111
  %3490 = load ptr, ptr %20, align 8, !tbaa !5
  %3491 = getelementptr inbounds %struct.ImGuiContext, ptr %3490, i32 0, i32 6
  %3492 = load float, ptr %3491, align 8, !tbaa !48
  %3493 = fsub float %3489, %3492
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %181, float noundef %3487, float noundef %3493)
  %3494 = load ptr, ptr %20, align 8, !tbaa !5
  %3495 = getelementptr inbounds %struct.ImGuiContext, ptr %3494, i32 0, i32 240
  %3496 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3495, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %3496, ptr align 4 %181, i64 8, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #13
  %3497 = load ptr, ptr %20, align 8, !tbaa !5
  %3498 = getelementptr inbounds %struct.ImGuiContext, ptr %3497, i32 0, i32 6
  %3499 = load float, ptr %3498, align 8, !tbaa !48
  %3500 = load ptr, ptr %20, align 8, !tbaa !5
  %3501 = getelementptr inbounds %struct.ImGuiContext, ptr %3500, i32 0, i32 240
  %3502 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3501, i32 0, i32 2
  store float %3499, ptr %3502, align 4, !tbaa !224
  br label %3503

3503:                                             ; preds = %3481, %3478
  call void @llvm.lifetime.end.p0(i64 16, ptr %178) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %174) #13
  br label %3504

3504:                                             ; preds = %3503, %3417
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #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
  br label %3602

3505:                                             ; preds = %2927
  %3506 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3507 = trunc i8 %3506 to i1
  br i1 %3507, label %3508, label %3518

3508:                                             ; preds = %3505
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #13
  %3509 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3510 = load float, ptr %3509, align 4, !tbaa !113
  %3511 = load ptr, ptr %137, align 8, !tbaa !5
  %3512 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3511, ptr noundef %138)
  %3513 = sitofp i32 %3512 to float
  %3514 = load ptr, ptr %20, align 8, !tbaa !5
  %3515 = getelementptr inbounds %struct.ImGuiContext, ptr %3514, i32 0, i32 6
  %3516 = load float, ptr %3515, align 8, !tbaa !48
  %3517 = fmul float %3513, %3516
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %182, float noundef %3510, float noundef %3517)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %135, ptr align 4 %182, i64 8, i1 false), !tbaa.struct !46
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #13
  br label %3544

3518:                                             ; preds = %3505
  %3519 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %3520 = trunc i8 %3519 to i1
  br i1 %3520, label %3534, label %3521

3521:                                             ; preds = %3518
  %3522 = load ptr, ptr %20, align 8, !tbaa !5
  %3523 = getelementptr inbounds %struct.ImGuiContext, ptr %3522, i32 0, i32 56
  %3524 = load i32, ptr %3523, align 4, !tbaa !118
  %3525 = load i32, ptr %25, align 4, !tbaa !9
  %3526 = icmp eq i32 %3524, %3525
  br i1 %3526, label %3527, label %3534

3527:                                             ; preds = %3521
  %3528 = load ptr, ptr %137, align 8, !tbaa !5
  %3529 = load ptr, ptr %43, align 8, !tbaa !5
  %3530 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3529, i32 0, i32 4
  %3531 = load i32, ptr %3530, align 8, !tbaa !136
  %3532 = sext i32 %3531 to i64
  %3533 = getelementptr inbounds i8, ptr %3528, i64 %3532
  store ptr %3533, ptr %138, align 8, !tbaa !5
  br label %3543

3534:                                             ; preds = %3521, %3518
  %3535 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %3536 = trunc i8 %3535 to i1
  br i1 %3536, label %3542, label %3537

3537:                                             ; preds = %3534
  %3538 = load ptr, ptr %137, align 8, !tbaa !5
  %3539 = load ptr, ptr %137, align 8, !tbaa !5
  %3540 = call i64 @strlen(ptr noundef %3539) #15
  %3541 = getelementptr inbounds i8, ptr %3538, i64 %3540
  store ptr %3541, ptr %138, align 8, !tbaa !5
  br label %3542

3542:                                             ; preds = %3537, %3534
  br label %3543

3543:                                             ; preds = %3542, %3527
  br label %3544

3544:                                             ; preds = %3543, %3508
  %3545 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3546 = trunc i8 %3545 to i1
  br i1 %3546, label %3554, label %3547

3547:                                             ; preds = %3544
  %3548 = load ptr, ptr %138, align 8, !tbaa !5
  %3549 = load ptr, ptr %137, align 8, !tbaa !5
  %3550 = ptrtoint ptr %3548 to i64
  %3551 = ptrtoint ptr %3549 to i64
  %3552 = sub i64 %3550, %3551
  %3553 = icmp slt i64 %3552, 2097152
  br i1 %3553, label %3554, label %3601

3554:                                             ; preds = %3547, %3544
  %3555 = load i32, ptr %15, align 4, !tbaa !9
  %3556 = and i32 %3555, 131072
  %3557 = icmp ne i32 %3556, 0
  br i1 %3557, label %3558, label %3576

3558:                                             ; preds = %3554
  %3559 = getelementptr inbounds %struct.ImVec2, ptr %134, i32 0, i32 0
  %3560 = load float, ptr %3559, align 4, !tbaa !113
  %3561 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  %3562 = getelementptr inbounds %struct.ImVec2, ptr %3561, i32 0, i32 0
  %3563 = load float, ptr %3562, align 4, !tbaa !225
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #13
  %3564 = load ptr, ptr %137, align 8, !tbaa !5
  %3565 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %3564, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  store <2 x float> %3565, ptr %183, align 4
  %3566 = getelementptr inbounds %struct.ImVec2, ptr %183, i32 0, i32 0
  %3567 = load float, ptr %3566, align 4, !tbaa !113
  %3568 = fsub float %3563, %3567
  %3569 = load ptr, ptr %22, align 8, !tbaa !5
  %3570 = getelementptr inbounds %struct.ImGuiStyle, ptr %3569, i32 0, i32 12
  %3571 = getelementptr inbounds %struct.ImVec2, ptr %3570, i32 0, i32 0
  %3572 = load float, ptr %3571, align 4, !tbaa !144
  %3573 = fsub float %3568, %3572
  %3574 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %3560, float noundef %3573)
  %3575 = getelementptr inbounds %struct.ImVec2, ptr %134, i32 0, i32 0
  store float %3574, ptr %3575, align 4, !tbaa !113
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #13
  br label %3576

3576:                                             ; preds = %3558, %3554
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %184, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %185) #13
  %3577 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %3578 = trunc i8 %3577 to i1
  %3579 = zext i1 %3578 to i64
  %3580 = select i1 %3578, i32 1, i32 0
  %3581 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3580, float noundef 1.000000e+00)
  store i32 %3581, ptr %185, align 4, !tbaa !9
  %3582 = load ptr, ptr %34, align 8, !tbaa !5
  %3583 = getelementptr inbounds %struct.ImGuiWindow, ptr %3582, i32 0, i32 87
  %3584 = load ptr, ptr %3583, align 8, !tbaa !218
  %3585 = load ptr, ptr %20, align 8, !tbaa !5
  %3586 = getelementptr inbounds %struct.ImGuiContext, ptr %3585, i32 0, i32 5
  %3587 = load ptr, ptr %3586, align 8, !tbaa !154
  %3588 = load ptr, ptr %20, align 8, !tbaa !5
  %3589 = getelementptr inbounds %struct.ImGuiContext, ptr %3588, i32 0, i32 6
  %3590 = load float, ptr %3589, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #13
  %3591 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %134, ptr noundef nonnull align 4 dereferenceable(8) %184)
  store <2 x float> %3591, ptr %186, align 4
  %3592 = load i32, ptr %185, align 4, !tbaa !9
  %3593 = load ptr, ptr %137, align 8, !tbaa !5
  %3594 = load ptr, ptr %138, align 8, !tbaa !5
  %3595 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3596 = trunc i8 %3595 to i1
  br i1 %3596, label %3597, label %3598

3597:                                             ; preds = %3576
  br label %3599

3598:                                             ; preds = %3576
  br label %3599

3599:                                             ; preds = %3598, %3597
  %3600 = phi ptr [ null, %3597 ], [ %133, %3598 ]
  call void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216) %3584, ptr noundef %3587, float noundef %3590, ptr noundef nonnull align 4 dereferenceable(8) %186, i32 noundef %3592, ptr noundef %3593, ptr noundef %3594, float noundef 0.000000e+00, ptr noundef %3600)
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %185) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #13
  br label %3601

3601:                                             ; preds = %3599, %3547
  br label %3602

3602:                                             ; preds = %3601, %3504
  %3603 = load i8, ptr %45, align 1, !tbaa !45, !range !43, !noundef !44
  %3604 = trunc i8 %3603 to i1
  br i1 %3604, label %3605, label %3609

3605:                                             ; preds = %3602
  %3606 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %3607 = trunc i8 %3606 to i1
  br i1 %3607, label %3609, label %3608

3608:                                             ; preds = %3605
  call void @_ZN5ImGui7PopFontEv()
  br label %3609

3609:                                             ; preds = %3608, %3605, %3602
  %3610 = load i8, ptr %24, align 1, !tbaa !45, !range !43, !noundef !44
  %3611 = trunc i8 %3610 to i1
  br i1 %3611, label %3612, label %3664

3612:                                             ; preds = %3609
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #13
  %3613 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 0
  %3614 = load float, ptr %3613, align 4, !tbaa !113
  %3615 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 1
  %3616 = load float, ptr %3615, align 4, !tbaa !111
  %3617 = load ptr, ptr %22, align 8, !tbaa !5
  %3618 = getelementptr inbounds %struct.ImGuiStyle, ptr %3617, i32 0, i32 12
  %3619 = getelementptr inbounds %struct.ImVec2, ptr %3618, i32 0, i32 1
  %3620 = load float, ptr %3619, align 4, !tbaa !112
  %3621 = fadd float %3616, %3620
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %187, float noundef %3614, float noundef %3621)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %187)
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #13
  %3622 = load ptr, ptr %20, align 8, !tbaa !5
  %3623 = getelementptr inbounds %struct.ImGuiContext, ptr %3622, i32 0, i32 87
  %3624 = getelementptr inbounds %struct.ImGuiNextItemData, ptr %3623, i32 0, i32 1
  %3625 = load i32, ptr %3624, align 4, !tbaa !226
  %3626 = or i32 %3625, 1048577
  store i32 %3626, ptr %3624, align 4, !tbaa !226
  call void @_ZN5ImGui8EndChildEv()
  %3627 = load ptr, ptr %20, align 8, !tbaa !5
  %3628 = getelementptr inbounds %struct.ImGuiContext, ptr %3627, i32 0, i32 88
  %3629 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3628, i32 0, i32 2
  %3630 = load i32, ptr %3629, align 8, !tbaa !227
  %3631 = and i32 %3630, 128
  %3632 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 2
  %3633 = load i32, ptr %3632, align 4, !tbaa !228
  %3634 = or i32 %3633, %3631
  store i32 %3634, ptr %3632, align 4, !tbaa !228
  call void @_ZN5ImGui8EndGroupEv()
  %3635 = load ptr, ptr %20, align 8, !tbaa !5
  %3636 = getelementptr inbounds %struct.ImGuiContext, ptr %3635, i32 0, i32 88
  %3637 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3636, i32 0, i32 0
  %3638 = load i32, ptr %3637, align 8, !tbaa !229
  %3639 = icmp eq i32 %3638, 0
  br i1 %3639, label %3648, label %3640

3640:                                             ; preds = %3612
  %3641 = load ptr, ptr %20, align 8, !tbaa !5
  %3642 = getelementptr inbounds %struct.ImGuiContext, ptr %3641, i32 0, i32 88
  %3643 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3642, i32 0, i32 0
  %3644 = load i32, ptr %3643, align 8, !tbaa !229
  %3645 = load ptr, ptr %34, align 8, !tbaa !5
  %3646 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %3645, i32 noundef 1)
  %3647 = icmp ne i32 %3644, %3646
  br i1 %3647, label %3648, label %3663

3648:                                             ; preds = %3640, %3612
  %3649 = load i32, ptr %25, align 4, !tbaa !9
  %3650 = load ptr, ptr %20, align 8, !tbaa !5
  %3651 = getelementptr inbounds %struct.ImGuiContext, ptr %3650, i32 0, i32 88
  %3652 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3651, i32 0, i32 0
  store i32 %3649, ptr %3652, align 8, !tbaa !229
  %3653 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 1
  %3654 = load i32, ptr %3653, align 4, !tbaa !230
  %3655 = load ptr, ptr %20, align 8, !tbaa !5
  %3656 = getelementptr inbounds %struct.ImGuiContext, ptr %3655, i32 0, i32 88
  %3657 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3656, i32 0, i32 1
  store i32 %3654, ptr %3657, align 4, !tbaa !125
  %3658 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 2
  %3659 = load i32, ptr %3658, align 4, !tbaa !228
  %3660 = load ptr, ptr %20, align 8, !tbaa !5
  %3661 = getelementptr inbounds %struct.ImGuiContext, ptr %3660, i32 0, i32 88
  %3662 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3661, i32 0, i32 2
  store i32 %3659, ptr %3662, align 8, !tbaa !227
  br label %3663

3663:                                             ; preds = %3648, %3640
  br label %3664

3664:                                             ; preds = %3663, %3609
  %3665 = load ptr, ptr %43, align 8, !tbaa !5
  %3666 = icmp ne ptr %3665, null
  br i1 %3666, label %3667, label %3670

3667:                                             ; preds = %3664
  %3668 = load ptr, ptr %43, align 8, !tbaa !5
  %3669 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3668, i32 0, i32 6
  store ptr null, ptr %3669, align 8, !tbaa !152
  br label %3670

3670:                                             ; preds = %3667, %3664
  %3671 = load ptr, ptr %20, align 8, !tbaa !5
  %3672 = getelementptr inbounds %struct.ImGuiContext, ptr %3671, i32 0, i32 251
  %3673 = load i8, ptr %3672, align 8, !tbaa !231, !range !43, !noundef !44
  %3674 = trunc i8 %3673 to i1
  br i1 %3674, label %3675, label %3684

3675:                                             ; preds = %3670
  %3676 = load i8, ptr %45, align 1, !tbaa !45, !range !43, !noundef !44
  %3677 = trunc i8 %3676 to i1
  br i1 %3677, label %3678, label %3681

3678:                                             ; preds = %3675
  %3679 = load i8, ptr %75, align 1, !tbaa !45, !range !43, !noundef !44
  %3680 = trunc i8 %3679 to i1
  br i1 %3680, label %3681, label %3684

3681:                                             ; preds = %3678, %3675
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef @.str.25, ptr noundef @.str.26)
  %3682 = load ptr, ptr %137, align 8, !tbaa !5
  %3683 = load ptr, ptr %138, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %134, ptr noundef %3682, ptr noundef %3683)
  br label %3684

3684:                                             ; preds = %3681, %3678, %3670
  %3685 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %3686 = load float, ptr %3685, align 4, !tbaa !113
  %3687 = fcmp ogt float %3686, 0.000000e+00
  br i1 %3687, label %3688, label %3707

3688:                                             ; preds = %3684
  %3689 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  %3690 = getelementptr inbounds %struct.ImVec2, ptr %3689, i32 0, i32 0
  %3691 = load float, ptr %3690, align 4, !tbaa !225
  %3692 = load ptr, ptr %22, align 8, !tbaa !5
  %3693 = getelementptr inbounds %struct.ImGuiStyle, ptr %3692, i32 0, i32 16
  %3694 = getelementptr inbounds %struct.ImVec2, ptr %3693, i32 0, i32 0
  %3695 = load float, ptr %3694, align 4, !tbaa !114
  %3696 = fadd float %3691, %3695
  %3697 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %3698 = getelementptr inbounds %struct.ImVec2, ptr %3697, i32 0, i32 1
  %3699 = load float, ptr %3698, align 4, !tbaa !214
  %3700 = load ptr, ptr %22, align 8, !tbaa !5
  %3701 = getelementptr inbounds %struct.ImGuiStyle, ptr %3700, i32 0, i32 12
  %3702 = getelementptr inbounds %struct.ImVec2, ptr %3701, i32 0, i32 1
  %3703 = load float, ptr %3702, align 4, !tbaa !112
  %3704 = fadd float %3699, %3703
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %188, float noundef %3696, float noundef %3704)
  %3705 = load ptr, ptr %10, align 8, !tbaa !5
  %3706 = load <2 x float>, ptr %188, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3706, ptr noundef %3705, ptr noundef null, i1 noundef zeroext true)
  br label %3707

3707:                                             ; preds = %3688, %3684
  %3708 = load i8, ptr %72, align 1, !tbaa !45, !range !43, !noundef !44
  %3709 = trunc i8 %3708 to i1
  br i1 %3709, label %3710, label %3712

3710:                                             ; preds = %3707
  %3711 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3711)
  br label %3712

3712:                                             ; preds = %3710, %3707
  %3713 = load ptr, ptr %20, align 8, !tbaa !5
  %3714 = load i32, ptr %15, align 4, !tbaa !9
  %3715 = and i32 %3714, 64
  %3716 = icmp ne i32 %3715, 0
  br i1 %3716, label %3717, label %3720

3717:                                             ; preds = %3712
  %3718 = load i8, ptr %73, align 1, !tbaa !45, !range !43, !noundef !44
  %3719 = trunc i8 %3718 to i1
  store i1 %3719, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3723

3720:                                             ; preds = %3712
  %3721 = load i8, ptr %72, align 1, !tbaa !45, !range !43, !noundef !44
  %3722 = trunc i8 %3721 to i1
  store i1 %3722, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3723

3723:                                             ; preds = %3720, %3717
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #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 %3724

3724:                                             ; preds = %3723, %432, %418
  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 %3725

3725:                                             ; preds = %3724, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  %3726 = load i1, ptr %9, align 1
  ret i1 %3726

3727:                                             ; preds = %2341
  %3728 = load ptr, ptr %110, align 8
  %3729 = load i32, ptr %111, align 4
  %3730 = insertvalue { ptr, i32 } poison, ptr %3728, 0
  %3731 = insertvalue { ptr, i32 } %3730, i32 %3729, 1
  resume { ptr, i32 } %3731

3732:                                             ; preds = %2304, %1586
  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 @_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 @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) #4

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

declare noundef ptr @_ZN6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118), i16 noundef zeroext) #4

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) #4

; 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

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

; Function Attrs: mustprogress 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(118), 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 @_ZN5ImGui7PopFontEv() #4

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, !15, i64 207}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !15, i64 200, !15, i64 201, !15, i64 202, !15, i64 203, !15, i64 204, !15, i64 205, !15, i64 206, !15, i64 207, !15, i64 208, !15, i64 209, !15, i64 210, !15, i64 211, !15, i64 212, !15, i64 213, !7, i64 214, !7, i64 215, !16, i64 216, !16, i64 218, !16, i64 220, !16, i64 222, !16, i64 224, !7, i64 226, !7, i64 227, !15, i64 228, !17, i64 232, !7, i64 236, !7, i64 237, !7, i64 238, !7, i64 239, !10, i64 240, !10, i64 241, !10, i64 242, !13, i64 244, !13, i64 252, !18, i64 264, !19, i64 280, !25, i64 512, !25, i64 528, !25, i64 544, !25, i64 560, !25, i64 576, !25, i64 592, !25, i64 608, !26, i64 624, !26, i64 628, !10, i64 632, !14, i64 636, !14, i64 640, !27, i64 648, !29, i64 664, !14, i64 680, !10, i64 684, !6, i64 688, !30, i64 696, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !6, i64 952, !6, i64 960, !6, i64 968, !7, i64 976, !7, i64 984, !7, i64 1016, !10, i64 1032, !10, i64 1036, !10, i64 1040, !15, i64 1044}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTS8ImGuiDir", !7, i64 0}
!18 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!19 = !{!"_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, !15, i64 64, !15, i64 65, !20, i64 68, !20, i64 72, !20, i64 76, !13, i64 80, !21, i64 88, !16, i64 92, !16, i64 94, !15, i64 96, !15, i64 97, !15, i64 98, !15, i64 99, !13, i64 100, !22, i64 108, !10, i64 136, !10, i64 140, !23, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !14, i64 192, !14, i64 196, !24, i64 200, !24, i64 216}
!20 = !{!"_ZTS6ImVec1", !14, i64 0}
!21 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!22 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !7, i64 18}
!23 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!26 = !{!"_ZTS8ImVec2ih", !16, i64 0, !16, i64 2}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS10ImDrawList", !31, i64 0, !32, i64 16, !33, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !34, i64 80, !35, i64 96, !38, i64 128, !40, i64 152, !41, i64 168, !42, i64 184, !14, i64 200, !6, i64 208}
!31 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS15ImDrawCmdHeader", !36, i64 0, !37, i64 16, !10, i64 24}
!36 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!37 = !{!"long long", !7, i64 0}
!38 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !39, i64 8}
!39 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{!"_ZTS8ImVectorIyE", !10, i64 0, !10, i64 4, !6, i64 8}
!42 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!43 = !{i8 0, i8 2}
!44 = !{}
!45 = !{!15, !15, i64 0}
!46 = !{i64 0, i64 4, !47, i64 4, i64 4, !47}
!47 = !{!14, !14, i64 0}
!48 = !{!49, !14, i64 4224}
!49 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !50, i64 8, !52, i64 2984, !53, i64 3056, !6, i64 4216, !14, i64 4224, !14, i64 4228, !14, i64 4232, !14, i64 4236, !54, i64 4240, !55, i64 4776, !10, i64 4784, !10, i64 4788, !10, i64 4792, !10, i64 4796, !15, i64 4800, !15, i64 4801, !15, i64 4802, !15, i64 4803, !6, i64 4808, !7, i64 4816, !56, i64 4832, !56, i64 4848, !51, i64 4864, !10, i64 4868, !23, i64 4872, !23, i64 4888, !23, i64 4904, !57, i64 4920, !27, i64 4936, !10, i64 4952, !13, i64 4956, !10, i64 4964, !6, i64 4968, !6, i64 4976, !6, i64 4984, !6, i64 4992, !6, i64 5000, !6, i64 5008, !13, i64 5016, !10, i64 5024, !10, i64 5028, !14, i64 5032, !13, i64 5036, !13, i64 5044, !10, i64 5052, !10, i64 5056, !10, i64 5060, !10, i64 5064, !10, i64 5068, !14, i64 5072, !14, i64 5076, !15, i64 5080, !15, i64 5081, !15, i64 5082, !10, i64 5084, !10, i64 5088, !14, i64 5092, !15, i64 5096, !15, i64 5097, !15, i64 5098, !15, i64 5099, !15, i64 5100, !15, i64 5101, !15, i64 5102, !10, i64 5103, !13, i64 5104, !6, i64 5112, !58, i64 5120, !10, i64 5124, !59, i64 5128, !60, i64 5140, !10, i64 5148, !14, i64 5152, !55, i64 5160, !55, i64 5168, !55, i64 5176, !61, i64 5184, !7, i64 5204, !62, i64 7056, !10, i64 7400, !15, i64 7404, !10, i64 7408, !10, i64 7412, !10, i64 7416, !10, i64 7420, !64, i64 7424, !65, i64 7480, !66, i64 7560, !15, i64 7672, !10, i64 7676, !67, i64 7680, !68, i64 7696, !69, i64 7712, !70, i64 7728, !71, i64 7744, !72, i64 7760, !73, i64 7776, !73, i64 7792, !74, i64 7808, !75, i64 7824, !15, i64 7840, !15, i64 7841, !15, i64 7842, !15, i64 7843, !10, i64 7844, !6, i64 7848, !10, i64 7856, !21, i64 7860, !10, i64 7864, !10, i64 7868, !10, i64 7872, !10, i64 7876, !70, i64 7880, !10, i64 7896, !14, i64 7900, !10, i64 7904, !10, i64 7908, !58, i64 7912, !37, i64 7920, !7, i64 7928, !15, i64 7929, !15, i64 7930, !15, i64 7931, !76, i64 7936, !15, i64 7992, !15, i64 7993, !15, i64 7994, !10, i64 7996, !10, i64 8000, !10, i64 8004, !17, i64 8008, !17, i64 8012, !17, i64 8016, !25, i64 8020, !25, i64 8036, !10, i64 8052, !10, i64 8056, !10, i64 8060, !76, i64 8064, !76, i64 8120, !76, i64 8176, !76, i64 8232, !10, i64 8288, !10, i64 8292, !10, i64 8296, !10, i64 8300, !15, i64 8304, !15, i64 8305, !10, i64 8308, !10, i64 8312, !6, i64 8320, !6, i64 8328, !6, i64 8336, !14, i64 8344, !14, i64 8348, !15, i64 8352, !77, i64 8356, !13, i64 8360, !13, i64 8368, !14, i64 8376, !15, i64 8380, !15, i64 8381, !15, i64 8382, !10, i64 8384, !10, i64 8388, !10, i64 8392, !78, i64 8400, !25, i64 8464, !25, i64 8480, !10, i64 8496, !10, i64 8500, !14, i64 8504, !10, i64 8508, !10, i64 8512, !10, i64 8516, !10, i64 8520, !42, i64 8528, !7, i64 8544, !10, i64 8560, !79, i64 8568, !6, i64 8584, !10, i64 8592, !10, i64 8596, !80, i64 8600, !81, i64 8616, !24, i64 8656, !39, i64 8672, !6, i64 8688, !83, i64 8696, !85, i64 8736, !86, i64 8752, !87, i64 8768, !6, i64 8872, !10, i64 8880, !88, i64 8888, !89, i64 8904, !10, i64 8944, !10, i64 8948, !14, i64 8952, !14, i64 8956, !10, i64 8960, !10, i64 8964, !10, i64 8968, !14, i64 8972, !13, i64 8976, !91, i64 8984, !93, i64 9104, !94, i64 9128, !10, i64 9248, !60, i64 9252, !10, i64 9260, !10, i64 9264, !10, i64 9268, !10, i64 9272, !10, i64 9276, !14, i64 9280, !14, i64 9284, !10, i64 9288, !36, i64 9292, !96, i64 9308, !25, i64 9356, !15, i64 9372, !16, i64 9374, !14, i64 9376, !14, i64 9380, !14, i64 9384, !15, i64 9388, !15, i64 9389, !14, i64 9392, !14, i64 9396, !14, i64 9400, !16, i64 9404, !16, i64 9406, !6, i64 9408, !92, i64 9416, !18, i64 9432, !97, i64 9448, !99, i64 9552, !99, i64 9568, !15, i64 9584, !14, i64 9588, !100, i64 9592, !101, i64 9608, !102, i64 9624, !103, i64 9640, !104, i64 9656, !10, i64 9672, !7, i64 9680, !15, i64 9760, !10, i64 9764, !6, i64 9768, !6, i64 9776, !100, i64 9784, !6, i64 9800, !6, i64 9808, !14, i64 9816, !15, i64 9820, !10, i64 9824, !10, i64 9828, !10, i64 9832, !6, i64 9840, !6, i64 9848, !13, i64 9856, !15, i64 9864, !10, i64 9868, !105, i64 9872, !6, i64 9896, !10, i64 9904, !10, i64 9908, !100, i64 9912, !106, i64 9928, !10, i64 9952, !10, i64 9956, !7, i64 9960, !7, i64 9961, !15, i64 9962, !10, i64 9964, !7, i64 9968, !15, i64 9969, !7, i64 9970, !10, i64 9972, !14, i64 9976, !36, i64 9980, !107, i64 9996, !108, i64 10024, !110, i64 10064, !7, i64 10124, !10, i64 10364, !10, i64 10368, !14, i64 10372, !10, i64 10376, !10, i64 10380, !10, i64 10384, !92, i64 10392, !7, i64 10408}
!50 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !14, i64 56, !15, i64 60, !6, i64 64, !13, i64 72, !15, i64 80, !15, i64 81, !15, i64 82, !15, i64 83, !15, i64 84, !15, i64 85, !15, i64 86, !15, i64 87, !15, i64 88, !15, i64 89, !15, i64 90, !15, i64 91, !15, i64 92, !15, i64 93, !15, i64 94, !15, i64 95, !15, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !15, i64 124, !15, i64 125, !15, i64 126, !15, i64 127, !15, i64 128, !15, i64 129, !15, i64 130, !15, i64 131, !15, i64 132, !15, i64 133, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !15, i64 176, !15, i64 177, !15, i64 178, !15, i64 179, !15, i64 180, !15, i64 181, !15, i64 182, !14, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !13, i64 204, !6, i64 216, !13, i64 224, !7, i64 232, !14, i64 240, !14, i64 244, !51, i64 248, !15, i64 252, !15, i64 253, !15, i64 254, !15, i64 255, !10, i64 256, !7, i64 260, !15, i64 2724, !13, i64 2728, !7, i64 2736, !7, i64 2776, !7, i64 2816, !7, i64 2821, !7, i64 2826, !7, i64 2836, !7, i64 2846, !7, i64 2851, !7, i64 2856, !15, i64 2861, !15, i64 2862, !7, i64 2864, !7, i64 2884, !7, i64 2904, !14, i64 2924, !15, i64 2928, !15, i64 2929, !16, i64 2930, !32, i64 2936, !6, i64 2952, !6, i64 2960, !6, i64 2968}
!51 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!52 = !{!"_ZTS15ImGuiPlatformIO", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !16, i64 56, !6, i64 64}
!53 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !14, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !13, i64 24, !13, i64 32, !17, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !13, i64 60, !14, i64 68, !14, i64 72, !13, i64 76, !13, i64 84, !13, i64 92, !13, i64 100, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !14, i64 140, !14, i64 144, !14, i64 148, !14, i64 152, !14, i64 156, !13, i64 160, !17, i64 168, !13, i64 172, !13, i64 180, !14, i64 188, !13, i64 192, !13, i64 200, !13, i64 208, !13, i64 216, !14, i64 224, !15, i64 228, !15, i64 229, !15, i64 230, !14, i64 232, !14, i64 236, !7, i64 240, !14, i64 1136, !14, i64 1140, !14, i64 1144, !10, i64 1148, !10, i64 1152}
!54 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !36, i64 40, !10, i64 56, !34, i64 64, !7, i64 80, !14, i64 464, !7, i64 468}
!55 = !{!"double", !7, i64 0}
!56 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!59 = !{!"_ZTS24ImGuiDeactivatedItemData", !10, i64 0, !10, i64 4, !15, i64 8, !15, i64 9}
!60 = !{!"_ZTS20ImGuiDataTypeStorage", !7, i64 0}
!61 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!62 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !63, i64 312, !63, i64 328}
!63 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !10, i64 8, !37, i64 16, !14, i64 24, !10, i64 28, !10, i64 32, !15, i64 36, !7, i64 37, !60, i64 38, !10, i64 48}
!65 = !{!"_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}
!66 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !10, i64 56, !15, i64 60, !25, i64 64, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100, !10, i64 108}
!67 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!72 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !25, i64 16, !10, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !37, i64 48}
!77 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!78 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !15, i64 57, !15, i64 58}
!79 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!81 = !{!"_ZTS6ImPoolI10ImGuiTableE", !82, i64 0, !27, i64 16, !10, i64 32, !10, i64 36}
!82 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!83 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !84, i64 0, !27, i64 16, !10, i64 32, !10, i64 36}
!84 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!85 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!86 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!87 = !{!"_ZTS19ImGuiBoxSelectState", !10, i64 0, !15, i64 4, !15, i64 5, !15, i64 6, !15, i64 7, !15, i64 8, !10, i64 9, !13, i64 12, !13, i64 20, !13, i64 28, !6, i64 40, !15, i64 48, !25, i64 52, !25, i64 68, !25, i64 84}
!88 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!89 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !90, i64 0, !27, i64 16, !10, i64 32, !10, i64 36}
!90 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !10, i64 0, !10, i64 4, !6, i64 8}
!91 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !6, i64 32, !92, i64 40, !92, i64 56, !92, i64 72, !10, i64 88, !13, i64 92, !14, i64 100, !15, i64 104, !15, i64 105, !15, i64 106, !15, i64 107, !10, i64 108, !10, i64 112}
!92 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!93 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !92, i64 8}
!94 = !{!"_ZTS6ImFont", !24, i64 0, !14, i64 16, !14, i64 20, !32, i64 24, !95, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !16, i64 80, !16, i64 82, !16, i64 84, !16, i64 86, !14, i64 88, !14, i64 92, !15, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !10, i64 112, !7, i64 116}
!95 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!96 = !{!"_ZTS21ImGuiComboPreviewData", !25, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!97 = !{!"_ZTS22ImGuiTypingSelectState", !98, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !14, i64 96, !15, i64 100}
!98 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !15, i64 16, !15, i64 17, !7, i64 18}
!99 = !{!"_ZTS20ImGuiPlatformImeData", !15, i64 0, !13, i64 4, !14, i64 12}
!100 = !{!"_ZTS15ImGuiTextBuffer", !92, i64 0}
!101 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!102 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !92, i64 0}
!103 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !92, i64 0}
!104 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!105 = !{!"_ZTS23ImGuiErrorRecoveryState", !16, i64 0, !16, i64 2, !16, i64 4, !16, i64 6, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !16, i64 18, !16, i64 20}
!106 = !{!"_ZTS14ImGuiTextIndex", !71, i64 0, !10, i64 16}
!107 = !{!"_ZTS18ImGuiMetricsConfig", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !15, i64 4, !15, i64 5, !15, i64 6, !15, i64 7, !15, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!108 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !109, i64 16, !15, i64 32, !14, i64 36}
!109 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!110 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !16, i64 8, !7, i64 12}
!111 = !{!13, !14, i64 4}
!112 = !{!53, !14, i64 64}
!113 = !{!13, !14, i64 0}
!114 = !{!53, !14, i64 84}
!115 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !47, i64 16, i64 4, !47, i64 20, i64 4, !47, i64 24, i64 4, !47, i64 28, i64 4, !47, i64 32, i64 4, !47, i64 36, i64 4, !47, i64 40, i64 4, !47, i64 44, i64 4, !47, i64 48, i64 4, !47, i64 52, i64 4, !47, i64 56, i64 4, !47, i64 60, i64 4, !47, i64 64, i64 4, !47, i64 68, i64 4, !47, i64 72, i64 4, !47, i64 76, i64 4, !9}
!116 = !{!49, !10, i64 7864}
!117 = !{!49, !10, i64 7876}
!118 = !{!49, !10, i64 5084}
!119 = !{!53, !14, i64 68}
!120 = !{!53, !14, i64 72}
!121 = !{!49, !6, i64 4968}
!122 = !{!12, !21, i64 368}
!123 = !{!12, !16, i64 374}
!124 = !{!12, !14, i64 192}
!125 = !{!49, !10, i64 7484}
!126 = !{!49, !15, i64 7841}
!127 = !{!49, !58, i64 7912}
!128 = !{!49, !10, i64 5124}
!129 = !{!12, !14, i64 156}
!130 = !{!91, !15, i64 107}
!131 = !{!91, !6, i64 8}
!132 = !{!133, !7, i64 23}
!133 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !10, i64 16, !7, i64 20, !7, i64 21, !7, i64 22, !7, i64 23, !7, i64 24, !7, i64 25, !7, i64 26, !14, i64 28, !134, i64 32}
!134 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 2584, !16, i64 2586, !10, i64 2588, !10, i64 2592}
!135 = !{!91, !6, i64 48}
!136 = !{!91, !10, i64 24}
!137 = !{!91, !10, i64 108}
!138 = !{!133, !10, i64 4}
!139 = !{!91, !10, i64 112}
!140 = !{!133, !10, i64 8}
!141 = !{!133, !10, i64 0}
!142 = !{!91, !10, i64 20}
!143 = !{!91, !6, i64 64}
!144 = !{!53, !14, i64 60}
!145 = !{!91, !14, i64 92}
!146 = !{!50, !15, i64 252}
!147 = !{!133, !7, i64 12}
!148 = !{!50, !15, i64 88}
!149 = !{!77, !77, i64 0}
!150 = !{!49, !10, i64 7400}
!151 = !{!91, !14, i64 96}
!152 = !{!91, !6, i64 32}
!153 = !{!7, !7, i64 0}
!154 = !{!49, !6, i64 4216}
!155 = !{!94, !14, i64 20}
!156 = !{!94, !14, i64 100}
!157 = !{!94, !14, i64 104}
!158 = !{!94, !14, i64 108}
!159 = !{!94, !6, i64 64}
!160 = !{!94, !6, i64 56}
!161 = !{!162, !14, i64 4}
!162 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 0, !10, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36}
!163 = !{!94, !14, i64 16}
!164 = !{!91, !15, i64 106}
!165 = !{!91, !10, i64 88}
!166 = !{!91, !10, i64 16}
!167 = !{!49, !15, i64 5097}
!168 = !{!50, !14, i64 224}
!169 = !{!25, !14, i64 0}
!170 = !{!50, !14, i64 228}
!171 = !{!12, !14, i64 284}
!172 = !{!91, !15, i64 105}
!173 = !{!16, !16, i64 0}
!174 = !{!50, !15, i64 253}
!175 = !{!91, !15, i64 104}
!176 = !{!50, !14, i64 204}
!177 = !{!50, !14, i64 208}
!178 = !{!50, !15, i64 254}
!179 = !{!50, !10, i64 2936}
!180 = distinct !{!180, !181}
!181 = !{!"llvm.loop.mustprogress"}
!182 = !{!49, !15, i64 5096}
!183 = !{!133, !10, i64 16}
!184 = !{!50, !15, i64 255}
!185 = !{!50, !10, i64 0}
!186 = !{!50, !10, i64 4}
!187 = !{!49, !15, i64 88}
!188 = !{!50, !15, i64 91}
!189 = !{!49, !6, i64 2992}
!190 = !{!49, !6, i64 10400}
!191 = distinct !{!191, !181}
!192 = !{!92, !10, i64 0}
!193 = !{!92, !6, i64 8}
!194 = !{!91, !10, i64 56}
!195 = !{!196, !6, i64 0}
!196 = !{!"_ZTS26ImGuiInputTextCallbackData", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !16, i64 24, !77, i64 28, !6, i64 32, !10, i64 40, !10, i64 44, !15, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!197 = !{!196, !10, i64 8}
!198 = !{!196, !10, i64 12}
!199 = !{!196, !6, i64 16}
!200 = !{!91, !6, i64 80}
!201 = !{!196, !77, i64 28}
!202 = !{!196, !6, i64 32}
!203 = !{!196, !10, i64 40}
!204 = !{!196, !10, i64 44}
!205 = !{!196, !15, i64 48}
!206 = !{!196, !10, i64 52}
!207 = !{!196, !10, i64 56}
!208 = !{!196, !10, i64 60}
!209 = !{!91, !10, i64 72}
!210 = !{!49, !10, i64 9104}
!211 = !{!49, !6, i64 9120}
!212 = !{!49, !10, i64 9112}
!213 = !{!49, !10, i64 10384}
!214 = !{!25, !14, i64 4}
!215 = distinct !{!215, !181}
!216 = !{!36, !14, i64 12}
!217 = !{!36, !14, i64 4}
!218 = !{!12, !6, i64 688}
!219 = distinct !{!219, !181}
!220 = !{!50, !14, i64 16}
!221 = !{!91, !14, i64 100}
!222 = !{!49, !15, i64 98}
!223 = !{!49, !15, i64 9552}
!224 = !{!49, !14, i64 9564}
!225 = !{!25, !14, i64 8}
!226 = !{!49, !10, i64 7428}
!227 = !{!49, !10, i64 7488}
!228 = !{!65, !10, i64 8}
!229 = !{!49, !10, i64 7480}
!230 = !{!65, !10, i64 4}
!231 = !{!49, !15, i64 9760}


; 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.34 = 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 [82 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [31 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.67 = 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.68 = external hidden unnamed_addr constant [108 x i8], align 1
@.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(1045), 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 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 void @_ZN5ImGui11PopStyleVarEi(i32 noundef) local_unnamed_addr #4

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.34, 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 207
  %61 = load i8, ptr %60, align 1, !tbaa !5, !range !41, !noundef !42
  %62 = trunc nuw i8 %61 to i1
  br i1 %62, label %1572, 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.59, ptr noundef nonnull @.str.2, i32 noundef 4413, 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
  %.not1034 = icmp eq i32 %71, 67633152
  br i1 %.not1034, label %72, label %73

72:                                               ; preds = %68
  tail call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.2, i32 noundef 4414, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

73:                                               ; preds = %68
  %74 = and i32 %5, 32
  %.not1035 = icmp eq i32 %74, 0
  %75 = and i32 %5, 262176
  %.not1036 = icmp eq i32 %75, 262176
  br i1 %.not1036, label %76, label %77

76:                                               ; preds = %73
  tail call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.2, i32 noundef 4415, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

77:                                               ; preds = %73
  %78 = and i32 %5, 67239936
  %.not1037 = icmp eq i32 %78, 67239936
  br i1 %.not1037, label %79, label %80

79:                                               ; preds = %77
  tail call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.2, i32 noundef 4416, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

80:                                               ; preds = %77
  %81 = load ptr, ptr @GImGui, align 8, !tbaa !43
  %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(1045) %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.0562.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 4224
  %90 = load float, ptr %89, align 8, !tbaa !44
  %91 = fmul float %90, 8.000000e+00
  br label %93

92:                                               ; preds = %84
  %.sroa.0563.4.vec.extract = extractelement <2 x float> %86, i64 1
  br label %93

93:                                               ; preds = %92, %88
  %94 = phi float [ %91, %88 ], [ %.sroa.0563.4.vec.extract, %92 ]
  %95 = getelementptr inbounds i8, ptr %81, i64 3116
  %96 = getelementptr inbounds i8, ptr %81, i64 3120
  %97 = load float, ptr %96, align 4, !tbaa !107
  %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.0562.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.0563.0.vec.extract = extractelement <2 x float> %86, i64 0
  %101 = fcmp ogt float %.sroa.0563.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 3140
  %105 = load float, ptr %104, align 4, !tbaa !108
  %106 = fadd float %.sroa.0563.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 280
  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.0531.0.copyload = load float, ptr %9, align 8, !tbaa !109
  %.sroa.11.0.copyload = load float, ptr %110, align 4, !tbaa !109
  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 !107
  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 7480
  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 !110
  store i64 %115, ptr %111, align 8
  %121 = getelementptr inbounds i8, ptr %81, i64 7864
  %122 = load i32, ptr %121, align 8, !tbaa !112
  %123 = icmp eq i32 %122, %85
  br i1 %123, label %124, label %129

124:                                              ; preds = %119
  %125 = getelementptr inbounds i8, ptr %81, i64 7876
  %126 = load i32, ptr %125, align 4, !tbaa !113
  %127 = and i32 %126, 8
  %.not1039 = icmp eq i32 %127, 0
  %brmerge = or i1 %.not1035, %.not1039
  br i1 %brmerge, label %129, label %128

128:                                              ; preds = %124
  store i32 0, ptr %121, align 8, !tbaa !112
  br label %129

129:                                              ; preds = %124, %128, %119
  %130 = phi i32 [ %85, %124 ], [ 0, %128 ], [ %122, %119 ]
  %131 = getelementptr inbounds i8, ptr %81, i64 5084
  %132 = load i32, ptr %131, align 4, !tbaa !114
  %133 = icmp eq i32 %132, %85
  br i1 %133, label %134, label %135

134:                                              ; preds = %129
  store i32 0, ptr %121, align 8, !tbaa !112
  br label %135

135:                                              ; preds = %134, %129
  %136 = getelementptr inbounds i8, ptr %81, i64 3408
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %136)
  %137 = getelementptr inbounds i8, ptr %81, i64 3124
  %138 = load float, ptr %137, align 4, !tbaa !115
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %138)
  %139 = getelementptr inbounds i8, ptr %81, i64 3128
  %140 = load float, ptr %139, align 4, !tbaa !116
  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 !112
  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 4968
  %146 = load ptr, ptr %145, align 8, !tbaa !117
  %147 = getelementptr inbounds i8, ptr %146, i64 280
  %148 = getelementptr inbounds i8, ptr %146, i64 368
  %149 = load i32, ptr %148, align 8, !tbaa !118
  %150 = shl nuw i32 1, %149
  %151 = getelementptr inbounds i8, ptr %146, i64 374
  %152 = load i16, ptr %151, align 2, !tbaa !119
  %153 = trunc i32 %150 to i16
  %154 = or i16 %152, %153
  store i16 %154, ptr %151, align 2, !tbaa !119
  %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 192
  %157 = load float, ptr %156, align 8, !tbaa !120
  %158 = fsub float %.sroa.0531.0.copyload, %157
  br label %164

159:                                              ; preds = %107
  %160 = load float, ptr %96, align 4, !tbaa !107
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %160)
  %161 = and i32 %5, 134217728
  %.not1038 = icmp eq i32 %161, 0
  br i1 %.not1038, 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.0531.2 = phi float [ %158, %144 ], [ %.sroa.0531.0.copyload, %159 ], [ %.sroa.0531.0.copyload, %162 ]
  %.2940 = phi ptr [ %146, %144 ], [ %59, %159 ], [ %59, %162 ]
  %165 = getelementptr inbounds i8, ptr %81, i64 7480
  %166 = getelementptr inbounds i8, ptr %81, i64 7484
  %167 = load i32, ptr %166, align 4, !tbaa !121
  %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 %.critedge1100

170:                                              ; preds = %164
  call void @_ZN5ImGui14SetMouseCursorEi(i32 noundef 1)
  %171 = getelementptr inbounds i8, ptr %81, i64 7841
  %172 = load i8, ptr %171, align 1, !tbaa !122, !range !41, !noundef !42
  %173 = trunc nuw i8 %172 to i1
  %not. = xor i1 %173, true
  br label %.critedge1100

.critedge1100:                                    ; preds = %170, %164
  %.0941.shrunk = phi i1 [ %not., %170 ], [ false, %164 ]
  %174 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %85)
  %175 = load i32, ptr %166, align 4, !tbaa !121
  %176 = lshr i32 %175, 2
  %177 = and i32 %176, 512
  %spec.select1101 = or i32 %177, %5
  %178 = and i32 %spec.select1101, 512
  %179 = icmp ne i32 %178, 0
  %180 = and i32 %5, 1024
  %.not1041 = icmp eq i32 %180, 0
  %181 = and i32 %5, 65536
  %182 = icmp eq i32 %181, 0
  %183 = and i32 %5, 4194304
  %.not1042 = icmp eq i32 %183, 0
  %184 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not1042, %184
  br i1 %or.cond17, label %186, label %185

185:                                              ; preds = %.critedge1100
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.2, i32 noundef 4505, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

186:                                              ; preds = %.critedge1100
  %187 = getelementptr inbounds i8, ptr %81, i64 5084
  %188 = load i32, ptr %187, align 4, !tbaa !114
  %.not = icmp eq i32 %188, %85
  br i1 %.not, label %201, label %189

189:                                              ; preds = %186
  %190 = getelementptr inbounds i8, ptr %81, i64 7864
  %191 = load i32, ptr %190, align 8, !tbaa !112
  %192 = icmp eq i32 %191, %85
  br i1 %192, label %193, label %201

193:                                              ; preds = %189
  %194 = getelementptr inbounds i8, ptr %81, i64 7876
  %195 = load i32, ptr %194, align 4, !tbaa !113
  %196 = and i32 %195, 1
  %.not1043 = icmp eq i32 %196, 0
  br i1 %.not1043, label %197, label %201

197:                                              ; preds = %193
  %198 = getelementptr inbounds i8, ptr %81, i64 7912
  %199 = load i32, ptr %198, align 8, !tbaa !123
  %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 %.0941.shrunk, label %203, label %207

203:                                              ; preds = %201
  %204 = getelementptr inbounds i8, ptr %81, i64 2824
  %205 = load i8, ptr %204, align 8, !tbaa !124, !range !41, !noundef !42
  %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 %.thread1214

212:                                              ; preds = %210
  %213 = getelementptr inbounds i8, ptr %81, i64 5124
  %214 = load i32, ptr %213, align 4, !tbaa !125
  %215 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2940, i32 noundef 1)
  %216 = icmp eq i32 %214, %215
  %.pre = load i32, ptr %187, align 4, !tbaa !114
  br label %.thread1214

.thread1214:                                      ; 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 %.2940, i32 noundef 1)
  %219 = icmp eq i32 %217, %218
  br label %221

220:                                              ; preds = %207
  br i1 %70, label %221, label %226

221:                                              ; preds = %.thread1214, %220
  %222 = phi i1 [ %219, %.thread1214 ], [ false, %220 ]
  %223 = phi i1 [ %.ph, %.thread1214 ], [ false, %220 ]
  %224 = getelementptr inbounds i8, ptr %.2940, i64 156
  %225 = load float, ptr %224, align 4, !tbaa !126
  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 %.thread1216

.thread1216:                                      ; preds = %226
  %230 = select i1 %208, i1 true, i1 %228
  %spec.select12061218 = select i1 %230, i1 true, i1 %202
  %231 = select i1 %spec.select12061218, i1 true, i1 %227
  br i1 %231, label %267, label %.thread1224.thread

232:                                              ; preds = %226
  %233 = getelementptr inbounds i8, ptr %174, i64 107
  %234 = load i8, ptr %233, align 1, !tbaa !127, !range !41, !noundef !42
  %235 = trunc nuw i8 %234 to i1
  %236 = getelementptr inbounds i8, ptr %174, i64 8
  %237 = load ptr, ptr %236, align 8, !tbaa !128
  %238 = getelementptr inbounds i8, ptr %237, i64 23
  %239 = load i8, ptr %238, align 1, !tbaa !129
  %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.select1206 = select i1 %243, i1 true, i1 %202
  %244 = select i1 %spec.select1206, 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
  %.not1052.not = icmp slt i32 %247, %3
  br i1 %.not1052.not, label %249, label %248

248:                                              ; preds = %245
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.2, i32 noundef 4524, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

249:                                              ; preds = %245
  store i8 0, ptr %233, align 1, !tbaa !127
  %250 = getelementptr inbounds i8, ptr %174, i64 40
  %251 = getelementptr inbounds i8, ptr %174, i64 48
  %252 = load ptr, ptr %251, align 8, !tbaa !132
  %253 = getelementptr inbounds i8, ptr %174, i64 24
  %254 = load i32, ptr %253, align 8, !tbaa !133
  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 !133
  %256 = load ptr, ptr %251, align 8, !tbaa !132
  %257 = shl i64 %246, 32
  %sext1053 = add i64 %257, 4294967296
  %258 = ashr exact i64 %sext1053, 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 !134
  %261 = load ptr, ptr %236, align 8, !tbaa !128
  %262 = getelementptr inbounds i8, ptr %261, i64 4
  store i32 %260, ptr %262, align 4, !tbaa !135
  %263 = getelementptr inbounds i8, ptr %174, i64 112
  %264 = load i32, ptr %263, align 8, !tbaa !136
  %265 = getelementptr inbounds i8, ptr %261, i64 8
  store i32 %264, ptr %265, align 4, !tbaa !137
  store i32 %264, ptr %261, align 4, !tbaa !138
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(116) %174)
  br label %.thread1224

266:                                              ; preds = %232
  br i1 %244, label %267, label %270

267:                                              ; preds = %.thread1216, %266
  %268 = phi i1 [ false, %.thread1216 ], [ %242, %266 ]
  %spec.select120612201222 = phi i1 [ %spec.select12061218, %.thread1216 ], [ %spec.select1206, %266 ]
  %269 = load i32, ptr %187, align 4, !tbaa !114
  %.not1044 = icmp ne i32 %269, %85
  %brmerge1103 = select i1 %.not1044, i1 true, i1 %268
  br i1 %brmerge1103, label %271, label %.thread1224

270:                                              ; preds = %266
  br i1 %242, label %271, label %.thread1224.thread

271:                                              ; preds = %267, %270
  %272 = phi i1 [ %268, %267 ], [ true, %270 ]
  %spec.select120612201223 = phi i1 [ %spec.select120612201222, %267 ], [ false, %270 ]
  %273 = phi i1 [ true, %267 ], [ false, %270 ]
  %274 = getelementptr inbounds i8, ptr %81, i64 8984
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %274)
  %275 = getelementptr inbounds i8, ptr %81, i64 9004
  %276 = load i32, ptr %275, align 4, !tbaa !139
  call void @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef %276)
  %277 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %278 = trunc i64 %277 to i32
  %.not1045.not = icmp slt i32 %278, %3
  br i1 %.not1045.not, label %280, label %279

279:                                              ; preds = %271
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.2, i32 noundef 4546, 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 9040
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %282, i32 noundef %281)
  %283 = getelementptr inbounds i8, ptr %81, i64 9048
  %284 = load ptr, ptr %283, align 8, !tbaa !140
  %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 !139
  %287 = icmp ne i32 %286, %85
  %.not1250 = select i1 %287, i1 true, i1 %272
  br i1 %.not1250, label %299, label %288

288:                                              ; preds = %280
  %289 = getelementptr inbounds i8, ptr %81, i64 9008
  %290 = load i32, ptr %289, align 8, !tbaa !133
  %.not1046 = icmp eq i32 %290, %278
  br i1 %.not1046, label %291, label %298

291:                                              ; preds = %288
  %292 = getelementptr inbounds i8, ptr %81, i64 9032
  %293 = load ptr, ptr %292, align 8, !tbaa !132
  %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
  %.not1047 = icmp eq i32 %297, 0
  br i1 %.not1047, label %299, label %298

298:                                              ; preds = %295, %291, %288
  br label %299

299:                                              ; preds = %298, %295, %280
  %.0954.shrunk = phi i1 [ false, %298 ], [ true, %295 ], [ false, %280 ]
  store i32 %85, ptr %275, align 4, !tbaa !139
  %300 = getelementptr inbounds i8, ptr %81, i64 9008
  store i32 %278, ptr %300, align 8, !tbaa !133
  br i1 %179, label %309, label %301

301:                                              ; preds = %299
  %302 = getelementptr inbounds i8, ptr %81, i64 9024
  %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 9032
  %305 = load ptr, ptr %304, align 8, !tbaa !132
  %306 = load i32, ptr %300, align 8, !tbaa !133
  %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 9076
  %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
  %.not1048 = icmp eq i32 %312, 0
  br i1 %.not1048, 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.0246.0.vec.extract = extractelement <2 x float> %314, i64 0
  %315 = load float, ptr %9, align 8, !tbaa !141
  %316 = fsub float %.sroa.0246.0.vec.extract, %315
  %317 = load float, ptr %95, align 4, !tbaa !142
  %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 !143
  %321 = fadd float %319, %320
  store float %321, ptr %310, align 4, !tbaa !143
  br label %322

322:                                              ; preds = %313, %309
  br i1 %.0954.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 8992
  %326 = load ptr, ptr %325, align 8, !tbaa !128
  %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 %.0954.shrunk, label %334, label %338

334:                                              ; preds = %333
  %335 = getelementptr inbounds i8, ptr %81, i64 7876
  %336 = load i32, ptr %335, align 4, !tbaa !113
  %337 = and i32 %336, 4
  %.not1050 = icmp eq i32 %337, 0
  br i1 %.not1050, label %338, label %339

338:                                              ; preds = %334, %333
  br label %339

339:                                              ; preds = %338, %334, %330
  %.1948 = 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 260
  %342 = load i8, ptr %341, align 4, !tbaa !144, !range !41, !noundef !42
  %343 = trunc nuw i8 %342 to i1
  %spec.select1105 = select i1 %343, i8 1, i8 %.1948
  br label %344

344:                                              ; preds = %340, %339, %329
  %.2949 = phi i8 [ 0, %329 ], [ %.1948, %339 ], [ %spec.select1105, %340 ]
  %345 = and i32 %5, 2048
  %.not1051 = icmp eq i32 %345, 0
  br i1 %.not1051, label %.thread1224, label %346

346:                                              ; preds = %344
  %347 = getelementptr inbounds i8, ptr %81, i64 8992
  %348 = load ptr, ptr %347, align 8, !tbaa !128
  %349 = getelementptr inbounds i8, ptr %348, i64 12
  store i8 1, ptr %349, align 4, !tbaa !145
  br label %.thread1224

.thread1224.thread:                               ; preds = %270, %.thread1216
  %350 = getelementptr inbounds i8, ptr %81, i64 96
  %351 = load i8, ptr %350, align 8, !tbaa !146, !range !41, !noundef !42
  %352 = trunc nuw i8 %351 to i1
  br label %.sink.split

.thread1224:                                      ; preds = %344, %346, %267, %249
  %353 = phi i1 [ %244, %249 ], [ true, %267 ], [ %273, %346 ], [ %273, %344 ]
  %spec.select12061219 = phi i1 [ %spec.select1206, %249 ], [ %spec.select120612201222, %267 ], [ %spec.select120612201223, %346 ], [ %spec.select120612201223, %344 ]
  %.3950 = phi i8 [ 0, %249 ], [ 0, %267 ], [ %.2949, %346 ], [ %.2949, %344 ]
  %.0942 = phi ptr [ %174, %249 ], [ %174, %267 ], [ %274, %346 ], [ %274, %344 ]
  %354 = getelementptr inbounds i8, ptr %81, i64 96
  %355 = load i8, ptr %354, align 8, !tbaa !146, !range !41, !noundef !42
  %356 = trunc nuw i8 %355 to i1
  %357 = load i32, ptr %187, align 4, !tbaa !114
  %.not1054 = icmp ne i32 %357, %85
  %brmerge1107.not = select i1 %.not1054, i1 %spec.select12061219, i1 false
  br i1 %brmerge1107.not, label %358, label %365

358:                                              ; preds = %.thread1224
  %.not1055 = icmp eq ptr %.0942, null
  br i1 %.not1055, label %.critedge, label %359

359:                                              ; preds = %358
  %360 = getelementptr inbounds i8, ptr %.0942, i64 20
  %361 = load i32, ptr %360, align 4, !tbaa !139
  %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.67, ptr noundef nonnull @.str.2, i32 noundef 4594, 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, %.thread1224.thread
  %.ph1341 = phi i1 [ %352, %.thread1224.thread ], [ %356, %363 ]
  %.09421309.ph = phi ptr [ %174, %.thread1224.thread ], [ %.0942, %363 ]
  %.39501308.ph = phi i8 [ 0, %.thread1224.thread ], [ %.3950, %363 ]
  %.ph1342 = phi i1 [ false, %.thread1224.thread ], [ %353, %363 ]
  %364 = load i32, ptr %187, align 4, !tbaa !114
  br label %365

365:                                              ; preds = %.sink.split, %.thread1224
  %366 = phi i1 [ %356, %.thread1224 ], [ %.ph1341, %.sink.split ]
  %.09421309 = phi ptr [ %.0942, %.thread1224 ], [ %.09421309.ph, %.sink.split ]
  %.39501308 = phi i8 [ %.3950, %.thread1224 ], [ %.39501308.ph, %.sink.split ]
  %367 = phi i1 [ %353, %.thread1224 ], [ %.ph1342, %.sink.split ]
  %368 = phi i32 [ %357, %.thread1224 ], [ %364, %.sink.split ]
  %369 = icmp eq i32 %368, %85
  br i1 %369, label %.preheader1259.preheader, label %397

.preheader1259.preheader:                         ; preds = %365
  %370 = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.always_owned_keys, align 16, !tbaa !147
  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 !147
  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 !147
  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 !147
  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 !147
  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 !147
  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 !147
  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 !147
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef %377, i32 noundef %85, i32 noundef 0)
  br i1 %208, label %378, label %379

378:                                              ; preds = %.preheader1259.preheader
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 655, i32 noundef %85, i32 noundef 0)
  br label %379

379:                                              ; preds = %378, %.preheader1259.preheader
  %380 = getelementptr inbounds i8, ptr %81, i64 7400
  %381 = load i32, ptr %380, align 8, !tbaa !148
  %382 = or i32 %381, 3
  store i32 %382, ptr %380, align 8, !tbaa !148
  %or.cond1109.not.not = icmp eq i32 %71, 0
  br i1 %or.cond1109.not.not, label %.thread1226, label %383

383:                                              ; preds = %379
  %384 = or i32 %381, 15
  store i32 %384, ptr %380, align 8, !tbaa !148
  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 %.thread1226

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 %.thread1226

.thread1226:                                      ; preds = %379, %385, %383
  br i1 %366, label %386, label %387

386:                                              ; preds = %.thread1226
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 16384, i32 noundef %85, i32 noundef 0)
  br label %387

387:                                              ; preds = %386, %.thread1226
  %388 = icmp ne ptr %.09421309, null
  %or.cond6 = and i1 %70, %388
  br i1 %or.cond6, label %389, label %393

389:                                              ; preds = %387
  %390 = getelementptr inbounds i8, ptr %.2940, i64 156
  %391 = load float, ptr %390, align 4, !tbaa !126
  %392 = getelementptr inbounds i8, ptr %.09421309, i64 96
  store float %391, ptr %392, align 4, !tbaa !149
  br label %393

393:                                              ; preds = %389, %387
  %or.cond8 = and i1 %179, %388
  br i1 %or.cond8, label %.thread1228, label %397

.thread1228:                                      ; preds = %393
  %394 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %395 = trunc i64 %394 to i32
  %396 = getelementptr inbounds i8, ptr %.09421309, i64 24
  store i32 %395, ptr %396, align 8, !tbaa !133
  br label %.thread1229

397:                                              ; preds = %393, %365
  %.not1251 = icmp eq ptr %.09421309, null
  br i1 %.not1251, label %404, label %398

398:                                              ; preds = %397
  br i1 %179, label %.thread1229, label %399

399:                                              ; preds = %398
  %400 = getelementptr inbounds i8, ptr %.09421309, i64 48
  %401 = load ptr, ptr %400, align 8, !tbaa !132
  br label %.thread1229

.thread1229:                                      ; preds = %399, %398, %.thread1228
  %402 = phi ptr [ %401, %399 ], [ %2, %398 ], [ %2, %.thread1228 ]
  %403 = getelementptr inbounds i8, ptr %.09421309, i64 32
  store ptr %402, ptr %403, align 8, !tbaa !150
  br label %408

404:                                              ; preds = %397
  %405 = load i32, ptr %187, align 4, !tbaa !114
  %406 = icmp eq i32 %405, %85
  br i1 %406, label %407, label %408

407:                                              ; preds = %404
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %408

408:                                              ; preds = %.thread1229, %407, %404
  %.09421310 = phi ptr [ %.09421309, %.thread1229 ], [ null, %407 ], [ null, %404 ]
  %409 = phi i1 [ true, %.thread1229 ], [ false, %407 ], [ false, %404 ]
  %410 = load i32, ptr %187, align 4, !tbaa !114
  %411 = icmp eq i32 %410, %85
  br i1 %411, label %412, label %416

412:                                              ; preds = %408
  %413 = getelementptr inbounds i8, ptr %81, i64 2824
  %414 = load i8, ptr %413, align 8, !tbaa !124, !range !41, !noundef !42
  %415 = trunc nuw i8 %414 to i1
  %.not1252 = xor i1 %367, true
  %not.brmerge1111 = select i1 %415, i1 %.not1252, i1 false
  %spec.select1204 = zext i1 %not.brmerge1111 to i8
  br label %416

416:                                              ; preds = %412, %408
  %.0943 = phi i8 [ 0, %408 ], [ %spec.select1204, %412 ]
  %417 = select i1 %409, i1 %227, i1 false
  %spec.select1112 = select i1 %411, i1 true, i1 %417
  %418 = zext i1 %spec.select1112 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) %.09421310)
  br i1 %420, label %423, label %421

421:                                              ; preds = %419
  %422 = trunc i8 %.39501308 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.select1112, %423 ]
  %426 = zext i1 %425 to i8
  br i1 %spec.select1112, label %430, label %427

427:                                              ; preds = %424
  %428 = load i32, ptr %187, align 4, !tbaa !114
  %429 = icmp eq i32 %428, %85
  br i1 %429, label %430, label %.thread1231

430:                                              ; preds = %427, %424
  %not.1253 = xor i1 %179, true
  %spec.select1114 = and i1 %409, %not.1253
  %.not1058 = icmp eq ptr %1, null
  br i1 %.not1058, label %439, label %431

.thread1231:                                      ; preds = %427
  %.not10581232 = icmp eq ptr %1, null
  br i1 %.not10581232, label %439, label %.thread1233

431:                                              ; preds = %430
  br i1 %spec.select1114, label %432, label %.thread1233

432:                                              ; preds = %431
  %433 = getelementptr inbounds i8, ptr %.09421310, i64 48
  %434 = load ptr, ptr %433, align 8, !tbaa !132
  br label %.thread1233

.thread1233:                                      ; preds = %.thread1231, %431, %432
  %435 = phi i1 [ true, %432 ], [ false, %431 ], [ false, %.thread1231 ]
  %436 = phi ptr [ %434, %432 ], [ %2, %431 ], [ %2, %.thread1231 ]
  %437 = load i8, ptr %436, align 1, !tbaa !151
  %438 = icmp eq i8 %437, 0
  br label %439

439:                                              ; preds = %.thread1231, %.thread1233, %430
  %440 = phi i1 [ %spec.select1114, %430 ], [ %435, %.thread1233 ], [ false, %.thread1231 ]
  %441 = phi i1 [ false, %430 ], [ %438, %.thread1233 ], [ false, %.thread1231 ]
  %brmerge1115 = select i1 %.not1041, i1 true, i1 %441
  br i1 %brmerge1115, label %472, label %442

442:                                              ; preds = %439
  %443 = getelementptr inbounds i8, ptr %81, i64 4216
  %444 = load ptr, ptr %443, align 8, !tbaa !152
  %445 = call noundef ptr @_ZN6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118) %444, i16 noundef zeroext 42)
  %446 = getelementptr inbounds i8, ptr %81, i64 9128
  %447 = load ptr, ptr %443, align 8, !tbaa !152
  %448 = getelementptr inbounds i8, ptr %447, i64 20
  %449 = load float, ptr %448, align 4, !tbaa !153
  %450 = getelementptr inbounds i8, ptr %81, i64 9148
  store float %449, ptr %450, align 4, !tbaa !153
  %451 = getelementptr inbounds i8, ptr %447, i64 100
  %452 = getelementptr inbounds i8, ptr %81, i64 9228
  %453 = load <2 x float>, ptr %451, align 4, !tbaa !109
  store <2 x float> %453, ptr %452, align 4, !tbaa !109
  %454 = getelementptr inbounds i8, ptr %447, i64 108
  %455 = load float, ptr %454, align 4, !tbaa !154
  %456 = getelementptr inbounds i8, ptr %81, i64 9236
  store float %455, ptr %456, align 4, !tbaa !154
  %457 = getelementptr inbounds i8, ptr %447, i64 64
  %458 = load ptr, ptr %457, align 8, !tbaa !155
  %459 = getelementptr inbounds i8, ptr %81, i64 9192
  store ptr %458, ptr %459, align 8, !tbaa !155
  %460 = getelementptr inbounds i8, ptr %81, i64 9184
  store ptr %445, ptr %460, align 8, !tbaa !156
  %461 = getelementptr inbounds i8, ptr %445, i64 4
  %462 = load float, ptr %461, align 4, !tbaa !157
  %463 = getelementptr inbounds i8, ptr %81, i64 9144
  store float %462, ptr %463, align 8, !tbaa !159
  %464 = getelementptr inbounds i8, ptr %81, i64 9168
  %465 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %464)
  br i1 %465, label %466, label %.critedge12

466:                                              ; preds = %442
  %467 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %446)
  br i1 %467, label %468, label %.critedge12

468:                                              ; preds = %466
  %469 = getelementptr inbounds i8, ptr %81, i64 9152
  %470 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %469)
  br i1 %470, label %471, label %.critedge12

.critedge12:                                      ; preds = %466, %442, %468
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.2, i32 noundef 4667, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

471:                                              ; preds = %468
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %446)
  br label %472

472:                                              ; preds = %439, %471
  %473 = load i32, ptr %187, align 4, !tbaa !114
  %474 = icmp eq i32 %473, %85
  br i1 %474, label %475, label %642

475:                                              ; preds = %472
  br i1 %409, label %477, label %476

476:                                              ; preds = %475
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 4674, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

477:                                              ; preds = %475
  %478 = getelementptr inbounds i8, ptr %.09421310, i64 106
  store i8 0, ptr %478, align 2, !tbaa !160
  %479 = getelementptr inbounds i8, ptr %.09421310, i64 88
  store i32 %3, ptr %479, align 8, !tbaa !161
  %480 = getelementptr inbounds i8, ptr %.09421310, i64 16
  store i32 %spec.select1101, ptr %480, align 8, !tbaa !162
  %481 = getelementptr inbounds i8, ptr %81, i64 240
  %482 = load i8, ptr %481, align 8, !tbaa !124, !range !41, !noundef !42
  %483 = xor i8 %482, 1
  %484 = getelementptr inbounds i8, ptr %81, i64 5097
  store i8 %483, ptr %484, align 1, !tbaa !163
  %485 = getelementptr inbounds i8, ptr %81, i64 232
  %486 = load float, ptr %485, align 8, !tbaa !164
  %487 = load float, ptr %11, align 8, !tbaa !165
  %488 = fsub float %486, %487
  %489 = load float, ptr %95, align 4, !tbaa !142
  %490 = fsub float %488, %489
  %491 = getelementptr inbounds i8, ptr %.09421310, i64 92
  %492 = load float, ptr %491, align 4, !tbaa !143
  %493 = fadd float %490, %492
  br i1 %70, label %494, label %500

494:                                              ; preds = %477
  %495 = getelementptr inbounds i8, ptr %81, i64 236
  %496 = load float, ptr %495, align 4, !tbaa !166
  %497 = getelementptr inbounds i8, ptr %.2940, i64 284
  %498 = load float, ptr %497, align 4, !tbaa !167
  %499 = fsub float %496, %498
  br label %504

500:                                              ; preds = %477
  %501 = getelementptr inbounds i8, ptr %81, i64 4224
  %502 = load float, ptr %501, align 8, !tbaa !44
  %503 = fmul float %502, 5.000000e-01
  br label %504

504:                                              ; preds = %500, %494
  %505 = phi float [ %499, %494 ], [ %503, %500 ]
  %506 = trunc i8 %.39501308 to i1
  br i1 %506, label %507, label %509

507:                                              ; preds = %504
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  %508 = getelementptr inbounds i8, ptr %.09421310, i64 105
  store i8 1, ptr %508, align 1, !tbaa !168
  br label %596

509:                                              ; preds = %504
  br i1 %.0941.shrunk, label %510, label %560

510:                                              ; preds = %509
  %511 = getelementptr inbounds i8, ptr %81, i64 2834
  %512 = load i16, ptr %511, align 2, !tbaa !169
  %513 = icmp ugt i16 %512, 1
  br i1 %513, label %514, label %560

514:                                              ; preds = %510
  %515 = getelementptr inbounds i8, ptr %81, i64 261
  %516 = load i8, ptr %515, align 1, !tbaa !170, !range !41, !noundef !42
  %517 = trunc nuw i8 %516 to i1
  br i1 %517, label %560, label %518

518:                                              ; preds = %514
  %519 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %520 = load ptr, ptr %519, align 8, !tbaa !128
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09421310, ptr noundef %520, float noundef %493, float noundef %505)
  %521 = load i16, ptr %511, align 2, !tbaa !169
  %522 = and i16 %521, 1
  %523 = icmp eq i16 %522, 0
  %524 = load ptr, ptr %519, align 8, !tbaa !128
  %525 = load i32, ptr %524, align 4, !tbaa !138
  br i1 %523, label %526, label %547

526:                                              ; preds = %518
  %527 = icmp eq i32 %525, 0
  br i1 %527, label %532, label %528

528:                                              ; preds = %526
  %529 = add nsw i32 %525, -1
  %530 = call noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09421310, i32 noundef %529)
  %531 = icmp eq i8 %530, 10
  %.pre1277 = load ptr, ptr %519, align 8, !tbaa !128
  br label %532

532:                                              ; preds = %528, %526
  %533 = phi ptr [ %524, %526 ], [ %.pre1277, %528 ]
  %534 = phi i1 [ true, %526 ], [ %531, %528 ]
  %535 = getelementptr inbounds i8, ptr %533, i64 4
  %536 = load i32, ptr %535, align 4, !tbaa !135
  %537 = getelementptr inbounds i8, ptr %533, i64 8
  %538 = load i32, ptr %537, align 4, !tbaa !137
  %.not1059 = icmp eq i32 %536, %538
  %brmerge1117.not = and i1 %534, %.not1059
  br i1 %brmerge1117.not, label %.thread1319, label %539

539:                                              ; preds = %532
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef 2097164)
  %.pre1278 = load ptr, ptr %519, align 8, !tbaa !128
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre1278, i64 4
  %.pre1279 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !135
  %.phi.trans.insert1280 = getelementptr inbounds i8, ptr %.pre1278, i64 8
  %.pre1281 = load i32, ptr %.phi.trans.insert1280, align 4, !tbaa !137
  %.not1060 = icmp eq i32 %.pre1279, %.pre1281
  br i1 %.not1060, label %.thread1319, label %541

.thread1319:                                      ; preds = %532, %539
  %540 = phi ptr [ %.pre1278, %539 ], [ %533, %532 ]
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef nonnull %540)
  %.pre1282 = load ptr, ptr %519, align 8, !tbaa !128
  br label %541

541:                                              ; preds = %.thread1319, %539
  %542 = phi ptr [ %.pre1282, %.thread1319 ], [ %.pre1278, %539 ]
  %543 = load i32, ptr %542, align 4, !tbaa !138
  %544 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef nonnull %.09421310, i32 noundef %543)
  %545 = load ptr, ptr %519, align 8, !tbaa !128
  store i32 %544, ptr %545, align 4, !tbaa !138
  %546 = getelementptr inbounds i8, ptr %545, i64 8
  store i32 %544, ptr %546, align 4, !tbaa !137
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09421310, ptr noundef nonnull %545)
  br label %559

547:                                              ; preds = %518
  %548 = call noundef signext i8 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09421310, i32 noundef %525)
  %549 = icmp ne i8 %548, 10
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef 2097156)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef 6291461)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef 6291457)
  %brmerge1119.not = and i1 %70, %549
  br i1 %brmerge1119.not, label %550, label %557

550:                                              ; preds = %547
  %551 = load ptr, ptr %519, align 8, !tbaa !128
  %552 = getelementptr inbounds i8, ptr %551, i64 4
  %553 = getelementptr inbounds i8, ptr %551, i64 8
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %552, ptr noundef nonnull align 4 dereferenceable(4) %553)
  %554 = load ptr, ptr %519, align 8, !tbaa !128
  %555 = getelementptr inbounds i8, ptr %554, i64 8
  %556 = load i32, ptr %555, align 4, !tbaa !137
  store i32 %556, ptr %554, align 4, !tbaa !138
  br label %557

557:                                              ; preds = %547, %550
  %558 = getelementptr inbounds i8, ptr %.09421310, i64 104
  store i8 0, ptr %558, align 8, !tbaa !171
  br label %559

559:                                              ; preds = %557, %541
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br label %596

560:                                              ; preds = %514, %510, %509
  %561 = getelementptr inbounds i8, ptr %81, i64 2824
  %562 = load i8, ptr %561, align 8, !tbaa !124, !range !41, !noundef !42
  %563 = trunc nuw i8 %562 to i1
  br i1 %563, label %564, label %578

564:                                              ; preds = %560
  %565 = getelementptr inbounds i8, ptr %.09421310, i64 105
  %566 = load i8, ptr %565, align 1, !tbaa !168, !range !41, !noundef !42
  %567 = trunc nuw i8 %566 to i1
  br i1 %567, label %578, label %568

568:                                              ; preds = %564
  br i1 %.0941.shrunk, label %569, label %596

569:                                              ; preds = %568
  %570 = getelementptr inbounds i8, ptr %81, i64 261
  %571 = load i8, ptr %570, align 1, !tbaa !170, !range !41, !noundef !42
  %572 = trunc nuw i8 %571 to i1
  %573 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %574 = load ptr, ptr %573, align 8, !tbaa !128
  br i1 %572, label %575, label %576

575:                                              ; preds = %569
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09421310, ptr noundef %574, float noundef %493, float noundef %505)
  br label %577

576:                                              ; preds = %569
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09421310, ptr noundef %574, float noundef %493, float noundef %505)
  br label %577

577:                                              ; preds = %576, %575
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br label %596

578:                                              ; preds = %564, %560
  %579 = trunc nuw i8 %482 to i1
  br i1 %579, label %580, label %596

580:                                              ; preds = %578
  %581 = getelementptr inbounds i8, ptr %.09421310, i64 105
  %582 = load i8, ptr %581, align 1, !tbaa !168, !range !41, !noundef !42
  %583 = trunc nuw i8 %582 to i1
  br i1 %583, label %596, label %584

584:                                              ; preds = %580
  %585 = getelementptr inbounds i8, ptr %81, i64 212
  %586 = load float, ptr %585, align 4, !tbaa !172
  %587 = fcmp une float %586, 0.000000e+00
  br i1 %587, label %592, label %588

588:                                              ; preds = %584
  %589 = getelementptr inbounds i8, ptr %81, i64 216
  %590 = load float, ptr %589, align 4, !tbaa !173
  %591 = fcmp une float %590, 0.000000e+00
  br i1 %591, label %592, label %596

592:                                              ; preds = %588, %584
  %593 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %594 = load ptr, ptr %593, align 8, !tbaa !128
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09421310, ptr noundef %594, float noundef %493, float noundef %505)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  %595 = getelementptr inbounds i8, ptr %.09421310, i64 104
  store i8 1, ptr %595, align 8, !tbaa !171
  br label %596

596:                                              ; preds = %559, %578, %580, %588, %592, %568, %577, %507
  %597 = getelementptr inbounds i8, ptr %.09421310, i64 105
  %598 = load i8, ptr %597, align 1, !tbaa !168, !range !41, !noundef !42
  %599 = trunc nuw i8 %598 to i1
  br i1 %599, label %600, label %604

600:                                              ; preds = %596
  %601 = load i8, ptr %481, align 8, !tbaa !124, !range !41, !noundef !42
  %602 = trunc nuw i8 %601 to i1
  br i1 %602, label %604, label %603

603:                                              ; preds = %600
  store i8 0, ptr %597, align 1, !tbaa !168
  br label %604

604:                                              ; preds = %603, %600, %596
  %brmerge1120 = or i1 %.not1035, %179
  br i1 %brmerge1120, label %612, label %605

605:                                              ; preds = %604
  %606 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 512, i32 noundef 1, i32 noundef %85)
  br i1 %606, label %607, label %612

607:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #14
  store i32 9, ptr %19, align 4, !tbaa !111
  %608 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef nonnull %81, ptr noundef nonnull %19, i32 noundef %spec.select1101, ptr noundef %6, ptr noundef %7, i1 noundef zeroext false)
  br i1 %608, label %609, label %611

609:                                              ; preds = %607
  %610 = load i32, ptr %19, align 4, !tbaa !111
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %610)
  br label %611

611:                                              ; preds = %609, %607
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #14
  br label %612

612:                                              ; preds = %604, %605, %611
  %613 = getelementptr inbounds i8, ptr %81, i64 260
  %614 = load i8, ptr %613, align 4, !tbaa !144, !range !41, !noundef !42
  %615 = trunc nuw i8 %614 to i1
  br i1 %615, label %616, label %621

616:                                              ; preds = %612
  %617 = getelementptr inbounds i8, ptr %81, i64 262
  %618 = load i8, ptr %617, align 2, !tbaa !174, !range !41, !noundef !42
  %619 = trunc nuw i8 %618 to i1
  %.not1121 = xor i1 %619, true
  %620 = select i1 %619, i1 %366, i1 false
  br i1 %620, label %622, label %623

621:                                              ; preds = %612
  br i1 %366, label %622, label %623

622:                                              ; preds = %616, %621
  br label %623

623:                                              ; preds = %616, %621, %622
  %624 = phi i1 [ %366, %616 ], [ false, %621 ], [ %366, %622 ]
  %625 = phi i1 [ %.not1121, %616 ], [ false, %621 ], [ %615, %622 ]
  %626 = getelementptr inbounds i8, ptr %81, i64 2944
  %627 = load i32, ptr %626, align 8, !tbaa !175
  %628 = icmp sgt i32 %627, 0
  br i1 %628, label %629, label %642

629:                                              ; preds = %623
  %brmerge1124 = or i1 %179, %625
  %brmerge1125 = select i1 %brmerge1124, i1 true, i1 %202
  br i1 %brmerge1125, label %.loopexit1258, label %.lr.ph

.lr.ph:                                           ; preds = %629, %638
  %.09791261 = phi i32 [ %639, %638 ], [ 0, %629 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #14
  %630 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %626, i32 noundef %.09791261)
  %631 = load i16, ptr %630, align 2, !tbaa !169
  %632 = zext i16 %631 to i32
  store i32 %632, ptr %20, align 4, !tbaa !111
  %633 = icmp eq i16 %631, 9
  br i1 %633, label %638, label %634

634:                                              ; preds = %.lr.ph
  %635 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %81, ptr noundef nonnull %20, i32 noundef %spec.select1101, ptr noundef %6, ptr noundef %7, i1 noundef zeroext false)
  br i1 %635, label %636, label %638

636:                                              ; preds = %634
  %637 = load i32, ptr %20, align 4, !tbaa !111
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %637)
  br label %638

638:                                              ; preds = %634, %636, %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #14
  %639 = add nuw nsw i32 %.09791261, 1
  %640 = load i32, ptr %626, align 8, !tbaa !175
  %641 = icmp slt i32 %639, %640
  br i1 %641, label %.lr.ph, label %.loopexit1258, !llvm.loop !176

.loopexit1258:                                    ; preds = %638, %629
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %626, i32 noundef 0)
  br label %642

642:                                              ; preds = %623, %.loopexit1258, %472
  %643 = phi i1 [ %624, %623 ], [ %624, %.loopexit1258 ], [ %366, %472 ]
  %644 = load i32, ptr %187, align 4, !tbaa !114
  %645 = icmp eq i32 %644, %85
  br i1 %645, label %646, label %984

646:                                              ; preds = %642
  %647 = getelementptr inbounds i8, ptr %81, i64 5096
  %648 = load i8, ptr %647, align 8, !tbaa !178, !range !41, !noundef !42
  %649 = trunc nuw i8 %648 to i1
  br i1 %649, label %.thread1321, label %650

650:                                              ; preds = %646
  %651 = trunc nuw i8 %.0943 to i1
  br i1 %651, label %.thread1321, label %652

652:                                              ; preds = %650
  br i1 %409, label %654, label %653

653:                                              ; preds = %652
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 4790, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

654:                                              ; preds = %652
  %655 = load float, ptr %96, align 4, !tbaa !107
  %656 = fsub float %.sroa.11.0.copyload, %655
  %657 = getelementptr inbounds i8, ptr %81, i64 4224
  %658 = load float, ptr %657, align 8, !tbaa !44
  %659 = fdiv float %656, %658
  %660 = fptosi float %659 to i32
  %661 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %660, i32 noundef 1)
  %662 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %663 = load ptr, ptr %662, align 8, !tbaa !128
  %664 = getelementptr inbounds i8, ptr %663, i64 16
  store i32 %661, ptr %664, align 4, !tbaa !179
  %665 = getelementptr inbounds i8, ptr %81, i64 261
  %666 = load i8, ptr %665, align 1, !tbaa !170, !range !41, !noundef !42
  %667 = trunc nuw i8 %666 to i1
  %668 = select i1 %667, i32 4194304, i32 0
  %669 = getelementptr inbounds i8, ptr %81, i64 262
  %670 = getelementptr inbounds i8, ptr %81, i64 260
  %.in.in = select i1 %643, ptr %669, ptr %670
  %.in = load i8, ptr %.in.in, align 2, !tbaa !124, !range !41, !noundef !42
  %671 = trunc nuw i8 %.in to i1
  br i1 %643, label %672, label %683

672:                                              ; preds = %654
  %673 = load i8, ptr %670, align 4, !tbaa !144, !range !41, !noundef !42
  %674 = trunc nuw i8 %673 to i1
  br i1 %674, label %675, label %683

675:                                              ; preds = %672
  %676 = getelementptr inbounds i8, ptr %81, i64 263
  %677 = load i8, ptr %676, align 1, !tbaa !180, !range !41, !noundef !42
  %678 = trunc nuw i8 %677 to i1
  br i1 %678, label %683, label %679

679:                                              ; preds = %675
  %680 = load i8, ptr %669, align 2, !tbaa !174, !range !41, !noundef !42
  %681 = trunc nuw i8 %680 to i1
  %682 = xor i1 %681, true
  br label %683

683:                                              ; preds = %679, %675, %672, %654
  %684 = phi i1 [ false, %675 ], [ false, %672 ], [ false, %654 ], [ %682, %679 ]
  %685 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4665, i32 noundef 1, i32 noundef %85)
  br i1 %685, label %690, label %686

686:                                              ; preds = %683
  %687 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 8714, i32 noundef 1, i32 noundef %85)
  %688 = and i1 %.not1041, %687
  %689 = xor i1 %688, true
  %brmerge1128 = or i1 %179, %689
  %.not1134 = xor i1 %70, true
  %brmerge1135 = or i1 %brmerge1128, %.not1134
  %not.brmerge1128 = xor i1 %brmerge1128, true
  br i1 %brmerge1135, label %693, label %691

690:                                              ; preds = %683
  %.not1041.not1129 = xor i1 %.not1041, true
  %brmerge1130 = or i1 %179, %.not1041.not1129
  %.not1131 = xor i1 %70, true
  %brmerge1132 = or i1 %brmerge1130, %.not1131
  %not.brmerge1130 = xor i1 %brmerge1130, true
  br i1 %brmerge1132, label %693, label %691

691:                                              ; preds = %686, %690
  %692 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br label %693

693:                                              ; preds = %686, %690, %691
  %694 = phi i1 [ %not.brmerge1130, %690 ], [ %not.brmerge1128, %686 ], [ %692, %691 ]
  %695 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4644, i32 noundef 0, i32 noundef %85)
  br i1 %695, label %698, label %696

696:                                              ; preds = %693
  %697 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4617, i32 noundef 0, i32 noundef %85)
  %brmerge1139.demorgan = and i1 %.not1041, %697
  %brmerge1141.not = and i1 %70, %brmerge1139.demorgan
  br i1 %brmerge1141.not, label %700, label %702

698:                                              ; preds = %693
  %699 = and i32 %5, 67109888
  %brmerge1145.not = icmp eq i32 %699, 67108864
  br i1 %brmerge1145.not, label %700, label %702

700:                                              ; preds = %698, %696
  %701 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br label %702

702:                                              ; preds = %698, %696, %700
  %703 = phi i1 [ %.not1041, %698 ], [ %brmerge1139.demorgan, %696 ], [ %701, %700 ]
  %704 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4663, i32 noundef 1, i32 noundef %85)
  br i1 %704, label %707, label %705

705:                                              ; preds = %702
  %706 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 8713, i32 noundef 1, i32 noundef %85)
  br i1 %706, label %707, label %._crit_edge1297

._crit_edge1297:                                  ; preds = %705
  %.pre1298 = xor i1 %179, true
  br label %709

707:                                              ; preds = %705, %702
  %708 = xor i1 %179, true
  br label %709

709:                                              ; preds = %._crit_edge1297, %707
  %not.1255.pre-phi = phi i1 [ %.pre1298, %._crit_edge1297 ], [ %708, %707 ]
  %710 = phi i1 [ false, %._crit_edge1297 ], [ %708, %707 ]
  %711 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4667, i32 noundef 1, i32 noundef %85)
  %spec.select1147 = and i1 %182, %not.1255.pre-phi
  %spec.select1207 = select i1 %711, i1 %spec.select1147, i1 false
  %712 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4666, i32 noundef 1, i32 noundef %85)
  br i1 %712, label %716, label %713

713:                                              ; preds = %709
  br i1 %643, label %714, label %717

714:                                              ; preds = %713
  %715 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 12859, i32 noundef 1, i32 noundef %85)
  br i1 %715, label %716, label %717

716:                                              ; preds = %714, %709
  br label %717

717:                                              ; preds = %716, %714, %713
  %718 = phi i1 [ false, %714 ], [ false, %713 ], [ %spec.select1147, %716 ]
  %719 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 4642, i32 noundef 0, i32 noundef %85)
  %720 = load i32, ptr %82, align 8, !tbaa !181
  %721 = and i32 %720, 2
  %.not1062 = icmp eq i32 %721, 0
  br i1 %.not1062, label %727, label %722

722:                                              ; preds = %717
  %723 = getelementptr inbounds i8, ptr %81, i64 12
  %724 = load i32, ptr %723, align 4, !tbaa !182
  %725 = and i32 %724, 1
  %726 = icmp ne i32 %725, 0
  br label %727

727:                                              ; preds = %722, %717
  %728 = phi i1 [ false, %717 ], [ %726, %722 ]
  %729 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %729, label %732, label %730

730:                                              ; preds = %727
  %731 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 627, i1 noundef zeroext true)
  br label %732

732:                                              ; preds = %730, %727
  %733 = phi i1 [ true, %727 ], [ %731, %730 ]
  br i1 %728, label %734, label %.sink.split1344

734:                                              ; preds = %732
  %735 = getelementptr inbounds i8, ptr %81, i64 88
  %736 = load i8, ptr %735, align 8, !tbaa !183, !range !41, !noundef !42
  %737 = trunc nuw i8 %736 to i1
  %738 = select i1 %737, i32 634, i32 636
  %739 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef %738, i1 noundef zeroext false)
  br i1 %739, label %742, label %740

740:                                              ; preds = %734
  %741 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 635, i1 noundef zeroext false)
  br label %742

742:                                              ; preds = %734, %740
  %743 = phi i1 [ true, %734 ], [ %741, %740 ]
  %744 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 526, i32 noundef 1, i32 noundef %85)
  br i1 %744, label %750, label %745

745:                                              ; preds = %742
  %746 = load i8, ptr %735, align 8, !tbaa !183, !range !41, !noundef !42
  %747 = trunc nuw i8 %746 to i1
  %748 = select i1 %747, i32 636, i32 634
  br label %.sink.split1344

.sink.split1344:                                  ; preds = %732, %745
  %.sink = phi i32 [ %748, %745 ], [ 526, %732 ]
  %.ph1345 = phi i1 [ %743, %745 ], [ false, %732 ]
  %749 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef %.sink, i32 noundef 1, i32 noundef %85)
  br label %750

750:                                              ; preds = %.sink.split1344, %742
  %751 = phi i1 [ %743, %742 ], [ %.ph1345, %.sink.split1344 ]
  %752 = phi i1 [ true, %742 ], [ %749, %.sink.split1344 ]
  %753 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %753, label %754, label %757

754:                                              ; preds = %750
  %755 = select i1 %671, i32 2097164, i32 2097152
  %spec.select1152 = select i1 %684, i32 2097156, i32 %755
  %756 = or disjoint i32 %spec.select1152, %668
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %756)
  br label %.thread1238

757:                                              ; preds = %750
  %758 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %758, label %759, label %762

759:                                              ; preds = %757
  %760 = select i1 %671, i32 2097165, i32 2097153
  %spec.select1153 = select i1 %684, i32 2097157, i32 %760
  %761 = or disjoint i32 %spec.select1153, %668
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %761)
  br label %.thread1238

762:                                              ; preds = %757
  %763 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  %.not1155 = xor i1 %70, true
  %brmerge1156.not = and i1 %70, %763
  br i1 %brmerge1156.not, label %764, label %776

764:                                              ; preds = %762
  %765 = load i8, ptr %670, align 4, !tbaa !144, !range !41, !noundef !42
  %766 = trunc nuw i8 %765 to i1
  br i1 %766, label %767, label %773

767:                                              ; preds = %764
  %768 = getelementptr inbounds i8, ptr %.2940, i64 156
  %769 = load float, ptr %768, align 4, !tbaa !126
  %770 = load float, ptr %657, align 8, !tbaa !44
  %771 = fsub float %769, %770
  %772 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %771, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2940, float noundef %772)
  br label %.thread1238

773:                                              ; preds = %764
  %774 = select i1 %684, i32 2097158, i32 2097154
  %775 = or disjoint i32 %774, %668
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %775)
  br label %.thread1238

776:                                              ; preds = %762
  %777 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  %brmerge1159.not = and i1 %70, %777
  br i1 %brmerge1159.not, label %778, label %791

778:                                              ; preds = %776
  %779 = load i8, ptr %670, align 4, !tbaa !144, !range !41, !noundef !42
  %780 = trunc nuw i8 %779 to i1
  br i1 %780, label %781, label %788

781:                                              ; preds = %778
  %782 = getelementptr inbounds i8, ptr %.2940, i64 156
  %783 = load float, ptr %782, align 4, !tbaa !126
  %784 = load float, ptr %657, align 8, !tbaa !44
  %785 = fadd float %783, %784
  %786 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %787 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %785, float noundef %786)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2940, float noundef %787)
  br label %.thread1238

788:                                              ; preds = %778
  %789 = select i1 %684, i32 2097159, i32 2097155
  %790 = or disjoint i32 %789, %668
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %790)
  br label %.thread1238

791:                                              ; preds = %776
  %792 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  %brmerge1162.not = and i1 %70, %792
  br i1 %brmerge1162.not, label %793, label %799

793:                                              ; preds = %791
  %794 = or disjoint i32 %668, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %794)
  %795 = sitofp i32 %661 to float
  %796 = load float, ptr %657, align 8, !tbaa !44
  %797 = fneg float %795
  %798 = call float @llvm.fmuladd.f32(float %797, float %796, float %229)
  br label %.thread1238

799:                                              ; preds = %791
  %800 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  %brmerge1165.not = and i1 %70, %800
  br i1 %brmerge1165.not, label %801, label %806

801:                                              ; preds = %799
  %802 = or disjoint i32 %668, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %802)
  %803 = sitofp i32 %661 to float
  %804 = load float, ptr %657, align 8, !tbaa !44
  %805 = call float @llvm.fmuladd.f32(float %803, float %804, float %229)
  br label %.thread1238

806:                                              ; preds = %799
  %807 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %807, label %808, label %812

808:                                              ; preds = %806
  %809 = load i8, ptr %670, align 4, !tbaa !144, !range !41, !noundef !42
  %810 = trunc nuw i8 %809 to i1
  %.v1073 = select i1 %810, i32 2097158, i32 2097156
  %811 = or disjoint i32 %.v1073, %668
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %811)
  br label %.thread1238

812:                                              ; preds = %806
  %813 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %813, label %814, label %818

814:                                              ; preds = %812
  %815 = load i8, ptr %670, align 4, !tbaa !144, !range !41, !noundef !42
  %816 = trunc nuw i8 %815 to i1
  %.v = select i1 %816, i32 2097159, i32 2097157
  %817 = or disjoint i32 %.v, %668
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %817)
  br label %.thread1238

818:                                              ; preds = %812
  %819 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  %.not1166 = xor i1 %819, true
  %brmerge1167 = or i1 %179, %.not1166
  %brmerge1168 = or i1 %694, %brmerge1167
  br i1 %brmerge1168, label %825, label %820

820:                                              ; preds = %818
  %821 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  %.not1169 = xor i1 %671, true
  %brmerge1170 = select i1 %821, i1 true, i1 %.not1169
  br i1 %brmerge1170, label %823, label %822

822:                                              ; preds = %820
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef 6291469)
  br label %823

823:                                              ; preds = %820, %822
  %824 = or disjoint i32 %668, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %824)
  br label %.thread1238

825:                                              ; preds = %818
  %826 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  %.not1171 = xor i1 %826, true
  %brmerge1172 = or i1 %179, %.not1171
  br i1 %brmerge1172, label %843, label %827

827:                                              ; preds = %825
  %828 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br i1 %828, label %841, label %829

829:                                              ; preds = %827
  br i1 %671, label %.sink.split1347, label %830

830:                                              ; preds = %829
  br i1 %643, label %831, label %841

831:                                              ; preds = %830
  %832 = load i8, ptr %670, align 4, !tbaa !144, !range !41, !noundef !42
  %833 = trunc nuw i8 %832 to i1
  br i1 %833, label %834, label %841

834:                                              ; preds = %831
  %835 = load i8, ptr %669, align 2, !tbaa !174, !range !41, !noundef !42
  %836 = trunc nuw i8 %835 to i1
  br i1 %836, label %841, label %837

837:                                              ; preds = %834
  %838 = getelementptr inbounds i8, ptr %81, i64 263
  %839 = load i8, ptr %838, align 1, !tbaa !180, !range !41, !noundef !42
  %840 = trunc nuw i8 %839 to i1
  br i1 %840, label %841, label %.sink.split1347

.sink.split1347:                                  ; preds = %837, %829
  %.sink1348 = phi i32 [ 6291468, %829 ], [ 6291460, %837 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %.sink1348)
  br label %841

841:                                              ; preds = %.sink.split1347, %837, %834, %831, %830, %827
  %842 = or disjoint i32 %668, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %842)
  br label %.thread1238

843:                                              ; preds = %825
  %brmerge1173 = or i1 %733, %751
  br i1 %brmerge1173, label %844, label %861

844:                                              ; preds = %843
  %brmerge1175 = or i1 %751, %.not1155
  br i1 %brmerge1175, label %850, label %845

845:                                              ; preds = %844
  %846 = and i32 %5, 256
  %.not1072 = icmp eq i32 %846, 0
  %847 = load i8, ptr %670, align 4, !tbaa !144, !range !41, !noundef !42
  %848 = trunc nuw i8 %847 to i1
  br i1 %.not1072, label %.critedge1177, label %849

849:                                              ; preds = %845
  br i1 %848, label %855, label %.thread1238

.critedge1177:                                    ; preds = %845
  br i1 %848, label %.thread1238, label %855

850:                                              ; preds = %844
  %851 = getelementptr inbounds i8, ptr %81, i64 99
  %852 = load i8, ptr %851, align 1, !tbaa !184, !range !41, !noundef !42
  %853 = trunc nuw i8 %852 to i1
  %.not1178 = xor i1 %853, true
  %brmerge1179 = or i1 %70, %.not1178
  br i1 %brmerge1179, label %.thread1238, label %854

854:                                              ; preds = %850
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br label %.thread1238

855:                                              ; preds = %849, %.critedge1177
  br i1 %179, label %.thread1238, label %856

856:                                              ; preds = %855
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #14
  store i32 10, ptr %21, align 4, !tbaa !111
  %857 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef nonnull %81, ptr noundef nonnull %21, i32 noundef %spec.select1101, ptr noundef %6, ptr noundef %7, i1 noundef zeroext false)
  br i1 %857, label %858, label %860

858:                                              ; preds = %856
  %859 = load i32, ptr %21, align 4, !tbaa !111
  call void @_ZN19ImGuiInputTextState13OnCharPressedEj(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %859)
  br label %860

860:                                              ; preds = %858, %856
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #14
  br label %.thread1238

861:                                              ; preds = %843
  br i1 %752, label %862, label %866

862:                                              ; preds = %861
  %863 = and i32 %5, 128
  %.not1070 = icmp eq i32 %863, 0
  br i1 %.not1070, label %.thread1238, label %864

864:                                              ; preds = %862
  %865 = load i8, ptr %2, align 1, !tbaa !151
  %.not1071 = icmp ne i8 %865, 0
  %.1181 = select i1 %.not1071, i1 %425, i1 false
  %.1182 = select i1 %.not1071, i8 %418, i8 0
  %..0943 = select i1 %.not1071, i8 %.0943, i8 1
  br label %.thread1238

866:                                              ; preds = %861
  %brmerge1183 = or i1 %spec.select1207, %718
  br i1 %brmerge1183, label %867, label %868

867:                                              ; preds = %866
  %.mux1184 = select i1 %spec.select1207, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(116) %.09421310, i32 noundef %.mux1184)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br label %.thread1238

868:                                              ; preds = %866
  br i1 %719, label %869, label %871

869:                                              ; preds = %868
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  %870 = getelementptr inbounds i8, ptr %.09421310, i64 104
  store i8 1, ptr %870, align 8, !tbaa !171
  br label %.thread1238

871:                                              ; preds = %868
  %brmerge1185 = or i1 %694, %703
  br i1 %brmerge1185, label %872, label %920

872:                                              ; preds = %871
  %873 = getelementptr inbounds i8, ptr %81, i64 2992
  %874 = load ptr, ptr %873, align 8, !tbaa !185
  %.not1069 = icmp eq ptr %874, null
  br i1 %.not1069, label %912, label %875

875:                                              ; preds = %872
  %876 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br i1 %876, label %877, label %884

877:                                              ; preds = %875
  %878 = load ptr, ptr %662, align 8, !tbaa !128
  %879 = getelementptr inbounds i8, ptr %878, i64 4
  %880 = load i32, ptr %879, align 4, !tbaa !135
  %881 = getelementptr inbounds i8, ptr %878, i64 8
  %882 = load i32, ptr %881, align 4, !tbaa !137
  %883 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %880, i32 noundef %882)
  br label %884

884:                                              ; preds = %875, %877
  %885 = phi i32 [ %883, %877 ], [ 0, %875 ]
  %886 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br i1 %886, label %887, label %894

887:                                              ; preds = %884
  %888 = load ptr, ptr %662, align 8, !tbaa !128
  %889 = getelementptr inbounds i8, ptr %888, i64 4
  %890 = load i32, ptr %889, align 4, !tbaa !135
  %891 = getelementptr inbounds i8, ptr %888, i64 8
  %892 = load i32, ptr %891, align 4, !tbaa !137
  %893 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %890, i32 noundef %892)
  br label %897

894:                                              ; preds = %884
  %895 = getelementptr inbounds i8, ptr %.09421310, i64 24
  %896 = load i32, ptr %895, align 8, !tbaa !133
  br label %897

897:                                              ; preds = %894, %887
  %898 = phi i32 [ %893, %887 ], [ %896, %894 ]
  %899 = getelementptr inbounds i8, ptr %81, i64 10392
  %900 = sub nsw i32 %898, %885
  %901 = add nsw i32 %900, 1
  call void @_ZN8ImVectorIcE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %899, i32 noundef %901)
  %902 = getelementptr inbounds i8, ptr %81, i64 10400
  %903 = load ptr, ptr %902, align 8, !tbaa !186
  %904 = getelementptr inbounds i8, ptr %.09421310, i64 32
  %905 = load ptr, ptr %904, align 8, !tbaa !150
  %906 = sext i32 %885 to i64
  %907 = getelementptr inbounds i8, ptr %905, i64 %906
  %908 = sext i32 %900 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %903, ptr align 1 %907, i64 %908, i1 false)
  %909 = load ptr, ptr %902, align 8, !tbaa !186
  %910 = getelementptr inbounds i8, ptr %909, i64 %908
  store i8 0, ptr %910, align 1, !tbaa !151
  %911 = load ptr, ptr %902, align 8, !tbaa !186
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %911)
  br label %912

912:                                              ; preds = %897, %872
  br i1 %694, label %913, label %.thread1238

913:                                              ; preds = %912
  %914 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br i1 %914, label %916, label %915

915:                                              ; preds = %913
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br label %916

916:                                              ; preds = %915, %913
  %917 = getelementptr inbounds i8, ptr %.09421310, i64 104
  store i8 1, ptr %917, align 8, !tbaa !171
  %918 = load ptr, ptr %662, align 8, !tbaa !128
  %919 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09421310, ptr noundef %918)
  br label %.thread1238

920:                                              ; preds = %871
  br i1 %710, label %921, label %.thread1238

921:                                              ; preds = %920
  %922 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not1063 = icmp eq ptr %922, null
  br i1 %.not1063, label %.thread1238, label %923

923:                                              ; preds = %921
  %924 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %922) #15
  %925 = trunc i64 %924 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)
  %926 = add nsw i32 %925, 1
  invoke void @_ZN8ImVectorIcE7reserveEi(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %926)
          to label %.preheader1256 unwind label %931

.preheader1256:                                   ; preds = %923
  %927 = load i8, ptr %922, align 1, !tbaa !151
  %.not10641262 = icmp eq i8 %927, 0
  br i1 %.not10641262, label %._crit_edge, label %.lr.ph1264

.lr.ph1264:                                       ; preds = %.preheader1256
  %928 = getelementptr inbounds i8, ptr %22, i64 8
  br label %933

._crit_edge:                                      ; preds = %958, %.preheader1256
  %929 = load i32, ptr %22, align 8, !tbaa !187
  %930 = icmp sgt i32 %929, 0
  br i1 %930, label %966, label %978

931:                                              ; preds = %967, %923
  %932 = landingpad { ptr, i32 }
          cleanup
  br label %979

933:                                              ; preds = %.lr.ph1264, %958
  %.09891263 = phi ptr [ %922, %.lr.ph1264 ], [ %937, %958 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #14
  %934 = invoke noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %23, ptr noundef nonnull %.09891263, ptr noundef null)
          to label %935 unwind label %940

935:                                              ; preds = %933
  %936 = sext i32 %934 to i64
  %937 = getelementptr inbounds i8, ptr %.09891263, i64 %936
  %938 = invoke noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPvb(ptr noundef %81, ptr noundef nonnull %23, i32 noundef %spec.select1101, ptr noundef %6, ptr noundef %7, i1 noundef zeroext true)
          to label %939 unwind label %940

939:                                              ; preds = %935
  br i1 %938, label %942, label %958, !llvm.loop !188

940:                                              ; preds = %935, %933
  %941 = landingpad { ptr, i32 }
          cleanup
  br label %965

942:                                              ; preds = %939
  call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %24) #14
  %943 = load i32, ptr %23, align 4, !tbaa !111
  %944 = invoke noundef ptr @_Z16ImTextCharToUtf8Pcj(ptr noundef nonnull %24, i32 noundef %943)
          to label %945 unwind label %960

945:                                              ; preds = %942
  %946 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %24) #15
  %947 = trunc i64 %946 to i32
  %948 = load i32, ptr %22, align 8, !tbaa !187
  %949 = add nsw i32 %948, %947
  invoke void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %22, i32 noundef %949)
          to label %950 unwind label %962

950:                                              ; preds = %945
  %951 = load ptr, ptr %928, align 8, !tbaa !189
  %952 = load i32, ptr %22, align 8, !tbaa !187
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i8, ptr %951, i64 %953
  %sext1068 = shl i64 %946, 32
  %955 = ashr exact i64 %sext1068, 32
  %956 = sub nsw i64 0, %955
  %957 = getelementptr inbounds i8, ptr %954, i64 %956
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %957, ptr nonnull align 1 %24, i64 %955, i1 false)
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %24) #14
  br label %958

958:                                              ; preds = %939, %950
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #14
  %959 = load i8, ptr %937, align 1, !tbaa !151
  %.not1064 = icmp eq i8 %959, 0
  br i1 %.not1064, label %._crit_edge, label %933

960:                                              ; preds = %942
  %961 = landingpad { ptr, i32 }
          cleanup
  br label %964

962:                                              ; preds = %945
  %963 = landingpad { ptr, i32 }
          cleanup
  br label %964

964:                                              ; preds = %962, %960
  %.pn = phi { ptr, i32 } [ %963, %962 ], [ %961, %960 ]
  call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %24) #14
  br label %965

965:                                              ; preds = %964, %940
  %.pn.pn = phi { ptr, i32 } [ %.pn, %964 ], [ %941, %940 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #14
  br label %979

966:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #14
  store i8 0, ptr %25, align 1, !tbaa !151
  invoke void @_ZN8ImVectorIcE9push_backERKc(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %967 unwind label %976

967:                                              ; preds = %966
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #14
  %968 = load ptr, ptr %662, align 8, !tbaa !128
  %969 = getelementptr inbounds i8, ptr %22, i64 8
  %970 = load ptr, ptr %969, align 8, !tbaa !189
  %971 = load i32, ptr %22, align 8, !tbaa !187
  %972 = add nsw i32 %971, -1
  %973 = invoke noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef nonnull %.09421310, ptr noundef %968, ptr noundef %970, i32 noundef %972)
          to label %974 unwind label %931

974:                                              ; preds = %967
  %975 = getelementptr inbounds i8, ptr %.09421310, i64 104
  store i8 1, ptr %975, align 8, !tbaa !171
  br label %978

976:                                              ; preds = %966
  %977 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #14
  br label %979

978:                                              ; preds = %974, %._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 %.thread1238

979:                                              ; preds = %976, %965, %931
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %965 ], [ %932, %931 ], [ %977, %976 ]
  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

.thread1238:                                      ; preds = %849, %.critedge1177, %921, %978, %862, %864, %854, %860, %855, %850, %759, %788, %781, %801, %814, %841, %869, %920, %912, %916, %867, %823, %808, %793, %767, %773, %754
  %.0981 = phi i1 [ false, %754 ], [ false, %759 ], [ false, %767 ], [ false, %773 ], [ false, %781 ], [ false, %788 ], [ false, %793 ], [ false, %801 ], [ false, %808 ], [ false, %814 ], [ false, %867 ], [ false, %869 ], [ false, %916 ], [ false, %912 ], [ false, %920 ], [ false, %841 ], [ false, %823 ], [ false, %850 ], [ false, %855 ], [ false, %860 ], [ false, %854 ], [ %.not1071, %864 ], [ true, %862 ], [ false, %978 ], [ false, %921 ], [ false, %.critedge1177 ], [ false, %849 ]
  %.1977 = phi i1 [ false, %754 ], [ false, %759 ], [ false, %767 ], [ false, %773 ], [ false, %781 ], [ false, %788 ], [ false, %793 ], [ false, %801 ], [ false, %808 ], [ false, %814 ], [ false, %867 ], [ false, %869 ], [ false, %916 ], [ false, %912 ], [ false, %920 ], [ false, %841 ], [ false, %823 ], [ true, %850 ], [ false, %855 ], [ false, %860 ], [ true, %854 ], [ false, %864 ], [ false, %862 ], [ false, %978 ], [ false, %921 ], [ true, %.critedge1177 ], [ true, %849 ]
  %.0961 = phi i1 [ %425, %754 ], [ %425, %759 ], [ %425, %767 ], [ %425, %773 ], [ %425, %781 ], [ %425, %788 ], [ %425, %793 ], [ %425, %801 ], [ %425, %808 ], [ %425, %814 ], [ %425, %867 ], [ %425, %869 ], [ %425, %916 ], [ %425, %912 ], [ %425, %920 ], [ %425, %841 ], [ %425, %823 ], [ %425, %850 ], [ %425, %855 ], [ %425, %860 ], [ %425, %854 ], [ %.1181, %864 ], [ false, %862 ], [ %425, %978 ], [ %425, %921 ], [ %425, %.critedge1177 ], [ %425, %849 ]
  %.0956 = phi i8 [ %418, %754 ], [ %418, %759 ], [ %418, %767 ], [ %418, %773 ], [ %418, %781 ], [ %418, %788 ], [ %418, %793 ], [ %418, %801 ], [ %418, %808 ], [ %418, %814 ], [ %418, %867 ], [ %418, %869 ], [ %418, %916 ], [ %418, %912 ], [ %418, %920 ], [ %418, %841 ], [ %418, %823 ], [ %418, %850 ], [ %418, %855 ], [ %418, %860 ], [ %418, %854 ], [ %.1182, %864 ], [ 0, %862 ], [ %418, %978 ], [ %418, %921 ], [ %418, %.critedge1177 ], [ %418, %849 ]
  %.0951 = phi float [ %229, %754 ], [ %229, %759 ], [ %229, %767 ], [ %229, %773 ], [ %229, %781 ], [ %229, %788 ], [ %798, %793 ], [ %805, %801 ], [ %229, %808 ], [ %229, %814 ], [ %229, %867 ], [ %229, %869 ], [ %229, %916 ], [ %229, %912 ], [ %229, %920 ], [ %229, %841 ], [ %229, %823 ], [ %229, %850 ], [ %229, %855 ], [ %229, %860 ], [ %229, %854 ], [ %229, %864 ], [ %229, %862 ], [ %229, %978 ], [ %229, %921 ], [ %229, %.critedge1177 ], [ %229, %849 ]
  %.2945 = phi i8 [ %.0943, %754 ], [ %.0943, %759 ], [ %.0943, %767 ], [ %.0943, %773 ], [ %.0943, %781 ], [ %.0943, %788 ], [ %.0943, %793 ], [ %.0943, %801 ], [ %.0943, %808 ], [ %.0943, %814 ], [ %.0943, %867 ], [ %.0943, %869 ], [ %.0943, %916 ], [ %.0943, %912 ], [ %.0943, %920 ], [ %.0943, %841 ], [ %.0943, %823 ], [ 1, %850 ], [ %.0943, %855 ], [ %.0943, %860 ], [ %.0943, %854 ], [ %..0943, %864 ], [ 1, %862 ], [ %.0943, %978 ], [ %.0943, %921 ], [ 1, %.critedge1177 ], [ 1, %849 ]
  %980 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  %981 = select i1 %980, i8 %.0956, i8 0
  %982 = zext i1 %.0961 to i8
  %983 = or i8 %981, %982
  %.pre1283 = load i32, ptr %187, align 4, !tbaa !114
  br label %984

984:                                              ; preds = %.thread1238, %642
  %985 = phi i32 [ %.pre1283, %.thread1238 ], [ %644, %642 ]
  %.1982 = phi i1 [ %.0981, %.thread1238 ], [ false, %642 ]
  %.2978 = phi i1 [ %.1977, %.thread1238 ], [ false, %642 ]
  %.1962 = phi i8 [ %983, %.thread1238 ], [ %426, %642 ]
  %.1957 = phi i8 [ %.0956, %.thread1238 ], [ %418, %642 ]
  %.1952 = phi float [ %.0951, %.thread1238 ], [ %229, %642 ]
  %.3946 = phi i8 [ %.2945, %.thread1238 ], [ %.0943, %642 ]
  %986 = icmp eq i32 %985, %85
  br i1 %986, label %.thread1321, label %1133

.thread1321:                                      ; preds = %650, %646, %984
  %.39461340 = phi i8 [ %.3946, %984 ], [ %.0943, %646 ], [ %.0943, %650 ]
  %.19521338 = phi float [ %.1952, %984 ], [ %229, %646 ], [ %229, %650 ]
  %.19571336 = phi i8 [ %.1957, %984 ], [ %418, %646 ], [ %418, %650 ]
  %.19621334 = phi i8 [ %.1962, %984 ], [ %426, %646 ], [ %426, %650 ]
  %.29781332 = phi i1 [ %.2978, %984 ], [ false, %646 ], [ false, %650 ]
  %.19821330 = phi i1 [ %.1982, %984 ], [ false, %646 ], [ false, %650 ]
  br i1 %409, label %988, label %987

987:                                              ; preds = %.thread1321
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 4955, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

988:                                              ; preds = %.thread1321
  %.1982.not = xor i1 %.19821330, true
  %brmerge1186 = or i1 %179, %.1982.not
  br i1 %brmerge1186, label %1007, label %989

989:                                              ; preds = %988
  %990 = and i32 %5, 128
  %.not1074 = icmp eq i32 %990, 0
  br i1 %.not1074, label %997, label %991

991:                                              ; preds = %989
  %992 = load i8, ptr %2, align 1, !tbaa !151
  %.not1076 = icmp eq i8 %992, 0
  br i1 %.not1076, label %993, label %994

993:                                              ; preds = %991
  call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.2, i32 noundef 4961, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

994:                                              ; preds = %991
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #14
  %995 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %996 = load ptr, ptr %995, align 8, !tbaa !128
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef %.09421310, ptr noundef %996, ptr noundef nonnull %26, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #14
  br label %1007

997:                                              ; preds = %989
  %998 = getelementptr inbounds i8, ptr %.09421310, i64 64
  %999 = load ptr, ptr %998, align 8, !tbaa !140
  %1000 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %999) #15
  %.not1075 = icmp eq i32 %1000, 0
  br i1 %.not1075, label %1007, label %1001

1001:                                             ; preds = %997
  %1002 = getelementptr inbounds i8, ptr %.09421310, i64 56
  %1003 = load i32, ptr %1002, align 8, !tbaa !190
  %1004 = add nsw i32 %1003, -1
  %1005 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %1006 = load ptr, ptr %1005, align 8, !tbaa !128
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKci(ptr noundef nonnull %.09421310, ptr noundef %1006, ptr noundef %999, i32 noundef %1004)
  br label %1007

1007:                                             ; preds = %988, %994, %1001, %997
  %.0995 = phi i32 [ 0, %994 ], [ %1004, %1001 ], [ 0, %997 ], [ 0, %988 ]
  %.0990 = phi ptr [ @.str, %994 ], [ %999, %1001 ], [ null, %997 ], [ null, %988 ]
  %.0963 = phi i1 [ true, %994 ], [ true, %1001 ], [ false, %997 ], [ false, %988 ]
  %1008 = and i32 %5, 10223616
  %.not1077 = icmp eq i32 %1008, 0
  br i1 %.not1077, label %1125, label %1009

1009:                                             ; preds = %1007
  br i1 %184, label %1011, label %1010

1010:                                             ; preds = %1009
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.2, i32 noundef 4995, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1011:                                             ; preds = %1009
  %1012 = and i32 %5, 262144
  %.not1078 = icmp eq i32 %1012, 0
  br i1 %.not1078, label %1015, label %1013

1013:                                             ; preds = %1011
  %1014 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiij(i32 noundef 512, i32 noundef 0, i32 noundef %85)
  br i1 %1014, label %.thread1242, label %1015

1015:                                             ; preds = %1013, %1011
  %1016 = and i32 %5, 524288
  %.not1079 = icmp eq i32 %1016, 0
  br i1 %.not1079, label %.critedge1188, label %1017

1017:                                             ; preds = %1015
  %1018 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1018, label %.thread1242, label %1019

1019:                                             ; preds = %1017
  %1020 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1020, label %.thread1242, label %.critedge1188

.critedge1188:                                    ; preds = %1015, %1019
  %1021 = and i32 %5, 8388608
  %.not1080 = icmp eq i32 %1021, 0
  br i1 %.not1080, label %1026, label %1022

1022:                                             ; preds = %.critedge1188
  %1023 = getelementptr inbounds i8, ptr %.09421310, i64 106
  %1024 = load i8, ptr %1023, align 2, !tbaa !160, !range !41, !noundef !42
  %1025 = trunc nuw i8 %1024 to i1
  br i1 %1025, label %.thread1242, label %1026

1026:                                             ; preds = %.critedge1188, %1022
  %1027 = and i32 %5, 1048576
  %.not1081 = icmp eq i32 %1027, 0
  br i1 %.not1081, label %1125, label %.thread1242

.thread1242:                                      ; preds = %1022, %1019, %1017, %1013, %1026
  %.010001247 = phi i32 [ 1048576, %1026 ], [ 8388608, %1022 ], [ 524288, %1019 ], [ 524288, %1017 ], [ 262144, %1013 ]
  %.010011246 = phi i32 [ 0, %1026 ], [ 0, %1022 ], [ 516, %1019 ], [ 515, %1017 ], [ 512, %1013 ]
  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
  %1028 = getelementptr inbounds i8, ptr %27, i64 8
  store i32 %.010001247, ptr %1028, align 8, !tbaa !193
  %1029 = getelementptr inbounds i8, ptr %27, i64 12
  store i32 %spec.select1101, ptr %1029, align 4, !tbaa !194
  %1030 = getelementptr inbounds i8, ptr %27, i64 16
  store ptr %7, ptr %1030, align 8, !tbaa !195
  br i1 %179, label %1034, label %1031

1031:                                             ; preds = %.thread1242
  %1032 = getelementptr inbounds i8, ptr %.09421310, i64 48
  %1033 = load ptr, ptr %1032, align 8, !tbaa !132
  br label %1034

1034:                                             ; preds = %.thread1242, %1031
  %1035 = phi ptr [ %1033, %1031 ], [ %2, %.thread1242 ]
  %1036 = getelementptr inbounds i8, ptr %.09421310, i64 32
  %1037 = load ptr, ptr %1036, align 8, !tbaa !150
  %1038 = icmp eq ptr %1035, %1037
  br i1 %1038, label %1040, label %1039

1039:                                             ; preds = %1034
  call void @__assert_fail(ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.2, i32 noundef 5034, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1040:                                             ; preds = %1034
  %1041 = getelementptr inbounds i8, ptr %.09421310, i64 72
  %1042 = getelementptr inbounds i8, ptr %.09421310, i64 24
  %1043 = load i32, ptr %1042, align 8, !tbaa !133
  %1044 = add nsw i32 %1043, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1041, i32 noundef %1044)
  %1045 = getelementptr inbounds i8, ptr %.09421310, i64 80
  %1046 = load ptr, ptr %1045, align 8, !tbaa !196
  %1047 = load i32, ptr %1042, align 8, !tbaa !133
  %1048 = add nsw i32 %1047, 1
  %1049 = sext i32 %1048 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %1046, ptr align 1 %1035, i64 %1049, i1 false)
  %1050 = getelementptr inbounds i8, ptr %27, i64 28
  store i32 %.010011246, ptr %1050, align 4, !tbaa !197
  %1051 = getelementptr inbounds i8, ptr %27, i64 32
  store ptr %1035, ptr %1051, align 8, !tbaa !198
  %1052 = load i32, ptr %1042, align 8, !tbaa !133
  %1053 = getelementptr inbounds i8, ptr %27, i64 40
  store i32 %1052, ptr %1053, align 8, !tbaa !199
  %1054 = getelementptr inbounds i8, ptr %.09421310, i64 88
  %1055 = load i32, ptr %1054, align 8, !tbaa !161
  %1056 = getelementptr inbounds i8, ptr %27, i64 44
  store i32 %1055, ptr %1056, align 4, !tbaa !200
  %1057 = getelementptr inbounds i8, ptr %27, i64 48
  store i8 0, ptr %1057, align 8, !tbaa !201
  %1058 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %1059 = load ptr, ptr %1058, align 8, !tbaa !128
  %1060 = load i32, ptr %1059, align 4, !tbaa !138
  %1061 = getelementptr inbounds i8, ptr %27, i64 52
  store i32 %1060, ptr %1061, align 4, !tbaa !202
  %1062 = getelementptr inbounds i8, ptr %1059, i64 4
  %1063 = load i32, ptr %1062, align 4, !tbaa !135
  %1064 = getelementptr inbounds i8, ptr %27, i64 56
  store i32 %1063, ptr %1064, align 8, !tbaa !203
  %1065 = getelementptr inbounds i8, ptr %1059, i64 8
  %1066 = load i32, ptr %1065, align 4, !tbaa !137
  %1067 = getelementptr inbounds i8, ptr %27, i64 60
  store i32 %1066, ptr %1067, align 4, !tbaa !204
  %1068 = call noundef i32 %6(ptr noundef nonnull %27)
  br i1 %179, label %1072, label %1069

1069:                                             ; preds = %1040
  %1070 = getelementptr inbounds i8, ptr %.09421310, i64 48
  %1071 = load ptr, ptr %1070, align 8, !tbaa !132
  br label %1072

1072:                                             ; preds = %1040, %1069
  %1073 = phi ptr [ %1071, %1069 ], [ %2, %1040 ]
  %1074 = load ptr, ptr %1051, align 8, !tbaa !198
  %1075 = icmp eq ptr %1074, %1073
  br i1 %1075, label %1077, label %1076

1076:                                             ; preds = %1072
  call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.2, i32 noundef 5053, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1077:                                             ; preds = %1072
  %1078 = load i32, ptr %1056, align 4, !tbaa !200
  %1079 = load i32, ptr %1054, align 8, !tbaa !161
  %1080 = icmp eq i32 %1078, %1079
  br i1 %1080, label %1082, label %1081

1081:                                             ; preds = %1077
  call void @__assert_fail(ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.2, i32 noundef 5054, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1082:                                             ; preds = %1077
  %1083 = load i32, ptr %1029, align 4, !tbaa !194
  %1084 = icmp eq i32 %1083, %spec.select1101
  br i1 %1084, label %1086, label %1085

1085:                                             ; preds = %1082
  call void @__assert_fail(ptr noundef nonnull @.str.74, ptr noundef nonnull @.str.2, i32 noundef 5055, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1086:                                             ; preds = %1082
  %1087 = load i8, ptr %1057, align 8, !tbaa !201, !range !41, !noundef !42
  %1088 = trunc nuw i8 %1087 to i1
  %1089 = load i32, ptr %1061, align 4, !tbaa !202
  %.not1083 = icmp ne i32 %1089, %1060
  %brmerge1191 = select i1 %.not1083, i1 true, i1 %1088
  br i1 %brmerge1191, label %1090, label %1093

1090:                                             ; preds = %1086
  %1091 = load ptr, ptr %1058, align 8, !tbaa !128
  store i32 %1089, ptr %1091, align 4, !tbaa !138
  %1092 = getelementptr inbounds i8, ptr %.09421310, i64 104
  store i8 1, ptr %1092, align 8, !tbaa !171
  br label %1093

1093:                                             ; preds = %1086, %1090
  %1094 = load i32, ptr %1064, align 8, !tbaa !203
  %.not1084 = icmp ne i32 %1094, %1063
  %brmerge1192 = select i1 %.not1084, i1 true, i1 %1088
  br i1 %brmerge1192, label %1095, label %1102

1095:                                             ; preds = %1093
  %1096 = icmp eq i32 %1094, %1089
  %.pre1284 = load ptr, ptr %1058, align 8, !tbaa !128
  br i1 %1096, label %1097, label %1099

1097:                                             ; preds = %1095
  %1098 = load i32, ptr %.pre1284, align 4, !tbaa !138
  br label %1099

1099:                                             ; preds = %1095, %1097
  %1100 = phi i32 [ %1098, %1097 ], [ %1094, %1095 ]
  %1101 = getelementptr inbounds i8, ptr %.pre1284, i64 4
  store i32 %1100, ptr %1101, align 4, !tbaa !135
  br label %1102

1102:                                             ; preds = %1093, %1099
  %1103 = load i32, ptr %1067, align 4, !tbaa !204
  %.not1085 = icmp ne i32 %1103, %1066
  %brmerge1193 = select i1 %.not1085, i1 true, i1 %1088
  br i1 %brmerge1193, label %1104, label %1112

1104:                                             ; preds = %1102
  %1105 = icmp eq i32 %1103, %1094
  %.pre1285 = load ptr, ptr %1058, align 8, !tbaa !128
  br i1 %1105, label %1106, label %1109

1106:                                             ; preds = %1104
  %1107 = getelementptr inbounds i8, ptr %.pre1285, i64 4
  %1108 = load i32, ptr %1107, align 4, !tbaa !135
  br label %1109

1109:                                             ; preds = %1104, %1106
  %1110 = phi i32 [ %1108, %1106 ], [ %1103, %1104 ]
  %1111 = getelementptr inbounds i8, ptr %.pre1285, i64 8
  store i32 %1110, ptr %1111, align 4, !tbaa !137
  br label %1112

1112:                                             ; preds = %1102, %1109
  br i1 %1088, label %1113, label %1124

1113:                                             ; preds = %1112
  %1114 = load i32, ptr %1053, align 8, !tbaa !199
  %1115 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1074) #15
  %1116 = trunc i64 %1115 to i32
  %1117 = icmp eq i32 %1114, %1116
  br i1 %1117, label %1119, label %1118

1118:                                             ; preds = %1113
  call void @__assert_fail(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.2, i32 noundef 5063, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1119:                                             ; preds = %1113
  %1120 = load ptr, ptr %1045, align 8, !tbaa !196
  %1121 = load i32, ptr %1041, align 8, !tbaa !205
  %1122 = add nsw i32 %1121, -1
  call void @_ZL27InputTextReconcileUndoStateP19ImGuiInputTextStatePKciS2_i(ptr noundef nonnull %.09421310, ptr noundef %1120, i32 noundef %1122, ptr noundef %1074, i32 noundef %1114)
  %1123 = load i32, ptr %1053, align 8, !tbaa !199
  store i32 %1123, ptr %1042, align 8, !tbaa !133
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(116) %.09421310)
  br label %1124

1124:                                             ; preds = %1119, %1112
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #14
  br label %1125

1125:                                             ; preds = %1026, %1124, %1007
  br i1 %179, label %1133, label %1126

1126:                                             ; preds = %1125
  %1127 = getelementptr inbounds i8, ptr %.09421310, i64 32
  %1128 = load ptr, ptr %1127, align 8, !tbaa !150
  %1129 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1128, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not1086 = icmp eq i32 %1129, 0
  br i1 %.not1086, label %1133, label %1130

1130:                                             ; preds = %1126
  %1131 = getelementptr inbounds i8, ptr %.09421310, i64 24
  %1132 = load i32, ptr %1131, align 8, !tbaa !133
  br label %1133

1133:                                             ; preds = %1125, %1126, %1130, %984
  %.39461339 = phi i8 [ %.3946, %984 ], [ %.39461340, %1125 ], [ %.39461340, %1130 ], [ %.39461340, %1126 ]
  %.19521337 = phi float [ %.1952, %984 ], [ %.19521338, %1125 ], [ %.19521338, %1130 ], [ %.19521338, %1126 ]
  %.19571335 = phi i8 [ %.1957, %984 ], [ %.19571336, %1125 ], [ %.19571336, %1130 ], [ %.19571336, %1126 ]
  %.19621333 = phi i8 [ %.1962, %984 ], [ %.19621334, %1125 ], [ %.19621334, %1130 ], [ %.19621334, %1126 ]
  %.29781331 = phi i1 [ %.2978, %984 ], [ %.29781332, %1125 ], [ %.29781332, %1130 ], [ %.29781332, %1126 ]
  %.2997 = phi i32 [ 0, %984 ], [ %.0995, %1125 ], [ %1132, %1130 ], [ %.0995, %1126 ]
  %.2992 = phi ptr [ null, %984 ], [ %.0990, %1125 ], [ %1128, %1130 ], [ %.0990, %1126 ]
  %.2965 = phi i1 [ false, %984 ], [ %.0963, %1125 ], [ true, %1130 ], [ %.0963, %1126 ]
  %1134 = getelementptr inbounds i8, ptr %81, i64 9104
  %1135 = load i32, ptr %1134, align 8, !tbaa !206
  %1136 = icmp eq i32 %1135, %85
  br i1 %1136, label %1137, label %1150

1137:                                             ; preds = %1133
  %1138 = load i32, ptr %187, align 4, !tbaa !114
  %.not1087 = icmp eq i32 %1138, %85
  br i1 %.not1087, label %1149, label %1139

1139:                                             ; preds = %1137
  %1140 = call noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv()
  %.not1194 = xor i1 %1140, true
  %brmerge1195 = or i1 %179, %.not1194
  br i1 %brmerge1195, label %1149, label %1141

1141:                                             ; preds = %1139
  %1142 = getelementptr inbounds i8, ptr %81, i64 9120
  %1143 = load ptr, ptr %1142, align 8, !tbaa !207
  %1144 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1143, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not1088 = icmp eq i32 %1144, 0
  br i1 %.not1088, label %1149, label %1145

1145:                                             ; preds = %1141
  %1146 = getelementptr inbounds i8, ptr %81, i64 9112
  %1147 = load i32, ptr %1146, align 8, !tbaa !208
  %1148 = add nsw i32 %1147, -1
  br label %1149

1149:                                             ; preds = %1139, %1145, %1141, %1137
  %.3998 = phi i32 [ %1148, %1145 ], [ %.2997, %1141 ], [ %.2997, %1139 ], [ %.2997, %1137 ]
  %.3993 = phi ptr [ %1143, %1145 ], [ %.2992, %1141 ], [ %.2992, %1139 ], [ %.2992, %1137 ]
  %.3966 = phi i1 [ true, %1145 ], [ %.2965, %1141 ], [ %.2965, %1139 ], [ %.2965, %1137 ]
  store i32 0, ptr %1134, align 8, !tbaa !206
  br label %1150

1150:                                             ; preds = %1149, %1133
  %.4999 = phi i32 [ %.3998, %1149 ], [ %.2997, %1133 ]
  %.4994 = phi ptr [ %.3993, %1149 ], [ %.2992, %1133 ]
  %.4967 = phi i1 [ %.3966, %1149 ], [ %.2965, %1133 ]
  %.not1089 = icmp eq ptr %.4994, null
  br i1 %.not1089, label %1176, label %1151

1151:                                             ; preds = %1150
  %1152 = icmp sgt i32 %.4999, -1
  br i1 %1152, label %1154, label %1153

1153:                                             ; preds = %1151
  call void @__assert_fail(ptr noundef nonnull @.str.76, ptr noundef nonnull @.str.2, i32 noundef 5100, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1154:                                             ; preds = %1151
  br i1 %.not1042, label %1172, label %1155

1155:                                             ; preds = %1154
  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
  %1156 = getelementptr inbounds i8, ptr %28, i64 8
  store i32 4194304, ptr %1156, align 8, !tbaa !193
  %1157 = getelementptr inbounds i8, ptr %28, i64 12
  store i32 %spec.select1101, ptr %1157, align 4, !tbaa !194
  %1158 = getelementptr inbounds i8, ptr %28, i64 32
  store ptr %2, ptr %1158, align 8, !tbaa !198
  %1159 = getelementptr inbounds i8, ptr %28, i64 40
  store i32 %.4999, ptr %1159, align 8, !tbaa !199
  %1160 = add nuw nsw i32 %.4999, 1
  %1161 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1160)
  %1162 = getelementptr inbounds i8, ptr %28, i64 44
  store i32 %1161, ptr %1162, align 4, !tbaa !200
  %1163 = getelementptr inbounds i8, ptr %28, i64 16
  store ptr %7, ptr %1163, align 8, !tbaa !195
  %1164 = call noundef i32 %6(ptr noundef nonnull %28)
  %1165 = load ptr, ptr %1158, align 8, !tbaa !198
  %1166 = load i32, ptr %1162, align 4, !tbaa !200
  %1167 = load i32, ptr %1159, align 8, !tbaa !199
  %1168 = add nsw i32 %1166, -1
  %1169 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1167, i32 noundef %1168)
  %.not1090 = icmp sgt i32 %1169, %1166
  br i1 %.not1090, label %1170, label %1171

1170:                                             ; preds = %1155
  call void @__assert_fail(ptr noundef nonnull @.str.77, ptr noundef nonnull @.str.2, i32 noundef 5115, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1171:                                             ; preds = %1155
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %28) #14
  br label %1172

1172:                                             ; preds = %1171, %1154
  %.5 = phi i32 [ %1169, %1171 ], [ %.4999, %1154 ]
  %.0934 = phi i32 [ %1166, %1171 ], [ %3, %1154 ]
  %.0932 = phi ptr [ %1165, %1171 ], [ %2, %1154 ]
  %1173 = add nsw i32 %.5, 1
  %1174 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1173, i32 noundef %.0934)
  %1175 = sext i32 %1174 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0932, ptr noundef nonnull %.4994, i64 noundef %1175)
  br label %1176

1176:                                             ; preds = %1172, %1150
  %.1933 = phi ptr [ %.0932, %1172 ], [ %2, %1150 ]
  %1177 = load i32, ptr %187, align 4, !tbaa !114
  %1178 = icmp eq i32 %1177, %85
  br i1 %1178, label %1179, label %1184

1179:                                             ; preds = %1176
  %1180 = trunc nuw i8 %.39461339 to i1
  br i1 %1180, label %1181, label %1182

1181:                                             ; preds = %1179
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1184

1182:                                             ; preds = %1179
  %1183 = getelementptr inbounds i8, ptr %81, i64 10384
  store i32 1, ptr %1183, align 8, !tbaa !209
  br label %1184

1184:                                             ; preds = %1176, %1182, %1181
  br i1 %70, label %1190, label %1185

1185:                                             ; preds = %1184
  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
  %1186 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.092.0.copyload = load <2 x float>, ptr %1186, align 8
  %1187 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1188 = getelementptr inbounds i8, ptr %81, i64 3124
  %1189 = load float, ptr %1188, align 4, !tbaa !115
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.093.0.copyload, <2 x float> %.sroa.092.0.copyload, i32 noundef %1187, i1 noundef zeroext true, float noundef %1189)
  br label %1190

1190:                                             ; preds = %1185, %1184
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #14
  %1191 = load float, ptr %11, align 8, !tbaa !165
  %1192 = getelementptr inbounds i8, ptr %11, i64 4
  %1193 = load float, ptr %1192, align 4, !tbaa !210
  %1194 = fadd float %.sroa.0531.2, %1191
  %1195 = fadd float %.sroa.11.0.copyload, %1193
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %29, float noundef %1191, float noundef %1193, float noundef %1194, float noundef %1195)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  br i1 %70, label %1196, label %1199

1196:                                             ; preds = %1190
  %1197 = getelementptr inbounds i8, ptr %.2940, i64 280
  %1198 = load i64, ptr %1197, align 8
  br label %1202

1199:                                             ; preds = %1190
  %1200 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %95)
  %1201 = bitcast <2 x float> %1200 to i64
  br label %1202

1202:                                             ; preds = %1199, %1196
  %storemerge = phi i64 [ %1198, %1196 ], [ %1201, %1199 ]
  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 %1203, label %1206

1203:                                             ; preds = %1202
  %1204 = getelementptr inbounds i8, ptr %.09421310, i64 48
  %1205 = load ptr, ptr %1204, align 8, !tbaa !132
  br label %1206

1206:                                             ; preds = %1202, %1203
  %1207 = phi ptr [ %1205, %1203 ], [ %.1933, %1202 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  store ptr null, ptr %32, align 8, !tbaa !43
  br i1 %441, label %1208, label %1211

1208:                                             ; preds = %1206
  %1209 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #15
  %1210 = getelementptr inbounds i8, ptr %1, i64 %1209
  store ptr %1210, ptr %32, align 8, !tbaa !43
  br label %1211

1211:                                             ; preds = %1208, %1206
  %1212 = phi ptr [ %1210, %1208 ], [ null, %1206 ]
  %.0980 = phi ptr [ %1, %1208 ], [ %1207, %1206 ]
  %1213 = trunc nuw i8 %.19571335 to i1
  br i1 %1213, label %1216, label %1214

1214:                                             ; preds = %1211
  %1215 = trunc nuw i8 %.19621333 to i1
  br i1 %1215, label %1216, label %1476

1216:                                             ; preds = %1214, %1211
  br i1 %409, label %1218, label %1217

1217:                                             ; preds = %1216
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.2, i32 noundef 5157, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1218:                                             ; preds = %1216
  %.phi.trans.insert1287 = getelementptr inbounds i8, ptr %.09421310, i64 24
  %.pre1288 = load i32, ptr %.phi.trans.insert1287, align 8, !tbaa !133
  %.pre1295 = sext i32 %.pre1288 to i64
  br i1 %441, label %._crit_edge1286, label %1219

1219:                                             ; preds = %1218
  %1220 = getelementptr inbounds i8, ptr %.0980, i64 %.pre1295
  store ptr %1220, ptr %32, align 8, !tbaa !43
  br label %._crit_edge1286

._crit_edge1286:                                  ; preds = %1218, %1219
  %1221 = getelementptr inbounds i8, ptr %.0980, i64 %.pre1295
  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)
  %1222 = select i1 %1213, i32 -1, i32 -1000
  %1223 = trunc nuw i8 %.19621333 to i1
  %1224 = select i1 %1223, i32 -1, i32 -1000
  br i1 %1213, label %1225, label %1231

1225:                                             ; preds = %._crit_edge1286
  %1226 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %1227 = load ptr, ptr %1226, align 8, !tbaa !128
  %1228 = load i32, ptr %1227, align 4, !tbaa !138
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds i8, ptr %.0980, i64 %1229
  br label %1231

1231:                                             ; preds = %._crit_edge1286, %1225
  %1232 = phi ptr [ %1230, %1225 ], [ null, %._crit_edge1286 ]
  br i1 %1223, label %1233, label %1243

1233:                                             ; preds = %1231
  %1234 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %1235 = load ptr, ptr %1234, align 8, !tbaa !128
  %1236 = getelementptr inbounds i8, ptr %1235, i64 4
  %1237 = load i32, ptr %1236, align 4, !tbaa !135
  %1238 = getelementptr inbounds i8, ptr %1235, i64 8
  %1239 = load i32, ptr %1238, align 4, !tbaa !137
  %1240 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1237, i32 noundef %1239)
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds i8, ptr %.0980, i64 %1241
  br label %1243

1243:                                             ; preds = %1231, %1233
  %1244 = phi ptr [ %1242, %1233 ], [ null, %1231 ]
  br i1 %70, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %1243
  %1245 = ptrtoint ptr %1221 to i64
  %1246 = call noundef ptr @memchr(ptr noundef %.0980, i32 noundef 10, i64 noundef %.pre1295) #15
  %.not10921265 = icmp eq ptr %1246, null
  br i1 %.not10921265, label %.loopexit, label %.lr.ph1269

.lr.ph1269:                                       ; preds = %.preheader, %.lr.ph1269
  %1247 = phi ptr [ %1254, %.lr.ph1269 ], [ %1246, %.preheader ]
  %.09591268 = phi i32 [ %1250, %.lr.ph1269 ], [ 1, %.preheader ]
  %.09681267 = phi i32 [ %.1969, %.lr.ph1269 ], [ %1224, %.preheader ]
  %.09721266 = phi i32 [ %.1973, %.lr.ph1269 ], [ %1222, %.preheader ]
  %1248 = icmp eq i32 %.09721266, -1
  %.not1097 = icmp ult ptr %1247, %1232
  %spec.select1196 = select i1 %.not1097, i32 -1, i32 %.09591268
  %.1973 = select i1 %1248, i32 %spec.select1196, i32 %.09721266
  %1249 = icmp eq i32 %.09681267, -1
  %.not1098 = icmp ult ptr %1247, %1244
  %spec.select1197 = select i1 %.not1098, i32 -1, i32 %.09591268
  %.1969 = select i1 %1249, i32 %spec.select1197, i32 %.09681267
  %1250 = add nuw nsw i32 %.09591268, 1
  %1251 = getelementptr inbounds i8, ptr %1247, i64 1
  %1252 = ptrtoint ptr %1251 to i64
  %1253 = sub i64 %1245, %1252
  %1254 = call noundef ptr @memchr(ptr noundef nonnull %1251, i32 noundef 10, i64 noundef %1253) #15
  %.not1092 = icmp eq ptr %1254, null
  br i1 %.not1092, label %.loopexit, label %.lr.ph1269, !llvm.loop !211

.loopexit:                                        ; preds = %.lr.ph1269, %.preheader, %1243
  %.2974 = phi i32 [ %1222, %1243 ], [ %1222, %.preheader ], [ %.1973, %.lr.ph1269 ]
  %.2970 = phi i32 [ %1224, %1243 ], [ %1224, %.preheader ], [ %.1969, %.lr.ph1269 ]
  %.1960 = phi i32 [ 1, %1243 ], [ 1, %.preheader ], [ %1250, %.lr.ph1269 ]
  %1255 = icmp eq i32 %.2974, -1
  %spec.select1198 = select i1 %1255, i32 %.1960, i32 %.2974
  %1256 = icmp eq i32 %.2970, -1
  %.3971 = select i1 %1256, i32 %.1960, i32 %.2970
  %1257 = call noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef %1232, ptr noundef %.0980)
  %1258 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef %81, ptr noundef %1257, ptr noundef %1232, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.046.0.vec.extract = extractelement <2 x float> %1258, i64 0
  store float %.sroa.046.0.vec.extract, ptr %33, align 4, !tbaa !141
  %1259 = sitofp i32 %spec.select1198 to float
  %1260 = getelementptr inbounds i8, ptr %81, i64 4224
  %1261 = load float, ptr %1260, align 8, !tbaa !44
  %1262 = fmul float %1261, %1259
  %1263 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1262, ptr %1263, align 4, !tbaa !212
  %1264 = icmp sgt i32 %.3971, -1
  br i1 %1264, label %1265, label %1272

1265:                                             ; preds = %.loopexit
  %1266 = call noundef ptr @_Z8ImStrbolPKcS0_(ptr noundef %1244, ptr noundef %.0980)
  %1267 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef nonnull %81, ptr noundef %1266, ptr noundef %1244, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1267, i64 0
  store float %.sroa.045.0.vec.extract, ptr %34, align 4, !tbaa !141
  %1268 = uitofp nneg i32 %.3971 to float
  %1269 = load float, ptr %1260, align 8, !tbaa !44
  %1270 = fmul float %1269, %1268
  %1271 = getelementptr inbounds i8, ptr %34, i64 4
  store float %1270, ptr %1271, align 4, !tbaa !212
  br label %1272

1272:                                             ; preds = %1265, %.loopexit
  %1273 = phi float [ %1269, %1265 ], [ %1261, %.loopexit ]
  br i1 %70, label %1274, label %1278

1274:                                             ; preds = %1272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %1275 = uitofp nneg i32 %.1960 to float
  %1276 = fmul float %1273, %1275
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %.sroa.0531.2, float noundef %1276)
  %1277 = load i64, ptr %35, align 8
  store i64 %1277, ptr %31, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  br label %1278

1278:                                             ; preds = %1274, %1272
  br i1 %1213, label %1279, label %1339

1279:                                             ; preds = %1278
  %1280 = getelementptr inbounds i8, ptr %.09421310, i64 104
  %1281 = load i8, ptr %1280, align 8, !tbaa !171, !range !41, !noundef !42
  %1282 = trunc nuw i8 %1281 to i1
  br i1 %1282, label %1283, label %1339

1283:                                             ; preds = %1279
  %1284 = and i32 %5, 32768
  %.not1093 = icmp eq i32 %1284, 0
  br i1 %.not1093, label %1285, label %1305

1285:                                             ; preds = %1283
  %1286 = fmul float %.sroa.0531.2, 2.500000e-01
  %1287 = load float, ptr %33, align 4, !tbaa !141
  %1288 = getelementptr inbounds i8, ptr %.09421310, i64 92
  %1289 = load float, ptr %1288, align 4, !tbaa !143
  %1290 = fcmp olt float %1287, %1289
  br i1 %1290, label %1291, label %1296

1291:                                             ; preds = %1285
  %1292 = fsub float %1287, %1286
  %1293 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1292)
  %1294 = fptosi float %1293 to i32
  %1295 = sitofp i32 %1294 to float
  store float %1295, ptr %1288, align 4, !tbaa !143
  br label %1307

1296:                                             ; preds = %1285
  %1297 = load float, ptr %95, align 4, !tbaa !142
  %1298 = fsub float %.sroa.0531.2, %1297
  %1299 = fsub float %1287, %1298
  %1300 = fcmp ult float %1299, %1289
  br i1 %1300, label %1307, label %1301

1301:                                             ; preds = %1296
  %1302 = fadd float %1286, %1299
  %1303 = fptosi float %1302 to i32
  %1304 = sitofp i32 %1303 to float
  store float %1304, ptr %1288, align 4, !tbaa !143
  br label %1307

1305:                                             ; preds = %1283
  %1306 = getelementptr inbounds i8, ptr %.09421310, i64 96
  store float 0.000000e+00, ptr %1306, align 4, !tbaa !149
  br label %1307

1307:                                             ; preds = %1291, %1301, %1296, %1305
  br i1 %70, label %1308, label %1338

1308:                                             ; preds = %1307
  %1309 = load float, ptr %1263, align 4, !tbaa !212
  %1310 = load float, ptr %1260, align 8, !tbaa !44
  %1311 = fsub float %1309, %1310
  %1312 = fcmp olt float %1311, %.19521337
  br i1 %1312, label %1313, label %1315

1313:                                             ; preds = %1308
  %1314 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1311)
  %.pre1289 = load float, ptr %96, align 4, !tbaa !107
  br label %1324

1315:                                             ; preds = %1308
  %1316 = load float, ptr %96, align 4, !tbaa !107
  %1317 = fneg float %1316
  %1318 = call float @llvm.fmuladd.f32(float %1317, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1319 = fsub float %1309, %1318
  %1320 = fcmp ult float %1319, %.19521337
  br i1 %1320, label %1324, label %1321

1321:                                             ; preds = %1315
  %1322 = fsub float %1309, %.sroa.11.0.copyload
  %1323 = call float @llvm.fmuladd.f32(float %1316, float 2.000000e+00, float %1322)
  br label %1324

1324:                                             ; preds = %1315, %1321, %1313
  %1325 = phi float [ %.pre1289, %1313 ], [ %1316, %1321 ], [ %1316, %1315 ]
  %.2953 = phi float [ %1314, %1313 ], [ %1323, %1321 ], [ %.19521337, %1315 ]
  %1326 = getelementptr inbounds i8, ptr %31, i64 4
  %1327 = load float, ptr %1326, align 4, !tbaa !212
  %1328 = call float @llvm.fmuladd.f32(float %1325, float 2.000000e+00, float %1327)
  %1329 = fsub float %1328, %.sroa.11.0.copyload
  %1330 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1329, float noundef 0.000000e+00)
  %1331 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2953, float noundef 0.000000e+00, float noundef %1330)
  %1332 = getelementptr inbounds i8, ptr %.2940, i64 156
  %1333 = load float, ptr %1332, align 4, !tbaa !126
  %1334 = fsub float %1333, %1331
  %1335 = getelementptr inbounds i8, ptr %30, i64 4
  %1336 = load float, ptr %1335, align 4, !tbaa !212
  %1337 = fadd float %1336, %1334
  store float %1337, ptr %1335, align 4, !tbaa !212
  store float %1331, ptr %1332, align 4, !tbaa !126
  br label %1338

1338:                                             ; preds = %1324, %1307
  store i8 0, ptr %1280, align 8, !tbaa !171
  br label %1339

1339:                                             ; preds = %1338, %1279, %1278
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #14
  %1340 = getelementptr inbounds i8, ptr %.09421310, i64 92
  %1341 = load float, ptr %1340, align 4, !tbaa !143
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %36, float noundef %1341, float noundef 0.000000e+00)
  br i1 %1223, label %1342, label %1418

1342:                                             ; preds = %1339
  %1343 = getelementptr inbounds i8, ptr %.09421310, i64 8
  %1344 = load ptr, ptr %1343, align 8, !tbaa !128
  %1345 = getelementptr inbounds i8, ptr %1344, i64 4
  %1346 = load i32, ptr %1345, align 4, !tbaa !135
  %1347 = getelementptr inbounds i8, ptr %1344, i64 8
  %1348 = load i32, ptr %1347, align 4, !tbaa !137
  %1349 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1346, i32 noundef %1348)
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds i8, ptr %.0980, i64 %1350
  %1352 = load ptr, ptr %1343, align 8, !tbaa !128
  %1353 = getelementptr inbounds i8, ptr %1352, i64 4
  %1354 = load i32, ptr %1353, align 4, !tbaa !135
  %1355 = getelementptr inbounds i8, ptr %1352, i64 8
  %1356 = load i32, ptr %1355, align 4, !tbaa !137
  %1357 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1354, i32 noundef %1356)
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds i8, ptr %.0980, i64 %1358
  %1360 = select i1 %1213, float 1.000000e+00, float 0x3FE3333340000000
  %1361 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 50, float noundef %1360)
  %1362 = select i1 %70, float 0.000000e+00, float -1.000000e+00
  %1363 = 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
  %1364 = 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> %1364, ptr %38, align 8
  %1365 = 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> %1365, 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 %1351, ptr %39, align 8, !tbaa !43
  %1366 = getelementptr inbounds i8, ptr %37, i64 4
  %1367 = icmp slt i32 %1349, %1357
  br i1 %1367, label %.lr.ph1273, label %._crit_edge1274

.lr.ph1273:                                       ; preds = %1342
  %1368 = extractelement <2 x float> %1365, i64 1
  %1369 = getelementptr inbounds i8, ptr %29, i64 12
  %1370 = getelementptr inbounds i8, ptr %29, i64 4
  %1371 = getelementptr inbounds i8, ptr %81, i64 4216
  %1372 = getelementptr inbounds i8, ptr %.2940, i64 688
  %1373 = getelementptr inbounds i8, ptr %40, i64 8
  %1374 = ptrtoint ptr %1359 to i64
  %.pre1290 = load float, ptr %1260, align 8, !tbaa !44
  br label %1375

1375:                                             ; preds = %.lr.ph1273, %1412
  %1376 = phi float [ %1368, %.lr.ph1273 ], [ %1416, %1412 ]
  %1377 = phi float [ %.pre1290, %.lr.ph1273 ], [ %1415, %1412 ]
  %1378 = phi ptr [ %1351, %.lr.ph1273 ], [ %1413, %1412 ]
  %1379 = load float, ptr %1369, align 4, !tbaa !213
  %1380 = fadd float %1379, %1377
  %1381 = fcmp ogt float %1376, %1380
  br i1 %1381, label %._crit_edge1274, label %1382

1382:                                             ; preds = %1375
  %1383 = load float, ptr %1370, align 4, !tbaa !214
  %1384 = fcmp olt float %1376, %1383
  br i1 %1384, label %1385, label %1391

1385:                                             ; preds = %1382
  %1386 = ptrtoint ptr %1378 to i64
  %1387 = sub i64 %1374, %1386
  %1388 = call noundef ptr @memchr(ptr noundef %1378, i32 noundef 10, i64 noundef %1387) #15
  %.not1094 = icmp eq ptr %1388, null
  %1389 = getelementptr inbounds i8, ptr %1388, i64 1
  %1390 = select i1 %.not1094, ptr %1359, ptr %1389
  store ptr %1390, ptr %39, align 8, !tbaa !43
  br label %1412

1391:                                             ; preds = %1382
  %1392 = call <2 x float> @_ZL21InputTextCalcTextSizeP12ImGuiContextPKcS2_PS2_P6ImVec2b(ptr noundef nonnull %81, ptr noundef %1378, ptr noundef nonnull %1359, ptr noundef nonnull %39, ptr noundef null, i1 noundef zeroext true)
  %.sroa.029.0.vec.extract = extractelement <2 x float> %1392, i64 0
  %1393 = fcmp ugt float %.sroa.029.0.vec.extract, 0.000000e+00
  br i1 %1393, label %1400, label %1394

1394:                                             ; preds = %1391
  %1395 = load ptr, ptr %1371, align 8, !tbaa !152
  %1396 = call noundef float @_ZN6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %1395, i16 noundef zeroext 32)
  %1397 = fmul float %1396, 5.000000e-01
  %1398 = fptosi float %1397 to i32
  %1399 = sitofp i32 %1398 to float
  br label %1400

1400:                                             ; preds = %1394, %1391
  %.sroa.029.0.vec.extract32.pre-phi = phi float [ %1399, %1394 ], [ %.sroa.029.0.vec.extract, %1391 ]
  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
  %1401 = load float, ptr %1260, align 8, !tbaa !44
  %1402 = fsub float %1362, %1401
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %42, float noundef 0.000000e+00, float noundef %1402)
  %1403 = 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> %1403, 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.029.0.vec.extract32.pre-phi, float noundef %1363)
  %1404 = 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> %1404, 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)
  %1405 = 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 %1405, label %1406, label %1408

1406:                                             ; preds = %1400
  %1407 = load ptr, ptr %1372, align 8, !tbaa !215
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(216) %1407, ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(8) %1373, i32 noundef %1361, float noundef 0.000000e+00, i32 noundef 0)
  br label %1408

1408:                                             ; preds = %1406, %1400
  %1409 = load float, ptr %30, align 8, !tbaa !141
  %1410 = load float, ptr %36, align 4, !tbaa !141
  %1411 = fsub float %1409, %1410
  store float %1411, ptr %37, align 8, !tbaa !141
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #14
  %.pre1291 = load float, ptr %1260, align 8, !tbaa !44
  %.pre1292 = load float, ptr %1366, align 4, !tbaa !212
  %.pre1293 = load ptr, ptr %39, align 8, !tbaa !43
  br label %1412

1412:                                             ; preds = %1408, %1385
  %1413 = phi ptr [ %.pre1293, %1408 ], [ %1390, %1385 ]
  %1414 = phi float [ %.pre1292, %1408 ], [ %1376, %1385 ]
  %1415 = phi float [ %.pre1291, %1408 ], [ %1377, %1385 ]
  %1416 = fadd float %1415, %1414
  store float %1416, ptr %1366, align 4, !tbaa !212
  %1417 = icmp ult ptr %1413, %1359
  br i1 %1417, label %1375, label %._crit_edge1274, !llvm.loop !216

._crit_edge1274:                                  ; preds = %1412, %1375, %1342
  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 %1418

1418:                                             ; preds = %._crit_edge1274, %1339
  %.pre1294 = load ptr, ptr %32, align 8, !tbaa !43
  br i1 %70, label %1424, label %1419

1419:                                             ; preds = %1418
  %1420 = ptrtoint ptr %.pre1294 to i64
  %1421 = ptrtoint ptr %.0980 to i64
  %1422 = sub i64 %1420, %1421
  %1423 = icmp slt i64 %1422, 2097152
  br i1 %1423, label %1424, label %1433

1424:                                             ; preds = %1419, %1418
  %. = phi ptr [ %29, %1419 ], [ null, %1418 ]
  %1425 = zext i1 %441 to i32
  %1426 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1425, float noundef 1.000000e+00)
  %1427 = getelementptr inbounds i8, ptr %.2940, i64 688
  %1428 = load ptr, ptr %1427, align 8, !tbaa !215
  %1429 = getelementptr inbounds i8, ptr %81, i64 4216
  %1430 = load ptr, ptr %1429, align 8, !tbaa !152
  %1431 = load float, ptr %1260, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  %1432 = 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> %1432, ptr %47, align 8
  call void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216) %1428, ptr noundef %1430, float noundef %1431, ptr noundef nonnull align 4 dereferenceable(8) %47, i32 noundef %1426, ptr noundef %.0980, ptr noundef %.pre1294, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #14
  br label %1433

1433:                                             ; preds = %1424, %1419
  br i1 %1213, label %1434, label %1475

1434:                                             ; preds = %1433
  %1435 = getelementptr inbounds i8, ptr %81, i64 24
  %1436 = load float, ptr %1435, align 8, !tbaa !217
  %1437 = getelementptr inbounds i8, ptr %.09421310, i64 100
  %1438 = load float, ptr %1437, align 4, !tbaa !218
  %1439 = fadd float %1436, %1438
  store float %1439, ptr %1437, align 4, !tbaa !218
  %1440 = getelementptr inbounds i8, ptr %81, i64 98
  %1441 = load i8, ptr %1440, align 2, !tbaa !219, !range !41, !noundef !42
  %1442 = trunc nuw i8 %1441 to i1
  %1443 = fcmp ugt float %1439, 0.000000e+00
  %or.cond1199 = select i1 %1442, i1 %1443, i1 false
  br i1 %or.cond1199, label %1444, label %1447

1444:                                             ; preds = %1434
  %1445 = call float @fmodf(float noundef %1439, float noundef 0x3FF3333340000000) #14
  %1446 = fcmp ole float %1445, 0x3FE99999A0000000
  br label %1447

1447:                                             ; preds = %1444, %1434
  %1448 = phi i1 [ true, %1434 ], [ %1446, %1444 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #14
  %1449 = 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> %1449, ptr %49, align 8
  %1450 = 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> %1450, ptr %48, align 8
  %1451 = 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.018.0.vec.extract = extractelement <2 x float> %1451, i64 0
  %.sroa.018.4.vec.extract = extractelement <2 x float> %1451, i64 1
  %1452 = load float, ptr %1260, align 8, !tbaa !44
  %1453 = fsub float %.sroa.018.4.vec.extract, %1452
  %1454 = fadd float %1453, 5.000000e-01
  %1455 = fadd float %.sroa.018.0.vec.extract, 1.000000e+00
  %1456 = fadd float %.sroa.018.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %50, float noundef %.sroa.018.0.vec.extract, float noundef %1454, float noundef %1455, float noundef %1456)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #14
  br i1 %1448, label %1457, label %.critedge14

1457:                                             ; preds = %1447
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %51, ptr noundef nonnull align 4 dereferenceable(16) %29)
  %1458 = 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 %1458, label %1459, label %1464

1459:                                             ; preds = %1457
  %1460 = getelementptr inbounds i8, ptr %.2940, i64 688
  %1461 = load ptr, ptr %1460, align 8, !tbaa !215
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #14
  %1462 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %50)
  store <2 x float> %1462, ptr %52, align 8
  %1463 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(216) %1461, ptr noundef nonnull align 4 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(8) %52, i32 noundef %1463, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #14
  br label %1464

.critedge14:                                      ; preds = %1447
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #14
  br label %1464

1464:                                             ; preds = %.critedge14, %1459, %1457
  br i1 %179, label %1474, label %1465

1465:                                             ; preds = %1464
  %1466 = getelementptr inbounds i8, ptr %81, i64 9552
  store i8 1, ptr %1466, align 8, !tbaa !220
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #14
  %1467 = fadd float %.sroa.018.0.vec.extract, -1.000000e+00
  %1468 = load float, ptr %1260, align 8, !tbaa !44
  %1469 = fsub float %.sroa.018.4.vec.extract, %1468
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %1467, float noundef %1469)
  %1470 = getelementptr inbounds i8, ptr %81, i64 9556
  %1471 = load i64, ptr %53, align 8
  store i64 %1471, ptr %1470, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #14
  %1472 = load float, ptr %1260, align 8, !tbaa !44
  %1473 = getelementptr inbounds i8, ptr %81, i64 9564
  store float %1472, ptr %1473, align 4, !tbaa !221
  br label %1474

1474:                                             ; preds = %1465, %1464
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #14
  br label %1475

1475:                                             ; preds = %1474, %1433
  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 %1523

1476:                                             ; preds = %1214
  br i1 %70, label %.critedge1201, label %1477

1477:                                             ; preds = %1476
  br i1 %441, label %1495, label %1478

1478:                                             ; preds = %1477
  %1479 = load i32, ptr %187, align 4, !tbaa !114
  %1480 = icmp eq i32 %1479, %85
  br i1 %1480, label %1481, label %1486

1481:                                             ; preds = %1478
  %1482 = getelementptr inbounds i8, ptr %.09421310, i64 24
  %1483 = load i32, ptr %1482, align 8, !tbaa !133
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds i8, ptr %.0980, i64 %1484
  store ptr %1485, ptr %32, align 8, !tbaa !43
  br label %1495

1486:                                             ; preds = %1478
  %1487 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0980) #15
  %1488 = getelementptr inbounds i8, ptr %.0980, i64 %1487
  store ptr %1488, ptr %32, align 8, !tbaa !43
  br label %1495

.critedge1201:                                    ; preds = %1476
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #14
  %1489 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0980, ptr noundef nonnull %32)
  %1490 = sitofp i32 %1489 to float
  %1491 = getelementptr inbounds i8, ptr %81, i64 4224
  %1492 = load float, ptr %1491, align 8, !tbaa !44
  %1493 = fmul float %1492, %1490
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %.sroa.0531.2, float noundef %1493)
  %1494 = load i64, ptr %54, align 8
  store i64 %1494, ptr %31, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #14
  br label %1501

1495:                                             ; preds = %1477, %1481, %1486
  %1496 = phi ptr [ %1212, %1477 ], [ %1485, %1481 ], [ %1488, %1486 ]
  %1497 = ptrtoint ptr %1496 to i64
  %1498 = ptrtoint ptr %.0980 to i64
  %1499 = sub i64 %1497, %1498
  %1500 = icmp slt i64 %1499, 2097152
  br i1 %1500, label %1501, label %1523

1501:                                             ; preds = %.critedge1201, %1495
  %1502 = and i32 %5, 131072
  %.not1091 = icmp eq i32 %1502, 0
  br i1 %.not1091, label %1512, label %1503

1503:                                             ; preds = %1501
  %1504 = load float, ptr %30, align 8, !tbaa !141
  %1505 = getelementptr inbounds i8, ptr %11, i64 8
  %1506 = load float, ptr %1505, align 8, !tbaa !222
  %1507 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %.0980, ptr noundef null, i1 noundef zeroext false, float noundef -1.000000e+00)
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1507, i64 0
  %1508 = fsub float %1506, %.sroa.0.0.vec.extract
  %1509 = load float, ptr %95, align 4, !tbaa !142
  %1510 = fsub float %1508, %1509
  %1511 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1504, float noundef %1510)
  store float %1511, ptr %30, align 8, !tbaa !141
  br label %1512

1512:                                             ; preds = %1503, %1501
  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)
  %1513 = zext i1 %441 to i32
  %1514 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1513, float noundef 1.000000e+00)
  %1515 = getelementptr inbounds i8, ptr %.2940, i64 688
  %1516 = load ptr, ptr %1515, align 8, !tbaa !215
  %1517 = getelementptr inbounds i8, ptr %81, i64 4216
  %1518 = load ptr, ptr %1517, align 8, !tbaa !152
  %1519 = getelementptr inbounds i8, ptr %81, i64 4224
  %1520 = load float, ptr %1519, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #14
  %1521 = 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> %1521, ptr %56, align 8
  %1522 = load ptr, ptr %32, align 8, !tbaa !43
  %.15 = select i1 %70, ptr null, ptr %29
  call void @_ZN10ImDrawList7AddTextEP6ImFontfRK6ImVec2jPKcS6_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(216) %1516, ptr noundef %1518, float noundef %1520, ptr noundef nonnull align 4 dereferenceable(8) %56, i32 noundef %1514, ptr noundef %.0980, ptr noundef %1522, float noundef 0.000000e+00, ptr noundef %.15)
  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 %1523

1523:                                             ; preds = %1495, %1512, %1475
  br i1 %brmerge1115, label %1525, label %1524

1524:                                             ; preds = %1523
  call void @_ZN5ImGui7PopFontEv()
  br label %1525

1525:                                             ; preds = %1523, %1524
  br i1 %70, label %1526, label %1548

1526:                                             ; preds = %1525
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #14
  %1527 = load float, ptr %31, align 8, !tbaa !141
  %1528 = getelementptr inbounds i8, ptr %31, i64 4
  %1529 = load float, ptr %1528, align 4, !tbaa !212
  %1530 = load float, ptr %96, align 4, !tbaa !107
  %1531 = fadd float %1529, %1530
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %57, float noundef %1527, float noundef %1531)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %57)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #14
  %1532 = getelementptr inbounds i8, ptr %81, i64 7428
  %1533 = load i32, ptr %1532, align 4, !tbaa !223
  %1534 = or i32 %1533, 1048577
  store i32 %1534, ptr %1532, align 4, !tbaa !223
  call void @_ZN5ImGui8EndChildEv()
  %1535 = getelementptr inbounds i8, ptr %81, i64 7488
  %1536 = load i32, ptr %1535, align 8, !tbaa !224
  %1537 = and i32 %1536, 128
  %1538 = getelementptr inbounds i8, ptr %15, i64 8
  %1539 = load i32, ptr %1538, align 4, !tbaa !225
  %1540 = or i32 %1539, %1537
  store i32 %1540, ptr %1538, align 4, !tbaa !225
  call void @_ZN5ImGui8EndGroupEv()
  %1541 = load i32, ptr %165, align 8, !tbaa !226
  %1542 = icmp eq i32 %1541, 0
  br i1 %1542, label %1545, label %1543

1543:                                             ; preds = %1526
  %1544 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %.2940, i32 noundef 1)
  %.not1095 = icmp eq i32 %1541, %1544
  br i1 %.not1095, label %1548, label %1545

1545:                                             ; preds = %1543, %1526
  store i32 %85, ptr %165, align 8, !tbaa !226
  %1546 = getelementptr inbounds i8, ptr %15, i64 4
  %1547 = load <2 x i32>, ptr %1546, align 4, !tbaa !111
  store <2 x i32> %1547, ptr %166, align 4, !tbaa !111
  br label %1548

1548:                                             ; preds = %1543, %1545, %1525
  br i1 %409, label %1549, label %1551

1549:                                             ; preds = %1548
  %1550 = getelementptr inbounds i8, ptr %.09421310, i64 32
  store ptr null, ptr %1550, align 8, !tbaa !150
  br label %1551

1551:                                             ; preds = %1549, %1548
  %1552 = getelementptr inbounds i8, ptr %81, i64 9760
  %1553 = load i8, ptr %1552, align 8, !tbaa !227, !range !41, !noundef !42
  %1554 = trunc nuw i8 %1553 to i1
  %or.cond1205 = and i1 %brmerge1115, %1554
  br i1 %or.cond1205, label %1555, label %1557

1555:                                             ; preds = %1551
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1556 = load ptr, ptr %32, align 8, !tbaa !43
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %30, ptr noundef %.0980, ptr noundef %1556)
  br label %1557

1557:                                             ; preds = %1555, %1551
  br i1 %101, label %1558, label %1568

1558:                                             ; preds = %1557
  %1559 = getelementptr inbounds i8, ptr %11, i64 8
  %1560 = load float, ptr %1559, align 8, !tbaa !222
  %1561 = getelementptr inbounds i8, ptr %81, i64 3140
  %1562 = load float, ptr %1561, align 4, !tbaa !108
  %1563 = fadd float %1560, %1562
  %1564 = load float, ptr %1192, align 4, !tbaa !210
  %1565 = load float, ptr %96, align 4, !tbaa !107
  %1566 = fadd float %1564, %1565
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %58, float noundef %1563, float noundef %1566)
  %1567 = load <2 x float>, ptr %58, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1567, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1568

1568:                                             ; preds = %1558, %1557
  br i1 %.4967, label %1569, label %1570

1569:                                             ; preds = %1568
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %85)
  br label %1570

1570:                                             ; preds = %1569, %1568
  %1571 = and i32 %5, 64
  %.not1096 = icmp eq i32 %1571, 0
  %..2978 = select i1 %.not1096, i1 %.4967, i1 %.29781331
  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, %1570
  %.3 = phi i1 [ %..2978, %1570 ], [ 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 %1572

1572:                                             ; 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 @_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 @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) local_unnamed_addr #4

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

declare noundef ptr @_ZN6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118), i16 noundef zeroext) local_unnamed_addr #4

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) local_unnamed_addr #4

; 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

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

; Function Attrs: mustprogress 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(118), 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 @_ZN5ImGui7PopFontEv() local_unnamed_addr #4

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, !13, i64 207}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184, !11, i64 192, !13, i64 200, !13, i64 201, !13, i64 202, !13, i64 203, !13, i64 204, !13, i64 205, !13, i64 206, !13, i64 207, !13, i64 208, !13, i64 209, !13, i64 210, !13, i64 211, !13, i64 212, !13, i64 213, !8, i64 214, !8, i64 215, !14, i64 216, !14, i64 218, !14, i64 220, !14, i64 222, !14, i64 224, !8, i64 226, !8, i64 227, !13, i64 228, !15, i64 232, !8, i64 236, !8, i64 237, !8, i64 238, !8, i64 239, !10, i64 240, !10, i64 241, !10, i64 242, !11, i64 244, !11, i64 252, !16, i64 264, !17, i64 280, !23, i64 512, !23, i64 528, !23, i64 544, !23, i64 560, !23, i64 576, !23, i64 592, !23, i64 608, !24, i64 624, !24, i64 628, !10, i64 632, !12, i64 636, !12, i64 640, !25, i64 648, !27, i64 664, !12, i64 680, !10, i64 684, !7, i64 688, !28, i64 696, !7, i64 912, !7, i64 920, !7, i64 928, !7, i64 936, !7, i64 944, !7, i64 952, !7, i64 960, !7, i64 968, !8, i64 976, !8, i64 984, !8, i64 1016, !10, i64 1032, !10, i64 1036, !10, i64 1040, !13, i64 1044}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS6ImVec2", !12, i64 0, !12, i64 4}
!12 = !{!"float", !8, i64 0}
!13 = !{!"bool", !8, i64 0}
!14 = !{!"short", !8, i64 0}
!15 = !{!"_ZTS8ImGuiDir", !8, i64 0}
!16 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!17 = !{!"_ZTS19ImGuiWindowTempData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !12, i64 56, !12, i64 60, !13, i64 64, !13, i64 65, !18, i64 68, !18, i64 72, !18, i64 76, !11, i64 80, !19, i64 88, !14, i64 92, !14, i64 94, !13, i64 96, !13, i64 97, !13, i64 98, !13, i64 99, !11, i64 100, !20, i64 108, !10, i64 136, !10, i64 140, !21, i64 144, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !12, i64 192, !12, i64 196, !22, i64 200, !22, i64 216}
!18 = !{!"_ZTS6ImVec1", !12, i64 0}
!19 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!20 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 10, !14, i64 12, !14, i64 14, !14, i64 16, !8, i64 18}
!21 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!23 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!24 = !{!"_ZTS8ImVec2ih", !14, i64 0, !14, i64 2}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorI16ImGuiStoragePairE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!28 = !{!"_ZTS10ImDrawList", !29, i64 0, !30, i64 16, !31, i64 32, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 64, !7, i64 72, !32, i64 80, !33, i64 96, !36, i64 128, !38, i64 152, !39, i64 168, !40, i64 184, !12, i64 200, !7, i64 208}
!29 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS15ImDrawCmdHeader", !34, i64 0, !35, i64 16, !10, i64 24}
!34 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!35 = !{!"long long", !8, i64 0}
!36 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !37, i64 8}
!37 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!38 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!39 = !{!"_ZTS8ImVectorIyE", !10, i64 0, !10, i64 4, !7, i64 8}
!40 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = !{!7, !7, i64 0}
!44 = !{!45, !12, i64 4224}
!45 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !46, i64 8, !48, i64 2984, !49, i64 3056, !7, i64 4216, !12, i64 4224, !12, i64 4228, !12, i64 4232, !12, i64 4236, !50, i64 4240, !51, i64 4776, !10, i64 4784, !10, i64 4788, !10, i64 4792, !10, i64 4796, !13, i64 4800, !13, i64 4801, !13, i64 4802, !13, i64 4803, !7, i64 4808, !8, i64 4816, !52, i64 4832, !52, i64 4848, !47, i64 4864, !10, i64 4868, !21, i64 4872, !21, i64 4888, !21, i64 4904, !53, i64 4920, !25, i64 4936, !10, i64 4952, !11, i64 4956, !10, i64 4964, !7, i64 4968, !7, i64 4976, !7, i64 4984, !7, i64 4992, !7, i64 5000, !7, i64 5008, !11, i64 5016, !10, i64 5024, !10, i64 5028, !12, i64 5032, !11, i64 5036, !11, i64 5044, !10, i64 5052, !10, i64 5056, !10, i64 5060, !10, i64 5064, !10, i64 5068, !12, i64 5072, !12, i64 5076, !13, i64 5080, !13, i64 5081, !13, i64 5082, !10, i64 5084, !10, i64 5088, !12, i64 5092, !13, i64 5096, !13, i64 5097, !13, i64 5098, !13, i64 5099, !13, i64 5100, !13, i64 5101, !13, i64 5102, !10, i64 5103, !11, i64 5104, !7, i64 5112, !54, i64 5120, !10, i64 5124, !55, i64 5128, !56, i64 5140, !10, i64 5148, !12, i64 5152, !51, i64 5160, !51, i64 5168, !51, i64 5176, !57, i64 5184, !8, i64 5204, !58, i64 7056, !10, i64 7400, !13, i64 7404, !10, i64 7408, !10, i64 7412, !10, i64 7416, !10, i64 7420, !60, i64 7424, !61, i64 7480, !62, i64 7560, !13, i64 7672, !10, i64 7676, !63, i64 7680, !64, i64 7696, !65, i64 7712, !66, i64 7728, !67, i64 7744, !68, i64 7760, !69, i64 7776, !69, i64 7792, !70, i64 7808, !71, i64 7824, !13, i64 7840, !13, i64 7841, !13, i64 7842, !13, i64 7843, !10, i64 7844, !7, i64 7848, !10, i64 7856, !19, i64 7860, !10, i64 7864, !10, i64 7868, !10, i64 7872, !10, i64 7876, !66, i64 7880, !10, i64 7896, !12, i64 7900, !10, i64 7904, !10, i64 7908, !54, i64 7912, !35, i64 7920, !8, i64 7928, !13, i64 7929, !13, i64 7930, !13, i64 7931, !72, i64 7936, !13, i64 7992, !13, i64 7993, !13, i64 7994, !10, i64 7996, !10, i64 8000, !10, i64 8004, !15, i64 8008, !15, i64 8012, !15, i64 8016, !23, i64 8020, !23, i64 8036, !10, i64 8052, !10, i64 8056, !10, i64 8060, !72, i64 8064, !72, i64 8120, !72, i64 8176, !72, i64 8232, !10, i64 8288, !10, i64 8292, !10, i64 8296, !10, i64 8300, !13, i64 8304, !13, i64 8305, !10, i64 8308, !10, i64 8312, !7, i64 8320, !7, i64 8328, !7, i64 8336, !12, i64 8344, !12, i64 8348, !13, i64 8352, !73, i64 8356, !11, i64 8360, !11, i64 8368, !12, i64 8376, !13, i64 8380, !13, i64 8381, !13, i64 8382, !10, i64 8384, !10, i64 8388, !10, i64 8392, !74, i64 8400, !23, i64 8464, !23, i64 8480, !10, i64 8496, !10, i64 8500, !12, i64 8504, !10, i64 8508, !10, i64 8512, !10, i64 8516, !10, i64 8520, !40, i64 8528, !8, i64 8544, !10, i64 8560, !75, i64 8568, !7, i64 8584, !10, i64 8592, !10, i64 8596, !76, i64 8600, !77, i64 8616, !22, i64 8656, !37, i64 8672, !7, i64 8688, !79, i64 8696, !81, i64 8736, !82, i64 8752, !83, i64 8768, !7, i64 8872, !10, i64 8880, !84, i64 8888, !85, i64 8904, !10, i64 8944, !10, i64 8948, !12, i64 8952, !12, i64 8956, !10, i64 8960, !10, i64 8964, !10, i64 8968, !12, i64 8972, !11, i64 8976, !87, i64 8984, !89, i64 9104, !90, i64 9128, !10, i64 9248, !56, i64 9252, !10, i64 9260, !10, i64 9264, !10, i64 9268, !10, i64 9272, !10, i64 9276, !12, i64 9280, !12, i64 9284, !10, i64 9288, !34, i64 9292, !92, i64 9308, !23, i64 9356, !13, i64 9372, !14, i64 9374, !12, i64 9376, !12, i64 9380, !12, i64 9384, !13, i64 9388, !13, i64 9389, !12, i64 9392, !12, i64 9396, !12, i64 9400, !14, i64 9404, !14, i64 9406, !7, i64 9408, !88, i64 9416, !16, i64 9432, !93, i64 9448, !95, i64 9552, !95, i64 9568, !13, i64 9584, !12, i64 9588, !96, i64 9592, !97, i64 9608, !98, i64 9624, !99, i64 9640, !100, i64 9656, !10, i64 9672, !8, i64 9680, !13, i64 9760, !10, i64 9764, !7, i64 9768, !7, i64 9776, !96, i64 9784, !7, i64 9800, !7, i64 9808, !12, i64 9816, !13, i64 9820, !10, i64 9824, !10, i64 9828, !10, i64 9832, !7, i64 9840, !7, i64 9848, !11, i64 9856, !13, i64 9864, !10, i64 9868, !101, i64 9872, !7, i64 9896, !10, i64 9904, !10, i64 9908, !96, i64 9912, !102, i64 9928, !10, i64 9952, !10, i64 9956, !8, i64 9960, !8, i64 9961, !13, i64 9962, !10, i64 9964, !8, i64 9968, !13, i64 9969, !8, i64 9970, !10, i64 9972, !12, i64 9976, !34, i64 9980, !103, i64 9996, !104, i64 10024, !106, i64 10064, !8, i64 10124, !10, i64 10364, !10, i64 10368, !12, i64 10372, !10, i64 10376, !10, i64 10380, !10, i64 10384, !88, i64 10392, !8, i64 10408}
!46 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !12, i64 56, !13, i64 60, !7, i64 64, !11, i64 72, !13, i64 80, !13, i64 81, !13, i64 82, !13, i64 83, !13, i64 84, !13, i64 85, !13, i64 86, !13, i64 87, !13, i64 88, !13, i64 89, !13, i64 90, !13, i64 91, !13, i64 92, !13, i64 93, !13, i64 94, !13, i64 95, !13, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !13, i64 124, !13, i64 125, !13, i64 126, !13, i64 127, !13, i64 128, !13, i64 129, !13, i64 130, !13, i64 131, !13, i64 132, !13, i64 133, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !13, i64 176, !13, i64 177, !13, i64 178, !13, i64 179, !13, i64 180, !13, i64 181, !13, i64 182, !12, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !11, i64 204, !7, i64 216, !11, i64 224, !8, i64 232, !12, i64 240, !12, i64 244, !47, i64 248, !13, i64 252, !13, i64 253, !13, i64 254, !13, i64 255, !10, i64 256, !8, i64 260, !13, i64 2724, !11, i64 2728, !8, i64 2736, !8, i64 2776, !8, i64 2816, !8, i64 2821, !8, i64 2826, !8, i64 2836, !8, i64 2846, !8, i64 2851, !8, i64 2856, !13, i64 2861, !13, i64 2862, !8, i64 2864, !8, i64 2884, !8, i64 2904, !12, i64 2924, !13, i64 2928, !13, i64 2929, !14, i64 2930, !30, i64 2936, !7, i64 2952, !7, i64 2960, !7, i64 2968}
!47 = !{!"_ZTS16ImGuiMouseSource", !8, i64 0}
!48 = !{!"_ZTS15ImGuiPlatformIO", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !14, i64 56, !7, i64 64}
!49 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !12, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 32, !15, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !11, i64 60, !12, i64 68, !12, i64 72, !11, i64 76, !11, i64 84, !11, i64 92, !11, i64 100, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !12, i64 152, !12, i64 156, !11, i64 160, !15, i64 168, !11, i64 172, !11, i64 180, !12, i64 188, !11, i64 192, !11, i64 200, !11, i64 208, !11, i64 216, !12, i64 224, !13, i64 228, !13, i64 229, !13, i64 230, !12, i64 232, !12, i64 236, !8, i64 240, !12, i64 1136, !12, i64 1140, !12, i64 1144, !10, i64 1148, !10, i64 1152}
!50 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !7, i64 16, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !34, i64 40, !10, i64 56, !32, i64 64, !8, i64 80, !12, i64 464, !8, i64 468}
!51 = !{!"double", !8, i64 0}
!52 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !7, i64 8}
!53 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!54 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!55 = !{!"_ZTS24ImGuiDeactivatedItemData", !10, i64 0, !10, i64 4, !13, i64 8, !13, i64 9}
!56 = !{!"_ZTS20ImGuiDataTypeStorage", !8, i64 0}
!57 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !8, i64 0}
!58 = !{!"_ZTS20ImGuiKeyRoutingTable", !8, i64 0, !59, i64 312, !59, i64 328}
!59 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !10, i64 8, !35, i64 16, !12, i64 24, !10, i64 28, !10, i64 32, !13, i64 36, !8, i64 37, !56, i64 38, !10, i64 48}
!61 = !{!"_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}
!62 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !10, i64 56, !13, i64 60, !23, i64 64, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100, !10, i64 108}
!63 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!67 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!68 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS8ImVectorI22ImGuiTreeNodeStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTS16ImGuiNavItemData", !7, i64 0, !10, i64 8, !10, i64 12, !23, i64 16, !10, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !35, i64 48}
!73 = !{!"_ZTS8ImGuiKey", !8, i64 0}
!74 = !{!"_ZTS12ImGuiPayload", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !13, i64 57, !13, i64 58}
!75 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!76 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!77 = !{!"_ZTS6ImPoolI10ImGuiTableE", !78, i64 0, !25, i64 16, !10, i64 32, !10, i64 36}
!78 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!79 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !80, i64 0, !25, i64 16, !10, i64 32, !10, i64 36}
!80 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!81 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!82 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!83 = !{!"_ZTS19ImGuiBoxSelectState", !10, i64 0, !13, i64 4, !13, i64 5, !13, i64 6, !13, i64 7, !13, i64 8, !10, i64 9, !11, i64 12, !11, i64 20, !11, i64 28, !7, i64 40, !13, i64 48, !23, i64 52, !23, i64 68, !23, i64 84}
!84 = !{!"_ZTS8ImVectorI24ImGuiMultiSelectTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!85 = !{!"_ZTS6ImPoolI21ImGuiMultiSelectStateE", !86, i64 0, !25, i64 16, !10, i64 32, !10, i64 36}
!86 = !{!"_ZTS8ImVectorI21ImGuiMultiSelectStateE", !10, i64 0, !10, i64 4, !7, i64 8}
!87 = !{!"_ZTS19ImGuiInputTextState", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !7, i64 32, !88, i64 40, !88, i64 56, !88, i64 72, !10, i64 88, !11, i64 92, !12, i64 100, !13, i64 104, !13, i64 105, !13, i64 106, !13, i64 107, !10, i64 108, !10, i64 112}
!88 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!89 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !88, i64 8}
!90 = !{!"_ZTS6ImFont", !22, i64 0, !12, i64 16, !12, i64 20, !30, i64 24, !91, i64 40, !7, i64 56, !7, i64 64, !7, i64 72, !14, i64 80, !14, i64 82, !14, i64 84, !14, i64 86, !12, i64 88, !12, i64 92, !13, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !10, i64 112, !8, i64 116}
!91 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!92 = !{!"_ZTS21ImGuiComboPreviewData", !23, i64 0, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !10, i64 44}
!93 = !{!"_ZTS22ImGuiTypingSelectState", !94, i64 0, !8, i64 24, !10, i64 88, !10, i64 92, !12, i64 96, !13, i64 100}
!94 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !7, i64 8, !13, i64 16, !13, i64 17, !8, i64 18}
!95 = !{!"_ZTS20ImGuiPlatformImeData", !13, i64 0, !11, i64 4, !12, i64 12}
!96 = !{!"_ZTS15ImGuiTextBuffer", !88, i64 0}
!97 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!98 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !88, i64 0}
!99 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !88, i64 0}
!100 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!101 = !{!"_ZTS23ImGuiErrorRecoveryState", !14, i64 0, !14, i64 2, !14, i64 4, !14, i64 6, !14, i64 8, !14, i64 10, !14, i64 12, !14, i64 14, !14, i64 16, !14, i64 18, !14, i64 20}
!102 = !{!"_ZTS14ImGuiTextIndex", !67, i64 0, !10, i64 16}
!103 = !{!"_ZTS18ImGuiMetricsConfig", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !13, i64 5, !13, i64 6, !13, i64 7, !13, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!104 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !105, i64 16, !13, i64 32, !12, i64 36}
!105 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!106 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !14, i64 8, !8, i64 12}
!107 = !{!49, !12, i64 64}
!108 = !{!49, !12, i64 84}
!109 = !{!12, !12, i64 0}
!110 = !{i64 0, i64 4, !111, i64 4, i64 4, !111, i64 8, i64 4, !111, i64 12, i64 4, !109, i64 16, i64 4, !109, i64 20, i64 4, !109, i64 24, i64 4, !109, i64 28, i64 4, !109, i64 32, i64 4, !109, i64 36, i64 4, !109, i64 40, i64 4, !109, i64 44, i64 4, !109, i64 48, i64 4, !109, i64 52, i64 4, !109, i64 56, i64 4, !109, i64 60, i64 4, !109, i64 64, i64 4, !109, i64 68, i64 4, !109, i64 72, i64 4, !109, i64 76, i64 4, !111}
!111 = !{!10, !10, i64 0}
!112 = !{!45, !10, i64 7864}
!113 = !{!45, !10, i64 7876}
!114 = !{!45, !10, i64 5084}
!115 = !{!49, !12, i64 68}
!116 = !{!49, !12, i64 72}
!117 = !{!45, !7, i64 4968}
!118 = !{!6, !19, i64 368}
!119 = !{!6, !14, i64 374}
!120 = !{!6, !12, i64 192}
!121 = !{!45, !10, i64 7484}
!122 = !{!45, !13, i64 7841}
!123 = !{!45, !54, i64 7912}
!124 = !{!13, !13, i64 0}
!125 = !{!45, !10, i64 5124}
!126 = !{!6, !12, i64 156}
!127 = !{!87, !13, i64 107}
!128 = !{!87, !7, i64 8}
!129 = !{!130, !8, i64 23}
!130 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !10, i64 16, !8, i64 20, !8, i64 21, !8, i64 22, !8, i64 23, !8, i64 24, !8, i64 25, !8, i64 26, !12, i64 28, !131, i64 32}
!131 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 2584, !14, i64 2586, !10, i64 2588, !10, i64 2592}
!132 = !{!87, !7, i64 48}
!133 = !{!87, !10, i64 24}
!134 = !{!87, !10, i64 108}
!135 = !{!130, !10, i64 4}
!136 = !{!87, !10, i64 112}
!137 = !{!130, !10, i64 8}
!138 = !{!130, !10, i64 0}
!139 = !{!87, !10, i64 20}
!140 = !{!87, !7, i64 64}
!141 = !{!11, !12, i64 0}
!142 = !{!49, !12, i64 60}
!143 = !{!87, !12, i64 92}
!144 = !{!46, !13, i64 252}
!145 = !{!130, !8, i64 12}
!146 = !{!46, !13, i64 88}
!147 = !{!73, !73, i64 0}
!148 = !{!45, !10, i64 7400}
!149 = !{!87, !12, i64 96}
!150 = !{!87, !7, i64 32}
!151 = !{!8, !8, i64 0}
!152 = !{!45, !7, i64 4216}
!153 = !{!90, !12, i64 20}
!154 = !{!90, !12, i64 108}
!155 = !{!90, !7, i64 64}
!156 = !{!90, !7, i64 56}
!157 = !{!158, !12, i64 4}
!158 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 0, !10, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36}
!159 = !{!90, !12, i64 16}
!160 = !{!87, !13, i64 106}
!161 = !{!87, !10, i64 88}
!162 = !{!87, !10, i64 16}
!163 = !{!45, !13, i64 5097}
!164 = !{!46, !12, i64 224}
!165 = !{!23, !12, i64 0}
!166 = !{!46, !12, i64 228}
!167 = !{!6, !12, i64 284}
!168 = !{!87, !13, i64 105}
!169 = !{!14, !14, i64 0}
!170 = !{!46, !13, i64 253}
!171 = !{!87, !13, i64 104}
!172 = !{!46, !12, i64 204}
!173 = !{!46, !12, i64 208}
!174 = !{!46, !13, i64 254}
!175 = !{!46, !10, i64 2936}
!176 = distinct !{!176, !177}
!177 = !{!"llvm.loop.mustprogress"}
!178 = !{!45, !13, i64 5096}
!179 = !{!130, !10, i64 16}
!180 = !{!46, !13, i64 255}
!181 = !{!46, !10, i64 0}
!182 = !{!46, !10, i64 4}
!183 = !{!45, !13, i64 88}
!184 = !{!46, !13, i64 91}
!185 = !{!45, !7, i64 2992}
!186 = !{!45, !7, i64 10400}
!187 = !{!88, !10, i64 0}
!188 = distinct !{!188, !177}
!189 = !{!88, !7, i64 8}
!190 = !{!87, !10, i64 56}
!191 = !{!192, !7, i64 0}
!192 = !{!"_ZTS26ImGuiInputTextCallbackData", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !14, i64 24, !73, i64 28, !7, i64 32, !10, i64 40, !10, i64 44, !13, 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 = !{!87, !7, i64 80}
!197 = !{!192, !73, i64 28}
!198 = !{!192, !7, i64 32}
!199 = !{!192, !10, i64 40}
!200 = !{!192, !10, i64 44}
!201 = !{!192, !13, i64 48}
!202 = !{!192, !10, i64 52}
!203 = !{!192, !10, i64 56}
!204 = !{!192, !10, i64 60}
!205 = !{!87, !10, i64 72}
!206 = !{!45, !10, i64 9104}
!207 = !{!45, !7, i64 9120}
!208 = !{!45, !10, i64 9112}
!209 = !{!45, !10, i64 10384}
!210 = !{!23, !12, i64 4}
!211 = distinct !{!211, !177}
!212 = !{!11, !12, i64 4}
!213 = !{!34, !12, i64 12}
!214 = !{!34, !12, i64 4}
!215 = !{!6, !7, i64 688}
!216 = distinct !{!216, !177}
!217 = !{!46, !12, i64 16}
!218 = !{!87, !12, i64 100}
!219 = !{!45, !13, i64 98}
!220 = !{!45, !13, i64 9552}
!221 = !{!45, !12, i64 9564}
!222 = !{!23, !12, i64 8}
!223 = !{!45, !10, i64 7428}
!224 = !{!45, !10, i64 7488}
!225 = !{!61, !10, i64 8}
!226 = !{!45, !10, i64 7480}
!227 = !{!45, !13, i64 9760}


; 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