; LLVM IR from Devaniti/BoolkaEngine :: ThirdParty/imgui (imgui_widgets)

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

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

@GImGui = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [31 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no = external hidden unnamed_addr constant [2 x i32], align 4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) #6

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #6

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() #6

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) #6

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #6

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

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

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) #6

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

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

declare void @_ZN5ImGui10BeginGroupEv() #6

declare void @_ZN5ImGui8EndGroupEv() #6

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

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

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

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

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

176:                                              ; preds = %8
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = icmp ne ptr %177, null
  br i1 %178, label %179, label %182

179:                                              ; preds = %176
  %180 = load i32, ptr %13, align 4, !tbaa !9
  %181 = icmp sge i32 %180, 0
  br label %182

182:                                              ; preds = %179, %176
  %183 = phi i1 [ false, %176 ], [ %181, %179 ]
  br i1 %183, label %184, label %185

184:                                              ; preds = %182
  br label %187

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

186:                                              ; No predecessors!
  br label %187

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

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

195:                                              ; preds = %191, %187
  %196 = phi i1 [ false, %187 ], [ %194, %191 ]
  %197 = xor i1 %196, true
  br i1 %197, label %198, label %199

198:                                              ; preds = %195
  br label %201

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

200:                                              ; No predecessors!
  br label %201

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

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

209:                                              ; preds = %205, %201
  %210 = phi i1 [ false, %201 ], [ %208, %205 ]
  %211 = xor i1 %210, true
  br i1 %211, label %212, label %213

212:                                              ; preds = %209
  br label %215

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

214:                                              ; No predecessors!
  br label %215

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

243:                                              ; preds = %215
  %244 = load ptr, ptr %16, align 8, !tbaa !5
  %245 = icmp ne ptr %244, null
  br i1 %245, label %246, label %247

246:                                              ; preds = %243
  br label %249

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

248:                                              ; No predecessors!
  br label %249

249:                                              ; preds = %248, %246
  br label %250

250:                                              ; preds = %249, %215
  %251 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %252 = trunc i8 %251 to i1
  br i1 %252, label %253, label %254

253:                                              ; preds = %250
  call void @_ZN5ImGui10BeginGroupEv()
  br label %254

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

264:                                              ; preds = %254
  %265 = load ptr, ptr %20, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.ImGuiContext, ptr %265, i32 0, i32 7
  %267 = load float, ptr %266, align 8, !tbaa !46
  %268 = fmul float %267, 8.000000e+00
  br label %272

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

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

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

294:                                              ; preds = %272
  br label %295

295:                                              ; preds = %294, %286
  %296 = phi float [ %293, %286 ], [ 0.000000e+00, %294 ]
  %297 = fadd float %282, %296
  %298 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %299 = load float, ptr %298, align 4, !tbaa !87
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %297, float noundef %299)
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #14
  %300 = load ptr, ptr %18, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.ImGuiWindow, ptr %300, i32 0, i32 53
  %302 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %301, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #14
  %303 = load ptr, ptr %18, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.ImGuiWindow, ptr %303, i32 0, i32 53
  %305 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %304, i32 0, i32 0
  %306 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %305, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %306, ptr %35, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %34, ptr noundef nonnull align 4 dereferenceable(8) %302, ptr noundef nonnull align 4 dereferenceable(8) %35)
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #14
  %307 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #14
  %308 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %309 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %308, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %309, ptr %37, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(8) %307, ptr noundef nonnull align 4 dereferenceable(8) %37)
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #14
  %310 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %310, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 4 %31, i64 8, i1 false), !tbaa.struct !44
  %311 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %312 = trunc i8 %311 to i1
  br i1 %312, label %313, label %365

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

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

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

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

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

362:                                              ; preds = %341, %340
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #14
  %363 = load i32, ptr %19, align 4
  switch i32 %363, label %3255 [
    i32 0, label %364
  ]

364:                                              ; preds = %362
  br label %374

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

372:                                              ; preds = %365
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3255

373:                                              ; preds = %365
  br label %374

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

380:                                              ; preds = %374
  %381 = load ptr, ptr %20, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.ImGuiContext, ptr %381, i32 0, i32 145
  store i32 1, ptr %382, align 8, !tbaa !97
  br label %383

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

392:                                              ; preds = %383
  %393 = load ptr, ptr %20, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.ImGuiContext, ptr %393, i32 0, i32 131
  %395 = load ptr, ptr %394, align 8, !tbaa !98
  %396 = load ptr, ptr %18, align 8, !tbaa !5
  %397 = icmp eq ptr %395, %396
  br i1 %397, label %398, label %407

398:                                              ; preds = %392
  %399 = load ptr, ptr %20, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.ImGuiContext, ptr %399, i32 0, i32 133
  %401 = load i32, ptr %400, align 8, !tbaa !99
  %402 = load ptr, ptr %18, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.ImGuiWindow, ptr %402, i32 0, i32 53
  %404 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %403, i32 0, i32 35
  %405 = load i32, ptr %404, align 4, !tbaa !100
  %406 = icmp eq i32 %401, %405
  br label %407

407:                                              ; preds = %398, %392
  %408 = phi i1 [ false, %392 ], [ %406, %398 ]
  br label %409

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

414:                                              ; preds = %409
  %415 = load i8, ptr %45, align 1, !tbaa !43, !range !41, !noundef !42
  %416 = trunc i8 %415 to i1
  %417 = xor i1 %416, true
  br label %418

418:                                              ; preds = %414, %409
  %419 = phi i1 [ false, %409 ], [ %417, %414 ]
  %420 = zext i1 %419 to i8
  store i8 %420, ptr %46, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #14
  %421 = load i8, ptr %42, align 1, !tbaa !43, !range !41, !noundef !42
  %422 = trunc i8 %421 to i1
  br i1 %422, label %423, label %429

423:                                              ; preds = %418
  %424 = load ptr, ptr %21, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.ImGuiIO, ptr %424, i32 0, i32 64
  %426 = getelementptr inbounds [5 x i8], ptr %425, i64 0, i64 0
  %427 = load i8, ptr %426, align 8, !tbaa !43, !range !41, !noundef !42
  %428 = trunc i8 %427 to i1
  br label %429

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

437:                                              ; preds = %429
  %438 = load ptr, ptr %20, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.ImGuiContext, ptr %438, i32 0, i32 88
  %440 = load i32, ptr %439, align 4, !tbaa !102
  %441 = load i32, ptr %29, align 4, !tbaa !9
  %442 = icmp eq i32 %440, %441
  br i1 %442, label %456, label %443

443:                                              ; preds = %437
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.ImGuiContext, ptr %444, i32 0, i32 85
  %446 = load i32, ptr %445, align 8, !tbaa !103
  %447 = load i32, ptr %29, align 4, !tbaa !9
  %448 = icmp eq i32 %446, %447
  br i1 %448, label %449, label %454

449:                                              ; preds = %443
  %450 = load ptr, ptr %20, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.ImGuiContext, ptr %450, i32 0, i32 94
  %452 = load i32, ptr %451, align 4, !tbaa !104
  %453 = icmp eq i32 %452, 3
  br label %454

454:                                              ; preds = %449, %443
  %455 = phi i1 [ false, %443 ], [ %453, %449 ]
  br label %456

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

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

463:                                              ; preds = %458
  %464 = load ptr, ptr %43, align 8, !tbaa !5
  %465 = icmp ne ptr %464, null
  br i1 %465, label %466, label %478

466:                                              ; preds = %463
  %467 = load ptr, ptr %20, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.ImGuiContext, ptr %467, i32 0, i32 45
  %469 = load i32, ptr %468, align 8, !tbaa !101
  %470 = icmp eq i32 %469, 0
  br i1 %470, label %471, label %478

471:                                              ; preds = %466
  %472 = load ptr, ptr %20, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.ImGuiContext, ptr %472, i32 0, i32 64
  %474 = load i32, ptr %473, align 8, !tbaa !105
  %475 = load ptr, ptr %38, align 8, !tbaa !5
  %476 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %475, i32 noundef 1)
  %477 = icmp eq i32 %474, %476
  br label %478

478:                                              ; preds = %471, %466, %463, %458
  %479 = phi i1 [ false, %466 ], [ false, %463 ], [ false, %458 ], [ %477, %471 ]
  %480 = zext i1 %479 to i8
  store i8 %480, ptr %49, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #14
  %481 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %482 = trunc i8 %481 to i1
  br i1 %482, label %483, label %493

483:                                              ; preds = %478
  %484 = load ptr, ptr %43, align 8, !tbaa !5
  %485 = icmp ne ptr %484, null
  br i1 %485, label %486, label %493

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

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

501:                                              ; preds = %493
  %502 = load i32, ptr %15, align 4, !tbaa !9
  %503 = and i32 %502, 16
  %504 = icmp ne i32 %503, 0
  br i1 %504, label %508, label %505

505:                                              ; preds = %501
  %506 = load i8, ptr %48, align 1, !tbaa !43, !range !41, !noundef !42
  %507 = trunc i8 %506 to i1
  br i1 %507, label %508, label %512

508:                                              ; preds = %505, %501
  %509 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %510 = trunc i8 %509 to i1
  %511 = xor i1 %510, true
  br label %512

512:                                              ; preds = %508, %505, %493
  %513 = phi i1 [ false, %505 ], [ false, %493 ], [ %511, %508 ]
  %514 = zext i1 %513 to i8
  store i8 %514, ptr %52, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #14
  %515 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %516 = trunc i8 %515 to i1
  br i1 %516, label %517, label %522

517:                                              ; preds = %512
  %518 = load ptr, ptr %38, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ImGuiWindow, ptr %518, i32 0, i32 15
  %520 = getelementptr inbounds %struct.ImVec2, ptr %519, i32 0, i32 1
  %521 = load float, ptr %520, align 4, !tbaa !106
  br label %523

522:                                              ; preds = %512
  br label %523

523:                                              ; preds = %522, %517
  %524 = phi float [ %521, %517 ], [ 0x47EFFFFFE0000000, %522 ]
  store float %524, ptr %53, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #14
  %525 = load ptr, ptr %43, align 8, !tbaa !5
  %526 = icmp ne ptr %525, null
  br i1 %526, label %527, label %538

527:                                              ; preds = %523
  %528 = load ptr, ptr %43, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %528, i32 0, i32 9
  %530 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %529, i32 0, i32 8
  %531 = load i8, ptr %530, align 1, !tbaa !107
  %532 = zext i8 %531 to i32
  %533 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %534 = trunc i8 %533 to i1
  %535 = xor i1 %534, true
  %536 = zext i1 %535 to i32
  %537 = icmp ne i32 %532, %536
  br label %538

538:                                              ; preds = %527, %523
  %539 = phi i1 [ false, %523 ], [ %537, %527 ]
  %540 = zext i1 %539 to i8
  store i8 %540, ptr %54, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #14
  %541 = load i8, ptr %44, align 1, !tbaa !43, !range !41, !noundef !42
  %542 = trunc i8 %541 to i1
  br i1 %542, label %552, label %543

543:                                              ; preds = %538
  %544 = load i8, ptr %47, align 1, !tbaa !43, !range !41, !noundef !42
  %545 = trunc i8 %544 to i1
  br i1 %545, label %552, label %546

546:                                              ; preds = %543
  %547 = load i8, ptr %49, align 1, !tbaa !43, !range !41, !noundef !42
  %548 = trunc i8 %547 to i1
  br i1 %548, label %552, label %549

549:                                              ; preds = %546
  %550 = load i8, ptr %48, align 1, !tbaa !43, !range !41, !noundef !42
  %551 = trunc i8 %550 to i1
  br label %552

552:                                              ; preds = %549, %546, %543, %538
  %553 = phi i1 [ true, %546 ], [ true, %543 ], [ true, %538 ], [ %551, %549 ]
  %554 = zext i1 %553 to i8
  store i8 %554, ptr %55, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #14
  %555 = load i8, ptr %55, align 1, !tbaa !43, !range !41, !noundef !42
  %556 = trunc i8 %555 to i1
  br i1 %556, label %560, label %557

557:                                              ; preds = %552
  %558 = load i8, ptr %50, align 1, !tbaa !43, !range !41, !noundef !42
  %559 = trunc i8 %558 to i1
  br label %560

560:                                              ; preds = %557, %552
  %561 = phi i1 [ true, %552 ], [ %559, %557 ]
  %562 = zext i1 %561 to i8
  store i8 %562, ptr %56, align 1, !tbaa !43
  %563 = load i8, ptr %56, align 1, !tbaa !43, !range !41, !noundef !42
  %564 = trunc i8 %563 to i1
  br i1 %564, label %565, label %571

565:                                              ; preds = %560
  %566 = load ptr, ptr %20, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiContext, ptr %566, i32 0, i32 45
  %568 = load i32, ptr %567, align 8, !tbaa !101
  %569 = load i32, ptr %29, align 4, !tbaa !9
  %570 = icmp ne i32 %568, %569
  br i1 %570, label %574, label %571

571:                                              ; preds = %565, %560
  %572 = load i8, ptr %54, align 1, !tbaa !43, !range !41, !noundef !42
  %573 = trunc i8 %572 to i1
  br i1 %573, label %574, label %677

574:                                              ; preds = %571, %565
  %575 = load ptr, ptr %20, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiContext, ptr %575, i32 0, i32 176
  store ptr %576, ptr %43, align 8, !tbaa !5
  %577 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %577)
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #14
  %578 = load ptr, ptr %12, align 8, !tbaa !5
  %579 = call i64 @strlen(ptr noundef %578) #16
  %580 = trunc i64 %579 to i32
  store i32 %580, ptr %57, align 4, !tbaa !9
  %581 = load ptr, ptr %43, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %581, i32 0, i32 5
  %583 = load i32, ptr %57, align 4, !tbaa !9
  %584 = add nsw i32 %583, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %582, i32 noundef %584)
  %585 = load ptr, ptr %43, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %585, i32 0, i32 5
  %587 = getelementptr inbounds %struct.ImVector.25, ptr %586, i32 0, i32 2
  %588 = load ptr, ptr %587, align 8, !tbaa !108
  %589 = load ptr, ptr %12, align 8, !tbaa !5
  %590 = load i32, ptr %57, align 4, !tbaa !9
  %591 = add nsw i32 %590, 1
  %592 = sext i32 %591 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %588, ptr align 1 %589, i64 %592, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #14
  store ptr null, ptr %58, align 8, !tbaa !5
  %593 = load ptr, ptr %43, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %593, i32 0, i32 3
  %595 = load i32, ptr %13, align 4, !tbaa !9
  %596 = add nsw i32 %595, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %594, i32 noundef %596)
  %597 = load ptr, ptr %43, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %597, i32 0, i32 4
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %598, i32 noundef 0)
  %599 = load ptr, ptr %43, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %599, i32 0, i32 6
  store i8 0, ptr %600, align 8, !tbaa !109
  %601 = load ptr, ptr %43, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %601, i32 0, i32 3
  %603 = getelementptr inbounds %struct.ImVector.5, ptr %602, i32 0, i32 2
  %604 = load ptr, ptr %603, align 8, !tbaa !110
  %605 = load i32, ptr %13, align 4, !tbaa !9
  %606 = load ptr, ptr %12, align 8, !tbaa !5
  %607 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %604, i32 noundef %605, ptr noundef %606, ptr noundef null, ptr noundef %58)
  %608 = load ptr, ptr %43, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %608, i32 0, i32 1
  store i32 %607, ptr %609, align 4, !tbaa !111
  %610 = load ptr, ptr %58, align 8, !tbaa !5
  %611 = load ptr, ptr %12, align 8, !tbaa !5
  %612 = ptrtoint ptr %610 to i64
  %613 = ptrtoint ptr %611 to i64
  %614 = sub i64 %612, %613
  %615 = trunc i64 %614 to i32
  %616 = load ptr, ptr %43, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %616, i32 0, i32 2
  store i32 %615, ptr %617, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #14
  %618 = load ptr, ptr %43, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %618, i32 0, i32 0
  %620 = load i32, ptr %619, align 8, !tbaa !113
  %621 = load i32, ptr %29, align 4, !tbaa !9
  %622 = icmp eq i32 %620, %621
  br i1 %622, label %623, label %627

623:                                              ; preds = %574
  %624 = load i8, ptr %54, align 1, !tbaa !43, !range !41, !noundef !42
  %625 = trunc i8 %624 to i1
  %626 = xor i1 %625, true
  br label %627

627:                                              ; preds = %623, %574
  %628 = phi i1 [ false, %574 ], [ %626, %623 ]
  %629 = zext i1 %628 to i8
  store i8 %629, ptr %59, align 1, !tbaa !43
  %630 = load i8, ptr %59, align 1, !tbaa !43, !range !41, !noundef !42
  %631 = trunc i8 %630 to i1
  br i1 %631, label %632, label %634

632:                                              ; preds = %627
  %633 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3736) %633)
  br label %653

634:                                              ; preds = %627
  %635 = load i32, ptr %29, align 4, !tbaa !9
  %636 = load ptr, ptr %43, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %636, i32 0, i32 0
  store i32 %635, ptr %637, align 8, !tbaa !113
  %638 = load ptr, ptr %43, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %638, i32 0, i32 8
  store float 0.000000e+00, ptr %639, align 8, !tbaa !114
  %640 = load ptr, ptr %43, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %640, i32 0, i32 9
  %642 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %643 = trunc i8 %642 to i1
  %644 = xor i1 %643, true
  %645 = zext i1 %644 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %641, i32 noundef %645)
  %646 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %647 = trunc i8 %646 to i1
  br i1 %647, label %652, label %648

648:                                              ; preds = %634
  %649 = load i8, ptr %45, align 1, !tbaa !43, !range !41, !noundef !42
  %650 = trunc i8 %649 to i1
  br i1 %650, label %651, label %652

651:                                              ; preds = %648
  store i8 1, ptr %52, align 1, !tbaa !43
  br label %652

652:                                              ; preds = %651, %648, %634
  br label %653

653:                                              ; preds = %652, %632
  %654 = load i32, ptr %15, align 4, !tbaa !9
  %655 = and i32 %654, 8192
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %657, label %661

657:                                              ; preds = %653
  %658 = load ptr, ptr %43, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %658, i32 0, i32 9
  %660 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %659, i32 0, i32 3
  store i8 1, ptr %660, align 4, !tbaa !115
  br label %661

661:                                              ; preds = %657, %653
  %662 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %663 = trunc i8 %662 to i1
  br i1 %663, label %676, label %664

664:                                              ; preds = %661
  %665 = load i8, ptr %46, align 1, !tbaa !43, !range !41, !noundef !42
  %666 = trunc i8 %665 to i1
  br i1 %666, label %675, label %667

667:                                              ; preds = %664
  %668 = load i8, ptr %47, align 1, !tbaa !43, !range !41, !noundef !42
  %669 = trunc i8 %668 to i1
  br i1 %669, label %670, label %676

670:                                              ; preds = %667
  %671 = load ptr, ptr %21, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiIO, ptr %671, i32 0, i32 40
  %673 = load i8, ptr %672, align 8, !tbaa !116, !range !41, !noundef !42
  %674 = trunc i8 %673 to i1
  br i1 %674, label %675, label %676

675:                                              ; preds = %670, %664
  store i8 1, ptr %52, align 1, !tbaa !43
  br label %676

676:                                              ; preds = %675, %670, %667, %661
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #14
  br label %677

677:                                              ; preds = %676, %571
  %678 = load ptr, ptr %20, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct.ImGuiContext, ptr %678, i32 0, i32 45
  %680 = load i32, ptr %679, align 8, !tbaa !101
  %681 = load i32, ptr %29, align 4, !tbaa !9
  %682 = icmp ne i32 %680, %681
  br i1 %682, label %683, label %747

683:                                              ; preds = %677
  %684 = load i8, ptr %55, align 1, !tbaa !43, !range !41, !noundef !42
  %685 = trunc i8 %684 to i1
  br i1 %685, label %686, label %747

686:                                              ; preds = %683
  %687 = load ptr, ptr %43, align 8, !tbaa !5
  %688 = icmp ne ptr %687, null
  br i1 %688, label %689, label %695

689:                                              ; preds = %686
  %690 = load ptr, ptr %43, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %690, i32 0, i32 0
  %692 = load i32, ptr %691, align 8, !tbaa !113
  %693 = load i32, ptr %29, align 4, !tbaa !9
  %694 = icmp eq i32 %692, %693
  br label %695

695:                                              ; preds = %689, %686
  %696 = phi i1 [ false, %686 ], [ %694, %689 ]
  br i1 %696, label %697, label %698

697:                                              ; preds = %695
  br label %700

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

699:                                              ; No predecessors!
  br label %700

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

712:                                              ; preds = %700
  %713 = load i32, ptr %15, align 4, !tbaa !9
  %714 = and i32 %713, 128
  %715 = icmp ne i32 %714, 0
  br i1 %715, label %716, label %721

716:                                              ; preds = %712, %700
  %717 = load ptr, ptr %20, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.ImGuiContext, ptr %717, i32 0, i32 56
  %719 = load i32, ptr %718, align 4, !tbaa !117
  %720 = or i32 %719, 12
  store i32 %720, ptr %718, align 4, !tbaa !117
  br label %721

721:                                              ; preds = %716, %712
  %722 = load ptr, ptr %20, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.ImGuiContext, ptr %722, i32 0, i32 57
  %724 = load i32, ptr %723, align 8, !tbaa !118
  %725 = or i32 %724, 2
  store i32 %725, ptr %723, align 8, !tbaa !118
  %726 = load ptr, ptr %20, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.ImGuiContext, ptr %726, i32 0, i32 59
  %728 = load i64, ptr %727, align 8, !tbaa !119
  %729 = or i64 %728, 384
  store i64 %729, ptr %727, align 8, !tbaa !119
  %730 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %731 = trunc i8 %730 to i1
  br i1 %731, label %732, label %737

732:                                              ; preds = %721
  %733 = load ptr, ptr %20, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.ImGuiContext, ptr %733, i32 0, i32 59
  %735 = load i64, ptr %734, align 8, !tbaa !119
  %736 = or i64 %735, 96
  store i64 %736, ptr %734, align 8, !tbaa !119
  br label %737

737:                                              ; preds = %732, %721
  %738 = load i32, ptr %15, align 4, !tbaa !9
  %739 = and i32 %738, 1088
  %740 = icmp ne i32 %739, 0
  br i1 %740, label %741, label %746

741:                                              ; preds = %737
  %742 = load ptr, ptr %20, align 8, !tbaa !5
  %743 = getelementptr inbounds %struct.ImGuiContext, ptr %742, i32 0, i32 59
  %744 = load i64, ptr %743, align 8, !tbaa !119
  %745 = or i64 %744, 1
  store i64 %745, ptr %743, align 8, !tbaa !119
  br label %746

746:                                              ; preds = %741, %737
  br label %747

747:                                              ; preds = %746, %683, %677
  %748 = load ptr, ptr %20, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.ImGuiContext, ptr %748, i32 0, i32 45
  %750 = load i32, ptr %749, align 8, !tbaa !101
  %751 = load i32, ptr %29, align 4, !tbaa !9
  %752 = icmp eq i32 %750, %751
  br i1 %752, label %753, label %757

753:                                              ; preds = %747
  %754 = load ptr, ptr %43, align 8, !tbaa !5
  %755 = icmp eq ptr %754, null
  br i1 %755, label %756, label %757

756:                                              ; preds = %753
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %757

757:                                              ; preds = %756, %753, %747
  %758 = load ptr, ptr %20, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.ImGuiContext, ptr %758, i32 0, i32 45
  %760 = load i32, ptr %759, align 8, !tbaa !101
  %761 = load i32, ptr %29, align 4, !tbaa !9
  %762 = icmp eq i32 %760, %761
  br i1 %762, label %763, label %776

763:                                              ; preds = %757
  %764 = load ptr, ptr %21, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.ImGuiIO, ptr %764, i32 0, i32 64
  %766 = getelementptr inbounds [5 x i8], ptr %765, i64 0, i64 0
  %767 = load i8, ptr %766, align 8, !tbaa !43, !range !41, !noundef !42
  %768 = trunc i8 %767 to i1
  br i1 %768, label %769, label %776

769:                                              ; preds = %763
  %770 = load i8, ptr %56, align 1, !tbaa !43, !range !41, !noundef !42
  %771 = trunc i8 %770 to i1
  br i1 %771, label %776, label %772

772:                                              ; preds = %769
  %773 = load i8, ptr %55, align 1, !tbaa !43, !range !41, !noundef !42
  %774 = trunc i8 %773 to i1
  br i1 %774, label %776, label %775

775:                                              ; preds = %772
  store i8 1, ptr %51, align 1, !tbaa !43
  br label %776

776:                                              ; preds = %775, %772, %769, %763, %757
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #14
  %777 = load ptr, ptr %20, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.ImGuiContext, ptr %777, i32 0, i32 45
  %779 = load i32, ptr %778, align 8, !tbaa !101
  %780 = load i32, ptr %29, align 4, !tbaa !9
  %781 = icmp eq i32 %779, %780
  br i1 %781, label %790, label %782

782:                                              ; preds = %776
  %783 = load ptr, ptr %43, align 8, !tbaa !5
  %784 = icmp ne ptr %783, null
  br i1 %784, label %785, label %788

785:                                              ; preds = %782
  %786 = load i8, ptr %50, align 1, !tbaa !43, !range !41, !noundef !42
  %787 = trunc i8 %786 to i1
  br label %788

788:                                              ; preds = %785, %782
  %789 = phi i1 [ false, %782 ], [ %787, %785 ]
  br label %790

790:                                              ; preds = %788, %776
  %791 = phi i1 [ true, %776 ], [ %789, %788 ]
  %792 = zext i1 %791 to i8
  store i8 %792, ptr %60, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #14
  %793 = load ptr, ptr %43, align 8, !tbaa !5
  %794 = icmp ne ptr %793, null
  br i1 %794, label %795, label %801

795:                                              ; preds = %790
  %796 = load ptr, ptr %43, align 8, !tbaa !5
  %797 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %796)
  br i1 %797, label %798, label %801

798:                                              ; preds = %795
  %799 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %800 = trunc i8 %799 to i1
  br label %801

801:                                              ; preds = %798, %795, %790
  %802 = phi i1 [ false, %795 ], [ false, %790 ], [ %800, %798 ]
  %803 = zext i1 %802 to i8
  store i8 %803, ptr %61, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #14
  store i8 0, ptr %62, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  store i8 0, ptr %63, align 1, !tbaa !43
  %804 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %805 = trunc i8 %804 to i1
  br i1 %805, label %806, label %850

806:                                              ; preds = %801
  %807 = load ptr, ptr %43, align 8, !tbaa !5
  %808 = icmp ne ptr %807, null
  br i1 %808, label %809, label %850

809:                                              ; preds = %806
  %810 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %811 = trunc i8 %810 to i1
  br i1 %811, label %815, label %812

812:                                              ; preds = %809
  %813 = load i8, ptr %61, align 1, !tbaa !43, !range !41, !noundef !42
  %814 = trunc i8 %813 to i1
  br i1 %814, label %815, label %850

815:                                              ; preds = %812, %809
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #14
  store ptr null, ptr %64, align 8, !tbaa !5
  %816 = load ptr, ptr %43, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %816, i32 0, i32 3
  %818 = load i32, ptr %13, align 4, !tbaa !9
  %819 = add nsw i32 %818, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %817, i32 noundef %819)
  %820 = load ptr, ptr %43, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %820, i32 0, i32 3
  %822 = getelementptr inbounds %struct.ImVector.5, ptr %821, i32 0, i32 2
  %823 = load ptr, ptr %822, align 8, !tbaa !110
  %824 = load ptr, ptr %43, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %824, i32 0, i32 3
  %826 = getelementptr inbounds %struct.ImVector.5, ptr %825, i32 0, i32 0
  %827 = load i32, ptr %826, align 8, !tbaa !120
  %828 = load ptr, ptr %12, align 8, !tbaa !5
  %829 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %823, i32 noundef %827, ptr noundef %828, ptr noundef null, ptr noundef %64)
  %830 = load ptr, ptr %43, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %830, i32 0, i32 1
  store i32 %829, ptr %831, align 4, !tbaa !111
  %832 = load ptr, ptr %64, align 8, !tbaa !5
  %833 = load ptr, ptr %12, align 8, !tbaa !5
  %834 = ptrtoint ptr %832 to i64
  %835 = ptrtoint ptr %833 to i64
  %836 = sub i64 %834, %835
  %837 = trunc i64 %836 to i32
  %838 = load ptr, ptr %43, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %838, i32 0, i32 2
  store i32 %837, ptr %839, align 8, !tbaa !112
  %840 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3736) %840)
  %841 = load ptr, ptr %43, align 8, !tbaa !5
  %842 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %841)
  %843 = zext i1 %842 to i32
  %844 = load i8, ptr %61, align 1, !tbaa !43, !range !41, !noundef !42
  %845 = trunc i8 %844 to i1
  %846 = zext i1 %845 to i32
  %847 = and i32 %846, %843
  %848 = icmp ne i32 %847, 0
  %849 = zext i1 %848 to i8
  store i8 %849, ptr %61, align 1, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #14
  br label %850

850:                                              ; preds = %815, %812, %806, %801
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #14
  %851 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %852 = trunc i8 %851 to i1
  br i1 %852, label %862, label %853

853:                                              ; preds = %850
  %854 = load i8, ptr %61, align 1, !tbaa !43, !range !41, !noundef !42
  %855 = trunc i8 %854 to i1
  br i1 %855, label %862, label %856

856:                                              ; preds = %853
  %857 = load ptr, ptr %20, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.ImGuiContext, ptr %857, i32 0, i32 45
  %859 = load i32, ptr %858, align 8, !tbaa !101
  %860 = load i32, ptr %29, align 4, !tbaa !9
  %861 = icmp eq i32 %859, %860
  br i1 %861, label %862, label %873

862:                                              ; preds = %856, %853, %850
  %863 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %864 = trunc i8 %863 to i1
  br i1 %864, label %873, label %865

865:                                              ; preds = %862
  %866 = load ptr, ptr %43, align 8, !tbaa !5
  %867 = icmp ne ptr %866, null
  br i1 %867, label %868, label %873

868:                                              ; preds = %865
  %869 = load ptr, ptr %43, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %869, i32 0, i32 6
  %871 = load i8, ptr %870, align 8, !tbaa !109, !range !41, !noundef !42
  %872 = trunc i8 %871 to i1
  br label %873

873:                                              ; preds = %868, %865, %862, %856
  %874 = phi i1 [ false, %865 ], [ false, %862 ], [ false, %856 ], [ %872, %868 ]
  %875 = zext i1 %874 to i8
  store i8 %875, ptr %65, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #14
  %876 = load ptr, ptr %11, align 8, !tbaa !5
  %877 = icmp ne ptr %876, null
  br i1 %877, label %878, label %894

878:                                              ; preds = %873
  %879 = load i8, ptr %65, align 1, !tbaa !43, !range !41, !noundef !42
  %880 = trunc i8 %879 to i1
  br i1 %880, label %881, label %886

881:                                              ; preds = %878
  %882 = load ptr, ptr %43, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %882, i32 0, i32 4
  %884 = getelementptr inbounds %struct.ImVector.25, ptr %883, i32 0, i32 2
  %885 = load ptr, ptr %884, align 8, !tbaa !121
  br label %888

886:                                              ; preds = %878
  %887 = load ptr, ptr %12, align 8, !tbaa !5
  br label %888

888:                                              ; preds = %886, %881
  %889 = phi ptr [ %885, %881 ], [ %887, %886 ]
  %890 = getelementptr inbounds i8, ptr %889, i64 0
  %891 = load i8, ptr %890, align 1, !tbaa !122
  %892 = sext i8 %891 to i32
  %893 = icmp eq i32 %892, 0
  br label %894

894:                                              ; preds = %888, %873
  %895 = phi i1 [ false, %873 ], [ %893, %888 ]
  %896 = zext i1 %895 to i8
  store i8 %896, ptr %66, align 1, !tbaa !43
  %897 = load i8, ptr %26, align 1, !tbaa !43, !range !41, !noundef !42
  %898 = trunc i8 %897 to i1
  br i1 %898, label %899, label %970

899:                                              ; preds = %894
  %900 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %901 = trunc i8 %900 to i1
  br i1 %901, label %970, label %902

902:                                              ; preds = %899
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #14
  %903 = load ptr, ptr %20, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.ImGuiContext, ptr %903, i32 0, i32 6
  %905 = load ptr, ptr %904, align 8, !tbaa !123
  %906 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(106) %905, i16 noundef zeroext 42)
  store ptr %906, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #14
  %907 = load ptr, ptr %20, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.ImGuiContext, ptr %907, i32 0, i32 177
  store ptr %908, ptr %68, align 8, !tbaa !5
  %909 = load ptr, ptr %20, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.ImGuiContext, ptr %909, i32 0, i32 6
  %911 = load ptr, ptr %910, align 8, !tbaa !123
  %912 = getelementptr inbounds %struct.ImFont, ptr %911, i32 0, i32 2
  %913 = load float, ptr %912, align 4, !tbaa !124
  %914 = load ptr, ptr %68, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.ImFont, ptr %914, i32 0, i32 2
  store float %913, ptr %915, align 4, !tbaa !124
  %916 = load ptr, ptr %20, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.ImGuiContext, ptr %916, i32 0, i32 6
  %918 = load ptr, ptr %917, align 8, !tbaa !123
  %919 = getelementptr inbounds %struct.ImFont, ptr %918, i32 0, i32 13
  %920 = load float, ptr %919, align 8, !tbaa !125
  %921 = load ptr, ptr %68, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.ImFont, ptr %921, i32 0, i32 13
  store float %920, ptr %922, align 8, !tbaa !125
  %923 = load ptr, ptr %20, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.ImGuiContext, ptr %923, i32 0, i32 6
  %925 = load ptr, ptr %924, align 8, !tbaa !123
  %926 = getelementptr inbounds %struct.ImFont, ptr %925, i32 0, i32 14
  %927 = load float, ptr %926, align 4, !tbaa !126
  %928 = load ptr, ptr %68, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.ImFont, ptr %928, i32 0, i32 14
  store float %927, ptr %929, align 4, !tbaa !126
  %930 = load ptr, ptr %20, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.ImGuiContext, ptr %930, i32 0, i32 6
  %932 = load ptr, ptr %931, align 8, !tbaa !123
  %933 = getelementptr inbounds %struct.ImFont, ptr %932, i32 0, i32 15
  %934 = load float, ptr %933, align 8, !tbaa !127
  %935 = load ptr, ptr %68, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.ImFont, ptr %935, i32 0, i32 15
  store float %934, ptr %936, align 8, !tbaa !127
  %937 = load ptr, ptr %20, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.ImGuiContext, ptr %937, i32 0, i32 6
  %939 = load ptr, ptr %938, align 8, !tbaa !123
  %940 = getelementptr inbounds %struct.ImFont, ptr %939, i32 0, i32 6
  %941 = load ptr, ptr %940, align 8, !tbaa !128
  %942 = load ptr, ptr %68, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.ImFont, ptr %942, i32 0, i32 6
  store ptr %941, ptr %943, align 8, !tbaa !128
  %944 = load ptr, ptr %67, align 8, !tbaa !5
  %945 = load ptr, ptr %68, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.ImFont, ptr %945, i32 0, i32 5
  store ptr %944, ptr %946, align 8, !tbaa !129
  %947 = load ptr, ptr %67, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ImFontGlyph, ptr %947, i32 0, i32 1
  %949 = load float, ptr %948, align 4, !tbaa !130
  %950 = load ptr, ptr %68, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ImFont, ptr %950, i32 0, i32 1
  store float %949, ptr %951, align 8, !tbaa !132
  %952 = load ptr, ptr %68, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.ImFont, ptr %952, i32 0, i32 4
  %954 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %953)
  br i1 %954, label %955, label %963

955:                                              ; preds = %902
  %956 = load ptr, ptr %68, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.ImFont, ptr %956, i32 0, i32 0
  %958 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %957)
  br i1 %958, label %959, label %963

959:                                              ; preds = %955
  %960 = load ptr, ptr %68, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.ImFont, ptr %960, i32 0, i32 3
  %962 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %961)
  br label %963

963:                                              ; preds = %959, %955, %902
  %964 = phi i1 [ false, %955 ], [ false, %902 ], [ %962, %959 ]
  br i1 %964, label %965, label %966

965:                                              ; preds = %963
  br label %968

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

967:                                              ; No predecessors!
  br label %968

968:                                              ; preds = %967, %965
  %969 = load ptr, ptr %68, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %969)
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #14
  br label %970

970:                                              ; preds = %968, %899, %894
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #14
  store i32 0, ptr %69, align 4, !tbaa !9
  %971 = load ptr, ptr %20, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.ImGuiContext, ptr %971, i32 0, i32 45
  %973 = load i32, ptr %972, align 8, !tbaa !101
  %974 = load i32, ptr %29, align 4, !tbaa !9
  %975 = icmp eq i32 %973, %974
  br i1 %975, label %976, label %1275

976:                                              ; preds = %970
  %977 = load ptr, ptr %43, align 8, !tbaa !5
  %978 = icmp ne ptr %977, null
  br i1 %978, label %979, label %980

979:                                              ; preds = %976
  br label %982

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

981:                                              ; No predecessors!
  br label %982

982:                                              ; preds = %981, %979
  %983 = load ptr, ptr %43, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %983, i32 0, i32 2
  %985 = load i32, ptr %984, align 8, !tbaa !112
  store i32 %985, ptr %69, align 4, !tbaa !9
  %986 = load ptr, ptr %43, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %986, i32 0, i32 13
  store i8 0, ptr %987, align 2, !tbaa !133
  %988 = load i32, ptr %13, align 4, !tbaa !9
  %989 = load ptr, ptr %43, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %989, i32 0, i32 7
  store i32 %988, ptr %990, align 4, !tbaa !134
  %991 = load i32, ptr %15, align 4, !tbaa !9
  %992 = load ptr, ptr %43, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %992, i32 0, i32 14
  store i32 %991, ptr %993, align 8, !tbaa !135
  %994 = load ptr, ptr %16, align 8, !tbaa !5
  %995 = load ptr, ptr %43, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %995, i32 0, i32 15
  store ptr %994, ptr %996, align 8, !tbaa !136
  %997 = load ptr, ptr %17, align 8, !tbaa !5
  %998 = load ptr, ptr %43, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %998, i32 0, i32 16
  store ptr %997, ptr %999, align 8, !tbaa !137
  %1000 = load ptr, ptr %21, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.ImGuiIO, ptr %1000, i32 0, i32 37
  %1002 = getelementptr inbounds [5 x i8], ptr %1001, i64 0, i64 0
  %1003 = load i8, ptr %1002, align 8, !tbaa !43, !range !41, !noundef !42
  %1004 = trunc i8 %1003 to i1
  %1005 = xor i1 %1004, true
  %1006 = load ptr, ptr %20, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiContext, ptr %1006, i32 0, i32 49
  %1008 = zext i1 %1005 to i8
  store i8 %1008, ptr %1007, align 1, !tbaa !138
  %1009 = load ptr, ptr %20, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.ImGuiContext, ptr %1009, i32 0, i32 226
  store i32 1, ptr %1010, align 4, !tbaa !139
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #14
  %1011 = load ptr, ptr %21, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.ImGuiIO, ptr %1011, i32 0, i32 36
  %1013 = getelementptr inbounds %struct.ImVec2, ptr %1012, i32 0, i32 0
  %1014 = load float, ptr %1013, align 8, !tbaa !140
  %1015 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %1016 = getelementptr inbounds %struct.ImVec2, ptr %1015, i32 0, i32 0
  %1017 = load float, ptr %1016, align 4, !tbaa !141
  %1018 = fsub float %1014, %1017
  %1019 = load ptr, ptr %22, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.ImGuiStyle, ptr %1019, i32 0, i32 11
  %1021 = getelementptr inbounds %struct.ImVec2, ptr %1020, i32 0, i32 0
  %1022 = load float, ptr %1021, align 4, !tbaa !142
  %1023 = fsub float %1018, %1022
  %1024 = load ptr, ptr %43, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1024, i32 0, i32 8
  %1026 = load float, ptr %1025, align 8, !tbaa !114
  %1027 = fadd float %1023, %1026
  store float %1027, ptr %70, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #14
  %1028 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %1029 = trunc i8 %1028 to i1
  br i1 %1029, label %1030, label %1046

1030:                                             ; preds = %982
  %1031 = load ptr, ptr %21, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.ImGuiIO, ptr %1031, i32 0, i32 36
  %1033 = getelementptr inbounds %struct.ImVec2, ptr %1032, i32 0, i32 1
  %1034 = load float, ptr %1033, align 4, !tbaa !143
  %1035 = load ptr, ptr %38, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.ImGuiWindow, ptr %1035, i32 0, i32 53
  %1037 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1036, i32 0, i32 0
  %1038 = getelementptr inbounds %struct.ImVec2, ptr %1037, i32 0, i32 1
  %1039 = load float, ptr %1038, align 4, !tbaa !144
  %1040 = fsub float %1034, %1039
  %1041 = load ptr, ptr %22, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.ImGuiStyle, ptr %1041, i32 0, i32 11
  %1043 = getelementptr inbounds %struct.ImVec2, ptr %1042, i32 0, i32 1
  %1044 = load float, ptr %1043, align 4, !tbaa !88
  %1045 = fsub float %1040, %1044
  br label %1051

1046:                                             ; preds = %982
  %1047 = load ptr, ptr %20, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.ImGuiContext, ptr %1047, i32 0, i32 7
  %1049 = load float, ptr %1048, align 8, !tbaa !46
  %1050 = fmul float %1049, 5.000000e-01
  br label %1051

1051:                                             ; preds = %1046, %1030
  %1052 = phi float [ %1045, %1030 ], [ %1050, %1046 ]
  store float %1052, ptr %71, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #14
  %1053 = load ptr, ptr %21, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.ImGuiIO, ptr %1053, i32 0, i32 20
  %1055 = load i8, ptr %1054, align 1, !tbaa !145, !range !41, !noundef !42
  %1056 = trunc i8 %1055 to i1
  %1057 = zext i1 %1056 to i8
  store i8 %1057, ptr %72, align 1, !tbaa !43
  %1058 = load i8, ptr %52, align 1, !tbaa !43, !range !41, !noundef !42
  %1059 = trunc i8 %1058 to i1
  br i1 %1059, label %1072, label %1060

1060:                                             ; preds = %1051
  %1061 = load i8, ptr %42, align 1, !tbaa !43, !range !41, !noundef !42
  %1062 = trunc i8 %1061 to i1
  br i1 %1062, label %1063, label %1076

1063:                                             ; preds = %1060
  %1064 = load i8, ptr %72, align 1, !tbaa !43, !range !41, !noundef !42
  %1065 = trunc i8 %1064 to i1
  br i1 %1065, label %1076, label %1066

1066:                                             ; preds = %1063
  %1067 = load ptr, ptr %21, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiIO, ptr %1067, i32 0, i32 65
  %1069 = getelementptr inbounds [5 x i8], ptr %1068, i64 0, i64 0
  %1070 = load i8, ptr %1069, align 1, !tbaa !43, !range !41, !noundef !42
  %1071 = trunc i8 %1070 to i1
  br i1 %1071, label %1072, label %1076

1072:                                             ; preds = %1066, %1051
  %1073 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %1073)
  %1074 = load ptr, ptr %43, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1074, i32 0, i32 12
  store i8 1, ptr %1075, align 1, !tbaa !146
  br label %1148

1076:                                             ; preds = %1066, %1063, %1060
  %1077 = load i8, ptr %42, align 1, !tbaa !43, !range !41, !noundef !42
  %1078 = trunc i8 %1077 to i1
  br i1 %1078, label %1079, label %1091

1079:                                             ; preds = %1076
  %1080 = load i8, ptr %72, align 1, !tbaa !43, !range !41, !noundef !42
  %1081 = trunc i8 %1080 to i1
  br i1 %1081, label %1082, label %1091

1082:                                             ; preds = %1079
  %1083 = load ptr, ptr %21, align 8, !tbaa !5
  %1084 = getelementptr inbounds %struct.ImGuiIO, ptr %1083, i32 0, i32 65
  %1085 = getelementptr inbounds [5 x i8], ptr %1084, i64 0, i64 0
  %1086 = load i8, ptr %1085, align 1, !tbaa !43, !range !41, !noundef !42
  %1087 = trunc i8 %1086 to i1
  br i1 %1087, label %1088, label %1091

1088:                                             ; preds = %1082
  %1089 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1089, i32 noundef 2097164)
  %1090 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1090, i32 noundef 6291469)
  br label %1147

1091:                                             ; preds = %1082, %1079, %1076
  %1092 = load ptr, ptr %21, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.ImGuiIO, ptr %1092, i32 0, i32 64
  %1094 = getelementptr inbounds [5 x i8], ptr %1093, i64 0, i64 0
  %1095 = load i8, ptr %1094, align 8, !tbaa !43, !range !41, !noundef !42
  %1096 = trunc i8 %1095 to i1
  br i1 %1096, label %1097, label %1113

1097:                                             ; preds = %1091
  %1098 = load ptr, ptr %43, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1098, i32 0, i32 12
  %1100 = load i8, ptr %1099, align 1, !tbaa !146, !range !41, !noundef !42
  %1101 = trunc i8 %1100 to i1
  br i1 %1101, label %1113, label %1102

1102:                                             ; preds = %1097
  %1103 = load i8, ptr %42, align 1, !tbaa !43, !range !41, !noundef !42
  %1104 = trunc i8 %1103 to i1
  br i1 %1104, label %1105, label %1112

1105:                                             ; preds = %1102
  %1106 = load ptr, ptr %43, align 8, !tbaa !5
  %1107 = load ptr, ptr %43, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1107, i32 0, i32 9
  %1109 = load float, ptr %70, align 4, !tbaa !45
  %1110 = load float, ptr %71, align 4, !tbaa !45
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1106, ptr noundef %1108, float noundef %1109, float noundef %1110)
  %1111 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %1111)
  br label %1112

1112:                                             ; preds = %1105, %1102
  br label %1146

1113:                                             ; preds = %1097, %1091
  %1114 = load ptr, ptr %21, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.ImGuiIO, ptr %1114, i32 0, i32 37
  %1116 = getelementptr inbounds [5 x i8], ptr %1115, i64 0, i64 0
  %1117 = load i8, ptr %1116, align 8, !tbaa !43, !range !41, !noundef !42
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1119, label %1145

1119:                                             ; preds = %1113
  %1120 = load ptr, ptr %43, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1120, i32 0, i32 12
  %1122 = load i8, ptr %1121, align 1, !tbaa !146, !range !41, !noundef !42
  %1123 = trunc i8 %1122 to i1
  br i1 %1123, label %1145, label %1124

1124:                                             ; preds = %1119
  %1125 = load ptr, ptr %21, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.ImGuiIO, ptr %1125, i32 0, i32 59
  %1127 = getelementptr inbounds %struct.ImVec2, ptr %1126, i32 0, i32 0
  %1128 = load float, ptr %1127, align 8, !tbaa !147
  %1129 = fcmp une float %1128, 0.000000e+00
  br i1 %1129, label %1136, label %1130

1130:                                             ; preds = %1124
  %1131 = load ptr, ptr %21, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.ImGuiIO, ptr %1131, i32 0, i32 59
  %1133 = getelementptr inbounds %struct.ImVec2, ptr %1132, i32 0, i32 1
  %1134 = load float, ptr %1133, align 4, !tbaa !148
  %1135 = fcmp une float %1134, 0.000000e+00
  br i1 %1135, label %1136, label %1145

1136:                                             ; preds = %1130, %1124
  %1137 = load ptr, ptr %43, align 8, !tbaa !5
  %1138 = load ptr, ptr %43, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1138, i32 0, i32 9
  %1140 = load float, ptr %70, align 4, !tbaa !45
  %1141 = load float, ptr %71, align 4, !tbaa !45
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1137, ptr noundef %1139, float noundef %1140, float noundef %1141)
  %1142 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %1142)
  %1143 = load ptr, ptr %43, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1143, i32 0, i32 11
  store i8 1, ptr %1144, align 4, !tbaa !149
  br label %1145

1145:                                             ; preds = %1136, %1130, %1119, %1113
  br label %1146

1146:                                             ; preds = %1145, %1112
  br label %1147

1147:                                             ; preds = %1146, %1088
  br label %1148

1148:                                             ; preds = %1147, %1072
  %1149 = load ptr, ptr %43, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1149, i32 0, i32 12
  %1151 = load i8, ptr %1150, align 1, !tbaa !146, !range !41, !noundef !42
  %1152 = trunc i8 %1151 to i1
  br i1 %1152, label %1153, label %1162

1153:                                             ; preds = %1148
  %1154 = load ptr, ptr %21, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.ImGuiIO, ptr %1154, i32 0, i32 37
  %1156 = getelementptr inbounds [5 x i8], ptr %1155, i64 0, i64 0
  %1157 = load i8, ptr %1156, align 8, !tbaa !43, !range !41, !noundef !42
  %1158 = trunc i8 %1157 to i1
  br i1 %1158, label %1162, label %1159

1159:                                             ; preds = %1153
  %1160 = load ptr, ptr %43, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1160, i32 0, i32 12
  store i8 0, ptr %1161, align 1, !tbaa !146
  br label %1162

1162:                                             ; preds = %1159, %1153, %1148
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #14
  %1163 = load ptr, ptr %21, align 8, !tbaa !5
  %1164 = getelementptr inbounds %struct.ImGuiIO, ptr %1163, i32 0, i32 40
  %1165 = load i8, ptr %1164, align 8, !tbaa !116, !range !41, !noundef !42
  %1166 = trunc i8 %1165 to i1
  br i1 %1166, label %1167, label %1172

1167:                                             ; preds = %1162
  %1168 = load ptr, ptr %21, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImGuiIO, ptr %1168, i32 0, i32 42
  %1170 = load i8, ptr %1169, align 2, !tbaa !150, !range !41, !noundef !42
  %1171 = trunc i8 %1170 to i1
  br i1 %1171, label %1172, label %1182

1172:                                             ; preds = %1167, %1162
  %1173 = load i8, ptr %72, align 1, !tbaa !43, !range !41, !noundef !42
  %1174 = trunc i8 %1173 to i1
  br i1 %1174, label %1175, label %1180

1175:                                             ; preds = %1172
  %1176 = load ptr, ptr %21, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.ImGuiIO, ptr %1176, i32 0, i32 43
  %1178 = load i8, ptr %1177, align 1, !tbaa !151, !range !41, !noundef !42
  %1179 = trunc i8 %1178 to i1
  br label %1180

1180:                                             ; preds = %1175, %1172
  %1181 = phi i1 [ false, %1172 ], [ %1179, %1175 ]
  br label %1182

1182:                                             ; preds = %1180, %1167
  %1183 = phi i1 [ true, %1167 ], [ %1181, %1180 ]
  %1184 = zext i1 %1183 to i8
  store i8 %1184, ptr %73, align 1, !tbaa !43
  %1185 = load i32, ptr %15, align 4, !tbaa !9
  %1186 = and i32 %1185, 1024
  %1187 = icmp ne i32 %1186, 0
  br i1 %1187, label %1188, label %1216

1188:                                             ; preds = %1182
  %1189 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1189, label %1190, label %1216

1190:                                             ; preds = %1188
  %1191 = load i8, ptr %73, align 1, !tbaa !43, !range !41, !noundef !42
  %1192 = trunc i8 %1191 to i1
  br i1 %1192, label %1216, label %1193

1193:                                             ; preds = %1190
  %1194 = load ptr, ptr %21, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.ImGuiIO, ptr %1194, i32 0, i32 41
  %1196 = load i8, ptr %1195, align 1, !tbaa !152, !range !41, !noundef !42
  %1197 = trunc i8 %1196 to i1
  br i1 %1197, label %1216, label %1198

1198:                                             ; preds = %1193
  %1199 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1200 = trunc i8 %1199 to i1
  br i1 %1200, label %1216, label %1201

1201:                                             ; preds = %1198
  %1202 = load ptr, ptr %21, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.ImGuiIO, ptr %1202, i32 0, i32 79
  call void @llvm.lifetime.start.p0(i64 2, ptr %74) #14
  store i16 9, ptr %74, align 2, !tbaa !153
  %1204 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %1203, ptr noundef nonnull align 2 dereferenceable(2) %74)
  %1205 = xor i1 %1204, true
  call void @llvm.lifetime.end.p0(i64 2, ptr %74) #14
  br i1 %1205, label %1206, label %1215

1206:                                             ; preds = %1201
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  store i32 9, ptr %75, align 4, !tbaa !9
  %1207 = load i32, ptr %15, align 4, !tbaa !9
  %1208 = load ptr, ptr %16, align 8, !tbaa !5
  %1209 = load ptr, ptr %17, align 8, !tbaa !5
  %1210 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %75, i32 noundef %1207, ptr noundef %1208, ptr noundef %1209)
  br i1 %1210, label %1211, label %1214

1211:                                             ; preds = %1206
  %1212 = load ptr, ptr %43, align 8, !tbaa !5
  %1213 = load i32, ptr %75, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1212, i32 noundef %1213)
  br label %1214

1214:                                             ; preds = %1211, %1206
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  br label %1215

1215:                                             ; preds = %1214, %1201
  br label %1216

1216:                                             ; preds = %1215, %1198, %1193, %1190, %1188, %1182
  %1217 = load ptr, ptr %21, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct.ImGuiIO, ptr %1217, i32 0, i32 79
  %1219 = getelementptr inbounds %struct.ImVector.5, ptr %1218, i32 0, i32 0
  %1220 = load i32, ptr %1219, align 8, !tbaa !154
  %1221 = icmp sgt i32 %1220, 0
  br i1 %1221, label %1222, label %1274

1222:                                             ; preds = %1216
  %1223 = load i8, ptr %73, align 1, !tbaa !43, !range !41, !noundef !42
  %1224 = trunc i8 %1223 to i1
  br i1 %1224, label %1271, label %1225

1225:                                             ; preds = %1222
  %1226 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1227 = trunc i8 %1226 to i1
  br i1 %1227, label %1271, label %1228

1228:                                             ; preds = %1225
  %1229 = load i8, ptr %48, align 1, !tbaa !43, !range !41, !noundef !42
  %1230 = trunc i8 %1229 to i1
  br i1 %1230, label %1271, label %1231

1231:                                             ; preds = %1228
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #14
  store i32 0, ptr %76, align 4, !tbaa !9
  br label %1232

1232:                                             ; preds = %1267, %1231
  %1233 = load i32, ptr %76, align 4, !tbaa !9
  %1234 = load ptr, ptr %21, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.ImGuiIO, ptr %1234, i32 0, i32 79
  %1236 = getelementptr inbounds %struct.ImVector.5, ptr %1235, i32 0, i32 0
  %1237 = load i32, ptr %1236, align 8, !tbaa !154
  %1238 = icmp slt i32 %1233, %1237
  br i1 %1238, label %1240, label %1239

1239:                                             ; preds = %1232
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #14
  br label %1270

1240:                                             ; preds = %1232
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #14
  %1241 = load ptr, ptr %21, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.ImGuiIO, ptr %1241, i32 0, i32 79
  %1243 = load i32, ptr %76, align 4, !tbaa !9
  %1244 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1242, i32 noundef %1243)
  %1245 = load i16, ptr %1244, align 2, !tbaa !153
  %1246 = zext i16 %1245 to i32
  store i32 %1246, ptr %77, align 4, !tbaa !9
  %1247 = load i32, ptr %77, align 4, !tbaa !9
  %1248 = icmp eq i32 %1247, 9
  br i1 %1248, label %1249, label %1255

1249:                                             ; preds = %1240
  %1250 = load ptr, ptr %21, align 8, !tbaa !5
  %1251 = getelementptr inbounds %struct.ImGuiIO, ptr %1250, i32 0, i32 41
  %1252 = load i8, ptr %1251, align 1, !tbaa !152, !range !41, !noundef !42
  %1253 = trunc i8 %1252 to i1
  br i1 %1253, label %1254, label %1255

1254:                                             ; preds = %1249
  store i32 4, ptr %19, align 4
  br label %1264

1255:                                             ; preds = %1249, %1240
  %1256 = load i32, ptr %15, align 4, !tbaa !9
  %1257 = load ptr, ptr %16, align 8, !tbaa !5
  %1258 = load ptr, ptr %17, align 8, !tbaa !5
  %1259 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %77, i32 noundef %1256, ptr noundef %1257, ptr noundef %1258)
  br i1 %1259, label %1260, label %1263

1260:                                             ; preds = %1255
  %1261 = load ptr, ptr %43, align 8, !tbaa !5
  %1262 = load i32, ptr %77, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1261, i32 noundef %1262)
  br label %1263

1263:                                             ; preds = %1260, %1255
  store i32 0, ptr %19, align 4
  br label %1264

1264:                                             ; preds = %1263, %1254
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #14
  %1265 = load i32, ptr %19, align 4
  switch i32 %1265, label %3263 [
    i32 0, label %1266
    i32 4, label %1267
  ]

1266:                                             ; preds = %1264
  br label %1267

1267:                                             ; preds = %1266, %1264
  %1268 = load i32, ptr %76, align 4, !tbaa !9
  %1269 = add nsw i32 %1268, 1
  store i32 %1269, ptr %76, align 4, !tbaa !9
  br label %1232, !llvm.loop !155

1270:                                             ; preds = %1239
  br label %1271

1271:                                             ; preds = %1270, %1228, %1225, %1222
  %1272 = load ptr, ptr %21, align 8, !tbaa !5
  %1273 = getelementptr inbounds %struct.ImGuiIO, ptr %1272, i32 0, i32 79
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1273, i32 noundef 0)
  br label %1274

1274:                                             ; preds = %1271, %1216
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #14
  br label %1275

1275:                                             ; preds = %1274, %970
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  store i8 0, ptr %78, align 1, !tbaa !43
  %1276 = load ptr, ptr %20, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.ImGuiContext, ptr %1276, i32 0, i32 45
  %1278 = load i32, ptr %1277, align 8, !tbaa !101
  %1279 = load i32, ptr %29, align 4, !tbaa !9
  %1280 = icmp eq i32 %1278, %1279
  br i1 %1280, label %1281, label %1976

1281:                                             ; preds = %1275
  %1282 = load ptr, ptr %20, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.ImGuiContext, ptr %1282, i32 0, i32 48
  %1284 = load i8, ptr %1283, align 4, !tbaa !157, !range !41, !noundef !42
  %1285 = trunc i8 %1284 to i1
  br i1 %1285, label %1976, label %1286

1286:                                             ; preds = %1281
  %1287 = load i8, ptr %51, align 1, !tbaa !43, !range !41, !noundef !42
  %1288 = trunc i8 %1287 to i1
  br i1 %1288, label %1976, label %1289

1289:                                             ; preds = %1286
  %1290 = load ptr, ptr %43, align 8, !tbaa !5
  %1291 = icmp ne ptr %1290, null
  br i1 %1291, label %1292, label %1293

1292:                                             ; preds = %1289
  br label %1295

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

1294:                                             ; No predecessors!
  br label %1295

1295:                                             ; preds = %1294, %1292
  %1296 = load ptr, ptr %21, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct.ImGuiIO, ptr %1296, i32 0, i32 60
  %1298 = load i32, ptr %1297, align 8, !tbaa !158
  %1299 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %1300 = icmp eq i32 %1298, %1299
  br i1 %1300, label %1301, label %1302

1301:                                             ; preds = %1295
  br label %1302

1302:                                             ; preds = %1301, %1295
  %1303 = phi i1 [ false, %1295 ], [ true, %1301 ]
  br i1 %1303, label %1304, label %1305

1304:                                             ; preds = %1302
  br label %1307

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

1306:                                             ; No predecessors!
  br label %1307

1307:                                             ; preds = %1306, %1304
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #14
  %1308 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %1309 = load float, ptr %1308, align 4, !tbaa !87
  %1310 = load ptr, ptr %22, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.ImGuiStyle, ptr %1310, i32 0, i32 11
  %1312 = getelementptr inbounds %struct.ImVec2, ptr %1311, i32 0, i32 1
  %1313 = load float, ptr %1312, align 4, !tbaa !88
  %1314 = fsub float %1309, %1313
  %1315 = load ptr, ptr %20, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.ImGuiContext, ptr %1315, i32 0, i32 7
  %1317 = load float, ptr %1316, align 8, !tbaa !46
  %1318 = fdiv float %1314, %1317
  %1319 = fptosi float %1318 to i32
  %1320 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1319, i32 noundef 1)
  store i32 %1320, ptr %79, align 4, !tbaa !9
  %1321 = load i32, ptr %79, align 4, !tbaa !9
  %1322 = load ptr, ptr %43, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1322, i32 0, i32 9
  %1324 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1323, i32 0, i32 4
  store i32 %1321, ptr %1324, align 4, !tbaa !159
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #14
  %1325 = load ptr, ptr %21, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.ImGuiIO, ptr %1325, i32 0, i32 41
  %1327 = load i8, ptr %1326, align 1, !tbaa !152, !range !41, !noundef !42
  %1328 = trunc i8 %1327 to i1
  %1329 = zext i1 %1328 to i64
  %1330 = select i1 %1328, i32 4194304, i32 0
  store i32 %1330, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #14
  %1331 = load ptr, ptr %21, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.ImGuiIO, ptr %1331, i32 0, i32 20
  %1333 = load i8, ptr %1332, align 1, !tbaa !145, !range !41, !noundef !42
  %1334 = trunc i8 %1333 to i1
  %1335 = zext i1 %1334 to i8
  store i8 %1335, ptr %81, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #14
  %1336 = load i8, ptr %81, align 1, !tbaa !43, !range !41, !noundef !42
  %1337 = trunc i8 %1336 to i1
  br i1 %1337, label %1338, label %1343

1338:                                             ; preds = %1307
  %1339 = load ptr, ptr %21, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.ImGuiIO, ptr %1339, i32 0, i32 60
  %1341 = load i32, ptr %1340, align 8, !tbaa !158
  %1342 = icmp eq i32 %1341, 10
  br label %1343

1343:                                             ; preds = %1338, %1307
  %1344 = phi i1 [ false, %1307 ], [ %1342, %1338 ]
  %1345 = zext i1 %1344 to i8
  store i8 %1345, ptr %82, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #14
  %1346 = load i8, ptr %81, align 1, !tbaa !43, !range !41, !noundef !42
  %1347 = trunc i8 %1346 to i1
  br i1 %1347, label %1348, label %1353

1348:                                             ; preds = %1343
  %1349 = load ptr, ptr %21, align 8, !tbaa !5
  %1350 = getelementptr inbounds %struct.ImGuiIO, ptr %1349, i32 0, i32 42
  %1351 = load i8, ptr %1350, align 2, !tbaa !150, !range !41, !noundef !42
  %1352 = trunc i8 %1351 to i1
  br label %1358

1353:                                             ; preds = %1343
  %1354 = load ptr, ptr %21, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.ImGuiIO, ptr %1354, i32 0, i32 40
  %1356 = load i8, ptr %1355, align 8, !tbaa !116, !range !41, !noundef !42
  %1357 = trunc i8 %1356 to i1
  br label %1358

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

1363:                                             ; preds = %1358
  %1364 = load ptr, ptr %21, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.ImGuiIO, ptr %1364, i32 0, i32 43
  %1366 = load i8, ptr %1365, align 1, !tbaa !151, !range !41, !noundef !42
  %1367 = trunc i8 %1366 to i1
  br i1 %1367, label %1368, label %1379

1368:                                             ; preds = %1363
  %1369 = load ptr, ptr %21, align 8, !tbaa !5
  %1370 = getelementptr inbounds %struct.ImGuiIO, ptr %1369, i32 0, i32 40
  %1371 = load i8, ptr %1370, align 8, !tbaa !116, !range !41, !noundef !42
  %1372 = trunc i8 %1371 to i1
  br i1 %1372, label %1379, label %1373

1373:                                             ; preds = %1368
  %1374 = load ptr, ptr %21, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.ImGuiIO, ptr %1374, i32 0, i32 42
  %1376 = load i8, ptr %1375, align 2, !tbaa !150, !range !41, !noundef !42
  %1377 = trunc i8 %1376 to i1
  %1378 = xor i1 %1377, true
  br label %1379

1379:                                             ; preds = %1373, %1368, %1363, %1358
  %1380 = phi i1 [ false, %1368 ], [ false, %1363 ], [ false, %1358 ], [ %1378, %1373 ]
  %1381 = zext i1 %1380 to i8
  store i8 %1381, ptr %84, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #14
  %1382 = load ptr, ptr %21, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.ImGuiIO, ptr %1382, i32 0, i32 60
  %1384 = load i32, ptr %1383, align 8, !tbaa !158
  %1385 = icmp eq i32 %1384, 1
  %1386 = zext i1 %1385 to i8
  store i8 %1386, ptr %85, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1387 = load ptr, ptr %21, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.ImGuiIO, ptr %1387, i32 0, i32 60
  %1389 = load i32, ptr %1388, align 8, !tbaa !158
  %1390 = icmp eq i32 %1389, 2
  %1391 = zext i1 %1390 to i8
  store i8 %1391, ptr %86, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #14
  %1392 = load ptr, ptr %20, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.ImGuiContext, ptr %1392, i32 0, i32 3
  %1394 = getelementptr inbounds %struct.ImGuiIO, ptr %1393, i32 0, i32 20
  %1395 = load i8, ptr %1394, align 1, !tbaa !160, !range !41, !noundef !42
  %1396 = trunc i8 %1395 to i1
  br i1 %1396, label %1397, label %1402

1397:                                             ; preds = %1379
  %1398 = load ptr, ptr %21, align 8, !tbaa !5
  %1399 = getelementptr inbounds %struct.ImGuiIO, ptr %1398, i32 0, i32 60
  %1400 = load i32, ptr %1399, align 8, !tbaa !158
  %1401 = icmp eq i32 %1400, 8
  br label %1407

1402:                                             ; preds = %1379
  %1403 = load ptr, ptr %21, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.ImGuiIO, ptr %1403, i32 0, i32 60
  %1405 = load i32, ptr %1404, align 8, !tbaa !158
  %1406 = icmp eq i32 %1405, 1
  br label %1407

1407:                                             ; preds = %1402, %1397
  %1408 = phi i1 [ %1401, %1397 ], [ %1406, %1402 ]
  %1409 = zext i1 %1408 to i8
  store i8 %1409, ptr %87, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1410 = load i8, ptr %87, align 1, !tbaa !43, !range !41, !noundef !42
  %1411 = trunc i8 %1410 to i1
  br i1 %1411, label %1412, label %1414

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

1414:                                             ; preds = %1412, %1407
  %1415 = load i8, ptr %86, align 1, !tbaa !43, !range !41, !noundef !42
  %1416 = trunc i8 %1415 to i1
  br i1 %1416, label %1417, label %1433

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

1419:                                             ; preds = %1417, %1412
  %1420 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1421 = trunc i8 %1420 to i1
  br i1 %1421, label %1433, label %1422

1422:                                             ; preds = %1419
  %1423 = load i8, ptr %26, align 1, !tbaa !43, !range !41, !noundef !42
  %1424 = trunc i8 %1423 to i1
  br i1 %1424, label %1433, label %1425

1425:                                             ; preds = %1422
  %1426 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %1427 = trunc i8 %1426 to i1
  br i1 %1427, label %1428, label %1431

1428:                                             ; preds = %1425
  %1429 = load ptr, ptr %43, align 8, !tbaa !5
  %1430 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1429)
  br label %1431

1431:                                             ; preds = %1428, %1425
  %1432 = phi i1 [ true, %1425 ], [ %1430, %1428 ]
  br label %1433

1433:                                             ; preds = %1431, %1422, %1419, %1417, %1414
  %1434 = phi i1 [ false, %1422 ], [ false, %1419 ], [ false, %1417 ], [ false, %1414 ], [ %1432, %1431 ]
  %1435 = zext i1 %1434 to i8
  store i8 %1435, ptr %88, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1436 = load i8, ptr %87, align 1, !tbaa !43, !range !41, !noundef !42
  %1437 = trunc i8 %1436 to i1
  br i1 %1437, label %1438, label %1440

1438:                                             ; preds = %1433
  %1439 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1439, label %1445, label %1440

1440:                                             ; preds = %1438, %1433
  %1441 = load i8, ptr %85, align 1, !tbaa !43, !range !41, !noundef !42
  %1442 = trunc i8 %1441 to i1
  br i1 %1442, label %1443, label %1456

1443:                                             ; preds = %1440
  %1444 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1444, label %1445, label %1456

1445:                                             ; preds = %1443, %1438
  %1446 = load i8, ptr %26, align 1, !tbaa !43, !range !41, !noundef !42
  %1447 = trunc i8 %1446 to i1
  br i1 %1447, label %1456, label %1448

1448:                                             ; preds = %1445
  %1449 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %1450 = trunc i8 %1449 to i1
  br i1 %1450, label %1451, label %1454

1451:                                             ; preds = %1448
  %1452 = load ptr, ptr %43, align 8, !tbaa !5
  %1453 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1452)
  br label %1454

1454:                                             ; preds = %1451, %1448
  %1455 = phi i1 [ true, %1448 ], [ %1453, %1451 ]
  br label %1456

1456:                                             ; preds = %1454, %1445, %1443, %1440
  %1457 = phi i1 [ false, %1445 ], [ false, %1443 ], [ false, %1440 ], [ %1455, %1454 ]
  %1458 = zext i1 %1457 to i8
  store i8 %1458, ptr %89, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1459 = load i8, ptr %87, align 1, !tbaa !43, !range !41, !noundef !42
  %1460 = trunc i8 %1459 to i1
  br i1 %1460, label %1461, label %1463

1461:                                             ; preds = %1456
  %1462 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1462, label %1468, label %1463

1463:                                             ; preds = %1461, %1456
  %1464 = load i8, ptr %86, align 1, !tbaa !43, !range !41, !noundef !42
  %1465 = trunc i8 %1464 to i1
  br i1 %1465, label %1466, label %1472

1466:                                             ; preds = %1463
  %1467 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1467, label %1468, label %1472

1468:                                             ; preds = %1466, %1461
  %1469 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1470 = trunc i8 %1469 to i1
  %1471 = xor i1 %1470, true
  br label %1472

1472:                                             ; preds = %1468, %1466, %1463
  %1473 = phi i1 [ false, %1466 ], [ false, %1463 ], [ %1471, %1468 ]
  %1474 = zext i1 %1473 to i8
  store i8 %1474, ptr %90, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #14
  %1475 = load i8, ptr %87, align 1, !tbaa !43, !range !41, !noundef !42
  %1476 = trunc i8 %1475 to i1
  br i1 %1476, label %1477, label %1485

1477:                                             ; preds = %1472
  %1478 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1478, label %1479, label %1485

1479:                                             ; preds = %1477
  %1480 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1481 = trunc i8 %1480 to i1
  br i1 %1481, label %1485, label %1482

1482:                                             ; preds = %1479
  %1483 = load i8, ptr %27, align 1, !tbaa !43, !range !41, !noundef !42
  %1484 = trunc i8 %1483 to i1
  br label %1485

1485:                                             ; preds = %1482, %1479, %1477, %1472
  %1486 = phi i1 [ false, %1479 ], [ false, %1477 ], [ false, %1472 ], [ %1484, %1482 ]
  %1487 = zext i1 %1486 to i8
  store i8 %1487, ptr %91, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #14
  %1488 = load i8, ptr %87, align 1, !tbaa !43, !range !41, !noundef !42
  %1489 = trunc i8 %1488 to i1
  br i1 %1489, label %1490, label %1492

1490:                                             ; preds = %1485
  %1491 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1491, label %1497, label %1492

1492:                                             ; preds = %1490, %1485
  %1493 = load i8, ptr %82, align 1, !tbaa !43, !range !41, !noundef !42
  %1494 = trunc i8 %1493 to i1
  br i1 %1494, label %1495, label %1503

1495:                                             ; preds = %1492
  %1496 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1496, label %1497, label %1503

1497:                                             ; preds = %1495, %1490
  %1498 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1499 = trunc i8 %1498 to i1
  br i1 %1499, label %1503, label %1500

1500:                                             ; preds = %1497
  %1501 = load i8, ptr %27, align 1, !tbaa !43, !range !41, !noundef !42
  %1502 = trunc i8 %1501 to i1
  br label %1503

1503:                                             ; preds = %1500, %1497, %1495, %1492
  %1504 = phi i1 [ false, %1497 ], [ false, %1495 ], [ false, %1492 ], [ %1502, %1500 ]
  %1505 = zext i1 %1504 to i8
  store i8 %1505, ptr %92, align 1, !tbaa !43
  %1506 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1506, label %1507, label %1521

1507:                                             ; preds = %1503
  %1508 = load ptr, ptr %43, align 8, !tbaa !5
  %1509 = load i8, ptr %84, align 1, !tbaa !43, !range !41, !noundef !42
  %1510 = trunc i8 %1509 to i1
  br i1 %1510, label %1511, label %1512

1511:                                             ; preds = %1507
  br label %1517

1512:                                             ; preds = %1507
  %1513 = load i8, ptr %83, align 1, !tbaa !43, !range !41, !noundef !42
  %1514 = trunc i8 %1513 to i1
  %1515 = zext i1 %1514 to i64
  %1516 = select i1 %1514, i32 2097164, i32 2097152
  br label %1517

1517:                                             ; preds = %1512, %1511
  %1518 = phi i32 [ 2097156, %1511 ], [ %1516, %1512 ]
  %1519 = load i32, ptr %80, align 4, !tbaa !9
  %1520 = or i32 %1518, %1519
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1508, i32 noundef %1520)
  br label %1961

1521:                                             ; preds = %1503
  %1522 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1522, label %1523, label %1537

1523:                                             ; preds = %1521
  %1524 = load ptr, ptr %43, align 8, !tbaa !5
  %1525 = load i8, ptr %84, align 1, !tbaa !43, !range !41, !noundef !42
  %1526 = trunc i8 %1525 to i1
  br i1 %1526, label %1527, label %1528

1527:                                             ; preds = %1523
  br label %1533

1528:                                             ; preds = %1523
  %1529 = load i8, ptr %83, align 1, !tbaa !43, !range !41, !noundef !42
  %1530 = trunc i8 %1529 to i1
  %1531 = zext i1 %1530 to i64
  %1532 = select i1 %1530, i32 2097165, i32 2097153
  br label %1533

1533:                                             ; preds = %1528, %1527
  %1534 = phi i32 [ 2097157, %1527 ], [ %1532, %1528 ]
  %1535 = load i32, ptr %80, align 4, !tbaa !9
  %1536 = or i32 %1534, %1535
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1524, i32 noundef %1536)
  br label %1960

1537:                                             ; preds = %1521
  %1538 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1538, label %1539, label %1567

1539:                                             ; preds = %1537
  %1540 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %1541 = trunc i8 %1540 to i1
  br i1 %1541, label %1542, label %1567

1542:                                             ; preds = %1539
  %1543 = load ptr, ptr %21, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.ImGuiIO, ptr %1543, i32 0, i32 40
  %1545 = load i8, ptr %1544, align 8, !tbaa !116, !range !41, !noundef !42
  %1546 = trunc i8 %1545 to i1
  br i1 %1546, label %1547, label %1558

1547:                                             ; preds = %1542
  %1548 = load ptr, ptr %38, align 8, !tbaa !5
  %1549 = load ptr, ptr %38, align 8, !tbaa !5
  %1550 = getelementptr inbounds %struct.ImGuiWindow, ptr %1549, i32 0, i32 15
  %1551 = getelementptr inbounds %struct.ImVec2, ptr %1550, i32 0, i32 1
  %1552 = load float, ptr %1551, align 4, !tbaa !106
  %1553 = load ptr, ptr %20, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.ImGuiContext, ptr %1553, i32 0, i32 7
  %1555 = load float, ptr %1554, align 8, !tbaa !46
  %1556 = fsub float %1552, %1555
  %1557 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1556, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1548, float noundef %1557)
  br label %1566

1558:                                             ; preds = %1542
  %1559 = load ptr, ptr %43, align 8, !tbaa !5
  %1560 = load i8, ptr %84, align 1, !tbaa !43, !range !41, !noundef !42
  %1561 = trunc i8 %1560 to i1
  %1562 = zext i1 %1561 to i64
  %1563 = select i1 %1561, i32 2097158, i32 2097154
  %1564 = load i32, ptr %80, align 4, !tbaa !9
  %1565 = or i32 %1563, %1564
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1559, i32 noundef %1565)
  br label %1566

1566:                                             ; preds = %1558, %1547
  br label %1959

1567:                                             ; preds = %1539, %1537
  %1568 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1568, label %1569, label %1598

1569:                                             ; preds = %1567
  %1570 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %1571 = trunc i8 %1570 to i1
  br i1 %1571, label %1572, label %1598

1572:                                             ; preds = %1569
  %1573 = load ptr, ptr %21, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.ImGuiIO, ptr %1573, i32 0, i32 40
  %1575 = load i8, ptr %1574, align 8, !tbaa !116, !range !41, !noundef !42
  %1576 = trunc i8 %1575 to i1
  br i1 %1576, label %1577, label %1589

1577:                                             ; preds = %1572
  %1578 = load ptr, ptr %38, align 8, !tbaa !5
  %1579 = load ptr, ptr %38, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.ImGuiWindow, ptr %1579, i32 0, i32 15
  %1581 = getelementptr inbounds %struct.ImVec2, ptr %1580, i32 0, i32 1
  %1582 = load float, ptr %1581, align 4, !tbaa !106
  %1583 = load ptr, ptr %20, align 8, !tbaa !5
  %1584 = getelementptr inbounds %struct.ImGuiContext, ptr %1583, i32 0, i32 7
  %1585 = load float, ptr %1584, align 8, !tbaa !46
  %1586 = fadd float %1582, %1585
  %1587 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1588 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1586, float noundef %1587)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1578, float noundef %1588)
  br label %1597

1589:                                             ; preds = %1572
  %1590 = load ptr, ptr %43, align 8, !tbaa !5
  %1591 = load i8, ptr %84, align 1, !tbaa !43, !range !41, !noundef !42
  %1592 = trunc i8 %1591 to i1
  %1593 = zext i1 %1592 to i64
  %1594 = select i1 %1592, i32 2097159, i32 2097155
  %1595 = load i32, ptr %80, align 4, !tbaa !9
  %1596 = or i32 %1594, %1595
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1590, i32 noundef %1596)
  br label %1597

1597:                                             ; preds = %1589, %1577
  br label %1958

1598:                                             ; preds = %1569, %1567
  %1599 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 5, i1 noundef zeroext true)
  br i1 %1599, label %1600, label %1615

1600:                                             ; preds = %1598
  %1601 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %1602 = trunc i8 %1601 to i1
  br i1 %1602, label %1603, label %1615

1603:                                             ; preds = %1600
  %1604 = load ptr, ptr %43, align 8, !tbaa !5
  %1605 = load i32, ptr %80, align 4, !tbaa !9
  %1606 = or i32 2097166, %1605
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1604, i32 noundef %1606)
  %1607 = load i32, ptr %79, align 4, !tbaa !9
  %1608 = sitofp i32 %1607 to float
  %1609 = load ptr, ptr %20, align 8, !tbaa !5
  %1610 = getelementptr inbounds %struct.ImGuiContext, ptr %1609, i32 0, i32 7
  %1611 = load float, ptr %1610, align 8, !tbaa !46
  %1612 = load float, ptr %53, align 4, !tbaa !45
  %1613 = fneg float %1608
  %1614 = call float @llvm.fmuladd.f32(float %1613, float %1611, float %1612)
  store float %1614, ptr %53, align 4, !tbaa !45
  br label %1957

1615:                                             ; preds = %1600, %1598
  %1616 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 6, i1 noundef zeroext true)
  br i1 %1616, label %1617, label %1631

1617:                                             ; preds = %1615
  %1618 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %1619 = trunc i8 %1618 to i1
  br i1 %1619, label %1620, label %1631

1620:                                             ; preds = %1617
  %1621 = load ptr, ptr %43, align 8, !tbaa !5
  %1622 = load i32, ptr %80, align 4, !tbaa !9
  %1623 = or i32 2097167, %1622
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1621, i32 noundef %1623)
  %1624 = load i32, ptr %79, align 4, !tbaa !9
  %1625 = sitofp i32 %1624 to float
  %1626 = load ptr, ptr %20, align 8, !tbaa !5
  %1627 = getelementptr inbounds %struct.ImGuiContext, ptr %1626, i32 0, i32 7
  %1628 = load float, ptr %1627, align 8, !tbaa !46
  %1629 = load float, ptr %53, align 4, !tbaa !45
  %1630 = call float @llvm.fmuladd.f32(float %1625, float %1628, float %1629)
  store float %1630, ptr %53, align 4, !tbaa !45
  br label %1956

1631:                                             ; preds = %1617, %1615
  %1632 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1632, label %1633, label %1647

1633:                                             ; preds = %1631
  %1634 = load ptr, ptr %43, align 8, !tbaa !5
  %1635 = load ptr, ptr %21, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.ImGuiIO, ptr %1635, i32 0, i32 40
  %1637 = load i8, ptr %1636, align 8, !tbaa !116, !range !41, !noundef !42
  %1638 = trunc i8 %1637 to i1
  br i1 %1638, label %1639, label %1642

1639:                                             ; preds = %1633
  %1640 = load i32, ptr %80, align 4, !tbaa !9
  %1641 = or i32 2097158, %1640
  br label %1645

1642:                                             ; preds = %1633
  %1643 = load i32, ptr %80, align 4, !tbaa !9
  %1644 = or i32 2097156, %1643
  br label %1645

1645:                                             ; preds = %1642, %1639
  %1646 = phi i32 [ %1641, %1639 ], [ %1644, %1642 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1634, i32 noundef %1646)
  br label %1955

1647:                                             ; preds = %1631
  %1648 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1648, label %1649, label %1663

1649:                                             ; preds = %1647
  %1650 = load ptr, ptr %43, align 8, !tbaa !5
  %1651 = load ptr, ptr %21, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.ImGuiIO, ptr %1651, i32 0, i32 40
  %1653 = load i8, ptr %1652, align 8, !tbaa !116, !range !41, !noundef !42
  %1654 = trunc i8 %1653 to i1
  br i1 %1654, label %1655, label %1658

1655:                                             ; preds = %1649
  %1656 = load i32, ptr %80, align 4, !tbaa !9
  %1657 = or i32 2097159, %1656
  br label %1661

1658:                                             ; preds = %1649
  %1659 = load i32, ptr %80, align 4, !tbaa !9
  %1660 = or i32 2097157, %1659
  br label %1661

1661:                                             ; preds = %1658, %1655
  %1662 = phi i32 [ %1657, %1655 ], [ %1660, %1658 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1650, i32 noundef %1662)
  br label %1954

1663:                                             ; preds = %1647
  %1664 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1664, label %1665, label %1672

1665:                                             ; preds = %1663
  %1666 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1667 = trunc i8 %1666 to i1
  br i1 %1667, label %1672, label %1668

1668:                                             ; preds = %1665
  %1669 = load ptr, ptr %43, align 8, !tbaa !5
  %1670 = load i32, ptr %80, align 4, !tbaa !9
  %1671 = or i32 2097160, %1670
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1669, i32 noundef %1671)
  br label %1953

1672:                                             ; preds = %1665, %1663
  %1673 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1673, label %1674, label %1711

1674:                                             ; preds = %1672
  %1675 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1676 = trunc i8 %1675 to i1
  br i1 %1676, label %1711, label %1677

1677:                                             ; preds = %1674
  %1678 = load ptr, ptr %43, align 8, !tbaa !5
  %1679 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1678)
  br i1 %1679, label %1707, label %1680

1680:                                             ; preds = %1677
  %1681 = load i8, ptr %83, align 1, !tbaa !43, !range !41, !noundef !42
  %1682 = trunc i8 %1681 to i1
  br i1 %1682, label %1683, label %1685

1683:                                             ; preds = %1680
  %1684 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1684, i32 noundef 6291468)
  br label %1706

1685:                                             ; preds = %1680
  %1686 = load i8, ptr %81, align 1, !tbaa !43, !range !41, !noundef !42
  %1687 = trunc i8 %1686 to i1
  br i1 %1687, label %1688, label %1705

1688:                                             ; preds = %1685
  %1689 = load ptr, ptr %21, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.ImGuiIO, ptr %1689, i32 0, i32 43
  %1691 = load i8, ptr %1690, align 1, !tbaa !151, !range !41, !noundef !42
  %1692 = trunc i8 %1691 to i1
  br i1 %1692, label %1693, label %1705

1693:                                             ; preds = %1688
  %1694 = load ptr, ptr %21, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.ImGuiIO, ptr %1694, i32 0, i32 42
  %1696 = load i8, ptr %1695, align 2, !tbaa !150, !range !41, !noundef !42
  %1697 = trunc i8 %1696 to i1
  br i1 %1697, label %1705, label %1698

1698:                                             ; preds = %1693
  %1699 = load ptr, ptr %21, align 8, !tbaa !5
  %1700 = getelementptr inbounds %struct.ImGuiIO, ptr %1699, i32 0, i32 40
  %1701 = load i8, ptr %1700, align 8, !tbaa !116, !range !41, !noundef !42
  %1702 = trunc i8 %1701 to i1
  br i1 %1702, label %1705, label %1703

1703:                                             ; preds = %1698
  %1704 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1704, i32 noundef 6291460)
  br label %1705

1705:                                             ; preds = %1703, %1698, %1693, %1688, %1685
  br label %1706

1706:                                             ; preds = %1705, %1683
  br label %1707

1707:                                             ; preds = %1706, %1677
  %1708 = load ptr, ptr %43, align 8, !tbaa !5
  %1709 = load i32, ptr %80, align 4, !tbaa !9
  %1710 = or i32 2097161, %1709
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1708, i32 noundef %1710)
  br label %1952

1711:                                             ; preds = %1674, %1672
  %1712 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1712, label %1715, label %1713

1713:                                             ; preds = %1711
  %1714 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %1714, label %1715, label %1753

1715:                                             ; preds = %1713, %1711
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #14
  %1716 = load i32, ptr %15, align 4, !tbaa !9
  %1717 = and i32 %1716, 2048
  %1718 = icmp ne i32 %1717, 0
  %1719 = zext i1 %1718 to i8
  store i8 %1719, ptr %93, align 1, !tbaa !43
  %1720 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %1721 = trunc i8 %1720 to i1
  br i1 %1721, label %1722, label %1738

1722:                                             ; preds = %1715
  %1723 = load i8, ptr %93, align 1, !tbaa !43, !range !41, !noundef !42
  %1724 = trunc i8 %1723 to i1
  br i1 %1724, label %1725, label %1730

1725:                                             ; preds = %1722
  %1726 = load ptr, ptr %21, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.ImGuiIO, ptr %1726, i32 0, i32 40
  %1728 = load i8, ptr %1727, align 8, !tbaa !116, !range !41, !noundef !42
  %1729 = trunc i8 %1728 to i1
  br i1 %1729, label %1730, label %1738

1730:                                             ; preds = %1725, %1722
  %1731 = load i8, ptr %93, align 1, !tbaa !43, !range !41, !noundef !42
  %1732 = trunc i8 %1731 to i1
  br i1 %1732, label %1739, label %1733

1733:                                             ; preds = %1730
  %1734 = load ptr, ptr %21, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct.ImGuiIO, ptr %1734, i32 0, i32 40
  %1736 = load i8, ptr %1735, align 8, !tbaa !116, !range !41, !noundef !42
  %1737 = trunc i8 %1736 to i1
  br i1 %1737, label %1738, label %1739

1738:                                             ; preds = %1733, %1725, %1715
  store i8 1, ptr %51, align 1, !tbaa !43
  store i8 1, ptr %63, align 1, !tbaa !43
  br label %1752

1739:                                             ; preds = %1733, %1730
  %1740 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1741 = trunc i8 %1740 to i1
  br i1 %1741, label %1751, label %1742

1742:                                             ; preds = %1739
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #14
  store i32 10, ptr %94, align 4, !tbaa !9
  %1743 = load i32, ptr %15, align 4, !tbaa !9
  %1744 = load ptr, ptr %16, align 8, !tbaa !5
  %1745 = load ptr, ptr %17, align 8, !tbaa !5
  %1746 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %94, i32 noundef %1743, ptr noundef %1744, ptr noundef %1745)
  br i1 %1746, label %1747, label %1750

1747:                                             ; preds = %1742
  %1748 = load ptr, ptr %43, align 8, !tbaa !5
  %1749 = load i32, ptr %94, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1748, i32 noundef %1749)
  br label %1750

1750:                                             ; preds = %1747, %1742
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #14
  br label %1751

1751:                                             ; preds = %1750, %1739
  br label %1752

1752:                                             ; preds = %1751, %1738
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #14
  br label %1951

1753:                                             ; preds = %1713
  %1754 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1754, label %1755, label %1756

1755:                                             ; preds = %1753
  store i8 1, ptr %78, align 1, !tbaa !43
  store i8 1, ptr %51, align 1, !tbaa !43
  br label %1950

1756:                                             ; preds = %1753
  %1757 = load i8, ptr %91, align 1, !tbaa !43, !range !41, !noundef !42
  %1758 = trunc i8 %1757 to i1
  br i1 %1758, label %1762, label %1759

1759:                                             ; preds = %1756
  %1760 = load i8, ptr %92, align 1, !tbaa !43, !range !41, !noundef !42
  %1761 = trunc i8 %1760 to i1
  br i1 %1761, label %1762, label %1769

1762:                                             ; preds = %1759, %1756
  %1763 = load ptr, ptr %43, align 8, !tbaa !5
  %1764 = load i8, ptr %91, align 1, !tbaa !43, !range !41, !noundef !42
  %1765 = trunc i8 %1764 to i1
  %1766 = zext i1 %1765 to i64
  %1767 = select i1 %1765, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %1763, i32 noundef %1767)
  %1768 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1768)
  br label %1949

1769:                                             ; preds = %1759
  %1770 = load i8, ptr %87, align 1, !tbaa !43, !range !41, !noundef !42
  %1771 = trunc i8 %1770 to i1
  br i1 %1771, label %1772, label %1778

1772:                                             ; preds = %1769
  %1773 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1773, label %1774, label %1778

1774:                                             ; preds = %1772
  %1775 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %1775)
  %1776 = load ptr, ptr %43, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1776, i32 0, i32 11
  store i8 1, ptr %1777, align 4, !tbaa !149
  br label %1948

1778:                                             ; preds = %1772, %1769
  %1779 = load i8, ptr %88, align 1, !tbaa !43, !range !41, !noundef !42
  %1780 = trunc i8 %1779 to i1
  br i1 %1780, label %1784, label %1781

1781:                                             ; preds = %1778
  %1782 = load i8, ptr %89, align 1, !tbaa !43, !range !41, !noundef !42
  %1783 = trunc i8 %1782 to i1
  br i1 %1783, label %1784, label %1878

1784:                                             ; preds = %1781, %1778
  %1785 = load ptr, ptr %21, align 8, !tbaa !5
  %1786 = getelementptr inbounds %struct.ImGuiIO, ptr %1785, i32 0, i32 32
  %1787 = load ptr, ptr %1786, align 8, !tbaa !161
  %1788 = icmp ne ptr %1787, null
  br i1 %1788, label %1789, label %1862

1789:                                             ; preds = %1784
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #14
  %1790 = load ptr, ptr %43, align 8, !tbaa !5
  %1791 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1790)
  br i1 %1791, label %1792, label %1802

1792:                                             ; preds = %1789
  %1793 = load ptr, ptr %43, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1793, i32 0, i32 9
  %1795 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1794, i32 0, i32 1
  %1796 = load i32, ptr %1795, align 4, !tbaa !162
  %1797 = load ptr, ptr %43, align 8, !tbaa !5
  %1798 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1797, i32 0, i32 9
  %1799 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1798, i32 0, i32 2
  %1800 = load i32, ptr %1799, align 4, !tbaa !163
  %1801 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1796, i32 noundef %1800)
  br label %1803

1802:                                             ; preds = %1789
  br label %1803

1803:                                             ; preds = %1802, %1792
  %1804 = phi i32 [ %1801, %1792 ], [ 0, %1802 ]
  store i32 %1804, ptr %95, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #14
  %1805 = load ptr, ptr %43, align 8, !tbaa !5
  %1806 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1805)
  br i1 %1806, label %1807, label %1817

1807:                                             ; preds = %1803
  %1808 = load ptr, ptr %43, align 8, !tbaa !5
  %1809 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1808, i32 0, i32 9
  %1810 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1809, i32 0, i32 1
  %1811 = load i32, ptr %1810, align 4, !tbaa !162
  %1812 = load ptr, ptr %43, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1812, i32 0, i32 9
  %1814 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1813, i32 0, i32 2
  %1815 = load i32, ptr %1814, align 4, !tbaa !163
  %1816 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1811, i32 noundef %1815)
  br label %1821

1817:                                             ; preds = %1803
  %1818 = load ptr, ptr %43, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1818, i32 0, i32 1
  %1820 = load i32, ptr %1819, align 4, !tbaa !111
  br label %1821

1821:                                             ; preds = %1817, %1807
  %1822 = phi i32 [ %1816, %1807 ], [ %1820, %1817 ]
  store i32 %1822, ptr %96, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #14
  %1823 = load ptr, ptr %43, align 8, !tbaa !5
  %1824 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1823, i32 0, i32 3
  %1825 = getelementptr inbounds %struct.ImVector.5, ptr %1824, i32 0, i32 2
  %1826 = load ptr, ptr %1825, align 8, !tbaa !110
  %1827 = load i32, ptr %95, align 4, !tbaa !9
  %1828 = sext i32 %1827 to i64
  %1829 = getelementptr inbounds i16, ptr %1826, i64 %1828
  %1830 = load ptr, ptr %43, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1830, i32 0, i32 3
  %1832 = getelementptr inbounds %struct.ImVector.5, ptr %1831, i32 0, i32 2
  %1833 = load ptr, ptr %1832, align 8, !tbaa !110
  %1834 = load i32, ptr %96, align 4, !tbaa !9
  %1835 = sext i32 %1834 to i64
  %1836 = getelementptr inbounds i16, ptr %1833, i64 %1835
  %1837 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1829, ptr noundef %1836)
  %1838 = add nsw i32 %1837, 1
  store i32 %1838, ptr %97, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #14
  %1839 = load i32, ptr %97, align 4, !tbaa !9
  %1840 = sext i32 %1839 to i64
  %1841 = mul i64 %1840, 1
  %1842 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1841)
  store ptr %1842, ptr %98, align 8, !tbaa !5
  %1843 = load ptr, ptr %98, align 8, !tbaa !5
  %1844 = load i32, ptr %97, align 4, !tbaa !9
  %1845 = load ptr, ptr %43, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1845, i32 0, i32 3
  %1847 = getelementptr inbounds %struct.ImVector.5, ptr %1846, i32 0, i32 2
  %1848 = load ptr, ptr %1847, align 8, !tbaa !110
  %1849 = load i32, ptr %95, align 4, !tbaa !9
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds i16, ptr %1848, i64 %1850
  %1852 = load ptr, ptr %43, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1852, i32 0, i32 3
  %1854 = getelementptr inbounds %struct.ImVector.5, ptr %1853, i32 0, i32 2
  %1855 = load ptr, ptr %1854, align 8, !tbaa !110
  %1856 = load i32, ptr %96, align 4, !tbaa !9
  %1857 = sext i32 %1856 to i64
  %1858 = getelementptr inbounds i16, ptr %1855, i64 %1857
  %1859 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1843, i32 noundef %1844, ptr noundef %1851, ptr noundef %1858)
  %1860 = load ptr, ptr %98, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1860)
  %1861 = load ptr, ptr %98, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1861)
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #14
  br label %1862

1862:                                             ; preds = %1821, %1784
  %1863 = load i8, ptr %88, align 1, !tbaa !43, !range !41, !noundef !42
  %1864 = trunc i8 %1863 to i1
  br i1 %1864, label %1865, label %1877

1865:                                             ; preds = %1862
  %1866 = load ptr, ptr %43, align 8, !tbaa !5
  %1867 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1866)
  br i1 %1867, label %1870, label %1868

1868:                                             ; preds = %1865
  %1869 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %1869)
  br label %1870

1870:                                             ; preds = %1868, %1865
  %1871 = load ptr, ptr %43, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1871, i32 0, i32 11
  store i8 1, ptr %1872, align 4, !tbaa !149
  %1873 = load ptr, ptr %43, align 8, !tbaa !5
  %1874 = load ptr, ptr %43, align 8, !tbaa !5
  %1875 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1874, i32 0, i32 9
  %1876 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1873, ptr noundef %1875)
  br label %1877

1877:                                             ; preds = %1870, %1862
  br label %1947

1878:                                             ; preds = %1781
  %1879 = load i8, ptr %90, align 1, !tbaa !43, !range !41, !noundef !42
  %1880 = trunc i8 %1879 to i1
  br i1 %1880, label %1881, label %1946

1881:                                             ; preds = %1878
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #14
  %1882 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %1882, ptr %99, align 8, !tbaa !5
  %1883 = load ptr, ptr %99, align 8, !tbaa !5
  %1884 = icmp ne ptr %1883, null
  br i1 %1884, label %1885, label %1945

1885:                                             ; preds = %1881
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #14
  %1886 = load ptr, ptr %99, align 8, !tbaa !5
  %1887 = call i64 @strlen(ptr noundef %1886) #16
  %1888 = trunc i64 %1887 to i32
  store i32 %1888, ptr %100, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #14
  %1889 = load i32, ptr %100, align 4, !tbaa !9
  %1890 = add nsw i32 %1889, 1
  %1891 = sext i32 %1890 to i64
  %1892 = mul i64 %1891, 2
  %1893 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1892)
  store ptr %1893, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #14
  store i32 0, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #14
  %1894 = load ptr, ptr %99, align 8, !tbaa !5
  store ptr %1894, ptr %103, align 8, !tbaa !5
  br label %1895

1895:                                             ; preds = %1925, %1923, %1885
  %1896 = load ptr, ptr %103, align 8, !tbaa !5
  %1897 = load i8, ptr %1896, align 1, !tbaa !122
  %1898 = icmp ne i8 %1897, 0
  br i1 %1898, label %1900, label %1899

1899:                                             ; preds = %1895
  store i32 5, ptr %19, align 4
  br label %1926

1900:                                             ; preds = %1895
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #14
  %1901 = load ptr, ptr %103, align 8, !tbaa !5
  %1902 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %104, ptr noundef %1901, ptr noundef null)
  %1903 = load ptr, ptr %103, align 8, !tbaa !5
  %1904 = sext i32 %1902 to i64
  %1905 = getelementptr inbounds i8, ptr %1903, i64 %1904
  store ptr %1905, ptr %103, align 8, !tbaa !5
  %1906 = load i32, ptr %104, align 4, !tbaa !9
  %1907 = icmp eq i32 %1906, 0
  br i1 %1907, label %1908, label %1909

1908:                                             ; preds = %1900
  store i32 5, ptr %19, align 4
  br label %1923

1909:                                             ; preds = %1900
  %1910 = load i32, ptr %15, align 4, !tbaa !9
  %1911 = load ptr, ptr %16, align 8, !tbaa !5
  %1912 = load ptr, ptr %17, align 8, !tbaa !5
  %1913 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %104, i32 noundef %1910, ptr noundef %1911, ptr noundef %1912)
  br i1 %1913, label %1915, label %1914

1914:                                             ; preds = %1909
  store i32 6, ptr %19, align 4
  br label %1923, !llvm.loop !164

1915:                                             ; preds = %1909
  %1916 = load i32, ptr %104, align 4, !tbaa !9
  %1917 = trunc i32 %1916 to i16
  %1918 = load ptr, ptr %101, align 8, !tbaa !5
  %1919 = load i32, ptr %102, align 4, !tbaa !9
  %1920 = add nsw i32 %1919, 1
  store i32 %1920, ptr %102, align 4, !tbaa !9
  %1921 = sext i32 %1919 to i64
  %1922 = getelementptr inbounds i16, ptr %1918, i64 %1921
  store i16 %1917, ptr %1922, align 2, !tbaa !153
  store i32 0, ptr %19, align 4
  br label %1923

1923:                                             ; preds = %1915, %1914, %1908
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #14
  %1924 = load i32, ptr %19, align 4
  switch i32 %1924, label %1926 [
    i32 0, label %1925
    i32 6, label %1895
  ]

1925:                                             ; preds = %1923
  br label %1895, !llvm.loop !164

1926:                                             ; preds = %1923, %1899
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #14
  br label %1927

1927:                                             ; preds = %1926
  %1928 = load ptr, ptr %101, align 8, !tbaa !5
  %1929 = load i32, ptr %102, align 4, !tbaa !9
  %1930 = sext i32 %1929 to i64
  %1931 = getelementptr inbounds i16, ptr %1928, i64 %1930
  store i16 0, ptr %1931, align 2, !tbaa !153
  %1932 = load i32, ptr %102, align 4, !tbaa !9
  %1933 = icmp sgt i32 %1932, 0
  br i1 %1933, label %1934, label %1943

1934:                                             ; preds = %1927
  %1935 = load ptr, ptr %43, align 8, !tbaa !5
  %1936 = load ptr, ptr %43, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1936, i32 0, i32 9
  %1938 = load ptr, ptr %101, align 8, !tbaa !5
  %1939 = load i32, ptr %102, align 4, !tbaa !9
  %1940 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1935, ptr noundef %1937, ptr noundef %1938, i32 noundef %1939)
  %1941 = load ptr, ptr %43, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1941, i32 0, i32 11
  store i8 1, ptr %1942, align 4, !tbaa !149
  br label %1943

1943:                                             ; preds = %1934, %1927
  %1944 = load ptr, ptr %101, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1944)
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #14
  br label %1945

1945:                                             ; preds = %1943, %1881
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #14
  br label %1946

1946:                                             ; preds = %1945, %1878
  br label %1947

1947:                                             ; preds = %1946, %1877
  br label %1948

1948:                                             ; preds = %1947, %1774
  br label %1949

1949:                                             ; preds = %1948, %1762
  br label %1950

1950:                                             ; preds = %1949, %1755
  br label %1951

1951:                                             ; preds = %1950, %1752
  br label %1952

1952:                                             ; preds = %1951, %1707
  br label %1953

1953:                                             ; preds = %1952, %1668
  br label %1954

1954:                                             ; preds = %1953, %1661
  br label %1955

1955:                                             ; preds = %1954, %1645
  br label %1956

1956:                                             ; preds = %1955, %1620
  br label %1957

1957:                                             ; preds = %1956, %1603
  br label %1958

1958:                                             ; preds = %1957, %1597
  br label %1959

1959:                                             ; preds = %1958, %1566
  br label %1960

1960:                                             ; preds = %1959, %1533
  br label %1961

1961:                                             ; preds = %1960, %1517
  %1962 = load ptr, ptr %43, align 8, !tbaa !5
  %1963 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %1962)
  br i1 %1963, label %1964, label %1967

1964:                                             ; preds = %1961
  %1965 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %1966 = trunc i8 %1965 to i1
  br label %1967

1967:                                             ; preds = %1964, %1961
  %1968 = phi i1 [ false, %1961 ], [ %1966, %1964 ]
  %1969 = zext i1 %1968 to i32
  %1970 = load i8, ptr %61, align 1, !tbaa !43, !range !41, !noundef !42
  %1971 = trunc i8 %1970 to i1
  %1972 = zext i1 %1971 to i32
  %1973 = or i32 %1972, %1969
  %1974 = icmp ne i32 %1973, 0
  %1975 = zext i1 %1974 to i8
  store i8 %1975, ptr %61, align 1, !tbaa !43
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #14
  br label %1976

1976:                                             ; preds = %1967, %1286, %1281, %1275
  %1977 = load ptr, ptr %20, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.ImGuiContext, ptr %1977, i32 0, i32 45
  %1979 = load i32, ptr %1978, align 8, !tbaa !101
  %1980 = load i32, ptr %29, align 4, !tbaa !9
  %1981 = icmp eq i32 %1979, %1980
  br i1 %1981, label %1982, label %2470

1982:                                             ; preds = %1976
  %1983 = load ptr, ptr %43, align 8, !tbaa !5
  %1984 = icmp ne ptr %1983, null
  br i1 %1984, label %1985, label %1986

1985:                                             ; preds = %1982
  br label %1988

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

1987:                                             ; No predecessors!
  br label %1988

1988:                                             ; preds = %1987, %1985
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #14
  store ptr null, 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
  %1989 = load i8, ptr %78, align 1, !tbaa !43, !range !41, !noundef !42
  %1990 = trunc i8 %1989 to i1
  br i1 %1990, label %1991, label %2056

1991:                                             ; preds = %1988
  %1992 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %1993 = trunc i8 %1992 to i1
  br i1 %1993, label %2055, label %1994

1994:                                             ; preds = %1991
  %1995 = load ptr, ptr %12, align 8, !tbaa !5
  %1996 = load ptr, ptr %43, align 8, !tbaa !5
  %1997 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1996, i32 0, i32 5
  %1998 = getelementptr inbounds %struct.ImVector.25, ptr %1997, i32 0, i32 2
  %1999 = load ptr, ptr %1998, align 8, !tbaa !108
  %2000 = call i32 @strcmp(ptr noundef %1995, ptr noundef %1999) #16
  %2001 = icmp ne i32 %2000, 0
  br i1 %2001, label %2002, label %2055

2002:                                             ; preds = %1994
  %2003 = load ptr, ptr %43, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2003, i32 0, i32 5
  %2005 = getelementptr inbounds %struct.ImVector.25, ptr %2004, i32 0, i32 2
  %2006 = load ptr, ptr %2005, align 8, !tbaa !108
  store ptr %2006, ptr %105, align 8, !tbaa !5
  %2007 = load ptr, ptr %43, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2007, i32 0, i32 5
  %2009 = getelementptr inbounds %struct.ImVector.25, ptr %2008, i32 0, i32 0
  %2010 = load i32, ptr %2009, align 8, !tbaa !165
  %2011 = sub nsw i32 %2010, 1
  store i32 %2011, ptr %106, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107)
  %2012 = load i32, ptr %106, align 4, !tbaa !9
  %2013 = icmp sgt i32 %2012, 0
  br i1 %2013, label %2014, label %2039

2014:                                             ; preds = %2002
  %2015 = load ptr, ptr %105, align 8, !tbaa !5
  %2016 = load ptr, ptr %105, align 8, !tbaa !5
  %2017 = load i32, ptr %106, align 4, !tbaa !9
  %2018 = sext i32 %2017 to i64
  %2019 = getelementptr inbounds i8, ptr %2016, i64 %2018
  %2020 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2015, ptr noundef %2019)
          to label %2021 unwind label %2035

2021:                                             ; preds = %2014
  %2022 = add nsw i32 %2020, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %107, i32 noundef %2022)
          to label %2023 unwind label %2035

2023:                                             ; preds = %2021
  %2024 = getelementptr inbounds %struct.ImVector.5, ptr %107, i32 0, i32 2
  %2025 = load ptr, ptr %2024, align 8, !tbaa !166
  %2026 = getelementptr inbounds %struct.ImVector.5, ptr %107, i32 0, i32 0
  %2027 = load i32, ptr %2026, align 8, !tbaa !167
  %2028 = load ptr, ptr %105, align 8, !tbaa !5
  %2029 = load ptr, ptr %105, align 8, !tbaa !5
  %2030 = load i32, ptr %106, align 4, !tbaa !9
  %2031 = sext i32 %2030 to i64
  %2032 = getelementptr inbounds i8, ptr %2029, i64 %2031
  %2033 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2025, i32 noundef %2027, ptr noundef %2028, ptr noundef %2032, ptr noundef null)
          to label %2034 unwind label %2035

2034:                                             ; preds = %2023
  br label %2039

2035:                                             ; preds = %2052, %2023, %2021, %2014
  %2036 = landingpad { ptr, i32 }
          cleanup
  %2037 = extractvalue { ptr, i32 } %2036, 0
  store ptr %2037, ptr %108, align 8
  %2038 = extractvalue { ptr, i32 } %2036, 1
  store i32 %2038, ptr %109, align 4
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #14
  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 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #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 %60) #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 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  br label %3258

2039:                                             ; preds = %2034, %2002
  %2040 = load ptr, ptr %43, align 8, !tbaa !5
  %2041 = load ptr, ptr %43, align 8, !tbaa !5
  %2042 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2041, i32 0, i32 9
  %2043 = getelementptr inbounds %struct.ImVector.5, ptr %107, i32 0, i32 2
  %2044 = load ptr, ptr %2043, align 8, !tbaa !166
  %2045 = load i32, ptr %106, align 4, !tbaa !9
  %2046 = icmp sgt i32 %2045, 0
  br i1 %2046, label %2047, label %2051

2047:                                             ; preds = %2039
  %2048 = getelementptr inbounds %struct.ImVector.5, ptr %107, i32 0, i32 0
  %2049 = load i32, ptr %2048, align 8, !tbaa !167
  %2050 = sub nsw i32 %2049, 1
  br label %2052

2051:                                             ; preds = %2039
  br label %2052

2052:                                             ; preds = %2051, %2047
  %2053 = phi i32 [ %2050, %2047 ], [ 0, %2051 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2040, ptr noundef %2042, ptr noundef %2044, i32 noundef %2053)
          to label %2054 unwind label %2035

2054:                                             ; preds = %2052
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %107) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #14
  br label %2055

2055:                                             ; preds = %2054, %1994, %1991
  br label %2056

2056:                                             ; preds = %2055, %1988
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #14
  %2057 = load i8, ptr %78, align 1, !tbaa !43, !range !41, !noundef !42
  %2058 = trunc i8 %2057 to i1
  br i1 %2058, label %2059, label %2068

2059:                                             ; preds = %2056
  %2060 = load i8, ptr %63, align 1, !tbaa !43, !range !41, !noundef !42
  %2061 = trunc i8 %2060 to i1
  br i1 %2061, label %2062, label %2066

2062:                                             ; preds = %2059
  %2063 = load i32, ptr %15, align 4, !tbaa !9
  %2064 = and i32 %2063, 32
  %2065 = icmp ne i32 %2064, 0
  br label %2066

2066:                                             ; preds = %2062, %2059
  %2067 = phi i1 [ false, %2059 ], [ %2065, %2062 ]
  br label %2068

2068:                                             ; preds = %2066, %2056
  %2069 = phi i1 [ true, %2056 ], [ %2067, %2066 ]
  %2070 = zext i1 %2069 to i8
  store i8 %2070, ptr %110, align 1, !tbaa !43
  %2071 = load i8, ptr %110, align 1, !tbaa !43, !range !41, !noundef !42
  %2072 = trunc i8 %2071 to i1
  br i1 %2072, label %2073, label %2410

2073:                                             ; preds = %2068
  %2074 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %2075 = trunc i8 %2074 to i1
  br i1 %2075, label %2100, label %2076

2076:                                             ; preds = %2073
  %2077 = load ptr, ptr %43, align 8, !tbaa !5
  %2078 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2077, i32 0, i32 6
  store i8 1, ptr %2078, align 8, !tbaa !109
  %2079 = load ptr, ptr %43, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2079, i32 0, i32 4
  %2081 = load ptr, ptr %43, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2081, i32 0, i32 3
  %2083 = getelementptr inbounds %struct.ImVector.5, ptr %2082, i32 0, i32 0
  %2084 = load i32, ptr %2083, align 8, !tbaa !120
  %2085 = mul nsw i32 %2084, 4
  %2086 = add nsw i32 %2085, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2080, i32 noundef %2086)
  %2087 = load ptr, ptr %43, align 8, !tbaa !5
  %2088 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2087, i32 0, i32 4
  %2089 = getelementptr inbounds %struct.ImVector.25, ptr %2088, i32 0, i32 2
  %2090 = load ptr, ptr %2089, align 8, !tbaa !121
  %2091 = load ptr, ptr %43, align 8, !tbaa !5
  %2092 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2091, i32 0, i32 4
  %2093 = getelementptr inbounds %struct.ImVector.25, ptr %2092, i32 0, i32 0
  %2094 = load i32, ptr %2093, align 8, !tbaa !168
  %2095 = load ptr, ptr %43, align 8, !tbaa !5
  %2096 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2095, i32 0, i32 3
  %2097 = getelementptr inbounds %struct.ImVector.5, ptr %2096, i32 0, i32 2
  %2098 = load ptr, ptr %2097, align 8, !tbaa !110
  %2099 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2090, i32 noundef %2094, ptr noundef %2098, ptr noundef null)
  br label %2100

2100:                                             ; preds = %2076, %2073
  %2101 = load i32, ptr %15, align 4, !tbaa !9
  %2102 = and i32 %2101, 524736
  %2103 = icmp ne i32 %2102, 0
  br i1 %2103, label %2104, label %2390

2104:                                             ; preds = %2100
  %2105 = load ptr, ptr %16, align 8, !tbaa !5
  %2106 = icmp ne ptr %2105, null
  br i1 %2106, label %2107, label %2108

2107:                                             ; preds = %2104
  br label %2110

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

2109:                                             ; No predecessors!
  br label %2110

2110:                                             ; preds = %2109, %2107
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #14
  store i32 0, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #14
  store i32 22, ptr %112, align 4, !tbaa !9
  %2111 = load i32, ptr %15, align 4, !tbaa !9
  %2112 = and i32 %2111, 64
  %2113 = icmp ne i32 %2112, 0
  br i1 %2113, label %2114, label %2117

2114:                                             ; preds = %2110
  %2115 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %2115, label %2116, label %2117

2116:                                             ; preds = %2114
  store i32 64, ptr %111, align 4, !tbaa !9
  store i32 0, ptr %112, align 4, !tbaa !9
  br label %2150

2117:                                             ; preds = %2114, %2110
  %2118 = load i32, ptr %15, align 4, !tbaa !9
  %2119 = and i32 %2118, 128
  %2120 = icmp ne i32 %2119, 0
  br i1 %2120, label %2121, label %2124

2121:                                             ; preds = %2117
  %2122 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %2122, label %2123, label %2124

2123:                                             ; preds = %2121
  store i32 128, ptr %111, align 4, !tbaa !9
  store i32 3, ptr %112, align 4, !tbaa !9
  br label %2149

2124:                                             ; preds = %2121, %2117
  %2125 = load i32, ptr %15, align 4, !tbaa !9
  %2126 = and i32 %2125, 128
  %2127 = icmp ne i32 %2126, 0
  br i1 %2127, label %2128, label %2131

2128:                                             ; preds = %2124
  %2129 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %2129, label %2130, label %2131

2130:                                             ; preds = %2128
  store i32 128, ptr %111, align 4, !tbaa !9
  store i32 4, ptr %112, align 4, !tbaa !9
  br label %2148

2131:                                             ; preds = %2128, %2124
  %2132 = load i32, ptr %15, align 4, !tbaa !9
  %2133 = and i32 %2132, 524288
  %2134 = icmp ne i32 %2133, 0
  br i1 %2134, label %2135, label %2141

2135:                                             ; preds = %2131
  %2136 = load ptr, ptr %43, align 8, !tbaa !5
  %2137 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2136, i32 0, i32 13
  %2138 = load i8, ptr %2137, align 2, !tbaa !133, !range !41, !noundef !42
  %2139 = trunc i8 %2138 to i1
  br i1 %2139, label %2140, label %2141

2140:                                             ; preds = %2135
  store i32 524288, ptr %111, align 4, !tbaa !9
  br label %2147

2141:                                             ; preds = %2135, %2131
  %2142 = load i32, ptr %15, align 4, !tbaa !9
  %2143 = and i32 %2142, 256
  %2144 = icmp ne i32 %2143, 0
  br i1 %2144, label %2145, label %2146

2145:                                             ; preds = %2141
  store i32 256, ptr %111, align 4, !tbaa !9
  br label %2146

2146:                                             ; preds = %2145, %2141
  br label %2147

2147:                                             ; preds = %2146, %2140
  br label %2148

2148:                                             ; preds = %2147, %2130
  br label %2149

2149:                                             ; preds = %2148, %2123
  br label %2150

2150:                                             ; preds = %2149, %2116
  %2151 = load i32, ptr %111, align 4, !tbaa !9
  %2152 = icmp ne i32 %2151, 0
  br i1 %2152, label %2153, label %2389

2153:                                             ; preds = %2150
  call void @llvm.lifetime.start.p0(i64 56, ptr %113) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %113)
  call void @llvm.memset.p0.i64(ptr align 8 %113, i8 0, i64 56, i1 false)
  %2154 = load i32, ptr %111, align 4, !tbaa !9
  %2155 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 0
  store i32 %2154, ptr %2155, align 8, !tbaa !169
  %2156 = load i32, ptr %15, align 4, !tbaa !9
  %2157 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 1
  store i32 %2156, ptr %2157, align 4, !tbaa !171
  %2158 = load ptr, ptr %17, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 2
  store ptr %2158, ptr %2159, align 8, !tbaa !172
  %2160 = load i32, ptr %112, align 4, !tbaa !9
  %2161 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 4
  store i32 %2160, ptr %2161, align 4, !tbaa !173
  %2162 = load ptr, ptr %43, align 8, !tbaa !5
  %2163 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2162, i32 0, i32 4
  %2164 = getelementptr inbounds %struct.ImVector.25, ptr %2163, i32 0, i32 2
  %2165 = load ptr, ptr %2164, align 8, !tbaa !121
  %2166 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  store ptr %2165, ptr %2166, align 8, !tbaa !174
  %2167 = load ptr, ptr %43, align 8, !tbaa !5
  %2168 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2167, i32 0, i32 2
  %2169 = load i32, ptr %2168, align 8, !tbaa !112
  %2170 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 6
  store i32 %2169, ptr %2170, align 8, !tbaa !175
  %2171 = load ptr, ptr %43, align 8, !tbaa !5
  %2172 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2171, i32 0, i32 7
  %2173 = load i32, ptr %2172, align 4, !tbaa !134
  %2174 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 7
  store i32 %2173, ptr %2174, align 4, !tbaa !176
  %2175 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 8
  store i8 0, ptr %2175, align 8, !tbaa !177
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #14
  %2176 = load ptr, ptr %43, align 8, !tbaa !5
  %2177 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2176, i32 0, i32 3
  %2178 = getelementptr inbounds %struct.ImVector.5, ptr %2177, i32 0, i32 2
  %2179 = load ptr, ptr %2178, align 8, !tbaa !110
  store ptr %2179, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #14
  %2180 = load ptr, ptr %114, align 8, !tbaa !5
  %2181 = load ptr, ptr %114, align 8, !tbaa !5
  %2182 = load ptr, ptr %43, align 8, !tbaa !5
  %2183 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2182, i32 0, i32 9
  %2184 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2183, i32 0, i32 0
  %2185 = load i32, ptr %2184, align 4, !tbaa !178
  %2186 = sext i32 %2185 to i64
  %2187 = getelementptr inbounds i16, ptr %2181, i64 %2186
  %2188 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2180, ptr noundef %2187)
  %2189 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 9
  store i32 %2188, ptr %2189, align 4, !tbaa !179
  store i32 %2188, ptr %115, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #14
  %2190 = load ptr, ptr %114, align 8, !tbaa !5
  %2191 = load ptr, ptr %114, align 8, !tbaa !5
  %2192 = load ptr, ptr %43, align 8, !tbaa !5
  %2193 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2192, i32 0, i32 9
  %2194 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2193, i32 0, i32 1
  %2195 = load i32, ptr %2194, align 4, !tbaa !162
  %2196 = sext i32 %2195 to i64
  %2197 = getelementptr inbounds i16, ptr %2191, i64 %2196
  %2198 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2190, ptr noundef %2197)
  %2199 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 10
  store i32 %2198, ptr %2199, align 8, !tbaa !180
  store i32 %2198, ptr %116, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #14
  %2200 = load ptr, ptr %114, align 8, !tbaa !5
  %2201 = load ptr, ptr %114, align 8, !tbaa !5
  %2202 = load ptr, ptr %43, align 8, !tbaa !5
  %2203 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2202, i32 0, i32 9
  %2204 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2203, i32 0, i32 2
  %2205 = load i32, ptr %2204, align 4, !tbaa !163
  %2206 = sext i32 %2205 to i64
  %2207 = getelementptr inbounds i16, ptr %2201, i64 %2206
  %2208 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2200, ptr noundef %2207)
  %2209 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 11
  store i32 %2208, ptr %2209, align 4, !tbaa !181
  store i32 %2208, ptr %117, align 4, !tbaa !9
  %2210 = load ptr, ptr %16, align 8, !tbaa !5
  %2211 = call noundef i32 %2210(ptr noundef %113)
  %2212 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2213 = load ptr, ptr %2212, align 8, !tbaa !174
  %2214 = load ptr, ptr %43, align 8, !tbaa !5
  %2215 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2214, i32 0, i32 4
  %2216 = getelementptr inbounds %struct.ImVector.25, ptr %2215, i32 0, i32 2
  %2217 = load ptr, ptr %2216, align 8, !tbaa !121
  %2218 = icmp eq ptr %2213, %2217
  br i1 %2218, label %2219, label %2220

2219:                                             ; preds = %2153
  br label %2222

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

2221:                                             ; No predecessors!
  br label %2222

2222:                                             ; preds = %2221, %2219
  %2223 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 7
  %2224 = load i32, ptr %2223, align 4, !tbaa !176
  %2225 = load ptr, ptr %43, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2225, i32 0, i32 7
  %2227 = load i32, ptr %2226, align 4, !tbaa !134
  %2228 = icmp eq i32 %2224, %2227
  br i1 %2228, label %2229, label %2230

2229:                                             ; preds = %2222
  br label %2232

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

2231:                                             ; No predecessors!
  br label %2232

2232:                                             ; preds = %2231, %2229
  %2233 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 1
  %2234 = load i32, ptr %2233, align 4, !tbaa !171
  %2235 = load i32, ptr %15, align 4, !tbaa !9
  %2236 = icmp eq i32 %2234, %2235
  br i1 %2236, label %2237, label %2238

2237:                                             ; preds = %2232
  br label %2240

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

2239:                                             ; No predecessors!
  br label %2240

2240:                                             ; preds = %2239, %2237
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #14
  %2241 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 8
  %2242 = load i8, ptr %2241, align 8, !tbaa !177, !range !41, !noundef !42
  %2243 = trunc i8 %2242 to i1
  %2244 = zext i1 %2243 to i8
  store i8 %2244, ptr %118, align 1, !tbaa !43
  %2245 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 9
  %2246 = load i32, ptr %2245, align 4, !tbaa !179
  %2247 = load i32, ptr %115, align 4, !tbaa !9
  %2248 = icmp ne i32 %2246, %2247
  br i1 %2248, label %2252, label %2249

2249:                                             ; preds = %2240
  %2250 = load i8, ptr %118, align 1, !tbaa !43, !range !41, !noundef !42
  %2251 = trunc i8 %2250 to i1
  br i1 %2251, label %2252, label %2267

2252:                                             ; preds = %2249, %2240
  %2253 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2254 = load ptr, ptr %2253, align 8, !tbaa !174
  %2255 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2256 = load ptr, ptr %2255, align 8, !tbaa !174
  %2257 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 9
  %2258 = load i32, ptr %2257, align 4, !tbaa !179
  %2259 = sext i32 %2258 to i64
  %2260 = getelementptr inbounds i8, ptr %2256, i64 %2259
  %2261 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2254, ptr noundef %2260)
  %2262 = load ptr, ptr %43, align 8, !tbaa !5
  %2263 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2262, i32 0, i32 9
  %2264 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2263, i32 0, i32 0
  store i32 %2261, ptr %2264, align 4, !tbaa !178
  %2265 = load ptr, ptr %43, align 8, !tbaa !5
  %2266 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2265, i32 0, i32 11
  store i8 1, ptr %2266, align 4, !tbaa !149
  br label %2267

2267:                                             ; preds = %2252, %2249
  %2268 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 10
  %2269 = load i32, ptr %2268, align 8, !tbaa !180
  %2270 = load i32, ptr %116, align 4, !tbaa !9
  %2271 = icmp ne i32 %2269, %2270
  br i1 %2271, label %2275, label %2272

2272:                                             ; preds = %2267
  %2273 = load i8, ptr %118, align 1, !tbaa !43, !range !41, !noundef !42
  %2274 = trunc i8 %2273 to i1
  br i1 %2274, label %2275, label %2301

2275:                                             ; preds = %2272, %2267
  %2276 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 10
  %2277 = load i32, ptr %2276, align 8, !tbaa !180
  %2278 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 9
  %2279 = load i32, ptr %2278, align 4, !tbaa !179
  %2280 = icmp eq i32 %2277, %2279
  br i1 %2280, label %2281, label %2286

2281:                                             ; preds = %2275
  %2282 = load ptr, ptr %43, align 8, !tbaa !5
  %2283 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2282, i32 0, i32 9
  %2284 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2283, i32 0, i32 0
  %2285 = load i32, ptr %2284, align 4, !tbaa !178
  br label %2296

2286:                                             ; preds = %2275
  %2287 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2288 = load ptr, ptr %2287, align 8, !tbaa !174
  %2289 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2290 = load ptr, ptr %2289, align 8, !tbaa !174
  %2291 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 10
  %2292 = load i32, ptr %2291, align 8, !tbaa !180
  %2293 = sext i32 %2292 to i64
  %2294 = getelementptr inbounds i8, ptr %2290, i64 %2293
  %2295 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2288, ptr noundef %2294)
  br label %2296

2296:                                             ; preds = %2286, %2281
  %2297 = phi i32 [ %2285, %2281 ], [ %2295, %2286 ]
  %2298 = load ptr, ptr %43, align 8, !tbaa !5
  %2299 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2298, i32 0, i32 9
  %2300 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2299, i32 0, i32 1
  store i32 %2297, ptr %2300, align 4, !tbaa !162
  br label %2301

2301:                                             ; preds = %2296, %2272
  %2302 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 11
  %2303 = load i32, ptr %2302, align 4, !tbaa !181
  %2304 = load i32, ptr %117, align 4, !tbaa !9
  %2305 = icmp ne i32 %2303, %2304
  br i1 %2305, label %2309, label %2306

2306:                                             ; preds = %2301
  %2307 = load i8, ptr %118, align 1, !tbaa !43, !range !41, !noundef !42
  %2308 = trunc i8 %2307 to i1
  br i1 %2308, label %2309, label %2335

2309:                                             ; preds = %2306, %2301
  %2310 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 11
  %2311 = load i32, ptr %2310, align 4, !tbaa !181
  %2312 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 10
  %2313 = load i32, ptr %2312, align 8, !tbaa !180
  %2314 = icmp eq i32 %2311, %2313
  br i1 %2314, label %2315, label %2320

2315:                                             ; preds = %2309
  %2316 = load ptr, ptr %43, align 8, !tbaa !5
  %2317 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2316, i32 0, i32 9
  %2318 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2317, i32 0, i32 1
  %2319 = load i32, ptr %2318, align 4, !tbaa !162
  br label %2330

2320:                                             ; preds = %2309
  %2321 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2322 = load ptr, ptr %2321, align 8, !tbaa !174
  %2323 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2324 = load ptr, ptr %2323, align 8, !tbaa !174
  %2325 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 11
  %2326 = load i32, ptr %2325, align 4, !tbaa !181
  %2327 = sext i32 %2326 to i64
  %2328 = getelementptr inbounds i8, ptr %2324, i64 %2327
  %2329 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2322, ptr noundef %2328)
  br label %2330

2330:                                             ; preds = %2320, %2315
  %2331 = phi i32 [ %2319, %2315 ], [ %2329, %2320 ]
  %2332 = load ptr, ptr %43, align 8, !tbaa !5
  %2333 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2332, i32 0, i32 9
  %2334 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2333, i32 0, i32 2
  store i32 %2331, ptr %2334, align 4, !tbaa !163
  br label %2335

2335:                                             ; preds = %2330, %2306
  %2336 = load i8, ptr %118, align 1, !tbaa !43, !range !41, !noundef !42
  %2337 = trunc i8 %2336 to i1
  br i1 %2337, label %2338, label %2388

2338:                                             ; preds = %2335
  %2339 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 6
  %2340 = load i32, ptr %2339, align 8, !tbaa !175
  %2341 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2342 = load ptr, ptr %2341, align 8, !tbaa !174
  %2343 = call i64 @strlen(ptr noundef %2342) #16
  %2344 = trunc i64 %2343 to i32
  %2345 = icmp eq i32 %2340, %2344
  br i1 %2345, label %2346, label %2347

2346:                                             ; preds = %2338
  br label %2349

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

2348:                                             ; No predecessors!
  br label %2349

2349:                                             ; preds = %2348, %2346
  %2350 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 6
  %2351 = load i32, ptr %2350, align 8, !tbaa !175
  %2352 = load i32, ptr %69, align 4, !tbaa !9
  %2353 = icmp sgt i32 %2351, %2352
  br i1 %2353, label %2354, label %2369

2354:                                             ; preds = %2349
  %2355 = load i8, ptr %28, align 1, !tbaa !43, !range !41, !noundef !42
  %2356 = trunc i8 %2355 to i1
  br i1 %2356, label %2357, label %2369

2357:                                             ; preds = %2354
  %2358 = load ptr, ptr %43, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2358, i32 0, i32 3
  %2360 = load ptr, ptr %43, align 8, !tbaa !5
  %2361 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2360, i32 0, i32 3
  %2362 = getelementptr inbounds %struct.ImVector.5, ptr %2361, i32 0, i32 0
  %2363 = load i32, ptr %2362, align 8, !tbaa !120
  %2364 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 6
  %2365 = load i32, ptr %2364, align 8, !tbaa !175
  %2366 = load i32, ptr %69, align 4, !tbaa !9
  %2367 = sub nsw i32 %2365, %2366
  %2368 = add nsw i32 %2363, %2367
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2359, i32 noundef %2368)
  br label %2369

2369:                                             ; preds = %2357, %2354, %2349
  %2370 = load ptr, ptr %43, align 8, !tbaa !5
  %2371 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2370, i32 0, i32 3
  %2372 = getelementptr inbounds %struct.ImVector.5, ptr %2371, i32 0, i32 2
  %2373 = load ptr, ptr %2372, align 8, !tbaa !110
  %2374 = load ptr, ptr %43, align 8, !tbaa !5
  %2375 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2374, i32 0, i32 3
  %2376 = getelementptr inbounds %struct.ImVector.5, ptr %2375, i32 0, i32 0
  %2377 = load i32, ptr %2376, align 8, !tbaa !120
  %2378 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 5
  %2379 = load ptr, ptr %2378, align 8, !tbaa !174
  %2380 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2373, i32 noundef %2377, ptr noundef %2379, ptr noundef null, ptr noundef null)
  %2381 = load ptr, ptr %43, align 8, !tbaa !5
  %2382 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2381, i32 0, i32 1
  store i32 %2380, ptr %2382, align 4, !tbaa !111
  %2383 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %113, i32 0, i32 6
  %2384 = load i32, ptr %2383, align 8, !tbaa !175
  %2385 = load ptr, ptr %43, align 8, !tbaa !5
  %2386 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2385, i32 0, i32 2
  store i32 %2384, ptr %2386, align 8, !tbaa !112
  %2387 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %2387)
  br label %2388

2388:                                             ; preds = %2369, %2335
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #14
  call void @llvm.lifetime.end.p0(i64 56, ptr %113) #14
  br label %2389

2389:                                             ; preds = %2388, %2150
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #14
  br label %2390

2390:                                             ; preds = %2389, %2100
  %2391 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %2392 = trunc i8 %2391 to i1
  br i1 %2392, label %2409, label %2393

2393:                                             ; preds = %2390
  %2394 = load ptr, ptr %43, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2394, i32 0, i32 4
  %2396 = getelementptr inbounds %struct.ImVector.25, ptr %2395, i32 0, i32 2
  %2397 = load ptr, ptr %2396, align 8, !tbaa !121
  %2398 = load ptr, ptr %12, align 8, !tbaa !5
  %2399 = call i32 @strcmp(ptr noundef %2397, ptr noundef %2398) #16
  %2400 = icmp ne i32 %2399, 0
  br i1 %2400, label %2401, label %2409

2401:                                             ; preds = %2393
  %2402 = load ptr, ptr %43, align 8, !tbaa !5
  %2403 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2402, i32 0, i32 4
  %2404 = getelementptr inbounds %struct.ImVector.25, ptr %2403, i32 0, i32 2
  %2405 = load ptr, ptr %2404, align 8, !tbaa !121
  store ptr %2405, ptr %105, align 8, !tbaa !5
  %2406 = load ptr, ptr %43, align 8, !tbaa !5
  %2407 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2406, i32 0, i32 2
  %2408 = load i32, ptr %2407, align 8, !tbaa !112
  store i32 %2408, ptr %106, align 4, !tbaa !9
  br label %2409

2409:                                             ; preds = %2401, %2393, %2390
  br label %2410

2410:                                             ; preds = %2409, %2068
  %2411 = load ptr, ptr %105, align 8, !tbaa !5
  %2412 = icmp ne ptr %2411, null
  br i1 %2412, label %2413, label %2463

2413:                                             ; preds = %2410
  %2414 = load i32, ptr %106, align 4, !tbaa !9
  %2415 = icmp sge i32 %2414, 0
  br i1 %2415, label %2416, label %2417

2416:                                             ; preds = %2413
  br label %2419

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

2418:                                             ; No predecessors!
  br label %2419

2419:                                             ; preds = %2418, %2416
  %2420 = load i8, ptr %28, align 1, !tbaa !43, !range !41, !noundef !42
  %2421 = trunc i8 %2420 to i1
  br i1 %2421, label %2422, label %2455

2422:                                             ; preds = %2419
  call void @llvm.lifetime.start.p0(i64 56, ptr %119) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %119)
  %2423 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 0
  store i32 262144, ptr %2423, align 8, !tbaa !169
  %2424 = load i32, ptr %15, align 4, !tbaa !9
  %2425 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 1
  store i32 %2424, ptr %2425, align 4, !tbaa !171
  %2426 = load ptr, ptr %12, align 8, !tbaa !5
  %2427 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  store ptr %2426, ptr %2427, align 8, !tbaa !174
  %2428 = load i32, ptr %106, align 4, !tbaa !9
  %2429 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  store i32 %2428, ptr %2429, align 8, !tbaa !175
  %2430 = load i32, ptr %13, align 4, !tbaa !9
  %2431 = load i32, ptr %106, align 4, !tbaa !9
  %2432 = add nsw i32 %2431, 1
  %2433 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2430, i32 noundef %2432)
  %2434 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 7
  store i32 %2433, ptr %2434, align 4, !tbaa !176
  %2435 = load ptr, ptr %17, align 8, !tbaa !5
  %2436 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 2
  store ptr %2435, ptr %2436, align 8, !tbaa !172
  %2437 = load ptr, ptr %16, align 8, !tbaa !5
  %2438 = call noundef i32 %2437(ptr noundef %119)
  %2439 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 5
  %2440 = load ptr, ptr %2439, align 8, !tbaa !174
  store ptr %2440, ptr %12, align 8, !tbaa !5
  %2441 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 7
  %2442 = load i32, ptr %2441, align 4, !tbaa !176
  store i32 %2442, ptr %13, align 4, !tbaa !9
  %2443 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %119, i32 0, i32 6
  %2444 = load i32, ptr %2443, align 8, !tbaa !175
  %2445 = load i32, ptr %13, align 4, !tbaa !9
  %2446 = sub nsw i32 %2445, 1
  %2447 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2444, i32 noundef %2446)
  store i32 %2447, ptr %106, align 4, !tbaa !9
  %2448 = load i32, ptr %106, align 4, !tbaa !9
  %2449 = load i32, ptr %13, align 4, !tbaa !9
  %2450 = icmp sle i32 %2448, %2449
  br i1 %2450, label %2451, label %2452

2451:                                             ; preds = %2422
  br label %2454

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

2453:                                             ; No predecessors!
  br label %2454

2454:                                             ; preds = %2453, %2451
  call void @llvm.lifetime.end.p0(i64 56, ptr %119) #14
  br label %2455

2455:                                             ; preds = %2454, %2419
  %2456 = load ptr, ptr %12, align 8, !tbaa !5
  %2457 = load ptr, ptr %105, align 8, !tbaa !5
  %2458 = load i32, ptr %106, align 4, !tbaa !9
  %2459 = add nsw i32 %2458, 1
  %2460 = load i32, ptr %13, align 4, !tbaa !9
  %2461 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2459, i32 noundef %2460)
  %2462 = sext i32 %2461 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2456, ptr noundef %2457, i64 noundef %2462)
  store i8 1, ptr %62, align 1, !tbaa !43
  br label %2463

2463:                                             ; preds = %2455, %2410
  %2464 = load ptr, ptr %43, align 8, !tbaa !5
  %2465 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2464, i32 0, i32 14
  store i32 0, ptr %2465, align 8, !tbaa !135
  %2466 = load ptr, ptr %43, align 8, !tbaa !5
  %2467 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2466, i32 0, i32 15
  store ptr null, ptr %2467, align 8, !tbaa !136
  %2468 = load ptr, ptr %43, align 8, !tbaa !5
  %2469 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2468, i32 0, i32 16
  store ptr null, ptr %2469, align 8, !tbaa !137
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #14
  br label %2470

2470:                                             ; preds = %2463, %1976
  %2471 = load i8, ptr %51, align 1, !tbaa !43, !range !41, !noundef !42
  %2472 = trunc i8 %2471 to i1
  br i1 %2472, label %2473, label %2480

2473:                                             ; preds = %2470
  %2474 = load ptr, ptr %20, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.ImGuiContext, ptr %2474, i32 0, i32 45
  %2476 = load i32, ptr %2475, align 8, !tbaa !101
  %2477 = load i32, ptr %29, align 4, !tbaa !9
  %2478 = icmp eq i32 %2476, %2477
  br i1 %2478, label %2479, label %2480

2479:                                             ; preds = %2473
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2480

2480:                                             ; preds = %2479, %2473, %2470
  %2481 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %2482 = trunc i8 %2481 to i1
  br i1 %2482, label %2493, label %2483

2483:                                             ; preds = %2480
  %2484 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2484, i32 noundef 1)
  %2485 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %120, ptr align 4 %2485, i64 8, i1 false), !tbaa.struct !44
  %2486 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %121, ptr align 4 %2486, i64 8, i1 false), !tbaa.struct !44
  %2487 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2488 = load ptr, ptr %22, align 8, !tbaa !5
  %2489 = getelementptr inbounds %struct.ImGuiStyle, ptr %2488, i32 0, i32 12
  %2490 = load float, ptr %2489, align 4, !tbaa !91
  %2491 = load <2 x float>, ptr %120, align 4
  %2492 = load <2 x float>, ptr %121, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2491, <2 x float> %2492, i32 noundef %2487, i1 noundef zeroext true, float noundef %2490)
  br label %2493

2493:                                             ; preds = %2483, %2480
  call void @llvm.lifetime.start.p0(i64 16, ptr %122) #14
  %2494 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2495 = getelementptr inbounds %struct.ImVec2, ptr %2494, i32 0, i32 0
  %2496 = load float, ptr %2495, align 4, !tbaa !141
  %2497 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2498 = getelementptr inbounds %struct.ImVec2, ptr %2497, i32 0, i32 1
  %2499 = load float, ptr %2498, align 4, !tbaa !182
  %2500 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2501 = getelementptr inbounds %struct.ImVec2, ptr %2500, i32 0, i32 0
  %2502 = load float, ptr %2501, align 4, !tbaa !141
  %2503 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2504 = load float, ptr %2503, align 4, !tbaa !89
  %2505 = fadd float %2502, %2504
  %2506 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2507 = getelementptr inbounds %struct.ImVec2, ptr %2506, i32 0, i32 1
  %2508 = load float, ptr %2507, align 4, !tbaa !182
  %2509 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2510 = load float, ptr %2509, align 4, !tbaa !87
  %2511 = fadd float %2508, %2510
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %122, float noundef %2496, float noundef %2499, float noundef %2505, float noundef %2511)
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #14
  %2512 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %2513 = trunc i8 %2512 to i1
  br i1 %2513, label %2514, label %2518

2514:                                             ; preds = %2493
  %2515 = load ptr, ptr %38, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.ImGuiWindow, ptr %2515, i32 0, i32 53
  %2517 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2516, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %123, ptr align 8 %2517, i64 8, i1 false), !tbaa.struct !44
  br label %2523

2518:                                             ; preds = %2493
  %2519 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2520 = load ptr, ptr %22, align 8, !tbaa !5
  %2521 = getelementptr inbounds %struct.ImGuiStyle, ptr %2520, i32 0, i32 11
  %2522 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2519, ptr noundef nonnull align 4 dereferenceable(8) %2521)
  store <2 x float> %2522, ptr %123, align 4
  br label %2523

2523:                                             ; preds = %2518, %2514
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %124, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #14
  store i32 2097152, ptr %125, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #14
  %2524 = load i8, ptr %65, align 1, !tbaa !43, !range !41, !noundef !42
  %2525 = trunc i8 %2524 to i1
  br i1 %2525, label %2526, label %2531

2526:                                             ; preds = %2523
  %2527 = load ptr, ptr %43, align 8, !tbaa !5
  %2528 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2527, i32 0, i32 4
  %2529 = getelementptr inbounds %struct.ImVector.25, ptr %2528, i32 0, i32 2
  %2530 = load ptr, ptr %2529, align 8, !tbaa !121
  br label %2533

2531:                                             ; preds = %2523
  %2532 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2533

2533:                                             ; preds = %2531, %2526
  %2534 = phi ptr [ %2530, %2526 ], [ %2532, %2531 ]
  store ptr %2534, ptr %126, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #14
  store ptr null, ptr %127, align 8, !tbaa !5
  %2535 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %2536 = trunc i8 %2535 to i1
  br i1 %2536, label %2537, label %2543

2537:                                             ; preds = %2533
  %2538 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2538, ptr %126, align 8, !tbaa !5
  %2539 = load ptr, ptr %11, align 8, !tbaa !5
  %2540 = load ptr, ptr %11, align 8, !tbaa !5
  %2541 = call i64 @strlen(ptr noundef %2540) #16
  %2542 = getelementptr inbounds i8, ptr %2539, i64 %2541
  store ptr %2542, ptr %127, align 8, !tbaa !5
  br label %2543

2543:                                             ; preds = %2537, %2533
  %2544 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %2545 = trunc i8 %2544 to i1
  br i1 %2545, label %2549, label %2546

2546:                                             ; preds = %2543
  %2547 = load i8, ptr %61, align 1, !tbaa !43, !range !41, !noundef !42
  %2548 = trunc i8 %2547 to i1
  br i1 %2548, label %2549, label %3110

2549:                                             ; preds = %2546, %2543
  %2550 = load ptr, ptr %43, align 8, !tbaa !5
  %2551 = icmp ne ptr %2550, null
  br i1 %2551, label %2552, label %2553

2552:                                             ; preds = %2549
  br label %2555

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

2554:                                             ; No predecessors!
  br label %2555

2555:                                             ; preds = %2554, %2552
  %2556 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %2557 = trunc i8 %2556 to i1
  br i1 %2557, label %2565, label %2558

2558:                                             ; preds = %2555
  %2559 = load ptr, ptr %126, align 8, !tbaa !5
  %2560 = load ptr, ptr %43, align 8, !tbaa !5
  %2561 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2560, i32 0, i32 2
  %2562 = load i32, ptr %2561, align 8, !tbaa !112
  %2563 = sext i32 %2562 to i64
  %2564 = getelementptr inbounds i8, ptr %2559, i64 %2563
  store ptr %2564, ptr %127, align 8, !tbaa !5
  br label %2565

2565:                                             ; preds = %2558, %2555
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #14
  %2566 = load ptr, ptr %43, align 8, !tbaa !5
  %2567 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2566, i32 0, i32 3
  %2568 = getelementptr inbounds %struct.ImVector.5, ptr %2567, i32 0, i32 2
  %2569 = load ptr, ptr %2568, align 8, !tbaa !110
  store ptr %2569, ptr %128, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %129)
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %130)
  call void @llvm.lifetime.start.p0(i64 16, ptr %131) #14
  call void @llvm.memset.p0.i64(ptr align 16 %131, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %132, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #14
  store i32 0, ptr %133, align 4, !tbaa !9
  %2570 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %2571 = trunc i8 %2570 to i1
  br i1 %2571, label %2572, label %2584

2572:                                             ; preds = %2565
  %2573 = load ptr, ptr %128, align 8, !tbaa !5
  %2574 = load ptr, ptr %43, align 8, !tbaa !5
  %2575 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2574, i32 0, i32 9
  %2576 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2575, i32 0, i32 0
  %2577 = load i32, ptr %2576, align 4, !tbaa !178
  %2578 = sext i32 %2577 to i64
  %2579 = getelementptr inbounds i16, ptr %2573, i64 %2578
  %2580 = getelementptr inbounds [2 x ptr], ptr %131, i64 0, i64 0
  store ptr %2579, ptr %2580, align 16, !tbaa !5
  %2581 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 0
  store i32 -1, ptr %2581, align 4, !tbaa !9
  %2582 = load i32, ptr %133, align 4, !tbaa !9
  %2583 = add nsw i32 %2582, 1
  store i32 %2583, ptr %133, align 4, !tbaa !9
  br label %2584

2584:                                             ; preds = %2572, %2565
  %2585 = load i8, ptr %61, align 1, !tbaa !43, !range !41, !noundef !42
  %2586 = trunc i8 %2585 to i1
  br i1 %2586, label %2587, label %2604

2587:                                             ; preds = %2584
  %2588 = load ptr, ptr %128, align 8, !tbaa !5
  %2589 = load ptr, ptr %43, align 8, !tbaa !5
  %2590 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2589, i32 0, i32 9
  %2591 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2590, i32 0, i32 1
  %2592 = load i32, ptr %2591, align 4, !tbaa !162
  %2593 = load ptr, ptr %43, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2593, i32 0, i32 9
  %2595 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2594, i32 0, i32 2
  %2596 = load i32, ptr %2595, align 4, !tbaa !163
  %2597 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2592, i32 noundef %2596)
  %2598 = sext i32 %2597 to i64
  %2599 = getelementptr inbounds i16, ptr %2588, i64 %2598
  %2600 = getelementptr inbounds [2 x ptr], ptr %131, i64 0, i64 1
  store ptr %2599, ptr %2600, align 8, !tbaa !5
  %2601 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 1
  store i32 -1, ptr %2601, align 4, !tbaa !9
  %2602 = load i32, ptr %133, align 4, !tbaa !9
  %2603 = add nsw i32 %2602, 1
  store i32 %2603, ptr %133, align 4, !tbaa !9
  br label %2604

2604:                                             ; preds = %2587, %2584
  %2605 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %2606 = trunc i8 %2605 to i1
  %2607 = zext i1 %2606 to i64
  %2608 = select i1 %2606, i32 1, i32 0
  %2609 = load i32, ptr %133, align 4, !tbaa !9
  %2610 = add nsw i32 %2609, %2608
  store i32 %2610, ptr %133, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #14
  store i32 0, ptr %134, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #14
  %2611 = load ptr, ptr %128, align 8, !tbaa !5
  store ptr %2611, ptr %135, align 8, !tbaa !5
  br label %2612

2612:                                             ; preds = %2661, %2604
  %2613 = load ptr, ptr %135, align 8, !tbaa !5
  %2614 = load i16, ptr %2613, align 2, !tbaa !153
  %2615 = zext i16 %2614 to i32
  %2616 = icmp ne i32 %2615, 0
  br i1 %2616, label %2618, label %2617

2617:                                             ; preds = %2612
  store i32 7, ptr %19, align 4
  br label %2664

2618:                                             ; preds = %2612
  %2619 = load ptr, ptr %135, align 8, !tbaa !5
  %2620 = load i16, ptr %2619, align 2, !tbaa !153
  %2621 = zext i16 %2620 to i32
  %2622 = icmp eq i32 %2621, 10
  br i1 %2622, label %2623, label %2660

2623:                                             ; preds = %2618
  %2624 = load i32, ptr %134, align 4, !tbaa !9
  %2625 = add nsw i32 %2624, 1
  store i32 %2625, ptr %134, align 4, !tbaa !9
  %2626 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 0
  %2627 = load i32, ptr %2626, align 4, !tbaa !9
  %2628 = icmp eq i32 %2627, -1
  br i1 %2628, label %2629, label %2642

2629:                                             ; preds = %2623
  %2630 = load ptr, ptr %135, align 8, !tbaa !5
  %2631 = getelementptr inbounds [2 x ptr], ptr %131, i64 0, i64 0
  %2632 = load ptr, ptr %2631, align 16, !tbaa !5
  %2633 = icmp uge ptr %2630, %2632
  br i1 %2633, label %2634, label %2642

2634:                                             ; preds = %2629
  %2635 = load i32, ptr %134, align 4, !tbaa !9
  %2636 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 0
  store i32 %2635, ptr %2636, align 4, !tbaa !9
  %2637 = load i32, ptr %133, align 4, !tbaa !9
  %2638 = add nsw i32 %2637, -1
  store i32 %2638, ptr %133, align 4, !tbaa !9
  %2639 = icmp sle i32 %2638, 0
  br i1 %2639, label %2640, label %2641

2640:                                             ; preds = %2634
  store i32 7, ptr %19, align 4
  br label %2664

2641:                                             ; preds = %2634
  br label %2642

2642:                                             ; preds = %2641, %2629, %2623
  %2643 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 1
  %2644 = load i32, ptr %2643, align 4, !tbaa !9
  %2645 = icmp eq i32 %2644, -1
  br i1 %2645, label %2646, label %2659

2646:                                             ; preds = %2642
  %2647 = load ptr, ptr %135, align 8, !tbaa !5
  %2648 = getelementptr inbounds [2 x ptr], ptr %131, i64 0, i64 1
  %2649 = load ptr, ptr %2648, align 8, !tbaa !5
  %2650 = icmp uge ptr %2647, %2649
  br i1 %2650, label %2651, label %2659

2651:                                             ; preds = %2646
  %2652 = load i32, ptr %134, align 4, !tbaa !9
  %2653 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 1
  store i32 %2652, ptr %2653, align 4, !tbaa !9
  %2654 = load i32, ptr %133, align 4, !tbaa !9
  %2655 = add nsw i32 %2654, -1
  store i32 %2655, ptr %133, align 4, !tbaa !9
  %2656 = icmp sle i32 %2655, 0
  br i1 %2656, label %2657, label %2658

2657:                                             ; preds = %2651
  store i32 7, ptr %19, align 4
  br label %2664

2658:                                             ; preds = %2651
  br label %2659

2659:                                             ; preds = %2658, %2646, %2642
  br label %2660

2660:                                             ; preds = %2659, %2618
  br label %2661

2661:                                             ; preds = %2660
  %2662 = load ptr, ptr %135, align 8, !tbaa !5
  %2663 = getelementptr inbounds i16, ptr %2662, i32 1
  store ptr %2663, ptr %135, align 8, !tbaa !5
  br label %2612, !llvm.loop !183

2664:                                             ; preds = %2657, %2640, %2617
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #14
  br label %2665

2665:                                             ; preds = %2664
  %2666 = load i32, ptr %134, align 4, !tbaa !9
  %2667 = add nsw i32 %2666, 1
  store i32 %2667, ptr %134, align 4, !tbaa !9
  %2668 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 0
  %2669 = load i32, ptr %2668, align 4, !tbaa !9
  %2670 = icmp eq i32 %2669, -1
  br i1 %2670, label %2671, label %2674

2671:                                             ; preds = %2665
  %2672 = load i32, ptr %134, align 4, !tbaa !9
  %2673 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 0
  store i32 %2672, ptr %2673, align 4, !tbaa !9
  br label %2674

2674:                                             ; preds = %2671, %2665
  %2675 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 1
  %2676 = load i32, ptr %2675, align 4, !tbaa !9
  %2677 = icmp eq i32 %2676, -1
  br i1 %2677, label %2678, label %2681

2678:                                             ; preds = %2674
  %2679 = load i32, ptr %134, align 4, !tbaa !9
  %2680 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 1
  store i32 %2679, ptr %2680, align 4, !tbaa !9
  br label %2681

2681:                                             ; preds = %2678, %2674
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #14
  %2682 = getelementptr inbounds [2 x ptr], ptr %131, i64 0, i64 0
  %2683 = load ptr, ptr %2682, align 16, !tbaa !5
  %2684 = load ptr, ptr %128, align 8, !tbaa !5
  %2685 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2683, ptr noundef %2684)
  %2686 = getelementptr inbounds [2 x ptr], ptr %131, i64 0, i64 0
  %2687 = load ptr, ptr %2686, align 16, !tbaa !5
  %2688 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2685, ptr noundef %2687, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2688, ptr %136, align 4
  %2689 = getelementptr inbounds %struct.ImVec2, ptr %136, i32 0, i32 0
  %2690 = load float, ptr %2689, align 4, !tbaa !89
  %2691 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  store float %2690, ptr %2691, align 4, !tbaa !89
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #14
  %2692 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 0
  %2693 = load i32, ptr %2692, align 4, !tbaa !9
  %2694 = sitofp i32 %2693 to float
  %2695 = load ptr, ptr %20, align 8, !tbaa !5
  %2696 = getelementptr inbounds %struct.ImGuiContext, ptr %2695, i32 0, i32 7
  %2697 = load float, ptr %2696, align 8, !tbaa !46
  %2698 = fmul float %2694, %2697
  %2699 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 1
  store float %2698, ptr %2699, align 4, !tbaa !87
  %2700 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 1
  %2701 = load i32, ptr %2700, align 4, !tbaa !9
  %2702 = icmp sge i32 %2701, 0
  br i1 %2702, label %2703, label %2722

2703:                                             ; preds = %2681
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #14
  %2704 = getelementptr inbounds [2 x ptr], ptr %131, i64 0, i64 1
  %2705 = load ptr, ptr %2704, align 8, !tbaa !5
  %2706 = load ptr, ptr %128, align 8, !tbaa !5
  %2707 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2705, ptr noundef %2706)
  %2708 = getelementptr inbounds [2 x ptr], ptr %131, i64 0, i64 1
  %2709 = load ptr, ptr %2708, align 8, !tbaa !5
  %2710 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2707, ptr noundef %2709, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2710, ptr %137, align 4
  %2711 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  %2712 = load float, ptr %2711, align 4, !tbaa !89
  %2713 = getelementptr inbounds %struct.ImVec2, ptr %130, i32 0, i32 0
  store float %2712, ptr %2713, align 4, !tbaa !89
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #14
  %2714 = getelementptr inbounds [2 x i32], ptr %132, i64 0, i64 1
  %2715 = load i32, ptr %2714, align 4, !tbaa !9
  %2716 = sitofp i32 %2715 to float
  %2717 = load ptr, ptr %20, align 8, !tbaa !5
  %2718 = getelementptr inbounds %struct.ImGuiContext, ptr %2717, i32 0, i32 7
  %2719 = load float, ptr %2718, align 8, !tbaa !46
  %2720 = fmul float %2716, %2719
  %2721 = getelementptr inbounds %struct.ImVec2, ptr %130, i32 0, i32 1
  store float %2720, ptr %2721, align 4, !tbaa !87
  br label %2722

2722:                                             ; preds = %2703, %2681
  %2723 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %2724 = trunc i8 %2723 to i1
  br i1 %2724, label %2725, label %2734

2725:                                             ; preds = %2722
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  %2726 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2727 = load float, ptr %2726, align 4, !tbaa !89
  %2728 = load i32, ptr %134, align 4, !tbaa !9
  %2729 = sitofp i32 %2728 to float
  %2730 = load ptr, ptr %20, align 8, !tbaa !5
  %2731 = getelementptr inbounds %struct.ImGuiContext, ptr %2730, i32 0, i32 7
  %2732 = load float, ptr %2731, align 8, !tbaa !46
  %2733 = fmul float %2729, %2732
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %138, float noundef %2727, float noundef %2733)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %124, ptr align 4 %138, i64 8, i1 false), !tbaa.struct !44
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #14
  br label %2734

2734:                                             ; preds = %2725, %2722
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %131) #14
  %2735 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %2736 = trunc i8 %2735 to i1
  br i1 %2736, label %2737, label %2864

2737:                                             ; preds = %2734
  %2738 = load ptr, ptr %43, align 8, !tbaa !5
  %2739 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2738, i32 0, i32 11
  %2740 = load i8, ptr %2739, align 4, !tbaa !149, !range !41, !noundef !42
  %2741 = trunc i8 %2740 to i1
  br i1 %2741, label %2742, label %2864

2742:                                             ; preds = %2737
  %2743 = load i32, ptr %15, align 4, !tbaa !9
  %2744 = and i32 %2743, 4096
  %2745 = icmp ne i32 %2744, 0
  br i1 %2745, label %2790, label %2746

2746:                                             ; preds = %2742
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #14
  %2747 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2748 = load float, ptr %2747, align 4, !tbaa !89
  %2749 = fmul float %2748, 2.500000e-01
  store float %2749, ptr %139, align 4, !tbaa !45
  %2750 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  %2751 = load float, ptr %2750, align 4, !tbaa !89
  %2752 = load ptr, ptr %43, align 8, !tbaa !5
  %2753 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2752, i32 0, i32 8
  %2754 = load float, ptr %2753, align 8, !tbaa !114
  %2755 = fcmp olt float %2751, %2754
  br i1 %2755, label %2756, label %2766

2756:                                             ; preds = %2746
  %2757 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  %2758 = load float, ptr %2757, align 4, !tbaa !89
  %2759 = load float, ptr %139, align 4, !tbaa !45
  %2760 = fsub float %2758, %2759
  %2761 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2760)
  %2762 = fptosi float %2761 to i32
  %2763 = sitofp i32 %2762 to float
  %2764 = load ptr, ptr %43, align 8, !tbaa !5
  %2765 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2764, i32 0, i32 8
  store float %2763, ptr %2765, align 8, !tbaa !114
  br label %2789

2766:                                             ; preds = %2746
  %2767 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  %2768 = load float, ptr %2767, align 4, !tbaa !89
  %2769 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2770 = load float, ptr %2769, align 4, !tbaa !89
  %2771 = fsub float %2768, %2770
  %2772 = load ptr, ptr %43, align 8, !tbaa !5
  %2773 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2772, i32 0, i32 8
  %2774 = load float, ptr %2773, align 8, !tbaa !114
  %2775 = fcmp oge float %2771, %2774
  br i1 %2775, label %2776, label %2788

2776:                                             ; preds = %2766
  %2777 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  %2778 = load float, ptr %2777, align 4, !tbaa !89
  %2779 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2780 = load float, ptr %2779, align 4, !tbaa !89
  %2781 = fsub float %2778, %2780
  %2782 = load float, ptr %139, align 4, !tbaa !45
  %2783 = fadd float %2781, %2782
  %2784 = fptosi float %2783 to i32
  %2785 = sitofp i32 %2784 to float
  %2786 = load ptr, ptr %43, align 8, !tbaa !5
  %2787 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2786, i32 0, i32 8
  store float %2785, ptr %2787, align 8, !tbaa !114
  br label %2788

2788:                                             ; preds = %2776, %2766
  br label %2789

2789:                                             ; preds = %2788, %2756
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #14
  br label %2793

2790:                                             ; preds = %2742
  %2791 = load ptr, ptr %43, align 8, !tbaa !5
  %2792 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2791, i32 0, i32 8
  store float 0.000000e+00, ptr %2792, align 8, !tbaa !114
  br label %2793

2793:                                             ; preds = %2790, %2789
  %2794 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %2795 = trunc i8 %2794 to i1
  br i1 %2795, label %2796, label %2861

2796:                                             ; preds = %2793
  %2797 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 1
  %2798 = load float, ptr %2797, align 4, !tbaa !87
  %2799 = load ptr, ptr %20, align 8, !tbaa !5
  %2800 = getelementptr inbounds %struct.ImGuiContext, ptr %2799, i32 0, i32 7
  %2801 = load float, ptr %2800, align 8, !tbaa !46
  %2802 = fsub float %2798, %2801
  %2803 = load float, ptr %53, align 4, !tbaa !45
  %2804 = fcmp olt float %2802, %2803
  br i1 %2804, label %2805, label %2813

2805:                                             ; preds = %2796
  %2806 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 1
  %2807 = load float, ptr %2806, align 4, !tbaa !87
  %2808 = load ptr, ptr %20, align 8, !tbaa !5
  %2809 = getelementptr inbounds %struct.ImGuiContext, ptr %2808, i32 0, i32 7
  %2810 = load float, ptr %2809, align 8, !tbaa !46
  %2811 = fsub float %2807, %2810
  %2812 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2811)
  store float %2812, ptr %53, align 4, !tbaa !45
  br label %2833

2813:                                             ; preds = %2796
  %2814 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 1
  %2815 = load float, ptr %2814, align 4, !tbaa !87
  %2816 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2817 = load float, ptr %2816, align 4, !tbaa !87
  %2818 = fsub float %2815, %2817
  %2819 = load float, ptr %53, align 4, !tbaa !45
  %2820 = fcmp oge float %2818, %2819
  br i1 %2820, label %2821, label %2832

2821:                                             ; preds = %2813
  %2822 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 1
  %2823 = load float, ptr %2822, align 4, !tbaa !87
  %2824 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2825 = load float, ptr %2824, align 4, !tbaa !87
  %2826 = fsub float %2823, %2825
  %2827 = load ptr, ptr %22, align 8, !tbaa !5
  %2828 = getelementptr inbounds %struct.ImGuiStyle, ptr %2827, i32 0, i32 11
  %2829 = getelementptr inbounds %struct.ImVec2, ptr %2828, i32 0, i32 1
  %2830 = load float, ptr %2829, align 4, !tbaa !88
  %2831 = call float @llvm.fmuladd.f32(float %2830, float 2.000000e+00, float %2826)
  store float %2831, ptr %53, align 4, !tbaa !45
  br label %2832

2832:                                             ; preds = %2821, %2813
  br label %2833

2833:                                             ; preds = %2832, %2805
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #14
  %2834 = getelementptr inbounds %struct.ImVec2, ptr %124, i32 0, i32 1
  %2835 = load float, ptr %2834, align 4, !tbaa !87
  %2836 = load ptr, ptr %22, align 8, !tbaa !5
  %2837 = getelementptr inbounds %struct.ImGuiStyle, ptr %2836, i32 0, i32 11
  %2838 = getelementptr inbounds %struct.ImVec2, ptr %2837, i32 0, i32 1
  %2839 = load float, ptr %2838, align 4, !tbaa !88
  %2840 = call float @llvm.fmuladd.f32(float %2839, float 2.000000e+00, float %2835)
  %2841 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2842 = load float, ptr %2841, align 4, !tbaa !87
  %2843 = fsub float %2840, %2842
  %2844 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %2843, float noundef 0.000000e+00)
  store float %2844, ptr %140, align 4, !tbaa !45
  %2845 = load float, ptr %53, align 4, !tbaa !45
  %2846 = load float, ptr %140, align 4, !tbaa !45
  %2847 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %2845, float noundef 0.000000e+00, float noundef %2846)
  store float %2847, ptr %53, align 4, !tbaa !45
  %2848 = load ptr, ptr %38, align 8, !tbaa !5
  %2849 = getelementptr inbounds %struct.ImGuiWindow, ptr %2848, i32 0, i32 15
  %2850 = getelementptr inbounds %struct.ImVec2, ptr %2849, i32 0, i32 1
  %2851 = load float, ptr %2850, align 4, !tbaa !106
  %2852 = load float, ptr %53, align 4, !tbaa !45
  %2853 = fsub float %2851, %2852
  %2854 = getelementptr inbounds %struct.ImVec2, ptr %123, i32 0, i32 1
  %2855 = load float, ptr %2854, align 4, !tbaa !87
  %2856 = fadd float %2855, %2853
  store float %2856, ptr %2854, align 4, !tbaa !87
  %2857 = load float, ptr %53, align 4, !tbaa !45
  %2858 = load ptr, ptr %38, align 8, !tbaa !5
  %2859 = getelementptr inbounds %struct.ImGuiWindow, ptr %2858, i32 0, i32 15
  %2860 = getelementptr inbounds %struct.ImVec2, ptr %2859, i32 0, i32 1
  store float %2857, ptr %2860, align 4, !tbaa !106
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #14
  br label %2861

2861:                                             ; preds = %2833, %2793
  %2862 = load ptr, ptr %43, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2862, i32 0, i32 11
  store i8 0, ptr %2863, align 4, !tbaa !149
  br label %2864

2864:                                             ; preds = %2861, %2737, %2734
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #14
  %2865 = load ptr, ptr %43, align 8, !tbaa !5
  %2866 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2865, i32 0, i32 8
  %2867 = load float, ptr %2866, align 8, !tbaa !114
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %141, float noundef %2867, float noundef 0.000000e+00)
  %2868 = load i8, ptr %61, align 1, !tbaa !43, !range !41, !noundef !42
  %2869 = trunc i8 %2868 to i1
  br i1 %2869, label %2870, label %2998

2870:                                             ; preds = %2864
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #14
  %2871 = load ptr, ptr %128, align 8, !tbaa !5
  %2872 = load ptr, ptr %43, align 8, !tbaa !5
  %2873 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2872, i32 0, i32 9
  %2874 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2873, i32 0, i32 1
  %2875 = load i32, ptr %2874, align 4, !tbaa !162
  %2876 = load ptr, ptr %43, align 8, !tbaa !5
  %2877 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2876, i32 0, i32 9
  %2878 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2877, i32 0, i32 2
  %2879 = load i32, ptr %2878, align 4, !tbaa !163
  %2880 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2875, i32 noundef %2879)
  %2881 = sext i32 %2880 to i64
  %2882 = getelementptr inbounds i16, ptr %2871, i64 %2881
  store ptr %2882, ptr %142, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #14
  %2883 = load ptr, ptr %128, align 8, !tbaa !5
  %2884 = load ptr, ptr %43, align 8, !tbaa !5
  %2885 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2884, i32 0, i32 9
  %2886 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2885, i32 0, i32 1
  %2887 = load i32, ptr %2886, align 4, !tbaa !162
  %2888 = load ptr, ptr %43, align 8, !tbaa !5
  %2889 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2888, i32 0, i32 9
  %2890 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2889, i32 0, i32 2
  %2891 = load i32, ptr %2890, align 4, !tbaa !163
  %2892 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2887, i32 noundef %2891)
  %2893 = sext i32 %2892 to i64
  %2894 = getelementptr inbounds i16, ptr %2883, i64 %2893
  store ptr %2894, ptr %143, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #14
  %2895 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %2896 = trunc i8 %2895 to i1
  %2897 = zext i1 %2896 to i64
  %2898 = select i1 %2896, float 1.000000e+00, float 0x3FE3333340000000
  %2899 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %2898)
  store i32 %2899, ptr %144, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #14
  %2900 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %2901 = trunc i8 %2900 to i1
  %2902 = zext i1 %2901 to i64
  %2903 = select i1 %2901, float 0.000000e+00, float -1.000000e+00
  store float %2903, ptr %145, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #14
  %2904 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %2905 = trunc i8 %2904 to i1
  %2906 = zext i1 %2905 to i64
  %2907 = select i1 %2905, float 0.000000e+00, float 2.000000e+00
  store float %2907, ptr %146, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #14
  %2908 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %123, ptr noundef nonnull align 4 dereferenceable(8) %130)
  store <2 x float> %2908, ptr %148, align 4
  %2909 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %148, ptr noundef nonnull align 4 dereferenceable(8) %141)
  store <2 x float> %2909, ptr %147, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #14
  %2910 = load ptr, ptr %142, align 8, !tbaa !5
  store ptr %2910, ptr %149, align 8, !tbaa !5
  br label %2911

2911:                                             ; preds = %2983, %2870
  %2912 = load ptr, ptr %149, align 8, !tbaa !5
  %2913 = load ptr, ptr %143, align 8, !tbaa !5
  %2914 = icmp ult ptr %2912, %2913
  br i1 %2914, label %2916, label %2915

2915:                                             ; preds = %2911
  store i32 10, ptr %19, align 4
  br label %2996

2916:                                             ; preds = %2911
  %2917 = getelementptr inbounds %struct.ImVec2, ptr %147, i32 0, i32 1
  %2918 = load float, ptr %2917, align 4, !tbaa !87
  %2919 = getelementptr inbounds %struct.ImVec4, ptr %122, i32 0, i32 3
  %2920 = load float, ptr %2919, align 4, !tbaa !184
  %2921 = load ptr, ptr %20, align 8, !tbaa !5
  %2922 = getelementptr inbounds %struct.ImGuiContext, ptr %2921, i32 0, i32 7
  %2923 = load float, ptr %2922, align 8, !tbaa !46
  %2924 = fadd float %2920, %2923
  %2925 = fcmp ogt float %2918, %2924
  br i1 %2925, label %2926, label %2927

2926:                                             ; preds = %2916
  store i32 10, ptr %19, align 4
  br label %2996

2927:                                             ; preds = %2916
  %2928 = getelementptr inbounds %struct.ImVec2, ptr %147, i32 0, i32 1
  %2929 = load float, ptr %2928, align 4, !tbaa !87
  %2930 = getelementptr inbounds %struct.ImVec4, ptr %122, i32 0, i32 1
  %2931 = load float, ptr %2930, align 4, !tbaa !185
  %2932 = fcmp olt float %2929, %2931
  br i1 %2932, label %2933, label %2947

2933:                                             ; preds = %2927
  br label %2934

2934:                                             ; preds = %2945, %2933
  %2935 = load ptr, ptr %149, align 8, !tbaa !5
  %2936 = load ptr, ptr %143, align 8, !tbaa !5
  %2937 = icmp ult ptr %2935, %2936
  br i1 %2937, label %2938, label %2946

2938:                                             ; preds = %2934
  %2939 = load ptr, ptr %149, align 8, !tbaa !5
  %2940 = getelementptr inbounds i16, ptr %2939, i32 1
  store ptr %2940, ptr %149, align 8, !tbaa !5
  %2941 = load i16, ptr %2939, align 2, !tbaa !153
  %2942 = zext i16 %2941 to i32
  %2943 = icmp eq i32 %2942, 10
  br i1 %2943, label %2944, label %2945

2944:                                             ; preds = %2938
  br label %2946

2945:                                             ; preds = %2938
  br label %2934, !llvm.loop !186

2946:                                             ; preds = %2944, %2934
  br label %2983

2947:                                             ; preds = %2927
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #14
  %2948 = load ptr, ptr %149, align 8, !tbaa !5
  %2949 = load ptr, ptr %143, align 8, !tbaa !5
  %2950 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2948, ptr noundef %2949, ptr noundef %149, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %2950, ptr %150, align 4
  %2951 = getelementptr inbounds %struct.ImVec2, ptr %150, i32 0, i32 0
  %2952 = load float, ptr %2951, align 4, !tbaa !89
  %2953 = fcmp ole float %2952, 0.000000e+00
  br i1 %2953, label %2954, label %2963

2954:                                             ; preds = %2947
  %2955 = load ptr, ptr %20, align 8, !tbaa !5
  %2956 = getelementptr inbounds %struct.ImGuiContext, ptr %2955, i32 0, i32 6
  %2957 = load ptr, ptr %2956, align 8, !tbaa !123
  %2958 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(106) %2957, i16 noundef zeroext 32)
  %2959 = fmul float %2958, 5.000000e-01
  %2960 = fptosi float %2959 to i32
  %2961 = sitofp i32 %2960 to float
  %2962 = getelementptr inbounds %struct.ImVec2, ptr %150, i32 0, i32 0
  store float %2961, ptr %2962, align 4, !tbaa !89
  br label %2963

2963:                                             ; preds = %2954, %2947
  call void @llvm.lifetime.start.p0(i64 16, ptr %151) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #14
  %2964 = load float, ptr %145, align 4, !tbaa !45
  %2965 = load ptr, ptr %20, align 8, !tbaa !5
  %2966 = getelementptr inbounds %struct.ImGuiContext, ptr %2965, i32 0, i32 7
  %2967 = load float, ptr %2966, align 8, !tbaa !46
  %2968 = fsub float %2964, %2967
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %153, float noundef 0.000000e+00, float noundef %2968)
  %2969 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %147, ptr noundef nonnull align 4 dereferenceable(8) %153)
  store <2 x float> %2969, ptr %152, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #14
  %2970 = getelementptr inbounds %struct.ImVec2, ptr %150, i32 0, i32 0
  %2971 = load float, ptr %2970, align 4, !tbaa !89
  %2972 = load float, ptr %146, align 4, !tbaa !45
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %155, float noundef %2971, float noundef %2972)
  %2973 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %147, ptr noundef nonnull align 4 dereferenceable(8) %155)
  store <2 x float> %2973, ptr %154, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %151, ptr noundef nonnull align 4 dereferenceable(8) %152, ptr noundef nonnull align 4 dereferenceable(8) %154)
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %156) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %156, ptr noundef nonnull align 4 dereferenceable(16) %122)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %151, ptr noundef nonnull align 4 dereferenceable(16) %156)
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %157) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %157, ptr noundef nonnull align 4 dereferenceable(16) %122)
  %2974 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %151, ptr noundef nonnull align 4 dereferenceable(16) %157)
  call void @llvm.lifetime.end.p0(i64 16, ptr %157) #14
  br i1 %2974, label %2975, label %2982

2975:                                             ; preds = %2963
  %2976 = load ptr, ptr %38, align 8, !tbaa !5
  %2977 = getelementptr inbounds %struct.ImGuiWindow, ptr %2976, i32 0, i32 71
  %2978 = load ptr, ptr %2977, align 8, !tbaa !187
  %2979 = getelementptr inbounds %struct.ImRect, ptr %151, i32 0, i32 0
  %2980 = getelementptr inbounds %struct.ImRect, ptr %151, i32 0, i32 1
  %2981 = load i32, ptr %144, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %2978, ptr noundef nonnull align 4 dereferenceable(8) %2979, ptr noundef nonnull align 4 dereferenceable(8) %2980, i32 noundef %2981, float noundef 0.000000e+00, i32 noundef 15)
  br label %2982

2982:                                             ; preds = %2975, %2963
  call void @llvm.lifetime.end.p0(i64 16, ptr %151) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #14
  br label %2983

2983:                                             ; preds = %2982, %2946
  %2984 = getelementptr inbounds %struct.ImVec2, ptr %123, i32 0, i32 0
  %2985 = load float, ptr %2984, align 4, !tbaa !89
  %2986 = getelementptr inbounds %struct.ImVec2, ptr %141, i32 0, i32 0
  %2987 = load float, ptr %2986, align 4, !tbaa !89
  %2988 = fsub float %2985, %2987
  %2989 = getelementptr inbounds %struct.ImVec2, ptr %147, i32 0, i32 0
  store float %2988, ptr %2989, align 4, !tbaa !89
  %2990 = load ptr, ptr %20, align 8, !tbaa !5
  %2991 = getelementptr inbounds %struct.ImGuiContext, ptr %2990, i32 0, i32 7
  %2992 = load float, ptr %2991, align 8, !tbaa !46
  %2993 = getelementptr inbounds %struct.ImVec2, ptr %147, i32 0, i32 1
  %2994 = load float, ptr %2993, align 4, !tbaa !87
  %2995 = fadd float %2994, %2992
  store float %2995, ptr %2993, align 4, !tbaa !87
  br label %2911, !llvm.loop !188

2996:                                             ; preds = %2926, %2915
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #14
  br label %2997

2997:                                             ; preds = %2996
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #14
  br label %2998

2998:                                             ; preds = %2997, %2864
  %2999 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %3000 = trunc i8 %2999 to i1
  br i1 %3000, label %3008, label %3001

3001:                                             ; preds = %2998
  %3002 = load ptr, ptr %127, align 8, !tbaa !5
  %3003 = load ptr, ptr %126, align 8, !tbaa !5
  %3004 = ptrtoint ptr %3002 to i64
  %3005 = ptrtoint ptr %3003 to i64
  %3006 = sub i64 %3004, %3005
  %3007 = icmp slt i64 %3006, 2097152
  br i1 %3007, label %3008, label %3033

3008:                                             ; preds = %3001, %2998
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #14
  %3009 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %3010 = trunc i8 %3009 to i1
  %3011 = zext i1 %3010 to i64
  %3012 = select i1 %3010, i32 1, i32 0
  %3013 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3012, float noundef 1.000000e+00)
  store i32 %3013, ptr %158, align 4, !tbaa !9
  %3014 = load ptr, ptr %38, align 8, !tbaa !5
  %3015 = getelementptr inbounds %struct.ImGuiWindow, ptr %3014, i32 0, i32 71
  %3016 = load ptr, ptr %3015, align 8, !tbaa !187
  %3017 = load ptr, ptr %20, align 8, !tbaa !5
  %3018 = getelementptr inbounds %struct.ImGuiContext, ptr %3017, i32 0, i32 6
  %3019 = load ptr, ptr %3018, align 8, !tbaa !123
  %3020 = load ptr, ptr %20, align 8, !tbaa !5
  %3021 = getelementptr inbounds %struct.ImGuiContext, ptr %3020, i32 0, i32 7
  %3022 = load float, ptr %3021, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #14
  %3023 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %123, ptr noundef nonnull align 4 dereferenceable(8) %141)
  store <2 x float> %3023, ptr %159, align 4
  %3024 = load i32, ptr %158, align 4, !tbaa !9
  %3025 = load ptr, ptr %126, align 8, !tbaa !5
  %3026 = load ptr, ptr %127, align 8, !tbaa !5
  %3027 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %3028 = trunc i8 %3027 to i1
  br i1 %3028, label %3029, label %3030

3029:                                             ; preds = %3008
  br label %3031

3030:                                             ; preds = %3008
  br label %3031

3031:                                             ; preds = %3030, %3029
  %3032 = phi ptr [ null, %3029 ], [ %122, %3030 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3016, ptr noundef %3019, float noundef %3022, ptr noundef nonnull align 4 dereferenceable(8) %159, i32 noundef %3024, ptr noundef %3025, ptr noundef %3026, float noundef 0.000000e+00, ptr noundef %3032)
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #14
  br label %3033

3033:                                             ; preds = %3031, %3001
  %3034 = load i8, ptr %60, align 1, !tbaa !43, !range !41, !noundef !42
  %3035 = trunc i8 %3034 to i1
  br i1 %3035, label %3036, label %3109

3036:                                             ; preds = %3033
  %3037 = load ptr, ptr %21, align 8, !tbaa !5
  %3038 = getelementptr inbounds %struct.ImGuiIO, ptr %3037, i32 0, i32 3
  %3039 = load float, ptr %3038, align 8, !tbaa !189
  %3040 = load ptr, ptr %43, align 8, !tbaa !5
  %3041 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3040, i32 0, i32 10
  %3042 = load float, ptr %3041, align 8, !tbaa !190
  %3043 = fadd float %3042, %3039
  store float %3043, ptr %3041, align 8, !tbaa !190
  call void @llvm.lifetime.start.p0(i64 1, ptr %160) #14
  %3044 = load ptr, ptr %20, align 8, !tbaa !5
  %3045 = getelementptr inbounds %struct.ImGuiContext, ptr %3044, i32 0, i32 3
  %3046 = getelementptr inbounds %struct.ImGuiIO, ptr %3045, i32 0, i32 21
  %3047 = load i8, ptr %3046, align 2, !tbaa !191, !range !41, !noundef !42
  %3048 = trunc i8 %3047 to i1
  br i1 %3048, label %3049, label %3060

3049:                                             ; preds = %3036
  %3050 = load ptr, ptr %43, align 8, !tbaa !5
  %3051 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3050, i32 0, i32 10
  %3052 = load float, ptr %3051, align 8, !tbaa !190
  %3053 = fcmp ole float %3052, 0.000000e+00
  br i1 %3053, label %3060, label %3054

3054:                                             ; preds = %3049
  %3055 = load ptr, ptr %43, align 8, !tbaa !5
  %3056 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3055, i32 0, i32 10
  %3057 = load float, ptr %3056, align 8, !tbaa !190
  %3058 = call float @fmodf(float noundef %3057, float noundef 0x3FF3333340000000) #14
  %3059 = fcmp ole float %3058, 0x3FE99999A0000000
  br label %3060

3060:                                             ; preds = %3054, %3049, %3036
  %3061 = phi i1 [ true, %3049 ], [ true, %3036 ], [ %3059, %3054 ]
  %3062 = zext i1 %3061 to i8
  store i8 %3062, ptr %160, align 1, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  %3063 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %123, ptr noundef nonnull align 4 dereferenceable(8) %129)
  store <2 x float> %3063, ptr %162, align 4
  %3064 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %162, ptr noundef nonnull align 4 dereferenceable(8) %141)
  store <2 x float> %3064, ptr %161, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #14
  %3065 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 0
  %3066 = load float, ptr %3065, align 4, !tbaa !89
  %3067 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 1
  %3068 = load float, ptr %3067, align 4, !tbaa !87
  %3069 = load ptr, ptr %20, align 8, !tbaa !5
  %3070 = getelementptr inbounds %struct.ImGuiContext, ptr %3069, i32 0, i32 7
  %3071 = load float, ptr %3070, align 8, !tbaa !46
  %3072 = fsub float %3068, %3071
  %3073 = fadd float %3072, 5.000000e-01
  %3074 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 0
  %3075 = load float, ptr %3074, align 4, !tbaa !89
  %3076 = fadd float %3075, 1.000000e+00
  %3077 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 1
  %3078 = load float, ptr %3077, align 4, !tbaa !87
  %3079 = fsub float %3078, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %163, float noundef %3066, float noundef %3073, float noundef %3076, float noundef %3079)
  %3080 = load i8, ptr %160, align 1, !tbaa !43, !range !41, !noundef !42
  %3081 = trunc i8 %3080 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %164) #14
  br i1 %3081, label %3082, label %3084

3082:                                             ; preds = %3060
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %164, ptr noundef nonnull align 4 dereferenceable(16) %122)
  %3083 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %163, ptr noundef nonnull align 4 dereferenceable(16) %164)
  br label %3084

3084:                                             ; preds = %3082, %3060
  %3085 = phi i1 [ false, %3060 ], [ %3083, %3082 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %164) #14
  br i1 %3085, label %3086, label %3093

3086:                                             ; preds = %3084
  %3087 = load ptr, ptr %38, align 8, !tbaa !5
  %3088 = getelementptr inbounds %struct.ImGuiWindow, ptr %3087, i32 0, i32 71
  %3089 = load ptr, ptr %3088, align 8, !tbaa !187
  %3090 = getelementptr inbounds %struct.ImRect, ptr %163, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #14
  %3091 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %163)
  store <2 x float> %3091, ptr %165, align 4
  %3092 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %3089, ptr noundef nonnull align 4 dereferenceable(8) %3090, ptr noundef nonnull align 4 dereferenceable(8) %165, i32 noundef %3092, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #14
  br label %3093

3093:                                             ; preds = %3086, %3084
  %3094 = load i8, ptr %25, align 1, !tbaa !43, !range !41, !noundef !42
  %3095 = trunc i8 %3094 to i1
  br i1 %3095, label %3108, label %3096

3096:                                             ; preds = %3093
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #14
  %3097 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 0
  %3098 = load float, ptr %3097, align 4, !tbaa !89
  %3099 = fsub float %3098, 1.000000e+00
  %3100 = getelementptr inbounds %struct.ImVec2, ptr %161, i32 0, i32 1
  %3101 = load float, ptr %3100, align 4, !tbaa !87
  %3102 = load ptr, ptr %20, align 8, !tbaa !5
  %3103 = getelementptr inbounds %struct.ImGuiContext, ptr %3102, i32 0, i32 7
  %3104 = load float, ptr %3103, align 8, !tbaa !46
  %3105 = fsub float %3101, %3104
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %166, float noundef %3099, float noundef %3105)
  %3106 = load ptr, ptr %20, align 8, !tbaa !5
  %3107 = getelementptr inbounds %struct.ImGuiContext, ptr %3106, i32 0, i32 195
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3107, ptr align 4 %166, i64 8, i1 false), !tbaa.struct !44
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #14
  br label %3108

3108:                                             ; preds = %3096, %3093
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %160) #14
  br label %3109

3109:                                             ; preds = %3108, %3033
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #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 8, ptr %128) #14
  br label %3184

3110:                                             ; preds = %2546
  %3111 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %3112 = trunc i8 %3111 to i1
  br i1 %3112, label %3113, label %3123

3113:                                             ; preds = %3110
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #14
  %3114 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %3115 = load float, ptr %3114, align 4, !tbaa !89
  %3116 = load ptr, ptr %126, align 8, !tbaa !5
  %3117 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3116, ptr noundef %127)
  %3118 = sitofp i32 %3117 to float
  %3119 = load ptr, ptr %20, align 8, !tbaa !5
  %3120 = getelementptr inbounds %struct.ImGuiContext, ptr %3119, i32 0, i32 7
  %3121 = load float, ptr %3120, align 8, !tbaa !46
  %3122 = fmul float %3118, %3121
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %167, float noundef %3115, float noundef %3122)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %124, ptr align 4 %167, i64 8, i1 false), !tbaa.struct !44
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #14
  br label %3149

3123:                                             ; preds = %3110
  %3124 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %3125 = trunc i8 %3124 to i1
  br i1 %3125, label %3139, label %3126

3126:                                             ; preds = %3123
  %3127 = load ptr, ptr %20, align 8, !tbaa !5
  %3128 = getelementptr inbounds %struct.ImGuiContext, ptr %3127, i32 0, i32 45
  %3129 = load i32, ptr %3128, align 8, !tbaa !101
  %3130 = load i32, ptr %29, align 4, !tbaa !9
  %3131 = icmp eq i32 %3129, %3130
  br i1 %3131, label %3132, label %3139

3132:                                             ; preds = %3126
  %3133 = load ptr, ptr %126, align 8, !tbaa !5
  %3134 = load ptr, ptr %43, align 8, !tbaa !5
  %3135 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3134, i32 0, i32 2
  %3136 = load i32, ptr %3135, align 8, !tbaa !112
  %3137 = sext i32 %3136 to i64
  %3138 = getelementptr inbounds i8, ptr %3133, i64 %3137
  store ptr %3138, ptr %127, align 8, !tbaa !5
  br label %3148

3139:                                             ; preds = %3126, %3123
  %3140 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %3141 = trunc i8 %3140 to i1
  br i1 %3141, label %3147, label %3142

3142:                                             ; preds = %3139
  %3143 = load ptr, ptr %126, align 8, !tbaa !5
  %3144 = load ptr, ptr %126, align 8, !tbaa !5
  %3145 = call i64 @strlen(ptr noundef %3144) #16
  %3146 = getelementptr inbounds i8, ptr %3143, i64 %3145
  store ptr %3146, ptr %127, align 8, !tbaa !5
  br label %3147

3147:                                             ; preds = %3142, %3139
  br label %3148

3148:                                             ; preds = %3147, %3132
  br label %3149

3149:                                             ; preds = %3148, %3113
  %3150 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %3151 = trunc i8 %3150 to i1
  br i1 %3151, label %3159, label %3152

3152:                                             ; preds = %3149
  %3153 = load ptr, ptr %127, align 8, !tbaa !5
  %3154 = load ptr, ptr %126, align 8, !tbaa !5
  %3155 = ptrtoint ptr %3153 to i64
  %3156 = ptrtoint ptr %3154 to i64
  %3157 = sub i64 %3155, %3156
  %3158 = icmp slt i64 %3157, 2097152
  br i1 %3158, label %3159, label %3183

3159:                                             ; preds = %3152, %3149
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #14
  %3160 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %3161 = trunc i8 %3160 to i1
  %3162 = zext i1 %3161 to i64
  %3163 = select i1 %3161, i32 1, i32 0
  %3164 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3163, float noundef 1.000000e+00)
  store i32 %3164, ptr %168, align 4, !tbaa !9
  %3165 = load ptr, ptr %38, align 8, !tbaa !5
  %3166 = getelementptr inbounds %struct.ImGuiWindow, ptr %3165, i32 0, i32 71
  %3167 = load ptr, ptr %3166, align 8, !tbaa !187
  %3168 = load ptr, ptr %20, align 8, !tbaa !5
  %3169 = getelementptr inbounds %struct.ImGuiContext, ptr %3168, i32 0, i32 6
  %3170 = load ptr, ptr %3169, align 8, !tbaa !123
  %3171 = load ptr, ptr %20, align 8, !tbaa !5
  %3172 = getelementptr inbounds %struct.ImGuiContext, ptr %3171, i32 0, i32 7
  %3173 = load float, ptr %3172, align 8, !tbaa !46
  %3174 = load i32, ptr %168, align 4, !tbaa !9
  %3175 = load ptr, ptr %126, align 8, !tbaa !5
  %3176 = load ptr, ptr %127, align 8, !tbaa !5
  %3177 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %3178 = trunc i8 %3177 to i1
  br i1 %3178, label %3179, label %3180

3179:                                             ; preds = %3159
  br label %3181

3180:                                             ; preds = %3159
  br label %3181

3181:                                             ; preds = %3180, %3179
  %3182 = phi ptr [ null, %3179 ], [ %122, %3180 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %3167, ptr noundef %3170, float noundef %3173, ptr noundef nonnull align 4 dereferenceable(8) %123, i32 noundef %3174, ptr noundef %3175, ptr noundef %3176, float noundef 0.000000e+00, ptr noundef %3182)
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #14
  br label %3183

3183:                                             ; preds = %3181, %3152
  br label %3184

3184:                                             ; preds = %3183, %3109
  %3185 = load i8, ptr %26, align 1, !tbaa !43, !range !41, !noundef !42
  %3186 = trunc i8 %3185 to i1
  br i1 %3186, label %3187, label %3191

3187:                                             ; preds = %3184
  %3188 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %3189 = trunc i8 %3188 to i1
  br i1 %3189, label %3191, label %3190

3190:                                             ; preds = %3187
  call void @_ZN5ImGui7PopFontEv()
  br label %3191

3191:                                             ; preds = %3190, %3187, %3184
  %3192 = load i8, ptr %24, align 1, !tbaa !43, !range !41, !noundef !42
  %3193 = trunc i8 %3192 to i1
  br i1 %3193, label %3194, label %3195

3194:                                             ; preds = %3191
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %124)
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %3195

3195:                                             ; preds = %3194, %3191
  %3196 = load ptr, ptr %20, align 8, !tbaa !5
  %3197 = getelementptr inbounds %struct.ImGuiContext, ptr %3196, i32 0, i32 206
  %3198 = load i8, ptr %3197, align 8, !tbaa !192, !range !41, !noundef !42
  %3199 = trunc i8 %3198 to i1
  br i1 %3199, label %3200, label %3209

3200:                                             ; preds = %3195
  %3201 = load i8, ptr %26, align 1, !tbaa !43, !range !41, !noundef !42
  %3202 = trunc i8 %3201 to i1
  br i1 %3202, label %3203, label %3206

3203:                                             ; preds = %3200
  %3204 = load i8, ptr %66, align 1, !tbaa !43, !range !41, !noundef !42
  %3205 = trunc i8 %3204 to i1
  br i1 %3205, label %3206, label %3209

3206:                                             ; preds = %3203, %3200
  %3207 = load ptr, ptr %126, align 8, !tbaa !5
  %3208 = load ptr, ptr %127, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %123, ptr noundef %3207, ptr noundef %3208)
  br label %3209

3209:                                             ; preds = %3206, %3203, %3195
  %3210 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3211 = load float, ptr %3210, align 4, !tbaa !89
  %3212 = fcmp ogt float %3211, 0.000000e+00
  br i1 %3212, label %3213, label %3232

3213:                                             ; preds = %3209
  %3214 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  %3215 = getelementptr inbounds %struct.ImVec2, ptr %3214, i32 0, i32 0
  %3216 = load float, ptr %3215, align 4, !tbaa !193
  %3217 = load ptr, ptr %22, align 8, !tbaa !5
  %3218 = getelementptr inbounds %struct.ImGuiStyle, ptr %3217, i32 0, i32 15
  %3219 = getelementptr inbounds %struct.ImVec2, ptr %3218, i32 0, i32 0
  %3220 = load float, ptr %3219, align 4, !tbaa !90
  %3221 = fadd float %3216, %3220
  %3222 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %3223 = getelementptr inbounds %struct.ImVec2, ptr %3222, i32 0, i32 1
  %3224 = load float, ptr %3223, align 4, !tbaa !182
  %3225 = load ptr, ptr %22, align 8, !tbaa !5
  %3226 = getelementptr inbounds %struct.ImGuiStyle, ptr %3225, i32 0, i32 11
  %3227 = getelementptr inbounds %struct.ImVec2, ptr %3226, i32 0, i32 1
  %3228 = load float, ptr %3227, align 4, !tbaa !88
  %3229 = fadd float %3224, %3228
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %169, float noundef %3221, float noundef %3229)
  %3230 = load ptr, ptr %10, align 8, !tbaa !5
  %3231 = load <2 x float>, ptr %169, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3231, ptr noundef %3230, ptr noundef null, i1 noundef zeroext true)
  br label %3232

3232:                                             ; preds = %3213, %3209
  %3233 = load i8, ptr %62, align 1, !tbaa !43, !range !41, !noundef !42
  %3234 = trunc i8 %3233 to i1
  br i1 %3234, label %3235, label %3241

3235:                                             ; preds = %3232
  %3236 = load i32, ptr %15, align 4, !tbaa !9
  %3237 = and i32 %3236, 2097152
  %3238 = icmp ne i32 %3237, 0
  br i1 %3238, label %3241, label %3239

3239:                                             ; preds = %3235
  %3240 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3240)
  br label %3241

3241:                                             ; preds = %3239, %3235, %3232
  br label %3242

3242:                                             ; preds = %3241
  br label %3243

3243:                                             ; preds = %3242
  br label %3244

3244:                                             ; preds = %3243
  %3245 = load i32, ptr %15, align 4, !tbaa !9
  %3246 = and i32 %3245, 32
  %3247 = icmp ne i32 %3246, 0
  br i1 %3247, label %3248, label %3251

3248:                                             ; preds = %3244
  %3249 = load i8, ptr %63, align 1, !tbaa !43, !range !41, !noundef !42
  %3250 = trunc i8 %3249 to i1
  store i1 %3250, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3254

3251:                                             ; preds = %3244
  %3252 = load i8, ptr %62, align 1, !tbaa !43, !range !41, !noundef !42
  %3253 = trunc i8 %3252 to i1
  store i1 %3253, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3254

3254:                                             ; preds = %3251, %3248
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %122) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #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 %60) #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 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 4, 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 %3255

3255:                                             ; preds = %3254, %372, %362, %316
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #14
  br label %3256

3256:                                             ; preds = %3255, %175
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  %3257 = load i1, ptr %9, align 1
  ret i1 %3257

3258:                                             ; preds = %2035
  %3259 = load ptr, ptr %108, align 8
  %3260 = load i32, ptr %109, align 4
  %3261 = insertvalue { ptr, i32 } poison, ptr %3259, 0
  %3262 = insertvalue { ptr, i32 } %3261, i32 %3260, 1
  resume { ptr, i32 } %3262

3263:                                             ; preds = %1264
  unreachable
}

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

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

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

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

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

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

declare void @_ZN5ImGui8EndChildEv() #6

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) #6

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

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

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

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

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

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

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

declare noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv() #6

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #6

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #6

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #6

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) #6

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() #6

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui7PopFontEv() #6

declare void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr)

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !15, i64 147}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !14, i64 72, !14, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !13, i64 92, !13, i64 100, !13, i64 108, !13, i64 116, !13, i64 124, !13, i64 132, !15, i64 140, !15, i64 141, !15, i64 142, !15, i64 143, !15, i64 144, !15, i64 145, !15, i64 146, !15, i64 147, !15, i64 148, !15, i64 149, !15, i64 150, !15, i64 151, !7, i64 152, !16, i64 154, !16, i64 156, !16, i64 158, !10, i64 160, !7, i64 164, !7, i64 165, !7, i64 166, !15, i64 167, !10, i64 168, !7, i64 172, !7, i64 173, !7, i64 174, !10, i64 175, !10, i64 176, !10, i64 177, !13, i64 180, !13, i64 188, !17, i64 200, !18, i64 216, !20, i64 520, !20, i64 536, !20, i64 552, !20, i64 568, !20, i64 584, !20, i64 600, !20, i64 616, !26, i64 632, !26, i64 636, !10, i64 640, !14, i64 644, !14, i64 648, !27, i64 656, !29, i64 672, !14, i64 688, !10, i64 692, !6, i64 696, !30, i64 704, !6, i64 904, !6, i64 912, !6, i64 920, !6, i64 928, !6, i64 936, !7, i64 944, !7, i64 952, !10, i64 984, !10, i64 988, !15, i64 992}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!18 = !{!"_ZTS19ImGuiWindowTempData", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !14, i64 56, !14, i64 60, !19, i64 64, !19, i64 68, !19, i64 72, !10, i64 76, !10, i64 80, !20, i64 84, !20, i64 100, !21, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !15, i64 132, !15, i64 133, !15, i64 134, !13, i64 136, !22, i64 144, !10, i64 180, !10, i64 184, !23, i64 192, !6, i64 208, !6, i64 216, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !14, i64 248, !14, i64 252, !24, i64 256, !24, i64 272, !25, i64 288}
!19 = !{!"_ZTS6ImVec1", !14, i64 0}
!20 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!21 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!22 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !7, i64 24}
!23 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS15ImGuiStackSizes", !16, i64 0, !16, i64 2, !16, i64 4, !16, i64 6, !16, i64 8, !16, i64 10, !16, i64 12}
!26 = !{!"_ZTS8ImVec2ih", !16, i64 0, !16, i64 2}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS10ImDrawList", !31, i64 0, !32, i64 16, !33, i64 32, !10, i64 48, !10, i64 52, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !34, i64 88, !35, i64 104, !36, i64 120, !37, i64 136, !39, i64 168, !14, i64 192}
!31 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!37 = !{!"_ZTS15ImDrawCmdHeader", !38, i64 0, !6, i64 16, !10, i64 24}
!38 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!39 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !40, i64 8}
!40 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = !{!15, !15, i64 0}
!44 = !{i64 0, i64 4, !45, i64 4, i64 4, !45}
!45 = !{!14, !14, i64 0}
!46 = !{!47, !14, i64 6528}
!47 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !48, i64 8, !49, i64 5472, !6, i64 6520, !14, i64 6528, !14, i64 6532, !50, i64 6536, !51, i64 6752, !10, i64 6760, !10, i64 6764, !10, i64 6768, !15, i64 6772, !15, i64 6773, !15, i64 6774, !15, i64 6775, !15, i64 6776, !10, i64 6780, !6, i64 6784, !23, i64 6792, !23, i64 6808, !23, i64 6824, !23, i64 6840, !27, i64 6856, !10, i64 6872, !6, i64 6880, !6, i64 6888, !6, i64 6896, !6, i64 6904, !6, i64 6912, !6, i64 6920, !13, i64 6928, !14, i64 6936, !10, i64 6940, !10, i64 6944, !15, i64 6948, !15, i64 6949, !15, i64 6950, !15, i64 6951, !14, i64 6952, !14, i64 6956, !10, i64 6960, !10, i64 6964, !14, i64 6968, !15, i64 6972, !15, i64 6973, !15, i64 6974, !15, i64 6975, !15, i64 6976, !15, i64 6977, !15, i64 6978, !10, i64 6980, !10, i64 6984, !52, i64 6992, !13, i64 7000, !6, i64 7008, !53, i64 7016, !10, i64 7020, !10, i64 7024, !15, i64 7028, !15, i64 7029, !6, i64 7032, !10, i64 7040, !14, i64 7044, !54, i64 7048, !55, i64 7160, !56, i64 7184, !57, i64 7200, !58, i64 7216, !17, i64 7232, !59, i64 7248, !60, i64 7264, !61, i64 7280, !61, i64 7296, !6, i64 7312, !10, i64 7320, !10, i64 7324, !10, i64 7328, !10, i64 7332, !10, i64 7336, !10, i64 7340, !10, i64 7344, !10, i64 7348, !10, i64 7352, !10, i64 7356, !10, i64 7360, !53, i64 7364, !20, i64 7368, !10, i64 7384, !21, i64 7388, !10, i64 7392, !15, i64 7396, !15, i64 7397, !15, i64 7398, !15, i64 7399, !15, i64 7400, !15, i64 7401, !15, i64 7402, !10, i64 7404, !20, i64 7408, !15, i64 7424, !10, i64 7428, !62, i64 7432, !10, i64 7436, !10, i64 7440, !10, i64 7444, !10, i64 7448, !63, i64 7456, !63, i64 7504, !63, i64 7552, !6, i64 7600, !10, i64 7608, !6, i64 7616, !6, i64 7624, !6, i64 7632, !14, i64 7640, !14, i64 7644, !15, i64 7648, !6, i64 7656, !6, i64 7664, !10, i64 7672, !10, i64 7676, !10, i64 7680, !10, i64 7684, !15, i64 7688, !64, i64 7696, !65, i64 7752, !14, i64 7784, !30, i64 7792, !30, i64 7992, !10, i64 8192, !15, i64 8196, !15, i64 8197, !15, i64 8198, !10, i64 8200, !10, i64 8204, !10, i64 8208, !66, i64 8216, !20, i64 8280, !10, i64 8296, !10, i64 8300, !14, i64 8304, !10, i64 8308, !10, i64 8312, !10, i64 8316, !10, i64 8320, !67, i64 8328, !7, i64 8344, !6, i64 8360, !68, i64 8368, !70, i64 8408, !24, i64 8424, !40, i64 8440, !6, i64 8456, !71, i64 8464, !70, i64 8504, !73, i64 8520, !13, i64 8536, !74, i64 8544, !78, i64 12280, !10, i64 12392, !10, i64 12396, !14, i64 12400, !14, i64 12404, !7, i64 12408, !38, i64 12420, !14, i64 12436, !15, i64 12440, !15, i64 12441, !14, i64 12444, !14, i64 12448, !14, i64 12452, !10, i64 12456, !14, i64 12460, !75, i64 12464, !17, i64 12480, !13, i64 12496, !13, i64 12504, !7, i64 12512, !15, i64 12513, !14, i64 12516, !80, i64 12520, !81, i64 12536, !82, i64 12552, !83, i64 12568, !84, i64 12584, !15, i64 12600, !85, i64 12604, !6, i64 12608, !80, i64 12616, !14, i64 12632, !15, i64 12636, !10, i64 12640, !10, i64 12644, !10, i64 12648, !15, i64 12652, !10, i64 12656, !86, i64 12660, !7, i64 12676, !10, i64 13156, !14, i64 13160, !10, i64 13164, !10, i64 13168, !10, i64 13172, !7, i64 13176}
!48 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !6, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !7, i64 52, !14, i64 140, !14, i64 144, !6, i64 152, !6, i64 160, !14, i64 168, !15, i64 172, !6, i64 176, !13, i64 184, !15, i64 192, !15, i64 193, !15, i64 194, !15, i64 195, !15, i64 196, !15, i64 197, !14, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !13, i64 288, !7, i64 296, !14, i64 304, !14, i64 308, !15, i64 312, !15, i64 313, !15, i64 314, !15, i64 315, !7, i64 316, !7, i64 828, !15, i64 912, !15, i64 913, !15, i64 914, !15, i64 915, !15, i64 916, !15, i64 917, !15, i64 918, !14, i64 920, !10, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !13, i64 944, !10, i64 952, !13, i64 956, !7, i64 964, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !14, i64 5440, !16, i64 5444, !32, i64 5448}
!49 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !13, i64 4, !14, i64 12, !14, i64 16, !13, i64 20, !13, i64 28, !10, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !13, i64 56, !14, i64 64, !14, i64 68, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !14, i64 104, !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, !10, i64 144, !13, i64 148, !13, i64 156, !13, i64 164, !13, i64 172, !14, i64 180, !15, i64 184, !15, i64 185, !15, i64 186, !14, i64 188, !14, i64 192, !7, i64 196}
!50 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !38, i64 28, !10, i64 44, !7, i64 48, !7, i64 144, !6, i64 208}
!51 = !{!"double", !7, i64 0}
!52 = !{!"long long", !7, i64 0}
!53 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!54 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !15, i64 56, !20, i64 60, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100}
!55 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !15, i64 16}
!56 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!61 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!62 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!63 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !10, i64 8, !10, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !20, i64 28}
!64 = !{!"_ZTS10ImDrawData", !15, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !13, i64 28, !13, i64 36, !13, i64 44}
!65 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!66 = !{!"_ZTS12ImGuiPayload", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !15, i64 57, !15, i64 58}
!67 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS6ImPoolI10ImGuiTableE", !69, i64 0, !27, i64 16, !10, i64 32}
!69 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !6, i64 8}
!70 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !72, i64 0, !27, i64 16, !10, i64 32}
!72 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!73 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !32, i64 16, !75, i64 32, !75, i64 48, !15, i64 64, !10, i64 68, !14, i64 72, !76, i64 76, !14, i64 3704, !15, i64 3708, !15, i64 3709, !15, i64 3710, !10, i64 3712, !6, i64 3720, !6, i64 3728}
!75 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !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, !77, i64 32}
!77 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!78 = !{!"_ZTS6ImFont", !24, i64 0, !14, i64 16, !14, i64 20, !32, i64 24, !79, i64 40, !6, i64 56, !6, i64 64, !6, i64 72, !16, i64 80, !16, i64 82, !16, i64 84, !15, i64 86, !14, i64 88, !14, i64 92, !14, i64 96, !10, i64 100, !7, i64 104}
!79 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!80 = !{!"_ZTS15ImGuiTextBuffer", !75, i64 0}
!81 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!82 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !75, i64 0}
!83 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !75, i64 0}
!84 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !6, i64 8}
!85 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!86 = !{!"_ZTS18ImGuiMetricsConfig", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !15, i64 4, !10, i64 8, !10, i64 12}
!87 = !{!13, !14, i64 4}
!88 = !{!49, !14, i64 60}
!89 = !{!13, !14, i64 0}
!90 = !{!49, !14, i64 80}
!91 = !{!49, !14, i64 64}
!92 = !{!49, !14, i64 68}
!93 = !{!47, !6, i64 6880}
!94 = !{!12, !21, i64 332}
!95 = !{!12, !10, i64 340}
!96 = !{!12, !14, i64 132}
!97 = !{!47, !10, i64 8192}
!98 = !{!47, !6, i64 7656}
!99 = !{!47, !10, i64 7672}
!100 = !{!12, !10, i64 452}
!101 = !{!47, !10, i64 6960}
!102 = !{!47, !10, i64 7340}
!103 = !{!47, !10, i64 7328}
!104 = !{!47, !53, i64 7364}
!105 = !{!47, !10, i64 7024}
!106 = !{!12, !14, i64 96}
!107 = !{!74, !7, i64 99}
!108 = !{!74, !6, i64 56}
!109 = !{!74, !15, i64 64}
!110 = !{!74, !6, i64 24}
!111 = !{!74, !10, i64 4}
!112 = !{!74, !10, i64 8}
!113 = !{!74, !10, i64 0}
!114 = !{!74, !14, i64 72}
!115 = !{!74, !7, i64 88}
!116 = !{!48, !15, i64 312}
!117 = !{!47, !10, i64 6980}
!118 = !{!47, !10, i64 6984}
!119 = !{!47, !52, i64 6992}
!120 = !{!74, !10, i64 16}
!121 = !{!74, !6, i64 40}
!122 = !{!7, !7, i64 0}
!123 = !{!47, !6, i64 6520}
!124 = !{!78, !14, i64 20}
!125 = !{!78, !14, i64 88}
!126 = !{!78, !14, i64 92}
!127 = !{!78, !14, i64 96}
!128 = !{!78, !6, i64 64}
!129 = !{!78, !6, i64 56}
!130 = !{!131, !14, i64 4}
!131 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 3, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36}
!132 = !{!78, !14, i64 16}
!133 = !{!74, !15, i64 3710}
!134 = !{!74, !10, i64 68}
!135 = !{!74, !10, i64 3712}
!136 = !{!74, !6, i64 3720}
!137 = !{!74, !6, i64 3728}
!138 = !{!47, !15, i64 6973}
!139 = !{!47, !10, i64 13172}
!140 = !{!48, !14, i64 288}
!141 = !{!20, !14, i64 0}
!142 = !{!49, !14, i64 56}
!143 = !{!48, !14, i64 292}
!144 = !{!12, !14, i64 220}
!145 = !{!48, !15, i64 193}
!146 = !{!74, !15, i64 3709}
!147 = !{!48, !14, i64 944}
!148 = !{!48, !14, i64 948}
!149 = !{!74, !15, i64 3708}
!150 = !{!48, !15, i64 314}
!151 = !{!48, !15, i64 315}
!152 = !{!48, !15, i64 313}
!153 = !{!16, !16, i64 0}
!154 = !{!48, !10, i64 5448}
!155 = distinct !{!155, !156}
!156 = !{!"llvm.loop.mustprogress"}
!157 = !{!47, !15, i64 6972}
!158 = !{!48, !10, i64 952}
!159 = !{!74, !10, i64 92}
!160 = !{!47, !15, i64 201}
!161 = !{!48, !6, i64 256}
!162 = !{!74, !10, i64 80}
!163 = !{!74, !10, i64 84}
!164 = distinct !{!164, !156}
!165 = !{!74, !10, i64 48}
!166 = !{!32, !6, i64 8}
!167 = !{!32, !10, i64 0}
!168 = !{!74, !10, i64 32}
!169 = !{!170, !10, i64 0}
!170 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !6, i64 8, !16, i64 16, !10, i64 20, !6, i64 24, !10, i64 32, !10, i64 36, !15, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!171 = !{!170, !10, i64 4}
!172 = !{!170, !6, i64 8}
!173 = !{!170, !10, i64 20}
!174 = !{!170, !6, i64 24}
!175 = !{!170, !10, i64 32}
!176 = !{!170, !10, i64 36}
!177 = !{!170, !15, i64 40}
!178 = !{!74, !10, i64 76}
!179 = !{!170, !10, i64 44}
!180 = !{!170, !10, i64 48}
!181 = !{!170, !10, i64 52}
!182 = !{!20, !14, i64 4}
!183 = distinct !{!183, !156}
!184 = !{!38, !14, i64 12}
!185 = !{!38, !14, i64 4}
!186 = distinct !{!186, !156}
!187 = !{!12, !6, i64 696}
!188 = distinct !{!188, !156}
!189 = !{!48, !14, i64 16}
!190 = !{!74, !14, i64 3704}
!191 = !{!47, !15, i64 202}
!192 = !{!47, !15, i64 12600}
!193 = !{!20, !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.ImVector.5 = type { i32, i32, ptr }
%struct.ImGuiInputTextCallbackData = type { i32, i32, ptr, i16, i32, ptr, i32, i32, i8, i32, i32, i32 }
%struct.ImVec4 = type { float, float, float, float }

@GImGui = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [31 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no = external hidden unnamed_addr constant [2 x i32], align 4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui13PopStyleColorEi(i32 noundef) local_unnamed_addr #6

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #6

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

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

declare void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #6

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #6

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

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

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

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

declare void @_ZN5ImGui11PopStyleVarEi(i32 noundef) local_unnamed_addr #6

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

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

declare void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #6

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #6

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

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

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

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

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

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

61:                                               ; preds = %56
  %62 = and i32 %5, 128
  %.not887.not = icmp eq i32 %62, 0
  %63 = and i32 %5, 1048576
  %64 = icmp ne i32 %63, 0
  %65 = and i32 %5, 1048704
  %.not888 = icmp eq i32 %65, 1048704
  br i1 %.not888, label %66, label %67

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

67:                                               ; preds = %61
  %68 = and i32 %5, 64
  %.not889 = icmp eq i32 %68, 0
  %69 = and i32 %5, 1024
  %.not890 = icmp eq i32 %69, 0
  %70 = and i32 %5, 1088
  %.not891 = icmp eq i32 %70, 1088
  br i1 %.not891, label %71, label %72

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

72:                                               ; preds = %67
  %73 = load ptr, ptr @GImGui, align 8, !tbaa !41
  %74 = and i32 %5, 16384
  %75 = icmp ne i32 %74, 0
  %76 = and i32 %5, 32768
  %.not892 = icmp eq i32 %76, 0
  %77 = and i32 %5, 65536
  %78 = icmp eq i32 %77, 0
  %79 = and i32 %5, 262144
  %.not893 = icmp eq i32 %79, 0
  %80 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not893, %80
  br i1 %or.cond17, label %82, label %81

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

82:                                               ; preds = %72
  br i1 %64, label %83, label %84

83:                                               ; preds = %82
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %84

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

88:                                               ; preds = %84
  %89 = getelementptr inbounds i8, ptr %73, i64 6528
  %90 = load float, ptr %89, align 8, !tbaa !42
  %91 = fmul float %90, 8.000000e+00
  br label %93

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

93:                                               ; preds = %92, %88
  %94 = phi float [ %91, %88 ], [ %.sroa.0490.4.vec.extract, %92 ]
  %95 = getelementptr inbounds i8, ptr %73, i64 5528
  %96 = getelementptr inbounds i8, ptr %73, i64 5532
  %97 = load float, ptr %96, align 4, !tbaa !83
  %98 = tail call float @llvm.fmuladd.f32(float %97, float 2.000000e+00, float %94)
  %99 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0489.0.copyload, float noundef %87, float noundef %98)
  store <2 x float> %99, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #15
  %100 = extractelement <2 x float> %99, i64 0
  %.sroa.0490.0.vec.extract = extractelement <2 x float> %86, i64 0
  %101 = fcmp ogt float %.sroa.0490.0.vec.extract, 0.000000e+00
  %102 = extractelement <2 x float> %99, i64 1
  br i1 %101, label %103, label %107

103:                                              ; preds = %93
  %104 = getelementptr inbounds i8, ptr %73, i64 5552
  %105 = load float, ptr %104, align 4, !tbaa !84
  %106 = fadd float %.sroa.0490.0.vec.extract, %105
  br label %107

107:                                              ; preds = %93, %103
  %108 = phi float [ %106, %103 ], [ 0.000000e+00, %93 ]
  %109 = fadd float %100, %108
  %110 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %109, float noundef %102)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #15
  %111 = getelementptr inbounds i8, ptr %52, i64 216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15
  %112 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %111, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %112, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %111, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #15
  %113 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %10)
  store <2 x float> %113, ptr %14, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %14)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #15
  %.sroa.0460.0.copyload = load float, ptr %9, align 8, !tbaa !85
  %.sroa.12.0.copyload = load float, ptr %110, align 4, !tbaa !85
  br i1 %64, label %114, label %138

114:                                              ; preds = %107
  %115 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %85, ptr noundef nonnull %11)
  br i1 %115, label %118, label %116

116:                                              ; preds = %114
  %117 = load float, ptr %96, align 4, !tbaa !83
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %117)
  call void @_ZN5ImGui8EndGroupEv()
  br label %1383

118:                                              ; preds = %114
  %119 = getelementptr inbounds i8, ptr %73, i64 5780
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %119)
  %120 = getelementptr inbounds i8, ptr %73, i64 5536
  %121 = load float, ptr %120, align 4, !tbaa !86
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 6, float noundef %121)
  %122 = getelementptr inbounds i8, ptr %73, i64 5540
  %123 = load float, ptr %122, align 4, !tbaa !87
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %123)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %95)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #15
  %124 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %124, ptr %15, align 8
  %125 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %0, i32 noundef %85, ptr noundef nonnull align 4 dereferenceable(8) %15, i1 noundef zeroext true, i32 noundef 65540)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #15
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  br i1 %125, label %.thread, label %137

.thread:                                          ; preds = %118
  %126 = getelementptr inbounds i8, ptr %73, i64 6880
  %127 = load ptr, ptr %126, align 8, !tbaa !88
  %128 = getelementptr inbounds i8, ptr %127, i64 332
  %129 = load i32, ptr %128, align 4, !tbaa !89
  %130 = shl nuw i32 1, %129
  %131 = getelementptr inbounds i8, ptr %127, i64 340
  %132 = load i32, ptr %131, align 4, !tbaa !90
  %133 = or i32 %132, %130
  store i32 %133, ptr %131, align 4, !tbaa !90
  %134 = getelementptr inbounds i8, ptr %127, i64 132
  %135 = load float, ptr %134, align 4, !tbaa !91
  %136 = fsub float %.sroa.0460.0.copyload, %135
  br label %141

137:                                              ; preds = %118
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1383

138:                                              ; preds = %107
  %139 = load float, ptr %96, align 4, !tbaa !83
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %139)
  %140 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %85, ptr noundef nonnull %11)
  br i1 %140, label %141, label %1383

141:                                              ; preds = %.thread, %138
  %.sroa.0460.1 = phi float [ %.sroa.0460.0.copyload, %138 ], [ %136, %.thread ]
  %.1817 = phi ptr [ %52, %138 ], [ %127, %.thread ]
  %142 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %85)
  br i1 %142, label %143, label %145

143:                                              ; preds = %141
  %144 = getelementptr inbounds i8, ptr %73, i64 8192
  store i32 1, ptr %144, align 8, !tbaa !92
  br label %145

145:                                              ; preds = %143, %141
  %146 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %85)
  %147 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef nonnull %52, i32 noundef %85)
  br i1 %147, label %148, label %158

148:                                              ; preds = %145
  %149 = getelementptr inbounds i8, ptr %73, i64 7656
  %150 = load ptr, ptr %149, align 8, !tbaa !93
  %151 = icmp eq ptr %150, %52
  br i1 %151, label %152, label %158

152:                                              ; preds = %148
  %153 = getelementptr inbounds i8, ptr %73, i64 7672
  %154 = load i32, ptr %153, align 8, !tbaa !94
  %155 = getelementptr inbounds i8, ptr %52, i64 452
  %156 = load i32, ptr %155, align 4, !tbaa !95
  %157 = icmp eq i32 %154, %156
  br label %158

158:                                              ; preds = %148, %152, %145
  %159 = phi i1 [ false, %145 ], [ false, %148 ], [ %157, %152 ]
  br i1 %142, label %160, label %164

160:                                              ; preds = %158
  %161 = getelementptr inbounds i8, ptr %73, i64 1056
  %162 = load i8, ptr %161, align 8, !tbaa !96, !range !39, !noundef !40
  %163 = trunc nuw i8 %162 to i1
  br label %164

164:                                              ; preds = %160, %158
  %165 = phi i1 [ false, %158 ], [ %163, %160 ]
  %166 = getelementptr inbounds i8, ptr %73, i64 6960
  %167 = load i32, ptr %166, align 8, !tbaa !97
  %.not894 = icmp eq i32 %167, %85
  br i1 %.not894, label %180, label %168

168:                                              ; preds = %164
  %169 = getelementptr inbounds i8, ptr %73, i64 7340
  %170 = load i32, ptr %169, align 4, !tbaa !98
  %171 = icmp eq i32 %170, %85
  br i1 %171, label %180, label %172

172:                                              ; preds = %168
  %173 = getelementptr inbounds i8, ptr %73, i64 7328
  %174 = load i32, ptr %173, align 8, !tbaa !99
  %175 = icmp eq i32 %174, %85
  br i1 %175, label %176, label %180

176:                                              ; preds = %172
  %177 = getelementptr inbounds i8, ptr %73, i64 7364
  %178 = load i32, ptr %177, align 4, !tbaa !100
  %179 = icmp eq i32 %178, 3
  br label %180

180:                                              ; preds = %168, %176, %172, %164
  %181 = phi i1 [ false, %164 ], [ true, %168 ], [ false, %172 ], [ %179, %176 ]
  %182 = icmp ne ptr %146, null
  %or.cond = and i1 %64, %182
  br i1 %or.cond, label %183, label %194

183:                                              ; preds = %180
  %184 = icmp eq i32 %167, 0
  br i1 %184, label %185, label %190

185:                                              ; preds = %183
  %186 = getelementptr inbounds i8, ptr %73, i64 7024
  %187 = load i32, ptr %186, align 8, !tbaa !101
  %188 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.1817, i32 noundef 1)
  %189 = icmp eq i32 %187, %188
  %.pre = load i32, ptr %166, align 8, !tbaa !97
  br label %190

190:                                              ; preds = %185, %183
  %191 = phi i32 [ %.pre, %185 ], [ %167, %183 ]
  %.ph = phi i1 [ %189, %185 ], [ false, %183 ]
  %192 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.1817, i32 noundef 1)
  %193 = icmp eq i32 %191, %192
  %.pre1088 = load i32, ptr %166, align 8, !tbaa !97
  br label %194

194:                                              ; preds = %180, %190
  %195 = phi i32 [ %.pre1088, %190 ], [ %167, %180 ]
  %196 = phi i1 [ %.ph, %190 ], [ false, %180 ]
  %197 = phi i1 [ %193, %190 ], [ false, %180 ]
  %.not895 = icmp ne i32 %195, %85
  br i1 %.not895, label %198, label %201

198:                                              ; preds = %194
  %199 = and i32 %5, 16
  %.not896 = icmp ne i32 %199, 0
  %brmerge = select i1 %.not896, i1 true, i1 %181
  %200 = xor i1 %64, true
  %spec.select1024 = and i1 %brmerge, %200
  br label %201

201:                                              ; preds = %198, %194
  %202 = phi i1 [ false, %194 ], [ %spec.select1024, %198 ]
  br i1 %64, label %203, label %206

203:                                              ; preds = %201
  %204 = getelementptr inbounds i8, ptr %.1817, i64 96
  %205 = load float, ptr %204, align 4, !tbaa !102
  br label %206

206:                                              ; preds = %201, %203
  %207 = phi float [ %205, %203 ], [ 0x47EFFFFFE0000000, %201 ]
  br i1 %182, label %208, label %.thread1034

208:                                              ; preds = %206
  %209 = getelementptr inbounds i8, ptr %146, i64 99
  %210 = load i8, ptr %209, align 1, !tbaa !103
  %211 = xor i1 %64, true
  %212 = zext i1 %211 to i8
  %213 = icmp ne i8 %210, %212
  %brmerge928 = select i1 %147, i1 true, i1 %165
  %214 = select i1 %brmerge928, i1 true, i1 %196
  %spec.select1028 = select i1 %214, i1 true, i1 %181
  %215 = select i1 %spec.select1028, i1 true, i1 %197
  br i1 %215, label %218, label %220

.thread1034:                                      ; preds = %206
  %brmerge9281035 = select i1 %147, i1 true, i1 %165
  %216 = select i1 %brmerge9281035, i1 true, i1 %196
  %spec.select10281037 = select i1 %216, i1 true, i1 %181
  %217 = select i1 %spec.select10281037, i1 true, i1 %197
  br i1 %217, label %218, label %279

218:                                              ; preds = %.thread1034, %208
  %spec.select10281041 = phi i1 [ %spec.select10281037, %.thread1034 ], [ %spec.select1028, %208 ]
  %219 = phi i1 [ false, %.thread1034 ], [ %213, %208 ]
  %brmerge929 = select i1 %.not895, i1 true, i1 %219
  br i1 %brmerge929, label %221, label %279

220:                                              ; preds = %208
  br i1 %213, label %221, label %.thread1045

221:                                              ; preds = %218, %220
  %222 = phi i8 [ 1, %218 ], [ 0, %220 ]
  %spec.select10281039 = phi i1 [ %spec.select10281041, %218 ], [ false, %220 ]
  %223 = phi i1 [ %219, %218 ], [ true, %220 ]
  %224 = getelementptr inbounds i8, ptr %73, i64 8544
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %224)
  %225 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16
  %226 = trunc i64 %225 to i32
  %227 = getelementptr inbounds i8, ptr %73, i64 8592
  %228 = add nsw i32 %226, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %227, i32 noundef %228)
  %229 = getelementptr inbounds i8, ptr %73, i64 8600
  %230 = load ptr, ptr %229, align 8, !tbaa !104
  %231 = sext i32 %228 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %230, ptr nonnull align 1 %2, i64 %231, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #15
  store ptr null, ptr %16, align 8, !tbaa !41
  %232 = getelementptr inbounds i8, ptr %73, i64 8560
  %233 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %232, i32 noundef %233)
  %234 = getelementptr inbounds i8, ptr %73, i64 8576
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %234, i32 noundef 0)
  %235 = getelementptr inbounds i8, ptr %73, i64 8608
  store i8 0, ptr %235, align 8, !tbaa !105
  %236 = getelementptr inbounds i8, ptr %73, i64 8568
  %237 = load ptr, ptr %236, align 8, !tbaa !106
  %238 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %237, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %16)
  %239 = getelementptr inbounds i8, ptr %73, i64 8548
  store i32 %238, ptr %239, align 4, !tbaa !107
  %240 = load ptr, ptr %16, align 8, !tbaa !41
  %241 = ptrtoint ptr %240 to i64
  %242 = ptrtoint ptr %2 to i64
  %243 = sub i64 %241, %242
  %244 = trunc i64 %243 to i32
  %245 = getelementptr inbounds i8, ptr %73, i64 8552
  store i32 %244, ptr %245, align 8, !tbaa !108
  %246 = load i32, ptr %224, align 8, !tbaa !109
  %247 = icmp ne i32 %246, %85
  %.not899 = select i1 %247, i1 true, i1 %223
  br i1 %.not899, label %249, label %248

248:                                              ; preds = %221
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3736) %224)
  br label %254

249:                                              ; preds = %221
  store i32 %85, ptr %224, align 8, !tbaa !109
  %250 = getelementptr inbounds i8, ptr %73, i64 8616
  store float 0.000000e+00, ptr %250, align 8, !tbaa !110
  %251 = getelementptr inbounds i8, ptr %73, i64 8620
  %252 = xor i1 %64, true
  %253 = zext i1 %252 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %251, i32 noundef %253)
  %spec.select930 = select i1 %159, i1 true, i1 %202
  %spec.select1029 = select i1 %64, i1 %202, i1 %spec.select930
  br label %254

254:                                              ; preds = %249, %248
  %.0823 = phi i1 [ %202, %248 ], [ %spec.select1029, %249 ]
  %255 = and i32 %5, 8192
  %.not900 = icmp eq i32 %255, 0
  br i1 %.not900, label %258, label %256

256:                                              ; preds = %254
  %257 = getelementptr inbounds i8, ptr %73, i64 8632
  store i8 1, ptr %257, align 4, !tbaa !111
  br label %258

258:                                              ; preds = %256, %254
  br i1 %64, label %.thread1042, label %259

259:                                              ; preds = %258
  %not. = xor i1 %147, true
  %260 = select i1 %not., i1 true, i1 %159
  br i1 %260, label %261, label %266

261:                                              ; preds = %259
  br i1 %165, label %262, label %.thread1042

262:                                              ; preds = %261
  %263 = getelementptr inbounds i8, ptr %73, i64 320
  %264 = load i8, ptr %263, align 8, !tbaa !112, !range !39, !noundef !40
  %265 = trunc nuw i8 %264 to i1
  br i1 %265, label %266, label %.thread1042

266:                                              ; preds = %262, %259
  br label %.thread1042

.thread1042:                                      ; preds = %258, %261, %262, %266
  %.1824 = phi i1 [ %.0823, %258 ], [ true, %266 ], [ %.0823, %262 ], [ %.0823, %261 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #15
  %.pre1089 = load i32, ptr %166, align 8, !tbaa !97
  %.not901 = icmp ne i32 %.pre1089, %85
  %brmerge932.not = and i1 %spec.select10281039, %.not901
  br i1 %brmerge932.not, label %267, label %.thread1045

267:                                              ; preds = %.thread1042
  %268 = load i32, ptr %224, align 8, !tbaa !109
  %269 = icmp eq i32 %268, %85
  br i1 %269, label %270, label %.critedge

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

270:                                              ; preds = %267
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %85, ptr noundef nonnull %52)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %85, ptr noundef nonnull %52)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %52)
  %271 = getelementptr inbounds i8, ptr %73, i64 6980
  %brmerge933.not = icmp eq i32 %65, 0
  %spec.select.v = select i1 %brmerge933.not, i32 3, i32 15
  %272 = load <2 x i32>, ptr %271, align 4, !tbaa !113
  %273 = insertelement <2 x i32> <i32 poison, i32 2>, i32 %spec.select.v, i64 0
  %274 = or <2 x i32> %272, %273
  store <2 x i32> %274, ptr %271, align 4, !tbaa !113
  %275 = getelementptr inbounds i8, ptr %73, i64 6992
  %276 = load i64, ptr %275, align 8, !tbaa !114
  %spec.select934.v = select i1 %64, i64 480, i64 384
  %spec.select934 = or i64 %276, %spec.select934.v
  store i64 %spec.select934, ptr %275, align 8, !tbaa !114
  %.not903 = icmp eq i32 %70, 0
  br i1 %.not903, label %.thread1045, label %277

277:                                              ; preds = %270
  %278 = or i64 %spec.select934, 1
  store i64 %278, ptr %275, align 8, !tbaa !114
  br label %.thread1045

279:                                              ; preds = %.thread1034, %218
  %.ph1110 = phi i32 [ %195, %.thread1034 ], [ %85, %218 ]
  %.ph1111 = phi i8 [ 0, %.thread1034 ], [ 1, %218 ]
  %280 = icmp eq i32 %.ph1110, %85
  %281 = icmp eq ptr %146, null
  %or.cond5 = and i1 %281, %280
  br i1 %or.cond5, label %282, label %.thread1045

282:                                              ; preds = %279
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %.thread1045

.thread1045:                                      ; preds = %.thread1042, %220, %277, %270, %282, %279
  %.08181120 = phi ptr [ %224, %277 ], [ %224, %270 ], [ null, %282 ], [ %146, %279 ], [ %146, %220 ], [ %224, %.thread1042 ]
  %.28251117 = phi i1 [ %.1824, %277 ], [ %.1824, %270 ], [ %202, %282 ], [ %202, %279 ], [ %202, %220 ], [ %.1824, %.thread1042 ]
  %283 = phi i8 [ %222, %277 ], [ %222, %270 ], [ %.ph1111, %282 ], [ %.ph1111, %279 ], [ 0, %220 ], [ %222, %.thread1042 ]
  %284 = load i32, ptr %166, align 8, !tbaa !97
  %285 = icmp eq i32 %284, %85
  br i1 %285, label %.thread1047, label %288

.thread1047:                                      ; preds = %.thread1045
  %286 = getelementptr inbounds i8, ptr %73, i64 1056
  %287 = load i8, ptr %286, align 8, !tbaa !96, !range !39, !noundef !40
  %.not1070 = xor i8 %283, 1
  %not.brmerge936 = and i8 %287, %.not1070
  br label %291

288:                                              ; preds = %.thread1045
  %289 = icmp ne ptr %.08181120, null
  %290 = select i1 %289, i1 %197, i1 false
  br label %291

291:                                              ; preds = %.thread1047, %288
  %.08191049 = phi i8 [ 0, %288 ], [ %not.brmerge936, %.thread1047 ]
  %292 = phi i1 [ %290, %288 ], [ true, %.thread1047 ]
  %293 = icmp ne ptr %.08181120, null
  br i1 %293, label %294, label %.thread1050

294:                                              ; preds = %291
  %295 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  %spec.select937 = select i1 %295, i1 %292, i1 false
  %or.cond1026 = select i1 %75, i1 %292, i1 false
  br i1 %or.cond1026, label %296, label %.thread1050

296:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #15
  store ptr null, ptr %17, align 8, !tbaa !41
  %297 = getelementptr inbounds i8, ptr %.08181120, i64 16
  %298 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %297, i32 noundef %298)
  %299 = getelementptr inbounds i8, ptr %.08181120, i64 24
  %300 = load ptr, ptr %299, align 8, !tbaa !106
  %301 = load i32, ptr %297, align 8, !tbaa !115
  %302 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %300, i32 noundef %301, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %17)
  %303 = getelementptr inbounds i8, ptr %.08181120, i64 4
  store i32 %302, ptr %303, align 4, !tbaa !107
  %304 = load ptr, ptr %17, align 8, !tbaa !41
  %305 = ptrtoint ptr %304 to i64
  %306 = ptrtoint ptr %2 to i64
  %307 = sub i64 %305, %306
  %308 = trunc i64 %307 to i32
  %309 = getelementptr inbounds i8, ptr %.08181120, i64 8
  store i32 %308, ptr %309, align 8, !tbaa !108
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  %310 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  %311 = and i1 %spec.select937, %310
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #15
  br label %.thread1050

.thread1050:                                      ; preds = %291, %296, %294
  %.0829.in = phi i1 [ %311, %296 ], [ %spec.select937, %294 ], [ false, %291 ]
  %brmerge939 = select i1 %292, i1 true, i1 %.0829.in
  br i1 %brmerge939, label %316, label %312

312:                                              ; preds = %.thread1050
  %313 = load i32, ptr %166, align 8, !tbaa !97
  %314 = icmp eq i32 %313, %85
  %.not = xor i1 %75, true
  %315 = and i1 %314, %.not
  %or.cond940 = and i1 %293, %315
  br i1 %or.cond940, label %317, label %321

316:                                              ; preds = %.thread1050
  %.not.old = xor i1 %75, true
  %or.cond9.old = and i1 %293, %.not.old
  br i1 %or.cond9.old, label %317, label %321

317:                                              ; preds = %312, %316
  %318 = getelementptr inbounds i8, ptr %.08181120, i64 64
  %319 = load i8, ptr %318, align 8, !tbaa !105, !range !39, !noundef !40
  %320 = trunc nuw i8 %319 to i1
  br label %321

321:                                              ; preds = %317, %316, %312
  %322 = phi i1 [ false, %316 ], [ false, %312 ], [ %320, %317 ]
  %.not904 = icmp eq ptr %1, null
  br i1 %.not904, label %331, label %323

323:                                              ; preds = %321
  br i1 %322, label %324, label %327

324:                                              ; preds = %323
  %325 = getelementptr inbounds i8, ptr %.08181120, i64 40
  %326 = load ptr, ptr %325, align 8, !tbaa !116
  br label %327

327:                                              ; preds = %323, %324
  %328 = phi ptr [ %326, %324 ], [ %2, %323 ]
  %329 = load i8, ptr %328, align 1, !tbaa !117
  %330 = icmp eq i8 %329, 0
  br label %331

331:                                              ; preds = %327, %321
  %332 = phi i1 [ false, %321 ], [ %330, %327 ]
  %brmerge941 = select i1 %.not892, i1 true, i1 %332
  br i1 %brmerge941, label %363, label %333

333:                                              ; preds = %331
  %334 = getelementptr inbounds i8, ptr %73, i64 6520
  %335 = load ptr, ptr %334, align 8, !tbaa !118
  %336 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(106) %335, i16 noundef zeroext 42)
  %337 = getelementptr inbounds i8, ptr %73, i64 12280
  %338 = load ptr, ptr %334, align 8, !tbaa !118
  %339 = getelementptr inbounds i8, ptr %338, i64 20
  %340 = load float, ptr %339, align 4, !tbaa !119
  %341 = getelementptr inbounds i8, ptr %73, i64 12300
  store float %340, ptr %341, align 4, !tbaa !119
  %342 = getelementptr inbounds i8, ptr %338, i64 88
  %343 = getelementptr inbounds i8, ptr %73, i64 12368
  %344 = load <2 x float>, ptr %342, align 8, !tbaa !85
  store <2 x float> %344, ptr %343, align 8, !tbaa !85
  %345 = getelementptr inbounds i8, ptr %338, i64 96
  %346 = load float, ptr %345, align 8, !tbaa !120
  %347 = getelementptr inbounds i8, ptr %73, i64 12376
  store float %346, ptr %347, align 8, !tbaa !120
  %348 = getelementptr inbounds i8, ptr %338, i64 64
  %349 = load ptr, ptr %348, align 8, !tbaa !121
  %350 = getelementptr inbounds i8, ptr %73, i64 12344
  store ptr %349, ptr %350, align 8, !tbaa !121
  %351 = getelementptr inbounds i8, ptr %73, i64 12336
  store ptr %336, ptr %351, align 8, !tbaa !122
  %352 = getelementptr inbounds i8, ptr %336, i64 4
  %353 = load float, ptr %352, align 4, !tbaa !123
  %354 = getelementptr inbounds i8, ptr %73, i64 12296
  store float %353, ptr %354, align 8, !tbaa !125
  %355 = getelementptr inbounds i8, ptr %73, i64 12320
  %356 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %355)
  br i1 %356, label %357, label %.critedge11

357:                                              ; preds = %333
  %358 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %337)
  br i1 %358, label %359, label %.critedge11

359:                                              ; preds = %357
  %360 = getelementptr inbounds i8, ptr %73, i64 12304
  %361 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %360)
  br i1 %361, label %362, label %.critedge11

.critedge11:                                      ; preds = %357, %333, %359
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.1, i32 noundef 4005, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

362:                                              ; preds = %359
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %337)
  br label %363

363:                                              ; preds = %331, %362
  %364 = load i32, ptr %166, align 8, !tbaa !97
  %365 = icmp eq i32 %364, %85
  br i1 %365, label %366, label %509

366:                                              ; preds = %363
  br i1 %293, label %368, label %367

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

368:                                              ; preds = %366
  %369 = getelementptr inbounds i8, ptr %.08181120, i64 8
  %370 = load i32, ptr %369, align 8, !tbaa !108
  %371 = getelementptr inbounds i8, ptr %.08181120, i64 3710
  store i8 0, ptr %371, align 2, !tbaa !126
  %372 = getelementptr inbounds i8, ptr %.08181120, i64 68
  store i32 %3, ptr %372, align 4, !tbaa !127
  %373 = getelementptr inbounds i8, ptr %.08181120, i64 3712
  store i32 %5, ptr %373, align 8, !tbaa !128
  %374 = getelementptr inbounds i8, ptr %.08181120, i64 3720
  store ptr %6, ptr %374, align 8, !tbaa !129
  %375 = getelementptr inbounds i8, ptr %.08181120, i64 3728
  store ptr %7, ptr %375, align 8, !tbaa !130
  %376 = getelementptr inbounds i8, ptr %73, i64 304
  %377 = load i8, ptr %376, align 8, !tbaa !96, !range !39, !noundef !40
  %378 = xor i8 %377, 1
  %379 = getelementptr inbounds i8, ptr %73, i64 6973
  store i8 %378, ptr %379, align 1, !tbaa !131
  %380 = getelementptr inbounds i8, ptr %73, i64 13172
  store i32 1, ptr %380, align 4, !tbaa !132
  %381 = getelementptr inbounds i8, ptr %73, i64 296
  %382 = load float, ptr %381, align 8, !tbaa !133
  %383 = load float, ptr %11, align 8, !tbaa !134
  %384 = fsub float %382, %383
  %385 = load float, ptr %95, align 4, !tbaa !135
  %386 = fsub float %384, %385
  %387 = getelementptr inbounds i8, ptr %.08181120, i64 72
  %388 = load float, ptr %387, align 8, !tbaa !110
  %389 = fadd float %386, %388
  br i1 %64, label %390, label %398

390:                                              ; preds = %368
  %391 = getelementptr inbounds i8, ptr %73, i64 300
  %392 = load float, ptr %391, align 4, !tbaa !136
  %393 = getelementptr inbounds i8, ptr %.1817, i64 220
  %394 = load float, ptr %393, align 4, !tbaa !137
  %395 = fsub float %392, %394
  %396 = load float, ptr %96, align 4, !tbaa !83
  %397 = fsub float %395, %396
  br label %402

398:                                              ; preds = %368
  %399 = getelementptr inbounds i8, ptr %73, i64 6528
  %400 = load float, ptr %399, align 8, !tbaa !42
  %401 = fmul float %400, 5.000000e-01
  br label %402

402:                                              ; preds = %398, %390
  %403 = phi float [ %397, %390 ], [ %401, %398 ]
  %404 = getelementptr inbounds i8, ptr %73, i64 201
  %405 = load i8, ptr %404, align 1, !tbaa !138, !range !39, !noundef !40
  %406 = trunc nuw i8 %405 to i1
  br i1 %.28251117, label %412, label %407

407:                                              ; preds = %402
  %.not942 = xor i1 %142, true
  %brmerge943 = select i1 %.not942, i1 true, i1 %406
  br i1 %brmerge943, label %414, label %408

408:                                              ; preds = %407
  %409 = getelementptr inbounds i8, ptr %73, i64 1061
  %410 = load i8, ptr %409, align 1, !tbaa !96, !range !39, !noundef !40
  %411 = trunc nuw i8 %410 to i1
  br i1 %411, label %412, label %414

412:                                              ; preds = %408, %402
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  %413 = getelementptr inbounds i8, ptr %.08181120, i64 3709
  store i8 1, ptr %413, align 1, !tbaa !139
  br label %449

414:                                              ; preds = %407, %408
  %415 = select i1 %142, i1 %406, i1 false
  br i1 %415, label %416, label %421

416:                                              ; preds = %414
  %417 = getelementptr inbounds i8, ptr %73, i64 1061
  %418 = load i8, ptr %417, align 1, !tbaa !96, !range !39, !noundef !40
  %419 = trunc nuw i8 %418 to i1
  br i1 %419, label %420, label %421

420:                                              ; preds = %416
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef 2097164)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef 6291469)
  br label %449

421:                                              ; preds = %414, %416
  %422 = getelementptr inbounds i8, ptr %73, i64 1056
  %423 = load i8, ptr %422, align 8, !tbaa !96, !range !39, !noundef !40
  %424 = trunc nuw i8 %423 to i1
  br i1 %424, label %425, label %432

425:                                              ; preds = %421
  %426 = getelementptr inbounds i8, ptr %.08181120, i64 3709
  %427 = load i8, ptr %426, align 1, !tbaa !139, !range !39, !noundef !40
  %428 = trunc nuw i8 %427 to i1
  br i1 %428, label %432, label %429

429:                                              ; preds = %425
  br i1 %142, label %430, label %449

430:                                              ; preds = %429
  %431 = getelementptr inbounds i8, ptr %.08181120, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08181120, ptr noundef nonnull %431, float noundef %389, float noundef %403)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br label %449

432:                                              ; preds = %425, %421
  %433 = trunc nuw i8 %377 to i1
  br i1 %433, label %434, label %449

434:                                              ; preds = %432
  %435 = getelementptr inbounds i8, ptr %.08181120, i64 3709
  %436 = load i8, ptr %435, align 1, !tbaa !139, !range !39, !noundef !40
  %437 = trunc nuw i8 %436 to i1
  br i1 %437, label %449, label %438

438:                                              ; preds = %434
  %439 = getelementptr inbounds i8, ptr %73, i64 952
  %440 = load float, ptr %439, align 8, !tbaa !140
  %441 = fcmp une float %440, 0.000000e+00
  br i1 %441, label %446, label %442

442:                                              ; preds = %438
  %443 = getelementptr inbounds i8, ptr %73, i64 956
  %444 = load float, ptr %443, align 4, !tbaa !141
  %445 = fcmp une float %444, 0.000000e+00
  br i1 %445, label %446, label %449

446:                                              ; preds = %442, %438
  %447 = getelementptr inbounds i8, ptr %.08181120, i64 76
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.08181120, ptr noundef nonnull %447, float noundef %389, float noundef %403)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  %448 = getelementptr inbounds i8, ptr %.08181120, i64 3708
  store i8 1, ptr %448, align 4, !tbaa !142
  br label %449

449:                                              ; preds = %420, %432, %434, %442, %446, %429, %430, %412
  %450 = getelementptr inbounds i8, ptr %.08181120, i64 3709
  %451 = load i8, ptr %450, align 1, !tbaa !139, !range !39, !noundef !40
  %452 = trunc nuw i8 %451 to i1
  br i1 %452, label %453, label %457

453:                                              ; preds = %449
  %454 = load i8, ptr %376, align 8, !tbaa !96, !range !39, !noundef !40
  %455 = trunc nuw i8 %454 to i1
  br i1 %455, label %457, label %456

456:                                              ; preds = %453
  store i8 0, ptr %450, align 1, !tbaa !139
  br label %457

457:                                              ; preds = %456, %453, %449
  %458 = getelementptr inbounds i8, ptr %73, i64 320
  %459 = load i8, ptr %458, align 8, !tbaa !112, !range !39, !noundef !40
  %460 = trunc nuw i8 %459 to i1
  br i1 %460, label %461, label %466

461:                                              ; preds = %457
  %462 = getelementptr inbounds i8, ptr %73, i64 322
  %463 = load i8, ptr %462, align 2, !tbaa !143, !range !39, !noundef !40
  %464 = trunc nuw i8 %463 to i1
  %.not947 = xor i1 %464, true
  %465 = select i1 %464, i1 %406, i1 false
  br i1 %465, label %467, label %471

466:                                              ; preds = %457
  br i1 %406, label %467, label %471

467:                                              ; preds = %461, %466
  %468 = getelementptr inbounds i8, ptr %73, i64 323
  %469 = load i8, ptr %468, align 1, !tbaa !144, !range !39, !noundef !40
  %470 = trunc nuw i8 %469 to i1
  br label %471

471:                                              ; preds = %461, %466, %467
  %472 = phi i1 [ %.not947, %461 ], [ false, %466 ], [ %470, %467 ]
  br i1 %.not890, label %487, label %473

473:                                              ; preds = %471
  %474 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  %.not950 = xor i1 %474, true
  %brmerge951 = select i1 %.not950, i1 true, i1 %472
  br i1 %brmerge951, label %487, label %475

475:                                              ; preds = %473
  %476 = getelementptr inbounds i8, ptr %73, i64 321
  %477 = load i8, ptr %476, align 1, !tbaa !145, !range !39, !noundef !40
  %478 = trunc nuw i8 %477 to i1
  %brmerge952 = or i1 %75, %478
  br i1 %brmerge952, label %487, label %479

479:                                              ; preds = %475
  %480 = getelementptr inbounds i8, ptr %73, i64 5456
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #15
  store i16 9, ptr %18, align 2, !tbaa !146
  %481 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %480, ptr noundef nonnull align 2 dereferenceable(2) %18)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #15
  br i1 %481, label %487, label %482

482:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #15
  store i32 9, ptr %19, align 4, !tbaa !113
  %483 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %19, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %483, label %484, label %486

484:                                              ; preds = %482
  %485 = load i32, ptr %19, align 4, !tbaa !113
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %485)
  br label %486

486:                                              ; preds = %484, %482
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #15
  br label %487

487:                                              ; preds = %475, %473, %479, %486, %471
  %488 = getelementptr inbounds i8, ptr %73, i64 5456
  %489 = load i32, ptr %488, align 8, !tbaa !147
  %490 = icmp sgt i32 %489, 0
  br i1 %490, label %491, label %509

491:                                              ; preds = %487
  %brmerge953 = or i1 %75, %472
  %brmerge954 = select i1 %brmerge953, i1 true, i1 %181
  br i1 %brmerge954, label %.loopexit1077, label %.lr.ph

.lr.ph:                                           ; preds = %491
  %492 = getelementptr inbounds i8, ptr %73, i64 321
  br label %493

493:                                              ; preds = %.lr.ph, %505
  %.08461080 = phi i32 [ 0, %.lr.ph ], [ %506, %505 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #15
  %494 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %488, i32 noundef %.08461080)
  %495 = load i16, ptr %494, align 2, !tbaa !146
  %496 = zext i16 %495 to i32
  store i32 %496, ptr %20, align 4, !tbaa !113
  %497 = icmp eq i16 %495, 9
  br i1 %497, label %498, label %501

498:                                              ; preds = %493
  %499 = load i8, ptr %492, align 1, !tbaa !145, !range !39, !noundef !40
  %500 = trunc nuw i8 %499 to i1
  br i1 %500, label %505, label %501

501:                                              ; preds = %498, %493
  %502 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %502, label %503, label %505

503:                                              ; preds = %501
  %504 = load i32, ptr %20, align 4, !tbaa !113
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %504)
  br label %505

505:                                              ; preds = %501, %503, %498
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #15
  %506 = add nuw nsw i32 %.08461080, 1
  %507 = load i32, ptr %488, align 8, !tbaa !147
  %508 = icmp slt i32 %506, %507
  br i1 %508, label %493, label %.loopexit1077, !llvm.loop !148

.loopexit1077:                                    ; preds = %505, %491
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %488, i32 noundef 0)
  br label %509

509:                                              ; preds = %487, %.loopexit1077, %363
  %.0844 = phi i32 [ 0, %363 ], [ %370, %.loopexit1077 ], [ %370, %487 ]
  %510 = load i32, ptr %166, align 8, !tbaa !97
  %511 = icmp eq i32 %510, %85
  br i1 %511, label %512, label %818

512:                                              ; preds = %509
  %513 = getelementptr inbounds i8, ptr %73, i64 6972
  %514 = load i8, ptr %513, align 4, !tbaa !150, !range !39, !noundef !40
  %515 = trunc nuw i8 %514 to i1
  br i1 %515, label %.thread1139, label %516

516:                                              ; preds = %512
  %517 = trunc nuw i8 %.08191049 to i1
  br i1 %517, label %.thread1139, label %518

518:                                              ; preds = %516
  br i1 %293, label %520, label %519

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

520:                                              ; preds = %518
  %521 = getelementptr inbounds i8, ptr %73, i64 960
  %522 = load i32, ptr %521, align 8, !tbaa !151
  %523 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %524 = icmp eq i32 %522, %523
  br i1 %524, label %526, label %525

525:                                              ; preds = %520
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.1, i32 noundef 4095, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

526:                                              ; preds = %520
  %527 = load float, ptr %96, align 4, !tbaa !83
  %528 = fsub float %.sroa.12.0.copyload, %527
  %529 = getelementptr inbounds i8, ptr %73, i64 6528
  %530 = load float, ptr %529, align 8, !tbaa !42
  %531 = fdiv float %528, %530
  %532 = fptosi float %531 to i32
  %533 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %532, i32 noundef 1)
  %534 = getelementptr inbounds i8, ptr %.08181120, i64 76
  %535 = getelementptr inbounds i8, ptr %.08181120, i64 92
  store i32 %533, ptr %535, align 4, !tbaa !152
  %536 = getelementptr inbounds i8, ptr %73, i64 321
  %537 = load i8, ptr %536, align 1, !tbaa !145, !range !39, !noundef !40
  %538 = trunc nuw i8 %537 to i1
  %539 = select i1 %538, i32 4194304, i32 0
  %540 = getelementptr inbounds i8, ptr %73, i64 201
  %541 = load i8, ptr %540, align 1, !tbaa !138, !range !39, !noundef !40
  %542 = trunc nuw i8 %541 to i1
  br i1 %542, label %546, label %543

543:                                              ; preds = %526
  %544 = getelementptr inbounds i8, ptr %73, i64 322
  %545 = getelementptr inbounds i8, ptr %73, i64 320
  %.in = load i8, ptr %545, align 2, !tbaa !96, !range !39, !noundef !40
  %.pre1090 = load i32, ptr %521, align 8, !tbaa !151
  br label %560

546:                                              ; preds = %526
  %547 = load i32, ptr %521, align 8, !tbaa !151
  %548 = icmp eq i32 %547, 10
  %549 = getelementptr inbounds i8, ptr %73, i64 322
  %550 = getelementptr inbounds i8, ptr %73, i64 320
  %.in1056 = load i8, ptr %549, align 2, !tbaa !96, !range !39, !noundef !40
  %551 = getelementptr inbounds i8, ptr %73, i64 323
  %552 = load i8, ptr %551, align 1, !tbaa !144, !range !39, !noundef !40
  %553 = trunc nuw i8 %552 to i1
  br i1 %553, label %554, label %560

554:                                              ; preds = %546
  %555 = load i8, ptr %550, align 8, !tbaa !112, !range !39, !noundef !40
  %556 = trunc nuw i8 %555 to i1
  br i1 %556, label %560, label %557

557:                                              ; preds = %554
  %558 = trunc nuw i8 %.in1056 to i1
  %559 = xor i1 %558, true
  br label %560

560:                                              ; preds = %543, %557, %554, %546
  %561 = phi i32 [ %547, %554 ], [ %547, %546 ], [ %.pre1090, %543 ], [ %547, %557 ]
  %.v1072 = phi i32 [ 8, %554 ], [ 8, %546 ], [ 1, %543 ], [ 8, %557 ]
  %.in1071 = phi i8 [ %.in1056, %554 ], [ %.in1056, %546 ], [ %.in, %543 ], [ %.in1056, %557 ]
  %562 = phi ptr [ %550, %554 ], [ %550, %546 ], [ %545, %543 ], [ %550, %557 ]
  %563 = phi ptr [ %549, %554 ], [ %549, %546 ], [ %544, %543 ], [ %549, %557 ]
  %564 = phi i1 [ %548, %554 ], [ %548, %546 ], [ false, %543 ], [ %548, %557 ]
  %565 = phi i1 [ false, %554 ], [ false, %546 ], [ false, %543 ], [ %559, %557 ]
  %566 = trunc nuw i8 %.in1071 to i1
  %567 = icmp eq i32 %561, 1
  %568 = icmp eq i32 %561, 2
  %569 = icmp eq i32 %561, %.v1072
  br i1 %569, label %570, label %572

570:                                              ; preds = %560
  %571 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %571, label %577, label %572

572:                                              ; preds = %570, %560
  br i1 %568, label %573, label %580

573:                                              ; preds = %572
  %574 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %575 = and i1 %.not892, %574
  %576 = xor i1 %575, true
  %brmerge957 = or i1 %75, %576
  %.not963 = xor i1 %64, true
  %brmerge964 = or i1 %brmerge957, %.not963
  %not.brmerge957 = xor i1 %brmerge957, true
  br i1 %brmerge964, label %580, label %578

577:                                              ; preds = %570
  %.not892.not958 = xor i1 %.not892, true
  %brmerge959 = or i1 %75, %.not892.not958
  %.not960 = xor i1 %64, true
  %brmerge961 = or i1 %brmerge959, %.not960
  %not.brmerge959 = xor i1 %brmerge959, true
  br i1 %brmerge961, label %.thread1057, label %578

578:                                              ; preds = %573, %577
  %579 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br label %580

580:                                              ; preds = %573, %578, %572
  %581 = phi i1 [ %not.brmerge957, %573 ], [ false, %572 ], [ %579, %578 ]
  br i1 %569, label %.thread1057, label %584

.thread1057:                                      ; preds = %577, %580
  %582 = phi i1 [ %581, %580 ], [ %not.brmerge959, %577 ]
  %583 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %583, label %588, label %584

584:                                              ; preds = %.thread1057, %580
  %585 = phi i1 [ %582, %.thread1057 ], [ %581, %580 ]
  br i1 %567, label %586, label %593

586:                                              ; preds = %584
  %587 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %brmerge968.demorgan = and i1 %.not892, %587
  %brmerge970.not = and i1 %64, %brmerge968.demorgan
  br i1 %brmerge970.not, label %590, label %593

588:                                              ; preds = %.thread1057
  %589 = and i32 %5, 1081344
  %brmerge974.not = icmp eq i32 %589, 1048576
  br i1 %brmerge974.not, label %590, label %.thread1058

590:                                              ; preds = %588, %586
  %591 = phi i1 [ %582, %588 ], [ %585, %586 ]
  %592 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br label %593

593:                                              ; preds = %586, %590, %584
  %594 = phi i1 [ %585, %586 ], [ %585, %584 ], [ %591, %590 ]
  %595 = phi i1 [ %brmerge968.demorgan, %586 ], [ false, %584 ], [ %592, %590 ]
  br i1 %569, label %.thread1058, label %599

.thread1058:                                      ; preds = %588, %593
  %596 = phi i1 [ %595, %593 ], [ %.not892, %588 ]
  %597 = phi i1 [ %594, %593 ], [ %582, %588 ]
  %598 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %598, label %604, label %599

599:                                              ; preds = %.thread1058, %593
  %600 = phi i1 [ %596, %.thread1058 ], [ %595, %593 ]
  %601 = phi i1 [ %597, %.thread1058 ], [ %594, %593 ]
  br i1 %568, label %602, label %608

602:                                              ; preds = %599
  %603 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %603, label %604, label %608

604:                                              ; preds = %602, %.thread1058
  %605 = phi i1 [ %600, %602 ], [ %596, %.thread1058 ]
  %606 = phi i1 [ %601, %602 ], [ %597, %.thread1058 ]
  %607 = xor i1 %75, true
  br label %608

608:                                              ; preds = %604, %602, %599
  %609 = phi i1 [ %600, %602 ], [ %600, %599 ], [ %605, %604 ]
  %610 = phi i1 [ %601, %602 ], [ %601, %599 ], [ %606, %604 ]
  %611 = phi i1 [ false, %602 ], [ false, %599 ], [ %607, %604 ]
  br i1 %569, label %612, label %616

612:                                              ; preds = %608
  %613 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  %not.1073 = xor i1 %75, true
  %614 = and i1 %613, %not.1073
  %spec.select1030 = and i1 %78, %614
  %615 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %615, label %620, label %616

616:                                              ; preds = %608, %612
  %617 = phi i1 [ %spec.select1030, %612 ], [ false, %608 ]
  br i1 %564, label %618, label %622

618:                                              ; preds = %616
  %619 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %619, label %._crit_edge1104, label %622

._crit_edge1104:                                  ; preds = %618
  %.pre1105 = xor i1 %75, true
  br label %620

620:                                              ; preds = %._crit_edge1104, %612
  %not.1074.pre-phi = phi i1 [ %.pre1105, %._crit_edge1104 ], [ %not.1073, %612 ]
  %621 = phi i1 [ %617, %._crit_edge1104 ], [ %spec.select1030, %612 ]
  %spec.select977 = and i1 %78, %not.1074.pre-phi
  br label %622

622:                                              ; preds = %620, %618, %616
  %623 = phi i1 [ %617, %618 ], [ %617, %616 ], [ %621, %620 ]
  %624 = phi i1 [ false, %618 ], [ false, %616 ], [ %spec.select977, %620 ]
  %625 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %625, label %626, label %629

626:                                              ; preds = %622
  %627 = select i1 %566, i32 2097164, i32 2097152
  %spec.select978 = select i1 %565, i32 2097156, i32 %627
  %628 = or disjoint i32 %spec.select978, %539
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %628)
  br label %815

629:                                              ; preds = %622
  %630 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %630, label %631, label %634

631:                                              ; preds = %629
  %632 = select i1 %566, i32 2097165, i32 2097153
  %spec.select979 = select i1 %565, i32 2097157, i32 %632
  %633 = or disjoint i32 %spec.select979, %539
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %633)
  br label %815

634:                                              ; preds = %629
  %635 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  %brmerge982.not = and i1 %64, %635
  br i1 %brmerge982.not, label %636, label %648

636:                                              ; preds = %634
  %637 = load i8, ptr %562, align 8, !tbaa !112, !range !39, !noundef !40
  %638 = trunc nuw i8 %637 to i1
  br i1 %638, label %639, label %645

639:                                              ; preds = %636
  %640 = getelementptr inbounds i8, ptr %.1817, i64 96
  %641 = load float, ptr %640, align 4, !tbaa !102
  %642 = load float, ptr %529, align 8, !tbaa !42
  %643 = fsub float %641, %642
  %644 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %643, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.1817, float noundef %644)
  br label %815

645:                                              ; preds = %636
  %646 = select i1 %565, i32 2097158, i32 2097154
  %647 = or disjoint i32 %646, %539
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %647)
  br label %815

648:                                              ; preds = %634
  %649 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  %brmerge985.not = and i1 %64, %649
  br i1 %brmerge985.not, label %650, label %663

650:                                              ; preds = %648
  %651 = load i8, ptr %562, align 8, !tbaa !112, !range !39, !noundef !40
  %652 = trunc nuw i8 %651 to i1
  br i1 %652, label %653, label %660

653:                                              ; preds = %650
  %654 = getelementptr inbounds i8, ptr %.1817, i64 96
  %655 = load float, ptr %654, align 4, !tbaa !102
  %656 = load float, ptr %529, align 8, !tbaa !42
  %657 = fadd float %655, %656
  %658 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %659 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %657, float noundef %658)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.1817, float noundef %659)
  br label %815

660:                                              ; preds = %650
  %661 = select i1 %565, i32 2097159, i32 2097155
  %662 = or disjoint i32 %661, %539
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %662)
  br label %815

663:                                              ; preds = %648
  %664 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 5, i1 noundef zeroext true)
  %brmerge988.not = and i1 %64, %664
  br i1 %brmerge988.not, label %665, label %671

665:                                              ; preds = %663
  %666 = or disjoint i32 %539, 2097166
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %666)
  %667 = sitofp i32 %533 to float
  %668 = load float, ptr %529, align 8, !tbaa !42
  %669 = fneg float %667
  %670 = call float @llvm.fmuladd.f32(float %669, float %668, float %207)
  br label %815

671:                                              ; preds = %663
  %672 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 6, i1 noundef zeroext true)
  %brmerge991.demorgan = and i1 %64, %672
  br i1 %brmerge991.demorgan, label %673, label %678

673:                                              ; preds = %671
  %674 = or disjoint i32 %539, 2097167
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %674)
  %675 = sitofp i32 %533 to float
  %676 = load float, ptr %529, align 8, !tbaa !42
  %677 = call float @llvm.fmuladd.f32(float %675, float %676, float %207)
  br label %815

678:                                              ; preds = %671
  %679 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %679, label %680, label %684

680:                                              ; preds = %678
  %681 = load i8, ptr %562, align 8, !tbaa !112, !range !39, !noundef !40
  %682 = trunc nuw i8 %681 to i1
  %.v909 = select i1 %682, i32 2097158, i32 2097156
  %683 = or disjoint i32 %.v909, %539
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %683)
  br label %815

684:                                              ; preds = %678
  %685 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %685, label %686, label %690

686:                                              ; preds = %684
  %687 = load i8, ptr %562, align 8, !tbaa !112, !range !39, !noundef !40
  %688 = trunc nuw i8 %687 to i1
  %.v = select i1 %688, i32 2097159, i32 2097157
  %689 = or disjoint i32 %.v, %539
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %689)
  br label %815

690:                                              ; preds = %684
  %691 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %.not992 = xor i1 %691, true
  %brmerge993 = or i1 %75, %.not992
  br i1 %brmerge993, label %694, label %692

692:                                              ; preds = %690
  %693 = or disjoint i32 %539, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %693)
  br label %815

694:                                              ; preds = %690
  %695 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  %.not994 = xor i1 %695, true
  %brmerge995 = or i1 %75, %.not994
  br i1 %brmerge995, label %712, label %696

696:                                              ; preds = %694
  %697 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br i1 %697, label %710, label %698

698:                                              ; preds = %696
  br i1 %566, label %.sink.split, label %699

699:                                              ; preds = %698
  br i1 %542, label %700, label %710

700:                                              ; preds = %699
  %701 = getelementptr inbounds i8, ptr %73, i64 323
  %702 = load i8, ptr %701, align 1, !tbaa !144, !range !39, !noundef !40
  %703 = trunc nuw i8 %702 to i1
  br i1 %703, label %704, label %710

704:                                              ; preds = %700
  %705 = load i8, ptr %563, align 2, !tbaa !143, !range !39, !noundef !40
  %706 = trunc nuw i8 %705 to i1
  br i1 %706, label %710, label %707

707:                                              ; preds = %704
  %708 = load i8, ptr %562, align 8, !tbaa !112, !range !39, !noundef !40
  %709 = trunc nuw i8 %708 to i1
  br i1 %709, label %710, label %.sink.split

.sink.split:                                      ; preds = %707, %698
  %.sink = phi i32 [ 6291468, %698 ], [ 6291460, %707 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %.sink)
  br label %710

710:                                              ; preds = %.sink.split, %707, %704, %700, %699, %696
  %711 = or disjoint i32 %539, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %711)
  br label %815

712:                                              ; preds = %694
  %713 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %713, label %716, label %714

714:                                              ; preds = %712
  %715 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %715, label %716, label %728

716:                                              ; preds = %714, %712
  br i1 %64, label %717, label %815

717:                                              ; preds = %716
  %718 = and i32 %5, 2048
  %.not908 = icmp eq i32 %718, 0
  %719 = load i8, ptr %562, align 8, !tbaa !112, !range !39, !noundef !40
  %720 = trunc nuw i8 %719 to i1
  br i1 %.not908, label %.critedge997, label %721

721:                                              ; preds = %717
  br i1 %720, label %722, label %815

.critedge997:                                     ; preds = %717
  %brmerge998 = or i1 %75, %720
  %.mux1000 = select i1 %720, i8 1, i8 %.08191049
  br i1 %brmerge998, label %815, label %723

722:                                              ; preds = %721
  br i1 %75, label %815, label %723

723:                                              ; preds = %.critedge997, %722
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  store i32 10, ptr %21, align 4, !tbaa !113
  %724 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %724, label %725, label %727

725:                                              ; preds = %723
  %726 = load i32, ptr %21, align 4, !tbaa !113
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %726)
  br label %727

727:                                              ; preds = %725, %723
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  br label %815

728:                                              ; preds = %714
  %729 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %729, label %815, label %730

730:                                              ; preds = %728
  %brmerge1001 = or i1 %623, %624
  br i1 %brmerge1001, label %731, label %732

731:                                              ; preds = %730
  %.mux1002 = select i1 %623, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120, i32 noundef %.mux1002)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br label %815

732:                                              ; preds = %730
  br i1 %569, label %733, label %737

733:                                              ; preds = %732
  %734 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %734, label %735, label %737

735:                                              ; preds = %733
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  %736 = getelementptr inbounds i8, ptr %.08181120, i64 3708
  store i8 1, ptr %736, align 4, !tbaa !142
  br label %815

737:                                              ; preds = %733, %732
  %brmerge1003 = or i1 %609, %610
  br i1 %brmerge1003, label %738, label %784

738:                                              ; preds = %737
  %739 = getelementptr inbounds i8, ptr %73, i64 264
  %740 = load ptr, ptr %739, align 8, !tbaa !153
  %.not907 = icmp eq ptr %740, null
  br i1 %.not907, label %777, label %741

741:                                              ; preds = %738
  %742 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br i1 %742, label %743, label %749

743:                                              ; preds = %741
  %744 = getelementptr inbounds i8, ptr %.08181120, i64 80
  %745 = load i32, ptr %744, align 4, !tbaa !154
  %746 = getelementptr inbounds i8, ptr %.08181120, i64 84
  %747 = load i32, ptr %746, align 4, !tbaa !155
  %748 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %745, i32 noundef %747)
  br label %749

749:                                              ; preds = %741, %743
  %750 = phi i32 [ %748, %743 ], [ 0, %741 ]
  %751 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br i1 %751, label %752, label %758

752:                                              ; preds = %749
  %753 = getelementptr inbounds i8, ptr %.08181120, i64 80
  %754 = load i32, ptr %753, align 4, !tbaa !154
  %755 = getelementptr inbounds i8, ptr %.08181120, i64 84
  %756 = load i32, ptr %755, align 4, !tbaa !155
  %757 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %754, i32 noundef %756)
  br label %761

758:                                              ; preds = %749
  %759 = getelementptr inbounds i8, ptr %.08181120, i64 4
  %760 = load i32, ptr %759, align 4, !tbaa !107
  br label %761

761:                                              ; preds = %758, %752
  %762 = phi i32 [ %757, %752 ], [ %760, %758 ]
  %763 = getelementptr inbounds i8, ptr %.08181120, i64 24
  %764 = load ptr, ptr %763, align 8, !tbaa !106
  %765 = sext i32 %750 to i64
  %766 = getelementptr inbounds i16, ptr %764, i64 %765
  %767 = sext i32 %762 to i64
  %768 = getelementptr inbounds i16, ptr %764, i64 %767
  %769 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %766, ptr noundef %768)
  %770 = add nsw i32 %769, 1
  %771 = sext i32 %770 to i64
  %772 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %771)
  %773 = load ptr, ptr %763, align 8, !tbaa !106
  %774 = getelementptr inbounds i16, ptr %773, i64 %765
  %775 = getelementptr inbounds i16, ptr %773, i64 %767
  %776 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %772, i32 noundef %770, ptr noundef %774, ptr noundef %775)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %772)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %772)
  br label %777

777:                                              ; preds = %761, %738
  br i1 %610, label %778, label %815

778:                                              ; preds = %777
  %779 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br i1 %779, label %781, label %780

780:                                              ; preds = %778
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br label %781

781:                                              ; preds = %780, %778
  %782 = getelementptr inbounds i8, ptr %.08181120, i64 3708
  store i8 1, ptr %782, align 4, !tbaa !142
  %783 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.08181120, ptr noundef nonnull %534)
  br label %815

784:                                              ; preds = %737
  br i1 %611, label %785, label %815

785:                                              ; preds = %784
  %786 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not905 = icmp eq ptr %786, null
  br i1 %.not905, label %815, label %787

787:                                              ; preds = %785
  %788 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %786) #16
  %789 = shl i64 %788, 32
  %sext = add i64 %789, 4294967296
  %790 = ashr exact i64 %sext, 31
  %791 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %790)
  %792 = load i8, ptr %786, align 1, !tbaa !117
  %.not9061081 = icmp eq i8 %792, 0
  br i1 %.not9061081, label %.loopexit1075.thread, label %.lr.ph1084

.loopexit1075.thread:                             ; preds = %787
  store i16 0, ptr %791, align 2, !tbaa !146
  br label %814

.lr.ph1084:                                       ; preds = %787, %806
  %.08491083 = phi i32 [ %.1850, %806 ], [ 0, %787 ]
  %.08521082 = phi ptr [ %795, %806 ], [ %786, %787 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  %793 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %22, ptr noundef nonnull %.08521082, ptr noundef null)
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds i8, ptr %.08521082, i64 %794
  %796 = load i32, ptr %22, align 4, !tbaa !113
  %797 = icmp eq i32 %796, 0
  br i1 %797, label %.thread1060, label %798

.thread1060:                                      ; preds = %.lr.ph1084
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  br label %.loopexit1075

798:                                              ; preds = %.lr.ph1084
  %799 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %799, label %800, label %806, !llvm.loop !156

800:                                              ; preds = %798
  %801 = load i32, ptr %22, align 4, !tbaa !113
  %802 = trunc i32 %801 to i16
  %803 = add nsw i32 %.08491083, 1
  %804 = sext i32 %.08491083 to i64
  %805 = getelementptr inbounds i16, ptr %791, i64 %804
  store i16 %802, ptr %805, align 2, !tbaa !146
  br label %806

806:                                              ; preds = %798, %800
  %.1850 = phi i32 [ %803, %800 ], [ %.08491083, %798 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  %807 = load i8, ptr %795, align 1, !tbaa !117
  %.not906 = icmp eq i8 %807, 0
  br i1 %.not906, label %.loopexit1075, label %.lr.ph1084

.loopexit1075:                                    ; preds = %806, %.thread1060
  %.08491079 = phi i32 [ %.08491083, %.thread1060 ], [ %.1850, %806 ]
  %808 = sext i32 %.08491079 to i64
  %809 = getelementptr inbounds i16, ptr %791, i64 %808
  store i16 0, ptr %809, align 2, !tbaa !146
  %810 = icmp sgt i32 %.08491079, 0
  br i1 %810, label %811, label %814

811:                                              ; preds = %.loopexit1075
  %812 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.08181120, ptr noundef nonnull %534, ptr noundef nonnull %791, i32 noundef %.08491079)
  %813 = getelementptr inbounds i8, ptr %.08181120, i64 3708
  store i8 1, ptr %813, align 4, !tbaa !142
  br label %814

814:                                              ; preds = %.loopexit1075.thread, %811, %.loopexit1075
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %791)
  br label %815

815:                                              ; preds = %785, %814, %728, %727, %722, %721, %716, %.critedge997, %631, %660, %653, %673, %686, %710, %735, %784, %777, %781, %731, %692, %680, %665, %639, %645, %626
  %.0847 = phi i1 [ false, %626 ], [ false, %631 ], [ false, %639 ], [ false, %645 ], [ false, %653 ], [ false, %660 ], [ false, %665 ], [ false, %673 ], [ false, %680 ], [ false, %686 ], [ false, %731 ], [ false, %735 ], [ false, %781 ], [ false, %777 ], [ false, %784 ], [ false, %710 ], [ false, %692 ], [ false, %.critedge997 ], [ false, %716 ], [ false, %721 ], [ false, %722 ], [ false, %727 ], [ true, %728 ], [ false, %814 ], [ false, %785 ]
  %.1834 = phi i8 [ 0, %626 ], [ 0, %631 ], [ 0, %639 ], [ 0, %645 ], [ 0, %653 ], [ 0, %660 ], [ 0, %665 ], [ 0, %673 ], [ 0, %680 ], [ 0, %686 ], [ 0, %731 ], [ 0, %735 ], [ 0, %781 ], [ 0, %777 ], [ 0, %784 ], [ 0, %710 ], [ 0, %692 ], [ %719, %.critedge997 ], [ 1, %716 ], [ 1, %721 ], [ 0, %722 ], [ 0, %727 ], [ 0, %728 ], [ 0, %814 ], [ 0, %785 ]
  %.0826 = phi float [ %207, %626 ], [ %207, %631 ], [ %207, %639 ], [ %207, %645 ], [ %207, %653 ], [ %207, %660 ], [ %670, %665 ], [ %677, %673 ], [ %207, %680 ], [ %207, %686 ], [ %207, %731 ], [ %207, %735 ], [ %207, %781 ], [ %207, %777 ], [ %207, %784 ], [ %207, %710 ], [ %207, %692 ], [ %207, %.critedge997 ], [ %207, %716 ], [ %207, %721 ], [ %207, %722 ], [ %207, %727 ], [ %207, %728 ], [ %207, %814 ], [ %207, %785 ]
  %.2821 = phi i8 [ %.08191049, %626 ], [ %.08191049, %631 ], [ %.08191049, %639 ], [ %.08191049, %645 ], [ %.08191049, %653 ], [ %.08191049, %660 ], [ %.08191049, %665 ], [ %.08191049, %673 ], [ %.08191049, %680 ], [ %.08191049, %686 ], [ %.08191049, %731 ], [ %.08191049, %735 ], [ %.08191049, %781 ], [ %.08191049, %777 ], [ %.08191049, %784 ], [ %.08191049, %710 ], [ %.08191049, %692 ], [ %.mux1000, %.critedge997 ], [ 1, %716 ], [ 1, %721 ], [ %.08191049, %722 ], [ %.08191049, %727 ], [ 1, %728 ], [ %.08191049, %814 ], [ %.08191049, %785 ]
  %816 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  %817 = select i1 %816, i1 %292, i1 %.0829.in
  %.pre1091 = load i32, ptr %166, align 8, !tbaa !97
  br label %818

818:                                              ; preds = %815, %509
  %819 = phi i32 [ %.pre1091, %815 ], [ %510, %509 ]
  %.1848 = phi i1 [ %.0847, %815 ], [ false, %509 ]
  %.2835 = phi i8 [ %.1834, %815 ], [ 0, %509 ]
  %.1830.in = phi i1 [ %817, %815 ], [ %.0829.in, %509 ]
  %.1827 = phi float [ %.0826, %815 ], [ %207, %509 ]
  %.3822 = phi i8 [ %.2821, %815 ], [ %.08191049, %509 ]
  %820 = icmp eq i32 %819, %85
  br i1 %820, label %.thread1139, label %1035

.thread1139:                                      ; preds = %516, %512, %818
  %.38221156 = phi i8 [ %.3822, %818 ], [ %.08191049, %512 ], [ %.08191049, %516 ]
  %.18271154 = phi float [ %.1827, %818 ], [ %207, %512 ], [ %207, %516 ]
  %.1830.in1152 = phi i1 [ %.1830.in, %818 ], [ %.0829.in, %512 ], [ %.0829.in, %516 ]
  %.28351148 = phi i8 [ %.2835, %818 ], [ 0, %512 ], [ 0, %516 ]
  %.18481147 = phi i1 [ %.1848, %818 ], [ false, %512 ], [ false, %516 ]
  br i1 %293, label %822, label %821

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

822:                                              ; preds = %.thread1139
  %.1848.not = xor i1 %.18481147, true
  %brmerge1004 = or i1 %75, %.1848.not
  br i1 %brmerge1004, label %853, label %823

823:                                              ; preds = %822
  %824 = getelementptr inbounds i8, ptr %.08181120, i64 56
  %825 = load ptr, ptr %824, align 8, !tbaa !104
  %826 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %825) #16
  %.not910 = icmp eq i32 %826, 0
  br i1 %.not910, label %853, label %827

827:                                              ; preds = %823
  %828 = getelementptr inbounds i8, ptr %.08181120, i64 48
  %829 = load i32, ptr %828, align 8, !tbaa !157
  %830 = add nsw i32 %829, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23)
  %831 = icmp sgt i32 %829, 1
  br i1 %831, label %832, label %845

832:                                              ; preds = %827
  %833 = zext nneg i32 %830 to i64
  %834 = getelementptr inbounds i8, ptr %825, i64 %833
  %835 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %825, ptr noundef %834)
          to label %836 unwind label %843

836:                                              ; preds = %832
  %837 = add nsw i32 %835, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %23, i32 noundef %837)
          to label %838 unwind label %843

838:                                              ; preds = %836
  %839 = getelementptr inbounds i8, ptr %23, i64 8
  %840 = load ptr, ptr %839, align 8, !tbaa !158
  %841 = load i32, ptr %23, align 8, !tbaa !159
  %842 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %840, i32 noundef %841, ptr noundef %825, ptr noundef %834, ptr noundef null)
          to label %845 unwind label %843

843:                                              ; preds = %845, %838, %836, %832
  %844 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  resume { ptr, i32 } %844

845:                                              ; preds = %838, %827
  %846 = getelementptr inbounds i8, ptr %.08181120, i64 76
  %847 = getelementptr inbounds i8, ptr %23, i64 8
  %848 = load ptr, ptr %847, align 8, !tbaa !158
  %849 = load i32, ptr %23, align 8
  %850 = add nsw i32 %849, -1
  %851 = select i1 %831, i32 %850, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.08181120, ptr noundef nonnull %846, ptr noundef %848, i32 noundef %851)
          to label %852 unwind label %843

852:                                              ; preds = %845
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #15
  br label %853

853:                                              ; preds = %822, %823, %852
  %.0855 = phi i32 [ %830, %852 ], [ 0, %823 ], [ 0, %822 ]
  %.0853 = phi ptr [ %825, %852 ], [ null, %823 ], [ null, %822 ]
  br i1 %.18481147, label %854, label %.critedge1006

854:                                              ; preds = %853
  %855 = trunc nuw i8 %.28351148 to i1
  %856 = and i32 %5, 32
  %857 = icmp ne i32 %856, 0
  %858 = and i1 %857, %855
  br i1 %858, label %.critedge1006, label %1007

.critedge1006:                                    ; preds = %853, %854
  br i1 %75, label %872, label %859

859:                                              ; preds = %.critedge1006
  %860 = getelementptr inbounds i8, ptr %.08181120, i64 64
  store i8 1, ptr %860, align 8, !tbaa !105
  %861 = getelementptr inbounds i8, ptr %.08181120, i64 32
  %862 = getelementptr inbounds i8, ptr %.08181120, i64 16
  %863 = load i32, ptr %862, align 8, !tbaa !115
  %864 = shl nsw i32 %863, 2
  %865 = or disjoint i32 %864, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %861, i32 noundef %865)
  %866 = getelementptr inbounds i8, ptr %.08181120, i64 40
  %867 = load ptr, ptr %866, align 8, !tbaa !116
  %868 = load i32, ptr %861, align 8, !tbaa !160
  %869 = getelementptr inbounds i8, ptr %.08181120, i64 24
  %870 = load ptr, ptr %869, align 8, !tbaa !106
  %871 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %867, i32 noundef %868, ptr noundef %870, ptr noundef null)
  br label %872

872:                                              ; preds = %859, %.critedge1006
  %873 = and i32 %5, 524736
  %.not911 = icmp eq i32 %873, 0
  br i1 %.not911, label %999, label %874

874:                                              ; preds = %872
  br i1 %80, label %876, label %875

875:                                              ; preds = %874
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.1, i32 noundef 4260, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

876:                                              ; preds = %874
  br i1 %.not889, label %879, label %877

877:                                              ; preds = %876
  %878 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %878, label %.thread1064, label %879

879:                                              ; preds = %877, %876
  br i1 %.not887.not, label %.critedge1008, label %880

880:                                              ; preds = %879
  %881 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %881, label %.thread1064, label %882

882:                                              ; preds = %880
  %883 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %883, label %.thread1064, label %.critedge1008

.critedge1008:                                    ; preds = %879, %882
  %884 = and i32 %5, 524288
  %.not912 = icmp eq i32 %884, 0
  br i1 %.not912, label %889, label %885

885:                                              ; preds = %.critedge1008
  %886 = getelementptr inbounds i8, ptr %.08181120, i64 3710
  %887 = load i8, ptr %886, align 2, !tbaa !126, !range !39, !noundef !40
  %888 = trunc nuw i8 %887 to i1
  br i1 %888, label %.thread1064, label %889

889:                                              ; preds = %.critedge1008, %885
  %890 = and i32 %5, 256
  %.not913 = icmp eq i32 %890, 0
  br i1 %.not913, label %999, label %.thread1064

.thread1064:                                      ; preds = %885, %882, %880, %877, %889
  %.08581069 = phi i32 [ 256, %889 ], [ 524288, %885 ], [ 128, %882 ], [ 128, %880 ], [ 64, %877 ]
  %.08591068 = phi i32 [ 22, %889 ], [ 22, %885 ], [ 4, %882 ], [ 3, %880 ], [ 0, %877 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %24)
  %891 = getelementptr inbounds i8, ptr %24, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %891, i8 0, i64 40, i1 false)
  store i32 %.08581069, ptr %24, align 8, !tbaa !161
  %892 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 %5, ptr %892, align 4, !tbaa !163
  %893 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %7, ptr %893, align 8, !tbaa !164
  %894 = getelementptr inbounds i8, ptr %24, i64 20
  store i32 %.08591068, ptr %894, align 4, !tbaa !165
  %895 = getelementptr inbounds i8, ptr %.08181120, i64 40
  %896 = load ptr, ptr %895, align 8, !tbaa !116
  %897 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %896, ptr %897, align 8, !tbaa !166
  %898 = getelementptr inbounds i8, ptr %.08181120, i64 8
  %899 = load i32, ptr %898, align 8, !tbaa !108
  %900 = getelementptr inbounds i8, ptr %24, i64 32
  store i32 %899, ptr %900, align 8, !tbaa !167
  %901 = getelementptr inbounds i8, ptr %.08181120, i64 68
  %902 = load i32, ptr %901, align 4, !tbaa !127
  %903 = getelementptr inbounds i8, ptr %24, i64 36
  store i32 %902, ptr %903, align 4, !tbaa !168
  %904 = getelementptr inbounds i8, ptr %24, i64 40
  %905 = getelementptr inbounds i8, ptr %.08181120, i64 16
  %906 = getelementptr inbounds i8, ptr %.08181120, i64 24
  %907 = load ptr, ptr %906, align 8, !tbaa !106
  %908 = getelementptr inbounds i8, ptr %.08181120, i64 76
  %909 = load i32, ptr %908, align 4, !tbaa !169
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds i16, ptr %907, i64 %910
  %912 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %907, ptr noundef %911)
  %913 = getelementptr inbounds i8, ptr %24, i64 44
  store i32 %912, ptr %913, align 4, !tbaa !170
  %914 = getelementptr inbounds i8, ptr %.08181120, i64 80
  %915 = load i32, ptr %914, align 4, !tbaa !154
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds i16, ptr %907, i64 %916
  %918 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %907, ptr noundef %917)
  %919 = getelementptr inbounds i8, ptr %24, i64 48
  store i32 %918, ptr %919, align 8, !tbaa !171
  %920 = getelementptr inbounds i8, ptr %.08181120, i64 84
  %921 = load i32, ptr %920, align 4, !tbaa !155
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds i16, ptr %907, i64 %922
  %924 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %907, ptr noundef %923)
  %925 = getelementptr inbounds i8, ptr %24, i64 52
  store i32 %924, ptr %925, align 4, !tbaa !172
  %926 = call noundef i32 %6(ptr noundef nonnull %24)
  %927 = load ptr, ptr %897, align 8, !tbaa !166
  %928 = load ptr, ptr %895, align 8, !tbaa !116
  %929 = icmp eq ptr %927, %928
  br i1 %929, label %931, label %930

930:                                              ; preds = %.thread1064
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.1, i32 noundef 4313, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

931:                                              ; preds = %.thread1064
  %932 = load i32, ptr %903, align 4, !tbaa !168
  %933 = load i32, ptr %901, align 4, !tbaa !127
  %934 = icmp eq i32 %932, %933
  br i1 %934, label %936, label %935

935:                                              ; preds = %931
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.1, i32 noundef 4314, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

936:                                              ; preds = %931
  %937 = load i32, ptr %892, align 4, !tbaa !163
  %938 = icmp eq i32 %937, %5
  br i1 %938, label %940, label %939

939:                                              ; preds = %936
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.1, i32 noundef 4315, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

940:                                              ; preds = %936
  %941 = load i8, ptr %904, align 8, !tbaa !173, !range !39, !noundef !40
  %942 = trunc nuw i8 %941 to i1
  %943 = load i32, ptr %913, align 4, !tbaa !170
  %.not915 = icmp ne i32 %943, %912
  %brmerge1011 = select i1 %.not915, i1 true, i1 %942
  br i1 %brmerge1011, label %944, label %949

944:                                              ; preds = %940
  %945 = sext i32 %943 to i64
  %946 = getelementptr inbounds i8, ptr %927, i64 %945
  %947 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %927, ptr noundef %946)
  store i32 %947, ptr %908, align 4, !tbaa !169
  %948 = getelementptr inbounds i8, ptr %.08181120, i64 3708
  store i8 1, ptr %948, align 4, !tbaa !142
  br label %949

949:                                              ; preds = %940, %944
  %950 = load i32, ptr %919, align 8, !tbaa !171
  %.not916 = icmp ne i32 %950, %918
  %brmerge1012 = select i1 %.not916, i1 true, i1 %942
  br i1 %brmerge1012, label %951, label %963

951:                                              ; preds = %949
  %952 = load i32, ptr %913, align 4, !tbaa !170
  %953 = icmp eq i32 %950, %952
  br i1 %953, label %954, label %956

954:                                              ; preds = %951
  %955 = load i32, ptr %908, align 4, !tbaa !169
  br label %961

956:                                              ; preds = %951
  %957 = load ptr, ptr %897, align 8, !tbaa !166
  %958 = sext i32 %950 to i64
  %959 = getelementptr inbounds i8, ptr %957, i64 %958
  %960 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %957, ptr noundef %959)
  br label %961

961:                                              ; preds = %956, %954
  %962 = phi i32 [ %955, %954 ], [ %960, %956 ]
  store i32 %962, ptr %914, align 4, !tbaa !154
  br label %963

963:                                              ; preds = %949, %961
  %964 = load i32, ptr %925, align 4, !tbaa !172
  %.not917 = icmp ne i32 %964, %924
  %brmerge1013 = select i1 %.not917, i1 true, i1 %942
  br i1 %brmerge1013, label %965, label %977

965:                                              ; preds = %963
  %966 = load i32, ptr %919, align 8, !tbaa !171
  %967 = icmp eq i32 %964, %966
  br i1 %967, label %968, label %970

968:                                              ; preds = %965
  %969 = load i32, ptr %914, align 4, !tbaa !154
  br label %975

970:                                              ; preds = %965
  %971 = load ptr, ptr %897, align 8, !tbaa !166
  %972 = sext i32 %964 to i64
  %973 = getelementptr inbounds i8, ptr %971, i64 %972
  %974 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %971, ptr noundef %973)
  br label %975

975:                                              ; preds = %970, %968
  %976 = phi i32 [ %969, %968 ], [ %974, %970 ]
  store i32 %976, ptr %920, align 4, !tbaa !155
  br label %977

977:                                              ; preds = %963, %975
  br i1 %942, label %978, label %998

978:                                              ; preds = %977
  %979 = load i32, ptr %900, align 8, !tbaa !167
  %980 = load ptr, ptr %897, align 8, !tbaa !166
  %981 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %980) #16
  %982 = trunc i64 %981 to i32
  %983 = icmp eq i32 %979, %982
  br i1 %983, label %985, label %984

984:                                              ; preds = %978
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.1, i32 noundef 4322, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

985:                                              ; preds = %978
  %986 = icmp sle i32 %979, %.0844
  %brmerge1015 = or i1 %.not893, %986
  br i1 %brmerge1015, label %991, label %987

987:                                              ; preds = %985
  %988 = load i32, ptr %905, align 8, !tbaa !115
  %989 = sub i32 %979, %.0844
  %990 = add nsw i32 %989, %988
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %905, i32 noundef %990)
  %.pre1092 = load ptr, ptr %897, align 8, !tbaa !166
  br label %991

991:                                              ; preds = %985, %987
  %992 = phi ptr [ %980, %985 ], [ %.pre1092, %987 ]
  %993 = load ptr, ptr %906, align 8, !tbaa !106
  %994 = load i32, ptr %905, align 8, !tbaa !115
  %995 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %993, i32 noundef %994, ptr noundef %992, ptr noundef null, ptr noundef null)
  %996 = getelementptr inbounds i8, ptr %.08181120, i64 4
  store i32 %995, ptr %996, align 4, !tbaa !107
  %997 = load i32, ptr %900, align 8, !tbaa !167
  store i32 %997, ptr %898, align 8, !tbaa !108
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3736) %.08181120)
  br label %998

998:                                              ; preds = %991, %977
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #15
  br label %999

999:                                              ; preds = %889, %998, %872
  br i1 %75, label %1007, label %1000

1000:                                             ; preds = %999
  %1001 = getelementptr inbounds i8, ptr %.08181120, i64 40
  %1002 = load ptr, ptr %1001, align 8, !tbaa !116
  %1003 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1002, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not918 = icmp eq i32 %1003, 0
  br i1 %.not918, label %1007, label %1004

1004:                                             ; preds = %1000
  %1005 = getelementptr inbounds i8, ptr %.08181120, i64 8
  %1006 = load i32, ptr %1005, align 8, !tbaa !108
  br label %1007

1007:                                             ; preds = %999, %1000, %1004, %854
  %.1856 = phi i32 [ %.0855, %999 ], [ %1006, %1004 ], [ %.0855, %1000 ], [ %.0855, %854 ]
  %.1854 = phi ptr [ %.0853, %999 ], [ %1002, %1004 ], [ %.0853, %1000 ], [ %.0853, %854 ]
  %.not919 = icmp ne ptr %.1854, null
  br i1 %.not919, label %1008, label %1032

1008:                                             ; preds = %1007
  %1009 = icmp sgt i32 %.1856, -1
  br i1 %1009, label %1011, label %1010

1010:                                             ; preds = %1008
  call void @__assert_fail(ptr noundef nonnull @.str.68, ptr noundef nonnull @.str.1, i32 noundef 4346, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1011:                                             ; preds = %1008
  br i1 %.not893, label %1028, label %1012

1012:                                             ; preds = %1011
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %25) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %25)
  store i32 262144, ptr %25, align 8, !tbaa !161
  %1013 = getelementptr inbounds i8, ptr %25, i64 4
  store i32 %5, ptr %1013, align 4, !tbaa !163
  %1014 = getelementptr inbounds i8, ptr %25, i64 24
  store ptr %2, ptr %1014, align 8, !tbaa !166
  %1015 = getelementptr inbounds i8, ptr %25, i64 32
  store i32 %.1856, ptr %1015, align 8, !tbaa !167
  %1016 = add nuw nsw i32 %.1856, 1
  %1017 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1016)
  %1018 = getelementptr inbounds i8, ptr %25, i64 36
  store i32 %1017, ptr %1018, align 4, !tbaa !168
  %1019 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %7, ptr %1019, align 8, !tbaa !164
  %1020 = call noundef i32 %6(ptr noundef nonnull %25)
  %1021 = load ptr, ptr %1014, align 8, !tbaa !166
  %1022 = load i32, ptr %1018, align 4, !tbaa !168
  %1023 = load i32, ptr %1015, align 8, !tbaa !167
  %1024 = add nsw i32 %1022, -1
  %1025 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1023, i32 noundef %1024)
  %.not920 = icmp sgt i32 %1025, %1022
  br i1 %.not920, label %1026, label %1027

1026:                                             ; preds = %1012
  call void @__assert_fail(ptr noundef nonnull @.str.69, ptr noundef nonnull @.str.1, i32 noundef 4360, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1027:                                             ; preds = %1012
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #15
  br label %1028

1028:                                             ; preds = %1027, %1011
  %.2857 = phi i32 [ %1025, %1027 ], [ %.1856, %1011 ]
  %.0813 = phi i32 [ %1022, %1027 ], [ %3, %1011 ]
  %.0810 = phi ptr [ %1021, %1027 ], [ %2, %1011 ]
  %1029 = add nsw i32 %.2857, 1
  %1030 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1029, i32 noundef %.0813)
  %1031 = sext i32 %1030 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0810, ptr noundef nonnull %.1854, i64 noundef %1031)
  br label %1032

1032:                                             ; preds = %1028, %1007
  %.1811 = phi ptr [ %.0810, %1028 ], [ %2, %1007 ]
  %1033 = getelementptr inbounds i8, ptr %.08181120, i64 3712
  store i32 0, ptr %1033, align 8, !tbaa !128
  %1034 = getelementptr inbounds i8, ptr %.08181120, i64 3720
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1034, i8 0, i64 16, i1 false)
  br label %1035

1035:                                             ; preds = %1032, %818
  %.38221155 = phi i8 [ %.38221156, %1032 ], [ %.3822, %818 ]
  %.18271153 = phi float [ %.18271154, %1032 ], [ %.1827, %818 ]
  %.1830.in1151 = phi i1 [ %.1830.in1152, %1032 ], [ %.1830.in, %818 ]
  %.28351149 = phi i8 [ %.28351148, %1032 ], [ %.2835, %818 ]
  %.1832 = phi i1 [ %.not919, %1032 ], [ false, %818 ]
  %.2812 = phi ptr [ %.1811, %1032 ], [ %2, %818 ]
  %1036 = trunc nuw i8 %.38221155 to i1
  br i1 %1036, label %1037, label %1041

1037:                                             ; preds = %1035
  %1038 = load i32, ptr %166, align 8, !tbaa !97
  %1039 = icmp eq i32 %1038, %85
  br i1 %1039, label %1040, label %1041

1040:                                             ; preds = %1037
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1041

1041:                                             ; preds = %1040, %1037, %1035
  br i1 %64, label %1047, label %1042

1042:                                             ; preds = %1041
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %85, i32 noundef 1)
  %.sroa.089.0.copyload = load <2 x float>, ptr %11, align 8
  %1043 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.088.0.copyload = load <2 x float>, ptr %1043, align 8
  %1044 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1045 = getelementptr inbounds i8, ptr %73, i64 5536
  %1046 = load float, ptr %1045, align 4, !tbaa !86
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.089.0.copyload, <2 x float> %.sroa.088.0.copyload, i32 noundef %1044, i1 noundef zeroext true, float noundef %1046)
  br label %1047

1047:                                             ; preds = %1042, %1041
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #15
  %1048 = load float, ptr %11, align 8, !tbaa !134
  %1049 = getelementptr inbounds i8, ptr %11, i64 4
  %1050 = load float, ptr %1049, align 4, !tbaa !174
  %1051 = fadd float %.sroa.0460.1, %1048
  %1052 = fadd float %.sroa.12.0.copyload, %1050
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %26, float noundef %1048, float noundef %1050, float noundef %1051, float noundef %1052)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #15
  br i1 %64, label %1053, label %1056

1053:                                             ; preds = %1047
  %1054 = getelementptr inbounds i8, ptr %.1817, i64 216
  %1055 = load i64, ptr %1054, align 8
  br label %1059

1056:                                             ; preds = %1047
  %1057 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %95)
  %1058 = bitcast <2 x float> %1057 to i64
  br label %1059

1059:                                             ; preds = %1056, %1053
  %storemerge921 = phi i64 [ %1055, %1053 ], [ %1058, %1056 ]
  store i64 %storemerge921, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %322, label %1060, label %1063

1060:                                             ; preds = %1059
  %1061 = getelementptr inbounds i8, ptr %.08181120, i64 40
  %1062 = load ptr, ptr %1061, align 8, !tbaa !116
  br label %1063

1063:                                             ; preds = %1059, %1060
  %1064 = phi ptr [ %1062, %1060 ], [ %.2812, %1059 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  store ptr null, ptr %29, align 8, !tbaa !41
  br i1 %332, label %1065, label %1068

1065:                                             ; preds = %1063
  %1066 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1067 = getelementptr inbounds i8, ptr %1, i64 %1066
  store ptr %1067, ptr %29, align 8, !tbaa !41
  br label %1068

1068:                                             ; preds = %1065, %1063
  %1069 = phi ptr [ %1067, %1065 ], [ null, %1063 ]
  %.0845 = phi ptr [ %1, %1065 ], [ %1064, %1063 ]
  %brmerge1016 = select i1 %292, i1 true, i1 %.1830.in1151
  br i1 %brmerge1016, label %1070, label %1321

1070:                                             ; preds = %1068
  br i1 %293, label %1072, label %1071

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

1072:                                             ; preds = %1070
  br i1 %332, label %1078, label %1073

1073:                                             ; preds = %1072
  %1074 = getelementptr inbounds i8, ptr %.08181120, i64 8
  %1075 = load i32, ptr %1074, align 8, !tbaa !108
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds i8, ptr %.0845, i64 %1076
  store ptr %1077, ptr %29, align 8, !tbaa !41
  br label %1078

1078:                                             ; preds = %1073, %1072
  %.pre10991101 = phi ptr [ %1077, %1073 ], [ %1069, %1072 ]
  %1079 = getelementptr inbounds i8, ptr %.08181120, i64 24
  %1080 = load ptr, ptr %1079, align 8, !tbaa !106
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %30)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #15
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %31)
  %.sroa.060.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 %292, label %1081, label %1086

1081:                                             ; preds = %1078
  %1082 = getelementptr inbounds i8, ptr %.08181120, i64 76
  %1083 = load i32, ptr %1082, align 4, !tbaa !169
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds i16, ptr %1080, i64 %1084
  br label %1086

1086:                                             ; preds = %1081, %1078
  %.sroa.066.0 = phi ptr [ %1085, %1081 ], [ null, %1078 ]
  %.sroa.060.0 = phi i32 [ -1, %1081 ], [ %.sroa.060.0.copyload, %1078 ]
  %.0840 = phi i32 [ 1, %1081 ], [ 0, %1078 ]
  br i1 %.1830.in1151, label %1087, label %1096

1087:                                             ; preds = %1086
  %1088 = getelementptr inbounds i8, ptr %.08181120, i64 80
  %1089 = load i32, ptr %1088, align 4, !tbaa !154
  %1090 = getelementptr inbounds i8, ptr %.08181120, i64 84
  %1091 = load i32, ptr %1090, align 4, !tbaa !155
  %1092 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1089, i32 noundef %1091)
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds i16, ptr %1080, i64 %1093
  %1095 = add nuw nsw i32 %.0840, 1
  br label %1096

1096:                                             ; preds = %1087, %1086
  %.sroa.7.0 = phi ptr [ %1094, %1087 ], [ null, %1086 ]
  %.sroa.9.0 = phi i32 [ -1, %1087 ], [ %.sroa.9.0.copyload, %1086 ]
  %.1841 = phi i32 [ %1095, %1087 ], [ %.0840, %1086 ]
  %.lobit = lshr exact i32 %63, 20
  %1097 = add nuw nsw i32 %.1841, %.lobit
  br label %1098

1098:                                             ; preds = %1113, %1096
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1096 ], [ %.sroa.9.2, %1113 ]
  %.sroa.060.1 = phi i32 [ %.sroa.060.0, %1096 ], [ %.sroa.060.3, %1113 ]
  %.2842 = phi i32 [ %1097, %1096 ], [ %.4, %1113 ]
  %.0837 = phi i32 [ 0, %1096 ], [ %.1838, %1113 ]
  %.0836 = phi ptr [ %1080, %1096 ], [ %1114, %1113 ]
  %1099 = load i16, ptr %.0836, align 2, !tbaa !146
  switch i16 %1099, label %1113 [
    i16 0, label %1115
    i16 10, label %1100
  ]

1100:                                             ; preds = %1098
  %1101 = add nsw i32 %.0837, 1
  %1102 = icmp eq i32 %.sroa.060.1, -1
  br i1 %1102, label %1103, label %1107

1103:                                             ; preds = %1100
  %.not923 = icmp ult ptr %.0836, %.sroa.066.0
  br i1 %.not923, label %1107, label %1104

1104:                                             ; preds = %1103
  %1105 = add nsw i32 %.2842, -1
  %1106 = icmp slt i32 %.2842, 2
  br i1 %1106, label %1115, label %1107

1107:                                             ; preds = %1104, %1103, %1100
  %.sroa.060.2 = phi i32 [ %1101, %1104 ], [ -1, %1103 ], [ %.sroa.060.1, %1100 ]
  %.3843 = phi i32 [ %1105, %1104 ], [ %.2842, %1103 ], [ %.2842, %1100 ]
  %1108 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1108, label %1109, label %1113

1109:                                             ; preds = %1107
  %.not924 = icmp ult ptr %.0836, %.sroa.7.0
  br i1 %.not924, label %1113, label %1110

1110:                                             ; preds = %1109
  %1111 = add nsw i32 %.3843, -1
  %1112 = icmp slt i32 %.3843, 2
  br i1 %1112, label %1115, label %1113

1113:                                             ; preds = %1098, %1110, %1109, %1107
  %.sroa.9.2 = phi i32 [ %1101, %1110 ], [ -1, %1109 ], [ %.sroa.9.1, %1107 ], [ %.sroa.9.1, %1098 ]
  %.sroa.060.3 = phi i32 [ %.sroa.060.2, %1110 ], [ %.sroa.060.2, %1109 ], [ %.sroa.060.2, %1107 ], [ %.sroa.060.1, %1098 ]
  %.4 = phi i32 [ %1111, %1110 ], [ %.3843, %1109 ], [ %.3843, %1107 ], [ %.2842, %1098 ]
  %.1838 = phi i32 [ %1101, %1110 ], [ %1101, %1109 ], [ %1101, %1107 ], [ %.0837, %1098 ]
  %1114 = getelementptr inbounds i8, ptr %.0836, i64 2
  br label %1098, !llvm.loop !175

1115:                                             ; preds = %1110, %1104, %1098
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1098 ], [ %.sroa.9.1, %1104 ], [ %1101, %1110 ]
  %.sroa.060.4 = phi i32 [ %.sroa.060.1, %1098 ], [ %1101, %1104 ], [ %.sroa.060.2, %1110 ]
  %.2839 = phi i32 [ %.0837, %1098 ], [ %1101, %1104 ], [ %1101, %1110 ]
  %1116 = add nsw i32 %.2839, 1
  %1117 = icmp eq i32 %.sroa.060.4, -1
  %spec.select1017 = select i1 %1117, i32 %1116, i32 %.sroa.060.4
  %1118 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1118, i32 %1116, i32 %.sroa.9.3
  %1119 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.066.0, ptr noundef %1080)
  %1120 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1119, ptr noundef %.sroa.066.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.042.0.vec.extract = extractelement <2 x float> %1120, i64 0
  store float %.sroa.042.0.vec.extract, ptr %30, align 4, !tbaa !176
  %1121 = sitofp i32 %spec.select1017 to float
  %1122 = getelementptr inbounds i8, ptr %73, i64 6528
  %1123 = load float, ptr %1122, align 8, !tbaa !42
  %1124 = fmul float %1123, %1121
  %1125 = getelementptr inbounds i8, ptr %30, i64 4
  store float %1124, ptr %1125, align 4, !tbaa !177
  %1126 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1126, label %1127, label %1134

1127:                                             ; preds = %1115
  %1128 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1080)
  %1129 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1128, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.041.0.vec.extract = extractelement <2 x float> %1129, i64 0
  store float %.sroa.041.0.vec.extract, ptr %31, align 4, !tbaa !176
  %1130 = uitofp nneg i32 %.sroa.9.4 to float
  %1131 = load float, ptr %1122, align 8, !tbaa !42
  %1132 = fmul float %1131, %1130
  %1133 = getelementptr inbounds i8, ptr %31, i64 4
  store float %1132, ptr %1133, align 4, !tbaa !177
  br label %1134

1134:                                             ; preds = %1127, %1115
  %1135 = phi float [ %1131, %1127 ], [ %1123, %1115 ]
  br i1 %64, label %1136, label %1140

1136:                                             ; preds = %1134
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  %1137 = sitofp i32 %1116 to float
  %1138 = fmul float %1135, %1137
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %.sroa.0460.1, float noundef %1138)
  %1139 = load i64, ptr %32, align 8
  store i64 %1139, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  br label %1140

1140:                                             ; preds = %1136, %1134
  br i1 %292, label %1141, label %1195

1141:                                             ; preds = %1140
  %1142 = getelementptr inbounds i8, ptr %.08181120, i64 3708
  %1143 = load i8, ptr %1142, align 4, !tbaa !142, !range !39, !noundef !40
  %1144 = trunc nuw i8 %1143 to i1
  br i1 %1144, label %1145, label %1195

1145:                                             ; preds = %1141
  %1146 = and i32 %5, 4096
  %.not925 = icmp eq i32 %1146, 0
  br i1 %.not925, label %1147, label %1165

1147:                                             ; preds = %1145
  %1148 = fmul float %.sroa.0460.1, 2.500000e-01
  %1149 = load float, ptr %30, align 4, !tbaa !176
  %1150 = getelementptr inbounds i8, ptr %.08181120, i64 72
  %1151 = load float, ptr %1150, align 8, !tbaa !110
  %1152 = fcmp olt float %1149, %1151
  br i1 %1152, label %1153, label %1158

1153:                                             ; preds = %1147
  %1154 = fsub float %1149, %1148
  %1155 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1154)
  %1156 = fptosi float %1155 to i32
  %1157 = sitofp i32 %1156 to float
  store float %1157, ptr %1150, align 8, !tbaa !110
  br label %1167

1158:                                             ; preds = %1147
  %1159 = fsub float %1149, %.sroa.0460.1
  %1160 = fcmp ult float %1159, %1151
  br i1 %1160, label %1167, label %1161

1161:                                             ; preds = %1158
  %1162 = fadd float %1148, %1159
  %1163 = fptosi float %1162 to i32
  %1164 = sitofp i32 %1163 to float
  store float %1164, ptr %1150, align 8, !tbaa !110
  br label %1167

1165:                                             ; preds = %1145
  %1166 = getelementptr inbounds i8, ptr %.08181120, i64 72
  store float 0.000000e+00, ptr %1166, align 8, !tbaa !110
  br label %1167

1167:                                             ; preds = %1153, %1161, %1158, %1165
  br i1 %64, label %1168, label %1194

1168:                                             ; preds = %1167
  %1169 = load float, ptr %1125, align 4, !tbaa !177
  %1170 = load float, ptr %1122, align 8, !tbaa !42
  %1171 = fsub float %1169, %1170
  %1172 = fcmp olt float %1171, %.18271153
  br i1 %1172, label %1173, label %1175

1173:                                             ; preds = %1168
  %1174 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1171)
  %.pre1093 = load float, ptr %96, align 4, !tbaa !83
  br label %1180

1175:                                             ; preds = %1168
  %1176 = fsub float %1169, %.sroa.12.0.copyload
  %1177 = fcmp ult float %1176, %.18271153
  %.pre1094 = load float, ptr %96, align 4, !tbaa !83
  br i1 %1177, label %1180, label %1178

1178:                                             ; preds = %1175
  %1179 = call float @llvm.fmuladd.f32(float %.pre1094, float 2.000000e+00, float %1176)
  br label %1180

1180:                                             ; preds = %1175, %1178, %1173
  %1181 = phi float [ %.pre1093, %1173 ], [ %.pre1094, %1178 ], [ %.pre1094, %1175 ]
  %.2828 = phi float [ %1174, %1173 ], [ %1179, %1178 ], [ %.18271153, %1175 ]
  %1182 = getelementptr inbounds i8, ptr %28, i64 4
  %1183 = load float, ptr %1182, align 4, !tbaa !177
  %1184 = call float @llvm.fmuladd.f32(float %1181, float 2.000000e+00, float %1183)
  %1185 = fsub float %1184, %.sroa.12.0.copyload
  %1186 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1185, float noundef 0.000000e+00)
  %1187 = call noundef float @_ZL7ImClampIfET_S0_S0_S0_(float noundef %.2828, float noundef 0.000000e+00, float noundef %1186)
  %1188 = getelementptr inbounds i8, ptr %.1817, i64 96
  %1189 = load float, ptr %1188, align 4, !tbaa !102
  %1190 = fsub float %1189, %1187
  %1191 = getelementptr inbounds i8, ptr %27, i64 4
  %1192 = load float, ptr %1191, align 4, !tbaa !177
  %1193 = fadd float %1192, %1190
  store float %1193, ptr %1191, align 4, !tbaa !177
  store float %1187, ptr %1188, align 4, !tbaa !102
  br label %1194

1194:                                             ; preds = %1180, %1167
  store i8 0, ptr %1142, align 4, !tbaa !142
  br label %1195

1195:                                             ; preds = %1194, %1141, %1140
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #15
  %1196 = getelementptr inbounds i8, ptr %.08181120, i64 72
  %1197 = load float, ptr %1196, align 8, !tbaa !110
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %1197, float noundef 0.000000e+00)
  br i1 %.1830.in1151, label %1198, label %1267

1198:                                             ; preds = %1195
  %1199 = getelementptr inbounds i8, ptr %.08181120, i64 80
  %1200 = load i32, ptr %1199, align 4, !tbaa !154
  %1201 = getelementptr inbounds i8, ptr %.08181120, i64 84
  %1202 = load i32, ptr %1201, align 4, !tbaa !155
  %1203 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1200, i32 noundef %1202)
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds i16, ptr %1080, i64 %1204
  %1206 = load i32, ptr %1199, align 4, !tbaa !154
  %1207 = load i32, ptr %1201, align 4, !tbaa !155
  %1208 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1206, i32 noundef %1207)
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds i16, ptr %1080, i64 %1209
  %1211 = select i1 %292, float 1.000000e+00, float 0x3FE3333340000000
  %1212 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 47, float noundef %1211)
  %1213 = select i1 %64, float 0.000000e+00, float -1.000000e+00
  %1214 = select i1 %64, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #15
  %1215 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %1215, ptr %35, align 8
  %1216 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %35, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1216, ptr %34, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #15
  store ptr %1205, ptr %36, align 8, !tbaa !41
  %1217 = getelementptr inbounds i8, ptr %34, i64 4
  %1218 = icmp slt i32 %1203, %1208
  br i1 %1218, label %.lr.ph1085, label %._crit_edge

.lr.ph1085:                                       ; preds = %1198
  %1219 = extractelement <2 x float> %1216, i64 1
  %1220 = getelementptr inbounds i8, ptr %26, i64 12
  %1221 = getelementptr inbounds i8, ptr %26, i64 4
  %1222 = getelementptr inbounds i8, ptr %73, i64 6520
  %1223 = getelementptr inbounds i8, ptr %.1817, i64 696
  %1224 = getelementptr inbounds i8, ptr %37, i64 8
  %.pre1095 = load float, ptr %1122, align 8, !tbaa !42
  br label %1225

1225:                                             ; preds = %.lr.ph1085, %.loopexit
  %1226 = phi ptr [ %1205, %.lr.ph1085 ], [ %1259, %.loopexit ]
  %1227 = phi float [ %1219, %.lr.ph1085 ], [ %1265, %.loopexit ]
  %1228 = phi float [ %.pre1095, %.lr.ph1085 ], [ %1261, %.loopexit ]
  %1229 = load float, ptr %1220, align 4, !tbaa !178
  %1230 = fadd float %1229, %1228
  %1231 = fcmp ogt float %1227, %1230
  br i1 %1231, label %._crit_edge.loopexit, label %1232

1232:                                             ; preds = %1225
  %1233 = load float, ptr %1221, align 4, !tbaa !179
  %1234 = fcmp olt float %1227, %1233
  br i1 %1234, label %.preheader, label %1241

.preheader:                                       ; preds = %1232, %1237
  %1235 = phi ptr [ %1238, %1237 ], [ %1226, %1232 ]
  %1236 = icmp ult ptr %1235, %1210
  br i1 %1236, label %1237, label %.loopexit

1237:                                             ; preds = %.preheader
  %1238 = getelementptr inbounds i8, ptr %1235, i64 2
  store ptr %1238, ptr %36, align 8, !tbaa !41
  %1239 = load i16, ptr %1235, align 2, !tbaa !146
  %1240 = icmp eq i16 %1239, 10
  br i1 %1240, label %.loopexit, label %.preheader, !llvm.loop !180

1241:                                             ; preds = %1232
  %1242 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1226, ptr noundef nonnull %1210, ptr noundef nonnull %36, ptr noundef null, i1 noundef zeroext true)
  %.sroa.028.0.vec.extract = extractelement <2 x float> %1242, i64 0
  %1243 = fcmp ugt float %.sroa.028.0.vec.extract, 0.000000e+00
  br i1 %1243, label %1250, label %1244

1244:                                             ; preds = %1241
  %1245 = load ptr, ptr %1222, align 8, !tbaa !118
  %1246 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(106) %1245, i16 noundef zeroext 32)
  %1247 = fmul float %1246, 5.000000e-01
  %1248 = fptosi float %1247 to i32
  %1249 = sitofp i32 %1248 to float
  br label %1250

1250:                                             ; preds = %1244, %1241
  %.sroa.028.0.vec.extract31.pre-phi = phi float [ %1249, %1244 ], [ %.sroa.028.0.vec.extract, %1241 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #15
  %1251 = load float, ptr %1122, align 8, !tbaa !42
  %1252 = fsub float %1213, %1251
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef %1252)
  %1253 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %39)
  store <2 x float> %1253, ptr %38, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #15
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef %.sroa.028.0.vec.extract31.pre-phi, float noundef %1214)
  %1254 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %41)
  store <2 x float> %1254, ptr %40, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(8) %38, ptr noundef nonnull align 4 dereferenceable(8) %40)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %42, ptr noundef nonnull align 4 dereferenceable(16) %26)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %42)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #15
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %43, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %1255 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %43)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #15
  br i1 %1255, label %1256, label %1258

1256:                                             ; preds = %1250
  %1257 = load ptr, ptr %1223, align 8, !tbaa !181
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %1257, ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1224, i32 noundef %1212, float noundef 0.000000e+00, i32 noundef 15)
  br label %1258

1258:                                             ; preds = %1256, %1250
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #15
  %.pre1096 = load float, ptr %1122, align 8, !tbaa !42
  %.pre1097 = load float, ptr %1217, align 4, !tbaa !177
  %.pre1098 = load ptr, ptr %36, align 8, !tbaa !41
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1237, %1258
  %1259 = phi ptr [ %.pre1098, %1258 ], [ %1235, %.preheader ], [ %1238, %1237 ]
  %1260 = phi float [ %.pre1097, %1258 ], [ %1227, %1237 ], [ %1227, %.preheader ]
  %1261 = phi float [ %.pre1096, %1258 ], [ %1228, %1237 ], [ %1228, %.preheader ]
  %1262 = load float, ptr %27, align 8, !tbaa !176
  %1263 = load float, ptr %33, align 4, !tbaa !176
  %1264 = fsub float %1262, %1263
  store float %1264, ptr %34, align 8, !tbaa !176
  %1265 = fadd float %1261, %1260
  store float %1265, ptr %1217, align 4, !tbaa !177
  %1266 = icmp ult ptr %1259, %1210
  br i1 %1266, label %1225, label %._crit_edge.loopexit, !llvm.loop !182

._crit_edge.loopexit:                             ; preds = %1225, %.loopexit
  %.pre1099.pre.pre = load ptr, ptr %29, align 8, !tbaa !41
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1198
  %.pre1099.pre = phi ptr [ %.pre1099.pre.pre, %._crit_edge.loopexit ], [ %.pre10991101, %1198 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #15
  br label %1267

1267:                                             ; preds = %._crit_edge, %1195
  %.pre1099 = phi ptr [ %.pre1099.pre, %._crit_edge ], [ %.pre10991101, %1195 ]
  br i1 %64, label %1273, label %1268

1268:                                             ; preds = %1267
  %1269 = ptrtoint ptr %.pre1099 to i64
  %1270 = ptrtoint ptr %.0845 to i64
  %1271 = sub i64 %1269, %1270
  %1272 = icmp slt i64 %1271, 2097152
  br i1 %1272, label %1273, label %1282

1273:                                             ; preds = %1268, %1267
  %. = phi ptr [ %26, %1268 ], [ null, %1267 ]
  %1274 = zext i1 %332 to i32
  %1275 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1274, float noundef 1.000000e+00)
  %1276 = getelementptr inbounds i8, ptr %.1817, i64 696
  %1277 = load ptr, ptr %1276, align 8, !tbaa !181
  %1278 = getelementptr inbounds i8, ptr %73, i64 6520
  %1279 = load ptr, ptr %1278, align 8, !tbaa !118
  %1280 = load float, ptr %1122, align 8, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #15
  %1281 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %1281, ptr %44, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1277, ptr noundef %1279, float noundef %1280, ptr noundef nonnull align 4 dereferenceable(8) %44, i32 noundef %1275, ptr noundef %.0845, ptr noundef %.pre1099, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #15
  br label %1282

1282:                                             ; preds = %1273, %1268
  br i1 %292, label %1283, label %1320

1283:                                             ; preds = %1282
  %1284 = getelementptr inbounds i8, ptr %73, i64 24
  %1285 = load float, ptr %1284, align 8, !tbaa !183
  %1286 = getelementptr inbounds i8, ptr %.08181120, i64 3704
  %1287 = load float, ptr %1286, align 8, !tbaa !184
  %1288 = fadd float %1285, %1287
  store float %1288, ptr %1286, align 8, !tbaa !184
  %1289 = getelementptr inbounds i8, ptr %73, i64 202
  %1290 = load i8, ptr %1289, align 2, !tbaa !185, !range !39, !noundef !40
  %1291 = trunc nuw i8 %1290 to i1
  %1292 = fcmp ugt float %1288, 0.000000e+00
  %or.cond1018 = select i1 %1291, i1 %1292, i1 false
  br i1 %or.cond1018, label %1293, label %1296

1293:                                             ; preds = %1283
  %1294 = call float @fmodf(float noundef %1288, float noundef 0x3FF3333340000000) #15
  %1295 = fcmp ole float %1294, 0x3FE99999A0000000
  br label %1296

1296:                                             ; preds = %1293, %1283
  %1297 = phi i1 [ true, %1283 ], [ %1295, %1293 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #15
  %1298 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %1298, ptr %45, align 8
  %1299 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %45, ptr noundef nonnull align 4 dereferenceable(8) %33)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #15
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #15
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1299, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1299, i64 1
  %1300 = load float, ptr %1122, align 8, !tbaa !42
  %1301 = fsub float %.sroa.0.4.vec.extract, %1300
  %1302 = fadd float %1301, 5.000000e-01
  %1303 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1304 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %46, float noundef %.sroa.0.0.vec.extract, float noundef %1302, float noundef %1303, float noundef %1304)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #15
  br i1 %1297, label %1305, label %.critedge13

1305:                                             ; preds = %1296
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %47, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %1306 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %46, ptr noundef nonnull align 4 dereferenceable(16) %47)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #15
  br i1 %1306, label %1307, label %1312

1307:                                             ; preds = %1305
  %1308 = getelementptr inbounds i8, ptr %.1817, i64 696
  %1309 = load ptr, ptr %1308, align 8, !tbaa !181
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #15
  %1310 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %46)
  store <2 x float> %1310, ptr %48, align 8
  %1311 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(196) %1309, ptr noundef nonnull align 4 dereferenceable(8) %46, ptr noundef nonnull align 4 dereferenceable(8) %48, i32 noundef %1311, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #15
  br label %1312

.critedge13:                                      ; preds = %1296
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #15
  br label %1312

1312:                                             ; preds = %.critedge13, %1307, %1305
  br i1 %75, label %1319, label %1313

1313:                                             ; preds = %1312
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #15
  %1314 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1315 = load float, ptr %1122, align 8, !tbaa !42
  %1316 = fsub float %.sroa.0.4.vec.extract, %1315
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %1314, float noundef %1316)
  %1317 = getelementptr inbounds i8, ptr %73, i64 12496
  %1318 = load i64, ptr %49, align 8
  store i64 %1318, ptr %1317, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #15
  br label %1319

1319:                                             ; preds = %1313, %1312
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #15
  br label %1320

1320:                                             ; preds = %1319, %1282
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #15
  br label %1356

1321:                                             ; preds = %1068
  br i1 %64, label %.critedge1020, label %1322

1322:                                             ; preds = %1321
  br i1 %332, label %1340, label %1323

1323:                                             ; preds = %1322
  %1324 = load i32, ptr %166, align 8, !tbaa !97
  %1325 = icmp eq i32 %1324, %85
  br i1 %1325, label %1326, label %1331

1326:                                             ; preds = %1323
  %1327 = getelementptr inbounds i8, ptr %.08181120, i64 8
  %1328 = load i32, ptr %1327, align 8, !tbaa !108
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds i8, ptr %.0845, i64 %1329
  store ptr %1330, ptr %29, align 8, !tbaa !41
  br label %1340

1331:                                             ; preds = %1323
  %1332 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0845) #16
  %1333 = getelementptr inbounds i8, ptr %.0845, i64 %1332
  store ptr %1333, ptr %29, align 8, !tbaa !41
  br label %1340

.critedge1020:                                    ; preds = %1321
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #15
  %1334 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0845, ptr noundef nonnull %29)
  %1335 = sitofp i32 %1334 to float
  %1336 = getelementptr inbounds i8, ptr %73, i64 6528
  %1337 = load float, ptr %1336, align 8, !tbaa !42
  %1338 = fmul float %1337, %1335
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %50, float noundef %.sroa.0460.1, float noundef %1338)
  %1339 = load i64, ptr %50, align 8
  store i64 %1339, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #15
  br label %1346

1340:                                             ; preds = %1322, %1326, %1331
  %1341 = phi ptr [ %1069, %1322 ], [ %1330, %1326 ], [ %1333, %1331 ]
  %1342 = ptrtoint ptr %1341 to i64
  %1343 = ptrtoint ptr %.0845 to i64
  %1344 = sub i64 %1342, %1343
  %1345 = icmp slt i64 %1344, 2097152
  br i1 %1345, label %1346, label %1356

1346:                                             ; preds = %.critedge1020, %1340
  %.14 = phi ptr [ %26, %1340 ], [ null, %.critedge1020 ]
  %1347 = zext i1 %332 to i32
  %1348 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1347, float noundef 1.000000e+00)
  %1349 = getelementptr inbounds i8, ptr %.1817, i64 696
  %1350 = load ptr, ptr %1349, align 8, !tbaa !181
  %1351 = getelementptr inbounds i8, ptr %73, i64 6520
  %1352 = load ptr, ptr %1351, align 8, !tbaa !118
  %1353 = getelementptr inbounds i8, ptr %73, i64 6528
  %1354 = load float, ptr %1353, align 8, !tbaa !42
  %1355 = load ptr, ptr %29, align 8, !tbaa !41
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(196) %1350, ptr noundef %1352, float noundef %1354, ptr noundef nonnull align 4 dereferenceable(8) %27, i32 noundef %1348, ptr noundef %.0845, ptr noundef %1355, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1356

1356:                                             ; preds = %1340, %1346, %1320
  br i1 %brmerge941, label %1358, label %1357

1357:                                             ; preds = %1356
  call void @_ZN5ImGui7PopFontEv()
  br label %1358

1358:                                             ; preds = %1356, %1357
  br i1 %64, label %1359, label %1360

1359:                                             ; preds = %1358
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %28)
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1360

1360:                                             ; preds = %1359, %1358
  %1361 = getelementptr inbounds i8, ptr %73, i64 12600
  %1362 = load i8, ptr %1361, align 8, !tbaa !186, !range !39, !noundef !40
  %1363 = trunc nuw i8 %1362 to i1
  %or.cond1027 = and i1 %brmerge941, %1363
  br i1 %or.cond1027, label %1364, label %1366

1364:                                             ; preds = %1360
  %1365 = load ptr, ptr %29, align 8, !tbaa !41
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %27, ptr noundef %.0845, ptr noundef %1365)
  br label %1366

1366:                                             ; preds = %1364, %1360
  br i1 %101, label %1367, label %1377

1367:                                             ; preds = %1366
  %1368 = getelementptr inbounds i8, ptr %11, i64 8
  %1369 = load float, ptr %1368, align 8, !tbaa !187
  %1370 = getelementptr inbounds i8, ptr %73, i64 5552
  %1371 = load float, ptr %1370, align 4, !tbaa !84
  %1372 = fadd float %1369, %1371
  %1373 = load float, ptr %1049, align 4, !tbaa !174
  %1374 = load float, ptr %96, align 4, !tbaa !83
  %1375 = fadd float %1373, %1374
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %51, float noundef %1372, float noundef %1375)
  %1376 = load <2 x float>, ptr %51, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1376, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1377

1377:                                             ; preds = %1367, %1366
  %1378 = and i32 %5, 2097152
  %.not926 = icmp eq i32 %1378, 0
  %or.cond1023 = and i1 %.not926, %.1832
  br i1 %or.cond1023, label %1379, label %1380

1379:                                             ; preds = %1377
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %85)
  br label %1380

1380:                                             ; preds = %1377, %1379
  %1381 = and i32 %5, 32
  %.not927 = icmp eq i32 %1381, 0
  %1382 = trunc nuw i8 %.28351149 to i1
  %.1 = select i1 %.not927, i1 %.1832, i1 %1382
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #15
  br label %1383

1383:                                             ; preds = %137, %138, %1380, %116
  %.2 = phi i1 [ %.1, %1380 ], [ false, %137 ], [ false, %116 ], [ false, %138 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #15
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #15
  br label %1384

1384:                                             ; preds = %8, %1383
  %.3 = phi i1 [ %.2, %1383 ], [ false, %8 ]
  ret i1 %.3
}

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

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

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

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

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

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

declare void @_ZN5ImGui8EndChildEv() local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) local_unnamed_addr #6

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #9

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

declare noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv() local_unnamed_addr #6

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #6

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #6

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #6

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #6

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #6

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

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

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

declare noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #6

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

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

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

declare void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(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 #6

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare float @fmodf(float noundef, float noundef) local_unnamed_addr #13

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

declare void @_ZN5ImGui7PopFontEv() local_unnamed_addr #6

declare void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr) local_unnamed_addr

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 147}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !12, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !11, i64 92, !11, i64 100, !11, i64 108, !11, i64 116, !11, i64 124, !11, i64 132, !13, i64 140, !13, i64 141, !13, i64 142, !13, i64 143, !13, i64 144, !13, i64 145, !13, i64 146, !13, i64 147, !13, i64 148, !13, i64 149, !13, i64 150, !13, i64 151, !8, i64 152, !14, i64 154, !14, i64 156, !14, i64 158, !10, i64 160, !8, i64 164, !8, i64 165, !8, i64 166, !13, i64 167, !10, i64 168, !8, i64 172, !8, i64 173, !8, i64 174, !10, i64 175, !10, i64 176, !10, i64 177, !11, i64 180, !11, i64 188, !15, i64 200, !16, i64 216, !18, i64 520, !18, i64 536, !18, i64 552, !18, i64 568, !18, i64 584, !18, i64 600, !18, i64 616, !24, i64 632, !24, i64 636, !10, i64 640, !12, i64 644, !12, i64 648, !25, i64 656, !27, i64 672, !12, i64 688, !10, i64 692, !7, i64 696, !28, i64 704, !7, i64 904, !7, i64 912, !7, i64 920, !7, i64 928, !7, i64 936, !8, i64 944, !8, i64 952, !10, i64 984, !10, i64 988, !13, i64 992}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS6ImVec2", !12, i64 0, !12, i64 4}
!12 = !{!"float", !8, i64 0}
!13 = !{!"bool", !8, i64 0}
!14 = !{!"short", !8, i64 0}
!15 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!16 = !{!"_ZTS19ImGuiWindowTempData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !12, i64 56, !12, i64 60, !17, i64 64, !17, i64 68, !17, i64 72, !10, i64 76, !10, i64 80, !18, i64 84, !18, i64 100, !19, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !13, i64 132, !13, i64 133, !13, i64 134, !11, i64 136, !20, i64 144, !10, i64 180, !10, i64 184, !21, i64 192, !7, i64 208, !7, i64 216, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !10, i64 240, !10, i64 244, !12, i64 248, !12, i64 252, !22, i64 256, !22, i64 272, !23, i64 288}
!17 = !{!"_ZTS6ImVec1", !12, i64 0}
!18 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!19 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!20 = !{!"_ZTS16ImGuiMenuColumns", !12, i64 0, !12, i64 4, !12, i64 8, !8, i64 12, !8, i64 24}
!21 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!23 = !{!"_ZTS15ImGuiStackSizes", !14, i64 0, !14, i64 2, !14, i64 4, !14, i64 6, !14, i64 8, !14, i64 10, !14, i64 12}
!24 = !{!"_ZTS8ImVec2ih", !14, i64 0, !14, i64 2}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS8ImVectorI15ImGuiOldColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!28 = !{!"_ZTS10ImDrawList", !29, i64 0, !30, i64 16, !31, i64 32, !10, i64 48, !10, i64 52, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !32, i64 88, !33, i64 104, !34, i64 120, !35, i64 136, !37, i64 168, !12, i64 192}
!29 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!35 = !{!"_ZTS15ImDrawCmdHeader", !36, i64 0, !7, i64 16, !10, i64 24}
!36 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!37 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !38, i64 8}
!38 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!7, !7, i64 0}
!42 = !{!43, !12, i64 6528}
!43 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !44, i64 8, !45, i64 5472, !7, i64 6520, !12, i64 6528, !12, i64 6532, !46, i64 6536, !47, i64 6752, !10, i64 6760, !10, i64 6764, !10, i64 6768, !13, i64 6772, !13, i64 6773, !13, i64 6774, !13, i64 6775, !13, i64 6776, !10, i64 6780, !7, i64 6784, !21, i64 6792, !21, i64 6808, !21, i64 6824, !21, i64 6840, !25, i64 6856, !10, i64 6872, !7, i64 6880, !7, i64 6888, !7, i64 6896, !7, i64 6904, !7, i64 6912, !7, i64 6920, !11, i64 6928, !12, i64 6936, !10, i64 6940, !10, i64 6944, !13, i64 6948, !13, i64 6949, !13, i64 6950, !13, i64 6951, !12, i64 6952, !12, i64 6956, !10, i64 6960, !10, i64 6964, !12, i64 6968, !13, i64 6972, !13, i64 6973, !13, i64 6974, !13, i64 6975, !13, i64 6976, !13, i64 6977, !13, i64 6978, !10, i64 6980, !10, i64 6984, !48, i64 6992, !11, i64 7000, !7, i64 7008, !49, i64 7016, !10, i64 7020, !10, i64 7024, !13, i64 7028, !13, i64 7029, !7, i64 7032, !10, i64 7040, !12, i64 7044, !50, i64 7048, !51, i64 7160, !52, i64 7184, !53, i64 7200, !54, i64 7216, !15, i64 7232, !55, i64 7248, !56, i64 7264, !57, i64 7280, !57, i64 7296, !7, i64 7312, !10, i64 7320, !10, i64 7324, !10, i64 7328, !10, i64 7332, !10, i64 7336, !10, i64 7340, !10, i64 7344, !10, i64 7348, !10, i64 7352, !10, i64 7356, !10, i64 7360, !49, i64 7364, !18, i64 7368, !10, i64 7384, !19, i64 7388, !10, i64 7392, !13, i64 7396, !13, i64 7397, !13, i64 7398, !13, i64 7399, !13, i64 7400, !13, i64 7401, !13, i64 7402, !10, i64 7404, !18, i64 7408, !13, i64 7424, !10, i64 7428, !58, i64 7432, !10, i64 7436, !10, i64 7440, !10, i64 7444, !10, i64 7448, !59, i64 7456, !59, i64 7504, !59, i64 7552, !7, i64 7600, !10, i64 7608, !7, i64 7616, !7, i64 7624, !7, i64 7632, !12, i64 7640, !12, i64 7644, !13, i64 7648, !7, i64 7656, !7, i64 7664, !10, i64 7672, !10, i64 7676, !10, i64 7680, !10, i64 7684, !13, i64 7688, !60, i64 7696, !61, i64 7752, !12, i64 7784, !28, i64 7792, !28, i64 7992, !10, i64 8192, !13, i64 8196, !13, i64 8197, !13, i64 8198, !10, i64 8200, !10, i64 8204, !10, i64 8208, !62, i64 8216, !18, i64 8280, !10, i64 8296, !10, i64 8300, !12, i64 8304, !10, i64 8308, !10, i64 8312, !10, i64 8316, !10, i64 8320, !63, i64 8328, !8, i64 8344, !7, i64 8360, !64, i64 8368, !66, i64 8408, !22, i64 8424, !38, i64 8440, !7, i64 8456, !67, i64 8464, !66, i64 8504, !69, i64 8520, !11, i64 8536, !70, i64 8544, !74, i64 12280, !10, i64 12392, !10, i64 12396, !12, i64 12400, !12, i64 12404, !8, i64 12408, !36, i64 12420, !12, i64 12436, !13, i64 12440, !13, i64 12441, !12, i64 12444, !12, i64 12448, !12, i64 12452, !10, i64 12456, !12, i64 12460, !71, i64 12464, !15, i64 12480, !11, i64 12496, !11, i64 12504, !8, i64 12512, !13, i64 12513, !12, i64 12516, !76, i64 12520, !77, i64 12536, !78, i64 12552, !79, i64 12568, !80, i64 12584, !13, i64 12600, !81, i64 12604, !7, i64 12608, !76, i64 12616, !12, i64 12632, !13, i64 12636, !10, i64 12640, !10, i64 12644, !10, i64 12648, !13, i64 12652, !10, i64 12656, !82, i64 12660, !8, i64 12676, !10, i64 13156, !12, i64 13160, !10, i64 13164, !10, i64 13168, !10, i64 13172, !8, i64 13176}
!44 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !7, i64 24, !7, i64 32, !12, i64 40, !12, i64 44, !12, i64 48, !8, i64 52, !12, i64 140, !12, i64 144, !7, i64 152, !7, i64 160, !12, i64 168, !13, i64 172, !7, i64 176, !11, i64 184, !13, i64 192, !13, i64 193, !13, i64 194, !13, i64 195, !13, i64 196, !13, i64 197, !12, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !11, i64 288, !8, i64 296, !12, i64 304, !12, i64 308, !13, i64 312, !13, i64 313, !13, i64 314, !13, i64 315, !8, i64 316, !8, i64 828, !13, i64 912, !13, i64 913, !13, i64 914, !13, i64 915, !13, i64 916, !13, i64 917, !13, i64 918, !12, i64 920, !10, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !11, i64 944, !10, i64 952, !11, i64 956, !8, i64 964, !8, i64 1008, !8, i64 1048, !8, i64 1053, !8, i64 1058, !8, i64 1063, !8, i64 1068, !8, i64 1076, !8, i64 1096, !8, i64 1116, !8, i64 1156, !8, i64 1176, !8, i64 3224, !8, i64 5272, !8, i64 5356, !12, i64 5440, !14, i64 5444, !30, i64 5448}
!45 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !11, i64 4, !12, i64 12, !12, i64 16, !11, i64 20, !11, i64 28, !10, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !11, i64 56, !12, i64 64, !12, i64 68, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !12, i64 104, !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, !10, i64 144, !11, i64 148, !11, i64 156, !11, i64 164, !11, i64 172, !12, i64 180, !13, i64 184, !13, i64 185, !13, i64 186, !12, i64 188, !12, i64 192, !8, i64 196}
!46 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !36, i64 28, !10, i64 44, !8, i64 48, !8, i64 144, !7, i64 208}
!47 = !{!"double", !8, i64 0}
!48 = !{!"long long", !8, i64 0}
!49 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!50 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !13, i64 56, !18, i64 60, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100}
!51 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !10, i64 8, !10, i64 12, !13, i64 16}
!52 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!53 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!54 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!55 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!56 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!57 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!58 = !{!"_ZTS15ImGuiNavForward", !8, i64 0}
!59 = !{!"_ZTS18ImGuiNavMoveResult", !7, i64 0, !10, i64 8, !10, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !18, i64 28}
!60 = !{!"_ZTS10ImDrawData", !13, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !11, i64 28, !11, i64 36, !11, i64 44}
!61 = !{!"_ZTS17ImDrawDataBuilder", !8, i64 0}
!62 = !{!"_ZTS12ImGuiPayload", !7, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !8, i64 24, !13, i64 57, !13, i64 58}
!63 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS6ImPoolI10ImGuiTableE", !65, i64 0, !25, i64 16, !10, i64 32}
!65 = !{!"_ZTS8ImVectorI10ImGuiTableE", !10, i64 0, !10, i64 4, !7, i64 8}
!66 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!67 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !68, i64 0, !25, i64 16, !10, i64 32}
!68 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!70 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !30, i64 16, !71, i64 32, !71, i64 48, !13, i64 64, !10, i64 68, !12, i64 72, !72, i64 76, !12, i64 3704, !13, i64 3708, !13, i64 3709, !13, i64 3710, !10, i64 3712, !7, i64 3720, !7, i64 3728}
!71 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !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, !73, i64 32}
!73 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!74 = !{!"_ZTS6ImFont", !22, i64 0, !12, i64 16, !12, i64 20, !30, i64 24, !75, i64 40, !7, i64 56, !7, i64 64, !7, i64 72, !14, i64 80, !14, i64 82, !14, i64 84, !13, i64 86, !12, i64 88, !12, i64 92, !12, i64 96, !10, i64 100, !8, i64 104}
!75 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!76 = !{!"_ZTS15ImGuiTextBuffer", !71, i64 0}
!77 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!78 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !71, i64 0}
!79 = !{!"_ZTS13ImChunkStreamI18ImGuiTableSettingsE", !71, i64 0}
!80 = !{!"_ZTS8ImVectorI16ImGuiContextHookE", !10, i64 0, !10, i64 4, !7, i64 8}
!81 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!82 = !{!"_ZTS18ImGuiMetricsConfig", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !13, i64 4, !10, i64 8, !10, i64 12}
!83 = !{!45, !12, i64 60}
!84 = !{!45, !12, i64 80}
!85 = !{!12, !12, i64 0}
!86 = !{!45, !12, i64 64}
!87 = !{!45, !12, i64 68}
!88 = !{!43, !7, i64 6880}
!89 = !{!6, !19, i64 332}
!90 = !{!6, !10, i64 340}
!91 = !{!6, !12, i64 132}
!92 = !{!43, !10, i64 8192}
!93 = !{!43, !7, i64 7656}
!94 = !{!43, !10, i64 7672}
!95 = !{!6, !10, i64 452}
!96 = !{!13, !13, i64 0}
!97 = !{!43, !10, i64 6960}
!98 = !{!43, !10, i64 7340}
!99 = !{!43, !10, i64 7328}
!100 = !{!43, !49, i64 7364}
!101 = !{!43, !10, i64 7024}
!102 = !{!6, !12, i64 96}
!103 = !{!70, !8, i64 99}
!104 = !{!70, !7, i64 56}
!105 = !{!70, !13, i64 64}
!106 = !{!70, !7, i64 24}
!107 = !{!70, !10, i64 4}
!108 = !{!70, !10, i64 8}
!109 = !{!70, !10, i64 0}
!110 = !{!70, !12, i64 72}
!111 = !{!70, !8, i64 88}
!112 = !{!44, !13, i64 312}
!113 = !{!10, !10, i64 0}
!114 = !{!43, !48, i64 6992}
!115 = !{!70, !10, i64 16}
!116 = !{!70, !7, i64 40}
!117 = !{!8, !8, i64 0}
!118 = !{!43, !7, i64 6520}
!119 = !{!74, !12, i64 20}
!120 = !{!74, !12, i64 96}
!121 = !{!74, !7, i64 64}
!122 = !{!74, !7, i64 56}
!123 = !{!124, !12, i64 4}
!124 = !{!"_ZTS11ImFontGlyph", !10, i64 0, !10, i64 3, !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}
!125 = !{!74, !12, i64 16}
!126 = !{!70, !13, i64 3710}
!127 = !{!70, !10, i64 68}
!128 = !{!70, !10, i64 3712}
!129 = !{!70, !7, i64 3720}
!130 = !{!70, !7, i64 3728}
!131 = !{!43, !13, i64 6973}
!132 = !{!43, !10, i64 13172}
!133 = !{!44, !12, i64 288}
!134 = !{!18, !12, i64 0}
!135 = !{!45, !12, i64 56}
!136 = !{!44, !12, i64 292}
!137 = !{!6, !12, i64 220}
!138 = !{!44, !13, i64 193}
!139 = !{!70, !13, i64 3709}
!140 = !{!44, !12, i64 944}
!141 = !{!44, !12, i64 948}
!142 = !{!70, !13, i64 3708}
!143 = !{!44, !13, i64 314}
!144 = !{!44, !13, i64 315}
!145 = !{!44, !13, i64 313}
!146 = !{!14, !14, i64 0}
!147 = !{!44, !10, i64 5448}
!148 = distinct !{!148, !149}
!149 = !{!"llvm.loop.mustprogress"}
!150 = !{!43, !13, i64 6972}
!151 = !{!44, !10, i64 952}
!152 = !{!70, !10, i64 92}
!153 = !{!44, !7, i64 256}
!154 = !{!70, !10, i64 80}
!155 = !{!70, !10, i64 84}
!156 = distinct !{!156, !149}
!157 = !{!70, !10, i64 48}
!158 = !{!30, !7, i64 8}
!159 = !{!30, !10, i64 0}
!160 = !{!70, !10, i64 32}
!161 = !{!162, !10, i64 0}
!162 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !7, i64 8, !14, i64 16, !10, i64 20, !7, i64 24, !10, i64 32, !10, i64 36, !13, i64 40, !10, i64 44, !10, i64 48, !10, i64 52}
!163 = !{!162, !10, i64 4}
!164 = !{!162, !7, i64 8}
!165 = !{!162, !10, i64 20}
!166 = !{!162, !7, i64 24}
!167 = !{!162, !10, i64 32}
!168 = !{!162, !10, i64 36}
!169 = !{!70, !10, i64 76}
!170 = !{!162, !10, i64 44}
!171 = !{!162, !10, i64 48}
!172 = !{!162, !10, i64 52}
!173 = !{!162, !13, i64 40}
!174 = !{!18, !12, i64 4}
!175 = distinct !{!175, !149}
!176 = !{!11, !12, i64 0}
!177 = !{!11, !12, i64 4}
!178 = !{!36, !12, i64 12}
!179 = !{!36, !12, i64 4}
!180 = distinct !{!180, !149}
!181 = !{!6, !7, i64 696}
!182 = distinct !{!182, !149}
!183 = !{!44, !12, i64 16}
!184 = !{!70, !12, i64 3704}
!185 = !{!43, !13, i64 202}
!186 = !{!43, !13, i64 12600}
!187 = !{!18, !12, i64 8}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass