; LLVM IR from hasseily/SuperDuperDisplay :: 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 }
%struct.ImVector.5 = 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, 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, [2 x i8], i32, i8, i8, i8, 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, float, float, %struct.ImVector.1, %struct.ImVector.1 }
%struct.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type <{ i32, i32, i16, i16, i16, i16, i16, [4 x i16], [2 x i8] }>
%struct.ImVector.0 = type { i32, i32, ptr }
%struct.ImVector.1 = type { i32, i32, ptr }
%struct.ImVec2ih = type { i16, i16 }
%struct.ImGuiStorage = type { %struct.ImVector.2 }
%struct.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImDrawList = type <{ %struct.ImVector.4, %struct.ImVector.5, %struct.ImVector.6, i32, i32, ptr, ptr, ptr, ptr, %struct.ImVector.7, %struct.ImVector.8, %struct.ImVector.9, %struct.ImDrawCmdHeader, %struct.ImDrawListSplitter, float, [4 x i8] }>
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.7 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImDrawCmdHeader = type <{ %struct.ImVec4, ptr, i32, [4 x i8] }>
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.10 }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImGuiContext = type { i8, i8, %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i8, ptr, %struct.ImVector.11, %struct.ImVector.11, i32, i32, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.12, %struct.ImGuiStorage, i32, %struct.ImVec2, i32, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, i32, i32, float, %struct.ImVec2, %struct.ImVec2, i32, i32, i32, i8, i8, float, float, i32, i32, float, i8, i8, i8, i8, i8, i8, %struct.ImVec2, ptr, i32, i32, i32, i8, i8, ptr, i32, float, double, double, double, %struct.ImBitArray, [154 x %struct.ImGuiKeyOwnerData], %struct.ImGuiKeyRoutingTable, i32, i8, i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNextItemData, %struct.ImGuiLastItemData, [4 x i8], %struct.ImGuiNextWindowData, i8, i32, %struct.ImVector.14, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector.17, %struct.ImVector.18, %struct.ImVector.19, %struct.ImVector.20, %struct.ImVector.20, %struct.ImVector.21, i32, %struct.ImVector.22, ptr, i32, i32, %struct.ImVector.17, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i8, i8, i8, i8, 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, ptr, ptr, ptr, float, float, i8, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, i32, i32, i32, %struct.ImGuiPayload, %struct.ImRect, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, %struct.ImVector.23, [16 x i8], i32, %struct.ImVector.24, ptr, i32, i32, %struct.ImVector.25, %struct.ImPool, %struct.ImVector.1, %struct.ImVector.10, ptr, %struct.ImPool.27, %struct.ImVector.29, %struct.ImVector.30, i32, i32, float, float, i32, i32, i32, float, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImGuiInputTextDeactivatedState, %struct.ImFont, i32, i32, i32, i32, float, float, i32, %struct.ImVec4, %struct.ImGuiComboPreviewData, %struct.ImRect, i8, float, float, i8, i8, float, float, float, float, i16, i16, i16, %struct.ImVector.31, %struct.ImVector, %struct.ImGuiTypingSelectState, %struct.ImGuiPlatformImeData, %struct.ImGuiPlatformImeData, i8, float, %struct.ImGuiTextBuffer, %struct.ImVector.33, %struct.ImChunkStream, %struct.ImChunkStream.34, %struct.ImVector.35, i32, [8 x ptr], i8, i32, ptr, %struct.ImGuiTextBuffer, ptr, ptr, float, i8, i32, i32, i32, i32, %struct.ImGuiTextBuffer, %struct.ImGuiTextIndex, 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.31, [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, float, float, float, float, float, float, i8, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, %struct.ImVec2, [666 x i32], [666 x i8], [16 x float], ptr, %struct.ImVec2, [5 x i8], float, float, i32, i8, i8, i8, i8, i32, [666 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, [5 x float], [5 x float], [5 x float], float, i8, i8, i8, i8, i16, %struct.ImVector.5 }
%struct.ImGuiKeyData = type { i8, float, float, float }
%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, i32, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, i8, float, float, [53 x %struct.ImVec4], float, float, float, i32, i32 }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, %struct.ImVector.9, [48 x %struct.ImVec2], float, [64 x i8], ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImVector.12 = type { i32, i32, ptr }
%struct.ImBitArray = type { [5 x i32] }
%struct.ImGuiKeyOwnerData = type <{ i32, i32, i8, i8, [2 x i8] }>
%struct.ImGuiKeyRoutingTable = type { [154 x i16], %struct.ImVector.13, %struct.ImVector.13 }
%struct.ImVector.13 = type { i32, i32, ptr }
%struct.ImGuiNextItemData = type <{ i32, i32, i64, float, i8, i8, [2 x i8] }>
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i32, i8, [3 x i8], %struct.ImRect, ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImVector.14 = type { i32, i32, ptr }
%struct.ImVector.15 = type { i32, i32, ptr }
%struct.ImVector.16 = type { i32, i32, ptr }
%struct.ImVector.18 = 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.17 = type { i32, i32, ptr }
%struct.ImGuiNavItemData = type <{ ptr, i32, i32, %struct.ImRect, i32, [4 x i8], i64, float, float, float, [4 x i8] }>
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%struct.ImVector.23 = type { i32, i32, ptr }
%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.ImGuiInputTextState = type <{ ptr, i32, i32, i32, [4 x i8], %struct.ImVector.5, %struct.ImVector.31, %struct.ImVector.31, i8, [3 x i8], i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i8, i8, i32, [4 x i8] }>
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, i32, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImStb::StbUndoState" }
%"struct.ImStb::StbUndoState" = type { [99 x %"struct.ImStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImGuiInputTextDeactivatedState = type { i32, %struct.ImVector.31 }
%struct.ImFont = type <{ %struct.ImVector.1, float, float, %struct.ImVector.5, %struct.ImVector.32, 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.32 = type { i32, i32, ptr }
%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.33 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.31 }
%struct.ImChunkStream.34 = type { %struct.ImVector.31 }
%struct.ImVector.35 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.31 }
%struct.ImGuiTextIndex = type <{ %struct.ImVector.18, i32, [4 x i8] }>
%struct.ImGuiMetricsConfig = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32 }
%struct.ImGuiIDStackTool = type { i32, i32, i32, %struct.ImVector.36, i8, float }
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.ImGuiDebugAllocInfo = type { i32, i32, i16, [6 x %struct.ImGuiDebugAllocEntry] }
%struct.ImGuiDebugAllocEntry = type { i32, i16, i16 }
%struct.ImVector.31 = type { i32, i32, ptr }
%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.4 = external hidden unnamed_addr constant [84 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.58 = 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.59 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no = external hidden unnamed_addr constant [2 x i32], align 4

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

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

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

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

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: 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

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(1021), ptr noundef, ptr noundef) #4

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

declare void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #8

; 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 @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef) #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

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

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) #4

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #4

declare void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef, ptr noundef, 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

; 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 @_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 i32, align 4
  %59 = alloca i8, align 1
  %60 = alloca ptr, align 8
  %61 = alloca i8, align 1
  %62 = alloca i8, align 1
  %63 = alloca i8, align 1
  %64 = alloca i8, align 1
  %65 = alloca i8, align 1
  %66 = alloca ptr, align 8
  %67 = alloca i8, align 1
  %68 = alloca i8, align 1
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca i32, align 4
  %72 = alloca float, align 4
  %73 = alloca float, align 4
  %74 = alloca i32, align 4
  %75 = alloca i8, align 1
  %76 = alloca i8, align 1
  %77 = alloca i32, align 4
  %78 = alloca i8, align 1
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i8, align 1
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i8, align 1
  %85 = alloca i8, align 1
  %86 = alloca i32, align 4
  %87 = alloca i8, align 1
  %88 = alloca i8, align 1
  %89 = alloca i8, align 1
  %90 = alloca i8, align 1
  %91 = alloca i8, align 1
  %92 = alloca i8, align 1
  %93 = alloca i8, align 1
  %94 = alloca i8, align 1
  %95 = alloca i8, align 1
  %96 = alloca i8, align 1
  %97 = alloca i8, align 1
  %98 = alloca i32, align 4
  %99 = alloca i32, align 4
  %100 = alloca i32, align 4
  %101 = alloca i32, align 4
  %102 = alloca ptr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca i32, align 4
  %105 = alloca ptr, align 8
  %106 = alloca i32, align 4
  %107 = alloca ptr, align 8
  %108 = alloca i32, align 4
  %109 = alloca ptr, align 8
  %110 = alloca i32, align 4
  %111 = alloca i16, align 2
  %112 = alloca %struct.ImVector.5, align 8
  %113 = alloca ptr, align 8
  %114 = alloca i32, align 4
  %115 = alloca i8, align 1
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %119 = alloca ptr, align 8
  %120 = alloca ptr, align 8
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca i8, align 1
  %125 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %126 = alloca %struct.ImVec2, align 4
  %127 = alloca %struct.ImVec2, align 4
  %128 = alloca %struct.ImVec4, align 4
  %129 = alloca %struct.ImVec2, align 4
  %130 = alloca %struct.ImVec2, align 4
  %131 = alloca i32, align 4
  %132 = alloca ptr, align 8
  %133 = alloca ptr, align 8
  %134 = alloca ptr, align 8
  %135 = alloca %struct.ImVec2, align 4
  %136 = alloca %struct.ImVec2, align 4
  %137 = alloca [2 x ptr], align 16
  %138 = alloca [2 x i32], align 4
  %139 = alloca i32, align 4
  %140 = alloca i32, align 4
  %141 = alloca ptr, align 8
  %142 = alloca %struct.ImVec2, align 4
  %143 = alloca %struct.ImVec2, align 4
  %144 = alloca %struct.ImVec2, align 4
  %145 = alloca float, align 4
  %146 = alloca float, align 4
  %147 = alloca float, align 4
  %148 = alloca %struct.ImVec2, align 4
  %149 = alloca ptr, align 8
  %150 = alloca ptr, align 8
  %151 = alloca i32, align 4
  %152 = alloca float, align 4
  %153 = alloca float, align 4
  %154 = alloca %struct.ImVec2, align 4
  %155 = alloca %struct.ImVec2, align 4
  %156 = alloca ptr, align 8
  %157 = alloca %struct.ImVec2, align 4
  %158 = alloca %struct.ImRect, align 4
  %159 = alloca %struct.ImVec2, align 4
  %160 = alloca %struct.ImVec2, align 4
  %161 = alloca %struct.ImVec2, align 4
  %162 = alloca %struct.ImVec2, align 4
  %163 = alloca %struct.ImRect, align 4
  %164 = alloca %struct.ImRect, align 4
  %165 = alloca i32, align 4
  %166 = alloca %struct.ImVec2, align 4
  %167 = alloca i8, align 1
  %168 = alloca %struct.ImVec2, align 4
  %169 = alloca %struct.ImVec2, align 4
  %170 = alloca %struct.ImVec2, align 4
  %171 = alloca %struct.ImRect, align 4
  %172 = alloca %struct.ImRect, align 4
  %173 = alloca %struct.ImVec2, align 4
  %174 = alloca %struct.ImVec2, align 4
  %175 = alloca %struct.ImVec2, align 4
  %176 = alloca i32, align 4
  %177 = alloca %struct.ImVec2, align 4
  %178 = alloca %struct.ImVec2, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store i32 %3, ptr %13, align 4, !tbaa !9
  store ptr %4, ptr %14, align 8, !tbaa !5
  store i32 %5, ptr %15, align 4, !tbaa !9
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #14
  %179 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %179, ptr %18, align 8, !tbaa !5
  %180 = load ptr, ptr %18, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.ImGuiWindow, ptr %180, i32 0, i32 38
  %182 = load i8, ptr %181, align 1, !tbaa !11, !range !40, !noundef !41
  %183 = trunc i8 %182 to i1
  br i1 %183, label %184, label %185

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

185:                                              ; preds = %8
  %186 = load ptr, ptr %12, align 8, !tbaa !5
  %187 = icmp ne ptr %186, null
  br i1 %187, label %188, label %191

188:                                              ; preds = %185
  %189 = load i32, ptr %13, align 4, !tbaa !9
  %190 = icmp sge i32 %189, 0
  br label %191

191:                                              ; preds = %188, %185
  %192 = phi i1 [ false, %185 ], [ %190, %188 ]
  br i1 %192, label %193, label %194

193:                                              ; preds = %191
  br label %196

194:                                              ; preds = %191
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.4, i32 noundef 4080, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

195:                                              ; No predecessors!
  br label %196

196:                                              ; preds = %195, %193
  %197 = load i32, ptr %15, align 4, !tbaa !9
  %198 = and i32 %197, 128
  %199 = icmp ne i32 %198, 0
  br i1 %199, label %200, label %204

200:                                              ; preds = %196
  %201 = load i32, ptr %15, align 4, !tbaa !9
  %202 = and i32 %201, 67108864
  %203 = icmp ne i32 %202, 0
  br label %204

204:                                              ; preds = %200, %196
  %205 = phi i1 [ false, %196 ], [ %203, %200 ]
  %206 = xor i1 %205, true
  br i1 %206, label %207, label %208

207:                                              ; preds = %204
  br label %210

208:                                              ; preds = %204
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.4, i32 noundef 4081, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

209:                                              ; No predecessors!
  br label %210

210:                                              ; preds = %209, %207
  %211 = load i32, ptr %15, align 4, !tbaa !9
  %212 = and i32 %211, 64
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %214, label %218

214:                                              ; preds = %210
  %215 = load i32, ptr %15, align 4, !tbaa !9
  %216 = and i32 %215, 1024
  %217 = icmp ne i32 %216, 0
  br label %218

218:                                              ; preds = %214, %210
  %219 = phi i1 [ false, %210 ], [ %217, %214 ]
  %220 = xor i1 %219, true
  br i1 %220, label %221, label %222

221:                                              ; preds = %218
  br label %224

222:                                              ; preds = %218
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.4, i32 noundef 4082, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

223:                                              ; No predecessors!
  br label %224

224:                                              ; preds = %223, %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #14
  %225 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %225, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #14
  %226 = load ptr, ptr %20, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.ImGuiContext, ptr %226, i32 0, i32 2
  store ptr %227, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #14
  %228 = load ptr, ptr %20, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.ImGuiContext, ptr %228, i32 0, i32 3
  store ptr %229, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #14
  store i8 0, ptr %23, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #14
  %230 = load i32, ptr %15, align 4, !tbaa !9
  %231 = and i32 %230, 67108864
  %232 = icmp ne i32 %231, 0
  %233 = zext i1 %232 to i8
  store i8 %233, ptr %24, align 1, !tbaa !42
  %234 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %235 = trunc i8 %234 to i1
  br i1 %235, label %236, label %237

236:                                              ; preds = %224
  call void @_ZN5ImGui10BeginGroupEv()
  br label %237

237:                                              ; preds = %236, %224
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #14
  %238 = load ptr, ptr %18, align 8, !tbaa !5
  %239 = load ptr, ptr %10, align 8, !tbaa !5
  %240 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1021) %238, ptr noundef %239, ptr noundef null)
  store i32 %240, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #14
  %241 = load ptr, ptr %10, align 8, !tbaa !5
  %242 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %241, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %242, ptr %26, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #14
  %243 = load ptr, ptr %14, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %243, i64 8, i1 false), !tbaa.struct !43
  %244 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %245 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %246 = trunc i8 %245 to i1
  br i1 %246, label %247, label %252

247:                                              ; preds = %237
  %248 = load ptr, ptr %20, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.ImGuiContext, ptr %248, i32 0, i32 5
  %250 = load float, ptr %249, align 8, !tbaa !45
  %251 = fmul float %250, 8.000000e+00
  br label %255

252:                                              ; preds = %237
  %253 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 1
  %254 = load float, ptr %253, align 4, !tbaa !104
  br label %255

255:                                              ; preds = %252, %247
  %256 = phi float [ %251, %247 ], [ %254, %252 ]
  %257 = load ptr, ptr %22, align 8, !tbaa !5
  %258 = getelementptr inbounds %struct.ImGuiStyle, ptr %257, i32 0, i32 12
  %259 = getelementptr inbounds %struct.ImVec2, ptr %258, i32 0, i32 1
  %260 = load float, ptr %259, align 4, !tbaa !105
  %261 = call float @llvm.fmuladd.f32(float %260, float 2.000000e+00, float %256)
  %262 = load <2 x float>, ptr %28, align 4
  %263 = call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %262, float noundef %244, float noundef %261)
  store <2 x float> %263, ptr %27, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #14
  %264 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %265 = load float, ptr %264, align 4, !tbaa !106
  %266 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %267 = load float, ptr %266, align 4, !tbaa !106
  %268 = fcmp ogt float %267, 0.000000e+00
  br i1 %268, label %269, label %277

269:                                              ; preds = %255
  %270 = load ptr, ptr %22, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.ImGuiStyle, ptr %270, i32 0, i32 16
  %272 = getelementptr inbounds %struct.ImVec2, ptr %271, i32 0, i32 0
  %273 = load float, ptr %272, align 4, !tbaa !107
  %274 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %275 = load float, ptr %274, align 4, !tbaa !106
  %276 = fadd float %273, %275
  br label %278

277:                                              ; preds = %255
  br label %278

278:                                              ; preds = %277, %269
  %279 = phi float [ %276, %269 ], [ 0.000000e+00, %277 ]
  %280 = fadd float %265, %279
  %281 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 1
  %282 = load float, ptr %281, align 4, !tbaa !104
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef %280, float noundef %282)
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #14
  %283 = load ptr, ptr %18, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.ImGuiWindow, ptr %283, i32 0, i32 68
  %285 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %284, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #14
  %286 = load ptr, ptr %18, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.ImGuiWindow, ptr %286, i32 0, i32 68
  %288 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %287, i32 0, i32 0
  %289 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %288, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %289, ptr %31, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %30, ptr noundef nonnull align 4 dereferenceable(8) %285, ptr noundef nonnull align 4 dereferenceable(8) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #14
  %290 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #14
  %291 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %292 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %291, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %292, ptr %33, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(8) %290, ptr noundef nonnull align 4 dereferenceable(8) %33)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #14
  %293 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %293, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 4 %27, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.start.p0(i64 76, ptr %36) #14
  call void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(76) %36)
  %294 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %295 = trunc i8 %294 to i1
  br i1 %295, label %296, label %397

296:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #14
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.ImGuiWindow, ptr %297, i32 0, i32 68
  %299 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %298, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 8 %299, i64 8, i1 false), !tbaa.struct !43
  %300 = load ptr, ptr %22, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.ImGuiStyle, ptr %300, i32 0, i32 12
  %302 = getelementptr inbounds %struct.ImVec2, ptr %301, i32 0, i32 1
  %303 = load float, ptr %302, align 4, !tbaa !105
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef %303)
  %304 = load i32, ptr %25, align 4, !tbaa !9
  %305 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef %304, ptr noundef %30, i32 noundef 1024)
  br i1 %305, label %307, label %306

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

307:                                              ; preds = %296
  %308 = load ptr, ptr %20, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.ImGuiContext, ptr %308, i32 0, i32 82
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 8 %309, i64 76, i1 false), !tbaa.struct !108
  %310 = load ptr, ptr %18, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.ImGuiWindow, ptr %310, i32 0, i32 68
  %312 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %311, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %312, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !43
  %313 = load ptr, ptr %20, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.ImGuiContext, ptr %313, i32 0, i32 102
  %315 = load i32, ptr %314, align 8, !tbaa !109
  %316 = load i32, ptr %25, align 4, !tbaa !9
  %317 = icmp eq i32 %315, %316
  br i1 %317, label %318, label %331

318:                                              ; preds = %307
  %319 = load ptr, ptr %20, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.ImGuiContext, ptr %319, i32 0, i32 105
  %321 = load i32, ptr %320, align 4, !tbaa !110
  %322 = and i32 %321, 8
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %331

324:                                              ; preds = %318
  %325 = load i32, ptr %15, align 4, !tbaa !9
  %326 = and i32 %325, 1024
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %331

328:                                              ; preds = %324
  %329 = load ptr, ptr %20, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.ImGuiContext, ptr %329, i32 0, i32 102
  store i32 0, ptr %330, align 8, !tbaa !109
  br label %331

331:                                              ; preds = %328, %324, %318, %307
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #14
  %332 = load ptr, ptr %20, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.ImGuiContext, ptr %332, i32 0, i32 102
  %334 = load i32, ptr %333, align 8, !tbaa !109
  store i32 %334, ptr %38, align 4, !tbaa !9
  %335 = load ptr, ptr %20, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImGuiContext, ptr %335, i32 0, i32 48
  %337 = load i32, ptr %336, align 4, !tbaa !111
  %338 = load i32, ptr %25, align 4, !tbaa !9
  %339 = icmp eq i32 %337, %338
  br i1 %339, label %340, label %343

340:                                              ; preds = %331
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiContext, ptr %341, i32 0, i32 102
  store i32 0, ptr %342, align 8, !tbaa !109
  br label %343

343:                                              ; preds = %340, %331
  %344 = load ptr, ptr %22, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.ImGuiStyle, ptr %344, i32 0, i32 45
  %346 = getelementptr inbounds [53 x %struct.ImVec4], ptr %345, i64 0, i64 7
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %346)
  %347 = load ptr, ptr %22, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.ImGuiStyle, ptr %347, i32 0, i32 13
  %349 = load float, ptr %348, align 4, !tbaa !112
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %349)
  %350 = load ptr, ptr %22, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImGuiStyle, ptr %350, i32 0, i32 14
  %352 = load float, ptr %351, align 4, !tbaa !113
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %352)
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #14
  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) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #14
  %353 = load ptr, ptr %10, align 8, !tbaa !5
  %354 = load i32, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #14
  %355 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %30)
  store <2 x float> %355, ptr %41, align 4
  %356 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2ii(ptr noundef %353, i32 noundef %354, ptr noundef nonnull align 4 dereferenceable(8) %41, i32 noundef 1, i32 noundef 4)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #14
  %357 = zext i1 %356 to i8
  store i8 %357, ptr %40, align 1, !tbaa !42
  %358 = load i32, 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 102
  store i32 %358, ptr %360, align 8, !tbaa !109
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  %361 = load i8, ptr %40, align 1, !tbaa !42, !range !40, !noundef !41
  %362 = trunc i8 %361 to i1
  br i1 %362, label %364, label %363

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

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

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

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

396:                                              ; preds = %394
  br label %411

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

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

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

409:                                              ; preds = %405
  br label %410

410:                                              ; preds = %409, %397
  br label %411

411:                                              ; preds = %410, %396
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #14
  %412 = load i32, ptr %25, align 4, !tbaa !9
  %413 = load ptr, ptr %20, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.ImGuiContext, ptr %413, i32 0, i32 82
  %415 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %414, i32 0, i32 1
  %416 = load i32, ptr %415, align 4, !tbaa !118
  %417 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %30, i32 noundef %412, i32 noundef %416)
  %418 = zext i1 %417 to i8
  store i8 %418, ptr %42, align 1, !tbaa !42
  %419 = load i8, ptr %42, align 1, !tbaa !42, !range !40, !noundef !41
  %420 = trunc i8 %419 to i1
  br i1 %420, label %421, label %424

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

424:                                              ; preds = %421, %411
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #14
  %425 = load i32, ptr %25, align 4, !tbaa !9
  %426 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %425)
  store ptr %426, ptr %43, align 8, !tbaa !5
  %427 = load ptr, ptr %20, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.ImGuiContext, ptr %427, i32 0, i32 82
  %429 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %428, i32 0, i32 1
  %430 = load i32, ptr %429, align 4, !tbaa !118
  %431 = and i32 %430, 128
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %436

433:                                              ; preds = %424
  %434 = load i32, ptr %15, align 4, !tbaa !9
  %435 = or i32 %434, 16384
  store i32 %435, ptr %15, align 4, !tbaa !9
  br label %436

436:                                              ; preds = %433, %424
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #14
  %437 = load i32, ptr %15, align 4, !tbaa !9
  %438 = and i32 %437, 16384
  %439 = icmp ne i32 %438, 0
  %440 = zext i1 %439 to i8
  store i8 %440, ptr %44, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #14
  %441 = load i32, ptr %15, align 4, !tbaa !9
  %442 = and i32 %441, 32768
  %443 = icmp ne i32 %442, 0
  %444 = zext i1 %443 to i8
  store i8 %444, ptr %45, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #14
  %445 = load i32, ptr %15, align 4, !tbaa !9
  %446 = and i32 %445, 65536
  %447 = icmp eq i32 %446, 0
  %448 = zext i1 %447 to i8
  store i8 %448, ptr %46, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #14
  %449 = load i32, ptr %15, align 4, !tbaa !9
  %450 = and i32 %449, 262144
  %451 = icmp ne i32 %450, 0
  %452 = zext i1 %451 to i8
  store i8 %452, ptr %47, align 1, !tbaa !42
  %453 = load i8, ptr %47, align 1, !tbaa !42, !range !40, !noundef !41
  %454 = trunc i8 %453 to i1
  br i1 %454, label %455, label %462

455:                                              ; preds = %436
  %456 = load ptr, ptr %16, align 8, !tbaa !5
  %457 = icmp ne ptr %456, null
  br i1 %457, label %458, label %459

458:                                              ; preds = %455
  br label %461

459:                                              ; preds = %455
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.4, i32 noundef 4167, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

460:                                              ; No predecessors!
  br label %461

461:                                              ; preds = %460, %458
  br label %462

462:                                              ; preds = %461, %436
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #14
  %463 = load ptr, ptr %20, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.ImGuiContext, ptr %463, i32 0, i32 48
  %465 = load i32, ptr %464, align 4, !tbaa !111
  %466 = load i32, ptr %25, align 4, !tbaa !9
  %467 = icmp ne i32 %465, %466
  br i1 %467, label %468, label %489

468:                                              ; preds = %462
  %469 = load ptr, ptr %20, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiContext, ptr %469, i32 0, i32 102
  %471 = load i32, ptr %470, align 8, !tbaa !109
  %472 = load i32, ptr %25, align 4, !tbaa !9
  %473 = icmp eq i32 %471, %472
  br i1 %473, label %474, label %487

474:                                              ; preds = %468
  %475 = load ptr, ptr %20, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.ImGuiContext, ptr %475, i32 0, i32 105
  %477 = load i32, ptr %476, align 4, !tbaa !110
  %478 = and i32 %477, 1
  %479 = icmp ne i32 %478, 0
  br i1 %479, label %485, label %480

480:                                              ; preds = %474
  %481 = load ptr, ptr %20, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.ImGuiContext, ptr %481, i32 0, i32 111
  %483 = load i32, ptr %482, align 4, !tbaa !120
  %484 = icmp eq i32 %483, 2
  br label %485

485:                                              ; preds = %480, %474
  %486 = phi i1 [ true, %474 ], [ %484, %480 ]
  br label %487

487:                                              ; preds = %485, %468
  %488 = phi i1 [ false, %468 ], [ %486, %485 ]
  br label %489

489:                                              ; preds = %487, %462
  %490 = phi i1 [ false, %462 ], [ %488, %487 ]
  %491 = zext i1 %490 to i8
  store i8 %491, ptr %48, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #14
  %492 = load i8, ptr %42, align 1, !tbaa !42, !range !40, !noundef !41
  %493 = trunc i8 %492 to i1
  br i1 %493, label %494, label %500

494:                                              ; preds = %489
  %495 = load ptr, ptr %21, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.ImGuiIO, ptr %495, i32 0, i32 74
  %497 = getelementptr inbounds [5 x i8], ptr %496, i64 0, i64 0
  %498 = load i8, ptr %497, align 8, !tbaa !42, !range !40, !noundef !41
  %499 = trunc i8 %498 to i1
  br label %500

500:                                              ; preds = %494, %489
  %501 = phi i1 [ false, %489 ], [ %499, %494 ]
  %502 = zext i1 %501 to i8
  store i8 %502, ptr %49, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #14
  %503 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %504 = trunc i8 %503 to i1
  br i1 %504, label %505, label %520

505:                                              ; preds = %500
  %506 = load ptr, ptr %43, align 8, !tbaa !5
  %507 = icmp ne ptr %506, null
  br i1 %507, label %508, label %520

508:                                              ; preds = %505
  %509 = load ptr, ptr %20, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.ImGuiContext, ptr %509, i32 0, i32 48
  %511 = load i32, ptr %510, align 4, !tbaa !111
  %512 = icmp eq i32 %511, 0
  br i1 %512, label %513, label %520

513:                                              ; preds = %508
  %514 = load ptr, ptr %20, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.ImGuiContext, ptr %514, i32 0, i32 61
  %516 = load i32, ptr %515, align 8, !tbaa !121
  %517 = load ptr, ptr %34, align 8, !tbaa !5
  %518 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %517, i32 noundef 1)
  %519 = icmp eq i32 %516, %518
  br label %520

520:                                              ; preds = %513, %508, %505, %500
  %521 = phi i1 [ false, %508 ], [ false, %505 ], [ false, %500 ], [ %519, %513 ]
  %522 = zext i1 %521 to i8
  store i8 %522, ptr %50, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #14
  %523 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %524 = trunc i8 %523 to i1
  br i1 %524, label %525, label %535

525:                                              ; preds = %520
  %526 = load ptr, ptr %43, align 8, !tbaa !5
  %527 = icmp ne ptr %526, null
  br i1 %527, label %528, label %535

528:                                              ; preds = %525
  %529 = load ptr, ptr %20, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.ImGuiContext, ptr %529, i32 0, i32 48
  %531 = load i32, ptr %530, align 4, !tbaa !111
  %532 = load ptr, ptr %34, align 8, !tbaa !5
  %533 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %532, i32 noundef 1)
  %534 = icmp eq i32 %531, %533
  br label %535

535:                                              ; preds = %528, %525, %520
  %536 = phi i1 [ false, %525 ], [ false, %520 ], [ %534, %528 ]
  %537 = zext i1 %536 to i8
  store i8 %537, ptr %51, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #14
  store i8 0, ptr %52, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #14
  store i8 0, ptr %53, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #14
  %538 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %539 = trunc i8 %538 to i1
  br i1 %539, label %540, label %545

540:                                              ; preds = %535
  %541 = load ptr, ptr %34, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.ImGuiWindow, ptr %541, i32 0, i32 25
  %543 = getelementptr inbounds %struct.ImVec2, ptr %542, i32 0, i32 1
  %544 = load float, ptr %543, align 4, !tbaa !122
  br label %546

545:                                              ; preds = %535
  br label %546

546:                                              ; preds = %545, %540
  %547 = phi float [ %544, %540 ], [ 0x47EFFFFFE0000000, %545 ]
  store float %547, ptr %54, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #14
  %548 = load ptr, ptr %43, align 8, !tbaa !5
  %549 = icmp ne ptr %548, null
  br i1 %549, label %550, label %561

550:                                              ; preds = %546
  %551 = load ptr, ptr %43, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %551, i32 0, i32 12
  %553 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %552, i32 0, i32 8
  %554 = load i8, ptr %553, align 1, !tbaa !123
  %555 = zext i8 %554 to i32
  %556 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %557 = trunc i8 %556 to i1
  %558 = xor i1 %557, true
  %559 = zext i1 %558 to i32
  %560 = icmp ne i32 %555, %559
  br label %561

561:                                              ; preds = %550, %546
  %562 = phi i1 [ false, %546 ], [ %560, %550 ]
  %563 = zext i1 %562 to i8
  store i8 %563, ptr %55, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #14
  %564 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %565 = trunc i8 %564 to i1
  br i1 %565, label %572, label %566

566:                                              ; preds = %561
  %567 = load i8, ptr %50, align 1, !tbaa !42, !range !40, !noundef !41
  %568 = trunc i8 %567 to i1
  br i1 %568, label %572, label %569

569:                                              ; preds = %566
  %570 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %571 = trunc i8 %570 to i1
  br label %572

572:                                              ; preds = %569, %566, %561
  %573 = phi i1 [ true, %566 ], [ true, %561 ], [ %571, %569 ]
  %574 = zext i1 %573 to i8
  store i8 %574, ptr %56, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #14
  %575 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %576 = trunc i8 %575 to i1
  br i1 %576, label %580, label %577

577:                                              ; preds = %572
  %578 = load i8, ptr %51, align 1, !tbaa !42, !range !40, !noundef !41
  %579 = trunc i8 %578 to i1
  br label %580

580:                                              ; preds = %577, %572
  %581 = phi i1 [ true, %572 ], [ %579, %577 ]
  %582 = zext i1 %581 to i8
  store i8 %582, ptr %57, align 1, !tbaa !42
  %583 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %584 = trunc i8 %583 to i1
  br i1 %584, label %585, label %591

585:                                              ; preds = %580
  %586 = load ptr, ptr %20, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.ImGuiContext, ptr %586, i32 0, i32 48
  %588 = load i32, ptr %587, align 4, !tbaa !111
  %589 = load i32, ptr %25, align 4, !tbaa !9
  %590 = icmp ne i32 %588, %589
  br i1 %590, label %594, label %591

591:                                              ; preds = %585, %580
  %592 = load i8, ptr %55, align 1, !tbaa !42, !range !40, !noundef !41
  %593 = trunc i8 %592 to i1
  br i1 %593, label %594, label %734

594:                                              ; preds = %591, %585
  %595 = load ptr, ptr %20, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.ImGuiContext, ptr %595, i32 0, i32 192
  store ptr %596, ptr %43, align 8, !tbaa !5
  %597 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %597)
  %598 = load ptr, ptr %43, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %598, i32 0, i32 1
  %600 = load i32, ptr %599, align 8, !tbaa !124
  call void @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef %600)
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #14
  %601 = load ptr, ptr %12, align 8, !tbaa !5
  %602 = call i64 @strlen(ptr noundef %601) #16
  %603 = trunc i64 %602 to i32
  store i32 %603, ptr %58, align 4, !tbaa !9
  %604 = load ptr, ptr %43, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %604, i32 0, i32 7
  %606 = load i32, ptr %58, align 4, !tbaa !9
  %607 = add nsw i32 %606, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %605, i32 noundef %607)
  %608 = load ptr, ptr %43, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %608, i32 0, i32 7
  %610 = getelementptr inbounds %struct.ImVector.31, ptr %609, i32 0, i32 2
  %611 = load ptr, ptr %610, align 8, !tbaa !125
  %612 = load ptr, ptr %12, align 8, !tbaa !5
  %613 = load i32, ptr %58, align 4, !tbaa !9
  %614 = add nsw i32 %613, 1
  %615 = sext i32 %614 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %611, ptr align 1 %612, i64 %615, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #14
  %616 = load ptr, ptr %43, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %616, i32 0, i32 1
  %618 = load i32, ptr %617, align 8, !tbaa !124
  %619 = load i32, ptr %25, align 4, !tbaa !9
  %620 = icmp eq i32 %618, %619
  br i1 %620, label %621, label %625

621:                                              ; preds = %594
  %622 = load i8, ptr %55, align 1, !tbaa !42, !range !40, !noundef !41
  %623 = trunc i8 %622 to i1
  %624 = xor i1 %623, true
  br label %625

625:                                              ; preds = %621, %594
  %626 = phi i1 [ false, %594 ], [ %624, %621 ]
  %627 = zext i1 %626 to i8
  store i8 %627, ptr %59, align 1, !tbaa !42
  %628 = load i8, ptr %59, align 1, !tbaa !42, !range !40, !noundef !41
  %629 = trunc i8 %628 to i1
  br i1 %629, label %630, label %652

630:                                              ; preds = %625
  %631 = load ptr, ptr %43, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %631, i32 0, i32 3
  %633 = load i32, ptr %632, align 8, !tbaa !126
  %634 = load i32, ptr %58, align 4, !tbaa !9
  %635 = icmp ne i32 %633, %634
  br i1 %635, label %651, label %636

636:                                              ; preds = %630
  %637 = load ptr, ptr %43, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %637, i32 0, i32 8
  %639 = load i8, ptr %638, align 8, !tbaa !127, !range !40, !noundef !41
  %640 = trunc i8 %639 to i1
  br i1 %640, label %641, label %652

641:                                              ; preds = %636
  %642 = load ptr, ptr %43, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %642, i32 0, i32 6
  %644 = getelementptr inbounds %struct.ImVector.31, ptr %643, i32 0, i32 2
  %645 = load ptr, ptr %644, align 8, !tbaa !128
  %646 = load ptr, ptr %12, align 8, !tbaa !5
  %647 = load i32, ptr %58, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = call i32 @strncmp(ptr noundef %645, ptr noundef %646, i64 noundef %648) #16
  %650 = icmp ne i32 %649, 0
  br i1 %650, label %651, label %652

651:                                              ; preds = %641, %630
  store i8 0, ptr %59, align 1, !tbaa !42
  br label %652

652:                                              ; preds = %651, %641, %636, %625
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #14
  store ptr null, ptr %60, align 8, !tbaa !5
  %653 = load i32, ptr %25, align 4, !tbaa !9
  %654 = load ptr, ptr %43, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %654, i32 0, i32 1
  store i32 %653, ptr %655, align 8, !tbaa !124
  %656 = load ptr, ptr %43, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %656, i32 0, i32 5
  %658 = load i32, ptr %13, align 4, !tbaa !9
  %659 = add nsw i32 %658, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %657, i32 noundef %659)
  %660 = load ptr, ptr %43, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %660, i32 0, i32 6
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %661, i32 noundef 0)
  %662 = load ptr, ptr %43, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %662, i32 0, i32 8
  store i8 0, ptr %663, align 8, !tbaa !127
  %664 = load ptr, ptr %43, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %664, i32 0, i32 5
  %666 = getelementptr inbounds %struct.ImVector.5, ptr %665, i32 0, i32 2
  %667 = load ptr, ptr %666, align 8, !tbaa !129
  %668 = load i32, ptr %13, align 4, !tbaa !9
  %669 = load ptr, ptr %12, align 8, !tbaa !5
  %670 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %667, i32 noundef %668, ptr noundef %669, ptr noundef null, ptr noundef %60)
  %671 = load ptr, ptr %43, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %671, i32 0, i32 2
  store i32 %670, ptr %672, align 4, !tbaa !130
  %673 = load ptr, ptr %60, align 8, !tbaa !5
  %674 = load ptr, ptr %12, align 8, !tbaa !5
  %675 = ptrtoint ptr %673 to i64
  %676 = ptrtoint ptr %674 to i64
  %677 = sub i64 %675, %676
  %678 = trunc i64 %677 to i32
  %679 = load ptr, ptr %43, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %679, i32 0, i32 3
  store i32 %678, ptr %680, align 8, !tbaa !126
  %681 = load i8, ptr %59, align 1, !tbaa !42, !range !40, !noundef !41
  %682 = trunc i8 %681 to i1
  br i1 %682, label %683, label %685

683:                                              ; preds = %652
  %684 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %684)
  br label %694

685:                                              ; preds = %652
  %686 = load ptr, ptr %43, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %686, i32 0, i32 11
  store float 0.000000e+00, ptr %687, align 8, !tbaa !131
  %688 = load ptr, ptr %43, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %688, i32 0, i32 12
  %690 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %691 = trunc i8 %690 to i1
  %692 = xor i1 %691, true
  %693 = zext i1 %692 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %689, i32 noundef %693)
  br label %694

694:                                              ; preds = %685, %683
  %695 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %696 = trunc i8 %695 to i1
  br i1 %696, label %725, label %697

697:                                              ; preds = %694
  %698 = load i32, ptr %15, align 4, !tbaa !9
  %699 = and i32 %698, 16
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %702

701:                                              ; preds = %697
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %702

702:                                              ; preds = %701, %697
  %703 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %704 = trunc i8 %703 to i1
  br i1 %704, label %705, label %715

705:                                              ; preds = %702
  %706 = load i8, ptr %59, align 1, !tbaa !42, !range !40, !noundef !41
  %707 = trunc i8 %706 to i1
  br i1 %707, label %708, label %714

708:                                              ; preds = %705
  %709 = load ptr, ptr %20, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ImGuiContext, ptr %709, i32 0, i32 105
  %711 = load i32, ptr %710, align 4, !tbaa !110
  %712 = and i32 %711, 4
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %715, label %714

714:                                              ; preds = %708, %705
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %715

715:                                              ; preds = %714, %708, %702
  %716 = load i8, ptr %49, align 1, !tbaa !42, !range !40, !noundef !41
  %717 = trunc i8 %716 to i1
  br i1 %717, label %718, label %724

718:                                              ; preds = %715
  %719 = load ptr, ptr %21, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.ImGuiIO, ptr %719, i32 0, i32 64
  %721 = load i8, ptr %720, align 4, !tbaa !132, !range !40, !noundef !41
  %722 = trunc i8 %721 to i1
  br i1 %722, label %723, label %724

723:                                              ; preds = %718
  store i8 1, ptr %53, align 1, !tbaa !42
  br label %724

724:                                              ; preds = %723, %718, %715
  br label %725

725:                                              ; preds = %724, %694
  %726 = load i32, ptr %15, align 4, !tbaa !9
  %727 = and i32 %726, 8192
  %728 = icmp ne i32 %727, 0
  br i1 %728, label %729, label %733

729:                                              ; preds = %725
  %730 = load ptr, ptr %43, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %730, i32 0, i32 12
  %732 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %731, i32 0, i32 3
  store i8 1, ptr %732, align 4, !tbaa !133
  br label %733

733:                                              ; preds = %729, %725
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #14
  br label %734

734:                                              ; preds = %733, %591
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #14
  %735 = load ptr, ptr %21, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.ImGuiIO, ptr %735, i32 0, i32 14
  %737 = load i8, ptr %736, align 1, !tbaa !134, !range !40, !noundef !41
  %738 = trunc i8 %737 to i1
  %739 = zext i1 %738 to i8
  store i8 %739, ptr %61, align 1, !tbaa !42
  %740 = load ptr, ptr %20, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.ImGuiContext, ptr %740, i32 0, i32 48
  %742 = load i32, ptr %741, align 4, !tbaa !111
  %743 = load i32, ptr %25, align 4, !tbaa !9
  %744 = icmp ne i32 %742, %743
  br i1 %744, label %745, label %768

745:                                              ; preds = %734
  %746 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %747 = trunc i8 %746 to i1
  br i1 %747, label %748, label %768

748:                                              ; preds = %745
  %749 = load ptr, ptr %43, align 8, !tbaa !5
  %750 = icmp ne ptr %749, null
  br i1 %750, label %751, label %757

751:                                              ; preds = %748
  %752 = load ptr, ptr %43, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %752, i32 0, i32 1
  %754 = load i32, ptr %753, align 8, !tbaa !124
  %755 = load i32, ptr %25, align 4, !tbaa !9
  %756 = icmp eq i32 %754, %755
  br label %757

757:                                              ; preds = %751, %748
  %758 = phi i1 [ false, %748 ], [ %756, %751 ]
  br i1 %758, label %759, label %760

759:                                              ; preds = %757
  br label %762

760:                                              ; preds = %757
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.4, i32 noundef 4241, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

761:                                              ; No predecessors!
  br label %762

762:                                              ; preds = %761, %759
  %763 = load i32, ptr %25, align 4, !tbaa !9
  %764 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %763, ptr noundef %764)
  %765 = load i32, ptr %25, align 4, !tbaa !9
  %766 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %765, ptr noundef %766)
  %767 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef %767, i32 noundef 0)
  br label %768

768:                                              ; preds = %762, %745, %734
  %769 = load ptr, ptr %20, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.ImGuiContext, ptr %769, i32 0, i32 48
  %771 = load i32, ptr %770, align 4, !tbaa !111
  %772 = load i32, ptr %25, align 4, !tbaa !9
  %773 = icmp eq i32 %771, %772
  br i1 %773, label %774, label %816

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

777:                                              ; preds = %774
  %778 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 655, i32 noundef %778, i32 noundef 0)
  br label %779

779:                                              ; preds = %777, %774
  %780 = load ptr, ptr %20, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.ImGuiContext, ptr %780, i32 0, i32 73
  %782 = load i32, ptr %781, align 8, !tbaa !135
  %783 = or i32 %782, 3
  store i32 %783, ptr %781, align 8, !tbaa !135
  %784 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %785 = trunc i8 %784 to i1
  br i1 %785, label %790, label %786

786:                                              ; preds = %779
  %787 = load i32, ptr %15, align 4, !tbaa !9
  %788 = and i32 %787, 128
  %789 = icmp ne i32 %788, 0
  br i1 %789, label %790, label %795

790:                                              ; preds = %786, %779
  %791 = load ptr, ptr %20, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.ImGuiContext, ptr %791, i32 0, i32 73
  %793 = load i32, ptr %792, align 8, !tbaa !135
  %794 = or i32 %793, 12
  store i32 %794, ptr %792, align 8, !tbaa !135
  br label %795

795:                                              ; preds = %790, %786
  %796 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 519, i32 noundef %796, i32 noundef 0)
  %797 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 520, i32 noundef %797, i32 noundef 0)
  %798 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %799 = trunc i8 %798 to i1
  br i1 %799, label %800, label %803

800:                                              ; preds = %795
  %801 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 517, i32 noundef %801, i32 noundef 0)
  %802 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 518, i32 noundef %802, i32 noundef 0)
  br label %803

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

806:                                              ; preds = %803
  %807 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 16384, i32 noundef %807, i32 noundef 0)
  br label %808

808:                                              ; preds = %806, %803
  %809 = load i32, ptr %15, align 4, !tbaa !9
  %810 = and i32 %809, 1088
  %811 = icmp ne i32 %810, 0
  br i1 %811, label %812, label %815

812:                                              ; preds = %808
  %813 = load i32, ptr %25, align 4, !tbaa !9
  %814 = call noundef zeroext i1 @_ZN5ImGui18SetShortcutRoutingEiji(i32 noundef 512, i32 noundef %813, i32 noundef 0)
  br label %815

815:                                              ; preds = %812, %808
  br label %816

816:                                              ; preds = %815, %768
  %817 = load ptr, ptr %20, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.ImGuiContext, ptr %817, i32 0, i32 48
  %819 = load i32, ptr %818, align 4, !tbaa !111
  %820 = load i32, ptr %25, align 4, !tbaa !9
  %821 = icmp eq i32 %819, %820
  br i1 %821, label %822, label %826

822:                                              ; preds = %816
  %823 = load ptr, ptr %43, align 8, !tbaa !5
  %824 = icmp eq ptr %823, null
  br i1 %824, label %825, label %826

825:                                              ; preds = %822
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %826

826:                                              ; preds = %825, %822, %816
  %827 = load ptr, ptr %20, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ImGuiContext, ptr %827, i32 0, i32 48
  %829 = load i32, ptr %828, align 4, !tbaa !111
  %830 = load i32, ptr %25, align 4, !tbaa !9
  %831 = icmp eq i32 %829, %830
  br i1 %831, label %832, label %845

832:                                              ; preds = %826
  %833 = load ptr, ptr %21, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.ImGuiIO, ptr %833, i32 0, i32 74
  %835 = getelementptr inbounds [5 x i8], ptr %834, i64 0, i64 0
  %836 = load i8, ptr %835, align 8, !tbaa !42, !range !40, !noundef !41
  %837 = trunc i8 %836 to i1
  br i1 %837, label %838, label %845

838:                                              ; preds = %832
  %839 = load i8, ptr %57, align 1, !tbaa !42, !range !40, !noundef !41
  %840 = trunc i8 %839 to i1
  br i1 %840, label %845, label %841

841:                                              ; preds = %838
  %842 = load i8, ptr %56, align 1, !tbaa !42, !range !40, !noundef !41
  %843 = trunc i8 %842 to i1
  br i1 %843, label %845, label %844

844:                                              ; preds = %841
  store i8 1, ptr %52, align 1, !tbaa !42
  br label %845

845:                                              ; preds = %844, %841, %838, %832, %826
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #14
  %846 = load ptr, ptr %20, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.ImGuiContext, ptr %846, i32 0, i32 48
  %848 = load i32, ptr %847, align 4, !tbaa !111
  %849 = load i32, ptr %25, align 4, !tbaa !9
  %850 = icmp eq i32 %848, %849
  br i1 %850, label %859, label %851

851:                                              ; preds = %845
  %852 = load ptr, ptr %43, align 8, !tbaa !5
  %853 = icmp ne ptr %852, null
  br i1 %853, label %854, label %857

854:                                              ; preds = %851
  %855 = load i8, ptr %51, align 1, !tbaa !42, !range !40, !noundef !41
  %856 = trunc i8 %855 to i1
  br label %857

857:                                              ; preds = %854, %851
  %858 = phi i1 [ false, %851 ], [ %856, %854 ]
  br label %859

859:                                              ; preds = %857, %845
  %860 = phi i1 [ true, %845 ], [ %858, %857 ]
  %861 = zext i1 %860 to i8
  store i8 %861, ptr %62, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %862 = load ptr, ptr %43, align 8, !tbaa !5
  %863 = icmp ne ptr %862, null
  br i1 %863, label %864, label %873

864:                                              ; preds = %859
  %865 = load ptr, ptr %43, align 8, !tbaa !5
  %866 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %865)
  br i1 %866, label %870, label %867

867:                                              ; preds = %864
  %868 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %869 = trunc i8 %868 to i1
  br i1 %869, label %870, label %873

870:                                              ; preds = %867, %864
  %871 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %872 = trunc i8 %871 to i1
  br label %873

873:                                              ; preds = %870, %867, %859
  %874 = phi i1 [ false, %867 ], [ false, %859 ], [ %872, %870 ]
  %875 = zext i1 %874 to i8
  store i8 %875, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #14
  store i8 0, ptr %64, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #14
  store i8 0, ptr %65, align 1, !tbaa !42
  %876 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %877 = trunc i8 %876 to i1
  br i1 %877, label %878, label %922

878:                                              ; preds = %873
  %879 = load ptr, ptr %43, align 8, !tbaa !5
  %880 = icmp ne ptr %879, null
  br i1 %880, label %881, label %922

881:                                              ; preds = %878
  %882 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %883 = trunc i8 %882 to i1
  br i1 %883, label %887, label %884

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

887:                                              ; preds = %884, %881
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #14
  store ptr null, ptr %66, align 8, !tbaa !5
  %888 = load ptr, ptr %43, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %888, i32 0, i32 5
  %890 = load i32, ptr %13, align 4, !tbaa !9
  %891 = add nsw i32 %890, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %889, i32 noundef %891)
  %892 = load ptr, ptr %43, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %892, i32 0, i32 5
  %894 = getelementptr inbounds %struct.ImVector.5, ptr %893, i32 0, i32 2
  %895 = load ptr, ptr %894, align 8, !tbaa !129
  %896 = load ptr, ptr %43, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %896, i32 0, i32 5
  %898 = getelementptr inbounds %struct.ImVector.5, ptr %897, i32 0, i32 0
  %899 = load i32, ptr %898, align 8, !tbaa !136
  %900 = load ptr, ptr %12, align 8, !tbaa !5
  %901 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %895, i32 noundef %899, ptr noundef %900, ptr noundef null, ptr noundef %66)
  %902 = load ptr, ptr %43, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %902, i32 0, i32 2
  store i32 %901, ptr %903, align 4, !tbaa !130
  %904 = load ptr, ptr %66, align 8, !tbaa !5
  %905 = load ptr, ptr %12, align 8, !tbaa !5
  %906 = ptrtoint ptr %904 to i64
  %907 = ptrtoint ptr %905 to i64
  %908 = sub i64 %906, %907
  %909 = trunc i64 %908 to i32
  %910 = load ptr, ptr %43, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %910, i32 0, i32 3
  store i32 %909, ptr %911, align 8, !tbaa !126
  %912 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %912)
  %913 = load ptr, ptr %43, align 8, !tbaa !5
  %914 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %913)
  %915 = zext i1 %914 to i32
  %916 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %917 = trunc i8 %916 to i1
  %918 = zext i1 %917 to i32
  %919 = and i32 %918, %915
  %920 = icmp ne i32 %919, 0
  %921 = zext i1 %920 to i8
  store i8 %921, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #14
  br label %922

922:                                              ; preds = %887, %884, %878, %873
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #14
  %923 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %924 = trunc i8 %923 to i1
  br i1 %924, label %934, label %925

925:                                              ; preds = %922
  %926 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %927 = trunc i8 %926 to i1
  br i1 %927, label %934, label %928

928:                                              ; preds = %925
  %929 = load ptr, ptr %20, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.ImGuiContext, ptr %929, i32 0, i32 48
  %931 = load i32, ptr %930, align 4, !tbaa !111
  %932 = load i32, ptr %25, align 4, !tbaa !9
  %933 = icmp eq i32 %931, %932
  br i1 %933, label %934, label %945

934:                                              ; preds = %928, %925, %922
  %935 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %936 = trunc i8 %935 to i1
  br i1 %936, label %945, label %937

937:                                              ; preds = %934
  %938 = load ptr, ptr %43, align 8, !tbaa !5
  %939 = icmp ne ptr %938, null
  br i1 %939, label %940, label %945

940:                                              ; preds = %937
  %941 = load ptr, ptr %43, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %941, i32 0, i32 8
  %943 = load i8, ptr %942, align 8, !tbaa !127, !range !40, !noundef !41
  %944 = trunc i8 %943 to i1
  br label %945

945:                                              ; preds = %940, %937, %934, %928
  %946 = phi i1 [ false, %937 ], [ false, %934 ], [ false, %928 ], [ %944, %940 ]
  %947 = zext i1 %946 to i8
  store i8 %947, ptr %67, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #14
  %948 = load ptr, ptr %11, align 8, !tbaa !5
  %949 = icmp ne ptr %948, null
  br i1 %949, label %950, label %966

950:                                              ; preds = %945
  %951 = load i8, ptr %67, align 1, !tbaa !42, !range !40, !noundef !41
  %952 = trunc i8 %951 to i1
  br i1 %952, label %953, label %958

953:                                              ; preds = %950
  %954 = load ptr, ptr %43, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %954, i32 0, i32 6
  %956 = getelementptr inbounds %struct.ImVector.31, ptr %955, i32 0, i32 2
  %957 = load ptr, ptr %956, align 8, !tbaa !128
  br label %960

958:                                              ; preds = %950
  %959 = load ptr, ptr %12, align 8, !tbaa !5
  br label %960

960:                                              ; preds = %958, %953
  %961 = phi ptr [ %957, %953 ], [ %959, %958 ]
  %962 = getelementptr inbounds i8, ptr %961, i64 0
  %963 = load i8, ptr %962, align 1, !tbaa !137
  %964 = sext i8 %963 to i32
  %965 = icmp eq i32 %964, 0
  br label %966

966:                                              ; preds = %960, %945
  %967 = phi i1 [ false, %945 ], [ %965, %960 ]
  %968 = zext i1 %967 to i8
  store i8 %968, ptr %68, align 1, !tbaa !42
  %969 = load i8, ptr %45, align 1, !tbaa !42, !range !40, !noundef !41
  %970 = trunc i8 %969 to i1
  br i1 %970, label %971, label %1042

971:                                              ; preds = %966
  %972 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %973 = trunc i8 %972 to i1
  br i1 %973, label %1042, label %974

974:                                              ; preds = %971
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #14
  %975 = load ptr, ptr %20, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.ImGuiContext, ptr %975, i32 0, i32 4
  %977 = load ptr, ptr %976, align 8, !tbaa !138
  %978 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118) %977, i16 noundef zeroext 42)
  store ptr %978, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #14
  %979 = load ptr, ptr %20, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.ImGuiContext, ptr %979, i32 0, i32 194
  store ptr %980, ptr %70, align 8, !tbaa !5
  %981 = load ptr, ptr %20, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.ImGuiContext, ptr %981, i32 0, i32 4
  %983 = load ptr, ptr %982, align 8, !tbaa !138
  %984 = getelementptr inbounds %struct.ImFont, ptr %983, i32 0, i32 2
  %985 = load float, ptr %984, align 4, !tbaa !139
  %986 = load ptr, ptr %70, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImFont, ptr %986, i32 0, i32 2
  store float %985, ptr %987, align 4, !tbaa !139
  %988 = load ptr, ptr %20, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.ImGuiContext, ptr %988, i32 0, i32 4
  %990 = load ptr, ptr %989, align 8, !tbaa !138
  %991 = getelementptr inbounds %struct.ImFont, ptr %990, i32 0, i32 16
  %992 = load float, ptr %991, align 4, !tbaa !140
  %993 = load ptr, ptr %70, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.ImFont, ptr %993, i32 0, i32 16
  store float %992, ptr %994, align 4, !tbaa !140
  %995 = load ptr, ptr %20, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.ImGuiContext, ptr %995, i32 0, i32 4
  %997 = load ptr, ptr %996, align 8, !tbaa !138
  %998 = getelementptr inbounds %struct.ImFont, ptr %997, i32 0, i32 17
  %999 = load float, ptr %998, align 8, !tbaa !141
  %1000 = load ptr, ptr %70, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.ImFont, ptr %1000, i32 0, i32 17
  store float %999, ptr %1001, align 8, !tbaa !141
  %1002 = load ptr, ptr %20, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.ImGuiContext, ptr %1002, i32 0, i32 4
  %1004 = load ptr, ptr %1003, align 8, !tbaa !138
  %1005 = getelementptr inbounds %struct.ImFont, ptr %1004, i32 0, i32 18
  %1006 = load float, ptr %1005, align 4, !tbaa !142
  %1007 = load ptr, ptr %70, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.ImFont, ptr %1007, i32 0, i32 18
  store float %1006, ptr %1008, align 4, !tbaa !142
  %1009 = load ptr, ptr %20, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.ImGuiContext, ptr %1009, i32 0, i32 4
  %1011 = load ptr, ptr %1010, align 8, !tbaa !138
  %1012 = getelementptr inbounds %struct.ImFont, ptr %1011, i32 0, i32 6
  %1013 = load ptr, ptr %1012, align 8, !tbaa !143
  %1014 = load ptr, ptr %70, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.ImFont, ptr %1014, i32 0, i32 6
  store ptr %1013, ptr %1015, align 8, !tbaa !143
  %1016 = load ptr, ptr %69, align 8, !tbaa !5
  %1017 = load ptr, ptr %70, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.ImFont, ptr %1017, i32 0, i32 5
  store ptr %1016, ptr %1018, align 8, !tbaa !144
  %1019 = load ptr, ptr %69, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.ImFontGlyph, ptr %1019, i32 0, i32 1
  %1021 = load float, ptr %1020, align 4, !tbaa !145
  %1022 = load ptr, ptr %70, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.ImFont, ptr %1022, i32 0, i32 1
  store float %1021, ptr %1023, align 8, !tbaa !147
  %1024 = load ptr, ptr %70, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.ImFont, ptr %1024, i32 0, i32 4
  %1026 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1025)
  br i1 %1026, label %1027, label %1035

1027:                                             ; preds = %974
  %1028 = load ptr, ptr %70, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.ImFont, ptr %1028, i32 0, i32 0
  %1030 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1029)
  br i1 %1030, label %1031, label %1035

1031:                                             ; preds = %1027
  %1032 = load ptr, ptr %70, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.ImFont, ptr %1032, i32 0, i32 3
  %1034 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %1033)
  br label %1035

1035:                                             ; preds = %1031, %1027, %974
  %1036 = phi i1 [ false, %1027 ], [ false, %974 ], [ %1034, %1031 ]
  br i1 %1036, label %1037, label %1038

1037:                                             ; preds = %1035
  br label %1040

1038:                                             ; preds = %1035
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.4, i32 noundef 4309, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1039:                                             ; No predecessors!
  br label %1040

1040:                                             ; preds = %1039, %1037
  %1041 = load ptr, ptr %70, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %1041)
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #14
  br label %1042

1042:                                             ; preds = %1040, %971, %966
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #14
  store i32 0, ptr %71, align 4, !tbaa !9
  %1043 = load ptr, ptr %20, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.ImGuiContext, ptr %1043, i32 0, i32 48
  %1045 = load i32, ptr %1044, align 4, !tbaa !111
  %1046 = load i32, ptr %25, align 4, !tbaa !9
  %1047 = icmp eq i32 %1045, %1046
  br i1 %1047, label %1048, label %1431

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

1051:                                             ; preds = %1048
  br label %1054

1052:                                             ; preds = %1048
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.4, i32 noundef 4317, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1053:                                             ; No predecessors!
  br label %1054

1054:                                             ; preds = %1053, %1051
  %1055 = load ptr, ptr %43, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1055, i32 0, i32 3
  %1057 = load i32, ptr %1056, align 8, !tbaa !126
  store i32 %1057, ptr %71, align 4, !tbaa !9
  %1058 = load ptr, ptr %43, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1058, i32 0, i32 16
  store i8 0, ptr %1059, align 2, !tbaa !148
  %1060 = load i32, ptr %13, align 4, !tbaa !9
  %1061 = load ptr, ptr %43, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1061, i32 0, i32 10
  store i32 %1060, ptr %1062, align 4, !tbaa !149
  %1063 = load i32, ptr %15, align 4, !tbaa !9
  %1064 = load ptr, ptr %43, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1064, i32 0, i32 18
  store i32 %1063, ptr %1065, align 8, !tbaa !150
  %1066 = load ptr, ptr %21, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.ImGuiIO, ptr %1066, i32 0, i32 60
  %1068 = getelementptr inbounds [5 x i8], ptr %1067, i64 0, i64 0
  %1069 = load i8, ptr %1068, align 8, !tbaa !42, !range !40, !noundef !41
  %1070 = trunc i8 %1069 to i1
  %1071 = xor i1 %1070, true
  %1072 = load ptr, ptr %20, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.ImGuiContext, ptr %1072, i32 0, i32 52
  %1074 = zext i1 %1071 to i8
  store i8 %1074, ptr %1073, align 1, !tbaa !151
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #14
  %1075 = load ptr, ptr %21, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ImGuiIO, ptr %1075, i32 0, i32 59
  %1077 = getelementptr inbounds %struct.ImVec2, ptr %1076, i32 0, i32 0
  %1078 = load float, ptr %1077, align 8, !tbaa !152
  %1079 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %1080 = getelementptr inbounds %struct.ImVec2, ptr %1079, i32 0, i32 0
  %1081 = load float, ptr %1080, align 4, !tbaa !153
  %1082 = fsub float %1078, %1081
  %1083 = load ptr, ptr %22, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.ImGuiStyle, ptr %1083, i32 0, i32 12
  %1085 = getelementptr inbounds %struct.ImVec2, ptr %1084, i32 0, i32 0
  %1086 = load float, ptr %1085, align 4, !tbaa !154
  %1087 = fsub float %1082, %1086
  %1088 = load ptr, ptr %43, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1088, i32 0, i32 11
  %1090 = load float, ptr %1089, align 8, !tbaa !131
  %1091 = fadd float %1087, %1090
  store float %1091, ptr %72, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #14
  %1092 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1093 = trunc i8 %1092 to i1
  br i1 %1093, label %1094, label %1105

1094:                                             ; preds = %1054
  %1095 = load ptr, ptr %21, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.ImGuiIO, ptr %1095, i32 0, i32 59
  %1097 = getelementptr inbounds %struct.ImVec2, ptr %1096, i32 0, i32 1
  %1098 = load float, ptr %1097, align 4, !tbaa !155
  %1099 = load ptr, ptr %34, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.ImGuiWindow, ptr %1099, i32 0, i32 68
  %1101 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1100, i32 0, i32 0
  %1102 = getelementptr inbounds %struct.ImVec2, ptr %1101, i32 0, i32 1
  %1103 = load float, ptr %1102, align 4, !tbaa !156
  %1104 = fsub float %1098, %1103
  br label %1110

1105:                                             ; preds = %1054
  %1106 = load ptr, ptr %20, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.ImGuiContext, ptr %1106, i32 0, i32 5
  %1108 = load float, ptr %1107, align 8, !tbaa !45
  %1109 = fmul float %1108, 5.000000e-01
  br label %1110

1110:                                             ; preds = %1105, %1094
  %1111 = phi float [ %1104, %1094 ], [ %1109, %1105 ]
  store float %1111, ptr %73, align 4, !tbaa !44
  %1112 = load i8, ptr %53, align 1, !tbaa !42, !range !40, !noundef !41
  %1113 = trunc i8 %1112 to i1
  br i1 %1113, label %1114, label %1118

1114:                                             ; preds = %1110
  %1115 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1115)
  %1116 = load ptr, ptr %43, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1116, i32 0, i32 15
  store i8 1, ptr %1117, align 1, !tbaa !157
  br label %1320

1118:                                             ; preds = %1110
  %1119 = load i8, ptr %42, align 1, !tbaa !42, !range !40, !noundef !41
  %1120 = trunc i8 %1119 to i1
  br i1 %1120, label %1121, label %1251

1121:                                             ; preds = %1118
  %1122 = load ptr, ptr %21, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.ImGuiIO, ptr %1122, i32 0, i32 76
  %1124 = getelementptr inbounds [5 x i16], ptr %1123, i64 0, i64 0
  %1125 = load i16, ptr %1124, align 2, !tbaa !158
  %1126 = zext i16 %1125 to i32
  %1127 = icmp sge i32 %1126, 2
  br i1 %1127, label %1128, label %1251

1128:                                             ; preds = %1121
  %1129 = load ptr, ptr %21, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.ImGuiIO, ptr %1129, i32 0, i32 65
  %1131 = load i8, ptr %1130, align 1, !tbaa !159, !range !40, !noundef !41
  %1132 = trunc i8 %1131 to i1
  br i1 %1132, label %1251, label %1133

1133:                                             ; preds = %1128
  %1134 = load ptr, ptr %43, align 8, !tbaa !5
  %1135 = load ptr, ptr %43, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1135, i32 0, i32 12
  %1137 = load float, ptr %72, align 4, !tbaa !44
  %1138 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1134, ptr noundef %1136, float noundef %1137, float noundef %1138)
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #14
  %1139 = load ptr, ptr %21, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.ImGuiIO, ptr %1139, i32 0, i32 76
  %1141 = getelementptr inbounds [5 x i16], ptr %1140, i64 0, i64 0
  %1142 = load i16, ptr %1141, align 2, !tbaa !158
  %1143 = zext i16 %1142 to i32
  %1144 = sub nsw i32 %1143, 2
  store i32 %1144, ptr %74, align 4, !tbaa !9
  %1145 = load i32, ptr %74, align 4, !tbaa !9
  %1146 = srem i32 %1145, 2
  %1147 = icmp eq i32 %1146, 0
  br i1 %1147, label %1148, label %1214

1148:                                             ; preds = %1133
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #14
  %1149 = load ptr, ptr %43, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1149, i32 0, i32 12
  %1151 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1150, i32 0, i32 0
  %1152 = load i32, ptr %1151, align 4, !tbaa !160
  %1153 = icmp eq i32 %1152, 0
  br i1 %1153, label %1164, label %1154

1154:                                             ; preds = %1148
  %1155 = load ptr, ptr %43, align 8, !tbaa !5
  %1156 = load ptr, ptr %43, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1156, i32 0, i32 12
  %1158 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1157, i32 0, i32 0
  %1159 = load i32, ptr %1158, align 4, !tbaa !160
  %1160 = sub nsw i32 %1159, 1
  %1161 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1155, i32 noundef %1160)
  %1162 = zext i16 %1161 to i32
  %1163 = icmp eq i32 %1162, 10
  br label %1164

1164:                                             ; preds = %1154, %1148
  %1165 = phi i1 [ true, %1148 ], [ %1163, %1154 ]
  %1166 = zext i1 %1165 to i8
  store i8 %1166, ptr %75, align 1, !tbaa !42
  %1167 = load ptr, ptr %43, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1167, i32 0, i32 12
  %1169 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1168, i32 0, i32 1
  %1170 = load i32, ptr %1169, align 4, !tbaa !161
  %1171 = load ptr, ptr %43, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1171, i32 0, i32 12
  %1173 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1172, i32 0, i32 2
  %1174 = load i32, ptr %1173, align 4, !tbaa !162
  %1175 = icmp ne i32 %1170, %1174
  br i1 %1175, label %1179, label %1176

1176:                                             ; preds = %1164
  %1177 = load i8, ptr %75, align 1, !tbaa !42, !range !40, !noundef !41
  %1178 = trunc i8 %1177 to i1
  br i1 %1178, label %1181, label %1179

1179:                                             ; preds = %1176, %1164
  %1180 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1180, i32 noundef 2097164)
  br label %1181

1181:                                             ; preds = %1179, %1176
  %1182 = load ptr, ptr %43, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1182, i32 0, i32 12
  %1184 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1183, i32 0, i32 1
  %1185 = load i32, ptr %1184, align 4, !tbaa !161
  %1186 = load ptr, ptr %43, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1186, i32 0, i32 12
  %1188 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1187, i32 0, i32 2
  %1189 = load i32, ptr %1188, align 4, !tbaa !162
  %1190 = icmp ne i32 %1185, %1189
  br i1 %1190, label %1194, label %1191

1191:                                             ; preds = %1181
  %1192 = load ptr, ptr %43, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1192, i32 0, i32 12
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef %1193)
  br label %1194

1194:                                             ; preds = %1191, %1181
  %1195 = load ptr, ptr %43, align 8, !tbaa !5
  %1196 = load ptr, ptr %43, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1196, i32 0, i32 12
  %1198 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1197, i32 0, i32 0
  %1199 = load i32, ptr %1198, align 4, !tbaa !160
  %1200 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef %1195, i32 noundef %1199)
  %1201 = load ptr, ptr %43, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1201, i32 0, i32 12
  %1203 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1202, i32 0, i32 0
  store i32 %1200, ptr %1203, align 4, !tbaa !160
  %1204 = load ptr, ptr %43, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1204, i32 0, i32 12
  %1206 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1205, i32 0, i32 0
  %1207 = load i32, ptr %1206, align 4, !tbaa !160
  %1208 = load ptr, ptr %43, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1208, i32 0, i32 12
  %1210 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1209, i32 0, i32 2
  store i32 %1207, ptr %1210, align 4, !tbaa !162
  %1211 = load ptr, ptr %43, align 8, !tbaa !5
  %1212 = load ptr, ptr %43, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1212, i32 0, i32 12
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1211, ptr noundef %1213)
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #14
  br label %1249

1214:                                             ; preds = %1133
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #14
  %1215 = load ptr, ptr %43, align 8, !tbaa !5
  %1216 = load ptr, ptr %43, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1216, i32 0, i32 12
  %1218 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1217, i32 0, i32 0
  %1219 = load i32, ptr %1218, align 4, !tbaa !160
  %1220 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef %1215, i32 noundef %1219)
  %1221 = zext i16 %1220 to i32
  %1222 = icmp eq i32 %1221, 10
  %1223 = zext i1 %1222 to i8
  store i8 %1223, ptr %76, align 1, !tbaa !42
  %1224 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1224, i32 noundef 2097156)
  %1225 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1225, i32 noundef 6291461)
  %1226 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1226, i32 noundef 6291457)
  %1227 = load i8, ptr %76, align 1, !tbaa !42, !range !40, !noundef !41
  %1228 = trunc i8 %1227 to i1
  br i1 %1228, label %1246, label %1229

1229:                                             ; preds = %1214
  %1230 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1231 = trunc i8 %1230 to i1
  br i1 %1231, label %1232, label %1246

1232:                                             ; preds = %1229
  %1233 = load ptr, ptr %43, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1233, i32 0, i32 12
  %1235 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1234, i32 0, i32 1
  %1236 = load ptr, ptr %43, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1236, i32 0, i32 12
  %1238 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1237, i32 0, i32 2
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %1235, ptr noundef nonnull align 4 dereferenceable(4) %1238)
  %1239 = load ptr, ptr %43, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1239, i32 0, i32 12
  %1241 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1240, i32 0, i32 2
  %1242 = load i32, ptr %1241, align 4, !tbaa !162
  %1243 = load ptr, ptr %43, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1243, i32 0, i32 12
  %1245 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1244, i32 0, i32 0
  store i32 %1242, ptr %1245, align 4, !tbaa !160
  br label %1246

1246:                                             ; preds = %1232, %1229, %1214
  %1247 = load ptr, ptr %43, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1247, i32 0, i32 14
  store i8 0, ptr %1248, align 4, !tbaa !163
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  br label %1249

1249:                                             ; preds = %1246, %1194
  %1250 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %1250)
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #14
  br label %1319

1251:                                             ; preds = %1128, %1121, %1118
  %1252 = load ptr, ptr %21, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ImGuiIO, ptr %1252, i32 0, i32 74
  %1254 = getelementptr inbounds [5 x i8], ptr %1253, i64 0, i64 0
  %1255 = load i8, ptr %1254, align 8, !tbaa !42, !range !40, !noundef !41
  %1256 = trunc i8 %1255 to i1
  br i1 %1256, label %1257, label %1285

1257:                                             ; preds = %1251
  %1258 = load ptr, ptr %43, align 8, !tbaa !5
  %1259 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1258, i32 0, i32 15
  %1260 = load i8, ptr %1259, align 1, !tbaa !157, !range !40, !noundef !41
  %1261 = trunc i8 %1260 to i1
  br i1 %1261, label %1285, label %1262

1262:                                             ; preds = %1257
  %1263 = load i8, ptr %42, align 1, !tbaa !42, !range !40, !noundef !41
  %1264 = trunc i8 %1263 to i1
  br i1 %1264, label %1265, label %1284

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

1270:                                             ; preds = %1265
  %1271 = load ptr, ptr %43, align 8, !tbaa !5
  %1272 = load ptr, ptr %43, align 8, !tbaa !5
  %1273 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1272, i32 0, i32 12
  %1274 = load float, ptr %72, align 4, !tbaa !44
  %1275 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1271, ptr noundef %1273, float noundef %1274, float noundef %1275)
  br label %1282

1276:                                             ; preds = %1265
  %1277 = load ptr, ptr %43, align 8, !tbaa !5
  %1278 = load ptr, ptr %43, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1278, i32 0, i32 12
  %1280 = load float, ptr %72, align 4, !tbaa !44
  %1281 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1277, ptr noundef %1279, float noundef %1280, float noundef %1281)
  br label %1282

1282:                                             ; preds = %1276, %1270
  %1283 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %1283)
  br label %1284

1284:                                             ; preds = %1282, %1262
  br label %1318

1285:                                             ; preds = %1257, %1251
  %1286 = load ptr, ptr %21, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.ImGuiIO, ptr %1286, i32 0, i32 60
  %1288 = getelementptr inbounds [5 x i8], ptr %1287, i64 0, i64 0
  %1289 = load i8, ptr %1288, align 8, !tbaa !42, !range !40, !noundef !41
  %1290 = trunc i8 %1289 to i1
  br i1 %1290, label %1291, label %1317

1291:                                             ; preds = %1285
  %1292 = load ptr, ptr %43, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1292, i32 0, i32 15
  %1294 = load i8, ptr %1293, align 1, !tbaa !157, !range !40, !noundef !41
  %1295 = trunc i8 %1294 to i1
  br i1 %1295, label %1317, label %1296

1296:                                             ; preds = %1291
  %1297 = load ptr, ptr %21, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.ImGuiIO, ptr %1297, i32 0, i32 54
  %1299 = getelementptr inbounds %struct.ImVec2, ptr %1298, i32 0, i32 0
  %1300 = load float, ptr %1299, align 8, !tbaa !164
  %1301 = fcmp une float %1300, 0.000000e+00
  br i1 %1301, label %1308, label %1302

1302:                                             ; preds = %1296
  %1303 = load ptr, ptr %21, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.ImGuiIO, ptr %1303, i32 0, i32 54
  %1305 = getelementptr inbounds %struct.ImVec2, ptr %1304, i32 0, i32 1
  %1306 = load float, ptr %1305, align 4, !tbaa !165
  %1307 = fcmp une float %1306, 0.000000e+00
  br i1 %1307, label %1308, label %1317

1308:                                             ; preds = %1302, %1296
  %1309 = load ptr, ptr %43, align 8, !tbaa !5
  %1310 = load ptr, ptr %43, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1310, i32 0, i32 12
  %1312 = load float, ptr %72, align 4, !tbaa !44
  %1313 = load float, ptr %73, align 4, !tbaa !44
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1309, ptr noundef %1311, float noundef %1312, float noundef %1313)
  %1314 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %1314)
  %1315 = load ptr, ptr %43, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1315, i32 0, i32 14
  store i8 1, ptr %1316, align 4, !tbaa !163
  br label %1317

1317:                                             ; preds = %1308, %1302, %1291, %1285
  br label %1318

1318:                                             ; preds = %1317, %1284
  br label %1319

1319:                                             ; preds = %1318, %1249
  br label %1320

1320:                                             ; preds = %1319, %1114
  %1321 = load ptr, ptr %43, align 8, !tbaa !5
  %1322 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1321, i32 0, i32 15
  %1323 = load i8, ptr %1322, align 1, !tbaa !157, !range !40, !noundef !41
  %1324 = trunc i8 %1323 to i1
  br i1 %1324, label %1325, label %1334

1325:                                             ; preds = %1320
  %1326 = load ptr, ptr %21, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.ImGuiIO, ptr %1326, i32 0, i32 60
  %1328 = getelementptr inbounds [5 x i8], ptr %1327, i64 0, i64 0
  %1329 = load i8, ptr %1328, align 8, !tbaa !42, !range !40, !noundef !41
  %1330 = trunc i8 %1329 to i1
  br i1 %1330, label %1334, label %1331

1331:                                             ; preds = %1325
  %1332 = load ptr, ptr %43, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1332, i32 0, i32 15
  store i8 0, ptr %1333, align 1, !tbaa !157
  br label %1334

1334:                                             ; preds = %1331, %1325, %1320
  %1335 = load i32, ptr %15, align 4, !tbaa !9
  %1336 = and i32 %1335, 1024
  %1337 = icmp ne i32 %1336, 0
  br i1 %1337, label %1338, label %1354

1338:                                             ; preds = %1334
  %1339 = load i32, ptr %25, align 4, !tbaa !9
  %1340 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %1339, i32 noundef 1)
  br i1 %1340, label %1341, label %1354

1341:                                             ; preds = %1338
  %1342 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %1343 = trunc i8 %1342 to i1
  br i1 %1343, label %1354, label %1344

1344:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #14
  store i32 9, ptr %77, align 4, !tbaa !9
  %1345 = load ptr, ptr %20, align 8, !tbaa !5
  %1346 = load i32, ptr %15, align 4, !tbaa !9
  %1347 = load ptr, ptr %16, align 8, !tbaa !5
  %1348 = load ptr, ptr %17, align 8, !tbaa !5
  %1349 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %1345, ptr noundef %77, i32 noundef %1346, ptr noundef %1347, ptr noundef %1348, i32 noundef 2)
  br i1 %1349, label %1350, label %1353

1350:                                             ; preds = %1344
  %1351 = load ptr, ptr %43, align 8, !tbaa !5
  %1352 = load i32, ptr %77, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1351, i32 noundef %1352)
  br label %1353

1353:                                             ; preds = %1350, %1344
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #14
  br label %1354

1354:                                             ; preds = %1353, %1341, %1338, %1334
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  %1355 = load ptr, ptr %21, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.ImGuiIO, ptr %1355, i32 0, i32 64
  %1357 = load i8, ptr %1356, align 4, !tbaa !132, !range !40, !noundef !41
  %1358 = trunc i8 %1357 to i1
  br i1 %1358, label %1359, label %1364

1359:                                             ; preds = %1354
  %1360 = load ptr, ptr %21, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.ImGuiIO, ptr %1360, i32 0, i32 66
  %1362 = load i8, ptr %1361, align 2, !tbaa !166, !range !40, !noundef !41
  %1363 = trunc i8 %1362 to i1
  br i1 %1363, label %1364, label %1374

1364:                                             ; preds = %1359, %1354
  %1365 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %1366 = trunc i8 %1365 to i1
  br i1 %1366, label %1367, label %1372

1367:                                             ; preds = %1364
  %1368 = load ptr, ptr %21, align 8, !tbaa !5
  %1369 = getelementptr inbounds %struct.ImGuiIO, ptr %1368, i32 0, i32 67
  %1370 = load i8, ptr %1369, align 1, !tbaa !167, !range !40, !noundef !41
  %1371 = trunc i8 %1370 to i1
  br label %1372

1372:                                             ; preds = %1367, %1364
  %1373 = phi i1 [ false, %1364 ], [ %1371, %1367 ]
  br label %1374

1374:                                             ; preds = %1372, %1359
  %1375 = phi i1 [ true, %1359 ], [ %1373, %1372 ]
  %1376 = zext i1 %1375 to i8
  store i8 %1376, ptr %78, align 1, !tbaa !42
  %1377 = load ptr, ptr %21, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.ImGuiIO, ptr %1377, i32 0, i32 91
  %1379 = getelementptr inbounds %struct.ImVector.5, ptr %1378, i32 0, i32 0
  %1380 = load i32, ptr %1379, align 8, !tbaa !168
  %1381 = icmp sgt i32 %1380, 0
  br i1 %1381, label %1382, label %1430

1382:                                             ; preds = %1374
  %1383 = load i8, ptr %78, align 1, !tbaa !42, !range !40, !noundef !41
  %1384 = trunc i8 %1383 to i1
  br i1 %1384, label %1427, label %1385

1385:                                             ; preds = %1382
  %1386 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %1387 = trunc i8 %1386 to i1
  br i1 %1387, label %1427, label %1388

1388:                                             ; preds = %1385
  %1389 = load i8, ptr %48, align 1, !tbaa !42, !range !40, !noundef !41
  %1390 = trunc i8 %1389 to i1
  br i1 %1390, label %1427, label %1391

1391:                                             ; preds = %1388
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #14
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %1392

1392:                                             ; preds = %1423, %1391
  %1393 = load i32, ptr %79, align 4, !tbaa !9
  %1394 = load ptr, ptr %21, align 8, !tbaa !5
  %1395 = getelementptr inbounds %struct.ImGuiIO, ptr %1394, i32 0, i32 91
  %1396 = getelementptr inbounds %struct.ImVector.5, ptr %1395, i32 0, i32 0
  %1397 = load i32, ptr %1396, align 8, !tbaa !168
  %1398 = icmp slt i32 %1393, %1397
  br i1 %1398, label %1400, label %1399

1399:                                             ; preds = %1392
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #14
  br label %1426

1400:                                             ; preds = %1392
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #14
  %1401 = load ptr, ptr %21, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.ImGuiIO, ptr %1401, i32 0, i32 91
  %1403 = load i32, ptr %79, align 4, !tbaa !9
  %1404 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1402, i32 noundef %1403)
  %1405 = load i16, ptr %1404, align 2, !tbaa !158
  %1406 = zext i16 %1405 to i32
  store i32 %1406, ptr %80, align 4, !tbaa !9
  %1407 = load i32, ptr %80, align 4, !tbaa !9
  %1408 = icmp eq i32 %1407, 9
  br i1 %1408, label %1409, label %1410

1409:                                             ; preds = %1400
  store i32 4, ptr %19, align 4
  br label %1420

1410:                                             ; preds = %1400
  %1411 = load ptr, ptr %20, align 8, !tbaa !5
  %1412 = load i32, ptr %15, align 4, !tbaa !9
  %1413 = load ptr, ptr %16, align 8, !tbaa !5
  %1414 = load ptr, ptr %17, align 8, !tbaa !5
  %1415 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %1411, ptr noundef %80, i32 noundef %1412, ptr noundef %1413, ptr noundef %1414, i32 noundef 2)
  br i1 %1415, label %1416, label %1419

1416:                                             ; preds = %1410
  %1417 = load ptr, ptr %43, align 8, !tbaa !5
  %1418 = load i32, ptr %80, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1417, i32 noundef %1418)
  br label %1419

1419:                                             ; preds = %1416, %1410
  store i32 0, ptr %19, align 4
  br label %1420

1420:                                             ; preds = %1419, %1409
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #14
  %1421 = load i32, ptr %19, align 4
  switch i32 %1421, label %3599 [
    i32 0, label %1422
    i32 4, label %1423
  ]

1422:                                             ; preds = %1420
  br label %1423

1423:                                             ; preds = %1422, %1420
  %1424 = load i32, ptr %79, align 4, !tbaa !9
  %1425 = add nsw i32 %1424, 1
  store i32 %1425, ptr %79, align 4, !tbaa !9
  br label %1392, !llvm.loop !169

1426:                                             ; preds = %1399
  br label %1427

1427:                                             ; preds = %1426, %1388, %1385, %1382
  %1428 = load ptr, ptr %21, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.ImGuiIO, ptr %1428, i32 0, i32 91
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1429, i32 noundef 0)
  br label %1430

1430:                                             ; preds = %1427, %1374
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #14
  br label %1431

1431:                                             ; preds = %1430, %1042
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #14
  store i8 0, ptr %81, align 1, !tbaa !42
  %1432 = load ptr, ptr %20, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.ImGuiContext, ptr %1432, i32 0, i32 48
  %1434 = load i32, ptr %1433, align 4, !tbaa !111
  %1435 = load i32, ptr %25, align 4, !tbaa !9
  %1436 = icmp eq i32 %1434, %1435
  br i1 %1436, label %1437, label %2148

1437:                                             ; preds = %1431
  %1438 = load ptr, ptr %20, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.ImGuiContext, ptr %1438, i32 0, i32 51
  %1440 = load i8, ptr %1439, align 8, !tbaa !171, !range !40, !noundef !41
  %1441 = trunc i8 %1440 to i1
  br i1 %1441, label %2148, label %1442

1442:                                             ; preds = %1437
  %1443 = load i8, ptr %52, align 1, !tbaa !42, !range !40, !noundef !41
  %1444 = trunc i8 %1443 to i1
  br i1 %1444, label %2148, label %1445

1445:                                             ; preds = %1442
  %1446 = load ptr, ptr %43, align 8, !tbaa !5
  %1447 = icmp ne ptr %1446, null
  br i1 %1447, label %1448, label %1449

1448:                                             ; preds = %1445
  br label %1451

1449:                                             ; preds = %1445
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.4, i32 noundef 4425, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

1450:                                             ; No predecessors!
  br label %1451

1451:                                             ; preds = %1450, %1448
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #14
  %1452 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %1453 = load float, ptr %1452, align 4, !tbaa !104
  %1454 = load ptr, ptr %22, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.ImGuiStyle, ptr %1454, i32 0, i32 12
  %1456 = getelementptr inbounds %struct.ImVec2, ptr %1455, i32 0, i32 1
  %1457 = load float, ptr %1456, align 4, !tbaa !105
  %1458 = fsub float %1453, %1457
  %1459 = load ptr, ptr %20, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.ImGuiContext, ptr %1459, i32 0, i32 5
  %1461 = load float, ptr %1460, align 8, !tbaa !45
  %1462 = fdiv float %1458, %1461
  %1463 = fptosi float %1462 to i32
  %1464 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1463, i32 noundef 1)
  store i32 %1464, ptr %82, align 4, !tbaa !9
  %1465 = load i32, ptr %82, align 4, !tbaa !9
  %1466 = load ptr, ptr %43, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1466, i32 0, i32 12
  %1468 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1467, i32 0, i32 4
  store i32 %1465, ptr %1468, align 4, !tbaa !172
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #14
  %1469 = load ptr, ptr %21, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.ImGuiIO, ptr %1469, i32 0, i32 65
  %1471 = load i8, ptr %1470, align 1, !tbaa !159, !range !40, !noundef !41
  %1472 = trunc i8 %1471 to i1
  %1473 = zext i1 %1472 to i64
  %1474 = select i1 %1472, i32 4194304, i32 0
  store i32 %1474, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #14
  %1475 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %1476 = trunc i8 %1475 to i1
  br i1 %1476, label %1477, label %1482

1477:                                             ; preds = %1451
  %1478 = load ptr, ptr %21, align 8, !tbaa !5
  %1479 = getelementptr inbounds %struct.ImGuiIO, ptr %1478, i32 0, i32 66
  %1480 = load i8, ptr %1479, align 2, !tbaa !166, !range !40, !noundef !41
  %1481 = trunc i8 %1480 to i1
  br label %1487

1482:                                             ; preds = %1451
  %1483 = load ptr, ptr %21, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.ImGuiIO, ptr %1483, i32 0, i32 64
  %1485 = load i8, ptr %1484, align 4, !tbaa !132, !range !40, !noundef !41
  %1486 = trunc i8 %1485 to i1
  br label %1487

1487:                                             ; preds = %1482, %1477
  %1488 = phi i1 [ %1481, %1477 ], [ %1486, %1482 ]
  %1489 = zext i1 %1488 to i8
  store i8 %1489, ptr %84, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #14
  %1490 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %1491 = trunc i8 %1490 to i1
  br i1 %1491, label %1492, label %1508

1492:                                             ; preds = %1487
  %1493 = load ptr, ptr %21, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.ImGuiIO, ptr %1493, i32 0, i32 67
  %1495 = load i8, ptr %1494, align 1, !tbaa !167, !range !40, !noundef !41
  %1496 = trunc i8 %1495 to i1
  br i1 %1496, label %1497, label %1508

1497:                                             ; preds = %1492
  %1498 = load ptr, ptr %21, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.ImGuiIO, ptr %1498, i32 0, i32 64
  %1500 = load i8, ptr %1499, align 4, !tbaa !132, !range !40, !noundef !41
  %1501 = trunc i8 %1500 to i1
  br i1 %1501, label %1508, label %1502

1502:                                             ; preds = %1497
  %1503 = load ptr, ptr %21, align 8, !tbaa !5
  %1504 = getelementptr inbounds %struct.ImGuiIO, ptr %1503, i32 0, i32 66
  %1505 = load i8, ptr %1504, align 2, !tbaa !166, !range !40, !noundef !41
  %1506 = trunc i8 %1505 to i1
  %1507 = xor i1 %1506, true
  br label %1508

1508:                                             ; preds = %1502, %1497, %1492, %1487
  %1509 = phi i1 [ false, %1497 ], [ false, %1492 ], [ false, %1487 ], [ %1507, %1502 ]
  %1510 = zext i1 %1509 to i8
  store i8 %1510, ptr %85, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #14
  store i32 1, ptr %86, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #14
  %1511 = load i32, ptr %25, align 4, !tbaa !9
  %1512 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2617, i32 noundef %1511, i32 noundef 1)
  br i1 %1512, label %1516, label %1513

1513:                                             ; preds = %1508
  %1514 = load i32, ptr %25, align 4, !tbaa !9
  %1515 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8714, i32 noundef %1514, i32 noundef 1)
  br i1 %1515, label %1516, label %1530

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

1519:                                             ; preds = %1516
  %1520 = load i8, ptr %45, align 1, !tbaa !42, !range !40, !noundef !41
  %1521 = trunc i8 %1520 to i1
  br i1 %1521, label %1530, label %1522

1522:                                             ; preds = %1519
  %1523 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1524 = trunc i8 %1523 to i1
  br i1 %1524, label %1525, label %1528

1525:                                             ; preds = %1522
  %1526 = load ptr, ptr %43, align 8, !tbaa !5
  %1527 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1526)
  br label %1528

1528:                                             ; preds = %1525, %1522
  %1529 = phi i1 [ true, %1522 ], [ %1527, %1525 ]
  br label %1530

1530:                                             ; preds = %1528, %1519, %1516, %1513
  %1531 = phi i1 [ false, %1519 ], [ false, %1516 ], [ false, %1513 ], [ %1529, %1528 ]
  %1532 = zext i1 %1531 to i8
  store i8 %1532, ptr %87, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1533 = load i32, ptr %25, align 4, !tbaa !9
  %1534 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2596, i32 noundef %1533, i32 noundef 0)
  br i1 %1534, label %1538, label %1535

1535:                                             ; preds = %1530
  %1536 = load i32, ptr %25, align 4, !tbaa !9
  %1537 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 4617, i32 noundef %1536, i32 noundef 0)
  br i1 %1537, label %1538, label %1549

1538:                                             ; preds = %1535, %1530
  %1539 = load i8, ptr %45, align 1, !tbaa !42, !range !40, !noundef !41
  %1540 = trunc i8 %1539 to i1
  br i1 %1540, label %1549, label %1541

1541:                                             ; preds = %1538
  %1542 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1543 = trunc i8 %1542 to i1
  br i1 %1543, label %1544, label %1547

1544:                                             ; preds = %1541
  %1545 = load ptr, ptr %43, align 8, !tbaa !5
  %1546 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1545)
  br label %1547

1547:                                             ; preds = %1544, %1541
  %1548 = phi i1 [ true, %1541 ], [ %1546, %1544 ]
  br label %1549

1549:                                             ; preds = %1547, %1538, %1535
  %1550 = phi i1 [ false, %1538 ], [ false, %1535 ], [ %1548, %1547 ]
  %1551 = zext i1 %1550 to i8
  store i8 %1551, ptr %88, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1552 = load i32, ptr %25, align 4, !tbaa !9
  %1553 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2615, i32 noundef %1552, i32 noundef 1)
  br i1 %1553, label %1557, label %1554

1554:                                             ; preds = %1549
  %1555 = load i32, ptr %25, align 4, !tbaa !9
  %1556 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8713, i32 noundef %1555, i32 noundef 1)
  br i1 %1556, label %1557, label %1561

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

1561:                                             ; preds = %1557, %1554
  %1562 = phi i1 [ false, %1554 ], [ %1560, %1557 ]
  %1563 = zext i1 %1562 to i8
  store i8 %1563, ptr %89, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1564 = load i32, ptr %25, align 4, !tbaa !9
  %1565 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2619, i32 noundef %1564, i32 noundef 1)
  br i1 %1565, label %1566, label %1572

1566:                                             ; preds = %1561
  %1567 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %1568 = trunc i8 %1567 to i1
  br i1 %1568, label %1572, label %1569

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

1572:                                             ; preds = %1569, %1566, %1561
  %1573 = phi i1 [ false, %1566 ], [ false, %1561 ], [ %1571, %1569 ]
  %1574 = zext i1 %1573 to i8
  store i8 %1574, ptr %90, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #14
  %1575 = load i32, ptr %25, align 4, !tbaa !9
  %1576 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2618, i32 noundef %1575, i32 noundef 1)
  br i1 %1576, label %1583, label %1577

1577:                                             ; preds = %1572
  %1578 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %1579 = trunc i8 %1578 to i1
  br i1 %1579, label %1580, label %1589

1580:                                             ; preds = %1577
  %1581 = load i32, ptr %25, align 4, !tbaa !9
  %1582 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 10811, i32 noundef %1581, i32 noundef 1)
  br i1 %1582, label %1583, label %1589

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

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

1589:                                             ; preds = %1586, %1583, %1580, %1577
  %1590 = phi i1 [ false, %1583 ], [ false, %1580 ], [ false, %1577 ], [ %1588, %1586 ]
  %1591 = zext i1 %1590 to i8
  store i8 %1591, ptr %91, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #14
  %1592 = load i32, ptr %25, align 4, !tbaa !9
  %1593 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2594, i32 noundef %1592, i32 noundef 0)
  %1594 = zext i1 %1593 to i8
  store i8 %1594, ptr %92, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #14
  %1595 = load ptr, ptr %21, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.ImGuiIO, ptr %1595, i32 0, i32 0
  %1597 = load i32, ptr %1596, align 8, !tbaa !173
  %1598 = and i32 %1597, 2
  %1599 = icmp ne i32 %1598, 0
  br i1 %1599, label %1600, label %1606

1600:                                             ; preds = %1589
  %1601 = load ptr, ptr %21, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.ImGuiIO, ptr %1601, i32 0, i32 1
  %1603 = load i32, ptr %1602, align 4, !tbaa !174
  %1604 = and i32 %1603, 1
  %1605 = icmp ne i32 %1604, 0
  br label %1606

1606:                                             ; preds = %1600, %1589
  %1607 = phi i1 [ false, %1589 ], [ %1605, %1600 ]
  %1608 = zext i1 %1607 to i8
  store i8 %1608, ptr %93, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #14
  %1609 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %1609, label %1612, label %1610

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

1612:                                             ; preds = %1610, %1606
  %1613 = phi i1 [ true, %1606 ], [ %1611, %1610 ]
  %1614 = zext i1 %1613 to i8
  store i8 %1614, ptr %94, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #14
  %1615 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1616 = trunc i8 %1615 to i1
  br i1 %1616, label %1617, label %1623

1617:                                             ; preds = %1612
  %1618 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 636, i1 noundef zeroext false)
  br i1 %1618, label %1621, label %1619

1619:                                             ; preds = %1617
  %1620 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 635, i1 noundef zeroext false)
  br label %1621

1621:                                             ; preds = %1619, %1617
  %1622 = phi i1 [ true, %1617 ], [ %1620, %1619 ]
  br label %1623

1623:                                             ; preds = %1621, %1612
  %1624 = phi i1 [ false, %1612 ], [ %1622, %1621 ]
  %1625 = zext i1 %1624 to i8
  store i8 %1625, ptr %95, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #14
  %1626 = load i32, ptr %25, align 4, !tbaa !9
  %1627 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 526, i32 noundef %1626, i32 noundef 1)
  br i1 %1627, label %1636, label %1628

1628:                                             ; preds = %1623
  %1629 = load i8, ptr %93, align 1, !tbaa !42, !range !40, !noundef !41
  %1630 = trunc i8 %1629 to i1
  br i1 %1630, label %1631, label %1634

1631:                                             ; preds = %1628
  %1632 = load i32, ptr %25, align 4, !tbaa !9
  %1633 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 634, i32 noundef %1632, i32 noundef 1)
  br label %1634

1634:                                             ; preds = %1631, %1628
  %1635 = phi i1 [ false, %1628 ], [ %1633, %1631 ]
  br label %1636

1636:                                             ; preds = %1634, %1623
  %1637 = phi i1 [ true, %1623 ], [ %1635, %1634 ]
  %1638 = zext i1 %1637 to i8
  store i8 %1638, ptr %96, align 1, !tbaa !42
  %1639 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %1639, label %1640, label %1654

1640:                                             ; preds = %1636
  %1641 = load ptr, ptr %43, align 8, !tbaa !5
  %1642 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1643 = trunc i8 %1642 to i1
  br i1 %1643, label %1644, label %1645

1644:                                             ; preds = %1640
  br label %1650

1645:                                             ; preds = %1640
  %1646 = load i8, ptr %84, align 1, !tbaa !42, !range !40, !noundef !41
  %1647 = trunc i8 %1646 to i1
  %1648 = zext i1 %1647 to i64
  %1649 = select i1 %1647, i32 2097164, i32 2097152
  br label %1650

1650:                                             ; preds = %1645, %1644
  %1651 = phi i32 [ 2097156, %1644 ], [ %1649, %1645 ]
  %1652 = load i32, ptr %83, align 4, !tbaa !9
  %1653 = or i32 %1651, %1652
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1641, i32 noundef %1653)
  br label %2133

1654:                                             ; preds = %1636
  %1655 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %1655, label %1656, label %1670

1656:                                             ; preds = %1654
  %1657 = load ptr, ptr %43, align 8, !tbaa !5
  %1658 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1659 = trunc i8 %1658 to i1
  br i1 %1659, label %1660, label %1661

1660:                                             ; preds = %1656
  br label %1666

1661:                                             ; preds = %1656
  %1662 = load i8, ptr %84, align 1, !tbaa !42, !range !40, !noundef !41
  %1663 = trunc i8 %1662 to i1
  %1664 = zext i1 %1663 to i64
  %1665 = select i1 %1663, i32 2097165, i32 2097153
  br label %1666

1666:                                             ; preds = %1661, %1660
  %1667 = phi i32 [ 2097157, %1660 ], [ %1665, %1661 ]
  %1668 = load i32, ptr %83, align 4, !tbaa !9
  %1669 = or i32 %1667, %1668
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1657, i32 noundef %1669)
  br label %2132

1670:                                             ; preds = %1654
  %1671 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %1671, label %1672, label %1700

1672:                                             ; preds = %1670
  %1673 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1674 = trunc i8 %1673 to i1
  br i1 %1674, label %1675, label %1700

1675:                                             ; preds = %1672
  %1676 = load ptr, ptr %21, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.ImGuiIO, ptr %1676, i32 0, i32 64
  %1678 = load i8, ptr %1677, align 4, !tbaa !132, !range !40, !noundef !41
  %1679 = trunc i8 %1678 to i1
  br i1 %1679, label %1680, label %1691

1680:                                             ; preds = %1675
  %1681 = load ptr, ptr %34, align 8, !tbaa !5
  %1682 = load ptr, ptr %34, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.ImGuiWindow, ptr %1682, i32 0, i32 25
  %1684 = getelementptr inbounds %struct.ImVec2, ptr %1683, i32 0, i32 1
  %1685 = load float, ptr %1684, align 4, !tbaa !122
  %1686 = load ptr, ptr %20, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.ImGuiContext, ptr %1686, i32 0, i32 5
  %1688 = load float, ptr %1687, align 8, !tbaa !45
  %1689 = fsub float %1685, %1688
  %1690 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1689, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1681, float noundef %1690)
  br label %1699

1691:                                             ; preds = %1675
  %1692 = load ptr, ptr %43, align 8, !tbaa !5
  %1693 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1694 = trunc i8 %1693 to i1
  %1695 = zext i1 %1694 to i64
  %1696 = select i1 %1694, i32 2097158, i32 2097154
  %1697 = load i32, ptr %83, align 4, !tbaa !9
  %1698 = or i32 %1696, %1697
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1692, i32 noundef %1698)
  br label %1699

1699:                                             ; preds = %1691, %1680
  br label %2131

1700:                                             ; preds = %1672, %1670
  %1701 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %1701, label %1702, label %1731

1702:                                             ; preds = %1700
  %1703 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1704 = trunc i8 %1703 to i1
  br i1 %1704, label %1705, label %1731

1705:                                             ; preds = %1702
  %1706 = load ptr, ptr %21, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.ImGuiIO, ptr %1706, i32 0, i32 64
  %1708 = load i8, ptr %1707, align 4, !tbaa !132, !range !40, !noundef !41
  %1709 = trunc i8 %1708 to i1
  br i1 %1709, label %1710, label %1722

1710:                                             ; preds = %1705
  %1711 = load ptr, ptr %34, align 8, !tbaa !5
  %1712 = load ptr, ptr %34, align 8, !tbaa !5
  %1713 = getelementptr inbounds %struct.ImGuiWindow, ptr %1712, i32 0, i32 25
  %1714 = getelementptr inbounds %struct.ImVec2, ptr %1713, i32 0, i32 1
  %1715 = load float, ptr %1714, align 4, !tbaa !122
  %1716 = load ptr, ptr %20, align 8, !tbaa !5
  %1717 = getelementptr inbounds %struct.ImGuiContext, ptr %1716, i32 0, i32 5
  %1718 = load float, ptr %1717, align 8, !tbaa !45
  %1719 = fadd float %1715, %1718
  %1720 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1721 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1719, float noundef %1720)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1711, float noundef %1721)
  br label %1730

1722:                                             ; preds = %1705
  %1723 = load ptr, ptr %43, align 8, !tbaa !5
  %1724 = load i8, ptr %85, align 1, !tbaa !42, !range !40, !noundef !41
  %1725 = trunc i8 %1724 to i1
  %1726 = zext i1 %1725 to i64
  %1727 = select i1 %1725, i32 2097159, i32 2097155
  %1728 = load i32, ptr %83, align 4, !tbaa !9
  %1729 = or i32 %1727, %1728
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1723, i32 noundef %1729)
  br label %1730

1730:                                             ; preds = %1722, %1710
  br label %2130

1731:                                             ; preds = %1702, %1700
  %1732 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  br i1 %1732, label %1733, label %1748

1733:                                             ; preds = %1731
  %1734 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1735 = trunc i8 %1734 to i1
  br i1 %1735, label %1736, label %1748

1736:                                             ; preds = %1733
  %1737 = load ptr, ptr %43, align 8, !tbaa !5
  %1738 = load i32, ptr %83, align 4, !tbaa !9
  %1739 = or i32 2097166, %1738
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1737, i32 noundef %1739)
  %1740 = load i32, ptr %82, align 4, !tbaa !9
  %1741 = sitofp i32 %1740 to float
  %1742 = load ptr, ptr %20, align 8, !tbaa !5
  %1743 = getelementptr inbounds %struct.ImGuiContext, ptr %1742, i32 0, i32 5
  %1744 = load float, ptr %1743, align 8, !tbaa !45
  %1745 = load float, ptr %54, align 4, !tbaa !44
  %1746 = fneg float %1741
  %1747 = call float @llvm.fmuladd.f32(float %1746, float %1744, float %1745)
  store float %1747, ptr %54, align 4, !tbaa !44
  br label %2129

1748:                                             ; preds = %1733, %1731
  %1749 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  br i1 %1749, label %1750, label %1764

1750:                                             ; preds = %1748
  %1751 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1752 = trunc i8 %1751 to i1
  br i1 %1752, label %1753, label %1764

1753:                                             ; preds = %1750
  %1754 = load ptr, ptr %43, align 8, !tbaa !5
  %1755 = load i32, ptr %83, align 4, !tbaa !9
  %1756 = or i32 2097167, %1755
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1754, i32 noundef %1756)
  %1757 = load i32, ptr %82, align 4, !tbaa !9
  %1758 = sitofp i32 %1757 to float
  %1759 = load ptr, ptr %20, align 8, !tbaa !5
  %1760 = getelementptr inbounds %struct.ImGuiContext, ptr %1759, i32 0, i32 5
  %1761 = load float, ptr %1760, align 8, !tbaa !45
  %1762 = load float, ptr %54, align 4, !tbaa !44
  %1763 = call float @llvm.fmuladd.f32(float %1758, float %1761, float %1762)
  store float %1763, ptr %54, align 4, !tbaa !44
  br label %2128

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

1766:                                             ; preds = %1764
  %1767 = load ptr, ptr %43, align 8, !tbaa !5
  %1768 = load ptr, ptr %21, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.ImGuiIO, ptr %1768, i32 0, i32 64
  %1770 = load i8, ptr %1769, align 4, !tbaa !132, !range !40, !noundef !41
  %1771 = trunc i8 %1770 to i1
  br i1 %1771, label %1772, label %1775

1772:                                             ; preds = %1766
  %1773 = load i32, ptr %83, align 4, !tbaa !9
  %1774 = or i32 2097158, %1773
  br label %1778

1775:                                             ; preds = %1766
  %1776 = load i32, ptr %83, align 4, !tbaa !9
  %1777 = or i32 2097156, %1776
  br label %1778

1778:                                             ; preds = %1775, %1772
  %1779 = phi i32 [ %1774, %1772 ], [ %1777, %1775 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1767, i32 noundef %1779)
  br label %2127

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

1782:                                             ; preds = %1780
  %1783 = load ptr, ptr %43, align 8, !tbaa !5
  %1784 = load ptr, ptr %21, align 8, !tbaa !5
  %1785 = getelementptr inbounds %struct.ImGuiIO, ptr %1784, i32 0, i32 64
  %1786 = load i8, ptr %1785, align 4, !tbaa !132, !range !40, !noundef !41
  %1787 = trunc i8 %1786 to i1
  br i1 %1787, label %1788, label %1791

1788:                                             ; preds = %1782
  %1789 = load i32, ptr %83, align 4, !tbaa !9
  %1790 = or i32 2097159, %1789
  br label %1794

1791:                                             ; preds = %1782
  %1792 = load i32, ptr %83, align 4, !tbaa !9
  %1793 = or i32 2097157, %1792
  br label %1794

1794:                                             ; preds = %1791, %1788
  %1795 = phi i32 [ %1790, %1788 ], [ %1793, %1791 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1783, i32 noundef %1795)
  br label %2126

1796:                                             ; preds = %1780
  %1797 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  br i1 %1797, label %1798, label %1817

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

1801:                                             ; preds = %1798
  %1802 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1803 = trunc i8 %1802 to i1
  br i1 %1803, label %1817, label %1804

1804:                                             ; preds = %1801
  %1805 = load ptr, ptr %43, align 8, !tbaa !5
  %1806 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1805)
  br i1 %1806, label %1813, label %1807

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

1810:                                             ; preds = %1807
  %1811 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1811, i32 noundef 6291469)
  br label %1812

1812:                                             ; preds = %1810, %1807
  br label %1813

1813:                                             ; preds = %1812, %1804
  %1814 = load ptr, ptr %43, align 8, !tbaa !5
  %1815 = load i32, ptr %83, align 4, !tbaa !9
  %1816 = or i32 2097160, %1815
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1814, i32 noundef %1816)
  br label %2125

1817:                                             ; preds = %1801, %1798, %1796
  %1818 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  br i1 %1818, label %1819, label %1856

1819:                                             ; preds = %1817
  %1820 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %1821 = trunc i8 %1820 to i1
  br i1 %1821, label %1856, label %1822

1822:                                             ; preds = %1819
  %1823 = load ptr, ptr %43, align 8, !tbaa !5
  %1824 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1823)
  br i1 %1824, label %1852, label %1825

1825:                                             ; preds = %1822
  %1826 = load i8, ptr %84, align 1, !tbaa !42, !range !40, !noundef !41
  %1827 = trunc i8 %1826 to i1
  br i1 %1827, label %1828, label %1830

1828:                                             ; preds = %1825
  %1829 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1829, i32 noundef 6291468)
  br label %1851

1830:                                             ; preds = %1825
  %1831 = load i8, ptr %61, align 1, !tbaa !42, !range !40, !noundef !41
  %1832 = trunc i8 %1831 to i1
  br i1 %1832, label %1833, label %1850

1833:                                             ; preds = %1830
  %1834 = load ptr, ptr %21, align 8, !tbaa !5
  %1835 = getelementptr inbounds %struct.ImGuiIO, ptr %1834, i32 0, i32 67
  %1836 = load i8, ptr %1835, align 1, !tbaa !167, !range !40, !noundef !41
  %1837 = trunc i8 %1836 to i1
  br i1 %1837, label %1838, label %1850

1838:                                             ; preds = %1833
  %1839 = load ptr, ptr %21, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct.ImGuiIO, ptr %1839, i32 0, i32 66
  %1841 = load i8, ptr %1840, align 2, !tbaa !166, !range !40, !noundef !41
  %1842 = trunc i8 %1841 to i1
  br i1 %1842, label %1850, label %1843

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

1848:                                             ; preds = %1843
  %1849 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1849, i32 noundef 6291460)
  br label %1850

1850:                                             ; preds = %1848, %1843, %1838, %1833, %1830
  br label %1851

1851:                                             ; preds = %1850, %1828
  br label %1852

1852:                                             ; preds = %1851, %1822
  %1853 = load ptr, ptr %43, align 8, !tbaa !5
  %1854 = load i32, ptr %83, align 4, !tbaa !9
  %1855 = or i32 2097161, %1854
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1853, i32 noundef %1855)
  br label %2124

1856:                                             ; preds = %1819, %1817
  %1857 = load i8, ptr %94, align 1, !tbaa !42, !range !40, !noundef !41
  %1858 = trunc i8 %1857 to i1
  br i1 %1858, label %1862, label %1859

1859:                                             ; preds = %1856
  %1860 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %1861 = trunc i8 %1860 to i1
  br i1 %1861, label %1862, label %1915

1862:                                             ; preds = %1859, %1856
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #14
  %1863 = load i32, ptr %15, align 4, !tbaa !9
  %1864 = and i32 %1863, 2048
  %1865 = icmp ne i32 %1864, 0
  %1866 = zext i1 %1865 to i8
  store i8 %1866, ptr %97, align 1, !tbaa !42
  %1867 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1868 = trunc i8 %1867 to i1
  br i1 %1868, label %1869, label %1888

1869:                                             ; preds = %1862
  %1870 = load i8, ptr %95, align 1, !tbaa !42, !range !40, !noundef !41
  %1871 = trunc i8 %1870 to i1
  br i1 %1871, label %1888, label %1872

1872:                                             ; preds = %1869
  %1873 = load i8, ptr %97, align 1, !tbaa !42, !range !40, !noundef !41
  %1874 = trunc i8 %1873 to i1
  br i1 %1874, label %1875, label %1880

1875:                                             ; preds = %1872
  %1876 = load ptr, ptr %21, align 8, !tbaa !5
  %1877 = getelementptr inbounds %struct.ImGuiIO, ptr %1876, i32 0, i32 64
  %1878 = load i8, ptr %1877, align 4, !tbaa !132, !range !40, !noundef !41
  %1879 = trunc i8 %1878 to i1
  br i1 %1879, label %1880, label %1888

1880:                                             ; preds = %1875, %1872
  %1881 = load i8, ptr %97, align 1, !tbaa !42, !range !40, !noundef !41
  %1882 = trunc i8 %1881 to i1
  br i1 %1882, label %1900, label %1883

1883:                                             ; preds = %1880
  %1884 = load ptr, ptr %21, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.ImGuiIO, ptr %1884, i32 0, i32 64
  %1886 = load i8, ptr %1885, align 4, !tbaa !132, !range !40, !noundef !41
  %1887 = trunc i8 %1886 to i1
  br i1 %1887, label %1888, label %1900

1888:                                             ; preds = %1883, %1875, %1869, %1862
  store i8 1, ptr %65, align 1, !tbaa !42
  %1889 = load ptr, ptr %21, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.ImGuiIO, ptr %1889, i32 0, i32 17
  %1891 = load i8, ptr %1890, align 4, !tbaa !175, !range !40, !noundef !41
  %1892 = trunc i8 %1891 to i1
  br i1 %1892, label %1893, label %1898

1893:                                             ; preds = %1888
  %1894 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %1895 = trunc i8 %1894 to i1
  br i1 %1895, label %1898, label %1896

1896:                                             ; preds = %1893
  %1897 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1897)
  br label %1899

1898:                                             ; preds = %1893, %1888
  store i8 1, ptr %52, align 1, !tbaa !42
  br label %1899

1899:                                             ; preds = %1898, %1896
  br label %1914

1900:                                             ; preds = %1883, %1880
  %1901 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %1902 = trunc i8 %1901 to i1
  br i1 %1902, label %1913, label %1903

1903:                                             ; preds = %1900
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #14
  store i32 10, ptr %98, align 4, !tbaa !9
  %1904 = load ptr, ptr %20, align 8, !tbaa !5
  %1905 = load i32, ptr %15, align 4, !tbaa !9
  %1906 = load ptr, ptr %16, align 8, !tbaa !5
  %1907 = load ptr, ptr %17, align 8, !tbaa !5
  %1908 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %1904, ptr noundef %98, i32 noundef %1905, ptr noundef %1906, ptr noundef %1907, i32 noundef 2)
  br i1 %1908, label %1909, label %1912

1909:                                             ; preds = %1903
  %1910 = load ptr, ptr %43, align 8, !tbaa !5
  %1911 = load i32, ptr %98, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1910, i32 noundef %1911)
  br label %1912

1912:                                             ; preds = %1909, %1903
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #14
  br label %1913

1913:                                             ; preds = %1912, %1900
  br label %1914

1914:                                             ; preds = %1913, %1899
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #14
  br label %2123

1915:                                             ; preds = %1859
  %1916 = load i8, ptr %96, align 1, !tbaa !42, !range !40, !noundef !41
  %1917 = trunc i8 %1916 to i1
  br i1 %1917, label %1918, label %1933

1918:                                             ; preds = %1915
  %1919 = load i32, ptr %15, align 4, !tbaa !9
  %1920 = and i32 %1919, 1048576
  %1921 = icmp ne i32 %1920, 0
  br i1 %1921, label %1922, label %1931

1922:                                             ; preds = %1918
  %1923 = load ptr, ptr %12, align 8, !tbaa !5
  %1924 = getelementptr inbounds i8, ptr %1923, i64 0
  %1925 = load i8, ptr %1924, align 1, !tbaa !137
  %1926 = sext i8 %1925 to i32
  %1927 = icmp ne i32 %1926, 0
  br i1 %1927, label %1928, label %1929

1928:                                             ; preds = %1922
  store i8 1, ptr %81, align 1, !tbaa !42
  br label %1930

1929:                                             ; preds = %1922
  store i8 0, ptr %63, align 1, !tbaa !42
  store i8 0, ptr %62, align 1, !tbaa !42
  store i8 1, ptr %52, align 1, !tbaa !42
  br label %1930

1930:                                             ; preds = %1929, %1928
  br label %1932

1931:                                             ; preds = %1918
  store i8 1, ptr %81, align 1, !tbaa !42
  store i8 1, ptr %52, align 1, !tbaa !42
  store i8 0, ptr %63, align 1, !tbaa !42
  store i8 0, ptr %62, align 1, !tbaa !42
  br label %1932

1932:                                             ; preds = %1931, %1930
  br label %2122

1933:                                             ; preds = %1915
  %1934 = load i8, ptr %90, align 1, !tbaa !42, !range !40, !noundef !41
  %1935 = trunc i8 %1934 to i1
  br i1 %1935, label %1939, label %1936

1936:                                             ; preds = %1933
  %1937 = load i8, ptr %91, align 1, !tbaa !42, !range !40, !noundef !41
  %1938 = trunc i8 %1937 to i1
  br i1 %1938, label %1939, label %1946

1939:                                             ; preds = %1936, %1933
  %1940 = load ptr, ptr %43, align 8, !tbaa !5
  %1941 = load i8, ptr %90, align 1, !tbaa !42, !range !40, !noundef !41
  %1942 = trunc i8 %1941 to i1
  %1943 = zext i1 %1942 to i64
  %1944 = select i1 %1942, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %1940, i32 noundef %1944)
  %1945 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1945)
  br label %2121

1946:                                             ; preds = %1936
  %1947 = load i8, ptr %92, align 1, !tbaa !42, !range !40, !noundef !41
  %1948 = trunc i8 %1947 to i1
  br i1 %1948, label %1949, label %1953

1949:                                             ; preds = %1946
  %1950 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %1950)
  %1951 = load ptr, ptr %43, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1951, i32 0, i32 14
  store i8 1, ptr %1952, align 4, !tbaa !163
  br label %2120

1953:                                             ; preds = %1946
  %1954 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %1955 = trunc i8 %1954 to i1
  br i1 %1955, label %1959, label %1956

1956:                                             ; preds = %1953
  %1957 = load i8, ptr %88, align 1, !tbaa !42, !range !40, !noundef !41
  %1958 = trunc i8 %1957 to i1
  br i1 %1958, label %1959, label %2053

1959:                                             ; preds = %1956, %1953
  %1960 = load ptr, ptr %21, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.ImGuiIO, ptr %1960, i32 0, i32 38
  %1962 = load ptr, ptr %1961, align 8, !tbaa !176
  %1963 = icmp ne ptr %1962, null
  br i1 %1963, label %1964, label %2037

1964:                                             ; preds = %1959
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #14
  %1965 = load ptr, ptr %43, align 8, !tbaa !5
  %1966 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1965)
  br i1 %1966, label %1967, label %1977

1967:                                             ; preds = %1964
  %1968 = load ptr, ptr %43, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1968, i32 0, i32 12
  %1970 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1969, i32 0, i32 1
  %1971 = load i32, ptr %1970, align 4, !tbaa !161
  %1972 = load ptr, ptr %43, align 8, !tbaa !5
  %1973 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1972, i32 0, i32 12
  %1974 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1973, i32 0, i32 2
  %1975 = load i32, ptr %1974, align 4, !tbaa !162
  %1976 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1971, i32 noundef %1975)
  br label %1978

1977:                                             ; preds = %1964
  br label %1978

1978:                                             ; preds = %1977, %1967
  %1979 = phi i32 [ %1976, %1967 ], [ 0, %1977 ]
  store i32 %1979, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #14
  %1980 = load ptr, ptr %43, align 8, !tbaa !5
  %1981 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %1980)
  br i1 %1981, label %1982, label %1992

1982:                                             ; preds = %1978
  %1983 = load ptr, ptr %43, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1983, i32 0, i32 12
  %1985 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1984, i32 0, i32 1
  %1986 = load i32, ptr %1985, align 4, !tbaa !161
  %1987 = load ptr, ptr %43, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1987, i32 0, i32 12
  %1989 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1988, i32 0, i32 2
  %1990 = load i32, ptr %1989, align 4, !tbaa !162
  %1991 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1986, i32 noundef %1990)
  br label %1996

1992:                                             ; preds = %1978
  %1993 = load ptr, ptr %43, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1993, i32 0, i32 2
  %1995 = load i32, ptr %1994, align 4, !tbaa !130
  br label %1996

1996:                                             ; preds = %1992, %1982
  %1997 = phi i32 [ %1991, %1982 ], [ %1995, %1992 ]
  store i32 %1997, ptr %100, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #14
  %1998 = load ptr, ptr %43, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1998, i32 0, i32 5
  %2000 = getelementptr inbounds %struct.ImVector.5, ptr %1999, i32 0, i32 2
  %2001 = load ptr, ptr %2000, align 8, !tbaa !129
  %2002 = load i32, ptr %99, align 4, !tbaa !9
  %2003 = sext i32 %2002 to i64
  %2004 = getelementptr inbounds i16, ptr %2001, i64 %2003
  %2005 = load ptr, ptr %43, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2005, i32 0, i32 5
  %2007 = getelementptr inbounds %struct.ImVector.5, ptr %2006, i32 0, i32 2
  %2008 = load ptr, ptr %2007, align 8, !tbaa !129
  %2009 = load i32, ptr %100, align 4, !tbaa !9
  %2010 = sext i32 %2009 to i64
  %2011 = getelementptr inbounds i16, ptr %2008, i64 %2010
  %2012 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2004, ptr noundef %2011)
  %2013 = add nsw i32 %2012, 1
  store i32 %2013, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #14
  %2014 = load i32, ptr %101, align 4, !tbaa !9
  %2015 = sext i32 %2014 to i64
  %2016 = mul i64 %2015, 1
  %2017 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %2016)
  store ptr %2017, ptr %102, align 8, !tbaa !5
  %2018 = load ptr, ptr %102, align 8, !tbaa !5
  %2019 = load i32, ptr %101, align 4, !tbaa !9
  %2020 = load ptr, ptr %43, align 8, !tbaa !5
  %2021 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2020, i32 0, i32 5
  %2022 = getelementptr inbounds %struct.ImVector.5, ptr %2021, i32 0, i32 2
  %2023 = load ptr, ptr %2022, align 8, !tbaa !129
  %2024 = load i32, ptr %99, align 4, !tbaa !9
  %2025 = sext i32 %2024 to i64
  %2026 = getelementptr inbounds i16, ptr %2023, i64 %2025
  %2027 = load ptr, ptr %43, align 8, !tbaa !5
  %2028 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2027, i32 0, i32 5
  %2029 = getelementptr inbounds %struct.ImVector.5, ptr %2028, i32 0, i32 2
  %2030 = load ptr, ptr %2029, align 8, !tbaa !129
  %2031 = load i32, ptr %100, align 4, !tbaa !9
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds i16, ptr %2030, i64 %2032
  %2034 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2018, i32 noundef %2019, ptr noundef %2026, ptr noundef %2033)
  %2035 = load ptr, ptr %102, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %2035)
  %2036 = load ptr, ptr %102, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2036)
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #14
  br label %2037

2037:                                             ; preds = %1996, %1959
  %2038 = load i8, ptr %87, align 1, !tbaa !42, !range !40, !noundef !41
  %2039 = trunc i8 %2038 to i1
  br i1 %2039, label %2040, label %2052

2040:                                             ; preds = %2037
  %2041 = load ptr, ptr %43, align 8, !tbaa !5
  %2042 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %2041)
  br i1 %2042, label %2045, label %2043

2043:                                             ; preds = %2040
  %2044 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %2044)
  br label %2045

2045:                                             ; preds = %2043, %2040
  %2046 = load ptr, ptr %43, align 8, !tbaa !5
  %2047 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2046, i32 0, i32 14
  store i8 1, ptr %2047, align 4, !tbaa !163
  %2048 = load ptr, ptr %43, align 8, !tbaa !5
  %2049 = load ptr, ptr %43, align 8, !tbaa !5
  %2050 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2049, i32 0, i32 12
  %2051 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %2048, ptr noundef %2050)
  br label %2052

2052:                                             ; preds = %2045, %2037
  br label %2119

2053:                                             ; preds = %1956
  %2054 = load i8, ptr %89, align 1, !tbaa !42, !range !40, !noundef !41
  %2055 = trunc i8 %2054 to i1
  br i1 %2055, label %2056, label %2118

2056:                                             ; preds = %2053
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #14
  %2057 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %2057, ptr %103, align 8, !tbaa !5
  %2058 = load ptr, ptr %103, align 8, !tbaa !5
  %2059 = icmp ne ptr %2058, null
  br i1 %2059, label %2060, label %2117

2060:                                             ; preds = %2056
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #14
  %2061 = load ptr, ptr %103, align 8, !tbaa !5
  %2062 = call i64 @strlen(ptr noundef %2061) #16
  %2063 = trunc i64 %2062 to i32
  store i32 %2063, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #14
  %2064 = load i32, ptr %104, align 4, !tbaa !9
  %2065 = add nsw i32 %2064, 1
  %2066 = sext i32 %2065 to i64
  %2067 = mul i64 %2066, 2
  %2068 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %2067)
  store ptr %2068, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #14
  store i32 0, ptr %106, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #14
  %2069 = load ptr, ptr %103, align 8, !tbaa !5
  store ptr %2069, ptr %107, align 8, !tbaa !5
  br label %2070

2070:                                             ; preds = %2098, %2096, %2060
  %2071 = load ptr, ptr %107, align 8, !tbaa !5
  %2072 = load i8, ptr %2071, align 1, !tbaa !137
  %2073 = sext i8 %2072 to i32
  %2074 = icmp ne i32 %2073, 0
  br i1 %2074, label %2076, label %2075

2075:                                             ; preds = %2070
  store i32 5, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #14
  br label %2099

2076:                                             ; preds = %2070
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #14
  %2077 = load ptr, ptr %107, align 8, !tbaa !5
  %2078 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %108, ptr noundef %2077, ptr noundef null)
  %2079 = load ptr, ptr %107, align 8, !tbaa !5
  %2080 = sext i32 %2078 to i64
  %2081 = getelementptr inbounds i8, ptr %2079, i64 %2080
  store ptr %2081, ptr %107, align 8, !tbaa !5
  %2082 = load ptr, ptr %20, align 8, !tbaa !5
  %2083 = load i32, ptr %15, align 4, !tbaa !9
  %2084 = load ptr, ptr %16, align 8, !tbaa !5
  %2085 = load ptr, ptr %17, align 8, !tbaa !5
  %2086 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %2082, ptr noundef %108, i32 noundef %2083, ptr noundef %2084, ptr noundef %2085, i32 noundef 4)
  br i1 %2086, label %2088, label %2087

2087:                                             ; preds = %2076
  store i32 6, ptr %19, align 4
  br label %2096, !llvm.loop !177

2088:                                             ; preds = %2076
  %2089 = load i32, ptr %108, align 4, !tbaa !9
  %2090 = trunc i32 %2089 to i16
  %2091 = load ptr, ptr %105, align 8, !tbaa !5
  %2092 = load i32, ptr %106, align 4, !tbaa !9
  %2093 = add nsw i32 %2092, 1
  store i32 %2093, ptr %106, align 4, !tbaa !9
  %2094 = sext i32 %2092 to i64
  %2095 = getelementptr inbounds i16, ptr %2091, i64 %2094
  store i16 %2090, ptr %2095, align 2, !tbaa !158
  store i32 0, ptr %19, align 4
  br label %2096

2096:                                             ; preds = %2088, %2087
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #14
  %2097 = load i32, ptr %19, align 4
  switch i32 %2097, label %3599 [
    i32 0, label %2098
    i32 6, label %2070
  ]

2098:                                             ; preds = %2096
  br label %2070, !llvm.loop !177

2099:                                             ; preds = %2075
  %2100 = load ptr, ptr %105, align 8, !tbaa !5
  %2101 = load i32, ptr %106, align 4, !tbaa !9
  %2102 = sext i32 %2101 to i64
  %2103 = getelementptr inbounds i16, ptr %2100, i64 %2102
  store i16 0, ptr %2103, align 2, !tbaa !158
  %2104 = load i32, ptr %106, align 4, !tbaa !9
  %2105 = icmp sgt i32 %2104, 0
  br i1 %2105, label %2106, label %2115

2106:                                             ; preds = %2099
  %2107 = load ptr, ptr %43, align 8, !tbaa !5
  %2108 = load ptr, ptr %43, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2108, i32 0, i32 12
  %2110 = load ptr, ptr %105, align 8, !tbaa !5
  %2111 = load i32, ptr %106, align 4, !tbaa !9
  %2112 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2107, ptr noundef %2109, ptr noundef %2110, i32 noundef %2111)
  %2113 = load ptr, ptr %43, align 8, !tbaa !5
  %2114 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2113, i32 0, i32 14
  store i8 1, ptr %2114, align 4, !tbaa !163
  br label %2115

2115:                                             ; preds = %2106, %2099
  %2116 = load ptr, ptr %105, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %2116)
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #14
  br label %2117

2117:                                             ; preds = %2115, %2056
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #14
  br label %2118

2118:                                             ; preds = %2117, %2053
  br label %2119

2119:                                             ; preds = %2118, %2052
  br label %2120

2120:                                             ; preds = %2119, %1949
  br label %2121

2121:                                             ; preds = %2120, %1939
  br label %2122

2122:                                             ; preds = %2121, %1932
  br label %2123

2123:                                             ; preds = %2122, %1914
  br label %2124

2124:                                             ; preds = %2123, %1852
  br label %2125

2125:                                             ; preds = %2124, %1813
  br label %2126

2126:                                             ; preds = %2125, %1794
  br label %2127

2127:                                             ; preds = %2126, %1778
  br label %2128

2128:                                             ; preds = %2127, %1753
  br label %2129

2129:                                             ; preds = %2128, %1736
  br label %2130

2130:                                             ; preds = %2129, %1730
  br label %2131

2131:                                             ; preds = %2130, %1699
  br label %2132

2132:                                             ; preds = %2131, %1666
  br label %2133

2133:                                             ; preds = %2132, %1650
  %2134 = load ptr, ptr %43, align 8, !tbaa !5
  %2135 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %2134)
  br i1 %2135, label %2136, label %2139

2136:                                             ; preds = %2133
  %2137 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2138 = trunc i8 %2137 to i1
  br label %2139

2139:                                             ; preds = %2136, %2133
  %2140 = phi i1 [ false, %2133 ], [ %2138, %2136 ]
  %2141 = zext i1 %2140 to i32
  %2142 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2143 = trunc i8 %2142 to i1
  %2144 = zext i1 %2143 to i32
  %2145 = or i32 %2144, %2141
  %2146 = icmp ne i32 %2145, 0
  %2147 = zext i1 %2146 to i8
  store i8 %2147, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #14
  br label %2148

2148:                                             ; preds = %2139, %1442, %1437, %1431
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #14
  store ptr null, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #14
  store i32 0, ptr %110, align 4, !tbaa !9
  %2149 = load ptr, ptr %20, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.ImGuiContext, ptr %2149, i32 0, i32 48
  %2151 = load i32, ptr %2150, align 4, !tbaa !111
  %2152 = load i32, ptr %25, align 4, !tbaa !9
  %2153 = icmp eq i32 %2151, %2152
  br i1 %2153, label %2154, label %2632

2154:                                             ; preds = %2148
  %2155 = load ptr, ptr %43, align 8, !tbaa !5
  %2156 = icmp ne ptr %2155, null
  br i1 %2156, label %2157, label %2158

2157:                                             ; preds = %2154
  br label %2160

2158:                                             ; preds = %2154
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.4, i32 noundef 4585, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2159:                                             ; No predecessors!
  br label %2160

2160:                                             ; preds = %2159, %2157
  %2161 = load i8, ptr %81, align 1, !tbaa !42, !range !40, !noundef !41
  %2162 = trunc i8 %2161 to i1
  br i1 %2162, label %2163, label %2246

2163:                                             ; preds = %2160
  %2164 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %2165 = trunc i8 %2164 to i1
  br i1 %2165, label %2246, label %2166

2166:                                             ; preds = %2163
  %2167 = load i32, ptr %15, align 4, !tbaa !9
  %2168 = and i32 %2167, 1048576
  %2169 = icmp ne i32 %2168, 0
  br i1 %2169, label %2170, label %2183

2170:                                             ; preds = %2166
  %2171 = load ptr, ptr %12, align 8, !tbaa !5
  %2172 = getelementptr inbounds i8, ptr %2171, i64 0
  %2173 = load i8, ptr %2172, align 1, !tbaa !137
  %2174 = sext i8 %2173 to i32
  %2175 = icmp ne i32 %2174, 0
  br i1 %2175, label %2176, label %2177

2176:                                             ; preds = %2170
  br label %2179

2177:                                             ; preds = %2170
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.4, i32 noundef 4591, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2178:                                             ; No predecessors!
  br label %2179

2179:                                             ; preds = %2178, %2176
  store ptr @.str, ptr %109, align 8, !tbaa !5
  store i32 0, ptr %110, align 4, !tbaa !9
  store i8 1, ptr %64, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 2, ptr %111) #14
  %2180 = load ptr, ptr %43, align 8, !tbaa !5
  %2181 = load ptr, ptr %43, align 8, !tbaa !5
  %2182 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2181, i32 0, i32 12
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2180, ptr noundef %2182, ptr noundef %111, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 2, ptr %111) #14
  br label %2245

2183:                                             ; preds = %2166
  %2184 = load ptr, ptr %12, align 8, !tbaa !5
  %2185 = load ptr, ptr %43, align 8, !tbaa !5
  %2186 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2185, i32 0, i32 7
  %2187 = getelementptr inbounds %struct.ImVector.31, ptr %2186, i32 0, i32 2
  %2188 = load ptr, ptr %2187, align 8, !tbaa !125
  %2189 = call i32 @strcmp(ptr noundef %2184, ptr noundef %2188) #16
  %2190 = icmp ne i32 %2189, 0
  br i1 %2190, label %2191, label %2244

2191:                                             ; preds = %2183
  %2192 = load ptr, ptr %43, align 8, !tbaa !5
  %2193 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2192, i32 0, i32 7
  %2194 = getelementptr inbounds %struct.ImVector.31, ptr %2193, i32 0, i32 2
  %2195 = load ptr, ptr %2194, align 8, !tbaa !125
  store ptr %2195, ptr %109, align 8, !tbaa !5
  %2196 = load ptr, ptr %43, align 8, !tbaa !5
  %2197 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2196, i32 0, i32 7
  %2198 = getelementptr inbounds %struct.ImVector.31, ptr %2197, i32 0, i32 0
  %2199 = load i32, ptr %2198, align 8, !tbaa !178
  %2200 = sub nsw i32 %2199, 1
  store i32 %2200, ptr %110, align 4, !tbaa !9
  store i8 1, ptr %64, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112)
  %2201 = load i32, ptr %110, align 4, !tbaa !9
  %2202 = icmp sgt i32 %2201, 0
  br i1 %2202, label %2203, label %2228

2203:                                             ; preds = %2191
  %2204 = load ptr, ptr %109, align 8, !tbaa !5
  %2205 = load ptr, ptr %109, align 8, !tbaa !5
  %2206 = load i32, ptr %110, align 4, !tbaa !9
  %2207 = sext i32 %2206 to i64
  %2208 = getelementptr inbounds i8, ptr %2205, i64 %2207
  %2209 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2204, ptr noundef %2208)
          to label %2210 unwind label %2224

2210:                                             ; preds = %2203
  %2211 = add nsw i32 %2209, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %112, i32 noundef %2211)
          to label %2212 unwind label %2224

2212:                                             ; preds = %2210
  %2213 = getelementptr inbounds %struct.ImVector.5, ptr %112, i32 0, i32 2
  %2214 = load ptr, ptr %2213, align 8, !tbaa !179
  %2215 = getelementptr inbounds %struct.ImVector.5, ptr %112, i32 0, i32 0
  %2216 = load i32, ptr %2215, align 8, !tbaa !180
  %2217 = load ptr, ptr %109, align 8, !tbaa !5
  %2218 = load ptr, ptr %109, align 8, !tbaa !5
  %2219 = load i32, ptr %110, align 4, !tbaa !9
  %2220 = sext i32 %2219 to i64
  %2221 = getelementptr inbounds i8, ptr %2218, i64 %2220
  %2222 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2214, i32 noundef %2216, ptr noundef %2217, ptr noundef %2221, ptr noundef null)
          to label %2223 unwind label %2224

2223:                                             ; preds = %2212
  br label %2228

2224:                                             ; preds = %2241, %2212, %2210, %2203
  %2225 = landingpad { ptr, i32 }
          cleanup
  %2226 = extractvalue { ptr, i32 } %2225, 0
  store ptr %2226, ptr %113, align 8
  %2227 = extractvalue { ptr, i32 } %2225, 1
  store i32 %2227, ptr %114, align 4
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #14
  call void @llvm.lifetime.end.p0(i64 76, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  br label %3594

2228:                                             ; preds = %2223, %2191
  %2229 = load ptr, ptr %43, align 8, !tbaa !5
  %2230 = load ptr, ptr %43, align 8, !tbaa !5
  %2231 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2230, i32 0, i32 12
  %2232 = getelementptr inbounds %struct.ImVector.5, ptr %112, i32 0, i32 2
  %2233 = load ptr, ptr %2232, align 8, !tbaa !179
  %2234 = load i32, ptr %110, align 4, !tbaa !9
  %2235 = icmp sgt i32 %2234, 0
  br i1 %2235, label %2236, label %2240

2236:                                             ; preds = %2228
  %2237 = getelementptr inbounds %struct.ImVector.5, ptr %112, i32 0, i32 0
  %2238 = load i32, ptr %2237, align 8, !tbaa !180
  %2239 = sub nsw i32 %2238, 1
  br label %2241

2240:                                             ; preds = %2228
  br label %2241

2241:                                             ; preds = %2240, %2236
  %2242 = phi i32 [ %2239, %2236 ], [ 0, %2240 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2229, ptr noundef %2231, ptr noundef %2233, i32 noundef %2242)
          to label %2243 unwind label %2224

2243:                                             ; preds = %2241
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %112) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #14
  br label %2244

2244:                                             ; preds = %2243, %2183
  br label %2245

2245:                                             ; preds = %2244, %2179
  br label %2246

2246:                                             ; preds = %2245, %2163, %2160
  %2247 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %2248 = trunc i8 %2247 to i1
  br i1 %2248, label %2273, label %2249

2249:                                             ; preds = %2246
  %2250 = load ptr, ptr %43, align 8, !tbaa !5
  %2251 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2250, i32 0, i32 8
  store i8 1, ptr %2251, align 8, !tbaa !127
  %2252 = load ptr, ptr %43, align 8, !tbaa !5
  %2253 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2252, i32 0, i32 6
  %2254 = load ptr, ptr %43, align 8, !tbaa !5
  %2255 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2254, i32 0, i32 5
  %2256 = getelementptr inbounds %struct.ImVector.5, ptr %2255, i32 0, i32 0
  %2257 = load i32, ptr %2256, align 8, !tbaa !136
  %2258 = mul nsw i32 %2257, 4
  %2259 = add nsw i32 %2258, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2253, i32 noundef %2259)
  %2260 = load ptr, ptr %43, align 8, !tbaa !5
  %2261 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2260, i32 0, i32 6
  %2262 = getelementptr inbounds %struct.ImVector.31, ptr %2261, i32 0, i32 2
  %2263 = load ptr, ptr %2262, align 8, !tbaa !128
  %2264 = load ptr, ptr %43, align 8, !tbaa !5
  %2265 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2264, i32 0, i32 6
  %2266 = getelementptr inbounds %struct.ImVector.31, ptr %2265, i32 0, i32 0
  %2267 = load i32, ptr %2266, align 8, !tbaa !181
  %2268 = load ptr, ptr %43, align 8, !tbaa !5
  %2269 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2268, i32 0, i32 5
  %2270 = getelementptr inbounds %struct.ImVector.5, ptr %2269, i32 0, i32 2
  %2271 = load ptr, ptr %2270, align 8, !tbaa !129
  %2272 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2263, i32 noundef %2267, ptr noundef %2271, ptr noundef null)
  br label %2273

2273:                                             ; preds = %2249, %2246
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #14
  %2274 = load i8, ptr %81, align 1, !tbaa !42, !range !40, !noundef !41
  %2275 = trunc i8 %2274 to i1
  br i1 %2275, label %2276, label %2285

2276:                                             ; preds = %2273
  %2277 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %2278 = trunc i8 %2277 to i1
  br i1 %2278, label %2279, label %2283

2279:                                             ; preds = %2276
  %2280 = load i32, ptr %15, align 4, !tbaa !9
  %2281 = and i32 %2280, 32
  %2282 = icmp ne i32 %2281, 0
  br label %2283

2283:                                             ; preds = %2279, %2276
  %2284 = phi i1 [ false, %2276 ], [ %2282, %2279 ]
  br label %2285

2285:                                             ; preds = %2283, %2273
  %2286 = phi i1 [ true, %2273 ], [ %2284, %2283 ]
  %2287 = zext i1 %2286 to i8
  store i8 %2287, ptr %115, align 1, !tbaa !42
  %2288 = load i8, ptr %115, align 1, !tbaa !42, !range !40, !noundef !41
  %2289 = trunc i8 %2288 to i1
  br i1 %2289, label %2290, label %2631

2290:                                             ; preds = %2285
  %2291 = load i32, ptr %15, align 4, !tbaa !9
  %2292 = and i32 %2291, 524736
  %2293 = icmp ne i32 %2292, 0
  br i1 %2293, label %2294, label %2611

2294:                                             ; preds = %2290
  %2295 = load ptr, ptr %16, align 8, !tbaa !5
  %2296 = icmp ne ptr %2295, null
  br i1 %2296, label %2297, label %2298

2297:                                             ; preds = %2294
  br label %2300

2298:                                             ; preds = %2294
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.4, i32 noundef 4640, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2299:                                             ; No predecessors!
  br label %2300

2300:                                             ; preds = %2299, %2297
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #14
  store i32 0, ptr %116, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #14
  store i32 0, ptr %117, align 4, !tbaa !182
  %2301 = load i32, ptr %15, align 4, !tbaa !9
  %2302 = and i32 %2301, 64
  %2303 = icmp ne i32 %2302, 0
  br i1 %2303, label %2304, label %2308

2304:                                             ; preds = %2300
  %2305 = load i32, ptr %25, align 4, !tbaa !9
  %2306 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %2305, i32 noundef 0)
  br i1 %2306, label %2307, label %2308

2307:                                             ; preds = %2304
  store i32 64, ptr %116, align 4, !tbaa !9
  store i32 512, ptr %117, align 4, !tbaa !182
  br label %2341

2308:                                             ; preds = %2304, %2300
  %2309 = load i32, ptr %15, align 4, !tbaa !9
  %2310 = and i32 %2309, 128
  %2311 = icmp ne i32 %2310, 0
  br i1 %2311, label %2312, label %2315

2312:                                             ; preds = %2308
  %2313 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %2313, label %2314, label %2315

2314:                                             ; preds = %2312
  store i32 128, ptr %116, align 4, !tbaa !9
  store i32 515, ptr %117, align 4, !tbaa !182
  br label %2340

2315:                                             ; preds = %2312, %2308
  %2316 = load i32, ptr %15, align 4, !tbaa !9
  %2317 = and i32 %2316, 128
  %2318 = icmp ne i32 %2317, 0
  br i1 %2318, label %2319, label %2322

2319:                                             ; preds = %2315
  %2320 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %2320, label %2321, label %2322

2321:                                             ; preds = %2319
  store i32 128, ptr %116, align 4, !tbaa !9
  store i32 516, ptr %117, align 4, !tbaa !182
  br label %2339

2322:                                             ; preds = %2319, %2315
  %2323 = load i32, ptr %15, align 4, !tbaa !9
  %2324 = and i32 %2323, 524288
  %2325 = icmp ne i32 %2324, 0
  br i1 %2325, label %2326, label %2332

2326:                                             ; preds = %2322
  %2327 = load ptr, ptr %43, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2327, i32 0, i32 16
  %2329 = load i8, ptr %2328, align 2, !tbaa !148, !range !40, !noundef !41
  %2330 = trunc i8 %2329 to i1
  br i1 %2330, label %2331, label %2332

2331:                                             ; preds = %2326
  store i32 524288, ptr %116, align 4, !tbaa !9
  br label %2338

2332:                                             ; preds = %2326, %2322
  %2333 = load i32, ptr %15, align 4, !tbaa !9
  %2334 = and i32 %2333, 256
  %2335 = icmp ne i32 %2334, 0
  br i1 %2335, label %2336, label %2337

2336:                                             ; preds = %2332
  store i32 256, ptr %116, align 4, !tbaa !9
  br label %2337

2337:                                             ; preds = %2336, %2332
  br label %2338

2338:                                             ; preds = %2337, %2331
  br label %2339

2339:                                             ; preds = %2338, %2321
  br label %2340

2340:                                             ; preds = %2339, %2314
  br label %2341

2341:                                             ; preds = %2340, %2307
  %2342 = load i32, ptr %116, align 4, !tbaa !9
  %2343 = icmp ne i32 %2342, 0
  br i1 %2343, label %2344, label %2610

2344:                                             ; preds = %2341
  call void @llvm.lifetime.start.p0(i64 64, ptr %118) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %118)
  %2345 = load ptr, ptr %20, align 8, !tbaa !5
  %2346 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 0
  store ptr %2345, ptr %2346, align 8, !tbaa !184
  %2347 = load i32, ptr %116, align 4, !tbaa !9
  %2348 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 1
  store i32 %2347, ptr %2348, align 8, !tbaa !186
  %2349 = load i32, ptr %15, align 4, !tbaa !9
  %2350 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 2
  store i32 %2349, ptr %2350, align 4, !tbaa !187
  %2351 = load ptr, ptr %17, align 8, !tbaa !5
  %2352 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 3
  store ptr %2351, ptr %2352, align 8, !tbaa !188
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #14
  %2353 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %2354 = trunc i8 %2353 to i1
  br i1 %2354, label %2355, label %2357

2355:                                             ; preds = %2344
  %2356 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2362

2357:                                             ; preds = %2344
  %2358 = load ptr, ptr %43, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2358, i32 0, i32 6
  %2360 = getelementptr inbounds %struct.ImVector.31, ptr %2359, i32 0, i32 2
  %2361 = load ptr, ptr %2360, align 8, !tbaa !128
  br label %2362

2362:                                             ; preds = %2357, %2355
  %2363 = phi ptr [ %2356, %2355 ], [ %2361, %2357 ]
  store ptr %2363, ptr %119, align 8, !tbaa !5
  %2364 = load i32, ptr %117, align 4, !tbaa !182
  %2365 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 5
  store i32 %2364, ptr %2365, align 4, !tbaa !189
  %2366 = load ptr, ptr %119, align 8, !tbaa !5
  %2367 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  store ptr %2366, ptr %2367, align 8, !tbaa !190
  %2368 = load ptr, ptr %43, align 8, !tbaa !5
  %2369 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2368, i32 0, i32 3
  %2370 = load i32, ptr %2369, align 8, !tbaa !126
  %2371 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 7
  store i32 %2370, ptr %2371, align 8, !tbaa !191
  %2372 = load ptr, ptr %43, align 8, !tbaa !5
  %2373 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2372, i32 0, i32 10
  %2374 = load i32, ptr %2373, align 4, !tbaa !149
  %2375 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 8
  store i32 %2374, ptr %2375, align 4, !tbaa !192
  %2376 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 9
  store i8 0, ptr %2376, align 8, !tbaa !193
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #14
  %2377 = load ptr, ptr %43, align 8, !tbaa !5
  %2378 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2377, i32 0, i32 5
  %2379 = getelementptr inbounds %struct.ImVector.5, ptr %2378, i32 0, i32 2
  %2380 = load ptr, ptr %2379, align 8, !tbaa !129
  store ptr %2380, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #14
  %2381 = load ptr, ptr %120, align 8, !tbaa !5
  %2382 = load ptr, ptr %120, align 8, !tbaa !5
  %2383 = load ptr, ptr %43, align 8, !tbaa !5
  %2384 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2383, i32 0, i32 12
  %2385 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2384, i32 0, i32 0
  %2386 = load i32, ptr %2385, align 4, !tbaa !160
  %2387 = sext i32 %2386 to i64
  %2388 = getelementptr inbounds i16, ptr %2382, i64 %2387
  %2389 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2381, ptr noundef %2388)
  %2390 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 10
  store i32 %2389, ptr %2390, align 4, !tbaa !194
  store i32 %2389, ptr %121, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #14
  %2391 = load ptr, ptr %120, align 8, !tbaa !5
  %2392 = load ptr, ptr %120, align 8, !tbaa !5
  %2393 = load ptr, ptr %43, align 8, !tbaa !5
  %2394 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2393, i32 0, i32 12
  %2395 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2394, i32 0, i32 1
  %2396 = load i32, ptr %2395, align 4, !tbaa !161
  %2397 = sext i32 %2396 to i64
  %2398 = getelementptr inbounds i16, ptr %2392, i64 %2397
  %2399 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2391, ptr noundef %2398)
  %2400 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 11
  store i32 %2399, ptr %2400, align 8, !tbaa !195
  store i32 %2399, ptr %122, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #14
  %2401 = load ptr, ptr %120, align 8, !tbaa !5
  %2402 = load ptr, ptr %120, align 8, !tbaa !5
  %2403 = load ptr, ptr %43, align 8, !tbaa !5
  %2404 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2403, i32 0, i32 12
  %2405 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2404, i32 0, i32 2
  %2406 = load i32, ptr %2405, align 4, !tbaa !162
  %2407 = sext i32 %2406 to i64
  %2408 = getelementptr inbounds i16, ptr %2402, i64 %2407
  %2409 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2401, ptr noundef %2408)
  %2410 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 12
  store i32 %2409, ptr %2410, align 4, !tbaa !196
  store i32 %2409, ptr %123, align 4, !tbaa !9
  %2411 = load ptr, ptr %16, align 8, !tbaa !5
  %2412 = call noundef i32 %2411(ptr noundef %118)
  %2413 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %2414 = trunc i8 %2413 to i1
  br i1 %2414, label %2415, label %2417

2415:                                             ; preds = %2362
  %2416 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2422

2417:                                             ; preds = %2362
  %2418 = load ptr, ptr %43, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2418, i32 0, i32 6
  %2420 = getelementptr inbounds %struct.ImVector.31, ptr %2419, i32 0, i32 2
  %2421 = load ptr, ptr %2420, align 8, !tbaa !128
  br label %2422

2422:                                             ; preds = %2417, %2415
  %2423 = phi ptr [ %2416, %2415 ], [ %2421, %2417 ]
  store ptr %2423, ptr %119, align 8, !tbaa !5
  %2424 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2425 = load ptr, ptr %2424, align 8, !tbaa !190
  %2426 = load ptr, ptr %119, align 8, !tbaa !5
  %2427 = icmp eq ptr %2425, %2426
  br i1 %2427, label %2428, label %2429

2428:                                             ; preds = %2422
  br label %2431

2429:                                             ; preds = %2422
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.4, i32 noundef 4695, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2430:                                             ; No predecessors!
  br label %2431

2431:                                             ; preds = %2430, %2428
  %2432 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 8
  %2433 = load i32, ptr %2432, align 4, !tbaa !192
  %2434 = load ptr, ptr %43, align 8, !tbaa !5
  %2435 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2434, i32 0, i32 10
  %2436 = load i32, ptr %2435, align 4, !tbaa !149
  %2437 = icmp eq i32 %2433, %2436
  br i1 %2437, label %2438, label %2439

2438:                                             ; preds = %2431
  br label %2441

2439:                                             ; preds = %2431
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.4, i32 noundef 4696, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2440:                                             ; No predecessors!
  br label %2441

2441:                                             ; preds = %2440, %2438
  %2442 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 2
  %2443 = load i32, ptr %2442, align 4, !tbaa !187
  %2444 = load i32, ptr %15, align 4, !tbaa !9
  %2445 = icmp eq i32 %2443, %2444
  br i1 %2445, label %2446, label %2447

2446:                                             ; preds = %2441
  br label %2449

2447:                                             ; preds = %2441
  call void @__assert_fail(ptr noundef @.str.68, ptr noundef @.str.4, i32 noundef 4697, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2448:                                             ; No predecessors!
  br label %2449

2449:                                             ; preds = %2448, %2446
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #14
  %2450 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 9
  %2451 = load i8, ptr %2450, align 8, !tbaa !193, !range !40, !noundef !41
  %2452 = trunc i8 %2451 to i1
  %2453 = zext i1 %2452 to i8
  store i8 %2453, ptr %124, align 1, !tbaa !42
  %2454 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 10
  %2455 = load i32, ptr %2454, align 4, !tbaa !194
  %2456 = load i32, ptr %121, align 4, !tbaa !9
  %2457 = icmp ne i32 %2455, %2456
  br i1 %2457, label %2461, label %2458

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

2461:                                             ; preds = %2458, %2449
  %2462 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2463 = load ptr, ptr %2462, align 8, !tbaa !190
  %2464 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2465 = load ptr, ptr %2464, align 8, !tbaa !190
  %2466 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 10
  %2467 = load i32, ptr %2466, align 4, !tbaa !194
  %2468 = sext i32 %2467 to i64
  %2469 = getelementptr inbounds i8, ptr %2465, i64 %2468
  %2470 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2463, ptr noundef %2469)
  %2471 = load ptr, ptr %43, align 8, !tbaa !5
  %2472 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2471, i32 0, i32 12
  %2473 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2472, i32 0, i32 0
  store i32 %2470, ptr %2473, align 4, !tbaa !160
  %2474 = load ptr, ptr %43, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2474, i32 0, i32 14
  store i8 1, ptr %2475, align 4, !tbaa !163
  br label %2476

2476:                                             ; preds = %2461, %2458
  %2477 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 11
  %2478 = load i32, ptr %2477, align 8, !tbaa !195
  %2479 = load i32, ptr %122, align 4, !tbaa !9
  %2480 = icmp ne i32 %2478, %2479
  br i1 %2480, label %2484, label %2481

2481:                                             ; preds = %2476
  %2482 = load i8, ptr %124, align 1, !tbaa !42, !range !40, !noundef !41
  %2483 = trunc i8 %2482 to i1
  br i1 %2483, label %2484, label %2510

2484:                                             ; preds = %2481, %2476
  %2485 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 11
  %2486 = load i32, ptr %2485, align 8, !tbaa !195
  %2487 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 10
  %2488 = load i32, ptr %2487, align 4, !tbaa !194
  %2489 = icmp eq i32 %2486, %2488
  br i1 %2489, label %2490, label %2495

2490:                                             ; preds = %2484
  %2491 = load ptr, ptr %43, align 8, !tbaa !5
  %2492 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2491, i32 0, i32 12
  %2493 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2492, i32 0, i32 0
  %2494 = load i32, ptr %2493, align 4, !tbaa !160
  br label %2505

2495:                                             ; preds = %2484
  %2496 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2497 = load ptr, ptr %2496, align 8, !tbaa !190
  %2498 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2499 = load ptr, ptr %2498, align 8, !tbaa !190
  %2500 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 11
  %2501 = load i32, ptr %2500, align 8, !tbaa !195
  %2502 = sext i32 %2501 to i64
  %2503 = getelementptr inbounds i8, ptr %2499, i64 %2502
  %2504 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2497, ptr noundef %2503)
  br label %2505

2505:                                             ; preds = %2495, %2490
  %2506 = phi i32 [ %2494, %2490 ], [ %2504, %2495 ]
  %2507 = load ptr, ptr %43, align 8, !tbaa !5
  %2508 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2507, i32 0, i32 12
  %2509 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2508, i32 0, i32 1
  store i32 %2506, ptr %2509, align 4, !tbaa !161
  br label %2510

2510:                                             ; preds = %2505, %2481
  %2511 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 12
  %2512 = load i32, ptr %2511, align 4, !tbaa !196
  %2513 = load i32, ptr %123, align 4, !tbaa !9
  %2514 = icmp ne i32 %2512, %2513
  br i1 %2514, label %2518, label %2515

2515:                                             ; preds = %2510
  %2516 = load i8, ptr %124, align 1, !tbaa !42, !range !40, !noundef !41
  %2517 = trunc i8 %2516 to i1
  br i1 %2517, label %2518, label %2544

2518:                                             ; preds = %2515, %2510
  %2519 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 12
  %2520 = load i32, ptr %2519, align 4, !tbaa !196
  %2521 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 11
  %2522 = load i32, ptr %2521, align 8, !tbaa !195
  %2523 = icmp eq i32 %2520, %2522
  br i1 %2523, label %2524, label %2529

2524:                                             ; preds = %2518
  %2525 = load ptr, ptr %43, align 8, !tbaa !5
  %2526 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2525, i32 0, i32 12
  %2527 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2526, i32 0, i32 1
  %2528 = load i32, ptr %2527, align 4, !tbaa !161
  br label %2539

2529:                                             ; preds = %2518
  %2530 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2531 = load ptr, ptr %2530, align 8, !tbaa !190
  %2532 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2533 = load ptr, ptr %2532, align 8, !tbaa !190
  %2534 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 12
  %2535 = load i32, ptr %2534, align 4, !tbaa !196
  %2536 = sext i32 %2535 to i64
  %2537 = getelementptr inbounds i8, ptr %2533, i64 %2536
  %2538 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2531, ptr noundef %2537)
  br label %2539

2539:                                             ; preds = %2529, %2524
  %2540 = phi i32 [ %2528, %2524 ], [ %2538, %2529 ]
  %2541 = load ptr, ptr %43, align 8, !tbaa !5
  %2542 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2541, i32 0, i32 12
  %2543 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2542, i32 0, i32 2
  store i32 %2540, ptr %2543, align 4, !tbaa !162
  br label %2544

2544:                                             ; preds = %2539, %2515
  %2545 = load i8, ptr %124, align 1, !tbaa !42, !range !40, !noundef !41
  %2546 = trunc i8 %2545 to i1
  br i1 %2546, label %2547, label %2609

2547:                                             ; preds = %2544
  %2548 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %2549 = trunc i8 %2548 to i1
  %2550 = xor i1 %2549, true
  br i1 %2550, label %2551, label %2552

2551:                                             ; preds = %2547
  br label %2554

2552:                                             ; preds = %2547
  call void @__assert_fail(ptr noundef @.str.69, ptr noundef @.str.4, i32 noundef 4704, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2553:                                             ; No predecessors!
  br label %2554

2554:                                             ; preds = %2553, %2551
  %2555 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 7
  %2556 = load i32, ptr %2555, align 8, !tbaa !191
  %2557 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2558 = load ptr, ptr %2557, align 8, !tbaa !190
  %2559 = call i64 @strlen(ptr noundef %2558) #16
  %2560 = trunc i64 %2559 to i32
  %2561 = icmp eq i32 %2556, %2560
  br i1 %2561, label %2562, label %2563

2562:                                             ; preds = %2554
  br label %2565

2563:                                             ; preds = %2554
  call void @__assert_fail(ptr noundef @.str.70, ptr noundef @.str.4, i32 noundef 4705, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2564:                                             ; No predecessors!
  br label %2565

2565:                                             ; preds = %2564, %2562
  %2566 = load ptr, ptr %43, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2568 = load ptr, ptr %2567, align 8, !tbaa !190
  %2569 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 7
  %2570 = load i32, ptr %2569, align 8, !tbaa !191
  call void @_ZL44InputTextReconcileUndoStateAfterUserCallbackP19ImGuiInputTextStatePKci(ptr noundef %2566, ptr noundef %2568, i32 noundef %2570)
  %2571 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 7
  %2572 = load i32, ptr %2571, align 8, !tbaa !191
  %2573 = load i32, ptr %71, align 4, !tbaa !9
  %2574 = icmp sgt i32 %2572, %2573
  br i1 %2574, label %2575, label %2590

2575:                                             ; preds = %2565
  %2576 = load i8, ptr %47, align 1, !tbaa !42, !range !40, !noundef !41
  %2577 = trunc i8 %2576 to i1
  br i1 %2577, label %2578, label %2590

2578:                                             ; preds = %2575
  %2579 = load ptr, ptr %43, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2579, i32 0, i32 5
  %2581 = load ptr, ptr %43, align 8, !tbaa !5
  %2582 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2581, i32 0, i32 5
  %2583 = getelementptr inbounds %struct.ImVector.5, ptr %2582, i32 0, i32 0
  %2584 = load i32, ptr %2583, align 8, !tbaa !136
  %2585 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 7
  %2586 = load i32, ptr %2585, align 8, !tbaa !191
  %2587 = load i32, ptr %71, align 4, !tbaa !9
  %2588 = sub nsw i32 %2586, %2587
  %2589 = add nsw i32 %2584, %2588
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2580, i32 noundef %2589)
  br label %2590

2590:                                             ; preds = %2578, %2575, %2565
  %2591 = load ptr, ptr %43, align 8, !tbaa !5
  %2592 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2591, i32 0, i32 5
  %2593 = getelementptr inbounds %struct.ImVector.5, ptr %2592, i32 0, i32 2
  %2594 = load ptr, ptr %2593, align 8, !tbaa !129
  %2595 = load ptr, ptr %43, align 8, !tbaa !5
  %2596 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2595, i32 0, i32 5
  %2597 = getelementptr inbounds %struct.ImVector.5, ptr %2596, i32 0, i32 0
  %2598 = load i32, ptr %2597, align 8, !tbaa !136
  %2599 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 6
  %2600 = load ptr, ptr %2599, align 8, !tbaa !190
  %2601 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2594, i32 noundef %2598, ptr noundef %2600, ptr noundef null, ptr noundef null)
  %2602 = load ptr, ptr %43, align 8, !tbaa !5
  %2603 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2602, i32 0, i32 2
  store i32 %2601, ptr %2603, align 4, !tbaa !130
  %2604 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %118, i32 0, i32 7
  %2605 = load i32, ptr %2604, align 8, !tbaa !191
  %2606 = load ptr, ptr %43, align 8, !tbaa !5
  %2607 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2606, i32 0, i32 3
  store i32 %2605, ptr %2607, align 8, !tbaa !126
  %2608 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %2608)
  br label %2609

2609:                                             ; preds = %2590, %2544
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #14
  call void @llvm.lifetime.end.p0(i64 64, ptr %118) #14
  br label %2610

2610:                                             ; preds = %2609, %2341
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #14
  br label %2611

2611:                                             ; preds = %2610, %2290
  %2612 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %2613 = trunc i8 %2612 to i1
  br i1 %2613, label %2630, label %2614

2614:                                             ; preds = %2611
  %2615 = load ptr, ptr %43, align 8, !tbaa !5
  %2616 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2615, i32 0, i32 6
  %2617 = getelementptr inbounds %struct.ImVector.31, ptr %2616, i32 0, i32 2
  %2618 = load ptr, ptr %2617, align 8, !tbaa !128
  %2619 = load ptr, ptr %12, align 8, !tbaa !5
  %2620 = call i32 @strcmp(ptr noundef %2618, ptr noundef %2619) #16
  %2621 = icmp ne i32 %2620, 0
  br i1 %2621, label %2622, label %2630

2622:                                             ; preds = %2614
  %2623 = load ptr, ptr %43, align 8, !tbaa !5
  %2624 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2623, i32 0, i32 6
  %2625 = getelementptr inbounds %struct.ImVector.31, ptr %2624, i32 0, i32 2
  %2626 = load ptr, ptr %2625, align 8, !tbaa !128
  store ptr %2626, ptr %109, align 8, !tbaa !5
  %2627 = load ptr, ptr %43, align 8, !tbaa !5
  %2628 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2627, i32 0, i32 3
  %2629 = load i32, ptr %2628, align 8, !tbaa !126
  store i32 %2629, ptr %110, align 4, !tbaa !9
  store i8 1, ptr %64, align 1, !tbaa !42
  br label %2630

2630:                                             ; preds = %2622, %2614, %2611
  br label %2631

2631:                                             ; preds = %2630, %2285
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #14
  br label %2632

2632:                                             ; preds = %2631, %2148
  %2633 = load ptr, ptr %20, align 8, !tbaa !5
  %2634 = getelementptr inbounds %struct.ImGuiContext, ptr %2633, i32 0, i32 193
  %2635 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2634, i32 0, i32 0
  %2636 = load i32, ptr %2635, align 8, !tbaa !197
  %2637 = load i32, ptr %25, align 4, !tbaa !9
  %2638 = icmp eq i32 %2636, %2637
  br i1 %2638, label %2639, label %2675

2639:                                             ; preds = %2632
  %2640 = load ptr, ptr %20, align 8, !tbaa !5
  %2641 = getelementptr inbounds %struct.ImGuiContext, ptr %2640, i32 0, i32 48
  %2642 = load i32, ptr %2641, align 4, !tbaa !111
  %2643 = load i32, ptr %25, align 4, !tbaa !9
  %2644 = icmp ne i32 %2642, %2643
  br i1 %2644, label %2645, label %2671

2645:                                             ; preds = %2639
  %2646 = call noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv()
  br i1 %2646, label %2647, label %2671

2647:                                             ; preds = %2645
  %2648 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %2649 = trunc i8 %2648 to i1
  br i1 %2649, label %2671, label %2650

2650:                                             ; preds = %2647
  %2651 = load ptr, ptr %20, align 8, !tbaa !5
  %2652 = getelementptr inbounds %struct.ImGuiContext, ptr %2651, i32 0, i32 193
  %2653 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2652, i32 0, i32 1
  %2654 = getelementptr inbounds %struct.ImVector.31, ptr %2653, i32 0, i32 2
  %2655 = load ptr, ptr %2654, align 8, !tbaa !198
  %2656 = load ptr, ptr %12, align 8, !tbaa !5
  %2657 = call i32 @strcmp(ptr noundef %2655, ptr noundef %2656) #16
  %2658 = icmp ne i32 %2657, 0
  br i1 %2658, label %2659, label %2671

2659:                                             ; preds = %2650
  %2660 = load ptr, ptr %20, align 8, !tbaa !5
  %2661 = getelementptr inbounds %struct.ImGuiContext, ptr %2660, i32 0, i32 193
  %2662 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2661, i32 0, i32 1
  %2663 = getelementptr inbounds %struct.ImVector.31, ptr %2662, i32 0, i32 2
  %2664 = load ptr, ptr %2663, align 8, !tbaa !198
  store ptr %2664, ptr %109, align 8, !tbaa !5
  %2665 = load ptr, ptr %20, align 8, !tbaa !5
  %2666 = getelementptr inbounds %struct.ImGuiContext, ptr %2665, i32 0, i32 193
  %2667 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2666, i32 0, i32 1
  %2668 = getelementptr inbounds %struct.ImVector.31, ptr %2667, i32 0, i32 0
  %2669 = load i32, ptr %2668, align 8, !tbaa !199
  %2670 = sub nsw i32 %2669, 1
  store i32 %2670, ptr %110, align 4, !tbaa !9
  store i8 1, ptr %64, align 1, !tbaa !42
  br label %2671

2671:                                             ; preds = %2659, %2650, %2647, %2645, %2639
  %2672 = load ptr, ptr %20, align 8, !tbaa !5
  %2673 = getelementptr inbounds %struct.ImGuiContext, ptr %2672, i32 0, i32 193
  %2674 = getelementptr inbounds %struct.ImGuiInputTextDeactivatedState, ptr %2673, i32 0, i32 0
  store i32 0, ptr %2674, align 8, !tbaa !197
  br label %2675

2675:                                             ; preds = %2671, %2632
  %2676 = load ptr, ptr %109, align 8, !tbaa !5
  %2677 = icmp ne ptr %2676, null
  br i1 %2677, label %2678, label %2730

2678:                                             ; preds = %2675
  %2679 = load i32, ptr %110, align 4, !tbaa !9
  %2680 = icmp sge i32 %2679, 0
  br i1 %2680, label %2681, label %2682

2681:                                             ; preds = %2678
  br label %2684

2682:                                             ; preds = %2678
  call void @__assert_fail(ptr noundef @.str.71, ptr noundef @.str.4, i32 noundef 4745, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2683:                                             ; No predecessors!
  br label %2684

2684:                                             ; preds = %2683, %2681
  %2685 = load i8, ptr %47, align 1, !tbaa !42, !range !40, !noundef !41
  %2686 = trunc i8 %2685 to i1
  br i1 %2686, label %2687, label %2722

2687:                                             ; preds = %2684
  call void @llvm.lifetime.start.p0(i64 64, ptr %125) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %125)
  %2688 = load ptr, ptr %20, align 8, !tbaa !5
  %2689 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 0
  store ptr %2688, ptr %2689, align 8, !tbaa !184
  %2690 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 1
  store i32 262144, ptr %2690, align 8, !tbaa !186
  %2691 = load i32, ptr %15, align 4, !tbaa !9
  %2692 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 2
  store i32 %2691, ptr %2692, align 4, !tbaa !187
  %2693 = load ptr, ptr %12, align 8, !tbaa !5
  %2694 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 6
  store ptr %2693, ptr %2694, align 8, !tbaa !190
  %2695 = load i32, ptr %110, align 4, !tbaa !9
  %2696 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 7
  store i32 %2695, ptr %2696, align 8, !tbaa !191
  %2697 = load i32, ptr %13, align 4, !tbaa !9
  %2698 = load i32, ptr %110, align 4, !tbaa !9
  %2699 = add nsw i32 %2698, 1
  %2700 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2697, i32 noundef %2699)
  %2701 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 8
  store i32 %2700, ptr %2701, align 4, !tbaa !192
  %2702 = load ptr, ptr %17, align 8, !tbaa !5
  %2703 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 3
  store ptr %2702, ptr %2703, align 8, !tbaa !188
  %2704 = load ptr, ptr %16, align 8, !tbaa !5
  %2705 = call noundef i32 %2704(ptr noundef %125)
  %2706 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 6
  %2707 = load ptr, ptr %2706, align 8, !tbaa !190
  store ptr %2707, ptr %12, align 8, !tbaa !5
  %2708 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 8
  %2709 = load i32, ptr %2708, align 4, !tbaa !192
  store i32 %2709, ptr %13, align 4, !tbaa !9
  %2710 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %125, i32 0, i32 7
  %2711 = load i32, ptr %2710, align 8, !tbaa !191
  %2712 = load i32, ptr %13, align 4, !tbaa !9
  %2713 = sub nsw i32 %2712, 1
  %2714 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2711, i32 noundef %2713)
  store i32 %2714, ptr %110, align 4, !tbaa !9
  %2715 = load i32, ptr %110, align 4, !tbaa !9
  %2716 = load i32, ptr %13, align 4, !tbaa !9
  %2717 = icmp sle i32 %2715, %2716
  br i1 %2717, label %2718, label %2719

2718:                                             ; preds = %2687
  br label %2721

2719:                                             ; preds = %2687
  call void @__assert_fail(ptr noundef @.str.72, ptr noundef @.str.4, i32 noundef 4760, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2720:                                             ; No predecessors!
  br label %2721

2721:                                             ; preds = %2720, %2718
  call void @llvm.lifetime.end.p0(i64 64, ptr %125) #14
  br label %2722

2722:                                             ; preds = %2721, %2684
  %2723 = load ptr, ptr %12, align 8, !tbaa !5
  %2724 = load ptr, ptr %109, align 8, !tbaa !5
  %2725 = load i32, ptr %110, align 4, !tbaa !9
  %2726 = add nsw i32 %2725, 1
  %2727 = load i32, ptr %13, align 4, !tbaa !9
  %2728 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2726, i32 noundef %2727)
  %2729 = sext i32 %2728 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2723, ptr noundef %2724, i64 noundef %2729)
  br label %2730

2730:                                             ; preds = %2722, %2675
  %2731 = load ptr, ptr %20, align 8, !tbaa !5
  %2732 = getelementptr inbounds %struct.ImGuiContext, ptr %2731, i32 0, i32 48
  %2733 = load i32, ptr %2732, align 4, !tbaa !111
  %2734 = load i32, ptr %25, align 4, !tbaa !9
  %2735 = icmp eq i32 %2733, %2734
  br i1 %2735, label %2736, label %2740

2736:                                             ; preds = %2730
  %2737 = load i8, ptr %52, align 1, !tbaa !42, !range !40, !noundef !41
  %2738 = trunc i8 %2737 to i1
  br i1 %2738, label %2739, label %2740

2739:                                             ; preds = %2736
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2750

2740:                                             ; preds = %2736, %2730
  %2741 = load ptr, ptr %20, align 8, !tbaa !5
  %2742 = getelementptr inbounds %struct.ImGuiContext, ptr %2741, i32 0, i32 48
  %2743 = load i32, ptr %2742, align 4, !tbaa !111
  %2744 = load i32, ptr %25, align 4, !tbaa !9
  %2745 = icmp eq i32 %2743, %2744
  br i1 %2745, label %2746, label %2749

2746:                                             ; preds = %2740
  %2747 = load ptr, ptr %20, align 8, !tbaa !5
  %2748 = getelementptr inbounds %struct.ImGuiContext, ptr %2747, i32 0, i32 265
  store i32 1, ptr %2748, align 8, !tbaa !200
  br label %2749

2749:                                             ; preds = %2746, %2740
  br label %2750

2750:                                             ; preds = %2749, %2739
  %2751 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2752 = trunc i8 %2751 to i1
  br i1 %2752, label %2763, label %2753

2753:                                             ; preds = %2750
  %2754 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %30, i32 noundef %2754, i32 noundef 1)
  %2755 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %126, ptr align 4 %2755, i64 8, i1 false), !tbaa.struct !43
  %2756 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %127, ptr align 4 %2756, i64 8, i1 false), !tbaa.struct !43
  %2757 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2758 = load ptr, ptr %22, align 8, !tbaa !5
  %2759 = getelementptr inbounds %struct.ImGuiStyle, ptr %2758, i32 0, i32 13
  %2760 = load float, ptr %2759, align 4, !tbaa !112
  %2761 = load <2 x float>, ptr %126, align 4
  %2762 = load <2 x float>, ptr %127, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2761, <2 x float> %2762, i32 noundef %2757, i1 noundef zeroext true, float noundef %2760)
  br label %2763

2763:                                             ; preds = %2753, %2750
  call void @llvm.lifetime.start.p0(i64 16, ptr %128) #14
  %2764 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2765 = getelementptr inbounds %struct.ImVec2, ptr %2764, i32 0, i32 0
  %2766 = load float, ptr %2765, align 4, !tbaa !153
  %2767 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2768 = getelementptr inbounds %struct.ImVec2, ptr %2767, i32 0, i32 1
  %2769 = load float, ptr %2768, align 4, !tbaa !201
  %2770 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2771 = getelementptr inbounds %struct.ImVec2, ptr %2770, i32 0, i32 0
  %2772 = load float, ptr %2771, align 4, !tbaa !153
  %2773 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %2774 = load float, ptr %2773, align 4, !tbaa !106
  %2775 = fadd float %2772, %2774
  %2776 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2777 = getelementptr inbounds %struct.ImVec2, ptr %2776, i32 0, i32 1
  %2778 = load float, ptr %2777, align 4, !tbaa !201
  %2779 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %2780 = load float, ptr %2779, align 4, !tbaa !104
  %2781 = fadd float %2778, %2780
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %128, float noundef %2766, float noundef %2769, float noundef %2775, float noundef %2781)
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #14
  %2782 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2783 = trunc i8 %2782 to i1
  br i1 %2783, label %2784, label %2788

2784:                                             ; preds = %2763
  %2785 = load ptr, ptr %34, align 8, !tbaa !5
  %2786 = getelementptr inbounds %struct.ImGuiWindow, ptr %2785, i32 0, i32 68
  %2787 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2786, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %129, ptr align 8 %2787, i64 8, i1 false), !tbaa.struct !43
  br label %2793

2788:                                             ; preds = %2763
  %2789 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2790 = load ptr, ptr %22, align 8, !tbaa !5
  %2791 = getelementptr inbounds %struct.ImGuiStyle, ptr %2790, i32 0, i32 12
  %2792 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2789, ptr noundef nonnull align 4 dereferenceable(8) %2791)
  store <2 x float> %2792, ptr %129, align 4
  br label %2793

2793:                                             ; preds = %2788, %2784
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %130, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #14
  store i32 2097152, ptr %131, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  %2794 = load i8, ptr %67, align 1, !tbaa !42, !range !40, !noundef !41
  %2795 = trunc i8 %2794 to i1
  br i1 %2795, label %2796, label %2801

2796:                                             ; preds = %2793
  %2797 = load ptr, ptr %43, align 8, !tbaa !5
  %2798 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2797, i32 0, i32 6
  %2799 = getelementptr inbounds %struct.ImVector.31, ptr %2798, i32 0, i32 2
  %2800 = load ptr, ptr %2799, align 8, !tbaa !128
  br label %2803

2801:                                             ; preds = %2793
  %2802 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2803

2803:                                             ; preds = %2801, %2796
  %2804 = phi ptr [ %2800, %2796 ], [ %2802, %2801 ]
  store ptr %2804, ptr %132, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #14
  store ptr null, ptr %133, align 8, !tbaa !5
  %2805 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2806 = trunc i8 %2805 to i1
  br i1 %2806, label %2807, label %2813

2807:                                             ; preds = %2803
  %2808 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2808, ptr %132, align 8, !tbaa !5
  %2809 = load ptr, ptr %11, align 8, !tbaa !5
  %2810 = load ptr, ptr %11, align 8, !tbaa !5
  %2811 = call i64 @strlen(ptr noundef %2810) #16
  %2812 = getelementptr inbounds i8, ptr %2809, i64 %2811
  store ptr %2812, ptr %133, align 8, !tbaa !5
  br label %2813

2813:                                             ; preds = %2807, %2803
  %2814 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2815 = trunc i8 %2814 to i1
  br i1 %2815, label %2819, label %2816

2816:                                             ; preds = %2813
  %2817 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2818 = trunc i8 %2817 to i1
  br i1 %2818, label %2819, label %3405

2819:                                             ; preds = %2816, %2813
  %2820 = load ptr, ptr %43, align 8, !tbaa !5
  %2821 = icmp ne ptr %2820, null
  br i1 %2821, label %2822, label %2823

2822:                                             ; preds = %2819
  br label %2825

2823:                                             ; preds = %2819
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.4, i32 noundef 4802, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2824:                                             ; No predecessors!
  br label %2825

2825:                                             ; preds = %2824, %2822
  %2826 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %2827 = trunc i8 %2826 to i1
  br i1 %2827, label %2835, label %2828

2828:                                             ; preds = %2825
  %2829 = load ptr, ptr %132, align 8, !tbaa !5
  %2830 = load ptr, ptr %43, align 8, !tbaa !5
  %2831 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2830, i32 0, i32 3
  %2832 = load i32, ptr %2831, align 8, !tbaa !126
  %2833 = sext i32 %2832 to i64
  %2834 = getelementptr inbounds i8, ptr %2829, i64 %2833
  store ptr %2834, ptr %133, align 8, !tbaa !5
  br label %2835

2835:                                             ; preds = %2828, %2825
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #14
  %2836 = load ptr, ptr %43, align 8, !tbaa !5
  %2837 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2836, i32 0, i32 5
  %2838 = getelementptr inbounds %struct.ImVector.5, ptr %2837, i32 0, i32 2
  %2839 = load ptr, ptr %2838, align 8, !tbaa !129
  store ptr %2839, ptr %134, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %135)
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %136)
  call void @llvm.lifetime.start.p0(i64 16, ptr %137) #14
  call void @llvm.memset.p0.i64(ptr align 16 %137, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %138, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #14
  store i32 0, ptr %139, align 4, !tbaa !9
  %2840 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %2841 = trunc i8 %2840 to i1
  br i1 %2841, label %2842, label %2854

2842:                                             ; preds = %2835
  %2843 = load ptr, ptr %134, align 8, !tbaa !5
  %2844 = load ptr, ptr %43, align 8, !tbaa !5
  %2845 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2844, i32 0, i32 12
  %2846 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2845, i32 0, i32 0
  %2847 = load i32, ptr %2846, align 4, !tbaa !160
  %2848 = sext i32 %2847 to i64
  %2849 = getelementptr inbounds i16, ptr %2843, i64 %2848
  %2850 = getelementptr inbounds [2 x ptr], ptr %137, i64 0, i64 0
  store ptr %2849, ptr %2850, align 16, !tbaa !5
  %2851 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 0
  store i32 -1, ptr %2851, align 4, !tbaa !9
  %2852 = load i32, ptr %139, align 4, !tbaa !9
  %2853 = add nsw i32 %2852, 1
  store i32 %2853, ptr %139, align 4, !tbaa !9
  br label %2854

2854:                                             ; preds = %2842, %2835
  %2855 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %2856 = trunc i8 %2855 to i1
  br i1 %2856, label %2857, label %2874

2857:                                             ; preds = %2854
  %2858 = load ptr, ptr %134, align 8, !tbaa !5
  %2859 = load ptr, ptr %43, align 8, !tbaa !5
  %2860 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2859, i32 0, i32 12
  %2861 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2860, i32 0, i32 1
  %2862 = load i32, ptr %2861, align 4, !tbaa !161
  %2863 = load ptr, ptr %43, align 8, !tbaa !5
  %2864 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2863, i32 0, i32 12
  %2865 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2864, i32 0, i32 2
  %2866 = load i32, ptr %2865, align 4, !tbaa !162
  %2867 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2862, i32 noundef %2866)
  %2868 = sext i32 %2867 to i64
  %2869 = getelementptr inbounds i16, ptr %2858, i64 %2868
  %2870 = getelementptr inbounds [2 x ptr], ptr %137, i64 0, i64 1
  store ptr %2869, ptr %2870, align 8, !tbaa !5
  %2871 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 1
  store i32 -1, ptr %2871, align 4, !tbaa !9
  %2872 = load i32, ptr %139, align 4, !tbaa !9
  %2873 = add nsw i32 %2872, 1
  store i32 %2873, ptr %139, align 4, !tbaa !9
  br label %2874

2874:                                             ; preds = %2857, %2854
  %2875 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2876 = trunc i8 %2875 to i1
  %2877 = zext i1 %2876 to i64
  %2878 = select i1 %2876, i32 1, i32 0
  %2879 = load i32, ptr %139, align 4, !tbaa !9
  %2880 = add nsw i32 %2879, %2878
  store i32 %2880, ptr %139, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #14
  store i32 0, ptr %140, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #14
  %2881 = load ptr, ptr %134, align 8, !tbaa !5
  store ptr %2881, ptr %141, align 8, !tbaa !5
  br label %2882

2882:                                             ; preds = %2931, %2874
  %2883 = load ptr, ptr %141, align 8, !tbaa !5
  %2884 = load i16, ptr %2883, align 2, !tbaa !158
  %2885 = zext i16 %2884 to i32
  %2886 = icmp ne i32 %2885, 0
  br i1 %2886, label %2888, label %2887

2887:                                             ; preds = %2882
  store i32 7, ptr %19, align 4
  br label %2934

2888:                                             ; preds = %2882
  %2889 = load ptr, ptr %141, align 8, !tbaa !5
  %2890 = load i16, ptr %2889, align 2, !tbaa !158
  %2891 = zext i16 %2890 to i32
  %2892 = icmp eq i32 %2891, 10
  br i1 %2892, label %2893, label %2930

2893:                                             ; preds = %2888
  %2894 = load i32, ptr %140, align 4, !tbaa !9
  %2895 = add nsw i32 %2894, 1
  store i32 %2895, ptr %140, align 4, !tbaa !9
  %2896 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 0
  %2897 = load i32, ptr %2896, align 4, !tbaa !9
  %2898 = icmp eq i32 %2897, -1
  br i1 %2898, label %2899, label %2912

2899:                                             ; preds = %2893
  %2900 = load ptr, ptr %141, align 8, !tbaa !5
  %2901 = getelementptr inbounds [2 x ptr], ptr %137, i64 0, i64 0
  %2902 = load ptr, ptr %2901, align 16, !tbaa !5
  %2903 = icmp uge ptr %2900, %2902
  br i1 %2903, label %2904, label %2912

2904:                                             ; preds = %2899
  %2905 = load i32, ptr %140, align 4, !tbaa !9
  %2906 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 0
  store i32 %2905, ptr %2906, align 4, !tbaa !9
  %2907 = load i32, ptr %139, align 4, !tbaa !9
  %2908 = add nsw i32 %2907, -1
  store i32 %2908, ptr %139, align 4, !tbaa !9
  %2909 = icmp sle i32 %2908, 0
  br i1 %2909, label %2910, label %2911

2910:                                             ; preds = %2904
  store i32 7, ptr %19, align 4
  br label %2934

2911:                                             ; preds = %2904
  br label %2912

2912:                                             ; preds = %2911, %2899, %2893
  %2913 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 1
  %2914 = load i32, ptr %2913, align 4, !tbaa !9
  %2915 = icmp eq i32 %2914, -1
  br i1 %2915, label %2916, label %2929

2916:                                             ; preds = %2912
  %2917 = load ptr, ptr %141, align 8, !tbaa !5
  %2918 = getelementptr inbounds [2 x ptr], ptr %137, i64 0, i64 1
  %2919 = load ptr, ptr %2918, align 8, !tbaa !5
  %2920 = icmp uge ptr %2917, %2919
  br i1 %2920, label %2921, label %2929

2921:                                             ; preds = %2916
  %2922 = load i32, ptr %140, align 4, !tbaa !9
  %2923 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 1
  store i32 %2922, ptr %2923, align 4, !tbaa !9
  %2924 = load i32, ptr %139, align 4, !tbaa !9
  %2925 = add nsw i32 %2924, -1
  store i32 %2925, ptr %139, align 4, !tbaa !9
  %2926 = icmp sle i32 %2925, 0
  br i1 %2926, label %2927, label %2928

2927:                                             ; preds = %2921
  store i32 7, ptr %19, align 4
  br label %2934

2928:                                             ; preds = %2921
  br label %2929

2929:                                             ; preds = %2928, %2916, %2912
  br label %2930

2930:                                             ; preds = %2929, %2888
  br label %2931

2931:                                             ; preds = %2930
  %2932 = load ptr, ptr %141, align 8, !tbaa !5
  %2933 = getelementptr inbounds i16, ptr %2932, i32 1
  store ptr %2933, ptr %141, align 8, !tbaa !5
  br label %2882, !llvm.loop !202

2934:                                             ; preds = %2927, %2910, %2887
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #14
  br label %2935

2935:                                             ; preds = %2934
  %2936 = load i32, ptr %140, align 4, !tbaa !9
  %2937 = add nsw i32 %2936, 1
  store i32 %2937, ptr %140, align 4, !tbaa !9
  %2938 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 0
  %2939 = load i32, ptr %2938, align 4, !tbaa !9
  %2940 = icmp eq i32 %2939, -1
  br i1 %2940, label %2941, label %2944

2941:                                             ; preds = %2935
  %2942 = load i32, ptr %140, align 4, !tbaa !9
  %2943 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 0
  store i32 %2942, ptr %2943, align 4, !tbaa !9
  br label %2944

2944:                                             ; preds = %2941, %2935
  %2945 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 1
  %2946 = load i32, ptr %2945, align 4, !tbaa !9
  %2947 = icmp eq i32 %2946, -1
  br i1 %2947, label %2948, label %2951

2948:                                             ; preds = %2944
  %2949 = load i32, ptr %140, align 4, !tbaa !9
  %2950 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 1
  store i32 %2949, ptr %2950, align 4, !tbaa !9
  br label %2951

2951:                                             ; preds = %2948, %2944
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #14
  %2952 = load ptr, ptr %20, align 8, !tbaa !5
  %2953 = getelementptr inbounds [2 x ptr], ptr %137, i64 0, i64 0
  %2954 = load ptr, ptr %2953, align 16, !tbaa !5
  %2955 = load ptr, ptr %134, align 8, !tbaa !5
  %2956 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2954, ptr noundef %2955)
  %2957 = getelementptr inbounds [2 x ptr], ptr %137, i64 0, i64 0
  %2958 = load ptr, ptr %2957, align 16, !tbaa !5
  %2959 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %2952, ptr noundef %2956, ptr noundef %2958, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2959, ptr %142, align 4
  %2960 = getelementptr inbounds %struct.ImVec2, ptr %142, i32 0, i32 0
  %2961 = load float, ptr %2960, align 4, !tbaa !106
  %2962 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 0
  store float %2961, ptr %2962, align 4, !tbaa !106
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #14
  %2963 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 0
  %2964 = load i32, ptr %2963, align 4, !tbaa !9
  %2965 = sitofp i32 %2964 to float
  %2966 = load ptr, ptr %20, align 8, !tbaa !5
  %2967 = getelementptr inbounds %struct.ImGuiContext, ptr %2966, i32 0, i32 5
  %2968 = load float, ptr %2967, align 8, !tbaa !45
  %2969 = fmul float %2965, %2968
  %2970 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 1
  store float %2969, ptr %2970, align 4, !tbaa !104
  %2971 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 1
  %2972 = load i32, ptr %2971, align 4, !tbaa !9
  %2973 = icmp sge i32 %2972, 0
  br i1 %2973, label %2974, label %2994

2974:                                             ; preds = %2951
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #14
  %2975 = load ptr, ptr %20, align 8, !tbaa !5
  %2976 = getelementptr inbounds [2 x ptr], ptr %137, i64 0, i64 1
  %2977 = load ptr, ptr %2976, align 8, !tbaa !5
  %2978 = load ptr, ptr %134, align 8, !tbaa !5
  %2979 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2977, ptr noundef %2978)
  %2980 = getelementptr inbounds [2 x ptr], ptr %137, i64 0, i64 1
  %2981 = load ptr, ptr %2980, align 8, !tbaa !5
  %2982 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %2975, ptr noundef %2979, ptr noundef %2981, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2982, ptr %143, align 4
  %2983 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 0
  %2984 = load float, ptr %2983, align 4, !tbaa !106
  %2985 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  store float %2984, ptr %2985, align 4, !tbaa !106
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #14
  %2986 = getelementptr inbounds [2 x i32], ptr %138, i64 0, i64 1
  %2987 = load i32, ptr %2986, align 4, !tbaa !9
  %2988 = sitofp i32 %2987 to float
  %2989 = load ptr, ptr %20, align 8, !tbaa !5
  %2990 = getelementptr inbounds %struct.ImGuiContext, ptr %2989, i32 0, i32 5
  %2991 = load float, ptr %2990, align 8, !tbaa !45
  %2992 = fmul float %2988, %2991
  %2993 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 1
  store float %2992, ptr %2993, align 4, !tbaa !104
  br label %2994

2994:                                             ; preds = %2974, %2951
  %2995 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %2996 = trunc i8 %2995 to i1
  br i1 %2996, label %2997, label %3006

2997:                                             ; preds = %2994
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #14
  %2998 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %2999 = load float, ptr %2998, align 4, !tbaa !106
  %3000 = load i32, ptr %140, align 4, !tbaa !9
  %3001 = sitofp i32 %3000 to float
  %3002 = load ptr, ptr %20, align 8, !tbaa !5
  %3003 = getelementptr inbounds %struct.ImGuiContext, ptr %3002, i32 0, i32 5
  %3004 = load float, ptr %3003, align 8, !tbaa !45
  %3005 = fmul float %3001, %3004
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %144, float noundef %2999, float noundef %3005)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 4 %144, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #14
  br label %3006

3006:                                             ; preds = %2997, %2994
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %137) #14
  %3007 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3008 = trunc i8 %3007 to i1
  br i1 %3008, label %3009, label %3147

3009:                                             ; preds = %3006
  %3010 = load ptr, ptr %43, align 8, !tbaa !5
  %3011 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3010, i32 0, i32 14
  %3012 = load i8, ptr %3011, align 4, !tbaa !163, !range !40, !noundef !41
  %3013 = trunc i8 %3012 to i1
  br i1 %3013, label %3014, label %3147

3014:                                             ; preds = %3009
  %3015 = load i32, ptr %15, align 4, !tbaa !9
  %3016 = and i32 %3015, 4096
  %3017 = icmp ne i32 %3016, 0
  br i1 %3017, label %3067, label %3018

3018:                                             ; preds = %3014
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #14
  %3019 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3020 = load float, ptr %3019, align 4, !tbaa !106
  %3021 = fmul float %3020, 2.500000e-01
  store float %3021, ptr %145, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #14
  %3022 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3023 = load float, ptr %3022, align 4, !tbaa !106
  %3024 = load ptr, ptr %22, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.ImGuiStyle, ptr %3024, i32 0, i32 12
  %3026 = getelementptr inbounds %struct.ImVec2, ptr %3025, i32 0, i32 0
  %3027 = load float, ptr %3026, align 4, !tbaa !154
  %3028 = fsub float %3023, %3027
  store float %3028, ptr %146, align 4, !tbaa !44
  %3029 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 0
  %3030 = load float, ptr %3029, align 4, !tbaa !106
  %3031 = load ptr, ptr %43, align 8, !tbaa !5
  %3032 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3031, i32 0, i32 11
  %3033 = load float, ptr %3032, align 8, !tbaa !131
  %3034 = fcmp olt float %3030, %3033
  br i1 %3034, label %3035, label %3045

3035:                                             ; preds = %3018
  %3036 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 0
  %3037 = load float, ptr %3036, align 4, !tbaa !106
  %3038 = load float, ptr %145, align 4, !tbaa !44
  %3039 = fsub float %3037, %3038
  %3040 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %3039)
  %3041 = fptosi float %3040 to i32
  %3042 = sitofp i32 %3041 to float
  %3043 = load ptr, ptr %43, align 8, !tbaa !5
  %3044 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3043, i32 0, i32 11
  store float %3042, ptr %3044, align 8, !tbaa !131
  br label %3066

3045:                                             ; preds = %3018
  %3046 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 0
  %3047 = load float, ptr %3046, align 4, !tbaa !106
  %3048 = load float, ptr %146, align 4, !tbaa !44
  %3049 = fsub float %3047, %3048
  %3050 = load ptr, ptr %43, align 8, !tbaa !5
  %3051 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3050, i32 0, i32 11
  %3052 = load float, ptr %3051, align 8, !tbaa !131
  %3053 = fcmp oge float %3049, %3052
  br i1 %3053, label %3054, label %3065

3054:                                             ; preds = %3045
  %3055 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 0
  %3056 = load float, ptr %3055, align 4, !tbaa !106
  %3057 = load float, ptr %146, align 4, !tbaa !44
  %3058 = fsub float %3056, %3057
  %3059 = load float, ptr %145, align 4, !tbaa !44
  %3060 = fadd float %3058, %3059
  %3061 = fptosi float %3060 to i32
  %3062 = sitofp i32 %3061 to float
  %3063 = load ptr, ptr %43, align 8, !tbaa !5
  %3064 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3063, i32 0, i32 11
  store float %3062, ptr %3064, align 8, !tbaa !131
  br label %3065

3065:                                             ; preds = %3054, %3045
  br label %3066

3066:                                             ; preds = %3065, %3035
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #14
  br label %3070

3067:                                             ; preds = %3014
  %3068 = load ptr, ptr %43, align 8, !tbaa !5
  %3069 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3068, i32 0, i32 11
  store float 0.000000e+00, ptr %3069, align 8, !tbaa !131
  br label %3070

3070:                                             ; preds = %3067, %3066
  %3071 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3072 = trunc i8 %3071 to i1
  br i1 %3072, label %3073, label %3144

3073:                                             ; preds = %3070
  %3074 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 1
  %3075 = load float, ptr %3074, align 4, !tbaa !104
  %3076 = load ptr, ptr %20, align 8, !tbaa !5
  %3077 = getelementptr inbounds %struct.ImGuiContext, ptr %3076, i32 0, i32 5
  %3078 = load float, ptr %3077, align 8, !tbaa !45
  %3079 = fsub float %3075, %3078
  %3080 = load float, ptr %54, align 4, !tbaa !44
  %3081 = fcmp olt float %3079, %3080
  br i1 %3081, label %3082, label %3090

3082:                                             ; preds = %3073
  %3083 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 1
  %3084 = load float, ptr %3083, align 4, !tbaa !104
  %3085 = load ptr, ptr %20, align 8, !tbaa !5
  %3086 = getelementptr inbounds %struct.ImGuiContext, ptr %3085, i32 0, i32 5
  %3087 = load float, ptr %3086, align 8, !tbaa !45
  %3088 = fsub float %3084, %3087
  %3089 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %3088)
  store float %3089, ptr %54, align 4, !tbaa !44
  br label %3116

3090:                                             ; preds = %3073
  %3091 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 1
  %3092 = load float, ptr %3091, align 4, !tbaa !104
  %3093 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3094 = load float, ptr %3093, align 4, !tbaa !104
  %3095 = load ptr, ptr %22, align 8, !tbaa !5
  %3096 = getelementptr inbounds %struct.ImGuiStyle, ptr %3095, i32 0, i32 12
  %3097 = getelementptr inbounds %struct.ImVec2, ptr %3096, i32 0, i32 1
  %3098 = load float, ptr %3097, align 4, !tbaa !105
  %3099 = fneg float %3098
  %3100 = call float @llvm.fmuladd.f32(float %3099, float 2.000000e+00, float %3094)
  %3101 = fsub float %3092, %3100
  %3102 = load float, ptr %54, align 4, !tbaa !44
  %3103 = fcmp oge float %3101, %3102
  br i1 %3103, label %3104, label %3115

3104:                                             ; preds = %3090
  %3105 = getelementptr inbounds %struct.ImVec2, ptr %135, i32 0, i32 1
  %3106 = load float, ptr %3105, align 4, !tbaa !104
  %3107 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3108 = load float, ptr %3107, align 4, !tbaa !104
  %3109 = fsub float %3106, %3108
  %3110 = load ptr, ptr %22, align 8, !tbaa !5
  %3111 = getelementptr inbounds %struct.ImGuiStyle, ptr %3110, i32 0, i32 12
  %3112 = getelementptr inbounds %struct.ImVec2, ptr %3111, i32 0, i32 1
  %3113 = load float, ptr %3112, align 4, !tbaa !105
  %3114 = call float @llvm.fmuladd.f32(float %3113, float 2.000000e+00, float %3109)
  store float %3114, ptr %54, align 4, !tbaa !44
  br label %3115

3115:                                             ; preds = %3104, %3090
  br label %3116

3116:                                             ; preds = %3115, %3082
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #14
  %3117 = getelementptr inbounds %struct.ImVec2, ptr %130, i32 0, i32 1
  %3118 = load float, ptr %3117, align 4, !tbaa !104
  %3119 = load ptr, ptr %22, align 8, !tbaa !5
  %3120 = getelementptr inbounds %struct.ImGuiStyle, ptr %3119, i32 0, i32 12
  %3121 = getelementptr inbounds %struct.ImVec2, ptr %3120, i32 0, i32 1
  %3122 = load float, ptr %3121, align 4, !tbaa !105
  %3123 = call float @llvm.fmuladd.f32(float %3122, float 2.000000e+00, float %3118)
  %3124 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 1
  %3125 = load float, ptr %3124, align 4, !tbaa !104
  %3126 = fsub float %3123, %3125
  %3127 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %3126, float noundef 0.000000e+00)
  store float %3127, ptr %147, align 4, !tbaa !44
  %3128 = load float, ptr %54, align 4, !tbaa !44
  %3129 = load float, ptr %147, align 4, !tbaa !44
  %3130 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %3128, float noundef 0.000000e+00, float noundef %3129)
  store float %3130, ptr %54, align 4, !tbaa !44
  %3131 = load ptr, ptr %34, align 8, !tbaa !5
  %3132 = getelementptr inbounds %struct.ImGuiWindow, ptr %3131, i32 0, i32 25
  %3133 = getelementptr inbounds %struct.ImVec2, ptr %3132, i32 0, i32 1
  %3134 = load float, ptr %3133, align 4, !tbaa !122
  %3135 = load float, ptr %54, align 4, !tbaa !44
  %3136 = fsub float %3134, %3135
  %3137 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 1
  %3138 = load float, ptr %3137, align 4, !tbaa !104
  %3139 = fadd float %3138, %3136
  store float %3139, ptr %3137, align 4, !tbaa !104
  %3140 = load float, ptr %54, align 4, !tbaa !44
  %3141 = load ptr, ptr %34, align 8, !tbaa !5
  %3142 = getelementptr inbounds %struct.ImGuiWindow, ptr %3141, i32 0, i32 25
  %3143 = getelementptr inbounds %struct.ImVec2, ptr %3142, i32 0, i32 1
  store float %3140, ptr %3143, align 4, !tbaa !122
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #14
  br label %3144

3144:                                             ; preds = %3116, %3070
  %3145 = load ptr, ptr %43, align 8, !tbaa !5
  %3146 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3145, i32 0, i32 14
  store i8 0, ptr %3146, align 4, !tbaa !163
  br label %3147

3147:                                             ; preds = %3144, %3009, %3006
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #14
  %3148 = load ptr, ptr %43, align 8, !tbaa !5
  %3149 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3148, i32 0, i32 11
  %3150 = load float, ptr %3149, align 8, !tbaa !131
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %148, float noundef %3150, float noundef 0.000000e+00)
  %3151 = load i8, ptr %63, align 1, !tbaa !42, !range !40, !noundef !41
  %3152 = trunc i8 %3151 to i1
  br i1 %3152, label %3153, label %3282

3153:                                             ; preds = %3147
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #14
  %3154 = load ptr, ptr %134, align 8, !tbaa !5
  %3155 = load ptr, ptr %43, align 8, !tbaa !5
  %3156 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3155, i32 0, i32 12
  %3157 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3156, i32 0, i32 1
  %3158 = load i32, ptr %3157, align 4, !tbaa !161
  %3159 = load ptr, ptr %43, align 8, !tbaa !5
  %3160 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3159, i32 0, i32 12
  %3161 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3160, i32 0, i32 2
  %3162 = load i32, ptr %3161, align 4, !tbaa !162
  %3163 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %3158, i32 noundef %3162)
  %3164 = sext i32 %3163 to i64
  %3165 = getelementptr inbounds i16, ptr %3154, i64 %3164
  store ptr %3165, ptr %149, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #14
  %3166 = load ptr, ptr %134, align 8, !tbaa !5
  %3167 = load ptr, ptr %43, align 8, !tbaa !5
  %3168 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3167, i32 0, i32 12
  %3169 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3168, i32 0, i32 1
  %3170 = load i32, ptr %3169, align 4, !tbaa !161
  %3171 = load ptr, ptr %43, align 8, !tbaa !5
  %3172 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3171, i32 0, i32 12
  %3173 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %3172, i32 0, i32 2
  %3174 = load i32, ptr %3173, align 4, !tbaa !162
  %3175 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3170, i32 noundef %3174)
  %3176 = sext i32 %3175 to i64
  %3177 = getelementptr inbounds i16, ptr %3166, i64 %3176
  store ptr %3177, ptr %150, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #14
  %3178 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3179 = trunc i8 %3178 to i1
  %3180 = zext i1 %3179 to i64
  %3181 = select i1 %3179, float 1.000000e+00, float 0x3FE3333340000000
  %3182 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %3181)
  store i32 %3182, ptr %151, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #14
  %3183 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3184 = trunc i8 %3183 to i1
  %3185 = zext i1 %3184 to i64
  %3186 = select i1 %3184, float 0.000000e+00, float -1.000000e+00
  store float %3186, ptr %152, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #14
  %3187 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3188 = trunc i8 %3187 to i1
  %3189 = zext i1 %3188 to i64
  %3190 = select i1 %3188, float 0.000000e+00, float 2.000000e+00
  store float %3190, ptr %153, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #14
  %3191 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %129, ptr noundef nonnull align 4 dereferenceable(8) %136)
  store <2 x float> %3191, ptr %155, align 4
  %3192 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %155, ptr noundef nonnull align 4 dereferenceable(8) %148)
  store <2 x float> %3192, ptr %154, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #14
  %3193 = load ptr, ptr %149, align 8, !tbaa !5
  store ptr %3193, ptr %156, align 8, !tbaa !5
  br label %3194

3194:                                             ; preds = %3267, %3153
  %3195 = load ptr, ptr %156, align 8, !tbaa !5
  %3196 = load ptr, ptr %150, align 8, !tbaa !5
  %3197 = icmp ult ptr %3195, %3196
  br i1 %3197, label %3199, label %3198

3198:                                             ; preds = %3194
  store i32 10, ptr %19, align 4
  br label %3280

3199:                                             ; preds = %3194
  %3200 = getelementptr inbounds %struct.ImVec2, ptr %154, i32 0, i32 1
  %3201 = load float, ptr %3200, align 4, !tbaa !104
  %3202 = getelementptr inbounds %struct.ImVec4, ptr %128, i32 0, i32 3
  %3203 = load float, ptr %3202, align 4, !tbaa !203
  %3204 = load ptr, ptr %20, align 8, !tbaa !5
  %3205 = getelementptr inbounds %struct.ImGuiContext, ptr %3204, i32 0, i32 5
  %3206 = load float, ptr %3205, align 8, !tbaa !45
  %3207 = fadd float %3203, %3206
  %3208 = fcmp ogt float %3201, %3207
  br i1 %3208, label %3209, label %3210

3209:                                             ; preds = %3199
  store i32 10, ptr %19, align 4
  br label %3280

3210:                                             ; preds = %3199
  %3211 = getelementptr inbounds %struct.ImVec2, ptr %154, i32 0, i32 1
  %3212 = load float, ptr %3211, align 4, !tbaa !104
  %3213 = getelementptr inbounds %struct.ImVec4, ptr %128, i32 0, i32 1
  %3214 = load float, ptr %3213, align 4, !tbaa !204
  %3215 = fcmp olt float %3212, %3214
  br i1 %3215, label %3216, label %3230

3216:                                             ; preds = %3210
  br label %3217

3217:                                             ; preds = %3228, %3216
  %3218 = load ptr, ptr %156, align 8, !tbaa !5
  %3219 = load ptr, ptr %150, align 8, !tbaa !5
  %3220 = icmp ult ptr %3218, %3219
  br i1 %3220, label %3221, label %3229

3221:                                             ; preds = %3217
  %3222 = load ptr, ptr %156, align 8, !tbaa !5
  %3223 = getelementptr inbounds i16, ptr %3222, i32 1
  store ptr %3223, ptr %156, align 8, !tbaa !5
  %3224 = load i16, ptr %3222, align 2, !tbaa !158
  %3225 = zext i16 %3224 to i32
  %3226 = icmp eq i32 %3225, 10
  br i1 %3226, label %3227, label %3228

3227:                                             ; preds = %3221
  br label %3229

3228:                                             ; preds = %3221
  br label %3217, !llvm.loop !205

3229:                                             ; preds = %3227, %3217
  br label %3267

3230:                                             ; preds = %3210
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #14
  %3231 = load ptr, ptr %20, align 8, !tbaa !5
  %3232 = load ptr, ptr %156, align 8, !tbaa !5
  %3233 = load ptr, ptr %150, align 8, !tbaa !5
  %3234 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %3231, ptr noundef %3232, ptr noundef %3233, ptr noundef %156, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %3234, ptr %157, align 4
  %3235 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %3236 = load float, ptr %3235, align 4, !tbaa !106
  %3237 = fcmp ole float %3236, 0.000000e+00
  br i1 %3237, label %3238, label %3247

3238:                                             ; preds = %3230
  %3239 = load ptr, ptr %20, align 8, !tbaa !5
  %3240 = getelementptr inbounds %struct.ImGuiContext, ptr %3239, i32 0, i32 4
  %3241 = load ptr, ptr %3240, align 8, !tbaa !138
  %3242 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %3241, i16 noundef zeroext 32)
  %3243 = fmul float %3242, 5.000000e-01
  %3244 = fptosi float %3243 to i32
  %3245 = sitofp i32 %3244 to float
  %3246 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  store float %3245, ptr %3246, align 4, !tbaa !106
  br label %3247

3247:                                             ; preds = %3238, %3230
  call void @llvm.lifetime.start.p0(i64 16, ptr %158) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #14
  %3248 = load float, ptr %152, align 4, !tbaa !44
  %3249 = load ptr, ptr %20, align 8, !tbaa !5
  %3250 = getelementptr inbounds %struct.ImGuiContext, ptr %3249, i32 0, i32 5
  %3251 = load float, ptr %3250, align 8, !tbaa !45
  %3252 = fsub float %3248, %3251
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %160, float noundef 0.000000e+00, float noundef %3252)
  %3253 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %154, ptr noundef nonnull align 4 dereferenceable(8) %160)
  store <2 x float> %3253, ptr %159, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  %3254 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %3255 = load float, ptr %3254, align 4, !tbaa !106
  %3256 = load float, ptr %153, align 4, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %162, float noundef %3255, float noundef %3256)
  %3257 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %154, ptr noundef nonnull align 4 dereferenceable(8) %162)
  store <2 x float> %3257, ptr %161, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %158, ptr noundef nonnull align 4 dereferenceable(8) %159, ptr noundef nonnull align 4 dereferenceable(8) %161)
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %163, ptr noundef nonnull align 4 dereferenceable(16) %128)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %158, ptr noundef nonnull align 4 dereferenceable(16) %163)
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %164) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %164, ptr noundef nonnull align 4 dereferenceable(16) %128)
  %3258 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %158, ptr noundef nonnull align 4 dereferenceable(16) %164)
  call void @llvm.lifetime.end.p0(i64 16, ptr %164) #14
  br i1 %3258, label %3259, label %3266

3259:                                             ; preds = %3247
  %3260 = load ptr, ptr %34, align 8, !tbaa !5
  %3261 = getelementptr inbounds %struct.ImGuiWindow, ptr %3260, i32 0, i32 86
  %3262 = load ptr, ptr %3261, align 8, !tbaa !206
  %3263 = getelementptr inbounds %struct.ImRect, ptr %158, i32 0, i32 0
  %3264 = getelementptr inbounds %struct.ImRect, ptr %158, i32 0, i32 1
  %3265 = load i32, ptr %151, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %3262, ptr noundef nonnull align 4 dereferenceable(8) %3263, ptr noundef nonnull align 4 dereferenceable(8) %3264, i32 noundef %3265, float noundef 0.000000e+00, i32 noundef 0)
  br label %3266

3266:                                             ; preds = %3259, %3247
  call void @llvm.lifetime.end.p0(i64 16, ptr %158) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #14
  br label %3267

3267:                                             ; preds = %3266, %3229
  %3268 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  %3269 = load float, ptr %3268, align 4, !tbaa !106
  %3270 = getelementptr inbounds %struct.ImVec2, ptr %148, i32 0, i32 0
  %3271 = load float, ptr %3270, align 4, !tbaa !106
  %3272 = fsub float %3269, %3271
  %3273 = getelementptr inbounds %struct.ImVec2, ptr %154, i32 0, i32 0
  store float %3272, ptr %3273, align 4, !tbaa !106
  %3274 = load ptr, ptr %20, align 8, !tbaa !5
  %3275 = getelementptr inbounds %struct.ImGuiContext, ptr %3274, i32 0, i32 5
  %3276 = load float, ptr %3275, align 8, !tbaa !45
  %3277 = getelementptr inbounds %struct.ImVec2, ptr %154, i32 0, i32 1
  %3278 = load float, ptr %3277, align 4, !tbaa !104
  %3279 = fadd float %3278, %3276
  store float %3279, ptr %3277, align 4, !tbaa !104
  br label %3194, !llvm.loop !207

3280:                                             ; preds = %3209, %3198
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #14
  br label %3281

3281:                                             ; preds = %3280
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #14
  br label %3282

3282:                                             ; preds = %3281, %3147
  %3283 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3284 = trunc i8 %3283 to i1
  br i1 %3284, label %3292, label %3285

3285:                                             ; preds = %3282
  %3286 = load ptr, ptr %133, align 8, !tbaa !5
  %3287 = load ptr, ptr %132, align 8, !tbaa !5
  %3288 = ptrtoint ptr %3286 to i64
  %3289 = ptrtoint ptr %3287 to i64
  %3290 = sub i64 %3288, %3289
  %3291 = icmp slt i64 %3290, 2097152
  br i1 %3291, label %3292, label %3317

3292:                                             ; preds = %3285, %3282
  call void @llvm.lifetime.start.p0(i64 4, ptr %165) #14
  %3293 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3294 = trunc i8 %3293 to i1
  %3295 = zext i1 %3294 to i64
  %3296 = select i1 %3294, i32 1, i32 0
  %3297 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3296, float noundef 1.000000e+00)
  store i32 %3297, ptr %165, align 4, !tbaa !9
  %3298 = load ptr, ptr %34, align 8, !tbaa !5
  %3299 = getelementptr inbounds %struct.ImGuiWindow, ptr %3298, i32 0, i32 86
  %3300 = load ptr, ptr %3299, align 8, !tbaa !206
  %3301 = load ptr, ptr %20, align 8, !tbaa !5
  %3302 = getelementptr inbounds %struct.ImGuiContext, ptr %3301, i32 0, i32 4
  %3303 = load ptr, ptr %3302, align 8, !tbaa !138
  %3304 = load ptr, ptr %20, align 8, !tbaa !5
  %3305 = getelementptr inbounds %struct.ImGuiContext, ptr %3304, i32 0, i32 5
  %3306 = load float, ptr %3305, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #14
  %3307 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %129, ptr noundef nonnull align 4 dereferenceable(8) %148)
  store <2 x float> %3307, ptr %166, align 4
  %3308 = load i32, ptr %165, align 4, !tbaa !9
  %3309 = load ptr, ptr %132, align 8, !tbaa !5
  %3310 = load ptr, ptr %133, align 8, !tbaa !5
  %3311 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3312 = trunc i8 %3311 to i1
  br i1 %3312, label %3313, label %3314

3313:                                             ; preds = %3292
  br label %3315

3314:                                             ; preds = %3292
  br label %3315

3315:                                             ; preds = %3314, %3313
  %3316 = phi ptr [ null, %3313 ], [ %128, %3314 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3300, ptr noundef %3303, float noundef %3306, ptr noundef nonnull align 4 dereferenceable(8) %166, i32 noundef %3308, ptr noundef %3309, ptr noundef %3310, float noundef 0.000000e+00, ptr noundef %3316)
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %165) #14
  br label %3317

3317:                                             ; preds = %3315, %3285
  %3318 = load i8, ptr %62, align 1, !tbaa !42, !range !40, !noundef !41
  %3319 = trunc i8 %3318 to i1
  br i1 %3319, label %3320, label %3404

3320:                                             ; preds = %3317
  %3321 = load ptr, ptr %21, align 8, !tbaa !5
  %3322 = getelementptr inbounds %struct.ImGuiIO, ptr %3321, i32 0, i32 3
  %3323 = load float, ptr %3322, align 8, !tbaa !208
  %3324 = load ptr, ptr %43, align 8, !tbaa !5
  %3325 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3324, i32 0, i32 13
  %3326 = load float, ptr %3325, align 8, !tbaa !209
  %3327 = fadd float %3326, %3323
  store float %3327, ptr %3325, align 8, !tbaa !209
  call void @llvm.lifetime.start.p0(i64 1, ptr %167) #14
  %3328 = load ptr, ptr %20, align 8, !tbaa !5
  %3329 = getelementptr inbounds %struct.ImGuiContext, ptr %3328, i32 0, i32 2
  %3330 = getelementptr inbounds %struct.ImGuiIO, ptr %3329, i32 0, i32 16
  %3331 = load i8, ptr %3330, align 1, !tbaa !210, !range !40, !noundef !41
  %3332 = trunc i8 %3331 to i1
  br i1 %3332, label %3333, label %3344

3333:                                             ; preds = %3320
  %3334 = load ptr, ptr %43, align 8, !tbaa !5
  %3335 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3334, i32 0, i32 13
  %3336 = load float, ptr %3335, align 8, !tbaa !209
  %3337 = fcmp ole float %3336, 0.000000e+00
  br i1 %3337, label %3344, label %3338

3338:                                             ; preds = %3333
  %3339 = load ptr, ptr %43, align 8, !tbaa !5
  %3340 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3339, i32 0, i32 13
  %3341 = load float, ptr %3340, align 8, !tbaa !209
  %3342 = call float @fmodf(float noundef %3341, float noundef 0x3FF3333340000000) #14
  %3343 = fcmp ole float %3342, 0x3FE99999A0000000
  br label %3344

3344:                                             ; preds = %3338, %3333, %3320
  %3345 = phi i1 [ true, %3333 ], [ true, %3320 ], [ %3343, %3338 ]
  %3346 = zext i1 %3345 to i8
  store i8 %3346, ptr %167, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #14
  %3347 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %129, ptr noundef nonnull align 4 dereferenceable(8) %135)
  store <2 x float> %3347, ptr %170, align 4
  %3348 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %170, ptr noundef nonnull align 4 dereferenceable(8) %148)
  store <2 x float> %3348, ptr %169, align 4
  %3349 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %169)
  store <2 x float> %3349, ptr %168, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %171) #14
  %3350 = getelementptr inbounds %struct.ImVec2, ptr %168, i32 0, i32 0
  %3351 = load float, ptr %3350, align 4, !tbaa !106
  %3352 = getelementptr inbounds %struct.ImVec2, ptr %168, i32 0, i32 1
  %3353 = load float, ptr %3352, align 4, !tbaa !104
  %3354 = load ptr, ptr %20, align 8, !tbaa !5
  %3355 = getelementptr inbounds %struct.ImGuiContext, ptr %3354, i32 0, i32 5
  %3356 = load float, ptr %3355, align 8, !tbaa !45
  %3357 = fsub float %3353, %3356
  %3358 = fadd float %3357, 5.000000e-01
  %3359 = getelementptr inbounds %struct.ImVec2, ptr %168, i32 0, i32 0
  %3360 = load float, ptr %3359, align 4, !tbaa !106
  %3361 = fadd float %3360, 1.000000e+00
  %3362 = getelementptr inbounds %struct.ImVec2, ptr %168, i32 0, i32 1
  %3363 = load float, ptr %3362, align 4, !tbaa !104
  %3364 = fsub float %3363, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %171, float noundef %3351, float noundef %3358, float noundef %3361, float noundef %3364)
  %3365 = load i8, ptr %167, align 1, !tbaa !42, !range !40, !noundef !41
  %3366 = trunc i8 %3365 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %172) #14
  br i1 %3366, label %3367, label %3369

3367:                                             ; preds = %3344
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %172, ptr noundef nonnull align 4 dereferenceable(16) %128)
  %3368 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %171, ptr noundef nonnull align 4 dereferenceable(16) %172)
  br label %3369

3369:                                             ; preds = %3367, %3344
  %3370 = phi i1 [ false, %3344 ], [ %3368, %3367 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %172) #14
  br i1 %3370, label %3371, label %3378

3371:                                             ; preds = %3369
  %3372 = load ptr, ptr %34, align 8, !tbaa !5
  %3373 = getelementptr inbounds %struct.ImGuiWindow, ptr %3372, i32 0, i32 86
  %3374 = load ptr, ptr %3373, align 8, !tbaa !206
  %3375 = getelementptr inbounds %struct.ImRect, ptr %171, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #14
  %3376 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %171)
  store <2 x float> %3376, ptr %173, align 4
  %3377 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %3374, ptr noundef nonnull align 4 dereferenceable(8) %3375, ptr noundef nonnull align 4 dereferenceable(8) %173, i32 noundef %3377, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #14
  br label %3378

3378:                                             ; preds = %3371, %3369
  %3379 = load i8, ptr %44, align 1, !tbaa !42, !range !40, !noundef !41
  %3380 = trunc i8 %3379 to i1
  br i1 %3380, label %3403, label %3381

3381:                                             ; preds = %3378
  %3382 = load ptr, ptr %20, align 8, !tbaa !5
  %3383 = getelementptr inbounds %struct.ImGuiContext, ptr %3382, i32 0, i32 220
  %3384 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3383, i32 0, i32 0
  store i8 1, ptr %3384, align 8, !tbaa !211
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #14
  %3385 = getelementptr inbounds %struct.ImVec2, ptr %168, i32 0, i32 0
  %3386 = load float, ptr %3385, align 4, !tbaa !106
  %3387 = fsub float %3386, 1.000000e+00
  %3388 = getelementptr inbounds %struct.ImVec2, ptr %168, i32 0, i32 1
  %3389 = load float, ptr %3388, align 4, !tbaa !104
  %3390 = load ptr, ptr %20, align 8, !tbaa !5
  %3391 = getelementptr inbounds %struct.ImGuiContext, ptr %3390, i32 0, i32 5
  %3392 = load float, ptr %3391, align 8, !tbaa !45
  %3393 = fsub float %3389, %3392
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %174, float noundef %3387, float noundef %3393)
  %3394 = load ptr, ptr %20, align 8, !tbaa !5
  %3395 = getelementptr inbounds %struct.ImGuiContext, ptr %3394, i32 0, i32 220
  %3396 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3395, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %3396, ptr align 4 %174, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #14
  %3397 = load ptr, ptr %20, align 8, !tbaa !5
  %3398 = getelementptr inbounds %struct.ImGuiContext, ptr %3397, i32 0, i32 5
  %3399 = load float, ptr %3398, align 8, !tbaa !45
  %3400 = load ptr, ptr %20, align 8, !tbaa !5
  %3401 = getelementptr inbounds %struct.ImGuiContext, ptr %3400, i32 0, i32 220
  %3402 = getelementptr inbounds %struct.ImGuiPlatformImeData, ptr %3401, i32 0, i32 2
  store float %3399, ptr %3402, align 4, !tbaa !212
  br label %3403

3403:                                             ; preds = %3381, %3378
  call void @llvm.lifetime.end.p0(i64 16, ptr %171) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %167) #14
  br label %3404

3404:                                             ; preds = %3403, %3317
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #14
  br label %3479

3405:                                             ; preds = %2816
  %3406 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3407 = trunc i8 %3406 to i1
  br i1 %3407, label %3408, label %3418

3408:                                             ; preds = %3405
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #14
  %3409 = getelementptr inbounds %struct.ImVec2, ptr %35, i32 0, i32 0
  %3410 = load float, ptr %3409, align 4, !tbaa !106
  %3411 = load ptr, ptr %132, align 8, !tbaa !5
  %3412 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3411, ptr noundef %133)
  %3413 = sitofp i32 %3412 to float
  %3414 = load ptr, ptr %20, align 8, !tbaa !5
  %3415 = getelementptr inbounds %struct.ImGuiContext, ptr %3414, i32 0, i32 5
  %3416 = load float, ptr %3415, align 8, !tbaa !45
  %3417 = fmul float %3413, %3416
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %175, float noundef %3410, float noundef %3417)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %130, ptr align 4 %175, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #14
  br label %3444

3418:                                             ; preds = %3405
  %3419 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3420 = trunc i8 %3419 to i1
  br i1 %3420, label %3434, label %3421

3421:                                             ; preds = %3418
  %3422 = load ptr, ptr %20, align 8, !tbaa !5
  %3423 = getelementptr inbounds %struct.ImGuiContext, ptr %3422, i32 0, i32 48
  %3424 = load i32, ptr %3423, align 4, !tbaa !111
  %3425 = load i32, ptr %25, align 4, !tbaa !9
  %3426 = icmp eq i32 %3424, %3425
  br i1 %3426, label %3427, label %3434

3427:                                             ; preds = %3421
  %3428 = load ptr, ptr %132, align 8, !tbaa !5
  %3429 = load ptr, ptr %43, align 8, !tbaa !5
  %3430 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3429, i32 0, i32 3
  %3431 = load i32, ptr %3430, align 8, !tbaa !126
  %3432 = sext i32 %3431 to i64
  %3433 = getelementptr inbounds i8, ptr %3428, i64 %3432
  store ptr %3433, ptr %133, align 8, !tbaa !5
  br label %3443

3434:                                             ; preds = %3421, %3418
  %3435 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3436 = trunc i8 %3435 to i1
  br i1 %3436, label %3442, label %3437

3437:                                             ; preds = %3434
  %3438 = load ptr, ptr %132, align 8, !tbaa !5
  %3439 = load ptr, ptr %132, align 8, !tbaa !5
  %3440 = call i64 @strlen(ptr noundef %3439) #16
  %3441 = getelementptr inbounds i8, ptr %3438, i64 %3440
  store ptr %3441, ptr %133, align 8, !tbaa !5
  br label %3442

3442:                                             ; preds = %3437, %3434
  br label %3443

3443:                                             ; preds = %3442, %3427
  br label %3444

3444:                                             ; preds = %3443, %3408
  %3445 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3446 = trunc i8 %3445 to i1
  br i1 %3446, label %3454, label %3447

3447:                                             ; preds = %3444
  %3448 = load ptr, ptr %133, align 8, !tbaa !5
  %3449 = load ptr, ptr %132, align 8, !tbaa !5
  %3450 = ptrtoint ptr %3448 to i64
  %3451 = ptrtoint ptr %3449 to i64
  %3452 = sub i64 %3450, %3451
  %3453 = icmp slt i64 %3452, 2097152
  br i1 %3453, label %3454, label %3478

3454:                                             ; preds = %3447, %3444
  call void @llvm.lifetime.start.p0(i64 4, ptr %176) #14
  %3455 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3456 = trunc i8 %3455 to i1
  %3457 = zext i1 %3456 to i64
  %3458 = select i1 %3456, i32 1, i32 0
  %3459 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3458, float noundef 1.000000e+00)
  store i32 %3459, ptr %176, align 4, !tbaa !9
  %3460 = load ptr, ptr %34, align 8, !tbaa !5
  %3461 = getelementptr inbounds %struct.ImGuiWindow, ptr %3460, i32 0, i32 86
  %3462 = load ptr, ptr %3461, align 8, !tbaa !206
  %3463 = load ptr, ptr %20, align 8, !tbaa !5
  %3464 = getelementptr inbounds %struct.ImGuiContext, ptr %3463, i32 0, i32 4
  %3465 = load ptr, ptr %3464, align 8, !tbaa !138
  %3466 = load ptr, ptr %20, align 8, !tbaa !5
  %3467 = getelementptr inbounds %struct.ImGuiContext, ptr %3466, i32 0, i32 5
  %3468 = load float, ptr %3467, align 8, !tbaa !45
  %3469 = load i32, ptr %176, align 4, !tbaa !9
  %3470 = load ptr, ptr %132, align 8, !tbaa !5
  %3471 = load ptr, ptr %133, align 8, !tbaa !5
  %3472 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3473 = trunc i8 %3472 to i1
  br i1 %3473, label %3474, label %3475

3474:                                             ; preds = %3454
  br label %3476

3475:                                             ; preds = %3454
  br label %3476

3476:                                             ; preds = %3475, %3474
  %3477 = phi ptr [ null, %3474 ], [ %128, %3475 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3462, ptr noundef %3465, float noundef %3468, ptr noundef nonnull align 4 dereferenceable(8) %129, i32 noundef %3469, ptr noundef %3470, ptr noundef %3471, float noundef 0.000000e+00, ptr noundef %3477)
  call void @llvm.lifetime.end.p0(i64 4, ptr %176) #14
  br label %3478

3478:                                             ; preds = %3476, %3447
  br label %3479

3479:                                             ; preds = %3478, %3404
  %3480 = load i8, ptr %45, align 1, !tbaa !42, !range !40, !noundef !41
  %3481 = trunc i8 %3480 to i1
  br i1 %3481, label %3482, label %3486

3482:                                             ; preds = %3479
  %3483 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3484 = trunc i8 %3483 to i1
  br i1 %3484, label %3486, label %3485

3485:                                             ; preds = %3482
  call void @_ZN5ImGui7PopFontEv()
  br label %3486

3486:                                             ; preds = %3485, %3482, %3479
  %3487 = load i8, ptr %24, align 1, !tbaa !42, !range !40, !noundef !41
  %3488 = trunc i8 %3487 to i1
  br i1 %3488, label %3489, label %3533

3489:                                             ; preds = %3486
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #14
  %3490 = getelementptr inbounds %struct.ImVec2, ptr %130, i32 0, i32 0
  %3491 = load float, ptr %3490, align 4, !tbaa !106
  %3492 = getelementptr inbounds %struct.ImVec2, ptr %130, i32 0, i32 1
  %3493 = load float, ptr %3492, align 4, !tbaa !104
  %3494 = load ptr, ptr %22, align 8, !tbaa !5
  %3495 = getelementptr inbounds %struct.ImGuiStyle, ptr %3494, i32 0, i32 12
  %3496 = getelementptr inbounds %struct.ImVec2, ptr %3495, i32 0, i32 1
  %3497 = load float, ptr %3496, align 4, !tbaa !105
  %3498 = fadd float %3493, %3497
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %177, float noundef %3491, float noundef %3498)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %177)
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #14
  %3499 = load ptr, ptr %20, align 8, !tbaa !5
  %3500 = getelementptr inbounds %struct.ImGuiContext, ptr %3499, i32 0, i32 81
  %3501 = getelementptr inbounds %struct.ImGuiNextItemData, ptr %3500, i32 0, i32 1
  %3502 = load i32, ptr %3501, align 4, !tbaa !213
  %3503 = or i32 %3502, 1025
  store i32 %3503, ptr %3501, align 4, !tbaa !213
  call void @_ZN5ImGui8EndChildEv()
  %3504 = load ptr, ptr %20, align 8, !tbaa !5
  %3505 = getelementptr inbounds %struct.ImGuiContext, ptr %3504, i32 0, i32 82
  %3506 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3505, i32 0, i32 2
  %3507 = load i32, ptr %3506, align 8, !tbaa !214
  %3508 = and i32 %3507, 128
  %3509 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 2
  %3510 = load i32, ptr %3509, align 4, !tbaa !215
  %3511 = or i32 %3510, %3508
  store i32 %3511, ptr %3509, align 4, !tbaa !215
  call void @_ZN5ImGui8EndGroupEv()
  %3512 = load ptr, ptr %20, align 8, !tbaa !5
  %3513 = getelementptr inbounds %struct.ImGuiContext, ptr %3512, i32 0, i32 82
  %3514 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3513, i32 0, i32 0
  %3515 = load i32, ptr %3514, align 8, !tbaa !216
  %3516 = icmp eq i32 %3515, 0
  br i1 %3516, label %3517, label %3532

3517:                                             ; preds = %3489
  %3518 = load i32, ptr %25, align 4, !tbaa !9
  %3519 = load ptr, ptr %20, align 8, !tbaa !5
  %3520 = getelementptr inbounds %struct.ImGuiContext, ptr %3519, i32 0, i32 82
  %3521 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3520, i32 0, i32 0
  store i32 %3518, ptr %3521, align 8, !tbaa !216
  %3522 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 1
  %3523 = load i32, ptr %3522, align 4, !tbaa !217
  %3524 = load ptr, ptr %20, align 8, !tbaa !5
  %3525 = getelementptr inbounds %struct.ImGuiContext, ptr %3524, i32 0, i32 82
  %3526 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3525, i32 0, i32 1
  store i32 %3523, ptr %3526, align 4, !tbaa !118
  %3527 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %36, i32 0, i32 2
  %3528 = load i32, ptr %3527, align 4, !tbaa !215
  %3529 = load ptr, ptr %20, align 8, !tbaa !5
  %3530 = getelementptr inbounds %struct.ImGuiContext, ptr %3529, i32 0, i32 82
  %3531 = getelementptr inbounds %struct.ImGuiLastItemData, ptr %3530, i32 0, i32 2
  store i32 %3528, ptr %3531, align 8, !tbaa !214
  br label %3532

3532:                                             ; preds = %3517, %3489
  br label %3533

3533:                                             ; preds = %3532, %3486
  %3534 = load ptr, ptr %20, align 8, !tbaa !5
  %3535 = getelementptr inbounds %struct.ImGuiContext, ptr %3534, i32 0, i32 231
  %3536 = load i8, ptr %3535, align 8, !tbaa !218, !range !40, !noundef !41
  %3537 = trunc i8 %3536 to i1
  br i1 %3537, label %3538, label %3547

3538:                                             ; preds = %3533
  %3539 = load i8, ptr %45, align 1, !tbaa !42, !range !40, !noundef !41
  %3540 = trunc i8 %3539 to i1
  br i1 %3540, label %3541, label %3544

3541:                                             ; preds = %3538
  %3542 = load i8, ptr %68, align 1, !tbaa !42, !range !40, !noundef !41
  %3543 = trunc i8 %3542 to i1
  br i1 %3543, label %3544, label %3547

3544:                                             ; preds = %3541, %3538
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef @.str.25, ptr noundef @.str.26)
  %3545 = load ptr, ptr %132, align 8, !tbaa !5
  %3546 = load ptr, ptr %133, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %129, ptr noundef %3545, ptr noundef %3546)
  br label %3547

3547:                                             ; preds = %3544, %3541, %3533
  %3548 = getelementptr inbounds %struct.ImVec2, ptr %26, i32 0, i32 0
  %3549 = load float, ptr %3548, align 4, !tbaa !106
  %3550 = fcmp ogt float %3549, 0.000000e+00
  br i1 %3550, label %3551, label %3570

3551:                                             ; preds = %3547
  %3552 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  %3553 = getelementptr inbounds %struct.ImVec2, ptr %3552, i32 0, i32 0
  %3554 = load float, ptr %3553, align 4, !tbaa !219
  %3555 = load ptr, ptr %22, align 8, !tbaa !5
  %3556 = getelementptr inbounds %struct.ImGuiStyle, ptr %3555, i32 0, i32 16
  %3557 = getelementptr inbounds %struct.ImVec2, ptr %3556, i32 0, i32 0
  %3558 = load float, ptr %3557, align 4, !tbaa !107
  %3559 = fadd float %3554, %3558
  %3560 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %3561 = getelementptr inbounds %struct.ImVec2, ptr %3560, i32 0, i32 1
  %3562 = load float, ptr %3561, align 4, !tbaa !201
  %3563 = load ptr, ptr %22, align 8, !tbaa !5
  %3564 = getelementptr inbounds %struct.ImGuiStyle, ptr %3563, i32 0, i32 12
  %3565 = getelementptr inbounds %struct.ImVec2, ptr %3564, i32 0, i32 1
  %3566 = load float, ptr %3565, align 4, !tbaa !105
  %3567 = fadd float %3562, %3566
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %178, float noundef %3559, float noundef %3567)
  %3568 = load ptr, ptr %10, align 8, !tbaa !5
  %3569 = load <2 x float>, ptr %178, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3569, ptr noundef %3568, ptr noundef null, i1 noundef zeroext true)
  br label %3570

3570:                                             ; preds = %3551, %3547
  %3571 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3572 = trunc i8 %3571 to i1
  br i1 %3572, label %3573, label %3579

3573:                                             ; preds = %3570
  %3574 = load i32, ptr %15, align 4, !tbaa !9
  %3575 = and i32 %3574, 134217728
  %3576 = icmp ne i32 %3575, 0
  br i1 %3576, label %3579, label %3577

3577:                                             ; preds = %3573
  %3578 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3578)
  br label %3579

3579:                                             ; preds = %3577, %3573, %3570
  %3580 = load ptr, ptr %20, align 8, !tbaa !5
  %3581 = load i32, ptr %15, align 4, !tbaa !9
  %3582 = and i32 %3581, 32
  %3583 = icmp ne i32 %3582, 0
  br i1 %3583, label %3584, label %3587

3584:                                             ; preds = %3579
  %3585 = load i8, ptr %65, align 1, !tbaa !42, !range !40, !noundef !41
  %3586 = trunc i8 %3585 to i1
  store i1 %3586, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3590

3587:                                             ; preds = %3579
  %3588 = load i8, ptr %64, align 1, !tbaa !42, !range !40, !noundef !41
  %3589 = trunc i8 %3588 to i1
  store i1 %3589, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3590

3590:                                             ; preds = %3587, %3584
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #14
  br label %3591

3591:                                             ; preds = %3590, %408, %394
  call void @llvm.lifetime.end.p0(i64 76, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  br label %3592

3592:                                             ; preds = %3591, %184
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  %3593 = load i1, ptr %9, align 1
  ret i1 %3593

3594:                                             ; preds = %2224
  %3595 = load ptr, ptr %113, align 8
  %3596 = load i32, ptr %114, align 4
  %3597 = insertvalue { ptr, i32 } poison, ptr %3595, 0
  %3598 = insertvalue { ptr, i32 } %3597, i32 %3596, 1
  resume { ptr, i32 } %3598

3599:                                             ; preds = %2096, %1420
  unreachable
}

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

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

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

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

; 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 @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(76)) unnamed_addr #10 align 2

declare void @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) #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: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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

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

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

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(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 nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724)) #3 align 2

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

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

; 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 @_ZN5ImGui8ShortcutEiji(i32 noundef, i32 noundef, i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #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

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: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724)) #3 align 2

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #4

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #4

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) #4

; 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: mustprogress uwtable
declare hidden noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef, ptr noundef, ptr noundef, i32 noundef) #10

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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 nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(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 @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) #4

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !15, i64 195}
!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, !10, i64 128, !10, i64 132, !10, i64 136, !13, i64 140, !13, i64 148, !13, i64 156, !13, i64 164, !13, i64 172, !13, i64 180, !15, i64 188, !15, i64 189, !15, i64 190, !15, i64 191, !15, i64 192, !15, i64 193, !15, i64 194, !15, i64 195, !15, i64 196, !15, i64 197, !15, i64 198, !15, i64 199, !15, i64 200, !7, i64 201, !7, i64 202, !16, i64 204, !16, i64 206, !16, i64 208, !16, i64 210, !16, i64 212, !10, i64 216, !7, i64 220, !7, i64 221, !15, i64 222, !10, i64 224, !7, i64 228, !7, i64 229, !7, i64 230, !7, i64 231, !10, i64 232, !10, i64 233, !10, i64 234, !13, i64 236, !13, i64 244, !17, i64 256, !18, i64 272, !24, i64 504, !24, i64 520, !24, i64 536, !24, i64 552, !24, i64 568, !24, i64 584, !24, i64 600, !25, i64 616, !25, i64 620, !10, i64 624, !14, i64 628, !14, i64 632, !26, i64 640, !28, i64 656, !14, i64 672, !10, i64 676, !6, i64 680, !29, i64 688, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !6, i64 944, !7, i64 952, !7, i64 960, !7, i64 992, !10, i64 1008, !10, i64 1012, !10, i64 1016, !15, i64 1020}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!18 = !{!"_ZTS19ImGuiWindowTempData", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !14, i64 56, !14, i64 60, !15, i64 64, !15, i64 65, !19, i64 68, !19, i64 72, !19, i64 76, !13, i64 80, !20, i64 88, !16, i64 92, !16, i64 94, !15, i64 96, !15, i64 97, !15, i64 98, !15, i64 99, !13, i64 100, !21, i64 108, !10, i64 136, !10, i64 140, !22, i64 144, !6, i64 160, !6, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !14, i64 188, !14, i64 192, !23, i64 200, !23, i64 216}
!19 = !{!"_ZTS6ImVec1", !14, i64 0}
!20 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!21 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !16, i64 8, !16, i64 10, !16, i64 12, !16, i64 14, !16, i64 16, !7, i64 18}
!22 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!25 = !{!"_ZTS8ImVec2ih", !16, i64 0, !16, i64 2}
!26 = !{!"_ZTS12ImGuiStorage", !27, i64 0}
!27 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS10ImDrawList", !30, i64 0, !31, i64 16, !32, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !33, i64 88, !34, i64 104, !35, i64 120, !36, i64 136, !38, i64 168, !14, i64 192}
!30 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS15ImDrawCmdHeader", !37, i64 0, !6, i64 16, !10, i64 24}
!37 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!38 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !39, i64 8}
!39 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!15, !15, i64 0}
!43 = !{i64 0, i64 4, !44, i64 4, i64 4, !44}
!44 = !{!14, !14, i64 0}
!45 = !{!46, !14, i64 15672}
!46 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !47, i64 8, !49, i64 14568, !6, i64 15664, !14, i64 15672, !14, i64 15676, !50, i64 15680, !51, i64 16208, !10, i64 16216, !10, i64 16220, !10, i64 16224, !15, i64 16228, !15, i64 16229, !15, i64 16230, !15, i64 16231, !15, i64 16232, !6, i64 16240, !52, i64 16248, !52, i64 16264, !48, i64 16280, !10, i64 16284, !22, i64 16288, !22, i64 16304, !22, i64 16320, !53, i64 16336, !26, i64 16352, !10, i64 16368, !13, i64 16372, !10, i64 16380, !6, i64 16384, !6, i64 16392, !6, i64 16400, !6, i64 16408, !6, i64 16416, !13, i64 16424, !10, i64 16432, !10, i64 16436, !14, i64 16440, !13, i64 16444, !13, i64 16452, !10, i64 16460, !10, i64 16464, !10, i64 16468, !15, i64 16472, !15, i64 16473, !14, i64 16476, !14, i64 16480, !10, i64 16484, !10, i64 16488, !14, i64 16492, !15, i64 16496, !15, i64 16497, !15, i64 16498, !15, i64 16499, !15, i64 16500, !15, i64 16501, !13, i64 16504, !6, i64 16512, !54, i64 16520, !10, i64 16524, !10, i64 16528, !15, i64 16532, !15, i64 16533, !6, i64 16536, !10, i64 16544, !14, i64 16548, !51, i64 16552, !51, i64 16560, !51, i64 16568, !55, i64 16576, !7, i64 16596, !56, i64 18448, !10, i64 18792, !15, i64 18796, !10, i64 18800, !10, i64 18804, !10, i64 18808, !10, i64 18812, !10, i64 18816, !58, i64 18824, !60, i64 18848, !61, i64 18928, !15, i64 19040, !10, i64 19044, !62, i64 19048, !63, i64 19064, !64, i64 19080, !65, i64 19096, !66, i64 19112, !67, i64 19128, !68, i64 19144, !68, i64 19160, !69, i64 19176, !10, i64 19192, !70, i64 19200, !6, i64 19216, !10, i64 19224, !10, i64 19228, !65, i64 19232, !10, i64 19248, !10, i64 19252, !10, i64 19256, !10, i64 19260, !10, i64 19264, !10, i64 19268, !10, i64 19272, !10, i64 19276, !10, i64 19280, !54, i64 19284, !20, i64 19288, !59, i64 19296, !15, i64 19304, !15, i64 19305, !15, i64 19306, !15, i64 19307, !15, i64 19308, !15, i64 19309, !15, i64 19310, !71, i64 19312, !15, i64 19376, !15, i64 19377, !15, i64 19378, !10, i64 19380, !10, i64 19384, !10, i64 19388, !10, i64 19392, !10, i64 19396, !10, i64 19400, !24, i64 19404, !24, i64 19420, !10, i64 19436, !10, i64 19440, !10, i64 19444, !71, i64 19448, !71, i64 19512, !71, i64 19576, !71, i64 19640, !10, i64 19704, !10, i64 19708, !6, i64 19712, !6, i64 19720, !6, i64 19728, !14, i64 19736, !14, i64 19740, !15, i64 19744, !13, i64 19748, !13, i64 19756, !14, i64 19764, !15, i64 19768, !15, i64 19769, !15, i64 19770, !10, i64 19772, !10, i64 19776, !10, i64 19780, !72, i64 19784, !24, i64 19848, !24, i64 19864, !10, i64 19880, !10, i64 19884, !14, i64 19888, !10, i64 19892, !10, i64 19896, !10, i64 19900, !10, i64 19904, !73, i64 19912, !7, i64 19928, !10, i64 19944, !74, i64 19952, !6, i64 19968, !10, i64 19976, !10, i64 19980, !75, i64 19984, !76, i64 20000, !23, i64 20040, !39, i64 20056, !6, i64 20072, !78, i64 20080, !80, i64 20120, !81, i64 20136, !10, i64 20152, !10, i64 20156, !14, i64 20160, !14, i64 20164, !10, i64 20168, !10, i64 20172, !10, i64 20176, !14, i64 20180, !13, i64 20184, !82, i64 20192, !86, i64 23920, !87, i64 23944, !10, i64 24064, !10, i64 24068, !10, i64 24072, !10, i64 24076, !14, i64 24080, !14, i64 24084, !10, i64 24088, !37, i64 24092, !89, i64 24108, !24, i64 24156, !15, i64 24172, !14, i64 24176, !14, i64 24180, !15, i64 24184, !15, i64 24185, !14, i64 24188, !14, i64 24192, !14, i64 24196, !14, i64 24200, !16, i64 24204, !16, i64 24206, !16, i64 24208, !83, i64 24216, !17, i64 24232, !90, i64 24248, !92, i64 24352, !92, i64 24368, !15, i64 24384, !14, i64 24388, !93, i64 24392, !94, i64 24408, !95, i64 24424, !96, i64 24440, !97, i64 24456, !10, i64 24472, !7, i64 24480, !15, i64 24544, !98, i64 24548, !6, i64 24552, !93, i64 24560, !6, i64 24576, !6, i64 24584, !14, i64 24592, !15, i64 24596, !10, i64 24600, !10, i64 24604, !10, i64 24608, !10, i64 24612, !93, i64 24616, !99, i64 24632, !10, i64 24656, !7, i64 24660, !7, i64 24661, !15, i64 24662, !10, i64 24664, !7, i64 24668, !15, i64 24669, !7, i64 24670, !10, i64 24672, !14, i64 24676, !37, i64 24680, !100, i64 24696, !101, i64 24720, !103, i64 24760, !7, i64 24820, !10, i64 25060, !10, i64 25064, !14, i64 25068, !10, i64 25072, !10, i64 25076, !10, i64 25080, !83, i64 25088, !7, i64 25104}
!47 = !{!"_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, !14, i64 88, !14, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !15, i64 112, !15, i64 113, !15, i64 114, !15, i64 115, !15, i64 116, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !16, i64 192, !15, i64 194, !15, i64 195, !15, i64 196, !15, i64 197, !15, i64 198, !15, i64 199, !15, i64 200, !14, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !13, i64 224, !7, i64 232, !7, i64 2896, !7, i64 3564, !6, i64 3632, !13, i64 3640, !7, i64 3648, !14, i64 3656, !14, i64 3660, !48, i64 3664, !15, i64 3668, !15, i64 3669, !15, i64 3670, !15, i64 3671, !10, i64 3672, !7, i64 3676, !15, i64 14332, !13, i64 14336, !7, i64 14344, !7, i64 14384, !7, i64 14424, !7, i64 14429, !7, i64 14434, !7, i64 14444, !7, i64 14454, !7, i64 14459, !7, i64 14464, !15, i64 14469, !7, i64 14472, !7, i64 14492, !7, i64 14512, !14, i64 14532, !15, i64 14536, !15, i64 14537, !7, i64 14538, !15, i64 14539, !16, i64 14540, !31, i64 14544}
!48 = !{!"_ZTS16ImGuiMouseSource", !7, i64 0}
!49 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !14, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !13, i64 24, !13, i64 32, !10, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !13, i64 60, !14, i64 68, !14, i64 72, !13, i64 76, !13, i64 84, !13, i64 92, !13, i64 100, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !14, i64 132, !14, i64 136, !14, i64 140, !14, i64 144, !14, i64 148, !14, i64 152, !10, i64 156, !13, i64 160, !13, i64 168, !14, i64 176, !13, i64 180, !13, i64 188, !13, i64 196, !13, i64 204, !14, i64 212, !15, i64 216, !15, i64 217, !15, i64 218, !14, i64 220, !14, i64 224, !7, i64 228, !14, i64 1076, !14, i64 1080, !14, i64 1084, !10, i64 1088, !10, i64 1092}
!50 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !37, i64 28, !10, i64 44, !35, i64 48, !7, i64 64, !14, i64 448, !7, i64 452, !6, i64 520}
!51 = !{!"double", !7, i64 0}
!52 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !6, i64 8}
!53 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!54 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!55 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !7, i64 0}
!56 = !{!"_ZTS20ImGuiKeyRoutingTable", !7, i64 0, !57, i64 312, !57, i64 328}
!57 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !59, i64 8, !14, i64 16, !15, i64 20, !10, i64 21}
!59 = !{!"long long", !7, i64 0}
!60 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !24, i64 12, !24, i64 28, !24, i64 44, !24, i64 60}
!61 = !{!"_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, !24, i64 64, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100}
!62 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!63 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!64 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!66 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS16ImGuiNavItemData", !6, i64 0, !10, i64 8, !10, i64 12, !24, i64 16, !10, i64 32, !59, i64 40, !14, i64 48, !14, i64 52, !14, i64 56}
!72 = !{!"_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}
!73 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS6ImPoolI10ImGuiTableE", !77, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!77 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!78 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !79, i64 0, !26, i64 16, !10, i64 32, !10, i64 36}
!79 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!81 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!82 = !{!"_ZTS19ImGuiInputTextState", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !31, i64 24, !83, i64 40, !83, i64 56, !15, i64 72, !10, i64 76, !14, i64 80, !84, i64 84, !14, i64 3712, !15, i64 3716, !15, i64 3717, !15, i64 3718, !10, i64 3720}
!83 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!84 = !{!"_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, !85, i64 32}
!85 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!86 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !83, i64 8}
!87 = !{!"_ZTS6ImFont", !23, i64 0, !14, i64 16, !14, i64 20, !31, i64 24, !88, 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}
!88 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!89 = !{!"_ZTS21ImGuiComboPreviewData", !24, i64 0, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !10, i64 44}
!90 = !{!"_ZTS22ImGuiTypingSelectState", !91, i64 0, !7, i64 24, !10, i64 88, !10, i64 92, !14, i64 96, !15, i64 100}
!91 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !6, i64 8, !15, i64 16, !15, i64 17, !7, i64 18}
!92 = !{!"_ZTS20ImGuiPlatformImeData", !15, i64 0, !13, i64 4, !14, i64 12}
!93 = !{!"_ZTS15ImGuiTextBuffer", !83, i64 0}
!94 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!95 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !83, i64 0}
!96 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !83, i64 0}
!97 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!98 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!99 = !{!"_ZTS14ImGuiTextIndex", !66, i64 0, !10, i64 16}
!100 = !{!"_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}
!101 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !102, i64 16, !15, i64 32, !14, i64 36}
!102 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !6, i64 8}
!103 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !16, i64 8, !7, i64 12}
!104 = !{!13, !14, i64 4}
!105 = !{!49, !14, i64 64}
!106 = !{!13, !14, i64 0}
!107 = !{!49, !14, i64 84}
!108 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !44, i64 16, i64 4, !44, i64 20, i64 4, !44, i64 24, i64 4, !44, i64 28, i64 4, !44, i64 32, i64 4, !44, i64 36, i64 4, !44, i64 40, i64 4, !44, i64 44, i64 4, !44, i64 48, i64 4, !44, i64 52, i64 4, !44, i64 56, i64 4, !44, i64 60, i64 4, !44, i64 64, i64 4, !44, i64 68, i64 4, !44, i64 72, i64 4, !44}
!109 = !{!46, !10, i64 19248}
!110 = !{!46, !10, i64 19260}
!111 = !{!46, !10, i64 16484}
!112 = !{!49, !14, i64 68}
!113 = !{!49, !14, i64 72}
!114 = !{!46, !6, i64 16384}
!115 = !{!12, !20, i64 360}
!116 = !{!12, !16, i64 366}
!117 = !{!12, !14, i64 180}
!118 = !{!46, !10, i64 18852}
!119 = !{!46, !10, i64 20176}
!120 = !{!46, !54, i64 19284}
!121 = !{!46, !10, i64 16528}
!122 = !{!12, !14, i64 144}
!123 = !{!82, !7, i64 107}
!124 = !{!82, !10, i64 8}
!125 = !{!82, !6, i64 64}
!126 = !{!82, !10, i64 16}
!127 = !{!82, !15, i64 72}
!128 = !{!82, !6, i64 48}
!129 = !{!82, !6, i64 32}
!130 = !{!82, !10, i64 12}
!131 = !{!82, !14, i64 80}
!132 = !{!47, !15, i64 3668}
!133 = !{!82, !7, i64 96}
!134 = !{!47, !15, i64 81}
!135 = !{!46, !10, i64 18792}
!136 = !{!82, !10, i64 24}
!137 = !{!7, !7, i64 0}
!138 = !{!46, !6, i64 15664}
!139 = !{!87, !14, i64 20}
!140 = !{!87, !14, i64 100}
!141 = !{!87, !14, i64 104}
!142 = !{!87, !14, i64 108}
!143 = !{!87, !6, i64 64}
!144 = !{!87, !6, i64 56}
!145 = !{!146, !14, i64 4}
!146 = !{!"_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}
!147 = !{!87, !14, i64 16}
!148 = !{!82, !15, i64 3718}
!149 = !{!82, !10, i64 76}
!150 = !{!82, !10, i64 3720}
!151 = !{!46, !15, i64 16497}
!152 = !{!47, !14, i64 3640}
!153 = !{!24, !14, i64 0}
!154 = !{!49, !14, i64 60}
!155 = !{!47, !14, i64 3644}
!156 = !{!12, !14, i64 276}
!157 = !{!82, !15, i64 3717}
!158 = !{!16, !16, i64 0}
!159 = !{!47, !15, i64 3669}
!160 = !{!82, !10, i64 84}
!161 = !{!82, !10, i64 88}
!162 = !{!82, !10, i64 92}
!163 = !{!82, !15, i64 3716}
!164 = !{!47, !14, i64 224}
!165 = !{!47, !14, i64 228}
!166 = !{!47, !15, i64 3670}
!167 = !{!47, !15, i64 3671}
!168 = !{!47, !10, i64 14544}
!169 = distinct !{!169, !170}
!170 = !{!"llvm.loop.mustprogress"}
!171 = !{!46, !15, i64 16496}
!172 = !{!82, !10, i64 100}
!173 = !{!47, !10, i64 0}
!174 = !{!47, !10, i64 4}
!175 = !{!47, !15, i64 84}
!176 = !{!47, !6, i64 168}
!177 = distinct !{!177, !170}
!178 = !{!82, !10, i64 56}
!179 = !{!31, !6, i64 8}
!180 = !{!31, !10, i64 0}
!181 = !{!82, !10, i64 40}
!182 = !{!183, !183, i64 0}
!183 = !{!"_ZTS8ImGuiKey", !7, i64 0}
!184 = !{!185, !6, i64 0}
!185 = !{!"_ZTS26ImGuiInputTextCallbackData", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !16, i64 24, !183, i64 28, !6, i64 32, !10, i64 40, !10, i64 44, !15, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!186 = !{!185, !10, i64 8}
!187 = !{!185, !10, i64 12}
!188 = !{!185, !6, i64 16}
!189 = !{!185, !183, i64 28}
!190 = !{!185, !6, i64 32}
!191 = !{!185, !10, i64 40}
!192 = !{!185, !10, i64 44}
!193 = !{!185, !15, i64 48}
!194 = !{!185, !10, i64 52}
!195 = !{!185, !10, i64 56}
!196 = !{!185, !10, i64 60}
!197 = !{!46, !10, i64 23920}
!198 = !{!46, !6, i64 23936}
!199 = !{!46, !10, i64 23928}
!200 = !{!46, !10, i64 25080}
!201 = !{!24, !14, i64 4}
!202 = distinct !{!202, !170}
!203 = !{!37, !14, i64 12}
!204 = !{!37, !14, i64 4}
!205 = distinct !{!205, !170}
!206 = !{!12, !6, i64 680}
!207 = distinct !{!207, !170}
!208 = !{!47, !14, i64 16}
!209 = !{!82, !14, i64 3712}
!210 = !{!46, !15, i64 91}
!211 = !{!46, !15, i64 24352}
!212 = !{!46, !14, i64 24364}
!213 = !{!46, !10, i64 18828}
!214 = !{!46, !10, i64 18856}
!215 = !{!60, !10, i64 8}
!216 = !{!46, !10, i64 18848}
!217 = !{!60, !10, i64 4}
!218 = !{!46, !15, i64 24544}
!219 = !{!24, !14, i64 8}


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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiLastItemData = type { i32, i32, i32, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect }
%struct.ImVector.5 = 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.4 = external hidden unnamed_addr constant [84 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.58 = 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.59 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no = external hidden unnamed_addr constant [2 x i32], align 4

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

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

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

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

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: 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

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(1021), 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 @_ZN5ImGui18RenderNavHighlightERK6ImRectji(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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #8

; 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 @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef) local_unnamed_addr #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

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

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) local_unnamed_addr #4

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 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

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

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

64:                                               ; preds = %60
  tail call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.4, i32 noundef 4080, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

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

69:                                               ; preds = %65
  tail call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.4, i32 noundef 4081, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

70:                                               ; preds = %65
  %71 = and i32 %5, 1024
  %.not1011 = icmp eq i32 %71, 0
  %72 = and i32 %5, 1088
  %.not1012 = icmp eq i32 %72, 1088
  br i1 %.not1012, label %73, label %74

73:                                               ; preds = %70
  tail call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.4, i32 noundef 4082, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

74:                                               ; preds = %70
  %75 = load ptr, ptr @GImGui, align 8, !tbaa !40
  %76 = getelementptr inbounds i8, ptr %75, i64 8
  br i1 %67, label %77, label %78

77:                                               ; preds = %74
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %78

78:                                               ; preds = %77, %74
  %79 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(1021) %56, ptr noundef %0, ptr noundef null)
  %80 = 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.0560.0.copyload = load <2 x float>, ptr %4, align 4
  %81 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %67, label %82, label %86

82:                                               ; preds = %78
  %83 = getelementptr inbounds i8, ptr %75, i64 15672
  %84 = load float, ptr %83, align 8, !tbaa !41
  %85 = fmul float %84, 8.000000e+00
  br label %87

86:                                               ; preds = %78
  %.sroa.0561.4.vec.extract = extractelement <2 x float> %80, i64 1
  br label %87

87:                                               ; preds = %86, %82
  %88 = phi float [ %85, %82 ], [ %.sroa.0561.4.vec.extract, %86 ]
  %89 = getelementptr inbounds i8, ptr %75, i64 14628
  %90 = getelementptr inbounds i8, ptr %75, i64 14632
  %91 = load float, ptr %90, align 4, !tbaa !100
  %92 = tail call float @llvm.fmuladd.f32(float %91, float 2.000000e+00, float %88)
  %93 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0560.0.copyload, float noundef %81, float noundef %92)
  store <2 x float> %93, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  %94 = extractelement <2 x float> %93, i64 0
  %.sroa.0561.0.vec.extract = extractelement <2 x float> %80, i64 0
  %95 = fcmp ogt float %.sroa.0561.0.vec.extract, 0.000000e+00
  %96 = extractelement <2 x float> %93, i64 1
  br i1 %95, label %97, label %101

97:                                               ; preds = %87
  %98 = getelementptr inbounds i8, ptr %75, i64 14652
  %99 = load float, ptr %98, align 4, !tbaa !101
  %100 = fadd float %.sroa.0561.0.vec.extract, %99
  br label %101

101:                                              ; preds = %87, %97
  %102 = phi float [ %100, %97 ], [ 0.000000e+00, %87 ]
  %103 = fadd float %94, %102
  %104 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %103, float noundef %96)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #14
  %105 = getelementptr inbounds i8, ptr %56, i64 272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %106 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %105, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %106, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %105, 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
  %107 = 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> %107, 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 !102
  %.sroa.11.0.copyload = load float, ptr %104, align 4, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 76, ptr nonnull %15) #14
  call void @_ZN17ImGuiLastItemDataC2Ev(ptr noundef nonnull align 4 dereferenceable(76) %15)
  br i1 %67, label %108, label %153

108:                                              ; preds = %101
  %109 = load i64, ptr %105, align 8
  %110 = load float, ptr %90, align 4, !tbaa !100
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %110)
  %111 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %79, ptr noundef nonnull %11, i32 noundef 1024)
  br i1 %111, label %113, label %112

112:                                              ; preds = %108
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread

113:                                              ; preds = %108
  %114 = getelementptr inbounds i8, ptr %75, i64 18848
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(76) %15, ptr noundef nonnull align 8 dereferenceable(76) %114, i64 76, i1 false), !tbaa.struct !103
  store i64 %109, ptr %105, align 8
  %115 = getelementptr inbounds i8, ptr %75, i64 19248
  %116 = load i32, ptr %115, align 8, !tbaa !105
  %117 = icmp eq i32 %116, %79
  br i1 %117, label %118, label %123

118:                                              ; preds = %113
  %119 = getelementptr inbounds i8, ptr %75, i64 19260
  %120 = load i32, ptr %119, align 4, !tbaa !106
  %121 = and i32 %120, 8
  %.not1014 = icmp eq i32 %121, 0
  %brmerge = or i1 %.not1011, %.not1014
  br i1 %brmerge, label %123, label %122

122:                                              ; preds = %118
  store i32 0, ptr %115, align 8, !tbaa !105
  br label %123

123:                                              ; preds = %118, %122, %113
  %124 = phi i32 [ %79, %118 ], [ 0, %122 ], [ %116, %113 ]
  %125 = getelementptr inbounds i8, ptr %75, i64 16484
  %126 = load i32, ptr %125, align 4, !tbaa !107
  %127 = icmp eq i32 %126, %79
  br i1 %127, label %128, label %129

128:                                              ; preds = %123
  store i32 0, ptr %115, align 8, !tbaa !105
  br label %129

129:                                              ; preds = %128, %123
  %130 = getelementptr inbounds i8, ptr %75, i64 14908
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %130)
  %131 = getelementptr inbounds i8, ptr %75, i64 14636
  %132 = load float, ptr %131, align 4, !tbaa !108
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %132)
  %133 = getelementptr inbounds i8, ptr %75, i64 14640
  %134 = load float, ptr %133, align 4, !tbaa !109
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 8, float noundef %134)
  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
  %135 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %135, ptr %17, align 8
  %136 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2ii(ptr noundef %0, i32 noundef %79, 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 %124, ptr %115, align 8, !tbaa !105
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  br i1 %136, label %138, label %137

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

138:                                              ; preds = %129
  %139 = getelementptr inbounds i8, ptr %75, i64 16384
  %140 = load ptr, ptr %139, align 8, !tbaa !110
  %141 = getelementptr inbounds i8, ptr %140, i64 272
  %142 = getelementptr inbounds i8, ptr %140, i64 360
  %143 = load i32, ptr %142, align 8, !tbaa !111
  %144 = shl nuw i32 1, %143
  %145 = getelementptr inbounds i8, ptr %140, i64 366
  %146 = load i16, ptr %145, align 2, !tbaa !112
  %147 = trunc i32 %144 to i16
  %148 = or i16 %146, %147
  store i16 %148, ptr %145, align 2, !tbaa !112
  %149 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZpLR6ImVec2RKS_(ptr noundef nonnull align 4 dereferenceable(8) %141, ptr noundef nonnull align 4 dereferenceable(8) %89)
  %150 = getelementptr inbounds i8, ptr %140, i64 180
  %151 = load float, ptr %150, align 4, !tbaa !113
  %152 = fsub float %.sroa.0531.0.copyload, %151
  br label %158

153:                                              ; preds = %101
  %154 = load float, ptr %90, align 4, !tbaa !100
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %154)
  %155 = and i32 %5, 268435456
  %.not1013 = icmp eq i32 %155, 0
  br i1 %.not1013, label %156, label %158

156:                                              ; preds = %153
  %157 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_i(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %79, ptr noundef nonnull %11, i32 noundef 1024)
  br i1 %157, label %158, label %.thread

158:                                              ; preds = %138, %153, %156
  %.sroa.0531.2 = phi float [ %152, %138 ], [ %.sroa.0531.0.copyload, %153 ], [ %.sroa.0531.0.copyload, %156 ]
  %.2923 = phi ptr [ %140, %138 ], [ %56, %153 ], [ %56, %156 ]
  %159 = getelementptr inbounds i8, ptr %75, i64 18848
  %160 = getelementptr inbounds i8, ptr %75, i64 18852
  %161 = load i32, ptr %160, align 4, !tbaa !114
  %162 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %79, i32 noundef %161)
  br i1 %162, label %163, label %165

163:                                              ; preds = %158
  %164 = getelementptr inbounds i8, ptr %75, i64 20176
  store i32 1, ptr %164, align 8, !tbaa !115
  br label %165

165:                                              ; preds = %163, %158
  %166 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %79)
  %167 = load i32, ptr %160, align 4, !tbaa !114
  %168 = shl i32 %167, 7
  %169 = and i32 %168, 16384
  %spec.select = or i32 %169, %5
  %170 = and i32 %spec.select, 16384
  %171 = icmp ne i32 %170, 0
  %172 = and i32 %5, 32768
  %.not1016 = icmp eq i32 %172, 0
  %173 = and i32 %5, 65536
  %174 = icmp eq i32 %173, 0
  %175 = and i32 %5, 262144
  %.not1017 = icmp eq i32 %175, 0
  %176 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not1017, %176
  br i1 %or.cond17, label %178, label %177

177:                                              ; preds = %165
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.4, i32 noundef 4167, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

178:                                              ; preds = %165
  %179 = getelementptr inbounds i8, ptr %75, i64 16484
  %180 = load i32, ptr %179, align 4, !tbaa !107
  %.not1018 = icmp eq i32 %180, %79
  br i1 %.not1018, label %193, label %181

181:                                              ; preds = %178
  %182 = getelementptr inbounds i8, ptr %75, i64 19248
  %183 = load i32, ptr %182, align 8, !tbaa !105
  %184 = icmp eq i32 %183, %79
  br i1 %184, label %185, label %193

185:                                              ; preds = %181
  %186 = getelementptr inbounds i8, ptr %75, i64 19260
  %187 = load i32, ptr %186, align 4, !tbaa !106
  %188 = and i32 %187, 1
  %.not1019 = icmp eq i32 %188, 0
  br i1 %.not1019, label %189, label %193

189:                                              ; preds = %185
  %190 = getelementptr inbounds i8, ptr %75, i64 19284
  %191 = load i32, ptr %190, align 4, !tbaa !116
  %192 = icmp eq i32 %191, 2
  br label %193

193:                                              ; preds = %181, %189, %185, %178
  %194 = phi i1 [ false, %178 ], [ false, %181 ], [ true, %185 ], [ %192, %189 ]
  br i1 %162, label %195, label %199

195:                                              ; preds = %193
  %196 = getelementptr inbounds i8, ptr %75, i64 14432
  %197 = load i8, ptr %196, align 8, !tbaa !117, !range !38, !noundef !39
  %198 = trunc nuw i8 %197 to i1
  br label %199

199:                                              ; preds = %195, %193
  %200 = phi i1 [ false, %193 ], [ %198, %195 ]
  %201 = icmp ne ptr %166, null
  %or.cond = and i1 %67, %201
  br i1 %or.cond, label %202, label %212

202:                                              ; preds = %199
  %203 = icmp eq i32 %180, 0
  br i1 %203, label %204, label %.thread1182

204:                                              ; preds = %202
  %205 = getelementptr inbounds i8, ptr %75, i64 16528
  %206 = load i32, ptr %205, align 8, !tbaa !118
  %207 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2923, i32 noundef 1)
  %208 = icmp eq i32 %206, %207
  %.pre = load i32, ptr %179, align 4, !tbaa !107
  br label %.thread1182

.thread1182:                                      ; preds = %202, %204
  %209 = phi i32 [ %.pre, %204 ], [ %180, %202 ]
  %.ph = phi i1 [ %208, %204 ], [ false, %202 ]
  %210 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.2923, i32 noundef 1)
  %211 = icmp eq i32 %209, %210
  br label %213

212:                                              ; preds = %199
  br i1 %67, label %213, label %218

213:                                              ; preds = %.thread1182, %212
  %214 = phi i1 [ %211, %.thread1182 ], [ false, %212 ]
  %215 = phi i1 [ %.ph, %.thread1182 ], [ false, %212 ]
  %216 = getelementptr inbounds i8, ptr %.2923, i64 144
  %217 = load float, ptr %216, align 4, !tbaa !119
  br label %218

218:                                              ; preds = %212, %213
  %219 = phi i1 [ %214, %213 ], [ false, %212 ]
  %220 = phi i1 [ %215, %213 ], [ false, %212 ]
  %221 = phi float [ %217, %213 ], [ 0x47EFFFFFE0000000, %212 ]
  br i1 %201, label %222, label %.thread1183

222:                                              ; preds = %218
  %223 = getelementptr inbounds i8, ptr %166, i64 107
  %224 = load i8, ptr %223, align 1, !tbaa !120
  %225 = xor i1 %67, true
  %226 = zext i1 %225 to i8
  %227 = icmp ne i8 %224, %226
  %228 = select i1 %200, i1 true, i1 %220
  %spec.select1174 = select i1 %228, i1 true, i1 %194
  %229 = select i1 %spec.select1174, i1 true, i1 %219
  br i1 %229, label %232, label %235

.thread1183:                                      ; preds = %218
  %230 = select i1 %200, i1 true, i1 %220
  %spec.select11741185 = select i1 %230, i1 true, i1 %194
  %231 = select i1 %spec.select11741185, i1 true, i1 %219
  br i1 %231, label %232, label %.thread1190.thread

232:                                              ; preds = %.thread1183, %222
  %spec.select11741189 = phi i1 [ %spec.select11741185, %.thread1183 ], [ %spec.select1174, %222 ]
  %233 = phi i1 [ false, %.thread1183 ], [ %227, %222 ]
  %234 = load i32, ptr %179, align 4, !tbaa !107
  %.not1020 = icmp ne i32 %234, %79
  %brmerge1067 = select i1 %.not1020, i1 true, i1 %233
  br i1 %brmerge1067, label %236, label %.thread1190

235:                                              ; preds = %222
  br i1 %227, label %236, label %.thread1190.thread

236:                                              ; preds = %232, %235
  %237 = phi i8 [ 1, %232 ], [ 0, %235 ]
  %spec.select11741187 = phi i1 [ %spec.select11741189, %232 ], [ false, %235 ]
  %238 = phi i1 [ %233, %232 ], [ true, %235 ]
  %239 = getelementptr inbounds i8, ptr %75, i64 20192
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %239)
  %240 = getelementptr inbounds i8, ptr %75, i64 20200
  %241 = load i32, ptr %240, align 8, !tbaa !121
  call void @_ZN5ImGui23InputTextDeactivateHookEj(i32 noundef %241)
  %242 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %243 = trunc i64 %242 to i32
  %244 = getelementptr inbounds i8, ptr %75, i64 20248
  %245 = add nsw i32 %243, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %244, i32 noundef %245)
  %246 = getelementptr inbounds i8, ptr %75, i64 20256
  %247 = load ptr, ptr %246, align 8, !tbaa !122
  %248 = sext i32 %245 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %247, ptr nonnull align 1 %2, i64 %248, i1 false)
  %249 = load i32, ptr %240, align 8, !tbaa !121
  %250 = icmp ne i32 %249, %79
  %.not1226 = select i1 %250, i1 true, i1 %238
  br i1 %.not1226, label %264, label %251

251:                                              ; preds = %236
  %252 = getelementptr inbounds i8, ptr %75, i64 20208
  %253 = load i32, ptr %252, align 8, !tbaa !123
  %.not1021 = icmp eq i32 %253, %243
  br i1 %.not1021, label %254, label %263

254:                                              ; preds = %251
  %255 = getelementptr inbounds i8, ptr %75, i64 20264
  %256 = load i8, ptr %255, align 8, !tbaa !124, !range !38, !noundef !39
  %257 = trunc nuw i8 %256 to i1
  br i1 %257, label %258, label %264

258:                                              ; preds = %254
  %259 = getelementptr inbounds i8, ptr %75, i64 20240
  %260 = load ptr, ptr %259, align 8, !tbaa !125
  %sext = shl i64 %242, 32
  %261 = ashr exact i64 %sext, 32
  %262 = call i32 @strncmp(ptr noundef %260, ptr noundef nonnull %2, i64 noundef %261) #15
  %.not1022 = icmp eq i32 %262, 0
  br i1 %.not1022, label %264, label %263

263:                                              ; preds = %258, %251
  br label %264

264:                                              ; preds = %263, %258, %254, %236
  %.0936.shrunk = phi i1 [ false, %263 ], [ true, %258 ], [ true, %254 ], [ false, %236 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #14
  store ptr null, ptr %18, align 8, !tbaa !40
  store i32 %79, ptr %240, align 8, !tbaa !121
  %265 = getelementptr inbounds i8, ptr %75, i64 20216
  %266 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %265, i32 noundef %266)
  %267 = getelementptr inbounds i8, ptr %75, i64 20232
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %267, i32 noundef 0)
  %268 = getelementptr inbounds i8, ptr %75, i64 20264
  store i8 0, ptr %268, align 8, !tbaa !124
  %269 = getelementptr inbounds i8, ptr %75, i64 20224
  %270 = load ptr, ptr %269, align 8, !tbaa !126
  %271 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %270, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %18)
  %272 = getelementptr inbounds i8, ptr %75, i64 20204
  store i32 %271, ptr %272, align 4, !tbaa !127
  %273 = load ptr, ptr %18, align 8, !tbaa !40
  %274 = ptrtoint ptr %273 to i64
  %275 = ptrtoint ptr %2 to i64
  %276 = sub i64 %274, %275
  %277 = trunc i64 %276 to i32
  %278 = getelementptr inbounds i8, ptr %75, i64 20208
  store i32 %277, ptr %278, align 8, !tbaa !123
  br i1 %.0936.shrunk, label %279, label %280

279:                                              ; preds = %264
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %239)
  br label %285

280:                                              ; preds = %264
  %281 = getelementptr inbounds i8, ptr %75, i64 20272
  store float 0.000000e+00, ptr %281, align 8, !tbaa !128
  %282 = getelementptr inbounds i8, ptr %75, i64 20276
  %283 = xor i1 %67, true
  %284 = zext i1 %283 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %282, i32 noundef %284)
  br label %285

285:                                              ; preds = %280, %279
  br i1 %67, label %300, label %286

286:                                              ; preds = %285
  %287 = trunc i32 %5 to i8
  %288 = lshr i8 %287, 4
  br i1 %194, label %289, label %295

289:                                              ; preds = %286
  br i1 %.0936.shrunk, label %290, label %294

290:                                              ; preds = %289
  %291 = getelementptr inbounds i8, ptr %75, i64 19260
  %292 = load i32, ptr %291, align 4, !tbaa !106
  %293 = and i32 %292, 4
  %.not1024 = icmp eq i32 %293, 0
  br i1 %.not1024, label %294, label %295

294:                                              ; preds = %290, %289
  br label %295

295:                                              ; preds = %294, %290, %286
  %.1930 = phi i8 [ %288, %290 ], [ 1, %294 ], [ %288, %286 ]
  br i1 %200, label %296, label %300

296:                                              ; preds = %295
  %297 = getelementptr inbounds i8, ptr %75, i64 3676
  %298 = load i8, ptr %297, align 4, !tbaa !129, !range !38, !noundef !39
  %299 = trunc nuw i8 %298 to i1
  %spec.select1069 = select i1 %299, i8 1, i8 %.1930
  br label %300

300:                                              ; preds = %296, %295, %285
  %.2931 = phi i8 [ 0, %285 ], [ %.1930, %295 ], [ %spec.select1069, %296 ]
  %301 = and i32 %5, 8192
  %.not1025 = icmp eq i32 %301, 0
  br i1 %.not1025, label %304, label %302

302:                                              ; preds = %300
  %303 = getelementptr inbounds i8, ptr %75, i64 20288
  store i8 1, ptr %303, align 4, !tbaa !130
  br label %304

304:                                              ; preds = %302, %300
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #14
  br label %.thread1190

.thread1190.thread:                               ; preds = %235, %.thread1183
  %305 = getelementptr inbounds i8, ptr %75, i64 89
  %306 = load i8, ptr %305, align 1, !tbaa !131, !range !38, !noundef !39
  %307 = trunc nuw i8 %306 to i1
  br label %.sink.split

.thread1190:                                      ; preds = %232, %304
  %308 = phi i8 [ %237, %304 ], [ 1, %232 ]
  %spec.select11741186 = phi i1 [ %spec.select11741187, %304 ], [ %spec.select11741189, %232 ]
  %.3932 = phi i8 [ %.2931, %304 ], [ 0, %232 ]
  %.0924 = phi ptr [ %239, %304 ], [ %166, %232 ]
  %309 = getelementptr inbounds i8, ptr %75, i64 89
  %310 = load i8, ptr %309, align 1, !tbaa !131, !range !38, !noundef !39
  %311 = trunc nuw i8 %310 to i1
  %312 = load i32, ptr %179, align 4, !tbaa !107
  %.not1026 = icmp ne i32 %312, %79
  %brmerge1071.not = and i1 %spec.select11741186, %.not1026
  br i1 %brmerge1071.not, label %313, label %320

313:                                              ; preds = %.thread1190
  %.not1027 = icmp eq ptr %.0924, null
  br i1 %.not1027, label %.critedge, label %314

314:                                              ; preds = %313
  %315 = getelementptr inbounds i8, ptr %.0924, i64 8
  %316 = load i32, ptr %315, align 8, !tbaa !121
  %317 = icmp eq i32 %316, %79
  br i1 %317, label %318, label %.critedge

.critedge:                                        ; preds = %313, %314
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.4, i32 noundef 4241, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

318:                                              ; preds = %314
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %79, ptr noundef nonnull %56)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %79, ptr noundef nonnull %56)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindowi(ptr noundef nonnull %56, i32 noundef 0)
  br label %.sink.split

.sink.split:                                      ; preds = %318, %.thread1190.thread
  %.ph1301 = phi i1 [ %307, %.thread1190.thread ], [ %311, %318 ]
  %.09241270.ph = phi ptr [ %166, %.thread1190.thread ], [ %.0924, %318 ]
  %.39321269.ph = phi i8 [ 0, %.thread1190.thread ], [ %.3932, %318 ]
  %.ph1302 = phi i8 [ 0, %.thread1190.thread ], [ %308, %318 ]
  %319 = load i32, ptr %179, align 4, !tbaa !107
  br label %320

320:                                              ; preds = %.sink.split, %.thread1190
  %321 = phi i1 [ %311, %.thread1190 ], [ %.ph1301, %.sink.split ]
  %.09241270 = phi ptr [ %.0924, %.thread1190 ], [ %.09241270.ph, %.sink.split ]
  %.39321269 = phi i8 [ %.3932, %.thread1190 ], [ %.39321269.ph, %.sink.split ]
  %322 = phi i8 [ %308, %.thread1190 ], [ %.ph1302, %.sink.split ]
  %323 = phi i32 [ %312, %.thread1190 ], [ %319, %.sink.split ]
  %324 = icmp eq i32 %323, %79
  br i1 %324, label %325, label %336

325:                                              ; preds = %320
  br i1 %200, label %326, label %327

326:                                              ; preds = %325
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 655, i32 noundef %79, i32 noundef 0)
  br label %327

327:                                              ; preds = %326, %325
  %328 = getelementptr inbounds i8, ptr %75, i64 18792
  %329 = load i32, ptr %328, align 8, !tbaa !132
  %or.cond1073.not.not = icmp eq i32 %68, 0
  %spec.select1231.v = select i1 %or.cond1073.not.not, i32 3, i32 15
  %spec.select1231 = or i32 %329, %spec.select1231.v
  store i32 %spec.select1231, ptr %328, align 8, !tbaa !132
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 519, i32 noundef %79, i32 noundef 0)
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 520, i32 noundef %79, i32 noundef 0)
  br i1 %67, label %330, label %331

330:                                              ; preds = %327
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 517, i32 noundef %79, i32 noundef 0)
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 518, i32 noundef %79, i32 noundef 0)
  br label %331

331:                                              ; preds = %330, %327
  br i1 %321, label %332, label %333

332:                                              ; preds = %331
  call void @_ZN5ImGui11SetKeyOwnerE8ImGuiKeyji(i32 noundef 16384, i32 noundef %79, i32 noundef 0)
  br label %333

333:                                              ; preds = %332, %331
  %.not1029 = icmp eq i32 %72, 0
  br i1 %.not1029, label %336, label %334

334:                                              ; preds = %333
  %335 = call noundef zeroext i1 @_ZN5ImGui18SetShortcutRoutingEiji(i32 noundef 512, i32 noundef %79, i32 noundef 0)
  br label %336

336:                                              ; preds = %333, %334, %320
  %337 = load i32, ptr %179, align 4, !tbaa !107
  %338 = icmp eq i32 %337, %79
  %339 = icmp eq ptr %.09241270, null
  %or.cond5 = and i1 %339, %338
  br i1 %or.cond5, label %340, label %341

340:                                              ; preds = %336
  call void @_ZN5ImGui13ClearActiveIDEv()
  %.pre1244 = load i32, ptr %179, align 4, !tbaa !107
  br label %341

341:                                              ; preds = %340, %336
  %342 = phi i32 [ %.pre1244, %340 ], [ %337, %336 ]
  %343 = icmp eq i32 %342, %79
  br i1 %343, label %.thread1192, label %346

.thread1192:                                      ; preds = %341
  %344 = getelementptr inbounds i8, ptr %75, i64 14432
  %345 = load i8, ptr %344, align 8, !tbaa !117, !range !38, !noundef !39
  %.not1229 = xor i8 %322, 1
  %not.brmerge1075 = and i8 %345, %.not1229
  br label %349

346:                                              ; preds = %341
  %347 = icmp ne ptr %.09241270, null
  %348 = select i1 %347, i1 %219, i1 false
  br label %349

349:                                              ; preds = %.thread1192, %346
  %.09251194 = phi i8 [ 0, %346 ], [ %not.brmerge1075, %.thread1192 ]
  %350 = phi i1 [ %348, %346 ], [ true, %.thread1192 ]
  %351 = zext i1 %350 to i8
  %352 = icmp ne ptr %.09241270, null
  br i1 %352, label %353, label %.thread1195

353:                                              ; preds = %349
  %354 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br i1 %354, label %357, label %355

355:                                              ; preds = %353
  %356 = trunc i8 %.39321269 to i1
  br i1 %356, label %357, label %358

357:                                              ; preds = %355, %353
  br label %358

358:                                              ; preds = %357, %355
  %359 = phi i1 [ false, %355 ], [ %350, %357 ]
  %brmerge1076 = or i1 %350, %359
  %or.cond1172 = select i1 %171, i1 %brmerge1076, i1 false
  br i1 %or.cond1172, label %360, label %.thread1195

360:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #14
  store ptr null, ptr %19, align 8, !tbaa !40
  %361 = getelementptr inbounds i8, ptr %.09241270, i64 24
  %362 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %361, i32 noundef %362)
  %363 = getelementptr inbounds i8, ptr %.09241270, i64 32
  %364 = load ptr, ptr %363, align 8, !tbaa !126
  %365 = load i32, ptr %361, align 8, !tbaa !133
  %366 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %364, i32 noundef %365, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %19)
  %367 = getelementptr inbounds i8, ptr %.09241270, i64 12
  store i32 %366, ptr %367, align 4, !tbaa !127
  %368 = load ptr, ptr %19, align 8, !tbaa !40
  %369 = ptrtoint ptr %368 to i64
  %370 = ptrtoint ptr %2 to i64
  %371 = sub i64 %369, %370
  %372 = trunc i64 %371 to i32
  %373 = getelementptr inbounds i8, ptr %.09241270, i64 16
  store i32 %372, ptr %373, align 8, !tbaa !123
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  %374 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  %375 = and i1 %359, %374
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #14
  br label %.thread1195

.thread1195:                                      ; preds = %349, %360, %358
  %.0939.in = phi i1 [ %375, %360 ], [ %359, %358 ], [ false, %349 ]
  %.0939 = zext i1 %.0939.in to i8
  %brmerge1077 = select i1 %350, i1 true, i1 %.0939.in
  br i1 %brmerge1077, label %380, label %376

376:                                              ; preds = %.thread1195
  %377 = load i32, ptr %179, align 4, !tbaa !107
  %378 = icmp eq i32 %377, %79
  %.not = xor i1 %171, true
  %379 = and i1 %378, %.not
  %or.cond1078 = and i1 %352, %379
  br i1 %or.cond1078, label %381, label %385

380:                                              ; preds = %.thread1195
  %.not.old = xor i1 %171, true
  %or.cond9.old = and i1 %352, %.not.old
  br i1 %or.cond9.old, label %381, label %385

381:                                              ; preds = %376, %380
  %382 = getelementptr inbounds i8, ptr %.09241270, i64 72
  %383 = load i8, ptr %382, align 8, !tbaa !124, !range !38, !noundef !39
  %384 = trunc nuw i8 %383 to i1
  br label %385

385:                                              ; preds = %381, %380, %376
  %386 = phi i1 [ false, %380 ], [ false, %376 ], [ %384, %381 ]
  %.not1030 = icmp eq ptr %1, null
  br i1 %.not1030, label %395, label %387

387:                                              ; preds = %385
  br i1 %386, label %388, label %391

388:                                              ; preds = %387
  %389 = getelementptr inbounds i8, ptr %.09241270, i64 48
  %390 = load ptr, ptr %389, align 8, !tbaa !125
  br label %391

391:                                              ; preds = %387, %388
  %392 = phi ptr [ %390, %388 ], [ %2, %387 ]
  %393 = load i8, ptr %392, align 1, !tbaa !134
  %394 = icmp eq i8 %393, 0
  br label %395

395:                                              ; preds = %391, %385
  %396 = phi i1 [ false, %385 ], [ %394, %391 ]
  %brmerge1079 = select i1 %.not1016, i1 true, i1 %396
  br i1 %brmerge1079, label %427, label %397

397:                                              ; preds = %395
  %398 = getelementptr inbounds i8, ptr %75, i64 15664
  %399 = load ptr, ptr %398, align 8, !tbaa !135
  %400 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(118) %399, i16 noundef zeroext 42)
  %401 = getelementptr inbounds i8, ptr %75, i64 23944
  %402 = load ptr, ptr %398, align 8, !tbaa !135
  %403 = getelementptr inbounds i8, ptr %402, i64 20
  %404 = load float, ptr %403, align 4, !tbaa !136
  %405 = getelementptr inbounds i8, ptr %75, i64 23964
  store float %404, ptr %405, align 4, !tbaa !136
  %406 = getelementptr inbounds i8, ptr %402, i64 100
  %407 = getelementptr inbounds i8, ptr %75, i64 24044
  %408 = load <2 x float>, ptr %406, align 4, !tbaa !102
  store <2 x float> %408, ptr %407, align 4, !tbaa !102
  %409 = getelementptr inbounds i8, ptr %402, i64 108
  %410 = load float, ptr %409, align 4, !tbaa !137
  %411 = getelementptr inbounds i8, ptr %75, i64 24052
  store float %410, ptr %411, align 4, !tbaa !137
  %412 = getelementptr inbounds i8, ptr %402, i64 64
  %413 = load ptr, ptr %412, align 8, !tbaa !138
  %414 = getelementptr inbounds i8, ptr %75, i64 24008
  store ptr %413, ptr %414, align 8, !tbaa !138
  %415 = getelementptr inbounds i8, ptr %75, i64 24000
  store ptr %400, ptr %415, align 8, !tbaa !139
  %416 = getelementptr inbounds i8, ptr %400, i64 4
  %417 = load float, ptr %416, align 4, !tbaa !140
  %418 = getelementptr inbounds i8, ptr %75, i64 23960
  store float %417, ptr %418, align 8, !tbaa !142
  %419 = getelementptr inbounds i8, ptr %75, i64 23984
  %420 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %419)
  br i1 %420, label %421, label %.critedge11

421:                                              ; preds = %397
  %422 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %401)
  br i1 %422, label %423, label %.critedge11

423:                                              ; preds = %421
  %424 = getelementptr inbounds i8, ptr %75, i64 23968
  %425 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %424)
  br i1 %425, label %426, label %.critedge11

.critedge11:                                      ; preds = %421, %397, %423
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.4, i32 noundef 4309, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

426:                                              ; preds = %423
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %401)
  br label %427

427:                                              ; preds = %395, %426
  %428 = load i32, ptr %179, align 4, !tbaa !107
  %429 = icmp eq i32 %428, %79
  br i1 %429, label %430, label %590

430:                                              ; preds = %427
  br i1 %352, label %432, label %431

431:                                              ; preds = %430
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.4, i32 noundef 4317, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

432:                                              ; preds = %430
  %433 = getelementptr inbounds i8, ptr %.09241270, i64 16
  %434 = load i32, ptr %433, align 8, !tbaa !123
  %435 = getelementptr inbounds i8, ptr %.09241270, i64 3718
  store i8 0, ptr %435, align 2, !tbaa !143
  %436 = getelementptr inbounds i8, ptr %.09241270, i64 76
  store i32 %3, ptr %436, align 4, !tbaa !144
  %437 = getelementptr inbounds i8, ptr %.09241270, i64 3720
  store i32 %spec.select, ptr %437, align 8, !tbaa !145
  %438 = getelementptr inbounds i8, ptr %75, i64 3656
  %439 = load i8, ptr %438, align 8, !tbaa !117, !range !38, !noundef !39
  %440 = xor i8 %439, 1
  %441 = getelementptr inbounds i8, ptr %75, i64 16497
  store i8 %440, ptr %441, align 1, !tbaa !146
  %442 = getelementptr inbounds i8, ptr %75, i64 3648
  %443 = load float, ptr %442, align 8, !tbaa !147
  %444 = load float, ptr %11, align 8, !tbaa !148
  %445 = fsub float %443, %444
  %446 = load float, ptr %89, align 4, !tbaa !149
  %447 = fsub float %445, %446
  %448 = getelementptr inbounds i8, ptr %.09241270, i64 80
  %449 = load float, ptr %448, align 8, !tbaa !128
  %450 = fadd float %447, %449
  br i1 %67, label %451, label %457

451:                                              ; preds = %432
  %452 = getelementptr inbounds i8, ptr %75, i64 3652
  %453 = load float, ptr %452, align 4, !tbaa !150
  %454 = getelementptr inbounds i8, ptr %.2923, i64 276
  %455 = load float, ptr %454, align 4, !tbaa !151
  %456 = fsub float %453, %455
  br label %461

457:                                              ; preds = %432
  %458 = getelementptr inbounds i8, ptr %75, i64 15672
  %459 = load float, ptr %458, align 8, !tbaa !41
  %460 = fmul float %459, 5.000000e-01
  br label %461

461:                                              ; preds = %457, %451
  %462 = phi float [ %456, %451 ], [ %460, %457 ]
  %463 = trunc i8 %.39321269 to i1
  br i1 %463, label %464, label %466

464:                                              ; preds = %461
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  %465 = getelementptr inbounds i8, ptr %.09241270, i64 3717
  store i8 1, ptr %465, align 1, !tbaa !152
  br label %541

466:                                              ; preds = %461
  br i1 %162, label %467, label %507

467:                                              ; preds = %466
  %468 = getelementptr inbounds i8, ptr %75, i64 14442
  %469 = load i16, ptr %468, align 2, !tbaa !153
  %470 = icmp ugt i16 %469, 1
  br i1 %470, label %471, label %507

471:                                              ; preds = %467
  %472 = getelementptr inbounds i8, ptr %75, i64 3677
  %473 = load i8, ptr %472, align 1, !tbaa !154, !range !38, !noundef !39
  %474 = trunc nuw i8 %473 to i1
  br i1 %474, label %507, label %475

475:                                              ; preds = %471
  %476 = getelementptr inbounds i8, ptr %.09241270, i64 84
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09241270, ptr noundef nonnull %476, float noundef %450, float noundef %462)
  %477 = load i16, ptr %468, align 2, !tbaa !153
  %478 = and i16 %477, 1
  %479 = icmp eq i16 %478, 0
  %480 = load i32, ptr %476, align 4, !tbaa !155
  br i1 %479, label %481, label %497

481:                                              ; preds = %475
  %482 = icmp eq i32 %480, 0
  br i1 %482, label %487, label %483

483:                                              ; preds = %481
  %484 = add nsw i32 %480, -1
  %485 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09241270, i32 noundef %484)
  %486 = icmp eq i16 %485, 10
  br label %487

487:                                              ; preds = %483, %481
  %488 = phi i1 [ true, %481 ], [ %486, %483 ]
  %489 = getelementptr inbounds i8, ptr %.09241270, i64 88
  %490 = load i32, ptr %489, align 4, !tbaa !156
  %491 = getelementptr inbounds i8, ptr %.09241270, i64 92
  %492 = load i32, ptr %491, align 4, !tbaa !157
  %.not1031 = icmp eq i32 %490, %492
  %brmerge1081.not = and i1 %488, %.not1031
  br i1 %brmerge1081.not, label %.thread1277, label %493

493:                                              ; preds = %487
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef 2097164)
  %.pre1245 = load i32, ptr %489, align 4, !tbaa !156
  %.pre1246 = load i32, ptr %491, align 4, !tbaa !157
  %.not1032 = icmp eq i32 %.pre1245, %.pre1246
  br i1 %.not1032, label %.thread1277, label %494

.thread1277:                                      ; preds = %487, %493
  call void @_ZN5ImStbL37stb_textedit_prep_selection_at_cursorEPNS_17STB_TexteditStateE(ptr noundef nonnull %476)
  br label %494

494:                                              ; preds = %.thread1277, %493
  %495 = load i32, ptr %476, align 4, !tbaa !155
  %496 = call noundef i32 @_ZN5ImStbL30STB_TEXTEDIT_MOVEWORDRIGHT_MACEP19ImGuiInputTextStatei(ptr noundef nonnull %.09241270, i32 noundef %495)
  store i32 %496, ptr %476, align 4, !tbaa !155
  store i32 %496, ptr %491, align 4, !tbaa !157
  call void @_ZN5ImStbL18stb_textedit_clampEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09241270, ptr noundef nonnull %476)
  br label %506

497:                                              ; preds = %475
  %498 = call noundef zeroext i16 @_ZN5ImStbL20STB_TEXTEDIT_GETCHAREPK19ImGuiInputTextStatei(ptr noundef nonnull %.09241270, i32 noundef %480)
  %499 = icmp ne i16 %498, 10
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef 2097156)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef 6291461)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef 6291457)
  %brmerge1083.not = and i1 %67, %499
  br i1 %brmerge1083.not, label %500, label %504

500:                                              ; preds = %497
  %501 = getelementptr inbounds i8, ptr %.09241270, i64 88
  %502 = getelementptr inbounds i8, ptr %.09241270, i64 92
  call void @_ZL6ImSwapIiEvRT_S1_(ptr noundef nonnull align 4 dereferenceable(4) %501, ptr noundef nonnull align 4 dereferenceable(4) %502)
  %503 = load i32, ptr %502, align 4, !tbaa !157
  store i32 %503, ptr %476, align 4, !tbaa !155
  br label %504

504:                                              ; preds = %497, %500
  %505 = getelementptr inbounds i8, ptr %.09241270, i64 3716
  store i8 0, ptr %505, align 4, !tbaa !158
  br label %506

506:                                              ; preds = %504, %494
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br label %541

507:                                              ; preds = %471, %467, %466
  %508 = getelementptr inbounds i8, ptr %75, i64 14432
  %509 = load i8, ptr %508, align 8, !tbaa !117, !range !38, !noundef !39
  %510 = trunc nuw i8 %509 to i1
  br i1 %510, label %511, label %524

511:                                              ; preds = %507
  %512 = getelementptr inbounds i8, ptr %.09241270, i64 3717
  %513 = load i8, ptr %512, align 1, !tbaa !152, !range !38, !noundef !39
  %514 = trunc nuw i8 %513 to i1
  br i1 %514, label %524, label %515

515:                                              ; preds = %511
  br i1 %162, label %516, label %541

516:                                              ; preds = %515
  %517 = getelementptr inbounds i8, ptr %75, i64 3677
  %518 = load i8, ptr %517, align 1, !tbaa !154, !range !38, !noundef !39
  %519 = trunc nuw i8 %518 to i1
  %520 = getelementptr inbounds i8, ptr %.09241270, i64 84
  br i1 %519, label %521, label %522

521:                                              ; preds = %516
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09241270, ptr noundef nonnull %520, float noundef %450, float noundef %462)
  br label %523

522:                                              ; preds = %516
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09241270, ptr noundef nonnull %520, float noundef %450, float noundef %462)
  br label %523

523:                                              ; preds = %522, %521
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br label %541

524:                                              ; preds = %511, %507
  %525 = trunc nuw i8 %439 to i1
  br i1 %525, label %526, label %541

526:                                              ; preds = %524
  %527 = getelementptr inbounds i8, ptr %.09241270, i64 3717
  %528 = load i8, ptr %527, align 1, !tbaa !152, !range !38, !noundef !39
  %529 = trunc nuw i8 %528 to i1
  br i1 %529, label %541, label %530

530:                                              ; preds = %526
  %531 = getelementptr inbounds i8, ptr %75, i64 232
  %532 = load float, ptr %531, align 8, !tbaa !159
  %533 = fcmp une float %532, 0.000000e+00
  br i1 %533, label %538, label %534

534:                                              ; preds = %530
  %535 = getelementptr inbounds i8, ptr %75, i64 236
  %536 = load float, ptr %535, align 4, !tbaa !160
  %537 = fcmp une float %536, 0.000000e+00
  br i1 %537, label %538, label %541

538:                                              ; preds = %534, %530
  %539 = getelementptr inbounds i8, ptr %.09241270, i64 84
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.09241270, ptr noundef nonnull %539, float noundef %450, float noundef %462)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  %540 = getelementptr inbounds i8, ptr %.09241270, i64 3716
  store i8 1, ptr %540, align 4, !tbaa !158
  br label %541

541:                                              ; preds = %506, %524, %526, %534, %538, %515, %523, %464
  %542 = getelementptr inbounds i8, ptr %.09241270, i64 3717
  %543 = load i8, ptr %542, align 1, !tbaa !152, !range !38, !noundef !39
  %544 = trunc nuw i8 %543 to i1
  br i1 %544, label %545, label %549

545:                                              ; preds = %541
  %546 = load i8, ptr %438, align 8, !tbaa !117, !range !38, !noundef !39
  %547 = trunc nuw i8 %546 to i1
  br i1 %547, label %549, label %548

548:                                              ; preds = %545
  store i8 0, ptr %542, align 1, !tbaa !152
  br label %549

549:                                              ; preds = %548, %545, %541
  br i1 %.not1011, label %557, label %550

550:                                              ; preds = %549
  %551 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %79, i32 noundef 1)
  %.not1084 = xor i1 %551, true
  %brmerge1085 = or i1 %171, %.not1084
  br i1 %brmerge1085, label %557, label %552

552:                                              ; preds = %550
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #14
  store i32 9, ptr %20, align 4, !tbaa !104
  %553 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %75, ptr noundef nonnull %20, i32 noundef %spec.select, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %553, label %554, label %556

554:                                              ; preds = %552
  %555 = load i32, ptr %20, align 4, !tbaa !104
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %555)
  br label %556

556:                                              ; preds = %554, %552
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #14
  br label %557

557:                                              ; preds = %550, %556, %549
  %558 = getelementptr inbounds i8, ptr %75, i64 3676
  %559 = load i8, ptr %558, align 4, !tbaa !129, !range !38, !noundef !39
  %560 = trunc nuw i8 %559 to i1
  br i1 %560, label %561, label %566

561:                                              ; preds = %557
  %562 = getelementptr inbounds i8, ptr %75, i64 3678
  %563 = load i8, ptr %562, align 2, !tbaa !161, !range !38, !noundef !39
  %564 = trunc nuw i8 %563 to i1
  %.not1086 = xor i1 %564, true
  %565 = select i1 %564, i1 %321, i1 false
  br i1 %565, label %567, label %571

566:                                              ; preds = %557
  br i1 %321, label %567, label %571

567:                                              ; preds = %561, %566
  %568 = getelementptr inbounds i8, ptr %75, i64 3679
  %569 = load i8, ptr %568, align 1, !tbaa !162, !range !38, !noundef !39
  %570 = trunc nuw i8 %569 to i1
  br label %571

571:                                              ; preds = %561, %566, %567
  %572 = phi i1 [ %321, %561 ], [ false, %566 ], [ %321, %567 ]
  %573 = phi i1 [ %.not1086, %561 ], [ false, %566 ], [ %570, %567 ]
  %574 = getelementptr inbounds i8, ptr %75, i64 14552
  %575 = load i32, ptr %574, align 8, !tbaa !163
  %576 = icmp sgt i32 %575, 0
  br i1 %576, label %577, label %590

577:                                              ; preds = %571
  %brmerge1089 = or i1 %171, %573
  %brmerge1090 = select i1 %brmerge1089, i1 true, i1 %194
  br i1 %brmerge1090, label %.loopexit1233, label %.lr.ph

.lr.ph:                                           ; preds = %577, %586
  %.09611234 = phi i32 [ %587, %586 ], [ 0, %577 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #14
  %578 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %574, i32 noundef %.09611234)
  %579 = load i16, ptr %578, align 2, !tbaa !153
  %580 = zext i16 %579 to i32
  store i32 %580, ptr %21, align 4, !tbaa !104
  %581 = icmp eq i16 %579, 9
  br i1 %581, label %586, label %582

582:                                              ; preds = %.lr.ph
  %583 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %75, ptr noundef nonnull %21, i32 noundef %spec.select, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %583, label %584, label %586

584:                                              ; preds = %582
  %585 = load i32, ptr %21, align 4, !tbaa !104
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %585)
  br label %586

586:                                              ; preds = %582, %584, %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #14
  %587 = add nuw nsw i32 %.09611234, 1
  %588 = load i32, ptr %574, align 8, !tbaa !163
  %589 = icmp slt i32 %587, %588
  br i1 %589, label %.lr.ph, label %.loopexit1233, !llvm.loop !164

.loopexit1233:                                    ; preds = %586, %577
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %574, i32 noundef 0)
  br label %590

590:                                              ; preds = %571, %.loopexit1233, %427
  %591 = phi i1 [ %321, %427 ], [ %572, %.loopexit1233 ], [ %572, %571 ]
  %.0960 = phi i32 [ 0, %427 ], [ %434, %.loopexit1233 ], [ %434, %571 ]
  %592 = load i32, ptr %179, align 4, !tbaa !107
  %593 = icmp eq i32 %592, %79
  br i1 %593, label %594, label %889

594:                                              ; preds = %590
  %595 = getelementptr inbounds i8, ptr %75, i64 16496
  %596 = load i8, ptr %595, align 8, !tbaa !166, !range !38, !noundef !39
  %597 = trunc nuw i8 %596 to i1
  br i1 %597, label %.thread1280, label %598

598:                                              ; preds = %594
  %599 = trunc nuw i8 %.09251194 to i1
  br i1 %599, label %.thread1280, label %600

600:                                              ; preds = %598
  br i1 %352, label %602, label %601

601:                                              ; preds = %600
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.4, i32 noundef 4425, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

602:                                              ; preds = %600
  %603 = load float, ptr %90, align 4, !tbaa !100
  %604 = fsub float %.sroa.11.0.copyload, %603
  %605 = getelementptr inbounds i8, ptr %75, i64 15672
  %606 = load float, ptr %605, align 8, !tbaa !41
  %607 = fdiv float %604, %606
  %608 = fptosi float %607 to i32
  %609 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %608, i32 noundef 1)
  %610 = getelementptr inbounds i8, ptr %.09241270, i64 84
  %611 = getelementptr inbounds i8, ptr %.09241270, i64 100
  store i32 %609, ptr %611, align 4, !tbaa !167
  %612 = getelementptr inbounds i8, ptr %75, i64 3677
  %613 = load i8, ptr %612, align 1, !tbaa !154, !range !38, !noundef !39
  %614 = trunc nuw i8 %613 to i1
  %615 = select i1 %614, i32 4194304, i32 0
  %616 = getelementptr inbounds i8, ptr %75, i64 3678
  %617 = getelementptr inbounds i8, ptr %75, i64 3676
  %.in.in = select i1 %591, ptr %616, ptr %617
  %.in = load i8, ptr %.in.in, align 2, !tbaa !117, !range !38, !noundef !39
  %618 = trunc nuw i8 %.in to i1
  br i1 %591, label %619, label %630

619:                                              ; preds = %602
  %620 = getelementptr inbounds i8, ptr %75, i64 3679
  %621 = load i8, ptr %620, align 1, !tbaa !162, !range !38, !noundef !39
  %622 = trunc nuw i8 %621 to i1
  br i1 %622, label %623, label %630

623:                                              ; preds = %619
  %624 = load i8, ptr %617, align 4, !tbaa !129, !range !38, !noundef !39
  %625 = trunc nuw i8 %624 to i1
  br i1 %625, label %630, label %626

626:                                              ; preds = %623
  %627 = load i8, ptr %616, align 2, !tbaa !161, !range !38, !noundef !39
  %628 = trunc nuw i8 %627 to i1
  %629 = xor i1 %628, true
  br label %630

630:                                              ; preds = %626, %623, %619, %602
  %631 = phi i1 [ false, %623 ], [ false, %619 ], [ false, %602 ], [ %629, %626 ]
  %632 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2617, i32 noundef %79, i32 noundef 1)
  br i1 %632, label %637, label %633

633:                                              ; preds = %630
  %634 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8714, i32 noundef %79, i32 noundef 1)
  %635 = and i1 %.not1016, %634
  %636 = xor i1 %635, true
  %brmerge1093 = or i1 %171, %636
  %.not1099 = xor i1 %67, true
  %brmerge1100 = or i1 %brmerge1093, %.not1099
  %not.brmerge1093 = xor i1 %brmerge1093, true
  br i1 %brmerge1100, label %640, label %638

637:                                              ; preds = %630
  %.not1016.not1094 = xor i1 %.not1016, true
  %brmerge1095 = or i1 %171, %.not1016.not1094
  %.not1096 = xor i1 %67, true
  %brmerge1097 = or i1 %brmerge1095, %.not1096
  %not.brmerge1095 = xor i1 %brmerge1095, true
  br i1 %brmerge1097, label %640, label %638

638:                                              ; preds = %633, %637
  %639 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br label %640

640:                                              ; preds = %633, %637, %638
  %641 = phi i1 [ %not.brmerge1095, %637 ], [ %not.brmerge1093, %633 ], [ %639, %638 ]
  %642 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2596, i32 noundef %79, i32 noundef 0)
  br i1 %642, label %645, label %643

643:                                              ; preds = %640
  %644 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 4617, i32 noundef %79, i32 noundef 0)
  %brmerge1104.demorgan = and i1 %.not1016, %644
  %brmerge1106.not = and i1 %67, %brmerge1104.demorgan
  br i1 %brmerge1106.not, label %647, label %649

645:                                              ; preds = %640
  %646 = and i32 %5, 67141632
  %brmerge1110.not = icmp eq i32 %646, 67108864
  br i1 %brmerge1110.not, label %647, label %649

647:                                              ; preds = %645, %643
  %648 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br label %649

649:                                              ; preds = %645, %643, %647
  %650 = phi i1 [ %.not1016, %645 ], [ %brmerge1104.demorgan, %643 ], [ %648, %647 ]
  %651 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2615, i32 noundef %79, i32 noundef 1)
  br i1 %651, label %654, label %652

652:                                              ; preds = %649
  %653 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 8713, i32 noundef %79, i32 noundef 1)
  br i1 %653, label %654, label %._crit_edge1258

._crit_edge1258:                                  ; preds = %652
  %.pre1259 = xor i1 %171, true
  br label %656

654:                                              ; preds = %652, %649
  %655 = xor i1 %171, true
  br label %656

656:                                              ; preds = %._crit_edge1258, %654
  %not..pre-phi = phi i1 [ %.pre1259, %._crit_edge1258 ], [ %655, %654 ]
  %657 = phi i1 [ false, %._crit_edge1258 ], [ %655, %654 ]
  %658 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2619, i32 noundef %79, i32 noundef 1)
  %spec.select1112 = and i1 %174, %not..pre-phi
  %spec.select1175 = select i1 %658, i1 %spec.select1112, i1 false
  %659 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2618, i32 noundef %79, i32 noundef 1)
  br i1 %659, label %663, label %660

660:                                              ; preds = %656
  br i1 %591, label %661, label %664

661:                                              ; preds = %660
  %662 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 10811, i32 noundef %79, i32 noundef 1)
  br i1 %662, label %663, label %664

663:                                              ; preds = %661, %656
  br label %664

664:                                              ; preds = %663, %661, %660
  %665 = phi i1 [ false, %661 ], [ false, %660 ], [ %spec.select1112, %663 ]
  %666 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 2594, i32 noundef %79, i32 noundef 0)
  %667 = load i32, ptr %76, align 8, !tbaa !168
  %668 = and i32 %667, 2
  %.not1034 = icmp eq i32 %668, 0
  br i1 %.not1034, label %674, label %669

669:                                              ; preds = %664
  %670 = getelementptr inbounds i8, ptr %75, i64 12
  %671 = load i32, ptr %670, align 4, !tbaa !169
  %672 = and i32 %671, 1
  %673 = icmp ne i32 %672, 0
  br label %674

674:                                              ; preds = %669, %664
  %675 = phi i1 [ false, %664 ], [ %673, %669 ]
  %676 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 525, i1 noundef zeroext true)
  br i1 %676, label %679, label %677

677:                                              ; preds = %674
  %678 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 627, i1 noundef zeroext true)
  br label %679

679:                                              ; preds = %677, %674
  %680 = phi i1 [ true, %674 ], [ %678, %677 ]
  br i1 %675, label %681, label %.sink.split1304

681:                                              ; preds = %679
  %682 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 636, i1 noundef zeroext false)
  br i1 %682, label %685, label %683

683:                                              ; preds = %681
  %684 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 635, i1 noundef zeroext false)
  br label %685

685:                                              ; preds = %681, %683
  %686 = phi i1 [ true, %681 ], [ %684, %683 ]
  %687 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 526, i32 noundef %79, i32 noundef 1)
  br i1 %687, label %689, label %.sink.split1304

.sink.split1304:                                  ; preds = %685, %679
  %.sink = phi i32 [ 526, %679 ], [ 634, %685 ]
  %.ph1305 = phi i1 [ false, %679 ], [ %686, %685 ]
  %688 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef %.sink, i32 noundef %79, i32 noundef 1)
  br label %689

689:                                              ; preds = %.sink.split1304, %685
  %690 = phi i1 [ %686, %685 ], [ %.ph1305, %.sink.split1304 ]
  %691 = phi i1 [ true, %685 ], [ %688, %.sink.split1304 ]
  %692 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 513, i1 noundef zeroext true)
  br i1 %692, label %693, label %696

693:                                              ; preds = %689
  %694 = select i1 %618, i32 2097164, i32 2097152
  %spec.select1117 = select i1 %631, i32 2097156, i32 %694
  %695 = or disjoint i32 %spec.select1117, %615
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %695)
  br label %.thread1203

696:                                              ; preds = %689
  %697 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 514, i1 noundef zeroext true)
  br i1 %697, label %698, label %701

698:                                              ; preds = %696
  %699 = select i1 %618, i32 2097165, i32 2097153
  %spec.select1118 = select i1 %631, i32 2097157, i32 %699
  %700 = or disjoint i32 %spec.select1118, %615
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %700)
  br label %.thread1203

701:                                              ; preds = %696
  %702 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  %.not1120 = xor i1 %67, true
  %brmerge1121.not = and i1 %67, %702
  br i1 %brmerge1121.not, label %703, label %715

703:                                              ; preds = %701
  %704 = load i8, ptr %617, align 4, !tbaa !129, !range !38, !noundef !39
  %705 = trunc nuw i8 %704 to i1
  br i1 %705, label %706, label %712

706:                                              ; preds = %703
  %707 = getelementptr inbounds i8, ptr %.2923, i64 144
  %708 = load float, ptr %707, align 4, !tbaa !119
  %709 = load float, ptr %605, align 8, !tbaa !41
  %710 = fsub float %708, %709
  %711 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %710, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2923, float noundef %711)
  br label %.thread1203

712:                                              ; preds = %703
  %713 = select i1 %631, i32 2097158, i32 2097154
  %714 = or disjoint i32 %713, %615
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %714)
  br label %.thread1203

715:                                              ; preds = %701
  %716 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  %brmerge1124.not = and i1 %67, %716
  br i1 %brmerge1124.not, label %717, label %730

717:                                              ; preds = %715
  %718 = load i8, ptr %617, align 4, !tbaa !129, !range !38, !noundef !39
  %719 = trunc nuw i8 %718 to i1
  br i1 %719, label %720, label %727

720:                                              ; preds = %717
  %721 = getelementptr inbounds i8, ptr %.2923, i64 144
  %722 = load float, ptr %721, align 4, !tbaa !119
  %723 = load float, ptr %605, align 8, !tbaa !41
  %724 = fadd float %722, %723
  %725 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %726 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %724, float noundef %725)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.2923, float noundef %726)
  br label %.thread1203

727:                                              ; preds = %717
  %728 = select i1 %631, i32 2097159, i32 2097155
  %729 = or disjoint i32 %728, %615
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %729)
  br label %.thread1203

730:                                              ; preds = %715
  %731 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 517, i1 noundef zeroext true)
  %brmerge1127.not = and i1 %67, %731
  br i1 %brmerge1127.not, label %732, label %738

732:                                              ; preds = %730
  %733 = or disjoint i32 %615, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %733)
  %734 = sitofp i32 %609 to float
  %735 = load float, ptr %605, align 8, !tbaa !41
  %736 = fneg float %734
  %737 = call float @llvm.fmuladd.f32(float %736, float %735, float %221)
  br label %.thread1203

738:                                              ; preds = %730
  %739 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 518, i1 noundef zeroext true)
  %brmerge1130.not = and i1 %67, %739
  br i1 %brmerge1130.not, label %740, label %745

740:                                              ; preds = %738
  %741 = or disjoint i32 %615, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %741)
  %742 = sitofp i32 %609 to float
  %743 = load float, ptr %605, align 8, !tbaa !41
  %744 = call float @llvm.fmuladd.f32(float %742, float %743, float %221)
  br label %.thread1203

745:                                              ; preds = %738
  %746 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 519, i1 noundef zeroext true)
  br i1 %746, label %747, label %751

747:                                              ; preds = %745
  %748 = load i8, ptr %617, align 4, !tbaa !129, !range !38, !noundef !39
  %749 = trunc nuw i8 %748 to i1
  %.v1042 = select i1 %749, i32 2097158, i32 2097156
  %750 = or disjoint i32 %.v1042, %615
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %750)
  br label %.thread1203

751:                                              ; preds = %745
  %752 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 520, i1 noundef zeroext true)
  br i1 %752, label %753, label %757

753:                                              ; preds = %751
  %754 = load i8, ptr %617, align 4, !tbaa !129, !range !38, !noundef !39
  %755 = trunc nuw i8 %754 to i1
  %.v = select i1 %755, i32 2097159, i32 2097157
  %756 = or disjoint i32 %.v, %615
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %756)
  br label %.thread1203

757:                                              ; preds = %751
  %758 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 522, i1 noundef zeroext true)
  %.not1131 = xor i1 %758, true
  %brmerge1132 = or i1 %171, %.not1131
  %brmerge1133 = or i1 %641, %brmerge1132
  br i1 %brmerge1133, label %764, label %759

759:                                              ; preds = %757
  %760 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  %.not1134 = xor i1 %618, true
  %brmerge1135 = select i1 %760, i1 true, i1 %.not1134
  br i1 %brmerge1135, label %762, label %761

761:                                              ; preds = %759
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef 6291469)
  br label %762

762:                                              ; preds = %759, %761
  %763 = or disjoint i32 %615, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %763)
  br label %.thread1203

764:                                              ; preds = %757
  %765 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 523, i1 noundef zeroext true)
  %.not1136 = xor i1 %765, true
  %brmerge1137 = or i1 %171, %.not1136
  br i1 %brmerge1137, label %782, label %766

766:                                              ; preds = %764
  %767 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br i1 %767, label %780, label %768

768:                                              ; preds = %766
  br i1 %618, label %.sink.split1307, label %769

769:                                              ; preds = %768
  br i1 %591, label %770, label %780

770:                                              ; preds = %769
  %771 = getelementptr inbounds i8, ptr %75, i64 3679
  %772 = load i8, ptr %771, align 1, !tbaa !162, !range !38, !noundef !39
  %773 = trunc nuw i8 %772 to i1
  br i1 %773, label %774, label %780

774:                                              ; preds = %770
  %775 = load i8, ptr %616, align 2, !tbaa !161, !range !38, !noundef !39
  %776 = trunc nuw i8 %775 to i1
  br i1 %776, label %780, label %777

777:                                              ; preds = %774
  %778 = load i8, ptr %617, align 4, !tbaa !129, !range !38, !noundef !39
  %779 = trunc nuw i8 %778 to i1
  br i1 %779, label %780, label %.sink.split1307

.sink.split1307:                                  ; preds = %777, %768
  %.sink1308 = phi i32 [ 6291468, %768 ], [ 6291460, %777 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %.sink1308)
  br label %780

780:                                              ; preds = %.sink.split1307, %777, %774, %770, %769, %766
  %781 = or disjoint i32 %615, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %781)
  br label %.thread1203

782:                                              ; preds = %764
  %brmerge1138 = or i1 %680, %690
  br i1 %brmerge1138, label %783, label %800

783:                                              ; preds = %782
  %brmerge1140 = or i1 %690, %.not1120
  br i1 %brmerge1140, label %789, label %784

784:                                              ; preds = %783
  %785 = and i32 %5, 2048
  %.not1041 = icmp eq i32 %785, 0
  %786 = load i8, ptr %617, align 4, !tbaa !129, !range !38, !noundef !39
  %787 = trunc nuw i8 %786 to i1
  br i1 %.not1041, label %.critedge1142, label %788

788:                                              ; preds = %784
  br i1 %787, label %794, label %.thread1203

.critedge1142:                                    ; preds = %784
  br i1 %787, label %.thread1203, label %794

789:                                              ; preds = %783
  %790 = getelementptr inbounds i8, ptr %75, i64 92
  %791 = load i8, ptr %790, align 4, !tbaa !170, !range !38, !noundef !39
  %792 = trunc nuw i8 %791 to i1
  %.not1143 = xor i1 %792, true
  %brmerge1144 = or i1 %67, %.not1143
  br i1 %brmerge1144, label %.thread1203, label %793

793:                                              ; preds = %789
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br label %.thread1203

794:                                              ; preds = %788, %.critedge1142
  br i1 %171, label %.thread1203, label %795

795:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #14
  store i32 10, ptr %22, align 4, !tbaa !104
  %796 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef nonnull %75, ptr noundef nonnull %22, i32 noundef %spec.select, ptr noundef %6, ptr noundef %7, i32 noundef 2)
  br i1 %796, label %797, label %799

797:                                              ; preds = %795
  %798 = load i32, ptr %22, align 4, !tbaa !104
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %798)
  br label %799

799:                                              ; preds = %797, %795
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #14
  br label %.thread1203

800:                                              ; preds = %782
  br i1 %691, label %801, label %805

801:                                              ; preds = %800
  %802 = and i32 %5, 1048576
  %.not1039 = icmp eq i32 %802, 0
  br i1 %.not1039, label %.thread1203, label %803

803:                                              ; preds = %801
  %804 = load i8, ptr %2, align 1, !tbaa !134
  %.not1040 = icmp ne i8 %804, 0
  %..0939.in = select i1 %.not1040, i1 %.0939.in, i1 false
  %.1146 = select i1 %.not1040, i8 %351, i8 0
  %..0925 = select i1 %.not1040, i8 %.09251194, i8 1
  br label %.thread1203

805:                                              ; preds = %800
  %brmerge1147 = or i1 %spec.select1175, %665
  br i1 %brmerge1147, label %806, label %807

806:                                              ; preds = %805
  %.mux1148 = select i1 %spec.select1175, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270, i32 noundef %.mux1148)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br label %.thread1203

807:                                              ; preds = %805
  br i1 %666, label %808, label %810

808:                                              ; preds = %807
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  %809 = getelementptr inbounds i8, ptr %.09241270, i64 3716
  store i8 1, ptr %809, align 4, !tbaa !158
  br label %.thread1203

810:                                              ; preds = %807
  %brmerge1149 = or i1 %641, %650
  br i1 %brmerge1149, label %811, label %857

811:                                              ; preds = %810
  %812 = getelementptr inbounds i8, ptr %75, i64 176
  %813 = load ptr, ptr %812, align 8, !tbaa !171
  %.not1038 = icmp eq ptr %813, null
  br i1 %.not1038, label %850, label %814

814:                                              ; preds = %811
  %815 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br i1 %815, label %816, label %822

816:                                              ; preds = %814
  %817 = getelementptr inbounds i8, ptr %.09241270, i64 88
  %818 = load i32, ptr %817, align 4, !tbaa !156
  %819 = getelementptr inbounds i8, ptr %.09241270, i64 92
  %820 = load i32, ptr %819, align 4, !tbaa !157
  %821 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %818, i32 noundef %820)
  br label %822

822:                                              ; preds = %814, %816
  %823 = phi i32 [ %821, %816 ], [ 0, %814 ]
  %824 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br i1 %824, label %825, label %831

825:                                              ; preds = %822
  %826 = getelementptr inbounds i8, ptr %.09241270, i64 88
  %827 = load i32, ptr %826, align 4, !tbaa !156
  %828 = getelementptr inbounds i8, ptr %.09241270, i64 92
  %829 = load i32, ptr %828, align 4, !tbaa !157
  %830 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %827, i32 noundef %829)
  br label %834

831:                                              ; preds = %822
  %832 = getelementptr inbounds i8, ptr %.09241270, i64 12
  %833 = load i32, ptr %832, align 4, !tbaa !127
  br label %834

834:                                              ; preds = %831, %825
  %835 = phi i32 [ %830, %825 ], [ %833, %831 ]
  %836 = getelementptr inbounds i8, ptr %.09241270, i64 32
  %837 = load ptr, ptr %836, align 8, !tbaa !126
  %838 = sext i32 %823 to i64
  %839 = getelementptr inbounds i16, ptr %837, i64 %838
  %840 = sext i32 %835 to i64
  %841 = getelementptr inbounds i16, ptr %837, i64 %840
  %842 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %839, ptr noundef %841)
  %843 = add nsw i32 %842, 1
  %844 = sext i32 %843 to i64
  %845 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %844)
  %846 = load ptr, ptr %836, align 8, !tbaa !126
  %847 = getelementptr inbounds i16, ptr %846, i64 %838
  %848 = getelementptr inbounds i16, ptr %846, i64 %840
  %849 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %845, i32 noundef %843, ptr noundef %847, ptr noundef %848)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %845)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %845)
  br label %850

850:                                              ; preds = %834, %811
  br i1 %641, label %851, label %.thread1203

851:                                              ; preds = %850
  %852 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br i1 %852, label %854, label %853

853:                                              ; preds = %851
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br label %854

854:                                              ; preds = %853, %851
  %855 = getelementptr inbounds i8, ptr %.09241270, i64 3716
  store i8 1, ptr %855, align 4, !tbaa !158
  %856 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.09241270, ptr noundef nonnull %610)
  br label %.thread1203

857:                                              ; preds = %810
  br i1 %657, label %858, label %.thread1203

858:                                              ; preds = %857
  %859 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not1035 = icmp eq ptr %859, null
  br i1 %.not1035, label %.thread1203, label %860

860:                                              ; preds = %858
  %861 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %859) #15
  %862 = shl i64 %861, 32
  %sext1036 = add i64 %862, 4294967296
  %863 = ashr exact i64 %sext1036, 31
  %864 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %863)
  %865 = load i8, ptr %859, align 1, !tbaa !134
  %.not10371235 = icmp eq i8 %865, 0
  br i1 %.not10371235, label %._crit_edge.thread, label %.lr.ph1238

._crit_edge.thread:                               ; preds = %860
  store i16 0, ptr %864, align 2, !tbaa !153
  br label %884

._crit_edge:                                      ; preds = %879
  %866 = sext i32 %.1965 to i64
  %867 = getelementptr inbounds i16, ptr %864, i64 %866
  store i16 0, ptr %867, align 2, !tbaa !153
  %868 = icmp sgt i32 %.1965, 0
  br i1 %868, label %881, label %884

.lr.ph1238:                                       ; preds = %860, %879
  %.09641237 = phi i32 [ %.1965, %879 ], [ 0, %860 ]
  %.09661236 = phi ptr [ %871, %879 ], [ %859, %860 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #14
  %869 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %23, ptr noundef nonnull %.09661236, ptr noundef null)
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds i8, ptr %.09661236, i64 %870
  %872 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef %75, ptr noundef nonnull %23, i32 noundef %spec.select, ptr noundef %6, ptr noundef %7, i32 noundef 4)
  br i1 %872, label %873, label %879, !llvm.loop !172

873:                                              ; preds = %.lr.ph1238
  %874 = load i32, ptr %23, align 4, !tbaa !104
  %875 = trunc i32 %874 to i16
  %876 = add nsw i32 %.09641237, 1
  %877 = sext i32 %.09641237 to i64
  %878 = getelementptr inbounds i16, ptr %864, i64 %877
  store i16 %875, ptr %878, align 2, !tbaa !153
  br label %879

879:                                              ; preds = %.lr.ph1238, %873
  %.1965 = phi i32 [ %876, %873 ], [ %.09641237, %.lr.ph1238 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #14
  %880 = load i8, ptr %871, align 1, !tbaa !134
  %.not1037 = icmp eq i8 %880, 0
  br i1 %.not1037, label %._crit_edge, label %.lr.ph1238

881:                                              ; preds = %._crit_edge
  %882 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.09241270, ptr noundef nonnull %610, ptr noundef nonnull %864, i32 noundef %.1965)
  %883 = getelementptr inbounds i8, ptr %.09241270, i64 3716
  store i8 1, ptr %883, align 4, !tbaa !158
  br label %884

884:                                              ; preds = %._crit_edge.thread, %881, %._crit_edge
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %864)
  br label %.thread1203

.thread1203:                                      ; preds = %788, %.critedge1142, %858, %884, %801, %803, %793, %799, %794, %789, %698, %727, %720, %740, %753, %780, %808, %857, %850, %854, %806, %762, %747, %732, %706, %712, %693
  %.0962 = phi i1 [ false, %693 ], [ false, %698 ], [ false, %706 ], [ false, %712 ], [ false, %720 ], [ false, %727 ], [ false, %732 ], [ false, %740 ], [ false, %747 ], [ false, %753 ], [ false, %806 ], [ false, %808 ], [ false, %854 ], [ false, %850 ], [ false, %857 ], [ false, %780 ], [ false, %762 ], [ false, %789 ], [ false, %794 ], [ false, %799 ], [ false, %793 ], [ %.not1040, %803 ], [ true, %801 ], [ false, %884 ], [ false, %858 ], [ false, %.critedge1142 ], [ false, %788 ]
  %.1958 = phi i8 [ 0, %693 ], [ 0, %698 ], [ 0, %706 ], [ 0, %712 ], [ 0, %720 ], [ 0, %727 ], [ 0, %732 ], [ 0, %740 ], [ 0, %747 ], [ 0, %753 ], [ 0, %806 ], [ 0, %808 ], [ 0, %854 ], [ 0, %850 ], [ 0, %857 ], [ 0, %780 ], [ 0, %762 ], [ 1, %789 ], [ 0, %794 ], [ 0, %799 ], [ 1, %793 ], [ 0, %803 ], [ 0, %801 ], [ 0, %884 ], [ 0, %858 ], [ 1, %.critedge1142 ], [ 1, %788 ]
  %.1940 = phi i1 [ %.0939.in, %693 ], [ %.0939.in, %698 ], [ %.0939.in, %706 ], [ %.0939.in, %712 ], [ %.0939.in, %720 ], [ %.0939.in, %727 ], [ %.0939.in, %732 ], [ %.0939.in, %740 ], [ %.0939.in, %747 ], [ %.0939.in, %753 ], [ %.0939.in, %806 ], [ %.0939.in, %808 ], [ %.0939.in, %854 ], [ %.0939.in, %850 ], [ %.0939.in, %857 ], [ %.0939.in, %780 ], [ %.0939.in, %762 ], [ %.0939.in, %789 ], [ %.0939.in, %794 ], [ %.0939.in, %799 ], [ %.0939.in, %793 ], [ %..0939.in, %803 ], [ false, %801 ], [ %.0939.in, %884 ], [ %.0939.in, %858 ], [ %.0939.in, %.critedge1142 ], [ %.0939.in, %788 ]
  %.0937 = phi i8 [ %351, %693 ], [ %351, %698 ], [ %351, %706 ], [ %351, %712 ], [ %351, %720 ], [ %351, %727 ], [ %351, %732 ], [ %351, %740 ], [ %351, %747 ], [ %351, %753 ], [ %351, %806 ], [ %351, %808 ], [ %351, %854 ], [ %351, %850 ], [ %351, %857 ], [ %351, %780 ], [ %351, %762 ], [ %351, %789 ], [ %351, %794 ], [ %351, %799 ], [ %351, %793 ], [ %.1146, %803 ], [ 0, %801 ], [ %351, %884 ], [ %351, %858 ], [ %351, %.critedge1142 ], [ %351, %788 ]
  %.0933 = phi float [ %221, %693 ], [ %221, %698 ], [ %221, %706 ], [ %221, %712 ], [ %221, %720 ], [ %221, %727 ], [ %737, %732 ], [ %744, %740 ], [ %221, %747 ], [ %221, %753 ], [ %221, %806 ], [ %221, %808 ], [ %221, %854 ], [ %221, %850 ], [ %221, %857 ], [ %221, %780 ], [ %221, %762 ], [ %221, %789 ], [ %221, %794 ], [ %221, %799 ], [ %221, %793 ], [ %221, %803 ], [ %221, %801 ], [ %221, %884 ], [ %221, %858 ], [ %221, %.critedge1142 ], [ %221, %788 ]
  %.2927 = phi i8 [ %.09251194, %693 ], [ %.09251194, %698 ], [ %.09251194, %706 ], [ %.09251194, %712 ], [ %.09251194, %720 ], [ %.09251194, %727 ], [ %.09251194, %732 ], [ %.09251194, %740 ], [ %.09251194, %747 ], [ %.09251194, %753 ], [ %.09251194, %806 ], [ %.09251194, %808 ], [ %.09251194, %854 ], [ %.09251194, %850 ], [ %.09251194, %857 ], [ %.09251194, %780 ], [ %.09251194, %762 ], [ 1, %789 ], [ %.09251194, %794 ], [ %.09251194, %799 ], [ %.09251194, %793 ], [ %..0925, %803 ], [ 1, %801 ], [ %.09251194, %884 ], [ %.09251194, %858 ], [ 1, %.critedge1142 ], [ 1, %788 ]
  %885 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  %886 = select i1 %885, i8 %.0937, i8 0
  %887 = zext i1 %.1940 to i8
  %888 = or i8 %886, %887
  %.pre1247 = load i32, ptr %179, align 4, !tbaa !107
  br label %889

889:                                              ; preds = %.thread1203, %590
  %890 = phi i32 [ %.pre1247, %.thread1203 ], [ %592, %590 ]
  %.1963 = phi i1 [ %.0962, %.thread1203 ], [ false, %590 ]
  %.2959 = phi i8 [ %.1958, %.thread1203 ], [ 0, %590 ]
  %.2941 = phi i8 [ %888, %.thread1203 ], [ %.0939, %590 ]
  %.1938 = phi i8 [ %.0937, %.thread1203 ], [ %351, %590 ]
  %.1934 = phi float [ %.0933, %.thread1203 ], [ %221, %590 ]
  %.3928 = phi i8 [ %.2927, %.thread1203 ], [ %.09251194, %590 ]
  %891 = icmp eq i32 %890, %79
  br i1 %891, label %.thread1280, label %1096

.thread1280:                                      ; preds = %598, %594, %889
  %.39281299 = phi i8 [ %.3928, %889 ], [ %.09251194, %594 ], [ %.09251194, %598 ]
  %.19341297 = phi float [ %.1934, %889 ], [ %221, %594 ], [ %221, %598 ]
  %.19381295 = phi i8 [ %.1938, %889 ], [ %351, %594 ], [ %351, %598 ]
  %.29411293 = phi i8 [ %.2941, %889 ], [ %.0939, %594 ], [ %.0939, %598 ]
  %.29591290 = phi i8 [ %.2959, %889 ], [ 0, %594 ], [ 0, %598 ]
  %.19631289 = phi i1 [ %.1963, %889 ], [ false, %594 ], [ false, %598 ]
  br i1 %352, label %893, label %892

892:                                              ; preds = %.thread1280
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.4, i32 noundef 4585, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

893:                                              ; preds = %.thread1280
  %.1963.not = xor i1 %.19631289, true
  %brmerge1150 = or i1 %171, %.1963.not
  br i1 %brmerge1150, label %931, label %894

894:                                              ; preds = %893
  %895 = and i32 %5, 1048576
  %.not1043 = icmp eq i32 %895, 0
  br i1 %.not1043, label %901, label %896

896:                                              ; preds = %894
  %897 = load i8, ptr %2, align 1, !tbaa !134
  %.not1045 = icmp eq i8 %897, 0
  br i1 %.not1045, label %898, label %899

898:                                              ; preds = %896
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.4, i32 noundef 4591, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

899:                                              ; preds = %896
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %24) #14
  %900 = getelementptr inbounds i8, ptr %.09241270, i64 84
  call void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.09241270, ptr noundef nonnull %900, ptr noundef nonnull %24, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %24) #14
  br label %.thread1207

901:                                              ; preds = %894
  %902 = getelementptr inbounds i8, ptr %.09241270, i64 64
  %903 = load ptr, ptr %902, align 8, !tbaa !122
  %904 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %903) #15
  %.not1044 = icmp eq i32 %904, 0
  br i1 %.not1044, label %.thread1207, label %905

905:                                              ; preds = %901
  %906 = getelementptr inbounds i8, ptr %.09241270, i64 56
  %907 = load i32, ptr %906, align 8, !tbaa !173
  %908 = add nsw i32 %907, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25)
  %909 = icmp sgt i32 %907, 1
  br i1 %909, label %910, label %923

910:                                              ; preds = %905
  %911 = zext nneg i32 %908 to i64
  %912 = getelementptr inbounds i8, ptr %903, i64 %911
  %913 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %903, ptr noundef %912)
          to label %914 unwind label %921

914:                                              ; preds = %910
  %915 = add nsw i32 %913, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %25, i32 noundef %915)
          to label %916 unwind label %921

916:                                              ; preds = %914
  %917 = getelementptr inbounds i8, ptr %25, i64 8
  %918 = load ptr, ptr %917, align 8, !tbaa !174
  %919 = load i32, ptr %25, align 8, !tbaa !175
  %920 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %918, i32 noundef %919, ptr noundef %903, ptr noundef %912, ptr noundef null)
          to label %923 unwind label %921

921:                                              ; preds = %923, %916, %914, %910
  %922 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #14
  call void @llvm.lifetime.end.p0(i64 76, 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 } %922

923:                                              ; preds = %916, %905
  %924 = getelementptr inbounds i8, ptr %.09241270, i64 84
  %925 = getelementptr inbounds i8, ptr %25, i64 8
  %926 = load ptr, ptr %925, align 8, !tbaa !174
  %927 = load i32, ptr %25, align 8
  %928 = add nsw i32 %927, -1
  %929 = select i1 %909, i32 %928, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.09241270, ptr noundef nonnull %924, ptr noundef %926, i32 noundef %929)
          to label %930 unwind label %921

930:                                              ; preds = %923
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #14
  br label %.thread1207

931:                                              ; preds = %893
  br i1 %171, label %944, label %.thread1207

.thread1207:                                      ; preds = %901, %930, %899, %931
  %.09511215 = phi i1 [ false, %931 ], [ false, %901 ], [ true, %930 ], [ true, %899 ]
  %.09671213 = phi ptr [ null, %931 ], [ null, %901 ], [ %903, %930 ], [ @.str, %899 ]
  %.09721211 = phi i32 [ 0, %931 ], [ 0, %901 ], [ %908, %930 ], [ 0, %899 ]
  %932 = getelementptr inbounds i8, ptr %.09241270, i64 72
  store i8 1, ptr %932, align 8, !tbaa !124
  %933 = getelementptr inbounds i8, ptr %.09241270, i64 40
  %934 = getelementptr inbounds i8, ptr %.09241270, i64 24
  %935 = load i32, ptr %934, align 8, !tbaa !133
  %936 = shl nsw i32 %935, 2
  %937 = or disjoint i32 %936, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %933, i32 noundef %937)
  %938 = getelementptr inbounds i8, ptr %.09241270, i64 48
  %939 = load ptr, ptr %938, align 8, !tbaa !125
  %940 = load i32, ptr %933, align 8, !tbaa !176
  %941 = getelementptr inbounds i8, ptr %.09241270, i64 32
  %942 = load ptr, ptr %941, align 8, !tbaa !126
  %943 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %939, i32 noundef %940, ptr noundef %942, ptr noundef null)
  br label %944

944:                                              ; preds = %.thread1207, %931
  %.09511216 = phi i1 [ %.09511215, %.thread1207 ], [ false, %931 ]
  %.09671214 = phi ptr [ %.09671213, %.thread1207 ], [ null, %931 ]
  %.09721212 = phi i32 [ %.09721211, %.thread1207 ], [ 0, %931 ]
  br i1 %.19631289, label %945, label %.critedge1152

945:                                              ; preds = %944
  %946 = trunc nuw i8 %.29591290 to i1
  %947 = and i32 %5, 32
  %948 = icmp ne i32 %947, 0
  %949 = and i1 %948, %946
  br i1 %949, label %.critedge1152, label %1096

.critedge1152:                                    ; preds = %944, %945
  %950 = and i32 %5, 524736
  %.not1046 = icmp eq i32 %950, 0
  br i1 %.not1046, label %1088, label %951

951:                                              ; preds = %.critedge1152
  br i1 %176, label %953, label %952

952:                                              ; preds = %951
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.4, i32 noundef 4640, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

953:                                              ; preds = %951
  %954 = and i32 %5, 64
  %.not1047 = icmp eq i32 %954, 0
  br i1 %.not1047, label %957, label %955

955:                                              ; preds = %953
  %956 = call noundef zeroext i1 @_ZN5ImGui8ShortcutEiji(i32 noundef 512, i32 noundef %79, i32 noundef 0)
  br i1 %956, label %.thread1218, label %957

957:                                              ; preds = %955, %953
  %958 = and i32 %5, 128
  %.not1048 = icmp eq i32 %958, 0
  br i1 %.not1048, label %.critedge1154, label %959

959:                                              ; preds = %957
  %960 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 515, i1 noundef zeroext true)
  br i1 %960, label %.thread1218, label %961

961:                                              ; preds = %959
  %962 = call noundef zeroext i1 @_ZN5ImGui12IsKeyPressedE8ImGuiKeyb(i32 noundef 516, i1 noundef zeroext true)
  br i1 %962, label %.thread1218, label %.critedge1154

.critedge1154:                                    ; preds = %957, %961
  %963 = and i32 %5, 524288
  %.not1049 = icmp eq i32 %963, 0
  br i1 %.not1049, label %968, label %964

964:                                              ; preds = %.critedge1154
  %965 = getelementptr inbounds i8, ptr %.09241270, i64 3718
  %966 = load i8, ptr %965, align 2, !tbaa !143, !range !38, !noundef !39
  %967 = trunc nuw i8 %966 to i1
  br i1 %967, label %.thread1218, label %968

968:                                              ; preds = %.critedge1154, %964
  %969 = and i32 %5, 256
  %.not1050 = icmp eq i32 %969, 0
  br i1 %.not1050, label %1088, label %.thread1218

.thread1218:                                      ; preds = %964, %961, %959, %955, %968
  %.09771223 = phi i32 [ 0, %968 ], [ 0, %964 ], [ 516, %961 ], [ 515, %959 ], [ 512, %955 ]
  %.09781222 = phi i32 [ 256, %968 ], [ 524288, %964 ], [ 128, %961 ], [ 128, %959 ], [ 64, %955 ]
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(64) %26)
  store ptr %75, ptr %26, align 8, !tbaa !177
  %970 = getelementptr inbounds i8, ptr %26, i64 8
  store i32 %.09781222, ptr %970, align 8, !tbaa !180
  %971 = getelementptr inbounds i8, ptr %26, i64 12
  store i32 %spec.select, ptr %971, align 4, !tbaa !181
  %972 = getelementptr inbounds i8, ptr %26, i64 16
  store ptr %7, ptr %972, align 8, !tbaa !182
  br i1 %171, label %976, label %973

973:                                              ; preds = %.thread1218
  %974 = getelementptr inbounds i8, ptr %.09241270, i64 48
  %975 = load ptr, ptr %974, align 8, !tbaa !125
  br label %976

976:                                              ; preds = %.thread1218, %973
  %977 = phi ptr [ %975, %973 ], [ %2, %.thread1218 ]
  %978 = getelementptr inbounds i8, ptr %26, i64 28
  store i32 %.09771223, ptr %978, align 4, !tbaa !183
  %979 = getelementptr inbounds i8, ptr %26, i64 32
  store ptr %977, ptr %979, align 8, !tbaa !184
  %980 = getelementptr inbounds i8, ptr %.09241270, i64 16
  %981 = load i32, ptr %980, align 8, !tbaa !123
  %982 = getelementptr inbounds i8, ptr %26, i64 40
  store i32 %981, ptr %982, align 8, !tbaa !185
  %983 = getelementptr inbounds i8, ptr %.09241270, i64 76
  %984 = load i32, ptr %983, align 4, !tbaa !144
  %985 = getelementptr inbounds i8, ptr %26, i64 44
  store i32 %984, ptr %985, align 4, !tbaa !186
  %986 = getelementptr inbounds i8, ptr %26, i64 48
  store i8 0, ptr %986, align 8, !tbaa !187
  %987 = getelementptr inbounds i8, ptr %.09241270, i64 24
  %988 = getelementptr inbounds i8, ptr %.09241270, i64 32
  %989 = load ptr, ptr %988, align 8, !tbaa !126
  %990 = getelementptr inbounds i8, ptr %.09241270, i64 84
  %991 = load i32, ptr %990, align 4, !tbaa !155
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds i16, ptr %989, i64 %992
  %994 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %989, ptr noundef %993)
  %995 = getelementptr inbounds i8, ptr %26, i64 52
  store i32 %994, ptr %995, align 4, !tbaa !188
  %996 = getelementptr inbounds i8, ptr %.09241270, i64 88
  %997 = load i32, ptr %996, align 4, !tbaa !156
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds i16, ptr %989, i64 %998
  %1000 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %989, ptr noundef %999)
  %1001 = getelementptr inbounds i8, ptr %26, i64 56
  store i32 %1000, ptr %1001, align 8, !tbaa !189
  %1002 = getelementptr inbounds i8, ptr %.09241270, i64 92
  %1003 = load i32, ptr %1002, align 4, !tbaa !157
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds i16, ptr %989, i64 %1004
  %1006 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %989, ptr noundef %1005)
  %1007 = getelementptr inbounds i8, ptr %26, i64 60
  store i32 %1006, ptr %1007, align 4, !tbaa !190
  %1008 = call noundef i32 %6(ptr noundef nonnull %26)
  br i1 %171, label %1012, label %1009

1009:                                             ; preds = %976
  %1010 = getelementptr inbounds i8, ptr %.09241270, i64 48
  %1011 = load ptr, ptr %1010, align 8, !tbaa !125
  br label %1012

1012:                                             ; preds = %976, %1009
  %1013 = phi ptr [ %1011, %1009 ], [ %2, %976 ]
  %1014 = load ptr, ptr %979, align 8, !tbaa !184
  %1015 = icmp eq ptr %1014, %1013
  br i1 %1015, label %1017, label %1016

1016:                                             ; preds = %1012
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.4, i32 noundef 4695, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1017:                                             ; preds = %1012
  %1018 = load i32, ptr %985, align 4, !tbaa !186
  %1019 = load i32, ptr %983, align 4, !tbaa !144
  %1020 = icmp eq i32 %1018, %1019
  br i1 %1020, label %1022, label %1021

1021:                                             ; preds = %1017
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.4, i32 noundef 4696, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1022:                                             ; preds = %1017
  %1023 = load i32, ptr %971, align 4, !tbaa !181
  %1024 = icmp eq i32 %1023, %spec.select
  br i1 %1024, label %1026, label %1025

1025:                                             ; preds = %1022
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.4, i32 noundef 4697, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1026:                                             ; preds = %1022
  %1027 = load i8, ptr %986, align 8, !tbaa !187, !range !38, !noundef !39
  %1028 = trunc nuw i8 %1027 to i1
  %1029 = load i32, ptr %995, align 4, !tbaa !188
  %.not1052 = icmp ne i32 %1029, %994
  %brmerge1157 = select i1 %.not1052, i1 true, i1 %1028
  br i1 %brmerge1157, label %1030, label %1035

1030:                                             ; preds = %1026
  %1031 = sext i32 %1029 to i64
  %1032 = getelementptr inbounds i8, ptr %1014, i64 %1031
  %1033 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1014, ptr noundef %1032)
  store i32 %1033, ptr %990, align 4, !tbaa !155
  %1034 = getelementptr inbounds i8, ptr %.09241270, i64 3716
  store i8 1, ptr %1034, align 4, !tbaa !158
  br label %1035

1035:                                             ; preds = %1026, %1030
  %1036 = load i32, ptr %1001, align 8, !tbaa !189
  %.not1053 = icmp ne i32 %1036, %1000
  %brmerge1158 = select i1 %.not1053, i1 true, i1 %1028
  br i1 %brmerge1158, label %1037, label %1049

1037:                                             ; preds = %1035
  %1038 = load i32, ptr %995, align 4, !tbaa !188
  %1039 = icmp eq i32 %1036, %1038
  br i1 %1039, label %1040, label %1042

1040:                                             ; preds = %1037
  %1041 = load i32, ptr %990, align 4, !tbaa !155
  br label %1047

1042:                                             ; preds = %1037
  %1043 = load ptr, ptr %979, align 8, !tbaa !184
  %1044 = sext i32 %1036 to i64
  %1045 = getelementptr inbounds i8, ptr %1043, i64 %1044
  %1046 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1043, ptr noundef %1045)
  br label %1047

1047:                                             ; preds = %1042, %1040
  %1048 = phi i32 [ %1041, %1040 ], [ %1046, %1042 ]
  store i32 %1048, ptr %996, align 4, !tbaa !156
  br label %1049

1049:                                             ; preds = %1035, %1047
  %1050 = load i32, ptr %1007, align 4, !tbaa !190
  %.not1054 = icmp ne i32 %1050, %1006
  %brmerge1159 = select i1 %.not1054, i1 true, i1 %1028
  br i1 %brmerge1159, label %1051, label %1063

1051:                                             ; preds = %1049
  %1052 = load i32, ptr %1001, align 8, !tbaa !189
  %1053 = icmp eq i32 %1050, %1052
  br i1 %1053, label %1054, label %1056

1054:                                             ; preds = %1051
  %1055 = load i32, ptr %996, align 4, !tbaa !156
  br label %1061

1056:                                             ; preds = %1051
  %1057 = load ptr, ptr %979, align 8, !tbaa !184
  %1058 = sext i32 %1050 to i64
  %1059 = getelementptr inbounds i8, ptr %1057, i64 %1058
  %1060 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1057, ptr noundef %1059)
  br label %1061

1061:                                             ; preds = %1056, %1054
  %1062 = phi i32 [ %1055, %1054 ], [ %1060, %1056 ]
  store i32 %1062, ptr %1002, align 4, !tbaa !157
  br label %1063

1063:                                             ; preds = %1049, %1061
  br i1 %1028, label %1064, label %1087

1064:                                             ; preds = %1063
  br i1 %171, label %1065, label %1066

1065:                                             ; preds = %1064
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.4, i32 noundef 4704, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1066:                                             ; preds = %1064
  %1067 = load i32, ptr %982, align 8, !tbaa !185
  %1068 = load ptr, ptr %979, align 8, !tbaa !184
  %1069 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1068) #15
  %1070 = trunc i64 %1069 to i32
  %1071 = icmp eq i32 %1067, %1070
  br i1 %1071, label %1073, label %1072

1072:                                             ; preds = %1066
  call void @__assert_fail(ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.4, i32 noundef 4705, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1073:                                             ; preds = %1066
  call void @_ZL44InputTextReconcileUndoStateAfterUserCallbackP19ImGuiInputTextStatePKci(ptr noundef nonnull %.09241270, ptr noundef %1068, i32 noundef %1067)
  %1074 = load i32, ptr %982, align 8, !tbaa !185
  %1075 = icmp sle i32 %1074, %.0960
  %brmerge1161 = or i1 %.not1017, %1075
  br i1 %brmerge1161, label %1080, label %1076

1076:                                             ; preds = %1073
  %1077 = load i32, ptr %987, align 8, !tbaa !133
  %1078 = sub i32 %1074, %.0960
  %1079 = add nsw i32 %1078, %1077
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %987, i32 noundef %1079)
  br label %1080

1080:                                             ; preds = %1073, %1076
  %1081 = load ptr, ptr %988, align 8, !tbaa !126
  %1082 = load i32, ptr %987, align 8, !tbaa !133
  %1083 = load ptr, ptr %979, align 8, !tbaa !184
  %1084 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1081, i32 noundef %1082, ptr noundef %1083, ptr noundef null, ptr noundef null)
  %1085 = getelementptr inbounds i8, ptr %.09241270, i64 12
  store i32 %1084, ptr %1085, align 4, !tbaa !127
  %1086 = load i32, ptr %982, align 8, !tbaa !185
  store i32 %1086, ptr %980, align 8, !tbaa !123
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3724) %.09241270)
  br label %1087

1087:                                             ; preds = %1080, %1063
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #14
  br label %1088

1088:                                             ; preds = %968, %1087, %.critedge1152
  br i1 %171, label %1096, label %1089

1089:                                             ; preds = %1088
  %1090 = getelementptr inbounds i8, ptr %.09241270, i64 48
  %1091 = load ptr, ptr %1090, align 8, !tbaa !125
  %1092 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1091, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not1055 = icmp eq i32 %1092, 0
  br i1 %.not1055, label %1096, label %1093

1093:                                             ; preds = %1089
  %1094 = getelementptr inbounds i8, ptr %.09241270, i64 16
  %1095 = load i32, ptr %1094, align 8, !tbaa !123
  br label %1096

1096:                                             ; preds = %945, %1093, %1089, %1088, %889
  %.39281298 = phi i8 [ %.3928, %889 ], [ %.39281299, %1088 ], [ %.39281299, %1093 ], [ %.39281299, %1089 ], [ %.39281299, %945 ]
  %.19341296 = phi float [ %.1934, %889 ], [ %.19341297, %1088 ], [ %.19341297, %1093 ], [ %.19341297, %1089 ], [ %.19341297, %945 ]
  %.19381294 = phi i8 [ %.1938, %889 ], [ %.19381295, %1088 ], [ %.19381295, %1093 ], [ %.19381295, %1089 ], [ %.19381295, %945 ]
  %.29411292 = phi i8 [ %.2941, %889 ], [ %.29411293, %1088 ], [ %.29411293, %1093 ], [ %.29411293, %1089 ], [ %.29411293, %945 ]
  %.29591291 = phi i8 [ %.2959, %889 ], [ %.29591290, %1088 ], [ %.29591290, %1093 ], [ %.29591290, %1089 ], [ %.29591290, %945 ]
  %.2974 = phi i32 [ 0, %889 ], [ %.09721212, %1088 ], [ %1095, %1093 ], [ %.09721212, %1089 ], [ %.09721212, %945 ]
  %.2969 = phi ptr [ null, %889 ], [ %.09671214, %1088 ], [ %1091, %1093 ], [ %.09671214, %1089 ], [ %.09671214, %945 ]
  %.2953 = phi i1 [ false, %889 ], [ %.09511216, %1088 ], [ true, %1093 ], [ %.09511216, %1089 ], [ %.09511216, %945 ]
  %1097 = getelementptr inbounds i8, ptr %75, i64 23920
  %1098 = load i32, ptr %1097, align 8, !tbaa !191
  %1099 = icmp eq i32 %1098, %79
  br i1 %1099, label %1100, label %1113

1100:                                             ; preds = %1096
  %1101 = load i32, ptr %179, align 4, !tbaa !107
  %.not1056 = icmp eq i32 %1101, %79
  br i1 %.not1056, label %1112, label %1102

1102:                                             ; preds = %1100
  %1103 = call noundef zeroext i1 @_ZN5ImGui26IsItemDeactivatedAfterEditEv()
  %.not1162 = xor i1 %1103, true
  %brmerge1163 = or i1 %171, %.not1162
  br i1 %brmerge1163, label %1112, label %1104

1104:                                             ; preds = %1102
  %1105 = getelementptr inbounds i8, ptr %75, i64 23936
  %1106 = load ptr, ptr %1105, align 8, !tbaa !192
  %1107 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1106, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not1057 = icmp eq i32 %1107, 0
  br i1 %.not1057, label %1112, label %1108

1108:                                             ; preds = %1104
  %1109 = getelementptr inbounds i8, ptr %75, i64 23928
  %1110 = load i32, ptr %1109, align 8, !tbaa !193
  %1111 = add nsw i32 %1110, -1
  br label %1112

1112:                                             ; preds = %1102, %1108, %1104, %1100
  %.3975 = phi i32 [ %1111, %1108 ], [ %.2974, %1104 ], [ %.2974, %1102 ], [ %.2974, %1100 ]
  %.3970 = phi ptr [ %1106, %1108 ], [ %.2969, %1104 ], [ %.2969, %1102 ], [ %.2969, %1100 ]
  %.3954 = phi i1 [ true, %1108 ], [ %.2953, %1104 ], [ %.2953, %1102 ], [ %.2953, %1100 ]
  store i32 0, ptr %1097, align 8, !tbaa !191
  br label %1113

1113:                                             ; preds = %1112, %1096
  %.4976 = phi i32 [ %.3975, %1112 ], [ %.2974, %1096 ]
  %.4971 = phi ptr [ %.3970, %1112 ], [ %.2969, %1096 ]
  %.4955 = phi i1 [ %.3954, %1112 ], [ %.2953, %1096 ]
  %.not1058 = icmp eq ptr %.4971, null
  br i1 %.not1058, label %1139, label %1114

1114:                                             ; preds = %1113
  %1115 = icmp sgt i32 %.4976, -1
  br i1 %1115, label %1117, label %1116

1116:                                             ; preds = %1114
  call void @__assert_fail(ptr noundef nonnull @.str.71, ptr noundef nonnull @.str.4, i32 noundef 4745, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1117:                                             ; preds = %1114
  br i1 %.not1017, label %1135, label %1118

1118:                                             ; preds = %1117
  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 %75, ptr %27, align 8, !tbaa !177
  %1119 = getelementptr inbounds i8, ptr %27, i64 8
  store i32 262144, ptr %1119, align 8, !tbaa !180
  %1120 = getelementptr inbounds i8, ptr %27, i64 12
  store i32 %spec.select, ptr %1120, align 4, !tbaa !181
  %1121 = getelementptr inbounds i8, ptr %27, i64 32
  store ptr %2, ptr %1121, align 8, !tbaa !184
  %1122 = getelementptr inbounds i8, ptr %27, i64 40
  store i32 %.4976, ptr %1122, align 8, !tbaa !185
  %1123 = add nuw nsw i32 %.4976, 1
  %1124 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1123)
  %1125 = getelementptr inbounds i8, ptr %27, i64 44
  store i32 %1124, ptr %1125, align 4, !tbaa !186
  %1126 = getelementptr inbounds i8, ptr %27, i64 16
  store ptr %7, ptr %1126, align 8, !tbaa !182
  %1127 = call noundef i32 %6(ptr noundef nonnull %27)
  %1128 = load ptr, ptr %1121, align 8, !tbaa !184
  %1129 = load i32, ptr %1125, align 4, !tbaa !186
  %1130 = load i32, ptr %1122, align 8, !tbaa !185
  %1131 = add nsw i32 %1129, -1
  %1132 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1130, i32 noundef %1131)
  %.not1059 = icmp sgt i32 %1132, %1129
  br i1 %.not1059, label %1133, label %1134

1133:                                             ; preds = %1118
  call void @__assert_fail(ptr noundef nonnull @.str.72, ptr noundef nonnull @.str.4, i32 noundef 4760, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1134:                                             ; preds = %1118
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #14
  br label %1135

1135:                                             ; preds = %1134, %1117
  %.5 = phi i32 [ %1132, %1134 ], [ %.4976, %1117 ]
  %.0917 = phi i32 [ %1129, %1134 ], [ %3, %1117 ]
  %.0915 = phi ptr [ %1128, %1134 ], [ %2, %1117 ]
  %1136 = add nsw i32 %.5, 1
  %1137 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1136, i32 noundef %.0917)
  %1138 = sext i32 %1137 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0915, ptr noundef nonnull %.4971, i64 noundef %1138)
  br label %1139

1139:                                             ; preds = %1135, %1113
  %.1916 = phi ptr [ %.0915, %1135 ], [ %2, %1113 ]
  %1140 = load i32, ptr %179, align 4, !tbaa !107
  %1141 = icmp eq i32 %1140, %79
  br i1 %1141, label %1142, label %1147

1142:                                             ; preds = %1139
  %1143 = trunc nuw i8 %.39281298 to i1
  br i1 %1143, label %1144, label %1145

1144:                                             ; preds = %1142
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1147

1145:                                             ; preds = %1142
  %1146 = getelementptr inbounds i8, ptr %75, i64 25080
  store i32 1, ptr %1146, align 8, !tbaa !194
  br label %1147

1147:                                             ; preds = %1139, %1145, %1144
  br i1 %67, label %1153, label %1148

1148:                                             ; preds = %1147
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %79, i32 noundef 1)
  %.sroa.091.0.copyload = load <2 x float>, ptr %11, align 8
  %1149 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.090.0.copyload = load <2 x float>, ptr %1149, align 8
  %1150 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1151 = getelementptr inbounds i8, ptr %75, i64 14636
  %1152 = load float, ptr %1151, align 4, !tbaa !108
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.091.0.copyload, <2 x float> %.sroa.090.0.copyload, i32 noundef %1150, i1 noundef zeroext true, float noundef %1152)
  br label %1153

1153:                                             ; preds = %1148, %1147
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #14
  %1154 = load float, ptr %11, align 8, !tbaa !148
  %1155 = getelementptr inbounds i8, ptr %11, i64 4
  %1156 = load float, ptr %1155, align 4, !tbaa !195
  %1157 = fadd float %.sroa.0531.2, %1154
  %1158 = fadd float %.sroa.11.0.copyload, %1156
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %28, float noundef %1154, float noundef %1156, float noundef %1157, float noundef %1158)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #14
  br i1 %67, label %1159, label %1162

1159:                                             ; preds = %1153
  %1160 = getelementptr inbounds i8, ptr %.2923, i64 272
  %1161 = load i64, ptr %1160, align 8
  br label %1165

1162:                                             ; preds = %1153
  %1163 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %89)
  %1164 = bitcast <2 x float> %1163 to i64
  br label %1165

1165:                                             ; preds = %1162, %1159
  %storemerge = phi i64 [ %1161, %1159 ], [ %1164, %1162 ]
  store i64 %storemerge, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %30, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %386, label %1166, label %1169

1166:                                             ; preds = %1165
  %1167 = getelementptr inbounds i8, ptr %.09241270, i64 48
  %1168 = load ptr, ptr %1167, align 8, !tbaa !125
  br label %1169

1169:                                             ; preds = %1165, %1166
  %1170 = phi ptr [ %1168, %1166 ], [ %.1916, %1165 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  store ptr null, ptr %31, align 8, !tbaa !40
  br i1 %396, label %1171, label %1174

1171:                                             ; preds = %1169
  %1172 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #15
  %1173 = getelementptr inbounds i8, ptr %1, i64 %1172
  store ptr %1173, ptr %31, align 8, !tbaa !40
  br label %1174

1174:                                             ; preds = %1171, %1169
  %1175 = phi ptr [ %1173, %1171 ], [ null, %1169 ]
  %.0956 = phi ptr [ %1, %1171 ], [ %1170, %1169 ]
  %1176 = trunc nuw i8 %.19381294 to i1
  br i1 %1176, label %1179, label %1177

1177:                                             ; preds = %1174
  %1178 = trunc nuw i8 %.29411292 to i1
  br i1 %1178, label %1179, label %1441

1179:                                             ; preds = %1177, %1174
  br i1 %352, label %1181, label %1180

1180:                                             ; preds = %1179
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.4, i32 noundef 4802, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1181:                                             ; preds = %1179
  br i1 %396, label %1187, label %1182

1182:                                             ; preds = %1181
  %1183 = getelementptr inbounds i8, ptr %.09241270, i64 16
  %1184 = load i32, ptr %1183, align 8, !tbaa !123
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds i8, ptr %.0956, i64 %1185
  store ptr %1186, ptr %31, align 8, !tbaa !40
  br label %1187

1187:                                             ; preds = %1182, %1181
  %.pre12531255 = phi ptr [ %1186, %1182 ], [ %1175, %1181 ]
  %1188 = getelementptr inbounds i8, ptr %.09241270, i64 32
  %1189 = load ptr, ptr %1188, align 8, !tbaa !126
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %33)
  %.sroa.062.0.copyload = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, align 4
  %.sroa.9.0.copyload = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 4), align 4
  br i1 %1176, label %1190, label %1195

1190:                                             ; preds = %1187
  %1191 = getelementptr inbounds i8, ptr %.09241270, i64 84
  %1192 = load i32, ptr %1191, align 4, !tbaa !155
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds i16, ptr %1189, i64 %1193
  br label %1195

1195:                                             ; preds = %1190, %1187
  %.sroa.068.0 = phi ptr [ %1194, %1190 ], [ null, %1187 ]
  %.sroa.062.0 = phi i32 [ -1, %1190 ], [ %.sroa.062.0.copyload, %1187 ]
  %.0946 = phi i32 [ 1, %1190 ], [ 0, %1187 ]
  %1196 = trunc nuw i8 %.29411292 to i1
  br i1 %1196, label %1197, label %1206

1197:                                             ; preds = %1195
  %1198 = getelementptr inbounds i8, ptr %.09241270, i64 88
  %1199 = load i32, ptr %1198, align 4, !tbaa !156
  %1200 = getelementptr inbounds i8, ptr %.09241270, i64 92
  %1201 = load i32, ptr %1200, align 4, !tbaa !157
  %1202 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1199, i32 noundef %1201)
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds i16, ptr %1189, i64 %1203
  %1205 = add nuw nsw i32 %.0946, 1
  br label %1206

1206:                                             ; preds = %1197, %1195
  %.sroa.7.0 = phi ptr [ %1204, %1197 ], [ null, %1195 ]
  %.sroa.9.0 = phi i32 [ -1, %1197 ], [ %.sroa.9.0.copyload, %1195 ]
  %.1947 = phi i32 [ %1205, %1197 ], [ %.0946, %1195 ]
  %.lobit = lshr exact i32 %66, 26
  %1207 = add nuw nsw i32 %.1947, %.lobit
  br label %1208

1208:                                             ; preds = %1223, %1206
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1206 ], [ %.sroa.9.2, %1223 ]
  %.sroa.062.1 = phi i32 [ %.sroa.062.0, %1206 ], [ %.sroa.062.3, %1223 ]
  %.2948 = phi i32 [ %1207, %1206 ], [ %.4950, %1223 ]
  %.0943 = phi i32 [ 0, %1206 ], [ %.1944, %1223 ]
  %.0942 = phi ptr [ %1189, %1206 ], [ %1224, %1223 ]
  %1209 = load i16, ptr %.0942, align 2, !tbaa !153
  switch i16 %1209, label %1223 [
    i16 0, label %1225
    i16 10, label %1210
  ]

1210:                                             ; preds = %1208
  %1211 = add nsw i32 %.0943, 1
  %1212 = icmp eq i32 %.sroa.062.1, -1
  br i1 %1212, label %1213, label %1217

1213:                                             ; preds = %1210
  %.not1061 = icmp ult ptr %.0942, %.sroa.068.0
  br i1 %.not1061, label %1217, label %1214

1214:                                             ; preds = %1213
  %1215 = add nsw i32 %.2948, -1
  %1216 = icmp slt i32 %.2948, 2
  br i1 %1216, label %1225, label %1217

1217:                                             ; preds = %1214, %1213, %1210
  %.sroa.062.2 = phi i32 [ %1211, %1214 ], [ -1, %1213 ], [ %.sroa.062.1, %1210 ]
  %.3949 = phi i32 [ %1215, %1214 ], [ %.2948, %1213 ], [ %.2948, %1210 ]
  %1218 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1218, label %1219, label %1223

1219:                                             ; preds = %1217
  %.not1062 = icmp ult ptr %.0942, %.sroa.7.0
  br i1 %.not1062, label %1223, label %1220

1220:                                             ; preds = %1219
  %1221 = add nsw i32 %.3949, -1
  %1222 = icmp slt i32 %.3949, 2
  br i1 %1222, label %1225, label %1223

1223:                                             ; preds = %1208, %1220, %1219, %1217
  %.sroa.9.2 = phi i32 [ %1211, %1220 ], [ -1, %1219 ], [ %.sroa.9.1, %1217 ], [ %.sroa.9.1, %1208 ]
  %.sroa.062.3 = phi i32 [ %.sroa.062.2, %1220 ], [ %.sroa.062.2, %1219 ], [ %.sroa.062.2, %1217 ], [ %.sroa.062.1, %1208 ]
  %.4950 = phi i32 [ %1221, %1220 ], [ %.3949, %1219 ], [ %.3949, %1217 ], [ %.2948, %1208 ]
  %.1944 = phi i32 [ %1211, %1220 ], [ %1211, %1219 ], [ %1211, %1217 ], [ %.0943, %1208 ]
  %1224 = getelementptr inbounds i8, ptr %.0942, i64 2
  br label %1208, !llvm.loop !196

1225:                                             ; preds = %1220, %1214, %1208
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1208 ], [ %.sroa.9.1, %1214 ], [ %1211, %1220 ]
  %.sroa.062.4 = phi i32 [ %.sroa.062.1, %1208 ], [ %1211, %1214 ], [ %.sroa.062.2, %1220 ]
  %.2945 = phi i32 [ %.0943, %1208 ], [ %1211, %1214 ], [ %1211, %1220 ]
  %1226 = add nsw i32 %.2945, 1
  %1227 = icmp eq i32 %.sroa.062.4, -1
  %spec.select1164 = select i1 %1227, i32 %1226, i32 %.sroa.062.4
  %1228 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1228, i32 %1226, i32 %.sroa.9.3
  %1229 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.068.0, ptr noundef %1189)
  %1230 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef %75, ptr noundef %1229, ptr noundef %.sroa.068.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1230, i64 0
  store float %.sroa.044.0.vec.extract, ptr %32, align 4, !tbaa !197
  %1231 = sitofp i32 %spec.select1164 to float
  %1232 = getelementptr inbounds i8, ptr %75, i64 15672
  %1233 = load float, ptr %1232, align 8, !tbaa !41
  %1234 = fmul float %1233, %1231
  %1235 = getelementptr inbounds i8, ptr %32, i64 4
  store float %1234, ptr %1235, align 4, !tbaa !198
  %1236 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1236, label %1237, label %1244

1237:                                             ; preds = %1225
  %1238 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1189)
  %1239 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %75, ptr noundef %1238, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.043.0.vec.extract = extractelement <2 x float> %1239, i64 0
  store float %.sroa.043.0.vec.extract, ptr %33, align 4, !tbaa !197
  %1240 = uitofp nneg i32 %.sroa.9.4 to float
  %1241 = load float, ptr %1232, align 8, !tbaa !41
  %1242 = fmul float %1241, %1240
  %1243 = getelementptr inbounds i8, ptr %33, i64 4
  store float %1242, ptr %1243, align 4, !tbaa !198
  br label %1244

1244:                                             ; preds = %1237, %1225
  %1245 = phi float [ %1241, %1237 ], [ %1233, %1225 ]
  br i1 %67, label %1246, label %1250

1246:                                             ; preds = %1244
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  %1247 = sitofp i32 %1226 to float
  %1248 = fmul float %1245, %1247
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %.sroa.0531.2, float noundef %1248)
  %1249 = load i64, ptr %34, align 8
  store i64 %1249, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  br label %1250

1250:                                             ; preds = %1246, %1244
  br i1 %1176, label %1251, label %1311

1251:                                             ; preds = %1250
  %1252 = getelementptr inbounds i8, ptr %.09241270, i64 3716
  %1253 = load i8, ptr %1252, align 4, !tbaa !158, !range !38, !noundef !39
  %1254 = trunc nuw i8 %1253 to i1
  br i1 %1254, label %1255, label %1311

1255:                                             ; preds = %1251
  %1256 = and i32 %5, 4096
  %.not1063 = icmp eq i32 %1256, 0
  br i1 %.not1063, label %1257, label %1277

1257:                                             ; preds = %1255
  %1258 = fmul float %.sroa.0531.2, 2.500000e-01
  %1259 = load float, ptr %32, align 4, !tbaa !197
  %1260 = getelementptr inbounds i8, ptr %.09241270, i64 80
  %1261 = load float, ptr %1260, align 8, !tbaa !128
  %1262 = fcmp olt float %1259, %1261
  br i1 %1262, label %1263, label %1268

1263:                                             ; preds = %1257
  %1264 = fsub float %1259, %1258
  %1265 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1264)
  %1266 = fptosi float %1265 to i32
  %1267 = sitofp i32 %1266 to float
  store float %1267, ptr %1260, align 8, !tbaa !128
  br label %1279

1268:                                             ; preds = %1257
  %1269 = load float, ptr %89, align 4, !tbaa !149
  %1270 = fsub float %.sroa.0531.2, %1269
  %1271 = fsub float %1259, %1270
  %1272 = fcmp ult float %1271, %1261
  br i1 %1272, label %1279, label %1273

1273:                                             ; preds = %1268
  %1274 = fadd float %1258, %1271
  %1275 = fptosi float %1274 to i32
  %1276 = sitofp i32 %1275 to float
  store float %1276, ptr %1260, align 8, !tbaa !128
  br label %1279

1277:                                             ; preds = %1255
  %1278 = getelementptr inbounds i8, ptr %.09241270, i64 80
  store float 0.000000e+00, ptr %1278, align 8, !tbaa !128
  br label %1279

1279:                                             ; preds = %1263, %1273, %1268, %1277
  br i1 %67, label %1280, label %1310

1280:                                             ; preds = %1279
  %1281 = load float, ptr %1235, align 4, !tbaa !198
  %1282 = load float, ptr %1232, align 8, !tbaa !41
  %1283 = fsub float %1281, %1282
  %1284 = fcmp olt float %1283, %.19341296
  br i1 %1284, label %1285, label %1287

1285:                                             ; preds = %1280
  %1286 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1283)
  %.pre1248 = load float, ptr %90, align 4, !tbaa !100
  br label %1296

1287:                                             ; preds = %1280
  %1288 = load float, ptr %90, align 4, !tbaa !100
  %1289 = fneg float %1288
  %1290 = call float @llvm.fmuladd.f32(float %1289, float 2.000000e+00, float %.sroa.11.0.copyload)
  %1291 = fsub float %1281, %1290
  %1292 = fcmp ult float %1291, %.19341296
  br i1 %1292, label %1296, label %1293

1293:                                             ; preds = %1287
  %1294 = fsub float %1281, %.sroa.11.0.copyload
  %1295 = call float @llvm.fmuladd.f32(float %1288, float 2.000000e+00, float %1294)
  br label %1296

1296:                                             ; preds = %1287, %1293, %1285
  %1297 = phi float [ %.pre1248, %1285 ], [ %1288, %1293 ], [ %1288, %1287 ]
  %.2935 = phi float [ %1286, %1285 ], [ %1295, %1293 ], [ %.19341296, %1287 ]
  %1298 = getelementptr inbounds i8, ptr %30, i64 4
  %1299 = load float, ptr %1298, align 4, !tbaa !198
  %1300 = call float @llvm.fmuladd.f32(float %1297, float 2.000000e+00, float %1299)
  %1301 = fsub float %1300, %.sroa.11.0.copyload
  %1302 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1301, float noundef 0.000000e+00)
  %1303 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2935, float noundef 0.000000e+00, float noundef %1302)
  %1304 = getelementptr inbounds i8, ptr %.2923, i64 144
  %1305 = load float, ptr %1304, align 4, !tbaa !119
  %1306 = fsub float %1305, %1303
  %1307 = getelementptr inbounds i8, ptr %29, i64 4
  %1308 = load float, ptr %1307, align 4, !tbaa !198
  %1309 = fadd float %1308, %1306
  store float %1309, ptr %1307, align 4, !tbaa !198
  store float %1303, ptr %1304, align 4, !tbaa !119
  br label %1310

1310:                                             ; preds = %1296, %1279
  store i8 0, ptr %1252, align 4, !tbaa !158
  br label %1311

1311:                                             ; preds = %1310, %1251, %1250
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %1312 = getelementptr inbounds i8, ptr %.09241270, i64 80
  %1313 = load float, ptr %1312, align 8, !tbaa !128
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef %1313, float noundef 0.000000e+00)
  br i1 %1196, label %1314, label %1383

1314:                                             ; preds = %1311
  %1315 = getelementptr inbounds i8, ptr %.09241270, i64 88
  %1316 = load i32, ptr %1315, align 4, !tbaa !156
  %1317 = getelementptr inbounds i8, ptr %.09241270, i64 92
  %1318 = load i32, ptr %1317, align 4, !tbaa !157
  %1319 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1316, i32 noundef %1318)
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds i16, ptr %1189, i64 %1320
  %1322 = load i32, ptr %1315, align 4, !tbaa !156
  %1323 = load i32, ptr %1317, align 4, !tbaa !157
  %1324 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1322, i32 noundef %1323)
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds i16, ptr %1189, i64 %1325
  %1327 = select i1 %1176, float 1.000000e+00, float 0x3FE3333340000000
  %1328 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1327)
  %1329 = select i1 %67, float 0.000000e+00, float -1.000000e+00
  %1330 = select i1 %67, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #14
  %1331 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1331, ptr %37, align 8
  %1332 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1332, ptr %36, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #14
  store ptr %1321, ptr %38, align 8, !tbaa !40
  %1333 = getelementptr inbounds i8, ptr %36, i64 4
  %1334 = icmp slt i32 %1319, %1324
  br i1 %1334, label %.lr.ph1240, label %._crit_edge1241

.lr.ph1240:                                       ; preds = %1314
  %1335 = extractelement <2 x float> %1332, i64 1
  %1336 = getelementptr inbounds i8, ptr %28, i64 12
  %1337 = getelementptr inbounds i8, ptr %28, i64 4
  %1338 = getelementptr inbounds i8, ptr %75, i64 15664
  %1339 = getelementptr inbounds i8, ptr %.2923, i64 680
  %1340 = getelementptr inbounds i8, ptr %39, i64 8
  %.pre1249 = load float, ptr %1232, align 8, !tbaa !41
  br label %1341

1341:                                             ; preds = %.lr.ph1240, %.loopexit
  %1342 = phi ptr [ %1321, %.lr.ph1240 ], [ %1375, %.loopexit ]
  %1343 = phi float [ %1335, %.lr.ph1240 ], [ %1381, %.loopexit ]
  %1344 = phi float [ %.pre1249, %.lr.ph1240 ], [ %1377, %.loopexit ]
  %1345 = load float, ptr %1336, align 4, !tbaa !199
  %1346 = fadd float %1345, %1344
  %1347 = fcmp ogt float %1343, %1346
  br i1 %1347, label %._crit_edge1241.loopexit, label %1348

1348:                                             ; preds = %1341
  %1349 = load float, ptr %1337, align 4, !tbaa !200
  %1350 = fcmp olt float %1343, %1349
  br i1 %1350, label %.preheader, label %1357

.preheader:                                       ; preds = %1348, %1353
  %1351 = phi ptr [ %1354, %1353 ], [ %1342, %1348 ]
  %1352 = icmp ult ptr %1351, %1326
  br i1 %1352, label %1353, label %.loopexit

1353:                                             ; preds = %.preheader
  %1354 = getelementptr inbounds i8, ptr %1351, i64 2
  store ptr %1354, ptr %38, align 8, !tbaa !40
  %1355 = load i16, ptr %1351, align 2, !tbaa !153
  %1356 = icmp eq i16 %1355, 10
  br i1 %1356, label %.loopexit, label %.preheader, !llvm.loop !201

1357:                                             ; preds = %1348
  %1358 = call <2 x float> @_ZL22InputTextCalcTextSizeWP12ImGuiContextPKtS2_PS2_P6ImVec2b(ptr noundef nonnull %75, ptr noundef %1342, ptr noundef nonnull %1326, ptr noundef nonnull %38, ptr noundef null, i1 noundef zeroext true)
  %.sroa.028.0.vec.extract = extractelement <2 x float> %1358, i64 0
  %1359 = fcmp ugt float %.sroa.028.0.vec.extract, 0.000000e+00
  br i1 %1359, label %1366, label %1360

1360:                                             ; preds = %1357
  %1361 = load ptr, ptr %1338, align 8, !tbaa !135
  %1362 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(118) %1361, i16 noundef zeroext 32)
  %1363 = fmul float %1362, 5.000000e-01
  %1364 = fptosi float %1363 to i32
  %1365 = sitofp i32 %1364 to float
  br label %1366

1366:                                             ; preds = %1360, %1357
  %.sroa.028.0.vec.extract31.pre-phi = phi float [ %1365, %1360 ], [ %.sroa.028.0.vec.extract, %1357 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #14
  %1367 = load float, ptr %1232, align 8, !tbaa !41
  %1368 = fsub float %1329, %1367
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef 0.000000e+00, float noundef %1368)
  %1369 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %41)
  store <2 x float> %1369, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %43, float noundef %.sroa.028.0.vec.extract31.pre-phi, float noundef %1330)
  %1370 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %43)
  store <2 x float> %1370, ptr %42, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(8) %42)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #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.end.p0(i64 8, ptr nonnull %40) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %44, ptr noundef nonnull align 4 dereferenceable(16) %28)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %44)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #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) %28)
  %1371 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %45)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #14
  br i1 %1371, label %1372, label %1374

1372:                                             ; preds = %1366
  %1373 = load ptr, ptr %1339, align 8, !tbaa !202
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1373, ptr noundef nonnull align 4 dereferenceable(8) %39, ptr noundef nonnull align 4 dereferenceable(8) %1340, i32 noundef %1328, float noundef 0.000000e+00, i32 noundef 0)
  br label %1374

1374:                                             ; preds = %1372, %1366
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #14
  %.pre1250 = load float, ptr %1232, align 8, !tbaa !41
  %.pre1251 = load float, ptr %1333, align 4, !tbaa !198
  %.pre1252 = load ptr, ptr %38, align 8, !tbaa !40
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1353, %1374
  %1375 = phi ptr [ %.pre1252, %1374 ], [ %1351, %.preheader ], [ %1354, %1353 ]
  %1376 = phi float [ %.pre1251, %1374 ], [ %1343, %1353 ], [ %1343, %.preheader ]
  %1377 = phi float [ %.pre1250, %1374 ], [ %1344, %1353 ], [ %1344, %.preheader ]
  %1378 = load float, ptr %29, align 8, !tbaa !197
  %1379 = load float, ptr %35, align 4, !tbaa !197
  %1380 = fsub float %1378, %1379
  store float %1380, ptr %36, align 8, !tbaa !197
  %1381 = fadd float %1377, %1376
  store float %1381, ptr %1333, align 4, !tbaa !198
  %1382 = icmp ult ptr %1375, %1326
  br i1 %1382, label %1341, label %._crit_edge1241.loopexit, !llvm.loop !203

._crit_edge1241.loopexit:                         ; preds = %1341, %.loopexit
  %.pre1253.pre.pre = load ptr, ptr %31, align 8, !tbaa !40
  br label %._crit_edge1241

._crit_edge1241:                                  ; preds = %._crit_edge1241.loopexit, %1314
  %.pre1253.pre = phi ptr [ %.pre1253.pre.pre, %._crit_edge1241.loopexit ], [ %.pre12531255, %1314 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #14
  br label %1383

1383:                                             ; preds = %._crit_edge1241, %1311
  %.pre1253 = phi ptr [ %.pre1253.pre, %._crit_edge1241 ], [ %.pre12531255, %1311 ]
  br i1 %67, label %1389, label %1384

1384:                                             ; preds = %1383
  %1385 = ptrtoint ptr %.pre1253 to i64
  %1386 = ptrtoint ptr %.0956 to i64
  %1387 = sub i64 %1385, %1386
  %1388 = icmp slt i64 %1387, 2097152
  br i1 %1388, label %1389, label %1398

1389:                                             ; preds = %1384, %1383
  %. = phi ptr [ %28, %1384 ], [ null, %1383 ]
  %1390 = zext i1 %396 to i32
  %1391 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1390, float noundef 1.000000e+00)
  %1392 = getelementptr inbounds i8, ptr %.2923, i64 680
  %1393 = load ptr, ptr %1392, align 8, !tbaa !202
  %1394 = getelementptr inbounds i8, ptr %75, i64 15664
  %1395 = load ptr, ptr %1394, align 8, !tbaa !135
  %1396 = load float, ptr %1232, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #14
  %1397 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1397, ptr %46, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1393, ptr noundef %1395, float noundef %1396, ptr noundef nonnull align 4 dereferenceable(8) %46, i32 noundef %1391, ptr noundef %.0956, ptr noundef %.pre1253, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #14
  br label %1398

1398:                                             ; preds = %1389, %1384
  br i1 %1176, label %1399, label %1440

1399:                                             ; preds = %1398
  %1400 = getelementptr inbounds i8, ptr %75, i64 24
  %1401 = load float, ptr %1400, align 8, !tbaa !204
  %1402 = getelementptr inbounds i8, ptr %.09241270, i64 3712
  %1403 = load float, ptr %1402, align 8, !tbaa !205
  %1404 = fadd float %1401, %1403
  store float %1404, ptr %1402, align 8, !tbaa !205
  %1405 = getelementptr inbounds i8, ptr %75, i64 91
  %1406 = load i8, ptr %1405, align 1, !tbaa !206, !range !38, !noundef !39
  %1407 = trunc nuw i8 %1406 to i1
  %1408 = fcmp ugt float %1404, 0.000000e+00
  %or.cond1165 = select i1 %1407, i1 %1408, i1 false
  br i1 %or.cond1165, label %1409, label %1412

1409:                                             ; preds = %1399
  %1410 = call float @fmodf(float noundef %1404, float noundef 0x3FF3333340000000) #14
  %1411 = fcmp ole float %1410, 0x3FE99999A0000000
  br label %1412

1412:                                             ; preds = %1409, %1399
  %1413 = phi i1 [ true, %1399 ], [ %1411, %1409 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  %1414 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %29, ptr noundef nonnull align 4 dereferenceable(8) %32)
  store <2 x float> %1414, ptr %48, align 8
  %1415 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1415, ptr %47, align 8
  %1416 = call <2 x float> @_ZL7ImTruncRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %47)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #14
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1416, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1416, i64 1
  %1417 = load float, ptr %1232, align 8, !tbaa !41
  %1418 = fsub float %.sroa.0.4.vec.extract, %1417
  %1419 = fadd float %1418, 5.000000e-01
  %1420 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1421 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %49, float noundef %.sroa.0.0.vec.extract, float noundef %1419, float noundef %1420, float noundef %1421)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #14
  br i1 %1413, label %1422, label %.critedge13

1422:                                             ; preds = %1412
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %50, ptr noundef nonnull align 4 dereferenceable(16) %28)
  %1423 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %49, ptr noundef nonnull align 4 dereferenceable(16) %50)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #14
  br i1 %1423, label %1424, label %1429

1424:                                             ; preds = %1422
  %1425 = getelementptr inbounds i8, ptr %.2923, i64 680
  %1426 = load ptr, ptr %1425, align 8, !tbaa !202
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #14
  %1427 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %49)
  store <2 x float> %1427, ptr %51, align 8
  %1428 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1426, ptr noundef nonnull align 4 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef %1428, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #14
  br label %1429

.critedge13:                                      ; preds = %1412
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #14
  br label %1429

1429:                                             ; preds = %.critedge13, %1424, %1422
  br i1 %171, label %1439, label %1430

1430:                                             ; preds = %1429
  %1431 = getelementptr inbounds i8, ptr %75, i64 24352
  store i8 1, ptr %1431, align 8, !tbaa !207
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #14
  %1432 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1433 = load float, ptr %1232, align 8, !tbaa !41
  %1434 = fsub float %.sroa.0.4.vec.extract, %1433
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1432, float noundef %1434)
  %1435 = getelementptr inbounds i8, ptr %75, i64 24356
  %1436 = load i64, ptr %52, align 8
  store i64 %1436, ptr %1435, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #14
  %1437 = load float, ptr %1232, align 8, !tbaa !41
  %1438 = getelementptr inbounds i8, ptr %75, i64 24364
  store float %1437, ptr %1438, align 4, !tbaa !208
  br label %1439

1439:                                             ; preds = %1430, %1429
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #14
  br label %1440

1440:                                             ; preds = %1439, %1398
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  br label %1476

1441:                                             ; preds = %1177
  br i1 %67, label %.critedge1167, label %1442

1442:                                             ; preds = %1441
  br i1 %396, label %1460, label %1443

1443:                                             ; preds = %1442
  %1444 = load i32, ptr %179, align 4, !tbaa !107
  %1445 = icmp eq i32 %1444, %79
  br i1 %1445, label %1446, label %1451

1446:                                             ; preds = %1443
  %1447 = getelementptr inbounds i8, ptr %.09241270, i64 16
  %1448 = load i32, ptr %1447, align 8, !tbaa !123
  %1449 = sext i32 %1448 to i64
  %1450 = getelementptr inbounds i8, ptr %.0956, i64 %1449
  store ptr %1450, ptr %31, align 8, !tbaa !40
  br label %1460

1451:                                             ; preds = %1443
  %1452 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0956) #15
  %1453 = getelementptr inbounds i8, ptr %.0956, i64 %1452
  store ptr %1453, ptr %31, align 8, !tbaa !40
  br label %1460

.critedge1167:                                    ; preds = %1441
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #14
  %1454 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0956, ptr noundef nonnull %31)
  %1455 = sitofp i32 %1454 to float
  %1456 = getelementptr inbounds i8, ptr %75, i64 15672
  %1457 = load float, ptr %1456, align 8, !tbaa !41
  %1458 = fmul float %1457, %1455
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %.sroa.0531.2, float noundef %1458)
  %1459 = load i64, ptr %53, align 8
  store i64 %1459, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #14
  br label %1466

1460:                                             ; preds = %1442, %1446, %1451
  %1461 = phi ptr [ %1175, %1442 ], [ %1450, %1446 ], [ %1453, %1451 ]
  %1462 = ptrtoint ptr %1461 to i64
  %1463 = ptrtoint ptr %.0956 to i64
  %1464 = sub i64 %1462, %1463
  %1465 = icmp slt i64 %1464, 2097152
  br i1 %1465, label %1466, label %1476

1466:                                             ; preds = %.critedge1167, %1460
  %.14 = phi ptr [ %28, %1460 ], [ null, %.critedge1167 ]
  %1467 = zext i1 %396 to i32
  %1468 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1467, float noundef 1.000000e+00)
  %1469 = getelementptr inbounds i8, ptr %.2923, i64 680
  %1470 = load ptr, ptr %1469, align 8, !tbaa !202
  %1471 = getelementptr inbounds i8, ptr %75, i64 15664
  %1472 = load ptr, ptr %1471, align 8, !tbaa !135
  %1473 = getelementptr inbounds i8, ptr %75, i64 15672
  %1474 = load float, ptr %1473, align 8, !tbaa !41
  %1475 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1470, ptr noundef %1472, float noundef %1474, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %1468, ptr noundef %.0956, ptr noundef %1475, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1476

1476:                                             ; preds = %1460, %1466, %1440
  br i1 %brmerge1079, label %1478, label %1477

1477:                                             ; preds = %1476
  call void @_ZN5ImGui7PopFontEv()
  br label %1478

1478:                                             ; preds = %1476, %1477
  br i1 %67, label %1479, label %1499

1479:                                             ; preds = %1478
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #14
  %1480 = load float, ptr %30, align 8, !tbaa !197
  %1481 = getelementptr inbounds i8, ptr %30, i64 4
  %1482 = load float, ptr %1481, align 4, !tbaa !198
  %1483 = load float, ptr %90, align 4, !tbaa !100
  %1484 = fadd float %1482, %1483
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef %1480, float noundef %1484)
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %54)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #14
  %1485 = getelementptr inbounds i8, ptr %75, i64 18828
  %1486 = load i32, ptr %1485, align 4, !tbaa !209
  %1487 = or i32 %1486, 1025
  store i32 %1487, ptr %1485, align 4, !tbaa !209
  call void @_ZN5ImGui8EndChildEv()
  %1488 = getelementptr inbounds i8, ptr %75, i64 18856
  %1489 = load i32, ptr %1488, align 8, !tbaa !210
  %1490 = and i32 %1489, 128
  %1491 = getelementptr inbounds i8, ptr %15, i64 8
  %1492 = load i32, ptr %1491, align 4, !tbaa !211
  %1493 = or i32 %1492, %1490
  store i32 %1493, ptr %1491, align 4, !tbaa !211
  call void @_ZN5ImGui8EndGroupEv()
  %1494 = load i32, ptr %159, align 8, !tbaa !212
  %1495 = icmp eq i32 %1494, 0
  br i1 %1495, label %1496, label %1499

1496:                                             ; preds = %1479
  store i32 %79, ptr %159, align 8, !tbaa !212
  %1497 = getelementptr inbounds i8, ptr %15, i64 4
  %1498 = load <2 x i32>, ptr %1497, align 4, !tbaa !104
  store <2 x i32> %1498, ptr %160, align 4, !tbaa !104
  br label %1499

1499:                                             ; preds = %1479, %1496, %1478
  %1500 = getelementptr inbounds i8, ptr %75, i64 24544
  %1501 = load i8, ptr %1500, align 8, !tbaa !213, !range !38, !noundef !39
  %1502 = trunc nuw i8 %1501 to i1
  %or.cond1173 = and i1 %brmerge1079, %1502
  br i1 %or.cond1173, label %1503, label %1505

1503:                                             ; preds = %1499
  call void @_ZN5ImGui24LogSetNextTextDecorationEPKcS1_(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26)
  %1504 = load ptr, ptr %31, align 8, !tbaa !40
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %29, ptr noundef %.0956, ptr noundef %1504)
  br label %1505

1505:                                             ; preds = %1503, %1499
  br i1 %95, label %1506, label %1516

1506:                                             ; preds = %1505
  %1507 = getelementptr inbounds i8, ptr %11, i64 8
  %1508 = load float, ptr %1507, align 8, !tbaa !214
  %1509 = getelementptr inbounds i8, ptr %75, i64 14652
  %1510 = load float, ptr %1509, align 4, !tbaa !101
  %1511 = fadd float %1508, %1510
  %1512 = load float, ptr %1155, align 4, !tbaa !195
  %1513 = load float, ptr %90, align 4, !tbaa !100
  %1514 = fadd float %1512, %1513
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef %1511, float noundef %1514)
  %1515 = load <2 x float>, ptr %55, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1515, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1516

1516:                                             ; preds = %1506, %1505
  %1517 = and i32 %5, 134217728
  %.not1064 = icmp eq i32 %1517, 0
  %or.cond1170 = and i1 %.not1064, %.4955
  br i1 %or.cond1170, label %1518, label %1519

1518:                                             ; preds = %1516
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %79)
  br label %1519

1519:                                             ; preds = %1518, %1516
  %1520 = and i32 %5, 32
  %.not1065 = icmp eq i32 %1520, 0
  %1521 = trunc nuw i8 %.29591291 to i1
  %.2 = select i1 %.not1065, i1 %.4955, i1 %1521
  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 8, ptr nonnull %29) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #14
  br label %.thread

.thread:                                          ; preds = %137, %112, %156, %1519
  %.3 = phi i1 [ %.2, %1519 ], [ false, %156 ], [ false, %112 ], [ false, %137 ]
  call void @llvm.lifetime.end.p0(i64 76, 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 %1522

1522:                                             ; preds = %8, %.thread
  %.4 = phi i1 [ %.3, %.thread ], [ false, %8 ]
  ret i1 %.4
}

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

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

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

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

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

declare void @_ZN5ImGui12PushStyleVarEif(i32 noundef, float noundef) 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 nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #2

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

declare noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

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

declare noundef zeroext i1 @_ZN5ImGui18SetShortcutRoutingEiji(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

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

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(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 nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3724)) local_unnamed_addr #3 align 2

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

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

; 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 @_ZN5ImGui8ShortcutEiji(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24InputTextFilterCharacterP12ImGuiContextPjiPFiP26ImGuiInputTextCallbackDataEPv16ImGuiInputSource(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) 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

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: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3724)) local_unnamed_addr #3 align 2

declare noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #4

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #4

declare noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #4

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #4

; 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: mustprogress uwtable
declare hidden noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #10

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(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

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

declare noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

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

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

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 nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8)) unnamed_addr #3 align 2

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

declare noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNK6ImFont14GetCharAdvanceEt(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 @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef, float noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, ptr noundef, ptr noundef, float noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @fmodf(float noundef, float noundef) local_unnamed_addr #12

; 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 = { 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 #12 = { 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 #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 195}
!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, !10, i64 128, !10, i64 132, !10, i64 136, !11, i64 140, !11, i64 148, !11, i64 156, !11, i64 164, !11, i64 172, !11, i64 180, !13, i64 188, !13, i64 189, !13, i64 190, !13, i64 191, !13, i64 192, !13, i64 193, !13, i64 194, !13, i64 195, !13, i64 196, !13, i64 197, !13, i64 198, !13, i64 199, !13, i64 200, !8, i64 201, !8, i64 202, !14, i64 204, !14, i64 206, !14, i64 208, !14, i64 210, !14, i64 212, !10, i64 216, !8, i64 220, !8, i64 221, !13, i64 222, !10, i64 224, !8, i64 228, !8, i64 229, !8, i64 230, !8, i64 231, !10, i64 232, !10, i64 233, !10, i64 234, !11, i64 236, !11, i64 244, !15, i64 256, !16, i64 272, !22, i64 504, !22, i64 520, !22, i64 536, !22, i64 552, !22, i64 568, !22, i64 584, !22, i64 600, !23, i64 616, !23, i64 620, !10, i64 624, !12, i64 628, !12, i64 632, !24, i64 640, !26, i64 656, !12, i64 672, !10, i64 676, !7, i64 680, !27, i64 688, !7, i64 888, !7, i64 896, !7, i64 904, !7, i64 912, !7, i64 920, !7, i64 928, !7, i64 936, !7, i64 944, !8, i64 952, !8, i64 960, !8, i64 992, !10, i64 1008, !10, i64 1012, !10, i64 1016, !13, i64 1020}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS6ImVec2", !12, i64 0, !12, i64 4}
!12 = !{!"float", !8, i64 0}
!13 = !{!"bool", !8, i64 0}
!14 = !{!"short", !8, i64 0}
!15 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!16 = !{!"_ZTS19ImGuiWindowTempData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !12, i64 56, !12, i64 60, !13, i64 64, !13, i64 65, !17, i64 68, !17, i64 72, !17, i64 76, !11, i64 80, !18, i64 88, !14, i64 92, !14, i64 94, !13, i64 96, !13, i64 97, !13, i64 98, !13, i64 99, !11, i64 100, !19, i64 108, !10, i64 136, !10, i64 140, !20, i64 144, !7, i64 160, !7, i64 168, !10, i64 176, !10, i64 180, !10, i64 184, !12, i64 188, !12, i64 192, !21, i64 200, !21, i64 216}
!17 = !{!"_ZTS6ImVec1", !12, i64 0}
!18 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!19 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !10, i64 4, !14, i64 8, !14, i64 10, !14, i64 12, !14, i64 14, !14, i64 16, !8, i64 18}
!20 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!21 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!23 = !{!"_ZTS8ImVec2ih", !14, i64 0, !14, i64 2}
!24 = !{!"_ZTS12ImGuiStorage", !25, i64 0}
!25 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!26 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS10ImDrawList", !28, i64 0, !29, i64 16, !30, i64 32, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !31, i64 88, !32, i64 104, !33, i64 120, !34, i64 136, !36, i64 168, !12, i64 192}
!28 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{!"_ZTS15ImDrawCmdHeader", !35, i64 0, !7, i64 16, !10, i64 24}
!35 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!36 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !37, i64 8}
!37 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!7, !7, i64 0}
!41 = !{!42, !12, i64 15672}
!42 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !43, i64 8, !45, i64 14568, !7, i64 15664, !12, i64 15672, !12, i64 15676, !46, i64 15680, !47, i64 16208, !10, i64 16216, !10, i64 16220, !10, i64 16224, !13, i64 16228, !13, i64 16229, !13, i64 16230, !13, i64 16231, !13, i64 16232, !7, i64 16240, !48, i64 16248, !48, i64 16264, !44, i64 16280, !10, i64 16284, !20, i64 16288, !20, i64 16304, !20, i64 16320, !49, i64 16336, !24, i64 16352, !10, i64 16368, !11, i64 16372, !10, i64 16380, !7, i64 16384, !7, i64 16392, !7, i64 16400, !7, i64 16408, !7, i64 16416, !11, i64 16424, !10, i64 16432, !10, i64 16436, !12, i64 16440, !11, i64 16444, !11, i64 16452, !10, i64 16460, !10, i64 16464, !10, i64 16468, !13, i64 16472, !13, i64 16473, !12, i64 16476, !12, i64 16480, !10, i64 16484, !10, i64 16488, !12, i64 16492, !13, i64 16496, !13, i64 16497, !13, i64 16498, !13, i64 16499, !13, i64 16500, !13, i64 16501, !11, i64 16504, !7, i64 16512, !50, i64 16520, !10, i64 16524, !10, i64 16528, !13, i64 16532, !13, i64 16533, !7, i64 16536, !10, i64 16544, !12, i64 16548, !47, i64 16552, !47, i64 16560, !47, i64 16568, !51, i64 16576, !8, i64 16596, !52, i64 18448, !10, i64 18792, !13, i64 18796, !10, i64 18800, !10, i64 18804, !10, i64 18808, !10, i64 18812, !10, i64 18816, !54, i64 18824, !56, i64 18848, !57, i64 18928, !13, i64 19040, !10, i64 19044, !58, i64 19048, !59, i64 19064, !60, i64 19080, !61, i64 19096, !62, i64 19112, !63, i64 19128, !64, i64 19144, !64, i64 19160, !65, i64 19176, !10, i64 19192, !66, i64 19200, !7, i64 19216, !10, i64 19224, !10, i64 19228, !61, i64 19232, !10, i64 19248, !10, i64 19252, !10, i64 19256, !10, i64 19260, !10, i64 19264, !10, i64 19268, !10, i64 19272, !10, i64 19276, !10, i64 19280, !50, i64 19284, !18, i64 19288, !55, i64 19296, !13, i64 19304, !13, i64 19305, !13, i64 19306, !13, i64 19307, !13, i64 19308, !13, i64 19309, !13, i64 19310, !67, i64 19312, !13, i64 19376, !13, i64 19377, !13, i64 19378, !10, i64 19380, !10, i64 19384, !10, i64 19388, !10, i64 19392, !10, i64 19396, !10, i64 19400, !22, i64 19404, !22, i64 19420, !10, i64 19436, !10, i64 19440, !10, i64 19444, !67, i64 19448, !67, i64 19512, !67, i64 19576, !67, i64 19640, !10, i64 19704, !10, i64 19708, !7, i64 19712, !7, i64 19720, !7, i64 19728, !12, i64 19736, !12, i64 19740, !13, i64 19744, !11, i64 19748, !11, i64 19756, !12, i64 19764, !13, i64 19768, !13, i64 19769, !13, i64 19770, !10, i64 19772, !10, i64 19776, !10, i64 19780, !68, i64 19784, !22, i64 19848, !22, i64 19864, !10, i64 19880, !10, i64 19884, !12, i64 19888, !10, i64 19892, !10, i64 19896, !10, i64 19900, !10, i64 19904, !69, i64 19912, !8, i64 19928, !10, i64 19944, !70, i64 19952, !7, i64 19968, !10, i64 19976, !10, i64 19980, !71, i64 19984, !72, i64 20000, !21, i64 20040, !37, i64 20056, !7, i64 20072, !74, i64 20080, !76, i64 20120, !77, i64 20136, !10, i64 20152, !10, i64 20156, !12, i64 20160, !12, i64 20164, !10, i64 20168, !10, i64 20172, !10, i64 20176, !12, i64 20180, !11, i64 20184, !78, i64 20192, !82, i64 23920, !83, i64 23944, !10, i64 24064, !10, i64 24068, !10, i64 24072, !10, i64 24076, !12, i64 24080, !12, i64 24084, !10, i64 24088, !35, i64 24092, !85, i64 24108, !22, i64 24156, !13, i64 24172, !12, i64 24176, !12, i64 24180, !13, i64 24184, !13, i64 24185, !12, i64 24188, !12, i64 24192, !12, i64 24196, !12, i64 24200, !14, i64 24204, !14, i64 24206, !14, i64 24208, !79, i64 24216, !15, i64 24232, !86, i64 24248, !88, i64 24352, !88, i64 24368, !13, i64 24384, !12, i64 24388, !89, i64 24392, !90, i64 24408, !91, i64 24424, !92, i64 24440, !93, i64 24456, !10, i64 24472, !8, i64 24480, !13, i64 24544, !94, i64 24548, !7, i64 24552, !89, i64 24560, !7, i64 24576, !7, i64 24584, !12, i64 24592, !13, i64 24596, !10, i64 24600, !10, i64 24604, !10, i64 24608, !10, i64 24612, !89, i64 24616, !95, i64 24632, !10, i64 24656, !8, i64 24660, !8, i64 24661, !13, i64 24662, !10, i64 24664, !8, i64 24668, !13, i64 24669, !8, i64 24670, !10, i64 24672, !12, i64 24676, !35, i64 24680, !96, i64 24696, !97, i64 24720, !99, i64 24760, !8, i64 24820, !10, i64 25060, !10, i64 25064, !12, i64 25068, !10, i64 25072, !10, i64 25076, !10, i64 25080, !79, i64 25088, !8, i64 25104}
!43 = !{!"_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, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !13, i64 112, !13, i64 113, !13, i64 114, !13, i64 115, !13, i64 116, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !14, i64 192, !13, i64 194, !13, i64 195, !13, i64 196, !13, i64 197, !13, i64 198, !13, i64 199, !13, i64 200, !12, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !11, i64 224, !8, i64 232, !8, i64 2896, !8, i64 3564, !7, i64 3632, !11, i64 3640, !8, i64 3648, !12, i64 3656, !12, i64 3660, !44, i64 3664, !13, i64 3668, !13, i64 3669, !13, i64 3670, !13, i64 3671, !10, i64 3672, !8, i64 3676, !13, i64 14332, !11, i64 14336, !8, i64 14344, !8, i64 14384, !8, i64 14424, !8, i64 14429, !8, i64 14434, !8, i64 14444, !8, i64 14454, !8, i64 14459, !8, i64 14464, !13, i64 14469, !8, i64 14472, !8, i64 14492, !8, i64 14512, !12, i64 14532, !13, i64 14536, !13, i64 14537, !8, i64 14538, !13, i64 14539, !14, i64 14540, !29, i64 14544}
!44 = !{!"_ZTS16ImGuiMouseSource", !8, i64 0}
!45 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !12, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !11, i64 24, !11, i64 32, !10, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !11, i64 60, !12, i64 68, !12, i64 72, !11, i64 76, !11, i64 84, !11, i64 92, !11, i64 100, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !12, i64 152, !10, i64 156, !11, i64 160, !11, i64 168, !12, i64 176, !11, i64 180, !11, i64 188, !11, i64 196, !11, i64 204, !12, i64 212, !13, i64 216, !13, i64 217, !13, i64 218, !12, i64 220, !12, i64 224, !8, i64 228, !12, i64 1076, !12, i64 1080, !12, i64 1084, !10, i64 1088, !10, i64 1092}
!46 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !35, i64 28, !10, i64 44, !33, i64 48, !8, i64 64, !12, i64 448, !8, i64 452, !7, i64 520}
!47 = !{!"double", !8, i64 0}
!48 = !{!"_ZTS8ImVectorI15ImGuiInputEventE", !10, i64 0, !10, i64 4, !7, i64 8}
!49 = !{!"_ZTS8ImVectorI20ImGuiWindowStackDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!50 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!51 = !{!"_ZTS10ImBitArrayILi154ELin512EE", !8, i64 0}
!52 = !{!"_ZTS20ImGuiKeyRoutingTable", !8, i64 0, !53, i64 312, !53, i64 328}
!53 = !{!"_ZTS8ImVectorI19ImGuiKeyRoutingDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!54 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !10, i64 4, !55, i64 8, !12, i64 16, !13, i64 20, !10, i64 21}
!55 = !{!"long long", !8, i64 0}
!56 = !{!"_ZTS17ImGuiLastItemData", !10, i64 0, !10, i64 4, !10, i64 8, !22, i64 12, !22, i64 28, !22, i64 44, !22, i64 60}
!57 = !{!"_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, !22, i64 64, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100}
!58 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!59 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!60 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!61 = !{!"_ZTS8ImVectorI19ImGuiFocusScopeDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!62 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!63 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS8ImVectorI20ImGuiNavTreeNodeDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS8ImVectorIP14ImGuiViewportPE", !10, i64 0, !10, i64 4, !7, i64 8}
!67 = !{!"_ZTS16ImGuiNavItemData", !7, i64 0, !10, i64 8, !10, i64 12, !22, i64 16, !10, i64 32, !55, i64 40, !12, i64 48, !12, i64 52, !12, i64 56}
!68 = !{!"_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}
!69 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS8ImVectorI20ImGuiListClipperDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS8ImVectorI18ImGuiTableTempDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTS6ImPoolI10ImGuiTableE", !73, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!73 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!74 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !75, i64 0, !24, i64 16, !10, i64 32, !10, i64 36}
!75 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!76 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!77 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!78 = !{!"_ZTS19ImGuiInputTextState", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !29, i64 24, !79, i64 40, !79, i64 56, !13, i64 72, !10, i64 76, !12, i64 80, !80, i64 84, !12, i64 3712, !13, i64 3716, !13, i64 3717, !13, i64 3718, !10, i64 3720}
!79 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!80 = !{!"_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, !81, i64 32}
!81 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!82 = !{!"_ZTS30ImGuiInputTextDeactivatedState", !10, i64 0, !79, i64 8}
!83 = !{!"_ZTS6ImFont", !21, i64 0, !12, i64 16, !12, i64 20, !29, i64 24, !84, 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}
!84 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!85 = !{!"_ZTS21ImGuiComboPreviewData", !22, i64 0, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !10, i64 44}
!86 = !{!"_ZTS22ImGuiTypingSelectState", !87, i64 0, !8, i64 24, !10, i64 88, !10, i64 92, !12, i64 96, !13, i64 100}
!87 = !{!"_ZTS24ImGuiTypingSelectRequest", !10, i64 0, !10, i64 4, !7, i64 8, !13, i64 16, !13, i64 17, !8, i64 18}
!88 = !{!"_ZTS20ImGuiPlatformImeData", !13, i64 0, !11, i64 4, !12, i64 12}
!89 = !{!"_ZTS15ImGuiTextBuffer", !79, i64 0}
!90 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!91 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !79, i64 0}
!92 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !79, i64 0}
!93 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!94 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!95 = !{!"_ZTS14ImGuiTextIndex", !62, i64 0, !10, i64 16}
!96 = !{!"_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}
!97 = !{!"_ZTS16ImGuiIDStackTool", !10, i64 0, !10, i64 4, !10, i64 8, !98, i64 16, !13, i64 32, !12, i64 36}
!98 = !{!"_ZTS8ImVectorI19ImGuiStackLevelInfoE", !10, i64 0, !10, i64 4, !7, i64 8}
!99 = !{!"_ZTS19ImGuiDebugAllocInfo", !10, i64 0, !10, i64 4, !14, i64 8, !8, i64 12}
!100 = !{!45, !12, i64 64}
!101 = !{!45, !12, i64 84}
!102 = !{!12, !12, i64 0}
!103 = !{i64 0, i64 4, !104, i64 4, i64 4, !104, i64 8, i64 4, !104, i64 12, i64 4, !102, i64 16, i64 4, !102, i64 20, i64 4, !102, i64 24, i64 4, !102, i64 28, i64 4, !102, i64 32, i64 4, !102, i64 36, i64 4, !102, i64 40, i64 4, !102, i64 44, i64 4, !102, i64 48, i64 4, !102, i64 52, i64 4, !102, i64 56, i64 4, !102, i64 60, i64 4, !102, i64 64, i64 4, !102, i64 68, i64 4, !102, i64 72, i64 4, !102}
!104 = !{!10, !10, i64 0}
!105 = !{!42, !10, i64 19248}
!106 = !{!42, !10, i64 19260}
!107 = !{!42, !10, i64 16484}
!108 = !{!45, !12, i64 68}
!109 = !{!45, !12, i64 72}
!110 = !{!42, !7, i64 16384}
!111 = !{!6, !18, i64 360}
!112 = !{!6, !14, i64 366}
!113 = !{!6, !12, i64 180}
!114 = !{!42, !10, i64 18852}
!115 = !{!42, !10, i64 20176}
!116 = !{!42, !50, i64 19284}
!117 = !{!13, !13, i64 0}
!118 = !{!42, !10, i64 16528}
!119 = !{!6, !12, i64 144}
!120 = !{!78, !8, i64 107}
!121 = !{!78, !10, i64 8}
!122 = !{!78, !7, i64 64}
!123 = !{!78, !10, i64 16}
!124 = !{!78, !13, i64 72}
!125 = !{!78, !7, i64 48}
!126 = !{!78, !7, i64 32}
!127 = !{!78, !10, i64 12}
!128 = !{!78, !12, i64 80}
!129 = !{!43, !13, i64 3668}
!130 = !{!78, !8, i64 96}
!131 = !{!43, !13, i64 81}
!132 = !{!42, !10, i64 18792}
!133 = !{!78, !10, i64 24}
!134 = !{!8, !8, i64 0}
!135 = !{!42, !7, i64 15664}
!136 = !{!83, !12, i64 20}
!137 = !{!83, !12, i64 108}
!138 = !{!83, !7, i64 64}
!139 = !{!83, !7, i64 56}
!140 = !{!141, !12, i64 4}
!141 = !{!"_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}
!142 = !{!83, !12, i64 16}
!143 = !{!78, !13, i64 3718}
!144 = !{!78, !10, i64 76}
!145 = !{!78, !10, i64 3720}
!146 = !{!42, !13, i64 16497}
!147 = !{!43, !12, i64 3640}
!148 = !{!22, !12, i64 0}
!149 = !{!45, !12, i64 60}
!150 = !{!43, !12, i64 3644}
!151 = !{!6, !12, i64 276}
!152 = !{!78, !13, i64 3717}
!153 = !{!14, !14, i64 0}
!154 = !{!43, !13, i64 3669}
!155 = !{!78, !10, i64 84}
!156 = !{!78, !10, i64 88}
!157 = !{!78, !10, i64 92}
!158 = !{!78, !13, i64 3716}
!159 = !{!43, !12, i64 224}
!160 = !{!43, !12, i64 228}
!161 = !{!43, !13, i64 3670}
!162 = !{!43, !13, i64 3671}
!163 = !{!43, !10, i64 14544}
!164 = distinct !{!164, !165}
!165 = !{!"llvm.loop.mustprogress"}
!166 = !{!42, !13, i64 16496}
!167 = !{!78, !10, i64 100}
!168 = !{!43, !10, i64 0}
!169 = !{!43, !10, i64 4}
!170 = !{!43, !13, i64 84}
!171 = !{!43, !7, i64 168}
!172 = distinct !{!172, !165}
!173 = !{!78, !10, i64 56}
!174 = !{!29, !7, i64 8}
!175 = !{!29, !10, i64 0}
!176 = !{!78, !10, i64 40}
!177 = !{!178, !7, i64 0}
!178 = !{!"_ZTS26ImGuiInputTextCallbackData", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !14, i64 24, !179, i64 28, !7, i64 32, !10, i64 40, !10, i64 44, !13, i64 48, !10, i64 52, !10, i64 56, !10, i64 60}
!179 = !{!"_ZTS8ImGuiKey", !8, i64 0}
!180 = !{!178, !10, i64 8}
!181 = !{!178, !10, i64 12}
!182 = !{!178, !7, i64 16}
!183 = !{!178, !179, i64 28}
!184 = !{!178, !7, i64 32}
!185 = !{!178, !10, i64 40}
!186 = !{!178, !10, i64 44}
!187 = !{!178, !13, i64 48}
!188 = !{!178, !10, i64 52}
!189 = !{!178, !10, i64 56}
!190 = !{!178, !10, i64 60}
!191 = !{!42, !10, i64 23920}
!192 = !{!42, !7, i64 23936}
!193 = !{!42, !10, i64 23928}
!194 = !{!42, !10, i64 25080}
!195 = !{!22, !12, i64 4}
!196 = distinct !{!196, !165}
!197 = !{!11, !12, i64 0}
!198 = !{!11, !12, i64 4}
!199 = !{!35, !12, i64 12}
!200 = !{!35, !12, i64 4}
!201 = distinct !{!201, !165}
!202 = !{!6, !7, i64 680}
!203 = distinct !{!203, !165}
!204 = !{!43, !12, i64 16}
!205 = !{!78, !12, i64 3712}
!206 = !{!42, !13, i64 91}
!207 = !{!42, !13, i64 24352}
!208 = !{!42, !12, i64 24364}
!209 = !{!42, !10, i64 18828}
!210 = !{!42, !10, i64 18856}
!211 = !{!56, !10, i64 8}
!212 = !{!42, !10, i64 18848}
!213 = !{!42, !13, i64 24544}
!214 = !{!22, !12, i64 8}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass