; LLVM IR from Illurin/VulkanGraphicsEngine :: Third-Party/Include/imgui (imgui_widgets)

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

%struct.ImVec2 = type { float, float }
%struct.ImRect = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVector.7 = 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, float, float, i32, i32, i32, %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, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVector, %struct.ImGuiWindowTempData, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32, float, float, [4 x i8], %struct.ImGuiStorage, %struct.ImVector.5, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i8, [3 x i8], i32, i32, [4 x i8] }>
%struct.ImVector = type { i32, i32, ptr }
%struct.ImGuiWindowTempData = type <{ %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, i32, i8, i8, i8, i8, %struct.ImVec2, %struct.ImGuiMenuColumns, i32, i32, %struct.ImVector.0, ptr, ptr, i32, i32, i32, i32, i32, float, float, [4 x i8], %struct.ImVector.1, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, [6 x i16], [4 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.ImVector.2 = type { i32, i32, ptr }
%struct.ImVector.3 = type { i32, i32, ptr }
%struct.ImGuiStorage = type { %struct.ImVector.4 }
%struct.ImVector.4 = type { i32, i32, ptr }
%struct.ImVector.5 = type { i32, i32, ptr }
%struct.ImDrawList = type { %struct.ImVector.6, %struct.ImVector.7, %struct.ImVector.8, i32, ptr, ptr, i32, i32, ptr, ptr, %struct.ImVector.9, %struct.ImVector.10, %struct.ImVector.11, %struct.ImDrawListSplitter }
%struct.ImVector.6 = type { i32, i32, ptr }
%struct.ImVector.8 = type { i32, i32, ptr }
%struct.ImVector.9 = type { i32, i32, ptr }
%struct.ImVector.10 = type { i32, i32, ptr }
%struct.ImVector.11 = type { i32, i32, ptr }
%struct.ImDrawListSplitter = type { i32, i32, %struct.ImVector.12 }
%struct.ImVector.12 = 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, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i8, [3 x i8], i32, float, float, i32, i32, float, i8, i8, i8, i8, i8, [3 x 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.13, %struct.ImVector.14, %struct.ImVector.15, %struct.ImVector.16, %struct.ImVector.16, ptr, 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, i8, [2 x i8], i32, i32, i32, i32, i32, [4 x i8], %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, 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, [2 x i8], i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, %struct.ImVector.18, [16 x i8], ptr, %struct.ImPool, %struct.ImVector.20, %struct.ImVector.21, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, float, [3 x float], %struct.ImVec4, i8, [3 x i8], float, float, float, i32, %struct.ImVector.22, %struct.ImVector, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, %struct.ImGuiTextBuffer, %struct.ImVector.24, %struct.ImChunkStream, i8, [3 x i8], i32, ptr, %struct.ImGuiTextBuffer, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, [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, float, ptr, 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, %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], i16, %struct.ImVector.7 }
%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, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, float, float, [48 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, float, %struct.ImVec4, i32, [12 x %struct.ImVec2], [64 x i8] }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %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.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.ImVector.20 = type { i32, i32, ptr }
%struct.ImVector.21 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { i32, i32, i32, %struct.ImVector.7, %struct.ImVector.22, %struct.ImVector.22, i8, i32, float, %"struct.ImStb::STB_TexteditState", float, i8, i8, i32, ptr, ptr }
%"struct.ImStb::STB_TexteditState" = type { i32, i32, i32, i8, 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.2, float, float, %struct.ImVector.7, %struct.ImVector.23, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, i8, i8, float, float, float, i32, [2 x i8], [6 x i8] }>
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImChunkStream = type { %struct.ImVector.22 }
%struct.ImGuiTextBuffer = type { %struct.ImVector.22 }
%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 [106 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.62 = 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(956), 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(168), 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

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

; 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 @_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 i8, align 1
  %54 = alloca i8, align 1
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca i8, align 1
  %58 = alloca i8, align 1
  %59 = alloca i8, align 1
  %60 = alloca i8, align 1
  %61 = alloca i8, align 1
  %62 = alloca ptr, align 8
  %63 = alloca i8, align 1
  %64 = alloca i8, align 1
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca i32, align 4
  %68 = alloca float, align 4
  %69 = alloca float, align 4
  %70 = alloca i8, align 1
  %71 = alloca i8, align 1
  %72 = alloca i16, align 2
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i8, align 1
  %77 = alloca i32, align 4
  %78 = alloca i8, align 1
  %79 = alloca i8, align 1
  %80 = alloca i8, align 1
  %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 i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca ptr, align 8
  %96 = alloca ptr, align 8
  %97 = alloca i32, align 4
  %98 = alloca ptr, align 8
  %99 = alloca i32, align 4
  %100 = alloca ptr, align 8
  %101 = alloca i32, align 4
  %102 = alloca ptr, align 8
  %103 = alloca i32, align 4
  %104 = alloca %struct.ImVector.7, align 8
  %105 = alloca ptr, align 8
  %106 = alloca i32, align 4
  %107 = alloca i8, align 1
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %111 = alloca ptr, align 8
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca %struct.ImGuiInputTextCallbackData, align 8
  %116 = alloca %struct.ImVec2, align 4
  %117 = alloca %struct.ImVec2, align 4
  %118 = alloca %struct.ImVec4, align 4
  %119 = alloca %struct.ImVec2, align 4
  %120 = alloca %struct.ImVec2, align 4
  %121 = alloca i32, align 4
  %122 = alloca ptr, align 8
  %123 = alloca ptr, align 8
  %124 = alloca ptr, align 8
  %125 = alloca %struct.ImVec2, align 4
  %126 = alloca %struct.ImVec2, align 4
  %127 = alloca [2 x ptr], align 16
  %128 = alloca [2 x i32], align 4
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca ptr, align 8
  %132 = alloca %struct.ImVec2, align 4
  %133 = alloca %struct.ImVec2, align 4
  %134 = alloca %struct.ImVec2, align 4
  %135 = alloca float, align 4
  %136 = alloca float, align 4
  %137 = alloca %struct.ImVec2, align 4
  %138 = alloca ptr, align 8
  %139 = alloca ptr, align 8
  %140 = alloca i32, align 4
  %141 = alloca float, align 4
  %142 = alloca float, align 4
  %143 = alloca %struct.ImVec2, align 4
  %144 = alloca %struct.ImVec2, align 4
  %145 = alloca ptr, align 8
  %146 = alloca %struct.ImVec2, align 4
  %147 = alloca %struct.ImRect, align 4
  %148 = alloca %struct.ImVec2, align 4
  %149 = alloca %struct.ImVec2, align 4
  %150 = alloca %struct.ImVec2, align 4
  %151 = alloca %struct.ImVec2, align 4
  %152 = alloca %struct.ImRect, align 4
  %153 = alloca %struct.ImRect, align 4
  %154 = alloca i32, align 4
  %155 = alloca %struct.ImVec2, align 4
  %156 = alloca i8, align 1
  %157 = alloca %struct.ImVec2, align 4
  %158 = alloca %struct.ImVec2, align 4
  %159 = alloca %struct.ImRect, align 4
  %160 = alloca %struct.ImRect, align 4
  %161 = alloca %struct.ImVec2, align 4
  %162 = alloca %struct.ImVec2, align 4
  %163 = alloca %struct.ImVec2, align 4
  %164 = alloca i32, align 4
  %165 = alloca %struct.ImVec2, align 4
  %166 = alloca %struct.ImVec2, align 4
  %167 = 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
  %168 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %168, ptr %18, align 8, !tbaa !5
  %169 = load ptr, ptr %18, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.ImGuiWindow, ptr %169, i32 0, i32 26
  %171 = load i8, ptr %170, align 1, !tbaa !11, !range !39, !noundef !40
  %172 = trunc i8 %171 to i1
  br i1 %172, label %173, label %174

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

174:                                              ; preds = %8
  %175 = load i32, ptr %15, align 4, !tbaa !9
  %176 = and i32 %175, 128
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %182

178:                                              ; preds = %174
  %179 = load i32, ptr %15, align 4, !tbaa !9
  %180 = and i32 %179, 1048576
  %181 = icmp ne i32 %180, 0
  br label %182

182:                                              ; preds = %178, %174
  %183 = phi i1 [ false, %174 ], [ %181, %178 ]
  %184 = xor i1 %183, true
  br i1 %184, label %185, label %186

185:                                              ; preds = %182
  br label %188

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

187:                                              ; No predecessors!
  br label %188

188:                                              ; preds = %187, %185
  %189 = load i32, ptr %15, align 4, !tbaa !9
  %190 = and i32 %189, 64
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %192, label %196

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

196:                                              ; preds = %192, %188
  %197 = phi i1 [ false, %188 ], [ %195, %192 ]
  %198 = xor i1 %197, true
  br i1 %198, label %199, label %200

199:                                              ; preds = %196
  br label %202

200:                                              ; preds = %196
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 3455, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

201:                                              ; No predecessors!
  br label %202

202:                                              ; preds = %201, %199
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #14
  %203 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %203, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #14
  %204 = load ptr, ptr %20, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.ImGuiContext, ptr %204, i32 0, i32 3
  store ptr %205, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #14
  %206 = load ptr, ptr %20, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.ImGuiContext, ptr %206, i32 0, i32 4
  store ptr %207, 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 !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #14
  %208 = load i32, ptr %15, align 4, !tbaa !9
  %209 = and i32 %208, 1048576
  %210 = icmp ne i32 %209, 0
  %211 = zext i1 %210 to i8
  store i8 %211, ptr %24, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #14
  %212 = load i32, ptr %15, align 4, !tbaa !9
  %213 = and i32 %212, 16384
  %214 = icmp ne i32 %213, 0
  %215 = zext i1 %214 to i8
  store i8 %215, ptr %25, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #14
  %216 = load i32, ptr %15, align 4, !tbaa !9
  %217 = and i32 %216, 32768
  %218 = icmp ne i32 %217, 0
  %219 = zext i1 %218 to i8
  store i8 %219, ptr %26, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #14
  %220 = load i32, ptr %15, align 4, !tbaa !9
  %221 = and i32 %220, 65536
  %222 = icmp eq i32 %221, 0
  %223 = zext i1 %222 to i8
  store i8 %223, ptr %27, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #14
  %224 = load i32, ptr %15, align 4, !tbaa !9
  %225 = and i32 %224, 262144
  %226 = icmp ne i32 %225, 0
  %227 = zext i1 %226 to i8
  store i8 %227, ptr %28, align 1, !tbaa !41
  %228 = load i8, ptr %28, align 1, !tbaa !41, !range !39, !noundef !40
  %229 = trunc i8 %228 to i1
  br i1 %229, label %230, label %237

230:                                              ; preds = %202
  %231 = load ptr, ptr %16, align 8, !tbaa !5
  %232 = icmp ne ptr %231, null
  br i1 %232, label %233, label %234

233:                                              ; preds = %230
  br label %236

234:                                              ; preds = %230
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 3468, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

235:                                              ; No predecessors!
  br label %236

236:                                              ; preds = %235, %233
  br label %237

237:                                              ; preds = %236, %202
  %238 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %239 = trunc i8 %238 to i1
  br i1 %239, label %240, label %241

240:                                              ; preds = %237
  call void @_ZN5ImGui10BeginGroupEv()
  br label %241

241:                                              ; preds = %240, %237
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #14
  %242 = load ptr, ptr %18, align 8, !tbaa !5
  %243 = load ptr, ptr %10, align 8, !tbaa !5
  %244 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(956) %242, ptr noundef %243, ptr noundef null)
  store i32 %244, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #14
  %245 = load ptr, ptr %10, align 8, !tbaa !5
  %246 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %245, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %246, ptr %30, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #14
  %247 = load ptr, ptr %14, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 4 %247, i64 8, i1 false), !tbaa.struct !42
  %248 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %249 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %250 = trunc i8 %249 to i1
  br i1 %250, label %251, label %256

251:                                              ; preds = %241
  %252 = load ptr, ptr %20, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.ImGuiContext, ptr %252, i32 0, i32 7
  %254 = load float, ptr %253, align 8, !tbaa !44
  %255 = fmul float %254, 8.000000e+00
  br label %259

256:                                              ; preds = %241
  %257 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 1
  %258 = load float, ptr %257, align 4, !tbaa !79
  br label %259

259:                                              ; preds = %256, %251
  %260 = phi float [ %255, %251 ], [ %258, %256 ]
  %261 = load ptr, ptr %22, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.ImGuiStyle, ptr %261, i32 0, i32 11
  %263 = getelementptr inbounds %struct.ImVec2, ptr %262, i32 0, i32 1
  %264 = load float, ptr %263, align 4, !tbaa !80
  %265 = call float @llvm.fmuladd.f32(float %264, float 2.000000e+00, float %260)
  %266 = load <2 x float>, ptr %32, align 4
  %267 = call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %266, float noundef %248, float noundef %265)
  store <2 x float> %267, ptr %31, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #14
  %268 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 0
  %269 = load float, ptr %268, align 4, !tbaa !81
  %270 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %271 = load float, ptr %270, align 4, !tbaa !81
  %272 = fcmp ogt float %271, 0.000000e+00
  br i1 %272, label %273, label %281

273:                                              ; preds = %259
  %274 = load ptr, ptr %22, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.ImGuiStyle, ptr %274, i32 0, i32 15
  %276 = getelementptr inbounds %struct.ImVec2, ptr %275, i32 0, i32 0
  %277 = load float, ptr %276, align 4, !tbaa !82
  %278 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %279 = load float, ptr %278, align 4, !tbaa !81
  %280 = fadd float %277, %279
  br label %282

281:                                              ; preds = %259
  br label %282

282:                                              ; preds = %281, %273
  %283 = phi float [ %280, %273 ], [ 0.000000e+00, %281 ]
  %284 = fadd float %269, %283
  %285 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %286 = load float, ptr %285, align 4, !tbaa !79
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %284, float noundef %286)
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #14
  %287 = load ptr, ptr %18, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.ImGuiWindow, ptr %287, i32 0, i32 50
  %289 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %288, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #14
  %290 = load ptr, ptr %18, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.ImGuiWindow, ptr %290, i32 0, i32 50
  %292 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %291, i32 0, i32 0
  %293 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %292, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %293, ptr %35, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %34, ptr noundef nonnull align 4 dereferenceable(8) %289, 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
  %294 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #14
  %295 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %296 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %295, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %296, ptr %37, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(8) %294, 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
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %297, 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 !42
  %298 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %299 = trunc i8 %298 to i1
  br i1 %299, label %300, label %351

300:                                              ; preds = %282
  %301 = load i32, ptr %29, align 4, !tbaa !9
  %302 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %301, ptr noundef %34)
  br i1 %302, label %308, label %303

303:                                              ; preds = %300
  %304 = load ptr, ptr %22, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.ImGuiStyle, ptr %304, i32 0, i32 11
  %306 = getelementptr inbounds %struct.ImVec2, ptr %305, i32 0, i32 1
  %307 = load float, ptr %306, align 4, !tbaa !80
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %307)
  call void @_ZN5ImGui8EndGroupEv()
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3156

308:                                              ; preds = %300
  %309 = load ptr, ptr %22, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.ImGuiStyle, ptr %309, i32 0, i32 35
  %311 = getelementptr inbounds [48 x %struct.ImVec4], ptr %310, i64 0, i64 7
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %311)
  %312 = load ptr, ptr %22, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.ImGuiStyle, ptr %312, i32 0, i32 12
  %314 = load float, ptr %313, align 4, !tbaa !83
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 6, float noundef %314)
  %315 = load ptr, ptr %22, align 8, !tbaa !5
  %316 = getelementptr inbounds %struct.ImGuiStyle, ptr %315, i32 0, i32 13
  %317 = load float, ptr %316, align 4, !tbaa !84
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %317)
  %318 = load ptr, ptr %22, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.ImGuiStyle, ptr %318, i32 0, i32 11
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %319)
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #14
  %320 = load ptr, ptr %10, align 8, !tbaa !5
  %321 = load i32, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #14
  %322 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %34)
  store <2 x float> %322, ptr %41, align 4
  %323 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %320, i32 noundef %321, 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
  %324 = zext i1 %323 to i8
  store i8 %324, ptr %40, align 1, !tbaa !41
  call void @_ZN5ImGui11PopStyleVarEi(i32 noundef 3)
  call void @_ZN5ImGui13PopStyleColorEi(i32 noundef 1)
  %325 = load i8, ptr %40, align 1, !tbaa !41, !range !39, !noundef !40
  %326 = trunc i8 %325 to i1
  br i1 %326, label %328, label %327

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

328:                                              ; preds = %308
  %329 = load ptr, ptr %20, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.ImGuiContext, ptr %329, i32 0, i32 25
  %331 = load ptr, ptr %330, align 8, !tbaa !85
  store ptr %331, ptr %38, align 8, !tbaa !5
  %332 = load ptr, ptr %38, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.ImGuiWindow, ptr %332, i32 0, i32 50
  %334 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %333, i32 0, i32 16
  %335 = load i32, ptr %334, align 8, !tbaa !86
  %336 = load ptr, ptr %38, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.ImGuiWindow, ptr %336, i32 0, i32 50
  %338 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %337, i32 0, i32 18
  %339 = load i32, ptr %338, align 8, !tbaa !87
  %340 = or i32 %339, %335
  store i32 %340, ptr %338, align 8, !tbaa !87
  %341 = load ptr, ptr %38, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiWindow, ptr %341, i32 0, i32 18
  %343 = getelementptr inbounds %struct.ImVec2, ptr %342, i32 0, i32 0
  %344 = load float, ptr %343, align 4, !tbaa !88
  %345 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %346 = load float, ptr %345, align 4, !tbaa !81
  %347 = fsub float %346, %344
  store float %347, ptr %345, align 4, !tbaa !81
  store i32 0, ptr %19, align 4
  br label %348

348:                                              ; preds = %328, %327
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #14
  %349 = load i32, ptr %19, align 4
  switch i32 %349, label %3156 [
    i32 0, label %350
  ]

350:                                              ; preds = %348
  br label %360

351:                                              ; preds = %282
  %352 = load ptr, ptr %22, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ImGuiStyle, ptr %352, i32 0, i32 11
  %354 = getelementptr inbounds %struct.ImVec2, ptr %353, i32 0, i32 1
  %355 = load float, ptr %354, align 4, !tbaa !80
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %355)
  %356 = load i32, ptr %29, align 4, !tbaa !9
  %357 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %356, ptr noundef %34)
  br i1 %357, label %359, label %358

358:                                              ; preds = %351
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3156

359:                                              ; preds = %351
  br label %360

360:                                              ; preds = %359, %350
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #14
  %361 = load i32, ptr %29, align 4, !tbaa !9
  %362 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %361)
  %363 = zext i1 %362 to i8
  store i8 %363, ptr %42, align 1, !tbaa !41
  %364 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %365 = trunc i8 %364 to i1
  br i1 %365, label %366, label %369

366:                                              ; preds = %360
  %367 = load ptr, ptr %20, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.ImGuiContext, ptr %367, i32 0, i32 129
  store i32 1, ptr %368, align 8, !tbaa !89
  br label %369

369:                                              ; preds = %366, %360
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #14
  %370 = load i32, ptr %29, align 4, !tbaa !9
  %371 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %370)
  store ptr %371, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #14
  %372 = load ptr, ptr %18, align 8, !tbaa !5
  %373 = load i32, ptr %29, align 4, !tbaa !9
  %374 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef %372, i32 noundef %373)
  %375 = zext i1 %374 to i8
  store i8 %375, ptr %44, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #14
  %376 = load i8, ptr %44, align 1, !tbaa !41, !range !39, !noundef !40
  %377 = trunc i8 %376 to i1
  br i1 %377, label %378, label %395

378:                                              ; preds = %369
  %379 = load ptr, ptr %20, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.ImGuiContext, ptr %379, i32 0, i32 115
  %381 = load ptr, ptr %380, align 8, !tbaa !90
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = icmp eq ptr %381, %382
  br i1 %383, label %384, label %393

384:                                              ; preds = %378
  %385 = load ptr, ptr %20, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.ImGuiContext, ptr %385, i32 0, i32 117
  %387 = load i32, ptr %386, align 8, !tbaa !91
  %388 = load ptr, ptr %18, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.ImGuiWindow, ptr %388, i32 0, i32 50
  %390 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %389, i32 0, i32 33
  %391 = load i32, ptr %390, align 8, !tbaa !92
  %392 = icmp eq i32 %387, %391
  br label %393

393:                                              ; preds = %384, %378
  %394 = phi i1 [ false, %378 ], [ %392, %384 ]
  br label %395

395:                                              ; preds = %393, %369
  %396 = phi i1 [ false, %369 ], [ %394, %393 ]
  %397 = zext i1 %396 to i8
  store i8 %397, ptr %45, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #14
  %398 = load i8, ptr %44, align 1, !tbaa !41, !range !39, !noundef !40
  %399 = trunc i8 %398 to i1
  br i1 %399, label %400, label %404

400:                                              ; preds = %395
  %401 = load i8, ptr %45, align 1, !tbaa !41, !range !39, !noundef !40
  %402 = trunc i8 %401 to i1
  %403 = xor i1 %402, true
  br label %404

404:                                              ; preds = %400, %395
  %405 = phi i1 [ false, %395 ], [ %403, %400 ]
  %406 = zext i1 %405 to i8
  store i8 %406, ptr %46, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #14
  %407 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %408 = trunc i8 %407 to i1
  br i1 %408, label %409, label %415

409:                                              ; preds = %404
  %410 = load ptr, ptr %21, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.ImGuiIO, ptr %410, i32 0, i32 63
  %412 = getelementptr inbounds [5 x i8], ptr %411, i64 0, i64 0
  %413 = load i8, ptr %412, align 8, !tbaa !41, !range !39, !noundef !40
  %414 = trunc i8 %413 to i1
  br label %415

415:                                              ; preds = %409, %404
  %416 = phi i1 [ false, %404 ], [ %414, %409 ]
  %417 = zext i1 %416 to i8
  store i8 %417, ptr %47, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #14
  %418 = load ptr, ptr %20, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.ImGuiContext, ptr %418, i32 0, i32 38
  %420 = load i32, ptr %419, align 8, !tbaa !93
  %421 = load i32, ptr %29, align 4, !tbaa !9
  %422 = icmp ne i32 %420, %421
  br i1 %422, label %423, label %444

423:                                              ; preds = %415
  %424 = load ptr, ptr %20, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.ImGuiContext, ptr %424, i32 0, i32 76
  %426 = load i32, ptr %425, align 4, !tbaa !94
  %427 = load i32, ptr %29, align 4, !tbaa !9
  %428 = icmp eq i32 %426, %427
  br i1 %428, label %442, label %429

429:                                              ; preds = %423
  %430 = load ptr, ptr %20, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.ImGuiContext, ptr %430, i32 0, i32 73
  %432 = load i32, ptr %431, align 8, !tbaa !95
  %433 = load i32, ptr %29, align 4, !tbaa !9
  %434 = icmp eq i32 %432, %433
  br i1 %434, label %435, label %440

435:                                              ; preds = %429
  %436 = load ptr, ptr %20, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.ImGuiContext, ptr %436, i32 0, i32 81
  %438 = load i32, ptr %437, align 8, !tbaa !96
  %439 = icmp eq i32 %438, 3
  br label %440

440:                                              ; preds = %435, %429
  %441 = phi i1 [ false, %429 ], [ %439, %435 ]
  br label %442

442:                                              ; preds = %440, %423
  %443 = phi i1 [ true, %423 ], [ %441, %440 ]
  br label %444

444:                                              ; preds = %442, %415
  %445 = phi i1 [ false, %415 ], [ %443, %442 ]
  %446 = zext i1 %445 to i8
  store i8 %446, ptr %48, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #14
  %447 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %448 = trunc i8 %447 to i1
  br i1 %448, label %449, label %464

449:                                              ; preds = %444
  %450 = load ptr, ptr %43, align 8, !tbaa !5
  %451 = icmp ne ptr %450, null
  br i1 %451, label %452, label %464

452:                                              ; preds = %449
  %453 = load ptr, ptr %20, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.ImGuiContext, ptr %453, i32 0, i32 38
  %455 = load i32, ptr %454, align 8, !tbaa !93
  %456 = icmp eq i32 %455, 0
  br i1 %456, label %457, label %464

457:                                              ; preds = %452
  %458 = load ptr, ptr %20, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ImGuiContext, ptr %458, i32 0, i32 55
  %460 = load i32, ptr %459, align 8, !tbaa !97
  %461 = load ptr, ptr %38, align 8, !tbaa !5
  %462 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %461, i32 noundef 1)
  %463 = icmp eq i32 %460, %462
  br label %464

464:                                              ; preds = %457, %452, %449, %444
  %465 = phi i1 [ false, %452 ], [ false, %449 ], [ false, %444 ], [ %463, %457 ]
  %466 = zext i1 %465 to i8
  store i8 %466, ptr %49, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #14
  %467 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %468 = trunc i8 %467 to i1
  br i1 %468, label %469, label %479

469:                                              ; preds = %464
  %470 = load ptr, ptr %43, align 8, !tbaa !5
  %471 = icmp ne ptr %470, null
  br i1 %471, label %472, label %479

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

479:                                              ; preds = %472, %469, %464
  %480 = phi i1 [ false, %469 ], [ false, %464 ], [ %478, %472 ]
  %481 = zext i1 %480 to i8
  store i8 %481, ptr %50, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #14
  store i8 0, ptr %51, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #14
  %482 = load ptr, ptr %20, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.ImGuiContext, ptr %482, i32 0, i32 38
  %484 = load i32, ptr %483, align 8, !tbaa !93
  %485 = load i32, ptr %29, align 4, !tbaa !9
  %486 = icmp ne i32 %484, %485
  br i1 %486, label %487, label %498

487:                                              ; preds = %479
  %488 = load i32, ptr %15, align 4, !tbaa !9
  %489 = and i32 %488, 16
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %494, label %491

491:                                              ; preds = %487
  %492 = load i8, ptr %48, align 1, !tbaa !41, !range !39, !noundef !40
  %493 = trunc i8 %492 to i1
  br i1 %493, label %494, label %498

494:                                              ; preds = %491, %487
  %495 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %496 = trunc i8 %495 to i1
  %497 = xor i1 %496, true
  br label %498

498:                                              ; preds = %494, %491, %479
  %499 = phi i1 [ false, %491 ], [ false, %479 ], [ %497, %494 ]
  %500 = zext i1 %499 to i8
  store i8 %500, ptr %52, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #14
  %501 = load i8, ptr %44, align 1, !tbaa !41, !range !39, !noundef !40
  %502 = trunc i8 %501 to i1
  br i1 %502, label %512, label %503

503:                                              ; preds = %498
  %504 = load i8, ptr %47, align 1, !tbaa !41, !range !39, !noundef !40
  %505 = trunc i8 %504 to i1
  br i1 %505, label %512, label %506

506:                                              ; preds = %503
  %507 = load i8, ptr %49, align 1, !tbaa !41, !range !39, !noundef !40
  %508 = trunc i8 %507 to i1
  br i1 %508, label %512, label %509

509:                                              ; preds = %506
  %510 = load i8, ptr %48, align 1, !tbaa !41, !range !39, !noundef !40
  %511 = trunc i8 %510 to i1
  br label %512

512:                                              ; preds = %509, %506, %503, %498
  %513 = phi i1 [ true, %506 ], [ true, %503 ], [ true, %498 ], [ %511, %509 ]
  %514 = zext i1 %513 to i8
  store i8 %514, ptr %53, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #14
  %515 = load i8, ptr %53, align 1, !tbaa !41, !range !39, !noundef !40
  %516 = trunc i8 %515 to i1
  br i1 %516, label %520, label %517

517:                                              ; preds = %512
  %518 = load i8, ptr %50, align 1, !tbaa !41, !range !39, !noundef !40
  %519 = trunc i8 %518 to i1
  br label %520

520:                                              ; preds = %517, %512
  %521 = phi i1 [ true, %512 ], [ %519, %517 ]
  %522 = zext i1 %521 to i8
  store i8 %522, ptr %54, align 1, !tbaa !41
  %523 = load i8, ptr %54, align 1, !tbaa !41, !range !39, !noundef !40
  %524 = trunc i8 %523 to i1
  br i1 %524, label %525, label %628

525:                                              ; preds = %520
  %526 = load ptr, ptr %20, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.ImGuiContext, ptr %526, i32 0, i32 38
  %528 = load i32, ptr %527, align 8, !tbaa !93
  %529 = load i32, ptr %29, align 4, !tbaa !9
  %530 = icmp ne i32 %528, %529
  br i1 %530, label %531, label %628

531:                                              ; preds = %525
  %532 = load ptr, ptr %20, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.ImGuiContext, ptr %532, i32 0, i32 152
  store ptr %533, ptr %43, align 8, !tbaa !5
  %534 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %534)
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #14
  %535 = load ptr, ptr %12, align 8, !tbaa !5
  %536 = call i64 @strlen(ptr noundef %535) #16
  %537 = trunc i64 %536 to i32
  store i32 %537, ptr %55, align 4, !tbaa !9
  %538 = load ptr, ptr %43, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %538, i32 0, i32 5
  %540 = load i32, ptr %55, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %539, i32 noundef %541)
  %542 = load ptr, ptr %43, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %542, i32 0, i32 5
  %544 = getelementptr inbounds %struct.ImVector.22, ptr %543, i32 0, i32 2
  %545 = load ptr, ptr %544, align 8, !tbaa !98
  %546 = load ptr, ptr %12, align 8, !tbaa !5
  %547 = load i32, ptr %55, align 4, !tbaa !9
  %548 = add nsw i32 %547, 1
  %549 = sext i32 %548 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %545, ptr align 1 %546, i64 %549, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #14
  store ptr null, ptr %56, align 8, !tbaa !5
  %550 = load ptr, ptr %43, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %550, i32 0, i32 3
  %552 = load i32, ptr %13, align 4, !tbaa !9
  %553 = add nsw i32 %552, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %551, i32 noundef %553)
  %554 = load ptr, ptr %43, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %554, i32 0, i32 4
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %555, i32 noundef 0)
  %556 = load ptr, ptr %43, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %556, i32 0, i32 6
  store i8 0, ptr %557, align 8, !tbaa !99
  %558 = load ptr, ptr %43, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %558, i32 0, i32 3
  %560 = getelementptr inbounds %struct.ImVector.7, ptr %559, i32 0, i32 2
  %561 = load ptr, ptr %560, align 8, !tbaa !100
  %562 = load i32, ptr %13, align 4, !tbaa !9
  %563 = load ptr, ptr %12, align 8, !tbaa !5
  %564 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %561, i32 noundef %562, ptr noundef %563, ptr noundef null, ptr noundef %56)
  %565 = load ptr, ptr %43, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %565, i32 0, i32 1
  store i32 %564, ptr %566, align 4, !tbaa !101
  %567 = load ptr, ptr %56, align 8, !tbaa !5
  %568 = load ptr, ptr %12, align 8, !tbaa !5
  %569 = ptrtoint ptr %567 to i64
  %570 = ptrtoint ptr %568 to i64
  %571 = sub i64 %569, %570
  %572 = trunc i64 %571 to i32
  %573 = load ptr, ptr %43, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %573, i32 0, i32 2
  store i32 %572, ptr %574, align 8, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #14
  %575 = load ptr, ptr %43, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %575, i32 0, i32 0
  %577 = load i32, ptr %576, align 8, !tbaa !103
  %578 = load i32, ptr %29, align 4, !tbaa !9
  %579 = icmp eq i32 %577, %578
  %580 = zext i1 %579 to i8
  store i8 %580, ptr %57, align 1, !tbaa !41
  %581 = load i8, ptr %57, align 1, !tbaa !41, !range !39, !noundef !40
  %582 = trunc i8 %581 to i1
  br i1 %582, label %583, label %585

583:                                              ; preds = %531
  %584 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %584)
  br label %604

585:                                              ; preds = %531
  %586 = load i32, ptr %29, align 4, !tbaa !9
  %587 = load ptr, ptr %43, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %587, i32 0, i32 0
  store i32 %586, ptr %588, align 8, !tbaa !103
  %589 = load ptr, ptr %43, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %589, i32 0, i32 8
  store float 0.000000e+00, ptr %590, align 8, !tbaa !104
  %591 = load ptr, ptr %43, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %591, i32 0, i32 9
  %593 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %594 = trunc i8 %593 to i1
  %595 = xor i1 %594, true
  %596 = zext i1 %595 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %592, i32 noundef %596)
  %597 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %598 = trunc i8 %597 to i1
  br i1 %598, label %603, label %599

599:                                              ; preds = %585
  %600 = load i8, ptr %45, align 1, !tbaa !41, !range !39, !noundef !40
  %601 = trunc i8 %600 to i1
  br i1 %601, label %602, label %603

602:                                              ; preds = %599
  store i8 1, ptr %52, align 1, !tbaa !41
  br label %603

603:                                              ; preds = %602, %599, %585
  br label %604

604:                                              ; preds = %603, %583
  %605 = load i32, ptr %15, align 4, !tbaa !9
  %606 = and i32 %605, 8192
  %607 = icmp ne i32 %606, 0
  br i1 %607, label %608, label %612

608:                                              ; preds = %604
  %609 = load ptr, ptr %43, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %609, i32 0, i32 9
  %611 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %610, i32 0, i32 3
  store i8 1, ptr %611, align 4, !tbaa !105
  br label %612

612:                                              ; preds = %608, %604
  %613 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %614 = trunc i8 %613 to i1
  br i1 %614, label %627, label %615

615:                                              ; preds = %612
  %616 = load i8, ptr %46, align 1, !tbaa !41, !range !39, !noundef !40
  %617 = trunc i8 %616 to i1
  br i1 %617, label %626, label %618

618:                                              ; preds = %615
  %619 = load i8, ptr %47, align 1, !tbaa !41, !range !39, !noundef !40
  %620 = trunc i8 %619 to i1
  br i1 %620, label %621, label %627

621:                                              ; preds = %618
  %622 = load ptr, ptr %21, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ImGuiIO, ptr %622, i32 0, i32 40
  %624 = load i8, ptr %623, align 8, !tbaa !106, !range !39, !noundef !40
  %625 = trunc i8 %624 to i1
  br i1 %625, label %626, label %627

626:                                              ; preds = %621, %615
  store i8 1, ptr %52, align 1, !tbaa !41
  br label %627

627:                                              ; preds = %626, %621, %618, %612
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #14
  br label %628

628:                                              ; preds = %627, %525, %520
  %629 = load ptr, ptr %20, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.ImGuiContext, ptr %629, i32 0, i32 38
  %631 = load i32, ptr %630, align 8, !tbaa !93
  %632 = load i32, ptr %29, align 4, !tbaa !9
  %633 = icmp ne i32 %631, %632
  br i1 %633, label %634, label %698

634:                                              ; preds = %628
  %635 = load i8, ptr %53, align 1, !tbaa !41, !range !39, !noundef !40
  %636 = trunc i8 %635 to i1
  br i1 %636, label %637, label %698

637:                                              ; preds = %634
  %638 = load ptr, ptr %43, align 8, !tbaa !5
  %639 = icmp ne ptr %638, null
  br i1 %639, label %640, label %646

640:                                              ; preds = %637
  %641 = load ptr, ptr %43, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %641, i32 0, i32 0
  %643 = load i32, ptr %642, align 8, !tbaa !103
  %644 = load i32, ptr %29, align 4, !tbaa !9
  %645 = icmp eq i32 %643, %644
  br label %646

646:                                              ; preds = %640, %637
  %647 = phi i1 [ false, %637 ], [ %645, %640 ]
  br i1 %647, label %648, label %649

648:                                              ; preds = %646
  br label %651

649:                                              ; preds = %646
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 3581, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

650:                                              ; No predecessors!
  br label %651

651:                                              ; preds = %650, %648
  %652 = load i32, ptr %29, align 4, !tbaa !9
  %653 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %652, ptr noundef %653)
  %654 = load i32, ptr %29, align 4, !tbaa !9
  %655 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %654, ptr noundef %655)
  %656 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %656)
  %657 = load ptr, ptr %20, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.ImGuiContext, ptr %657, i32 0, i32 47
  %659 = load i32, ptr %658, align 4, !tbaa !107
  %660 = or i32 %659, 3
  store i32 %660, ptr %658, align 4, !tbaa !107
  %661 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %662 = trunc i8 %661 to i1
  br i1 %662, label %667, label %663

663:                                              ; preds = %651
  %664 = load i32, ptr %15, align 4, !tbaa !9
  %665 = and i32 %664, 128
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %672

667:                                              ; preds = %663, %651
  %668 = load ptr, ptr %20, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.ImGuiContext, ptr %668, i32 0, i32 47
  %670 = load i32, ptr %669, align 4, !tbaa !107
  %671 = or i32 %670, 12
  store i32 %671, ptr %669, align 4, !tbaa !107
  br label %672

672:                                              ; preds = %667, %663
  %673 = load ptr, ptr %20, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.ImGuiContext, ptr %673, i32 0, i32 48
  %675 = load i32, ptr %674, align 8, !tbaa !108
  %676 = or i32 %675, 2
  store i32 %676, ptr %674, align 8, !tbaa !108
  %677 = load ptr, ptr %20, align 8, !tbaa !5
  %678 = getelementptr inbounds %struct.ImGuiContext, ptr %677, i32 0, i32 50
  %679 = load i64, ptr %678, align 8, !tbaa !109
  %680 = or i64 %679, 384
  store i64 %680, ptr %678, align 8, !tbaa !109
  %681 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %682 = trunc i8 %681 to i1
  br i1 %682, label %683, label %688

683:                                              ; preds = %672
  %684 = load ptr, ptr %20, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.ImGuiContext, ptr %684, i32 0, i32 50
  %686 = load i64, ptr %685, align 8, !tbaa !109
  %687 = or i64 %686, 96
  store i64 %687, ptr %685, align 8, !tbaa !109
  br label %688

688:                                              ; preds = %683, %672
  %689 = load i32, ptr %15, align 4, !tbaa !9
  %690 = and i32 %689, 1088
  %691 = icmp ne i32 %690, 0
  br i1 %691, label %692, label %697

692:                                              ; preds = %688
  %693 = load ptr, ptr %20, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.ImGuiContext, ptr %693, i32 0, i32 50
  %695 = load i64, ptr %694, align 8, !tbaa !109
  %696 = or i64 %695, 1
  store i64 %696, ptr %694, align 8, !tbaa !109
  br label %697

697:                                              ; preds = %692, %688
  br label %698

698:                                              ; preds = %697, %634, %628
  %699 = load ptr, ptr %20, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.ImGuiContext, ptr %699, i32 0, i32 38
  %701 = load i32, ptr %700, align 8, !tbaa !93
  %702 = load i32, ptr %29, align 4, !tbaa !9
  %703 = icmp eq i32 %701, %702
  br i1 %703, label %704, label %708

704:                                              ; preds = %698
  %705 = load ptr, ptr %43, align 8, !tbaa !5
  %706 = icmp eq ptr %705, null
  br i1 %706, label %707, label %708

707:                                              ; preds = %704
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %708

708:                                              ; preds = %707, %704, %698
  %709 = load ptr, ptr %20, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.ImGuiContext, ptr %709, i32 0, i32 38
  %711 = load i32, ptr %710, align 8, !tbaa !93
  %712 = load i32, ptr %29, align 4, !tbaa !9
  %713 = icmp eq i32 %711, %712
  br i1 %713, label %714, label %727

714:                                              ; preds = %708
  %715 = load ptr, ptr %21, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.ImGuiIO, ptr %715, i32 0, i32 63
  %717 = getelementptr inbounds [5 x i8], ptr %716, i64 0, i64 0
  %718 = load i8, ptr %717, align 8, !tbaa !41, !range !39, !noundef !40
  %719 = trunc i8 %718 to i1
  br i1 %719, label %720, label %727

720:                                              ; preds = %714
  %721 = load i8, ptr %54, align 1, !tbaa !41, !range !39, !noundef !40
  %722 = trunc i8 %721 to i1
  br i1 %722, label %727, label %723

723:                                              ; preds = %720
  %724 = load i8, ptr %53, align 1, !tbaa !41, !range !39, !noundef !40
  %725 = trunc i8 %724 to i1
  br i1 %725, label %727, label %726

726:                                              ; preds = %723
  store i8 1, ptr %51, align 1, !tbaa !41
  br label %727

727:                                              ; preds = %726, %723, %720, %714, %708
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #14
  %728 = load ptr, ptr %20, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.ImGuiContext, ptr %728, i32 0, i32 38
  %730 = load i32, ptr %729, align 8, !tbaa !93
  %731 = load i32, ptr %29, align 4, !tbaa !9
  %732 = icmp eq i32 %730, %731
  br i1 %732, label %741, label %733

733:                                              ; preds = %727
  %734 = load ptr, ptr %43, align 8, !tbaa !5
  %735 = icmp ne ptr %734, null
  br i1 %735, label %736, label %739

736:                                              ; preds = %733
  %737 = load i8, ptr %50, align 1, !tbaa !41, !range !39, !noundef !40
  %738 = trunc i8 %737 to i1
  br label %739

739:                                              ; preds = %736, %733
  %740 = phi i1 [ false, %733 ], [ %738, %736 ]
  br label %741

741:                                              ; preds = %739, %727
  %742 = phi i1 [ true, %727 ], [ %740, %739 ]
  %743 = zext i1 %742 to i8
  store i8 %743, ptr %58, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #14
  %744 = load ptr, ptr %43, align 8, !tbaa !5
  %745 = icmp ne ptr %744, null
  br i1 %745, label %746, label %752

746:                                              ; preds = %741
  %747 = load ptr, ptr %43, align 8, !tbaa !5
  %748 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %747)
  br i1 %748, label %749, label %752

749:                                              ; preds = %746
  %750 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %751 = trunc i8 %750 to i1
  br label %752

752:                                              ; preds = %749, %746, %741
  %753 = phi i1 [ false, %746 ], [ false, %741 ], [ %751, %749 ]
  %754 = zext i1 %753 to i8
  store i8 %754, ptr %59, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #14
  store i8 0, ptr %60, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #14
  store i8 0, ptr %61, align 1, !tbaa !41
  %755 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %756 = trunc i8 %755 to i1
  br i1 %756, label %757, label %801

757:                                              ; preds = %752
  %758 = load ptr, ptr %43, align 8, !tbaa !5
  %759 = icmp ne ptr %758, null
  br i1 %759, label %760, label %801

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

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

766:                                              ; preds = %763, %760
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #14
  store ptr null, ptr %62, align 8, !tbaa !5
  %767 = load ptr, ptr %43, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %767, i32 0, i32 3
  %769 = load i32, ptr %13, align 4, !tbaa !9
  %770 = add nsw i32 %769, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %768, i32 noundef %770)
  %771 = load ptr, ptr %43, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %771, i32 0, i32 3
  %773 = getelementptr inbounds %struct.ImVector.7, ptr %772, i32 0, i32 2
  %774 = load ptr, ptr %773, align 8, !tbaa !100
  %775 = load ptr, ptr %43, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %775, i32 0, i32 3
  %777 = getelementptr inbounds %struct.ImVector.7, ptr %776, i32 0, i32 0
  %778 = load i32, ptr %777, align 8, !tbaa !110
  %779 = load ptr, ptr %12, align 8, !tbaa !5
  %780 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %774, i32 noundef %778, ptr noundef %779, ptr noundef null, ptr noundef %62)
  %781 = load ptr, ptr %43, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %781, i32 0, i32 1
  store i32 %780, ptr %782, align 4, !tbaa !101
  %783 = load ptr, ptr %62, align 8, !tbaa !5
  %784 = load ptr, ptr %12, align 8, !tbaa !5
  %785 = ptrtoint ptr %783 to i64
  %786 = ptrtoint ptr %784 to i64
  %787 = sub i64 %785, %786
  %788 = trunc i64 %787 to i32
  %789 = load ptr, ptr %43, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %789, i32 0, i32 2
  store i32 %788, ptr %790, align 8, !tbaa !102
  %791 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %791)
  %792 = load ptr, ptr %43, align 8, !tbaa !5
  %793 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %792)
  %794 = zext i1 %793 to i32
  %795 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %796 = trunc i8 %795 to i1
  %797 = zext i1 %796 to i32
  %798 = and i32 %797, %794
  %799 = icmp ne i32 %798, 0
  %800 = zext i1 %799 to i8
  store i8 %800, ptr %59, align 1, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #14
  br label %801

801:                                              ; preds = %766, %763, %757, %752
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %802 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %803 = trunc i8 %802 to i1
  br i1 %803, label %813, label %804

804:                                              ; preds = %801
  %805 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %806 = trunc i8 %805 to i1
  br i1 %806, label %813, label %807

807:                                              ; preds = %804
  %808 = load ptr, ptr %20, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.ImGuiContext, ptr %808, i32 0, i32 38
  %810 = load i32, ptr %809, align 8, !tbaa !93
  %811 = load i32, ptr %29, align 4, !tbaa !9
  %812 = icmp eq i32 %810, %811
  br i1 %812, label %813, label %824

813:                                              ; preds = %807, %804, %801
  %814 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %815 = trunc i8 %814 to i1
  br i1 %815, label %824, label %816

816:                                              ; preds = %813
  %817 = load ptr, ptr %43, align 8, !tbaa !5
  %818 = icmp ne ptr %817, null
  br i1 %818, label %819, label %824

819:                                              ; preds = %816
  %820 = load ptr, ptr %43, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %820, i32 0, i32 6
  %822 = load i8, ptr %821, align 8, !tbaa !99, !range !39, !noundef !40
  %823 = trunc i8 %822 to i1
  br label %824

824:                                              ; preds = %819, %816, %813, %807
  %825 = phi i1 [ false, %816 ], [ false, %813 ], [ false, %807 ], [ %823, %819 ]
  %826 = zext i1 %825 to i8
  store i8 %826, ptr %63, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #14
  %827 = load ptr, ptr %11, align 8, !tbaa !5
  %828 = icmp ne ptr %827, null
  br i1 %828, label %829, label %845

829:                                              ; preds = %824
  %830 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %831 = trunc i8 %830 to i1
  br i1 %831, label %832, label %837

832:                                              ; preds = %829
  %833 = load ptr, ptr %43, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %833, i32 0, i32 4
  %835 = getelementptr inbounds %struct.ImVector.22, ptr %834, i32 0, i32 2
  %836 = load ptr, ptr %835, align 8, !tbaa !111
  br label %839

837:                                              ; preds = %829
  %838 = load ptr, ptr %12, align 8, !tbaa !5
  br label %839

839:                                              ; preds = %837, %832
  %840 = phi ptr [ %836, %832 ], [ %838, %837 ]
  %841 = getelementptr inbounds i8, ptr %840, i64 0
  %842 = load i8, ptr %841, align 1, !tbaa !112
  %843 = sext i8 %842 to i32
  %844 = icmp eq i32 %843, 0
  br label %845

845:                                              ; preds = %839, %824
  %846 = phi i1 [ false, %824 ], [ %844, %839 ]
  %847 = zext i1 %846 to i8
  store i8 %847, ptr %64, align 1, !tbaa !41
  %848 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %849 = trunc i8 %848 to i1
  br i1 %849, label %850, label %927

850:                                              ; preds = %845
  %851 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %852 = trunc i8 %851 to i1
  br i1 %852, label %927, label %853

853:                                              ; preds = %850
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #14
  %854 = load ptr, ptr %20, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.ImGuiContext, ptr %854, i32 0, i32 6
  %856 = load ptr, ptr %855, align 8, !tbaa !113
  %857 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114) %856, i16 noundef zeroext 42)
  store ptr %857, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #14
  %858 = load ptr, ptr %20, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.ImGuiContext, ptr %858, i32 0, i32 153
  store ptr %859, ptr %66, align 8, !tbaa !5
  %860 = load ptr, ptr %20, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.ImGuiContext, ptr %860, i32 0, i32 6
  %862 = load ptr, ptr %861, align 8, !tbaa !113
  %863 = getelementptr inbounds %struct.ImFont, ptr %862, i32 0, i32 2
  %864 = load float, ptr %863, align 4, !tbaa !114
  %865 = load ptr, ptr %66, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.ImFont, ptr %865, i32 0, i32 2
  store float %864, ptr %866, align 4, !tbaa !114
  %867 = load ptr, ptr %20, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.ImGuiContext, ptr %867, i32 0, i32 6
  %869 = load ptr, ptr %868, align 8, !tbaa !113
  %870 = getelementptr inbounds %struct.ImFont, ptr %869, i32 0, i32 14
  %871 = load float, ptr %870, align 8, !tbaa !115
  %872 = load ptr, ptr %66, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.ImFont, ptr %872, i32 0, i32 14
  store float %871, ptr %873, align 8, !tbaa !115
  %874 = load ptr, ptr %20, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.ImGuiContext, ptr %874, i32 0, i32 6
  %876 = load ptr, ptr %875, align 8, !tbaa !113
  %877 = getelementptr inbounds %struct.ImFont, ptr %876, i32 0, i32 6
  %878 = load ptr, ptr %66, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.ImFont, ptr %878, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %879, ptr align 8 %877, i64 8, i1 false), !tbaa.struct !42
  %880 = load ptr, ptr %20, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.ImGuiContext, ptr %880, i32 0, i32 6
  %882 = load ptr, ptr %881, align 8, !tbaa !113
  %883 = getelementptr inbounds %struct.ImFont, ptr %882, i32 0, i32 15
  %884 = load float, ptr %883, align 4, !tbaa !116
  %885 = load ptr, ptr %66, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.ImFont, ptr %885, i32 0, i32 15
  store float %884, ptr %886, align 4, !tbaa !116
  %887 = load ptr, ptr %20, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.ImGuiContext, ptr %887, i32 0, i32 6
  %889 = load ptr, ptr %888, align 8, !tbaa !113
  %890 = getelementptr inbounds %struct.ImFont, ptr %889, i32 0, i32 16
  %891 = load float, ptr %890, align 8, !tbaa !117
  %892 = load ptr, ptr %66, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.ImFont, ptr %892, i32 0, i32 16
  store float %891, ptr %893, align 8, !tbaa !117
  %894 = load ptr, ptr %20, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImGuiContext, ptr %894, i32 0, i32 6
  %896 = load ptr, ptr %895, align 8, !tbaa !113
  %897 = getelementptr inbounds %struct.ImFont, ptr %896, i32 0, i32 7
  %898 = load ptr, ptr %897, align 8, !tbaa !118
  %899 = load ptr, ptr %66, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.ImFont, ptr %899, i32 0, i32 7
  store ptr %898, ptr %900, align 8, !tbaa !118
  %901 = load ptr, ptr %65, align 8, !tbaa !5
  %902 = load ptr, ptr %66, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.ImFont, ptr %902, i32 0, i32 5
  store ptr %901, ptr %903, align 8, !tbaa !119
  %904 = load ptr, ptr %65, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.ImFontGlyph, ptr %904, i32 0, i32 1
  %906 = load float, ptr %905, align 4, !tbaa !120
  %907 = load ptr, ptr %66, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.ImFont, ptr %907, i32 0, i32 1
  store float %906, ptr %908, align 8, !tbaa !122
  %909 = load ptr, ptr %66, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.ImFont, ptr %909, i32 0, i32 4
  %911 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %910)
  br i1 %911, label %912, label %920

912:                                              ; preds = %853
  %913 = load ptr, ptr %66, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.ImFont, ptr %913, i32 0, i32 0
  %915 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %914)
  br i1 %915, label %916, label %920

916:                                              ; preds = %912
  %917 = load ptr, ptr %66, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct.ImFont, ptr %917, i32 0, i32 3
  %919 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %918)
  br label %920

920:                                              ; preds = %916, %912, %853
  %921 = phi i1 [ false, %912 ], [ false, %853 ], [ %919, %916 ]
  br i1 %921, label %922, label %923

922:                                              ; preds = %920
  br label %925

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

924:                                              ; No predecessors!
  br label %925

925:                                              ; preds = %924, %922
  %926 = load ptr, ptr %66, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %926)
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #14
  br label %927

927:                                              ; preds = %925, %850, %845
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #14
  store i32 0, ptr %67, align 4, !tbaa !9
  %928 = load ptr, ptr %20, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.ImGuiContext, ptr %928, i32 0, i32 38
  %930 = load i32, ptr %929, align 8, !tbaa !93
  %931 = load i32, ptr %29, align 4, !tbaa !9
  %932 = icmp eq i32 %930, %931
  br i1 %932, label %933, label %1230

933:                                              ; preds = %927
  %934 = load ptr, ptr %43, align 8, !tbaa !5
  %935 = icmp ne ptr %934, null
  br i1 %935, label %936, label %937

936:                                              ; preds = %933
  br label %939

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

938:                                              ; No predecessors!
  br label %939

939:                                              ; preds = %938, %936
  %940 = load ptr, ptr %43, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %940, i32 0, i32 2
  %942 = load i32, ptr %941, align 8, !tbaa !102
  store i32 %942, ptr %67, align 4, !tbaa !9
  %943 = load i32, ptr %13, align 4, !tbaa !9
  %944 = load ptr, ptr %43, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %944, i32 0, i32 7
  store i32 %943, ptr %945, align 4, !tbaa !123
  %946 = load i32, ptr %15, align 4, !tbaa !9
  %947 = load ptr, ptr %43, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %947, i32 0, i32 13
  store i32 %946, ptr %948, align 8, !tbaa !124
  %949 = load ptr, ptr %16, align 8, !tbaa !5
  %950 = load ptr, ptr %43, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %950, i32 0, i32 14
  store ptr %949, ptr %951, align 8, !tbaa !125
  %952 = load ptr, ptr %17, align 8, !tbaa !5
  %953 = load ptr, ptr %43, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %953, i32 0, i32 15
  store ptr %952, ptr %954, align 8, !tbaa !126
  %955 = load ptr, ptr %21, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.ImGuiIO, ptr %955, i32 0, i32 37
  %957 = getelementptr inbounds [5 x i8], ptr %956, i64 0, i64 0
  %958 = load i8, ptr %957, align 8, !tbaa !41, !range !39, !noundef !40
  %959 = trunc i8 %958 to i1
  %960 = xor i1 %959, true
  %961 = load ptr, ptr %20, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.ImGuiContext, ptr %961, i32 0, i32 42
  %963 = zext i1 %960 to i8
  store i8 %963, ptr %962, align 1, !tbaa !127
  %964 = load ptr, ptr %20, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.ImGuiContext, ptr %964, i32 0, i32 195
  store i32 1, ptr %965, align 4, !tbaa !128
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #14
  %966 = load ptr, ptr %21, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImGuiIO, ptr %966, i32 0, i32 36
  %968 = getelementptr inbounds %struct.ImVec2, ptr %967, i32 0, i32 0
  %969 = load float, ptr %968, align 8, !tbaa !129
  %970 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %971 = getelementptr inbounds %struct.ImVec2, ptr %970, i32 0, i32 0
  %972 = load float, ptr %971, align 4, !tbaa !130
  %973 = fsub float %969, %972
  %974 = load ptr, ptr %22, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.ImGuiStyle, ptr %974, i32 0, i32 11
  %976 = getelementptr inbounds %struct.ImVec2, ptr %975, i32 0, i32 0
  %977 = load float, ptr %976, align 4, !tbaa !131
  %978 = fsub float %973, %977
  %979 = load ptr, ptr %43, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %979, i32 0, i32 8
  %981 = load float, ptr %980, align 8, !tbaa !104
  %982 = fadd float %978, %981
  store float %982, ptr %68, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #14
  %983 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %984 = trunc i8 %983 to i1
  br i1 %984, label %985, label %1001

985:                                              ; preds = %939
  %986 = load ptr, ptr %21, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImGuiIO, ptr %986, i32 0, i32 36
  %988 = getelementptr inbounds %struct.ImVec2, ptr %987, i32 0, i32 1
  %989 = load float, ptr %988, align 4, !tbaa !132
  %990 = load ptr, ptr %38, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.ImGuiWindow, ptr %990, i32 0, i32 50
  %992 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %991, i32 0, i32 0
  %993 = getelementptr inbounds %struct.ImVec2, ptr %992, i32 0, i32 1
  %994 = load float, ptr %993, align 4, !tbaa !133
  %995 = fsub float %989, %994
  %996 = load ptr, ptr %22, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.ImGuiStyle, ptr %996, i32 0, i32 11
  %998 = getelementptr inbounds %struct.ImVec2, ptr %997, i32 0, i32 1
  %999 = load float, ptr %998, align 4, !tbaa !80
  %1000 = fsub float %995, %999
  br label %1006

1001:                                             ; preds = %939
  %1002 = load ptr, ptr %20, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.ImGuiContext, ptr %1002, i32 0, i32 7
  %1004 = load float, ptr %1003, align 8, !tbaa !44
  %1005 = fmul float %1004, 5.000000e-01
  br label %1006

1006:                                             ; preds = %1001, %985
  %1007 = phi float [ %1000, %985 ], [ %1005, %1001 ]
  store float %1007, ptr %69, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #14
  %1008 = load ptr, ptr %21, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.ImGuiIO, ptr %1008, i32 0, i32 20
  %1010 = load i8, ptr %1009, align 1, !tbaa !134, !range !39, !noundef !40
  %1011 = trunc i8 %1010 to i1
  %1012 = zext i1 %1011 to i8
  store i8 %1012, ptr %70, align 1, !tbaa !41
  %1013 = load i8, ptr %52, align 1, !tbaa !41, !range !39, !noundef !40
  %1014 = trunc i8 %1013 to i1
  br i1 %1014, label %1027, label %1015

1015:                                             ; preds = %1006
  %1016 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %1017 = trunc i8 %1016 to i1
  br i1 %1017, label %1018, label %1031

1018:                                             ; preds = %1015
  %1019 = load i8, ptr %70, align 1, !tbaa !41, !range !39, !noundef !40
  %1020 = trunc i8 %1019 to i1
  br i1 %1020, label %1031, label %1021

1021:                                             ; preds = %1018
  %1022 = load ptr, ptr %21, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.ImGuiIO, ptr %1022, i32 0, i32 64
  %1024 = getelementptr inbounds [5 x i8], ptr %1023, i64 0, i64 0
  %1025 = load i8, ptr %1024, align 1, !tbaa !41, !range !39, !noundef !40
  %1026 = trunc i8 %1025 to i1
  br i1 %1026, label %1027, label %1031

1027:                                             ; preds = %1021, %1006
  %1028 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1028)
  %1029 = load ptr, ptr %43, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1029, i32 0, i32 12
  store i8 1, ptr %1030, align 1, !tbaa !135
  br label %1103

1031:                                             ; preds = %1021, %1018, %1015
  %1032 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %1033 = trunc i8 %1032 to i1
  br i1 %1033, label %1034, label %1046

1034:                                             ; preds = %1031
  %1035 = load i8, ptr %70, align 1, !tbaa !41, !range !39, !noundef !40
  %1036 = trunc i8 %1035 to i1
  br i1 %1036, label %1037, label %1046

1037:                                             ; preds = %1034
  %1038 = load ptr, ptr %21, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.ImGuiIO, ptr %1038, i32 0, i32 64
  %1040 = getelementptr inbounds [5 x i8], ptr %1039, i64 0, i64 0
  %1041 = load i8, ptr %1040, align 1, !tbaa !41, !range !39, !noundef !40
  %1042 = trunc i8 %1041 to i1
  br i1 %1042, label %1043, label %1046

1043:                                             ; preds = %1037
  %1044 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1044, i32 noundef 2097164)
  %1045 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1045, i32 noundef 6291469)
  br label %1102

1046:                                             ; preds = %1037, %1034, %1031
  %1047 = load ptr, ptr %21, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.ImGuiIO, ptr %1047, i32 0, i32 63
  %1049 = getelementptr inbounds [5 x i8], ptr %1048, i64 0, i64 0
  %1050 = load i8, ptr %1049, align 8, !tbaa !41, !range !39, !noundef !40
  %1051 = trunc i8 %1050 to i1
  br i1 %1051, label %1052, label %1068

1052:                                             ; preds = %1046
  %1053 = load ptr, ptr %43, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1053, i32 0, i32 12
  %1055 = load i8, ptr %1054, align 1, !tbaa !135, !range !39, !noundef !40
  %1056 = trunc i8 %1055 to i1
  br i1 %1056, label %1068, label %1057

1057:                                             ; preds = %1052
  %1058 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %1059 = trunc i8 %1058 to i1
  br i1 %1059, label %1060, label %1067

1060:                                             ; preds = %1057
  %1061 = load ptr, ptr %43, align 8, !tbaa !5
  %1062 = load ptr, ptr %43, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1062, i32 0, i32 9
  %1064 = load float, ptr %68, align 4, !tbaa !43
  %1065 = load float, ptr %69, align 4, !tbaa !43
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1061, ptr noundef %1063, float noundef %1064, float noundef %1065)
  %1066 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %1066)
  br label %1067

1067:                                             ; preds = %1060, %1057
  br label %1101

1068:                                             ; preds = %1052, %1046
  %1069 = load ptr, ptr %21, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.ImGuiIO, ptr %1069, i32 0, i32 37
  %1071 = getelementptr inbounds [5 x i8], ptr %1070, i64 0, i64 0
  %1072 = load i8, ptr %1071, align 8, !tbaa !41, !range !39, !noundef !40
  %1073 = trunc i8 %1072 to i1
  br i1 %1073, label %1074, label %1100

1074:                                             ; preds = %1068
  %1075 = load ptr, ptr %43, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1075, i32 0, i32 12
  %1077 = load i8, ptr %1076, align 1, !tbaa !135, !range !39, !noundef !40
  %1078 = trunc i8 %1077 to i1
  br i1 %1078, label %1100, label %1079

1079:                                             ; preds = %1074
  %1080 = load ptr, ptr %21, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.ImGuiIO, ptr %1080, i32 0, i32 59
  %1082 = getelementptr inbounds %struct.ImVec2, ptr %1081, i32 0, i32 0
  %1083 = load float, ptr %1082, align 8, !tbaa !136
  %1084 = fcmp une float %1083, 0.000000e+00
  br i1 %1084, label %1091, label %1085

1085:                                             ; preds = %1079
  %1086 = load ptr, ptr %21, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.ImGuiIO, ptr %1086, i32 0, i32 59
  %1088 = getelementptr inbounds %struct.ImVec2, ptr %1087, i32 0, i32 1
  %1089 = load float, ptr %1088, align 4, !tbaa !137
  %1090 = fcmp une float %1089, 0.000000e+00
  br i1 %1090, label %1091, label %1100

1091:                                             ; preds = %1085, %1079
  %1092 = load ptr, ptr %43, align 8, !tbaa !5
  %1093 = load ptr, ptr %43, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1093, i32 0, i32 9
  %1095 = load float, ptr %68, align 4, !tbaa !43
  %1096 = load float, ptr %69, align 4, !tbaa !43
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1092, ptr noundef %1094, float noundef %1095, float noundef %1096)
  %1097 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %1097)
  %1098 = load ptr, ptr %43, align 8, !tbaa !5
  %1099 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1098, i32 0, i32 11
  store i8 1, ptr %1099, align 4, !tbaa !138
  br label %1100

1100:                                             ; preds = %1091, %1085, %1074, %1068
  br label %1101

1101:                                             ; preds = %1100, %1067
  br label %1102

1102:                                             ; preds = %1101, %1043
  br label %1103

1103:                                             ; preds = %1102, %1027
  %1104 = load ptr, ptr %43, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1104, i32 0, i32 12
  %1106 = load i8, ptr %1105, align 1, !tbaa !135, !range !39, !noundef !40
  %1107 = trunc i8 %1106 to i1
  br i1 %1107, label %1108, label %1117

1108:                                             ; preds = %1103
  %1109 = load ptr, ptr %21, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.ImGuiIO, ptr %1109, i32 0, i32 37
  %1111 = getelementptr inbounds [5 x i8], ptr %1110, i64 0, i64 0
  %1112 = load i8, ptr %1111, align 8, !tbaa !41, !range !39, !noundef !40
  %1113 = trunc i8 %1112 to i1
  br i1 %1113, label %1117, label %1114

1114:                                             ; preds = %1108
  %1115 = load ptr, ptr %43, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1115, i32 0, i32 12
  store i8 0, ptr %1116, align 1, !tbaa !135
  br label %1117

1117:                                             ; preds = %1114, %1108, %1103
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #14
  %1118 = load ptr, ptr %21, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.ImGuiIO, ptr %1118, i32 0, i32 40
  %1120 = load i8, ptr %1119, align 8, !tbaa !106, !range !39, !noundef !40
  %1121 = trunc i8 %1120 to i1
  br i1 %1121, label %1122, label %1127

1122:                                             ; preds = %1117
  %1123 = load ptr, ptr %21, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct.ImGuiIO, ptr %1123, i32 0, i32 42
  %1125 = load i8, ptr %1124, align 2, !tbaa !139, !range !39, !noundef !40
  %1126 = trunc i8 %1125 to i1
  br i1 %1126, label %1127, label %1137

1127:                                             ; preds = %1122, %1117
  %1128 = load i8, ptr %70, align 1, !tbaa !41, !range !39, !noundef !40
  %1129 = trunc i8 %1128 to i1
  br i1 %1129, label %1130, label %1135

1130:                                             ; preds = %1127
  %1131 = load ptr, ptr %21, align 8, !tbaa !5
  %1132 = getelementptr inbounds %struct.ImGuiIO, ptr %1131, i32 0, i32 43
  %1133 = load i8, ptr %1132, align 1, !tbaa !140, !range !39, !noundef !40
  %1134 = trunc i8 %1133 to i1
  br label %1135

1135:                                             ; preds = %1130, %1127
  %1136 = phi i1 [ false, %1127 ], [ %1134, %1130 ]
  br label %1137

1137:                                             ; preds = %1135, %1122
  %1138 = phi i1 [ true, %1122 ], [ %1136, %1135 ]
  %1139 = zext i1 %1138 to i8
  store i8 %1139, ptr %71, align 1, !tbaa !41
  %1140 = load i32, ptr %15, align 4, !tbaa !9
  %1141 = and i32 %1140, 1024
  %1142 = icmp ne i32 %1141, 0
  br i1 %1142, label %1143, label %1171

1143:                                             ; preds = %1137
  %1144 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1144, label %1145, label %1171

1145:                                             ; preds = %1143
  %1146 = load i8, ptr %71, align 1, !tbaa !41, !range !39, !noundef !40
  %1147 = trunc i8 %1146 to i1
  br i1 %1147, label %1171, label %1148

1148:                                             ; preds = %1145
  %1149 = load ptr, ptr %21, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.ImGuiIO, ptr %1149, i32 0, i32 41
  %1151 = load i8, ptr %1150, align 1, !tbaa !141, !range !39, !noundef !40
  %1152 = trunc i8 %1151 to i1
  br i1 %1152, label %1171, label %1153

1153:                                             ; preds = %1148
  %1154 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1155 = trunc i8 %1154 to i1
  br i1 %1155, label %1171, label %1156

1156:                                             ; preds = %1153
  %1157 = load ptr, ptr %21, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.ImGuiIO, ptr %1157, i32 0, i32 77
  call void @llvm.lifetime.start.p0(i64 2, ptr %72) #14
  store i16 9, ptr %72, align 2, !tbaa !142
  %1159 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %1158, ptr noundef nonnull align 2 dereferenceable(2) %72)
  %1160 = xor i1 %1159, true
  call void @llvm.lifetime.end.p0(i64 2, ptr %72) #14
  br i1 %1160, label %1161, label %1170

1161:                                             ; preds = %1156
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #14
  store i32 9, ptr %73, align 4, !tbaa !9
  %1162 = load i32, ptr %15, align 4, !tbaa !9
  %1163 = load ptr, ptr %16, align 8, !tbaa !5
  %1164 = load ptr, ptr %17, align 8, !tbaa !5
  %1165 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %73, i32 noundef %1162, ptr noundef %1163, ptr noundef %1164)
  br i1 %1165, label %1166, label %1169

1166:                                             ; preds = %1161
  %1167 = load ptr, ptr %43, align 8, !tbaa !5
  %1168 = load i32, ptr %73, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1167, i32 noundef %1168)
  br label %1169

1169:                                             ; preds = %1166, %1161
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #14
  br label %1170

1170:                                             ; preds = %1169, %1156
  br label %1171

1171:                                             ; preds = %1170, %1153, %1148, %1145, %1143, %1137
  %1172 = load ptr, ptr %21, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.ImGuiIO, ptr %1172, i32 0, i32 77
  %1174 = getelementptr inbounds %struct.ImVector.7, ptr %1173, i32 0, i32 0
  %1175 = load i32, ptr %1174, align 8, !tbaa !143
  %1176 = icmp sgt i32 %1175, 0
  br i1 %1176, label %1177, label %1229

1177:                                             ; preds = %1171
  %1178 = load i8, ptr %71, align 1, !tbaa !41, !range !39, !noundef !40
  %1179 = trunc i8 %1178 to i1
  br i1 %1179, label %1226, label %1180

1180:                                             ; preds = %1177
  %1181 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1182 = trunc i8 %1181 to i1
  br i1 %1182, label %1226, label %1183

1183:                                             ; preds = %1180
  %1184 = load i8, ptr %48, align 1, !tbaa !41, !range !39, !noundef !40
  %1185 = trunc i8 %1184 to i1
  br i1 %1185, label %1226, label %1186

1186:                                             ; preds = %1183
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #14
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %1187

1187:                                             ; preds = %1222, %1186
  %1188 = load i32, ptr %74, align 4, !tbaa !9
  %1189 = load ptr, ptr %21, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.ImGuiIO, ptr %1189, i32 0, i32 77
  %1191 = getelementptr inbounds %struct.ImVector.7, ptr %1190, i32 0, i32 0
  %1192 = load i32, ptr %1191, align 8, !tbaa !143
  %1193 = icmp slt i32 %1188, %1192
  br i1 %1193, label %1195, label %1194

1194:                                             ; preds = %1187
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #14
  br label %1225

1195:                                             ; preds = %1187
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  %1196 = load ptr, ptr %21, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.ImGuiIO, ptr %1196, i32 0, i32 77
  %1198 = load i32, ptr %74, align 4, !tbaa !9
  %1199 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1197, i32 noundef %1198)
  %1200 = load i16, ptr %1199, align 2, !tbaa !142
  %1201 = zext i16 %1200 to i32
  store i32 %1201, ptr %75, align 4, !tbaa !9
  %1202 = load i32, ptr %75, align 4, !tbaa !9
  %1203 = icmp eq i32 %1202, 9
  br i1 %1203, label %1204, label %1210

1204:                                             ; preds = %1195
  %1205 = load ptr, ptr %21, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.ImGuiIO, ptr %1205, i32 0, i32 41
  %1207 = load i8, ptr %1206, align 1, !tbaa !141, !range !39, !noundef !40
  %1208 = trunc i8 %1207 to i1
  br i1 %1208, label %1209, label %1210

1209:                                             ; preds = %1204
  store i32 4, ptr %19, align 4
  br label %1219

1210:                                             ; preds = %1204, %1195
  %1211 = load i32, ptr %15, align 4, !tbaa !9
  %1212 = load ptr, ptr %16, align 8, !tbaa !5
  %1213 = load ptr, ptr %17, align 8, !tbaa !5
  %1214 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %75, i32 noundef %1211, ptr noundef %1212, ptr noundef %1213)
  br i1 %1214, label %1215, label %1218

1215:                                             ; preds = %1210
  %1216 = load ptr, ptr %43, align 8, !tbaa !5
  %1217 = load i32, ptr %75, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1216, i32 noundef %1217)
  br label %1218

1218:                                             ; preds = %1215, %1210
  store i32 0, ptr %19, align 4
  br label %1219

1219:                                             ; preds = %1218, %1209
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  %1220 = load i32, ptr %19, align 4
  switch i32 %1220, label %3164 [
    i32 0, label %1221
    i32 4, label %1222
  ]

1221:                                             ; preds = %1219
  br label %1222

1222:                                             ; preds = %1221, %1219
  %1223 = load i32, ptr %74, align 4, !tbaa !9
  %1224 = add nsw i32 %1223, 1
  store i32 %1224, ptr %74, align 4, !tbaa !9
  br label %1187, !llvm.loop !144

1225:                                             ; preds = %1194
  br label %1226

1226:                                             ; preds = %1225, %1183, %1180, %1177
  %1227 = load ptr, ptr %21, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.ImGuiIO, ptr %1227, i32 0, i32 77
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1228, i32 noundef 0)
  br label %1229

1229:                                             ; preds = %1226, %1171
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #14
  br label %1230

1230:                                             ; preds = %1229, %927
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #14
  store i8 0, ptr %76, align 1, !tbaa !41
  %1231 = load ptr, ptr %20, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.ImGuiContext, ptr %1231, i32 0, i32 38
  %1233 = load i32, ptr %1232, align 8, !tbaa !93
  %1234 = load i32, ptr %29, align 4, !tbaa !9
  %1235 = icmp eq i32 %1233, %1234
  br i1 %1235, label %1236, label %1937

1236:                                             ; preds = %1230
  %1237 = load ptr, ptr %20, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.ImGuiContext, ptr %1237, i32 0, i32 41
  %1239 = load i8, ptr %1238, align 4, !tbaa !146, !range !39, !noundef !40
  %1240 = trunc i8 %1239 to i1
  br i1 %1240, label %1937, label %1241

1241:                                             ; preds = %1236
  %1242 = load i8, ptr %51, align 1, !tbaa !41, !range !39, !noundef !40
  %1243 = trunc i8 %1242 to i1
  br i1 %1243, label %1937, label %1244

1244:                                             ; preds = %1241
  %1245 = load ptr, ptr %43, align 8, !tbaa !5
  %1246 = icmp ne ptr %1245, null
  br i1 %1246, label %1247, label %1248

1247:                                             ; preds = %1244
  br label %1250

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

1249:                                             ; No predecessors!
  br label %1250

1250:                                             ; preds = %1249, %1247
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #14
  %1251 = load ptr, ptr %21, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.ImGuiIO, ptr %1251, i32 0, i32 41
  %1253 = load i8, ptr %1252, align 1, !tbaa !141, !range !39, !noundef !40
  %1254 = trunc i8 %1253 to i1
  %1255 = zext i1 %1254 to i64
  %1256 = select i1 %1254, i32 4194304, i32 0
  store i32 %1256, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  %1257 = load ptr, ptr %21, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ImGuiIO, ptr %1257, i32 0, i32 20
  %1259 = load i8, ptr %1258, align 1, !tbaa !134, !range !39, !noundef !40
  %1260 = trunc i8 %1259 to i1
  %1261 = zext i1 %1260 to i8
  store i8 %1261, ptr %78, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #14
  %1262 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1263 = trunc i8 %1262 to i1
  br i1 %1263, label %1264, label %1274

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

1269:                                             ; preds = %1264
  %1270 = load ptr, ptr %21, align 8, !tbaa !5
  %1271 = getelementptr inbounds %struct.ImGuiIO, ptr %1270, i32 0, i32 40
  %1272 = load i8, ptr %1271, align 8, !tbaa !106, !range !39, !noundef !40
  %1273 = trunc i8 %1272 to i1
  br i1 %1273, label %1295, label %1284

1274:                                             ; preds = %1250
  %1275 = load ptr, ptr %21, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.ImGuiIO, ptr %1275, i32 0, i32 40
  %1277 = load i8, ptr %1276, align 8, !tbaa !106, !range !39, !noundef !40
  %1278 = trunc i8 %1277 to i1
  br i1 %1278, label %1279, label %1295

1279:                                             ; preds = %1274
  %1280 = load ptr, ptr %21, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.ImGuiIO, ptr %1280, i32 0, i32 43
  %1282 = load i8, ptr %1281, align 1, !tbaa !140, !range !39, !noundef !40
  %1283 = trunc i8 %1282 to i1
  br i1 %1283, label %1295, label %1284

1284:                                             ; preds = %1279, %1269
  %1285 = load ptr, ptr %21, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.ImGuiIO, ptr %1285, i32 0, i32 42
  %1287 = load i8, ptr %1286, align 2, !tbaa !139, !range !39, !noundef !40
  %1288 = trunc i8 %1287 to i1
  br i1 %1288, label %1295, label %1289

1289:                                             ; preds = %1284
  %1290 = load ptr, ptr %21, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.ImGuiIO, ptr %1290, i32 0, i32 41
  %1292 = load i8, ptr %1291, align 1, !tbaa !141, !range !39, !noundef !40
  %1293 = trunc i8 %1292 to i1
  %1294 = xor i1 %1293, true
  br label %1295

1295:                                             ; preds = %1289, %1284, %1279, %1274, %1269, %1264
  %1296 = phi i1 [ false, %1284 ], [ false, %1279 ], [ false, %1274 ], [ false, %1269 ], [ false, %1264 ], [ %1294, %1289 ]
  %1297 = zext i1 %1296 to i8
  store i8 %1297, ptr %79, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #14
  %1298 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1299 = trunc i8 %1298 to i1
  br i1 %1299, label %1300, label %1321

1300:                                             ; preds = %1295
  %1301 = load ptr, ptr %21, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.ImGuiIO, ptr %1301, i32 0, i32 43
  %1303 = load i8, ptr %1302, align 1, !tbaa !140, !range !39, !noundef !40
  %1304 = trunc i8 %1303 to i1
  br i1 %1304, label %1305, label %1321

1305:                                             ; preds = %1300
  %1306 = load ptr, ptr %21, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.ImGuiIO, ptr %1306, i32 0, i32 41
  %1308 = load i8, ptr %1307, align 1, !tbaa !141, !range !39, !noundef !40
  %1309 = trunc i8 %1308 to i1
  br i1 %1309, label %1310, label %1321

1310:                                             ; preds = %1305
  %1311 = load ptr, ptr %21, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.ImGuiIO, ptr %1311, i32 0, i32 40
  %1313 = load i8, ptr %1312, align 8, !tbaa !106, !range !39, !noundef !40
  %1314 = trunc i8 %1313 to i1
  br i1 %1314, label %1321, label %1315

1315:                                             ; preds = %1310
  %1316 = load ptr, ptr %21, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.ImGuiIO, ptr %1316, i32 0, i32 42
  %1318 = load i8, ptr %1317, align 2, !tbaa !139, !range !39, !noundef !40
  %1319 = trunc i8 %1318 to i1
  %1320 = xor i1 %1319, true
  br label %1321

1321:                                             ; preds = %1315, %1310, %1305, %1300, %1295
  %1322 = phi i1 [ false, %1310 ], [ false, %1305 ], [ false, %1300 ], [ false, %1295 ], [ %1320, %1315 ]
  %1323 = zext i1 %1322 to i8
  store i8 %1323, ptr %80, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #14
  %1324 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1325 = trunc i8 %1324 to i1
  br i1 %1325, label %1326, label %1331

1326:                                             ; preds = %1321
  %1327 = load ptr, ptr %21, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.ImGuiIO, ptr %1327, i32 0, i32 42
  %1329 = load i8, ptr %1328, align 2, !tbaa !139, !range !39, !noundef !40
  %1330 = trunc i8 %1329 to i1
  br label %1336

1331:                                             ; preds = %1321
  %1332 = load ptr, ptr %21, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct.ImGuiIO, ptr %1332, i32 0, i32 40
  %1334 = load i8, ptr %1333, align 8, !tbaa !106, !range !39, !noundef !40
  %1335 = trunc i8 %1334 to i1
  br label %1336

1336:                                             ; preds = %1331, %1326
  %1337 = phi i1 [ %1330, %1326 ], [ %1335, %1331 ]
  %1338 = zext i1 %1337 to i8
  store i8 %1338, ptr %81, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #14
  %1339 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1340 = trunc i8 %1339 to i1
  br i1 %1340, label %1341, label %1357

1341:                                             ; preds = %1336
  %1342 = load ptr, ptr %21, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.ImGuiIO, ptr %1342, i32 0, i32 43
  %1344 = load i8, ptr %1343, align 1, !tbaa !140, !range !39, !noundef !40
  %1345 = trunc i8 %1344 to i1
  br i1 %1345, label %1346, label %1357

1346:                                             ; preds = %1341
  %1347 = load ptr, ptr %21, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ImGuiIO, ptr %1347, i32 0, i32 40
  %1349 = load i8, ptr %1348, align 8, !tbaa !106, !range !39, !noundef !40
  %1350 = trunc i8 %1349 to i1
  br i1 %1350, label %1357, label %1351

1351:                                             ; preds = %1346
  %1352 = load ptr, ptr %21, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.ImGuiIO, ptr %1352, i32 0, i32 42
  %1354 = load i8, ptr %1353, align 2, !tbaa !139, !range !39, !noundef !40
  %1355 = trunc i8 %1354 to i1
  %1356 = xor i1 %1355, true
  br label %1357

1357:                                             ; preds = %1351, %1346, %1341, %1336
  %1358 = phi i1 [ false, %1346 ], [ false, %1341 ], [ false, %1336 ], [ %1356, %1351 ]
  %1359 = zext i1 %1358 to i8
  store i8 %1359, ptr %82, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #14
  %1360 = load ptr, ptr %21, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.ImGuiIO, ptr %1360, i32 0, i32 40
  %1362 = load i8, ptr %1361, align 8, !tbaa !106, !range !39, !noundef !40
  %1363 = trunc i8 %1362 to i1
  br i1 %1363, label %1364, label %1380

1364:                                             ; preds = %1357
  %1365 = load ptr, ptr %21, align 8, !tbaa !5
  %1366 = getelementptr inbounds %struct.ImGuiIO, ptr %1365, i32 0, i32 41
  %1367 = load i8, ptr %1366, align 1, !tbaa !141, !range !39, !noundef !40
  %1368 = trunc i8 %1367 to i1
  br i1 %1368, label %1380, label %1369

1369:                                             ; preds = %1364
  %1370 = load ptr, ptr %21, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.ImGuiIO, ptr %1370, i32 0, i32 42
  %1372 = load i8, ptr %1371, align 2, !tbaa !139, !range !39, !noundef !40
  %1373 = trunc i8 %1372 to i1
  br i1 %1373, label %1380, label %1374

1374:                                             ; preds = %1369
  %1375 = load ptr, ptr %21, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.ImGuiIO, ptr %1375, i32 0, i32 43
  %1377 = load i8, ptr %1376, align 1, !tbaa !140, !range !39, !noundef !40
  %1378 = trunc i8 %1377 to i1
  %1379 = xor i1 %1378, true
  br label %1380

1380:                                             ; preds = %1374, %1369, %1364, %1357
  %1381 = phi i1 [ false, %1369 ], [ false, %1364 ], [ false, %1357 ], [ %1379, %1374 ]
  %1382 = zext i1 %1381 to i8
  store i8 %1382, ptr %83, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #14
  %1383 = load ptr, ptr %21, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.ImGuiIO, ptr %1383, i32 0, i32 41
  %1385 = load i8, ptr %1384, align 1, !tbaa !141, !range !39, !noundef !40
  %1386 = trunc i8 %1385 to i1
  br i1 %1386, label %1387, label %1403

1387:                                             ; preds = %1380
  %1388 = load ptr, ptr %21, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.ImGuiIO, ptr %1388, i32 0, i32 40
  %1390 = load i8, ptr %1389, align 8, !tbaa !106, !range !39, !noundef !40
  %1391 = trunc i8 %1390 to i1
  br i1 %1391, label %1403, label %1392

1392:                                             ; preds = %1387
  %1393 = load ptr, ptr %21, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.ImGuiIO, ptr %1393, i32 0, i32 42
  %1395 = load i8, ptr %1394, align 2, !tbaa !139, !range !39, !noundef !40
  %1396 = trunc i8 %1395 to i1
  br i1 %1396, label %1403, label %1397

1397:                                             ; preds = %1392
  %1398 = load ptr, ptr %21, align 8, !tbaa !5
  %1399 = getelementptr inbounds %struct.ImGuiIO, ptr %1398, i32 0, i32 43
  %1400 = load i8, ptr %1399, align 1, !tbaa !140, !range !39, !noundef !40
  %1401 = trunc i8 %1400 to i1
  %1402 = xor i1 %1401, true
  br label %1403

1403:                                             ; preds = %1397, %1392, %1387, %1380
  %1404 = phi i1 [ false, %1392 ], [ false, %1387 ], [ false, %1380 ], [ %1402, %1397 ]
  %1405 = zext i1 %1404 to i8
  store i8 %1405, ptr %84, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #14
  %1406 = load i8, ptr %79, align 1, !tbaa !41, !range !39, !noundef !40
  %1407 = trunc i8 %1406 to i1
  br i1 %1407, label %1408, label %1410

1408:                                             ; preds = %1403
  %1409 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %1409, label %1415, label %1410

1410:                                             ; preds = %1408, %1403
  %1411 = load i8, ptr %84, align 1, !tbaa !41, !range !39, !noundef !40
  %1412 = trunc i8 %1411 to i1
  br i1 %1412, label %1413, label %1429

1413:                                             ; preds = %1410
  %1414 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1414, label %1415, label %1429

1415:                                             ; preds = %1413, %1408
  %1416 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1417 = trunc i8 %1416 to i1
  br i1 %1417, label %1429, label %1418

1418:                                             ; preds = %1415
  %1419 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %1420 = trunc i8 %1419 to i1
  br i1 %1420, label %1429, label %1421

1421:                                             ; preds = %1418
  %1422 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1423 = trunc i8 %1422 to i1
  br i1 %1423, label %1424, label %1427

1424:                                             ; preds = %1421
  %1425 = load ptr, ptr %43, align 8, !tbaa !5
  %1426 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1425)
  br label %1427

1427:                                             ; preds = %1424, %1421
  %1428 = phi i1 [ true, %1421 ], [ %1426, %1424 ]
  br label %1429

1429:                                             ; preds = %1427, %1418, %1415, %1413, %1410
  %1430 = phi i1 [ false, %1418 ], [ false, %1415 ], [ false, %1413 ], [ false, %1410 ], [ %1428, %1427 ]
  %1431 = zext i1 %1430 to i8
  store i8 %1431, ptr %85, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1432 = load i8, ptr %79, align 1, !tbaa !41, !range !39, !noundef !40
  %1433 = trunc i8 %1432 to i1
  br i1 %1433, label %1434, label %1436

1434:                                             ; preds = %1429
  %1435 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1435, label %1441, label %1436

1436:                                             ; preds = %1434, %1429
  %1437 = load i8, ptr %83, align 1, !tbaa !41, !range !39, !noundef !40
  %1438 = trunc i8 %1437 to i1
  br i1 %1438, label %1439, label %1452

1439:                                             ; preds = %1436
  %1440 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1440, label %1441, label %1452

1441:                                             ; preds = %1439, %1434
  %1442 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %1443 = trunc i8 %1442 to i1
  br i1 %1443, label %1452, label %1444

1444:                                             ; preds = %1441
  %1445 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1446 = trunc i8 %1445 to i1
  br i1 %1446, label %1447, label %1450

1447:                                             ; preds = %1444
  %1448 = load ptr, ptr %43, align 8, !tbaa !5
  %1449 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1448)
  br label %1450

1450:                                             ; preds = %1447, %1444
  %1451 = phi i1 [ true, %1444 ], [ %1449, %1447 ]
  br label %1452

1452:                                             ; preds = %1450, %1441, %1439, %1436
  %1453 = phi i1 [ false, %1441 ], [ false, %1439 ], [ false, %1436 ], [ %1451, %1450 ]
  %1454 = zext i1 %1453 to i8
  store i8 %1454, ptr %86, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #14
  %1455 = load i8, ptr %79, align 1, !tbaa !41, !range !39, !noundef !40
  %1456 = trunc i8 %1455 to i1
  br i1 %1456, label %1457, label %1459

1457:                                             ; preds = %1452
  %1458 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1458, label %1464, label %1459

1459:                                             ; preds = %1457, %1452
  %1460 = load i8, ptr %84, align 1, !tbaa !41, !range !39, !noundef !40
  %1461 = trunc i8 %1460 to i1
  br i1 %1461, label %1462, label %1468

1462:                                             ; preds = %1459
  %1463 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1463, label %1464, label %1468

1464:                                             ; preds = %1462, %1457
  %1465 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1466 = trunc i8 %1465 to i1
  %1467 = xor i1 %1466, true
  br label %1468

1468:                                             ; preds = %1464, %1462, %1459
  %1469 = phi i1 [ false, %1462 ], [ false, %1459 ], [ %1467, %1464 ]
  %1470 = zext i1 %1469 to i8
  store i8 %1470, ptr %87, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1471 = load i8, ptr %79, align 1, !tbaa !41, !range !39, !noundef !40
  %1472 = trunc i8 %1471 to i1
  br i1 %1472, label %1473, label %1481

1473:                                             ; preds = %1468
  %1474 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1474, label %1475, label %1481

1475:                                             ; preds = %1473
  %1476 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1477 = trunc i8 %1476 to i1
  br i1 %1477, label %1481, label %1478

1478:                                             ; preds = %1475
  %1479 = load i8, ptr %27, align 1, !tbaa !41, !range !39, !noundef !40
  %1480 = trunc i8 %1479 to i1
  br label %1481

1481:                                             ; preds = %1478, %1475, %1473, %1468
  %1482 = phi i1 [ false, %1475 ], [ false, %1473 ], [ false, %1468 ], [ %1480, %1478 ]
  %1483 = zext i1 %1482 to i8
  store i8 %1483, ptr %88, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1484 = load i8, ptr %79, align 1, !tbaa !41, !range !39, !noundef !40
  %1485 = trunc i8 %1484 to i1
  br i1 %1485, label %1486, label %1488

1486:                                             ; preds = %1481
  %1487 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1487, label %1493, label %1488

1488:                                             ; preds = %1486, %1481
  %1489 = load i8, ptr %80, align 1, !tbaa !41, !range !39, !noundef !40
  %1490 = trunc i8 %1489 to i1
  br i1 %1490, label %1491, label %1499

1491:                                             ; preds = %1488
  %1492 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1492, label %1493, label %1499

1493:                                             ; preds = %1491, %1486
  %1494 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1495 = trunc i8 %1494 to i1
  br i1 %1495, label %1499, label %1496

1496:                                             ; preds = %1493
  %1497 = load i8, ptr %27, align 1, !tbaa !41, !range !39, !noundef !40
  %1498 = trunc i8 %1497 to i1
  br label %1499

1499:                                             ; preds = %1496, %1493, %1491, %1488
  %1500 = phi i1 [ false, %1493 ], [ false, %1491 ], [ false, %1488 ], [ %1498, %1496 ]
  %1501 = zext i1 %1500 to i8
  store i8 %1501, ptr %89, align 1, !tbaa !41
  %1502 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1502, label %1503, label %1517

1503:                                             ; preds = %1499
  %1504 = load ptr, ptr %43, align 8, !tbaa !5
  %1505 = load i8, ptr %82, align 1, !tbaa !41, !range !39, !noundef !40
  %1506 = trunc i8 %1505 to i1
  br i1 %1506, label %1507, label %1508

1507:                                             ; preds = %1503
  br label %1513

1508:                                             ; preds = %1503
  %1509 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1510 = trunc i8 %1509 to i1
  %1511 = zext i1 %1510 to i64
  %1512 = select i1 %1510, i32 2097164, i32 2097152
  br label %1513

1513:                                             ; preds = %1508, %1507
  %1514 = phi i32 [ 2097156, %1507 ], [ %1512, %1508 ]
  %1515 = load i32, ptr %77, align 4, !tbaa !9
  %1516 = or i32 %1514, %1515
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1504, i32 noundef %1516)
  br label %1922

1517:                                             ; preds = %1499
  %1518 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1518, label %1519, label %1533

1519:                                             ; preds = %1517
  %1520 = load ptr, ptr %43, align 8, !tbaa !5
  %1521 = load i8, ptr %82, align 1, !tbaa !41, !range !39, !noundef !40
  %1522 = trunc i8 %1521 to i1
  br i1 %1522, label %1523, label %1524

1523:                                             ; preds = %1519
  br label %1529

1524:                                             ; preds = %1519
  %1525 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1526 = trunc i8 %1525 to i1
  %1527 = zext i1 %1526 to i64
  %1528 = select i1 %1526, i32 2097165, i32 2097153
  br label %1529

1529:                                             ; preds = %1524, %1523
  %1530 = phi i32 [ 2097157, %1523 ], [ %1528, %1524 ]
  %1531 = load i32, ptr %77, align 4, !tbaa !9
  %1532 = or i32 %1530, %1531
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1520, i32 noundef %1532)
  br label %1921

1533:                                             ; preds = %1517
  %1534 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1534, label %1535, label %1563

1535:                                             ; preds = %1533
  %1536 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1537 = trunc i8 %1536 to i1
  br i1 %1537, label %1538, label %1563

1538:                                             ; preds = %1535
  %1539 = load ptr, ptr %21, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.ImGuiIO, ptr %1539, i32 0, i32 40
  %1541 = load i8, ptr %1540, align 8, !tbaa !106, !range !39, !noundef !40
  %1542 = trunc i8 %1541 to i1
  br i1 %1542, label %1543, label %1554

1543:                                             ; preds = %1538
  %1544 = load ptr, ptr %38, align 8, !tbaa !5
  %1545 = load ptr, ptr %38, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.ImGuiWindow, ptr %1545, i32 0, i32 14
  %1547 = getelementptr inbounds %struct.ImVec2, ptr %1546, i32 0, i32 1
  %1548 = load float, ptr %1547, align 4, !tbaa !147
  %1549 = load ptr, ptr %20, align 8, !tbaa !5
  %1550 = getelementptr inbounds %struct.ImGuiContext, ptr %1549, i32 0, i32 7
  %1551 = load float, ptr %1550, align 8, !tbaa !44
  %1552 = fsub float %1548, %1551
  %1553 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1552, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1544, float noundef %1553)
  br label %1562

1554:                                             ; preds = %1538
  %1555 = load ptr, ptr %43, align 8, !tbaa !5
  %1556 = load i8, ptr %82, align 1, !tbaa !41, !range !39, !noundef !40
  %1557 = trunc i8 %1556 to i1
  %1558 = zext i1 %1557 to i64
  %1559 = select i1 %1557, i32 2097158, i32 2097154
  %1560 = load i32, ptr %77, align 4, !tbaa !9
  %1561 = or i32 %1559, %1560
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1555, i32 noundef %1561)
  br label %1562

1562:                                             ; preds = %1554, %1543
  br label %1920

1563:                                             ; preds = %1535, %1533
  %1564 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1564, label %1565, label %1594

1565:                                             ; preds = %1563
  %1566 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1567 = trunc i8 %1566 to i1
  br i1 %1567, label %1568, label %1594

1568:                                             ; preds = %1565
  %1569 = load ptr, ptr %21, align 8, !tbaa !5
  %1570 = getelementptr inbounds %struct.ImGuiIO, ptr %1569, i32 0, i32 40
  %1571 = load i8, ptr %1570, align 8, !tbaa !106, !range !39, !noundef !40
  %1572 = trunc i8 %1571 to i1
  br i1 %1572, label %1573, label %1585

1573:                                             ; preds = %1568
  %1574 = load ptr, ptr %38, align 8, !tbaa !5
  %1575 = load ptr, ptr %38, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.ImGuiWindow, ptr %1575, i32 0, i32 14
  %1577 = getelementptr inbounds %struct.ImVec2, ptr %1576, i32 0, i32 1
  %1578 = load float, ptr %1577, align 4, !tbaa !147
  %1579 = load ptr, ptr %20, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.ImGuiContext, ptr %1579, i32 0, i32 7
  %1581 = load float, ptr %1580, align 8, !tbaa !44
  %1582 = fadd float %1578, %1581
  %1583 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1584 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1582, float noundef %1583)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1574, float noundef %1584)
  br label %1593

1585:                                             ; preds = %1568
  %1586 = load ptr, ptr %43, align 8, !tbaa !5
  %1587 = load i8, ptr %82, align 1, !tbaa !41, !range !39, !noundef !40
  %1588 = trunc i8 %1587 to i1
  %1589 = zext i1 %1588 to i64
  %1590 = select i1 %1588, i32 2097159, i32 2097155
  %1591 = load i32, ptr %77, align 4, !tbaa !9
  %1592 = or i32 %1590, %1591
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1586, i32 noundef %1592)
  br label %1593

1593:                                             ; preds = %1585, %1573
  br label %1919

1594:                                             ; preds = %1565, %1563
  %1595 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1595, label %1596, label %1610

1596:                                             ; preds = %1594
  %1597 = load ptr, ptr %43, align 8, !tbaa !5
  %1598 = load ptr, ptr %21, align 8, !tbaa !5
  %1599 = getelementptr inbounds %struct.ImGuiIO, ptr %1598, i32 0, i32 40
  %1600 = load i8, ptr %1599, align 8, !tbaa !106, !range !39, !noundef !40
  %1601 = trunc i8 %1600 to i1
  br i1 %1601, label %1602, label %1605

1602:                                             ; preds = %1596
  %1603 = load i32, ptr %77, align 4, !tbaa !9
  %1604 = or i32 2097158, %1603
  br label %1608

1605:                                             ; preds = %1596
  %1606 = load i32, ptr %77, align 4, !tbaa !9
  %1607 = or i32 2097156, %1606
  br label %1608

1608:                                             ; preds = %1605, %1602
  %1609 = phi i32 [ %1604, %1602 ], [ %1607, %1605 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1597, i32 noundef %1609)
  br label %1918

1610:                                             ; preds = %1594
  %1611 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1611, label %1612, label %1626

1612:                                             ; preds = %1610
  %1613 = load ptr, ptr %43, align 8, !tbaa !5
  %1614 = load ptr, ptr %21, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.ImGuiIO, ptr %1614, i32 0, i32 40
  %1616 = load i8, ptr %1615, align 8, !tbaa !106, !range !39, !noundef !40
  %1617 = trunc i8 %1616 to i1
  br i1 %1617, label %1618, label %1621

1618:                                             ; preds = %1612
  %1619 = load i32, ptr %77, align 4, !tbaa !9
  %1620 = or i32 2097159, %1619
  br label %1624

1621:                                             ; preds = %1612
  %1622 = load i32, ptr %77, align 4, !tbaa !9
  %1623 = or i32 2097157, %1622
  br label %1624

1624:                                             ; preds = %1621, %1618
  %1625 = phi i32 [ %1620, %1618 ], [ %1623, %1621 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1613, i32 noundef %1625)
  br label %1917

1626:                                             ; preds = %1610
  %1627 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1627, label %1628, label %1635

1628:                                             ; preds = %1626
  %1629 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1630 = trunc i8 %1629 to i1
  br i1 %1630, label %1635, label %1631

1631:                                             ; preds = %1628
  %1632 = load ptr, ptr %43, align 8, !tbaa !5
  %1633 = load i32, ptr %77, align 4, !tbaa !9
  %1634 = or i32 2097160, %1633
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1632, i32 noundef %1634)
  br label %1916

1635:                                             ; preds = %1628, %1626
  %1636 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1636, label %1637, label %1674

1637:                                             ; preds = %1635
  %1638 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1639 = trunc i8 %1638 to i1
  br i1 %1639, label %1674, label %1640

1640:                                             ; preds = %1637
  %1641 = load ptr, ptr %43, align 8, !tbaa !5
  %1642 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1641)
  br i1 %1642, label %1670, label %1643

1643:                                             ; preds = %1640
  %1644 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1645 = trunc i8 %1644 to i1
  br i1 %1645, label %1646, label %1648

1646:                                             ; preds = %1643
  %1647 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1647, i32 noundef 6291468)
  br label %1669

1648:                                             ; preds = %1643
  %1649 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1650 = trunc i8 %1649 to i1
  br i1 %1650, label %1651, label %1668

1651:                                             ; preds = %1648
  %1652 = load ptr, ptr %21, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.ImGuiIO, ptr %1652, i32 0, i32 43
  %1654 = load i8, ptr %1653, align 1, !tbaa !140, !range !39, !noundef !40
  %1655 = trunc i8 %1654 to i1
  br i1 %1655, label %1656, label %1668

1656:                                             ; preds = %1651
  %1657 = load ptr, ptr %21, align 8, !tbaa !5
  %1658 = getelementptr inbounds %struct.ImGuiIO, ptr %1657, i32 0, i32 42
  %1659 = load i8, ptr %1658, align 2, !tbaa !139, !range !39, !noundef !40
  %1660 = trunc i8 %1659 to i1
  br i1 %1660, label %1668, label %1661

1661:                                             ; preds = %1656
  %1662 = load ptr, ptr %21, align 8, !tbaa !5
  %1663 = getelementptr inbounds %struct.ImGuiIO, ptr %1662, i32 0, i32 40
  %1664 = load i8, ptr %1663, align 8, !tbaa !106, !range !39, !noundef !40
  %1665 = trunc i8 %1664 to i1
  br i1 %1665, label %1668, label %1666

1666:                                             ; preds = %1661
  %1667 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1667, i32 noundef 6291460)
  br label %1668

1668:                                             ; preds = %1666, %1661, %1656, %1651, %1648
  br label %1669

1669:                                             ; preds = %1668, %1646
  br label %1670

1670:                                             ; preds = %1669, %1640
  %1671 = load ptr, ptr %43, align 8, !tbaa !5
  %1672 = load i32, ptr %77, align 4, !tbaa !9
  %1673 = or i32 2097161, %1672
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1671, i32 noundef %1673)
  br label %1915

1674:                                             ; preds = %1637, %1635
  %1675 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1675, label %1678, label %1676

1676:                                             ; preds = %1674
  %1677 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %1677, label %1678, label %1716

1678:                                             ; preds = %1676, %1674
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1679 = load i32, ptr %15, align 4, !tbaa !9
  %1680 = and i32 %1679, 2048
  %1681 = icmp ne i32 %1680, 0
  %1682 = zext i1 %1681 to i8
  store i8 %1682, ptr %90, align 1, !tbaa !41
  %1683 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1684 = trunc i8 %1683 to i1
  br i1 %1684, label %1685, label %1701

1685:                                             ; preds = %1678
  %1686 = load i8, ptr %90, align 1, !tbaa !41, !range !39, !noundef !40
  %1687 = trunc i8 %1686 to i1
  br i1 %1687, label %1688, label %1693

1688:                                             ; preds = %1685
  %1689 = load ptr, ptr %21, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.ImGuiIO, ptr %1689, i32 0, i32 40
  %1691 = load i8, ptr %1690, align 8, !tbaa !106, !range !39, !noundef !40
  %1692 = trunc i8 %1691 to i1
  br i1 %1692, label %1693, label %1701

1693:                                             ; preds = %1688, %1685
  %1694 = load i8, ptr %90, align 1, !tbaa !41, !range !39, !noundef !40
  %1695 = trunc i8 %1694 to i1
  br i1 %1695, label %1702, label %1696

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

1701:                                             ; preds = %1696, %1688, %1678
  store i8 1, ptr %51, align 1, !tbaa !41
  store i8 1, ptr %61, align 1, !tbaa !41
  br label %1715

1702:                                             ; preds = %1696, %1693
  %1703 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1704 = trunc i8 %1703 to i1
  br i1 %1704, label %1714, label %1705

1705:                                             ; preds = %1702
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #14
  store i32 10, ptr %91, align 4, !tbaa !9
  %1706 = load i32, ptr %15, align 4, !tbaa !9
  %1707 = load ptr, ptr %16, align 8, !tbaa !5
  %1708 = load ptr, ptr %17, align 8, !tbaa !5
  %1709 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %91, i32 noundef %1706, ptr noundef %1707, ptr noundef %1708)
  br i1 %1709, label %1710, label %1713

1710:                                             ; preds = %1705
  %1711 = load ptr, ptr %43, align 8, !tbaa !5
  %1712 = load i32, ptr %91, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1711, i32 noundef %1712)
  br label %1713

1713:                                             ; preds = %1710, %1705
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #14
  br label %1714

1714:                                             ; preds = %1713, %1702
  br label %1715

1715:                                             ; preds = %1714, %1701
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #14
  br label %1914

1716:                                             ; preds = %1676
  %1717 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1717, label %1718, label %1719

1718:                                             ; preds = %1716
  store i8 1, ptr %76, align 1, !tbaa !41
  store i8 1, ptr %51, align 1, !tbaa !41
  br label %1913

1719:                                             ; preds = %1716
  %1720 = load i8, ptr %88, align 1, !tbaa !41, !range !39, !noundef !40
  %1721 = trunc i8 %1720 to i1
  br i1 %1721, label %1725, label %1722

1722:                                             ; preds = %1719
  %1723 = load i8, ptr %89, align 1, !tbaa !41, !range !39, !noundef !40
  %1724 = trunc i8 %1723 to i1
  br i1 %1724, label %1725, label %1732

1725:                                             ; preds = %1722, %1719
  %1726 = load ptr, ptr %43, align 8, !tbaa !5
  %1727 = load i8, ptr %88, align 1, !tbaa !41, !range !39, !noundef !40
  %1728 = trunc i8 %1727 to i1
  %1729 = zext i1 %1728 to i64
  %1730 = select i1 %1728, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1726, i32 noundef %1730)
  %1731 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1731)
  br label %1912

1732:                                             ; preds = %1722
  %1733 = load i8, ptr %79, align 1, !tbaa !41, !range !39, !noundef !40
  %1734 = trunc i8 %1733 to i1
  br i1 %1734, label %1735, label %1741

1735:                                             ; preds = %1732
  %1736 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1736, label %1737, label %1741

1737:                                             ; preds = %1735
  %1738 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1738)
  %1739 = load ptr, ptr %43, align 8, !tbaa !5
  %1740 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1739, i32 0, i32 11
  store i8 1, ptr %1740, align 4, !tbaa !138
  br label %1911

1741:                                             ; preds = %1735, %1732
  %1742 = load i8, ptr %85, align 1, !tbaa !41, !range !39, !noundef !40
  %1743 = trunc i8 %1742 to i1
  br i1 %1743, label %1747, label %1744

1744:                                             ; preds = %1741
  %1745 = load i8, ptr %86, align 1, !tbaa !41, !range !39, !noundef !40
  %1746 = trunc i8 %1745 to i1
  br i1 %1746, label %1747, label %1841

1747:                                             ; preds = %1744, %1741
  %1748 = load ptr, ptr %21, align 8, !tbaa !5
  %1749 = getelementptr inbounds %struct.ImGuiIO, ptr %1748, i32 0, i32 31
  %1750 = load ptr, ptr %1749, align 8, !tbaa !148
  %1751 = icmp ne ptr %1750, null
  br i1 %1751, label %1752, label %1825

1752:                                             ; preds = %1747
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #14
  %1753 = load ptr, ptr %43, align 8, !tbaa !5
  %1754 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1753)
  br i1 %1754, label %1755, label %1765

1755:                                             ; preds = %1752
  %1756 = load ptr, ptr %43, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1756, i32 0, i32 9
  %1758 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1757, i32 0, i32 1
  %1759 = load i32, ptr %1758, align 4, !tbaa !149
  %1760 = load ptr, ptr %43, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1760, i32 0, i32 9
  %1762 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1761, i32 0, i32 2
  %1763 = load i32, ptr %1762, align 4, !tbaa !150
  %1764 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1759, i32 noundef %1763)
  br label %1766

1765:                                             ; preds = %1752
  br label %1766

1766:                                             ; preds = %1765, %1755
  %1767 = phi i32 [ %1764, %1755 ], [ 0, %1765 ]
  store i32 %1767, ptr %92, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #14
  %1768 = load ptr, ptr %43, align 8, !tbaa !5
  %1769 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1768)
  br i1 %1769, label %1770, label %1780

1770:                                             ; preds = %1766
  %1771 = load ptr, ptr %43, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1771, i32 0, i32 9
  %1773 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1772, i32 0, i32 1
  %1774 = load i32, ptr %1773, align 4, !tbaa !149
  %1775 = load ptr, ptr %43, align 8, !tbaa !5
  %1776 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1775, i32 0, i32 9
  %1777 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1776, i32 0, i32 2
  %1778 = load i32, ptr %1777, align 4, !tbaa !150
  %1779 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1774, i32 noundef %1778)
  br label %1784

1780:                                             ; preds = %1766
  %1781 = load ptr, ptr %43, align 8, !tbaa !5
  %1782 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1781, i32 0, i32 1
  %1783 = load i32, ptr %1782, align 4, !tbaa !101
  br label %1784

1784:                                             ; preds = %1780, %1770
  %1785 = phi i32 [ %1779, %1770 ], [ %1783, %1780 ]
  store i32 %1785, ptr %93, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #14
  %1786 = load ptr, ptr %43, align 8, !tbaa !5
  %1787 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1786, i32 0, i32 3
  %1788 = getelementptr inbounds %struct.ImVector.7, ptr %1787, i32 0, i32 2
  %1789 = load ptr, ptr %1788, align 8, !tbaa !100
  %1790 = load i32, ptr %92, align 4, !tbaa !9
  %1791 = sext i32 %1790 to i64
  %1792 = getelementptr inbounds i16, ptr %1789, i64 %1791
  %1793 = load ptr, ptr %43, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1793, i32 0, i32 3
  %1795 = getelementptr inbounds %struct.ImVector.7, ptr %1794, i32 0, i32 2
  %1796 = load ptr, ptr %1795, align 8, !tbaa !100
  %1797 = load i32, ptr %93, align 4, !tbaa !9
  %1798 = sext i32 %1797 to i64
  %1799 = getelementptr inbounds i16, ptr %1796, i64 %1798
  %1800 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1792, ptr noundef %1799)
  %1801 = add nsw i32 %1800, 1
  store i32 %1801, ptr %94, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #14
  %1802 = load i32, ptr %94, align 4, !tbaa !9
  %1803 = sext i32 %1802 to i64
  %1804 = mul i64 %1803, 1
  %1805 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1804)
  store ptr %1805, ptr %95, align 8, !tbaa !5
  %1806 = load ptr, ptr %95, align 8, !tbaa !5
  %1807 = load i32, ptr %94, align 4, !tbaa !9
  %1808 = load ptr, ptr %43, align 8, !tbaa !5
  %1809 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1808, i32 0, i32 3
  %1810 = getelementptr inbounds %struct.ImVector.7, ptr %1809, i32 0, i32 2
  %1811 = load ptr, ptr %1810, align 8, !tbaa !100
  %1812 = load i32, ptr %92, align 4, !tbaa !9
  %1813 = sext i32 %1812 to i64
  %1814 = getelementptr inbounds i16, ptr %1811, i64 %1813
  %1815 = load ptr, ptr %43, align 8, !tbaa !5
  %1816 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1815, i32 0, i32 3
  %1817 = getelementptr inbounds %struct.ImVector.7, ptr %1816, i32 0, i32 2
  %1818 = load ptr, ptr %1817, align 8, !tbaa !100
  %1819 = load i32, ptr %93, align 4, !tbaa !9
  %1820 = sext i32 %1819 to i64
  %1821 = getelementptr inbounds i16, ptr %1818, i64 %1820
  %1822 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1806, i32 noundef %1807, ptr noundef %1814, ptr noundef %1821)
  %1823 = load ptr, ptr %95, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1823)
  %1824 = load ptr, ptr %95, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1824)
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #14
  br label %1825

1825:                                             ; preds = %1784, %1747
  %1826 = load i8, ptr %85, align 1, !tbaa !41, !range !39, !noundef !40
  %1827 = trunc i8 %1826 to i1
  br i1 %1827, label %1828, label %1840

1828:                                             ; preds = %1825
  %1829 = load ptr, ptr %43, align 8, !tbaa !5
  %1830 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1829)
  br i1 %1830, label %1833, label %1831

1831:                                             ; preds = %1828
  %1832 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1832)
  br label %1833

1833:                                             ; preds = %1831, %1828
  %1834 = load ptr, ptr %43, align 8, !tbaa !5
  %1835 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1834, i32 0, i32 11
  store i8 1, ptr %1835, align 4, !tbaa !138
  %1836 = load ptr, ptr %43, align 8, !tbaa !5
  %1837 = load ptr, ptr %43, align 8, !tbaa !5
  %1838 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1837, i32 0, i32 9
  %1839 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1836, ptr noundef %1838)
  br label %1840

1840:                                             ; preds = %1833, %1825
  br label %1910

1841:                                             ; preds = %1744
  %1842 = load i8, ptr %87, align 1, !tbaa !41, !range !39, !noundef !40
  %1843 = trunc i8 %1842 to i1
  br i1 %1843, label %1844, label %1909

1844:                                             ; preds = %1841
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #14
  %1845 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %1845, ptr %96, align 8, !tbaa !5
  %1846 = load ptr, ptr %96, align 8, !tbaa !5
  %1847 = icmp ne ptr %1846, null
  br i1 %1847, label %1848, label %1908

1848:                                             ; preds = %1844
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #14
  %1849 = load ptr, ptr %96, align 8, !tbaa !5
  %1850 = call i64 @strlen(ptr noundef %1849) #16
  %1851 = trunc i64 %1850 to i32
  store i32 %1851, ptr %97, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #14
  %1852 = load i32, ptr %97, align 4, !tbaa !9
  %1853 = add nsw i32 %1852, 1
  %1854 = sext i32 %1853 to i64
  %1855 = mul i64 %1854, 2
  %1856 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1855)
  store ptr %1856, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #14
  store i32 0, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #14
  %1857 = load ptr, ptr %96, align 8, !tbaa !5
  store ptr %1857, ptr %100, align 8, !tbaa !5
  br label %1858

1858:                                             ; preds = %1888, %1886, %1848
  %1859 = load ptr, ptr %100, align 8, !tbaa !5
  %1860 = load i8, ptr %1859, align 1, !tbaa !112
  %1861 = icmp ne i8 %1860, 0
  br i1 %1861, label %1863, label %1862

1862:                                             ; preds = %1858
  store i32 5, ptr %19, align 4
  br label %1889

1863:                                             ; preds = %1858
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #14
  %1864 = load ptr, ptr %100, align 8, !tbaa !5
  %1865 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %101, ptr noundef %1864, ptr noundef null)
  %1866 = load ptr, ptr %100, align 8, !tbaa !5
  %1867 = sext i32 %1865 to i64
  %1868 = getelementptr inbounds i8, ptr %1866, i64 %1867
  store ptr %1868, ptr %100, align 8, !tbaa !5
  %1869 = load i32, ptr %101, align 4, !tbaa !9
  %1870 = icmp eq i32 %1869, 0
  br i1 %1870, label %1871, label %1872

1871:                                             ; preds = %1863
  store i32 5, ptr %19, align 4
  br label %1886

1872:                                             ; preds = %1863
  %1873 = load i32, ptr %15, align 4, !tbaa !9
  %1874 = load ptr, ptr %16, align 8, !tbaa !5
  %1875 = load ptr, ptr %17, align 8, !tbaa !5
  %1876 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %101, i32 noundef %1873, ptr noundef %1874, ptr noundef %1875)
  br i1 %1876, label %1878, label %1877

1877:                                             ; preds = %1872
  store i32 6, ptr %19, align 4
  br label %1886, !llvm.loop !151

1878:                                             ; preds = %1872
  %1879 = load i32, ptr %101, align 4, !tbaa !9
  %1880 = trunc i32 %1879 to i16
  %1881 = load ptr, ptr %98, align 8, !tbaa !5
  %1882 = load i32, ptr %99, align 4, !tbaa !9
  %1883 = add nsw i32 %1882, 1
  store i32 %1883, ptr %99, align 4, !tbaa !9
  %1884 = sext i32 %1882 to i64
  %1885 = getelementptr inbounds i16, ptr %1881, i64 %1884
  store i16 %1880, ptr %1885, align 2, !tbaa !142
  store i32 0, ptr %19, align 4
  br label %1886

1886:                                             ; preds = %1878, %1877, %1871
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #14
  %1887 = load i32, ptr %19, align 4
  switch i32 %1887, label %1889 [
    i32 0, label %1888
    i32 6, label %1858
  ]

1888:                                             ; preds = %1886
  br label %1858, !llvm.loop !151

1889:                                             ; preds = %1886, %1862
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #14
  br label %1890

1890:                                             ; preds = %1889
  %1891 = load ptr, ptr %98, align 8, !tbaa !5
  %1892 = load i32, ptr %99, align 4, !tbaa !9
  %1893 = sext i32 %1892 to i64
  %1894 = getelementptr inbounds i16, ptr %1891, i64 %1893
  store i16 0, ptr %1894, align 2, !tbaa !142
  %1895 = load i32, ptr %99, align 4, !tbaa !9
  %1896 = icmp sgt i32 %1895, 0
  br i1 %1896, label %1897, label %1906

1897:                                             ; preds = %1890
  %1898 = load ptr, ptr %43, align 8, !tbaa !5
  %1899 = load ptr, ptr %43, align 8, !tbaa !5
  %1900 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1899, i32 0, i32 9
  %1901 = load ptr, ptr %98, align 8, !tbaa !5
  %1902 = load i32, ptr %99, align 4, !tbaa !9
  %1903 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1898, ptr noundef %1900, ptr noundef %1901, i32 noundef %1902)
  %1904 = load ptr, ptr %43, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1904, i32 0, i32 11
  store i8 1, ptr %1905, align 4, !tbaa !138
  br label %1906

1906:                                             ; preds = %1897, %1890
  %1907 = load ptr, ptr %98, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1907)
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #14
  br label %1908

1908:                                             ; preds = %1906, %1844
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #14
  br label %1909

1909:                                             ; preds = %1908, %1841
  br label %1910

1910:                                             ; preds = %1909, %1840
  br label %1911

1911:                                             ; preds = %1910, %1737
  br label %1912

1912:                                             ; preds = %1911, %1725
  br label %1913

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

1914:                                             ; preds = %1913, %1715
  br label %1915

1915:                                             ; preds = %1914, %1670
  br label %1916

1916:                                             ; preds = %1915, %1631
  br label %1917

1917:                                             ; preds = %1916, %1624
  br label %1918

1918:                                             ; preds = %1917, %1608
  br label %1919

1919:                                             ; preds = %1918, %1593
  br label %1920

1920:                                             ; preds = %1919, %1562
  br label %1921

1921:                                             ; preds = %1920, %1529
  br label %1922

1922:                                             ; preds = %1921, %1513
  %1923 = load ptr, ptr %43, align 8, !tbaa !5
  %1924 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1923)
  br i1 %1924, label %1925, label %1928

1925:                                             ; preds = %1922
  %1926 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %1927 = trunc i8 %1926 to i1
  br label %1928

1928:                                             ; preds = %1925, %1922
  %1929 = phi i1 [ false, %1922 ], [ %1927, %1925 ]
  %1930 = zext i1 %1929 to i32
  %1931 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %1932 = trunc i8 %1931 to i1
  %1933 = zext i1 %1932 to i32
  %1934 = or i32 %1933, %1930
  %1935 = icmp ne i32 %1934, 0
  %1936 = zext i1 %1935 to i8
  store i8 %1936, ptr %59, align 1, !tbaa !41
  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 1, ptr %80) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #14
  br label %1937

1937:                                             ; preds = %1928, %1241, %1236, %1230
  %1938 = load ptr, ptr %20, align 8, !tbaa !5
  %1939 = getelementptr inbounds %struct.ImGuiContext, ptr %1938, i32 0, i32 38
  %1940 = load i32, ptr %1939, align 8, !tbaa !93
  %1941 = load i32, ptr %29, align 4, !tbaa !9
  %1942 = icmp eq i32 %1940, %1941
  br i1 %1942, label %1943, label %2382

1943:                                             ; preds = %1937
  %1944 = load ptr, ptr %43, align 8, !tbaa !5
  %1945 = icmp ne ptr %1944, null
  br i1 %1945, label %1946, label %1947

1946:                                             ; preds = %1943
  br label %1949

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

1948:                                             ; No predecessors!
  br label %1949

1949:                                             ; preds = %1948, %1946
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #14
  store ptr null, ptr %102, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #14
  store i32 0, ptr %103, align 4, !tbaa !9
  %1950 = load i8, ptr %76, align 1, !tbaa !41, !range !39, !noundef !40
  %1951 = trunc i8 %1950 to i1
  br i1 %1951, label %1952, label %2017

1952:                                             ; preds = %1949
  %1953 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1954 = trunc i8 %1953 to i1
  br i1 %1954, label %2016, label %1955

1955:                                             ; preds = %1952
  %1956 = load ptr, ptr %12, align 8, !tbaa !5
  %1957 = load ptr, ptr %43, align 8, !tbaa !5
  %1958 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1957, i32 0, i32 5
  %1959 = getelementptr inbounds %struct.ImVector.22, ptr %1958, i32 0, i32 2
  %1960 = load ptr, ptr %1959, align 8, !tbaa !98
  %1961 = call i32 @strcmp(ptr noundef %1956, ptr noundef %1960) #16
  %1962 = icmp ne i32 %1961, 0
  br i1 %1962, label %1963, label %2016

1963:                                             ; preds = %1955
  %1964 = load ptr, ptr %43, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1964, i32 0, i32 5
  %1966 = getelementptr inbounds %struct.ImVector.22, ptr %1965, i32 0, i32 2
  %1967 = load ptr, ptr %1966, align 8, !tbaa !98
  store ptr %1967, ptr %102, align 8, !tbaa !5
  %1968 = load ptr, ptr %43, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1968, i32 0, i32 5
  %1970 = getelementptr inbounds %struct.ImVector.22, ptr %1969, i32 0, i32 0
  %1971 = load i32, ptr %1970, align 8, !tbaa !152
  %1972 = sub nsw i32 %1971, 1
  store i32 %1972, ptr %103, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #14
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104)
  %1973 = load i32, ptr %103, align 4, !tbaa !9
  %1974 = icmp sgt i32 %1973, 0
  br i1 %1974, label %1975, label %2000

1975:                                             ; preds = %1963
  %1976 = load ptr, ptr %102, align 8, !tbaa !5
  %1977 = load ptr, ptr %102, align 8, !tbaa !5
  %1978 = load i32, ptr %103, align 4, !tbaa !9
  %1979 = sext i32 %1978 to i64
  %1980 = getelementptr inbounds i8, ptr %1977, i64 %1979
  %1981 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1976, ptr noundef %1980)
          to label %1982 unwind label %1996

1982:                                             ; preds = %1975
  %1983 = add nsw i32 %1981, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %104, i32 noundef %1983)
          to label %1984 unwind label %1996

1984:                                             ; preds = %1982
  %1985 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 2
  %1986 = load ptr, ptr %1985, align 8, !tbaa !153
  %1987 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 0
  %1988 = load i32, ptr %1987, align 8, !tbaa !154
  %1989 = load ptr, ptr %102, align 8, !tbaa !5
  %1990 = load ptr, ptr %102, align 8, !tbaa !5
  %1991 = load i32, ptr %103, align 4, !tbaa !9
  %1992 = sext i32 %1991 to i64
  %1993 = getelementptr inbounds i8, ptr %1990, i64 %1992
  %1994 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1986, i32 noundef %1988, ptr noundef %1989, ptr noundef %1993, ptr noundef null)
          to label %1995 unwind label %1996

1995:                                             ; preds = %1984
  br label %2000

1996:                                             ; preds = %2013, %1984, %1982, %1975
  %1997 = landingpad { ptr, i32 }
          cleanup
  %1998 = extractvalue { ptr, i32 } %1997, 0
  store ptr %1998, ptr %105, align 8
  %1999 = extractvalue { ptr, i32 } %1997, 1
  store i32 %1999, ptr %106, align 4
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 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 %3159

2000:                                             ; preds = %1995, %1963
  %2001 = load ptr, ptr %43, align 8, !tbaa !5
  %2002 = load ptr, ptr %43, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2002, i32 0, i32 9
  %2004 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 2
  %2005 = load ptr, ptr %2004, align 8, !tbaa !153
  %2006 = load i32, ptr %103, align 4, !tbaa !9
  %2007 = icmp sgt i32 %2006, 0
  br i1 %2007, label %2008, label %2012

2008:                                             ; preds = %2000
  %2009 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 0
  %2010 = load i32, ptr %2009, align 8, !tbaa !154
  %2011 = sub nsw i32 %2010, 1
  br label %2013

2012:                                             ; preds = %2000
  br label %2013

2013:                                             ; preds = %2012, %2008
  %2014 = phi i32 [ %2011, %2008 ], [ 0, %2012 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %2001, ptr noundef %2003, ptr noundef %2005, i32 noundef %2014)
          to label %2015 unwind label %1996

2015:                                             ; preds = %2013
  call void @_ZN8ImVectorItED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %104) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #14
  br label %2016

2016:                                             ; preds = %2015, %1955, %1952
  br label %2017

2017:                                             ; preds = %2016, %1949
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #14
  %2018 = load i8, ptr %76, align 1, !tbaa !41, !range !39, !noundef !40
  %2019 = trunc i8 %2018 to i1
  br i1 %2019, label %2020, label %2029

2020:                                             ; preds = %2017
  %2021 = load i8, ptr %61, align 1, !tbaa !41, !range !39, !noundef !40
  %2022 = trunc i8 %2021 to i1
  br i1 %2022, label %2023, label %2027

2023:                                             ; preds = %2020
  %2024 = load i32, ptr %15, align 4, !tbaa !9
  %2025 = and i32 %2024, 32
  %2026 = icmp ne i32 %2025, 0
  br label %2027

2027:                                             ; preds = %2023, %2020
  %2028 = phi i1 [ false, %2020 ], [ %2026, %2023 ]
  br label %2029

2029:                                             ; preds = %2027, %2017
  %2030 = phi i1 [ true, %2017 ], [ %2028, %2027 ]
  %2031 = zext i1 %2030 to i8
  store i8 %2031, ptr %107, align 1, !tbaa !41
  %2032 = load i8, ptr %107, align 1, !tbaa !41, !range !39, !noundef !40
  %2033 = trunc i8 %2032 to i1
  br i1 %2033, label %2034, label %2322

2034:                                             ; preds = %2029
  %2035 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %2036 = trunc i8 %2035 to i1
  br i1 %2036, label %2061, label %2037

2037:                                             ; preds = %2034
  %2038 = load ptr, ptr %43, align 8, !tbaa !5
  %2039 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2038, i32 0, i32 6
  store i8 1, ptr %2039, align 8, !tbaa !99
  %2040 = load ptr, ptr %43, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2040, i32 0, i32 4
  %2042 = load ptr, ptr %43, align 8, !tbaa !5
  %2043 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2042, i32 0, i32 3
  %2044 = getelementptr inbounds %struct.ImVector.7, ptr %2043, i32 0, i32 0
  %2045 = load i32, ptr %2044, align 8, !tbaa !110
  %2046 = mul nsw i32 %2045, 4
  %2047 = add nsw i32 %2046, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2041, i32 noundef %2047)
  %2048 = load ptr, ptr %43, align 8, !tbaa !5
  %2049 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2048, i32 0, i32 4
  %2050 = getelementptr inbounds %struct.ImVector.22, ptr %2049, i32 0, i32 2
  %2051 = load ptr, ptr %2050, align 8, !tbaa !111
  %2052 = load ptr, ptr %43, align 8, !tbaa !5
  %2053 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2052, i32 0, i32 4
  %2054 = getelementptr inbounds %struct.ImVector.22, ptr %2053, i32 0, i32 0
  %2055 = load i32, ptr %2054, align 8, !tbaa !155
  %2056 = load ptr, ptr %43, align 8, !tbaa !5
  %2057 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2056, i32 0, i32 3
  %2058 = getelementptr inbounds %struct.ImVector.7, ptr %2057, i32 0, i32 2
  %2059 = load ptr, ptr %2058, align 8, !tbaa !100
  %2060 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2051, i32 noundef %2055, ptr noundef %2059, ptr noundef null)
  br label %2061

2061:                                             ; preds = %2037, %2034
  %2062 = load i32, ptr %15, align 4, !tbaa !9
  %2063 = and i32 %2062, 448
  %2064 = icmp ne i32 %2063, 0
  br i1 %2064, label %2065, label %2302

2065:                                             ; preds = %2061
  %2066 = load ptr, ptr %16, align 8, !tbaa !5
  %2067 = icmp ne ptr %2066, null
  br i1 %2067, label %2068, label %2069

2068:                                             ; preds = %2065
  br label %2071

2069:                                             ; preds = %2065
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 3889, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2070:                                             ; No predecessors!
  br label %2071

2071:                                             ; preds = %2070, %2068
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #14
  store i32 0, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #14
  store i32 22, ptr %109, align 4, !tbaa !9
  %2072 = load i32, ptr %15, align 4, !tbaa !9
  %2073 = and i32 %2072, 64
  %2074 = icmp ne i32 %2073, 0
  br i1 %2074, label %2075, label %2078

2075:                                             ; preds = %2071
  %2076 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %2076, label %2077, label %2078

2077:                                             ; preds = %2075
  store i32 64, ptr %108, align 4, !tbaa !9
  store i32 0, ptr %109, align 4, !tbaa !9
  br label %2100

2078:                                             ; preds = %2075, %2071
  %2079 = load i32, ptr %15, align 4, !tbaa !9
  %2080 = and i32 %2079, 128
  %2081 = icmp ne i32 %2080, 0
  br i1 %2081, label %2082, label %2085

2082:                                             ; preds = %2078
  %2083 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %2083, label %2084, label %2085

2084:                                             ; preds = %2082
  store i32 128, ptr %108, align 4, !tbaa !9
  store i32 3, ptr %109, align 4, !tbaa !9
  br label %2099

2085:                                             ; preds = %2082, %2078
  %2086 = load i32, ptr %15, align 4, !tbaa !9
  %2087 = and i32 %2086, 128
  %2088 = icmp ne i32 %2087, 0
  br i1 %2088, label %2089, label %2092

2089:                                             ; preds = %2085
  %2090 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %2090, label %2091, label %2092

2091:                                             ; preds = %2089
  store i32 128, ptr %108, align 4, !tbaa !9
  store i32 4, ptr %109, align 4, !tbaa !9
  br label %2098

2092:                                             ; preds = %2089, %2085
  %2093 = load i32, ptr %15, align 4, !tbaa !9
  %2094 = and i32 %2093, 256
  %2095 = icmp ne i32 %2094, 0
  br i1 %2095, label %2096, label %2097

2096:                                             ; preds = %2092
  store i32 256, ptr %108, align 4, !tbaa !9
  br label %2097

2097:                                             ; preds = %2096, %2092
  br label %2098

2098:                                             ; preds = %2097, %2091
  br label %2099

2099:                                             ; preds = %2098, %2084
  br label %2100

2100:                                             ; preds = %2099, %2077
  %2101 = load i32, ptr %108, align 4, !tbaa !9
  %2102 = icmp ne i32 %2101, 0
  br i1 %2102, label %2103, label %2301

2103:                                             ; preds = %2100
  call void @llvm.lifetime.start.p0(i64 56, ptr %110) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %110)
  call void @llvm.memset.p0.i64(ptr align 8 %110, i8 0, i64 56, i1 false)
  %2104 = load i32, ptr %108, align 4, !tbaa !9
  %2105 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 0
  store i32 %2104, ptr %2105, align 8, !tbaa !156
  %2106 = load i32, ptr %15, align 4, !tbaa !9
  %2107 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 1
  store i32 %2106, ptr %2107, align 4, !tbaa !158
  %2108 = load ptr, ptr %17, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 2
  store ptr %2108, ptr %2109, align 8, !tbaa !159
  %2110 = load i32, ptr %109, align 4, !tbaa !9
  %2111 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 4
  store i32 %2110, ptr %2111, align 4, !tbaa !160
  %2112 = load ptr, ptr %43, align 8, !tbaa !5
  %2113 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2112, i32 0, i32 4
  %2114 = getelementptr inbounds %struct.ImVector.22, ptr %2113, i32 0, i32 2
  %2115 = load ptr, ptr %2114, align 8, !tbaa !111
  %2116 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  store ptr %2115, ptr %2116, align 8, !tbaa !161
  %2117 = load ptr, ptr %43, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2117, i32 0, i32 2
  %2119 = load i32, ptr %2118, align 8, !tbaa !102
  %2120 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  store i32 %2119, ptr %2120, align 8, !tbaa !162
  %2121 = load ptr, ptr %43, align 8, !tbaa !5
  %2122 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2121, i32 0, i32 7
  %2123 = load i32, ptr %2122, align 4, !tbaa !123
  %2124 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 7
  store i32 %2123, ptr %2124, align 4, !tbaa !163
  %2125 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 8
  store i8 0, ptr %2125, align 8, !tbaa !164
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #14
  %2126 = load ptr, ptr %43, align 8, !tbaa !5
  %2127 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2126, i32 0, i32 3
  %2128 = getelementptr inbounds %struct.ImVector.7, ptr %2127, i32 0, i32 2
  %2129 = load ptr, ptr %2128, align 8, !tbaa !100
  store ptr %2129, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #14
  %2130 = load ptr, ptr %111, align 8, !tbaa !5
  %2131 = load ptr, ptr %111, align 8, !tbaa !5
  %2132 = load ptr, ptr %43, align 8, !tbaa !5
  %2133 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2132, i32 0, i32 9
  %2134 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2133, i32 0, i32 0
  %2135 = load i32, ptr %2134, align 4, !tbaa !165
  %2136 = sext i32 %2135 to i64
  %2137 = getelementptr inbounds i16, ptr %2131, i64 %2136
  %2138 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2130, ptr noundef %2137)
  %2139 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  store i32 %2138, ptr %2139, align 4, !tbaa !166
  store i32 %2138, ptr %112, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #14
  %2140 = load ptr, ptr %111, align 8, !tbaa !5
  %2141 = load ptr, ptr %111, align 8, !tbaa !5
  %2142 = load ptr, ptr %43, align 8, !tbaa !5
  %2143 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2142, i32 0, i32 9
  %2144 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2143, i32 0, i32 1
  %2145 = load i32, ptr %2144, align 4, !tbaa !149
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds i16, ptr %2141, i64 %2146
  %2148 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2140, ptr noundef %2147)
  %2149 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  store i32 %2148, ptr %2149, align 8, !tbaa !167
  store i32 %2148, ptr %113, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #14
  %2150 = load ptr, ptr %111, align 8, !tbaa !5
  %2151 = load ptr, ptr %111, align 8, !tbaa !5
  %2152 = load ptr, ptr %43, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2152, i32 0, i32 9
  %2154 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2153, i32 0, i32 2
  %2155 = load i32, ptr %2154, align 4, !tbaa !150
  %2156 = sext i32 %2155 to i64
  %2157 = getelementptr inbounds i16, ptr %2151, i64 %2156
  %2158 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2150, ptr noundef %2157)
  %2159 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  store i32 %2158, ptr %2159, align 4, !tbaa !168
  store i32 %2158, ptr %114, align 4, !tbaa !9
  %2160 = load ptr, ptr %16, align 8, !tbaa !5
  %2161 = call noundef i32 %2160(ptr noundef %110)
  %2162 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2163 = load ptr, ptr %2162, align 8, !tbaa !161
  %2164 = load ptr, ptr %43, align 8, !tbaa !5
  %2165 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2164, i32 0, i32 4
  %2166 = getelementptr inbounds %struct.ImVector.22, ptr %2165, i32 0, i32 2
  %2167 = load ptr, ptr %2166, align 8, !tbaa !111
  %2168 = icmp eq ptr %2163, %2167
  br i1 %2168, label %2169, label %2170

2169:                                             ; preds = %2103
  br label %2172

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

2171:                                             ; No predecessors!
  br label %2172

2172:                                             ; preds = %2171, %2169
  %2173 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 7
  %2174 = load i32, ptr %2173, align 4, !tbaa !163
  %2175 = load ptr, ptr %43, align 8, !tbaa !5
  %2176 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2175, i32 0, i32 7
  %2177 = load i32, ptr %2176, align 4, !tbaa !123
  %2178 = icmp eq i32 %2174, %2177
  br i1 %2178, label %2179, label %2180

2179:                                             ; preds = %2172
  br label %2182

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

2181:                                             ; No predecessors!
  br label %2182

2182:                                             ; preds = %2181, %2179
  %2183 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 1
  %2184 = load i32, ptr %2183, align 4, !tbaa !158
  %2185 = load i32, ptr %15, align 4, !tbaa !9
  %2186 = icmp eq i32 %2184, %2185
  br i1 %2186, label %2187, label %2188

2187:                                             ; preds = %2182
  br label %2190

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

2189:                                             ; No predecessors!
  br label %2190

2190:                                             ; preds = %2189, %2187
  %2191 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  %2192 = load i32, ptr %2191, align 4, !tbaa !166
  %2193 = load i32, ptr %112, align 4, !tbaa !9
  %2194 = icmp ne i32 %2192, %2193
  br i1 %2194, label %2195, label %2210

2195:                                             ; preds = %2190
  %2196 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2197 = load ptr, ptr %2196, align 8, !tbaa !161
  %2198 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2199 = load ptr, ptr %2198, align 8, !tbaa !161
  %2200 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  %2201 = load i32, ptr %2200, align 4, !tbaa !166
  %2202 = sext i32 %2201 to i64
  %2203 = getelementptr inbounds i8, ptr %2199, i64 %2202
  %2204 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2197, ptr noundef %2203)
  %2205 = load ptr, ptr %43, align 8, !tbaa !5
  %2206 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2205, i32 0, i32 9
  %2207 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2206, i32 0, i32 0
  store i32 %2204, ptr %2207, align 4, !tbaa !165
  %2208 = load ptr, ptr %43, align 8, !tbaa !5
  %2209 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2208, i32 0, i32 11
  store i8 1, ptr %2209, align 4, !tbaa !138
  br label %2210

2210:                                             ; preds = %2195, %2190
  %2211 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  %2212 = load i32, ptr %2211, align 8, !tbaa !167
  %2213 = load i32, ptr %113, align 4, !tbaa !9
  %2214 = icmp ne i32 %2212, %2213
  br i1 %2214, label %2215, label %2228

2215:                                             ; preds = %2210
  %2216 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2217 = load ptr, ptr %2216, align 8, !tbaa !161
  %2218 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2219 = load ptr, ptr %2218, align 8, !tbaa !161
  %2220 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  %2221 = load i32, ptr %2220, align 8, !tbaa !167
  %2222 = sext i32 %2221 to i64
  %2223 = getelementptr inbounds i8, ptr %2219, i64 %2222
  %2224 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2217, ptr noundef %2223)
  %2225 = load ptr, ptr %43, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2225, i32 0, i32 9
  %2227 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2226, i32 0, i32 1
  store i32 %2224, ptr %2227, align 4, !tbaa !149
  br label %2228

2228:                                             ; preds = %2215, %2210
  %2229 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  %2230 = load i32, ptr %2229, align 4, !tbaa !168
  %2231 = load i32, ptr %114, align 4, !tbaa !9
  %2232 = icmp ne i32 %2230, %2231
  br i1 %2232, label %2233, label %2246

2233:                                             ; preds = %2228
  %2234 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2235 = load ptr, ptr %2234, align 8, !tbaa !161
  %2236 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2237 = load ptr, ptr %2236, align 8, !tbaa !161
  %2238 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  %2239 = load i32, ptr %2238, align 4, !tbaa !168
  %2240 = sext i32 %2239 to i64
  %2241 = getelementptr inbounds i8, ptr %2237, i64 %2240
  %2242 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2235, ptr noundef %2241)
  %2243 = load ptr, ptr %43, align 8, !tbaa !5
  %2244 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2243, i32 0, i32 9
  %2245 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2244, i32 0, i32 2
  store i32 %2242, ptr %2245, align 4, !tbaa !150
  br label %2246

2246:                                             ; preds = %2233, %2228
  %2247 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 8
  %2248 = load i8, ptr %2247, align 8, !tbaa !164, !range !39, !noundef !40
  %2249 = trunc i8 %2248 to i1
  br i1 %2249, label %2250, label %2300

2250:                                             ; preds = %2246
  %2251 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2252 = load i32, ptr %2251, align 8, !tbaa !162
  %2253 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2254 = load ptr, ptr %2253, align 8, !tbaa !161
  %2255 = call i64 @strlen(ptr noundef %2254) #16
  %2256 = trunc i64 %2255 to i32
  %2257 = icmp eq i32 %2252, %2256
  br i1 %2257, label %2258, label %2259

2258:                                             ; preds = %2250
  br label %2261

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

2260:                                             ; No predecessors!
  br label %2261

2261:                                             ; preds = %2260, %2258
  %2262 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2263 = load i32, ptr %2262, align 8, !tbaa !162
  %2264 = load i32, ptr %67, align 4, !tbaa !9
  %2265 = icmp sgt i32 %2263, %2264
  br i1 %2265, label %2266, label %2281

2266:                                             ; preds = %2261
  %2267 = load i8, ptr %28, align 1, !tbaa !41, !range !39, !noundef !40
  %2268 = trunc i8 %2267 to i1
  br i1 %2268, label %2269, label %2281

2269:                                             ; preds = %2266
  %2270 = load ptr, ptr %43, align 8, !tbaa !5
  %2271 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2270, i32 0, i32 3
  %2272 = load ptr, ptr %43, align 8, !tbaa !5
  %2273 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2272, i32 0, i32 3
  %2274 = getelementptr inbounds %struct.ImVector.7, ptr %2273, i32 0, i32 0
  %2275 = load i32, ptr %2274, align 8, !tbaa !110
  %2276 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2277 = load i32, ptr %2276, align 8, !tbaa !162
  %2278 = load i32, ptr %67, align 4, !tbaa !9
  %2279 = sub nsw i32 %2277, %2278
  %2280 = add nsw i32 %2275, %2279
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2271, i32 noundef %2280)
  br label %2281

2281:                                             ; preds = %2269, %2266, %2261
  %2282 = load ptr, ptr %43, align 8, !tbaa !5
  %2283 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2282, i32 0, i32 3
  %2284 = getelementptr inbounds %struct.ImVector.7, ptr %2283, i32 0, i32 2
  %2285 = load ptr, ptr %2284, align 8, !tbaa !100
  %2286 = load ptr, ptr %43, align 8, !tbaa !5
  %2287 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2286, i32 0, i32 3
  %2288 = getelementptr inbounds %struct.ImVector.7, ptr %2287, i32 0, i32 0
  %2289 = load i32, ptr %2288, align 8, !tbaa !110
  %2290 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2291 = load ptr, ptr %2290, align 8, !tbaa !161
  %2292 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2285, i32 noundef %2289, ptr noundef %2291, ptr noundef null, ptr noundef null)
  %2293 = load ptr, ptr %43, align 8, !tbaa !5
  %2294 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2293, i32 0, i32 1
  store i32 %2292, ptr %2294, align 4, !tbaa !101
  %2295 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2296 = load i32, ptr %2295, align 8, !tbaa !162
  %2297 = load ptr, ptr %43, align 8, !tbaa !5
  %2298 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2297, i32 0, i32 2
  store i32 %2296, ptr %2298, align 8, !tbaa !102
  %2299 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %2299)
  br label %2300

2300:                                             ; preds = %2281, %2246
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #14
  call void @llvm.lifetime.end.p0(i64 56, ptr %110) #14
  br label %2301

2301:                                             ; preds = %2300, %2100
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #14
  br label %2302

2302:                                             ; preds = %2301, %2061
  %2303 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %2304 = trunc i8 %2303 to i1
  br i1 %2304, label %2321, label %2305

2305:                                             ; preds = %2302
  %2306 = load ptr, ptr %43, align 8, !tbaa !5
  %2307 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2306, i32 0, i32 4
  %2308 = getelementptr inbounds %struct.ImVector.22, ptr %2307, i32 0, i32 2
  %2309 = load ptr, ptr %2308, align 8, !tbaa !111
  %2310 = load ptr, ptr %12, align 8, !tbaa !5
  %2311 = call i32 @strcmp(ptr noundef %2309, ptr noundef %2310) #16
  %2312 = icmp ne i32 %2311, 0
  br i1 %2312, label %2313, label %2321

2313:                                             ; preds = %2305
  %2314 = load ptr, ptr %43, align 8, !tbaa !5
  %2315 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2314, i32 0, i32 4
  %2316 = getelementptr inbounds %struct.ImVector.22, ptr %2315, i32 0, i32 2
  %2317 = load ptr, ptr %2316, align 8, !tbaa !111
  store ptr %2317, ptr %102, align 8, !tbaa !5
  %2318 = load ptr, ptr %43, align 8, !tbaa !5
  %2319 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2318, i32 0, i32 2
  %2320 = load i32, ptr %2319, align 8, !tbaa !102
  store i32 %2320, ptr %103, align 4, !tbaa !9
  br label %2321

2321:                                             ; preds = %2313, %2305, %2302
  br label %2322

2322:                                             ; preds = %2321, %2029
  %2323 = load ptr, ptr %102, align 8, !tbaa !5
  %2324 = icmp ne ptr %2323, null
  br i1 %2324, label %2325, label %2375

2325:                                             ; preds = %2322
  %2326 = load i32, ptr %103, align 4, !tbaa !9
  %2327 = icmp sge i32 %2326, 0
  br i1 %2327, label %2328, label %2329

2328:                                             ; preds = %2325
  br label %2331

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

2330:                                             ; No predecessors!
  br label %2331

2331:                                             ; preds = %2330, %2328
  %2332 = load i8, ptr %28, align 1, !tbaa !41, !range !39, !noundef !40
  %2333 = trunc i8 %2332 to i1
  br i1 %2333, label %2334, label %2367

2334:                                             ; preds = %2331
  call void @llvm.lifetime.start.p0(i64 56, ptr %115) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %115)
  %2335 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 0
  store i32 262144, ptr %2335, align 8, !tbaa !156
  %2336 = load i32, ptr %15, align 4, !tbaa !9
  %2337 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 1
  store i32 %2336, ptr %2337, align 4, !tbaa !158
  %2338 = load ptr, ptr %12, align 8, !tbaa !5
  %2339 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 5
  store ptr %2338, ptr %2339, align 8, !tbaa !161
  %2340 = load i32, ptr %103, align 4, !tbaa !9
  %2341 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 6
  store i32 %2340, ptr %2341, align 8, !tbaa !162
  %2342 = load i32, ptr %13, align 4, !tbaa !9
  %2343 = load i32, ptr %103, align 4, !tbaa !9
  %2344 = add nsw i32 %2343, 1
  %2345 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2342, i32 noundef %2344)
  %2346 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 7
  store i32 %2345, ptr %2346, align 4, !tbaa !163
  %2347 = load ptr, ptr %17, align 8, !tbaa !5
  %2348 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 2
  store ptr %2347, ptr %2348, align 8, !tbaa !159
  %2349 = load ptr, ptr %16, align 8, !tbaa !5
  %2350 = call noundef i32 %2349(ptr noundef %115)
  %2351 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 5
  %2352 = load ptr, ptr %2351, align 8, !tbaa !161
  store ptr %2352, ptr %12, align 8, !tbaa !5
  %2353 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 7
  %2354 = load i32, ptr %2353, align 4, !tbaa !163
  store i32 %2354, ptr %13, align 4, !tbaa !9
  %2355 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 6
  %2356 = load i32, ptr %2355, align 8, !tbaa !162
  %2357 = load i32, ptr %13, align 4, !tbaa !9
  %2358 = sub nsw i32 %2357, 1
  %2359 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2356, i32 noundef %2358)
  store i32 %2359, ptr %103, align 4, !tbaa !9
  %2360 = load i32, ptr %103, align 4, !tbaa !9
  %2361 = load i32, ptr %13, align 4, !tbaa !9
  %2362 = icmp sle i32 %2360, %2361
  br i1 %2362, label %2363, label %2364

2363:                                             ; preds = %2334
  br label %2366

2364:                                             ; preds = %2334
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.1, i32 noundef 3982, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

2365:                                             ; No predecessors!
  br label %2366

2366:                                             ; preds = %2365, %2363
  call void @llvm.lifetime.end.p0(i64 56, ptr %115) #14
  br label %2367

2367:                                             ; preds = %2366, %2331
  %2368 = load ptr, ptr %12, align 8, !tbaa !5
  %2369 = load ptr, ptr %102, align 8, !tbaa !5
  %2370 = load i32, ptr %103, align 4, !tbaa !9
  %2371 = add nsw i32 %2370, 1
  %2372 = load i32, ptr %13, align 4, !tbaa !9
  %2373 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2371, i32 noundef %2372)
  %2374 = sext i32 %2373 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2368, ptr noundef %2369, i64 noundef %2374)
  store i8 1, ptr %60, align 1, !tbaa !41
  br label %2375

2375:                                             ; preds = %2367, %2322
  %2376 = load ptr, ptr %43, align 8, !tbaa !5
  %2377 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2376, i32 0, i32 13
  store i32 0, ptr %2377, align 8, !tbaa !124
  %2378 = load ptr, ptr %43, align 8, !tbaa !5
  %2379 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2378, i32 0, i32 14
  store ptr null, ptr %2379, align 8, !tbaa !125
  %2380 = load ptr, ptr %43, align 8, !tbaa !5
  %2381 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2380, i32 0, i32 15
  store ptr null, ptr %2381, align 8, !tbaa !126
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #14
  br label %2382

2382:                                             ; preds = %2375, %1937
  %2383 = load i8, ptr %51, align 1, !tbaa !41, !range !39, !noundef !40
  %2384 = trunc i8 %2383 to i1
  br i1 %2384, label %2385, label %2392

2385:                                             ; preds = %2382
  %2386 = load ptr, ptr %20, align 8, !tbaa !5
  %2387 = getelementptr inbounds %struct.ImGuiContext, ptr %2386, i32 0, i32 38
  %2388 = load i32, ptr %2387, align 8, !tbaa !93
  %2389 = load i32, ptr %29, align 4, !tbaa !9
  %2390 = icmp eq i32 %2388, %2389
  br i1 %2390, label %2391, label %2392

2391:                                             ; preds = %2385
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2392

2392:                                             ; preds = %2391, %2385, %2382
  %2393 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2394 = trunc i8 %2393 to i1
  br i1 %2394, label %2405, label %2395

2395:                                             ; preds = %2392
  %2396 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2396, i32 noundef 1)
  %2397 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 4 %2397, i64 8, i1 false), !tbaa.struct !42
  %2398 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %117, ptr align 4 %2398, i64 8, i1 false), !tbaa.struct !42
  %2399 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2400 = load ptr, ptr %22, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.ImGuiStyle, ptr %2400, i32 0, i32 12
  %2402 = load float, ptr %2401, align 4, !tbaa !83
  %2403 = load <2 x float>, ptr %116, align 4
  %2404 = load <2 x float>, ptr %117, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2403, <2 x float> %2404, i32 noundef %2399, i1 noundef zeroext true, float noundef %2402)
  br label %2405

2405:                                             ; preds = %2395, %2392
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #14
  %2406 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2407 = getelementptr inbounds %struct.ImVec2, ptr %2406, i32 0, i32 0
  %2408 = load float, ptr %2407, align 4, !tbaa !130
  %2409 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2410 = getelementptr inbounds %struct.ImVec2, ptr %2409, i32 0, i32 1
  %2411 = load float, ptr %2410, align 4, !tbaa !169
  %2412 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2413 = getelementptr inbounds %struct.ImVec2, ptr %2412, i32 0, i32 0
  %2414 = load float, ptr %2413, align 4, !tbaa !130
  %2415 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2416 = load float, ptr %2415, align 4, !tbaa !81
  %2417 = fadd float %2414, %2416
  %2418 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2419 = getelementptr inbounds %struct.ImVec2, ptr %2418, i32 0, i32 1
  %2420 = load float, ptr %2419, align 4, !tbaa !169
  %2421 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2422 = load float, ptr %2421, align 4, !tbaa !79
  %2423 = fadd float %2420, %2422
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %118, float noundef %2408, float noundef %2411, float noundef %2417, float noundef %2423)
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #14
  %2424 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2425 = trunc i8 %2424 to i1
  br i1 %2425, label %2426, label %2430

2426:                                             ; preds = %2405
  %2427 = load ptr, ptr %38, align 8, !tbaa !5
  %2428 = getelementptr inbounds %struct.ImGuiWindow, ptr %2427, i32 0, i32 50
  %2429 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2428, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %119, ptr align 8 %2429, i64 8, i1 false), !tbaa.struct !42
  br label %2435

2430:                                             ; preds = %2405
  %2431 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2432 = load ptr, ptr %22, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.ImGuiStyle, ptr %2432, i32 0, i32 11
  %2434 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2431, ptr noundef nonnull align 4 dereferenceable(8) %2433)
  store <2 x float> %2434, ptr %119, align 4
  br label %2435

2435:                                             ; preds = %2430, %2426
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %120, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #14
  store i32 2097152, ptr %121, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #14
  %2436 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %2437 = trunc i8 %2436 to i1
  br i1 %2437, label %2438, label %2443

2438:                                             ; preds = %2435
  %2439 = load ptr, ptr %43, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2439, i32 0, i32 4
  %2441 = getelementptr inbounds %struct.ImVector.22, ptr %2440, i32 0, i32 2
  %2442 = load ptr, ptr %2441, align 8, !tbaa !111
  br label %2445

2443:                                             ; preds = %2435
  %2444 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2445

2445:                                             ; preds = %2443, %2438
  %2446 = phi ptr [ %2442, %2438 ], [ %2444, %2443 ]
  store ptr %2446, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #14
  store ptr null, ptr %123, align 8, !tbaa !5
  %2447 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %2448 = trunc i8 %2447 to i1
  br i1 %2448, label %2449, label %2455

2449:                                             ; preds = %2445
  %2450 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2450, ptr %122, align 8, !tbaa !5
  %2451 = load ptr, ptr %11, align 8, !tbaa !5
  %2452 = load ptr, ptr %11, align 8, !tbaa !5
  %2453 = call i64 @strlen(ptr noundef %2452) #16
  %2454 = getelementptr inbounds i8, ptr %2451, i64 %2453
  store ptr %2454, ptr %123, align 8, !tbaa !5
  br label %2455

2455:                                             ; preds = %2449, %2445
  %2456 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2457 = trunc i8 %2456 to i1
  br i1 %2457, label %2461, label %2458

2458:                                             ; preds = %2455
  %2459 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %2460 = trunc i8 %2459 to i1
  br i1 %2460, label %2461, label %3007

2461:                                             ; preds = %2458, %2455
  %2462 = load ptr, ptr %43, align 8, !tbaa !5
  %2463 = icmp ne ptr %2462, null
  br i1 %2463, label %2464, label %2465

2464:                                             ; preds = %2461
  br label %2467

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

2466:                                             ; No predecessors!
  br label %2467

2467:                                             ; preds = %2466, %2464
  %2468 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %2469 = trunc i8 %2468 to i1
  br i1 %2469, label %2477, label %2470

2470:                                             ; preds = %2467
  %2471 = load ptr, ptr %122, align 8, !tbaa !5
  %2472 = load ptr, ptr %43, align 8, !tbaa !5
  %2473 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2472, i32 0, i32 2
  %2474 = load i32, ptr %2473, align 8, !tbaa !102
  %2475 = sext i32 %2474 to i64
  %2476 = getelementptr inbounds i8, ptr %2471, i64 %2475
  store ptr %2476, ptr %123, align 8, !tbaa !5
  br label %2477

2477:                                             ; preds = %2470, %2467
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #14
  %2478 = load ptr, ptr %43, align 8, !tbaa !5
  %2479 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2478, i32 0, i32 3
  %2480 = getelementptr inbounds %struct.ImVector.7, ptr %2479, i32 0, i32 2
  %2481 = load ptr, ptr %2480, align 8, !tbaa !100
  store ptr %2481, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %125)
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %126)
  call void @llvm.lifetime.start.p0(i64 16, ptr %127) #14
  call void @llvm.memset.p0.i64(ptr align 16 %127, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #14
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %128, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #14
  store i32 0, ptr %129, align 4, !tbaa !9
  %2482 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2483 = trunc i8 %2482 to i1
  br i1 %2483, label %2484, label %2496

2484:                                             ; preds = %2477
  %2485 = load ptr, ptr %124, align 8, !tbaa !5
  %2486 = load ptr, ptr %43, align 8, !tbaa !5
  %2487 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2486, i32 0, i32 9
  %2488 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2487, i32 0, i32 0
  %2489 = load i32, ptr %2488, align 4, !tbaa !165
  %2490 = sext i32 %2489 to i64
  %2491 = getelementptr inbounds i16, ptr %2485, i64 %2490
  %2492 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  store ptr %2491, ptr %2492, align 16, !tbaa !5
  %2493 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 -1, ptr %2493, align 4, !tbaa !9
  %2494 = load i32, ptr %129, align 4, !tbaa !9
  %2495 = add nsw i32 %2494, 1
  store i32 %2495, ptr %129, align 4, !tbaa !9
  br label %2496

2496:                                             ; preds = %2484, %2477
  %2497 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %2498 = trunc i8 %2497 to i1
  br i1 %2498, label %2499, label %2516

2499:                                             ; preds = %2496
  %2500 = load ptr, ptr %124, align 8, !tbaa !5
  %2501 = load ptr, ptr %43, align 8, !tbaa !5
  %2502 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2501, i32 0, i32 9
  %2503 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2502, i32 0, i32 1
  %2504 = load i32, ptr %2503, align 4, !tbaa !149
  %2505 = load ptr, ptr %43, align 8, !tbaa !5
  %2506 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2505, i32 0, i32 9
  %2507 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2506, i32 0, i32 2
  %2508 = load i32, ptr %2507, align 4, !tbaa !150
  %2509 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2504, i32 noundef %2508)
  %2510 = sext i32 %2509 to i64
  %2511 = getelementptr inbounds i16, ptr %2500, i64 %2510
  %2512 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  store ptr %2511, ptr %2512, align 8, !tbaa !5
  %2513 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 -1, ptr %2513, align 4, !tbaa !9
  %2514 = load i32, ptr %129, align 4, !tbaa !9
  %2515 = add nsw i32 %2514, 1
  store i32 %2515, ptr %129, align 4, !tbaa !9
  br label %2516

2516:                                             ; preds = %2499, %2496
  %2517 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2518 = trunc i8 %2517 to i1
  %2519 = zext i1 %2518 to i64
  %2520 = select i1 %2518, i32 1, i32 0
  %2521 = load i32, ptr %129, align 4, !tbaa !9
  %2522 = add nsw i32 %2521, %2520
  store i32 %2522, ptr %129, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #14
  store i32 0, ptr %130, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #14
  %2523 = load ptr, ptr %124, align 8, !tbaa !5
  store ptr %2523, ptr %131, align 8, !tbaa !5
  br label %2524

2524:                                             ; preds = %2573, %2516
  %2525 = load ptr, ptr %131, align 8, !tbaa !5
  %2526 = load i16, ptr %2525, align 2, !tbaa !142
  %2527 = zext i16 %2526 to i32
  %2528 = icmp ne i32 %2527, 0
  br i1 %2528, label %2530, label %2529

2529:                                             ; preds = %2524
  store i32 7, ptr %19, align 4
  br label %2576

2530:                                             ; preds = %2524
  %2531 = load ptr, ptr %131, align 8, !tbaa !5
  %2532 = load i16, ptr %2531, align 2, !tbaa !142
  %2533 = zext i16 %2532 to i32
  %2534 = icmp eq i32 %2533, 10
  br i1 %2534, label %2535, label %2572

2535:                                             ; preds = %2530
  %2536 = load i32, ptr %130, align 4, !tbaa !9
  %2537 = add nsw i32 %2536, 1
  store i32 %2537, ptr %130, align 4, !tbaa !9
  %2538 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2539 = load i32, ptr %2538, align 4, !tbaa !9
  %2540 = icmp eq i32 %2539, -1
  br i1 %2540, label %2541, label %2554

2541:                                             ; preds = %2535
  %2542 = load ptr, ptr %131, align 8, !tbaa !5
  %2543 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2544 = load ptr, ptr %2543, align 16, !tbaa !5
  %2545 = icmp uge ptr %2542, %2544
  br i1 %2545, label %2546, label %2554

2546:                                             ; preds = %2541
  %2547 = load i32, ptr %130, align 4, !tbaa !9
  %2548 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 %2547, ptr %2548, align 4, !tbaa !9
  %2549 = load i32, ptr %129, align 4, !tbaa !9
  %2550 = add nsw i32 %2549, -1
  store i32 %2550, ptr %129, align 4, !tbaa !9
  %2551 = icmp sle i32 %2550, 0
  br i1 %2551, label %2552, label %2553

2552:                                             ; preds = %2546
  store i32 7, ptr %19, align 4
  br label %2576

2553:                                             ; preds = %2546
  br label %2554

2554:                                             ; preds = %2553, %2541, %2535
  %2555 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2556 = load i32, ptr %2555, align 4, !tbaa !9
  %2557 = icmp eq i32 %2556, -1
  br i1 %2557, label %2558, label %2571

2558:                                             ; preds = %2554
  %2559 = load ptr, ptr %131, align 8, !tbaa !5
  %2560 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2561 = load ptr, ptr %2560, align 8, !tbaa !5
  %2562 = icmp uge ptr %2559, %2561
  br i1 %2562, label %2563, label %2571

2563:                                             ; preds = %2558
  %2564 = load i32, ptr %130, align 4, !tbaa !9
  %2565 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 %2564, ptr %2565, align 4, !tbaa !9
  %2566 = load i32, ptr %129, align 4, !tbaa !9
  %2567 = add nsw i32 %2566, -1
  store i32 %2567, ptr %129, align 4, !tbaa !9
  %2568 = icmp sle i32 %2567, 0
  br i1 %2568, label %2569, label %2570

2569:                                             ; preds = %2563
  store i32 7, ptr %19, align 4
  br label %2576

2570:                                             ; preds = %2563
  br label %2571

2571:                                             ; preds = %2570, %2558, %2554
  br label %2572

2572:                                             ; preds = %2571, %2530
  br label %2573

2573:                                             ; preds = %2572
  %2574 = load ptr, ptr %131, align 8, !tbaa !5
  %2575 = getelementptr inbounds i16, ptr %2574, i32 1
  store ptr %2575, ptr %131, align 8, !tbaa !5
  br label %2524, !llvm.loop !170

2576:                                             ; preds = %2569, %2552, %2529
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #14
  br label %2577

2577:                                             ; preds = %2576
  %2578 = load i32, ptr %130, align 4, !tbaa !9
  %2579 = add nsw i32 %2578, 1
  store i32 %2579, ptr %130, align 4, !tbaa !9
  %2580 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2581 = load i32, ptr %2580, align 4, !tbaa !9
  %2582 = icmp eq i32 %2581, -1
  br i1 %2582, label %2583, label %2586

2583:                                             ; preds = %2577
  %2584 = load i32, ptr %130, align 4, !tbaa !9
  %2585 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 %2584, ptr %2585, align 4, !tbaa !9
  br label %2586

2586:                                             ; preds = %2583, %2577
  %2587 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2588 = load i32, ptr %2587, align 4, !tbaa !9
  %2589 = icmp eq i32 %2588, -1
  br i1 %2589, label %2590, label %2593

2590:                                             ; preds = %2586
  %2591 = load i32, ptr %130, align 4, !tbaa !9
  %2592 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 %2591, ptr %2592, align 4, !tbaa !9
  br label %2593

2593:                                             ; preds = %2590, %2586
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  %2594 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2595 = load ptr, ptr %2594, align 16, !tbaa !5
  %2596 = load ptr, ptr %124, align 8, !tbaa !5
  %2597 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2595, ptr noundef %2596)
  %2598 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2599 = load ptr, ptr %2598, align 16, !tbaa !5
  %2600 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2597, ptr noundef %2599, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2600, ptr %132, align 4
  %2601 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2602 = load float, ptr %2601, align 4, !tbaa !81
  %2603 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  store float %2602, ptr %2603, align 4, !tbaa !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #14
  %2604 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2605 = load i32, ptr %2604, align 4, !tbaa !9
  %2606 = sitofp i32 %2605 to float
  %2607 = load ptr, ptr %20, align 8, !tbaa !5
  %2608 = getelementptr inbounds %struct.ImGuiContext, ptr %2607, i32 0, i32 7
  %2609 = load float, ptr %2608, align 8, !tbaa !44
  %2610 = fmul float %2606, %2609
  %2611 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  store float %2610, ptr %2611, align 4, !tbaa !79
  %2612 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2613 = load i32, ptr %2612, align 4, !tbaa !9
  %2614 = icmp sge i32 %2613, 0
  br i1 %2614, label %2615, label %2634

2615:                                             ; preds = %2593
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #14
  %2616 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2617 = load ptr, ptr %2616, align 8, !tbaa !5
  %2618 = load ptr, ptr %124, align 8, !tbaa !5
  %2619 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2617, ptr noundef %2618)
  %2620 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2621 = load ptr, ptr %2620, align 8, !tbaa !5
  %2622 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2619, ptr noundef %2621, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2622, ptr %133, align 4
  %2623 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 0
  %2624 = load float, ptr %2623, align 4, !tbaa !81
  %2625 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 0
  store float %2624, ptr %2625, align 4, !tbaa !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #14
  %2626 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2627 = load i32, ptr %2626, align 4, !tbaa !9
  %2628 = sitofp i32 %2627 to float
  %2629 = load ptr, ptr %20, align 8, !tbaa !5
  %2630 = getelementptr inbounds %struct.ImGuiContext, ptr %2629, i32 0, i32 7
  %2631 = load float, ptr %2630, align 8, !tbaa !44
  %2632 = fmul float %2628, %2631
  %2633 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 1
  store float %2632, ptr %2633, align 4, !tbaa !79
  br label %2634

2634:                                             ; preds = %2615, %2593
  %2635 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2636 = trunc i8 %2635 to i1
  br i1 %2636, label %2637, label %2646

2637:                                             ; preds = %2634
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #14
  %2638 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2639 = load float, ptr %2638, align 4, !tbaa !81
  %2640 = load i32, ptr %130, align 4, !tbaa !9
  %2641 = sitofp i32 %2640 to float
  %2642 = load ptr, ptr %20, align 8, !tbaa !5
  %2643 = getelementptr inbounds %struct.ImGuiContext, ptr %2642, i32 0, i32 7
  %2644 = load float, ptr %2643, align 8, !tbaa !44
  %2645 = fmul float %2641, %2644
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %134, float noundef %2639, float noundef %2645)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %120, ptr align 4 %134, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #14
  br label %2646

2646:                                             ; preds = %2637, %2634
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %127) #14
  %2647 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2648 = trunc i8 %2647 to i1
  br i1 %2648, label %2649, label %2761

2649:                                             ; preds = %2646
  %2650 = load ptr, ptr %43, align 8, !tbaa !5
  %2651 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2650, i32 0, i32 11
  %2652 = load i8, ptr %2651, align 4, !tbaa !138, !range !39, !noundef !40
  %2653 = trunc i8 %2652 to i1
  br i1 %2653, label %2654, label %2761

2654:                                             ; preds = %2649
  %2655 = load i32, ptr %15, align 4, !tbaa !9
  %2656 = and i32 %2655, 4096
  %2657 = icmp ne i32 %2656, 0
  br i1 %2657, label %2702, label %2658

2658:                                             ; preds = %2654
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #14
  %2659 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2660 = load float, ptr %2659, align 4, !tbaa !81
  %2661 = fmul float %2660, 2.500000e-01
  store float %2661, ptr %135, align 4, !tbaa !43
  %2662 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2663 = load float, ptr %2662, align 4, !tbaa !81
  %2664 = load ptr, ptr %43, align 8, !tbaa !5
  %2665 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2664, i32 0, i32 8
  %2666 = load float, ptr %2665, align 8, !tbaa !104
  %2667 = fcmp olt float %2663, %2666
  br i1 %2667, label %2668, label %2678

2668:                                             ; preds = %2658
  %2669 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2670 = load float, ptr %2669, align 4, !tbaa !81
  %2671 = load float, ptr %135, align 4, !tbaa !43
  %2672 = fsub float %2670, %2671
  %2673 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2672)
  %2674 = fptosi float %2673 to i32
  %2675 = sitofp i32 %2674 to float
  %2676 = load ptr, ptr %43, align 8, !tbaa !5
  %2677 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2676, i32 0, i32 8
  store float %2675, ptr %2677, align 8, !tbaa !104
  br label %2701

2678:                                             ; preds = %2658
  %2679 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2680 = load float, ptr %2679, align 4, !tbaa !81
  %2681 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2682 = load float, ptr %2681, align 4, !tbaa !81
  %2683 = fsub float %2680, %2682
  %2684 = load ptr, ptr %43, align 8, !tbaa !5
  %2685 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2684, i32 0, i32 8
  %2686 = load float, ptr %2685, align 8, !tbaa !104
  %2687 = fcmp oge float %2683, %2686
  br i1 %2687, label %2688, label %2700

2688:                                             ; preds = %2678
  %2689 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2690 = load float, ptr %2689, align 4, !tbaa !81
  %2691 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2692 = load float, ptr %2691, align 4, !tbaa !81
  %2693 = fsub float %2690, %2692
  %2694 = load float, ptr %135, align 4, !tbaa !43
  %2695 = fadd float %2693, %2694
  %2696 = fptosi float %2695 to i32
  %2697 = sitofp i32 %2696 to float
  %2698 = load ptr, ptr %43, align 8, !tbaa !5
  %2699 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2698, i32 0, i32 8
  store float %2697, ptr %2699, align 8, !tbaa !104
  br label %2700

2700:                                             ; preds = %2688, %2678
  br label %2701

2701:                                             ; preds = %2700, %2668
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #14
  br label %2705

2702:                                             ; preds = %2654
  %2703 = load ptr, ptr %43, align 8, !tbaa !5
  %2704 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2703, i32 0, i32 8
  store float 0.000000e+00, ptr %2704, align 8, !tbaa !104
  br label %2705

2705:                                             ; preds = %2702, %2701
  %2706 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2707 = trunc i8 %2706 to i1
  br i1 %2707, label %2708, label %2758

2708:                                             ; preds = %2705
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #14
  %2709 = load ptr, ptr %38, align 8, !tbaa !5
  %2710 = getelementptr inbounds %struct.ImGuiWindow, ptr %2709, i32 0, i32 14
  %2711 = getelementptr inbounds %struct.ImVec2, ptr %2710, i32 0, i32 1
  %2712 = load float, ptr %2711, align 4, !tbaa !147
  store float %2712, ptr %136, align 4, !tbaa !43
  %2713 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2714 = load float, ptr %2713, align 4, !tbaa !79
  %2715 = load ptr, ptr %20, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.ImGuiContext, ptr %2715, i32 0, i32 7
  %2717 = load float, ptr %2716, align 8, !tbaa !44
  %2718 = fsub float %2714, %2717
  %2719 = load float, ptr %136, align 4, !tbaa !43
  %2720 = fcmp olt float %2718, %2719
  br i1 %2720, label %2721, label %2729

2721:                                             ; preds = %2708
  %2722 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2723 = load float, ptr %2722, align 4, !tbaa !79
  %2724 = load ptr, ptr %20, align 8, !tbaa !5
  %2725 = getelementptr inbounds %struct.ImGuiContext, ptr %2724, i32 0, i32 7
  %2726 = load float, ptr %2725, align 8, !tbaa !44
  %2727 = fsub float %2723, %2726
  %2728 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2727)
  store float %2728, ptr %136, align 4, !tbaa !43
  br label %2744

2729:                                             ; preds = %2708
  %2730 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2731 = load float, ptr %2730, align 4, !tbaa !79
  %2732 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2733 = load float, ptr %2732, align 4, !tbaa !79
  %2734 = fsub float %2731, %2733
  %2735 = load float, ptr %136, align 4, !tbaa !43
  %2736 = fcmp oge float %2734, %2735
  br i1 %2736, label %2737, label %2743

2737:                                             ; preds = %2729
  %2738 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2739 = load float, ptr %2738, align 4, !tbaa !79
  %2740 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2741 = load float, ptr %2740, align 4, !tbaa !79
  %2742 = fsub float %2739, %2741
  store float %2742, ptr %136, align 4, !tbaa !43
  br label %2743

2743:                                             ; preds = %2737, %2729
  br label %2744

2744:                                             ; preds = %2743, %2721
  %2745 = load ptr, ptr %38, align 8, !tbaa !5
  %2746 = getelementptr inbounds %struct.ImGuiWindow, ptr %2745, i32 0, i32 14
  %2747 = getelementptr inbounds %struct.ImVec2, ptr %2746, i32 0, i32 1
  %2748 = load float, ptr %2747, align 4, !tbaa !147
  %2749 = load float, ptr %136, align 4, !tbaa !43
  %2750 = fsub float %2748, %2749
  %2751 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 1
  %2752 = load float, ptr %2751, align 4, !tbaa !79
  %2753 = fadd float %2752, %2750
  store float %2753, ptr %2751, align 4, !tbaa !79
  %2754 = load float, ptr %136, align 4, !tbaa !43
  %2755 = load ptr, ptr %38, align 8, !tbaa !5
  %2756 = getelementptr inbounds %struct.ImGuiWindow, ptr %2755, i32 0, i32 14
  %2757 = getelementptr inbounds %struct.ImVec2, ptr %2756, i32 0, i32 1
  store float %2754, ptr %2757, align 4, !tbaa !147
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #14
  br label %2758

2758:                                             ; preds = %2744, %2705
  %2759 = load ptr, ptr %43, align 8, !tbaa !5
  %2760 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2759, i32 0, i32 11
  store i8 0, ptr %2760, align 4, !tbaa !138
  br label %2761

2761:                                             ; preds = %2758, %2649, %2646
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #14
  %2762 = load ptr, ptr %43, align 8, !tbaa !5
  %2763 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2762, i32 0, i32 8
  %2764 = load float, ptr %2763, align 8, !tbaa !104
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %137, float noundef %2764, float noundef 0.000000e+00)
  %2765 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %2766 = trunc i8 %2765 to i1
  br i1 %2766, label %2767, label %2895

2767:                                             ; preds = %2761
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  %2768 = load ptr, ptr %124, align 8, !tbaa !5
  %2769 = load ptr, ptr %43, align 8, !tbaa !5
  %2770 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2769, i32 0, i32 9
  %2771 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2770, i32 0, i32 1
  %2772 = load i32, ptr %2771, align 4, !tbaa !149
  %2773 = load ptr, ptr %43, align 8, !tbaa !5
  %2774 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2773, i32 0, i32 9
  %2775 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2774, i32 0, i32 2
  %2776 = load i32, ptr %2775, align 4, !tbaa !150
  %2777 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2772, i32 noundef %2776)
  %2778 = sext i32 %2777 to i64
  %2779 = getelementptr inbounds i16, ptr %2768, i64 %2778
  store ptr %2779, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #14
  %2780 = load ptr, ptr %124, align 8, !tbaa !5
  %2781 = load ptr, ptr %43, align 8, !tbaa !5
  %2782 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2781, i32 0, i32 9
  %2783 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2782, i32 0, i32 1
  %2784 = load i32, ptr %2783, align 4, !tbaa !149
  %2785 = load ptr, ptr %43, align 8, !tbaa !5
  %2786 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2785, i32 0, i32 9
  %2787 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2786, i32 0, i32 2
  %2788 = load i32, ptr %2787, align 4, !tbaa !150
  %2789 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2784, i32 noundef %2788)
  %2790 = sext i32 %2789 to i64
  %2791 = getelementptr inbounds i16, ptr %2780, i64 %2790
  store ptr %2791, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #14
  %2792 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2793 = trunc i8 %2792 to i1
  %2794 = zext i1 %2793 to i64
  %2795 = select i1 %2793, float 1.000000e+00, float 0x3FE3333340000000
  %2796 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 42, float noundef %2795)
  store i32 %2796, ptr %140, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #14
  %2797 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2798 = trunc i8 %2797 to i1
  %2799 = zext i1 %2798 to i64
  %2800 = select i1 %2798, float 0.000000e+00, float -1.000000e+00
  store float %2800, ptr %141, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #14
  %2801 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2802 = trunc i8 %2801 to i1
  %2803 = zext i1 %2802 to i64
  %2804 = select i1 %2802, float 0.000000e+00, float 2.000000e+00
  store float %2804, ptr %142, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #14
  %2805 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %126)
  store <2 x float> %2805, ptr %144, align 4
  %2806 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %144, ptr noundef nonnull align 4 dereferenceable(8) %137)
  store <2 x float> %2806, ptr %143, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #14
  %2807 = load ptr, ptr %138, align 8, !tbaa !5
  store ptr %2807, ptr %145, align 8, !tbaa !5
  br label %2808

2808:                                             ; preds = %2880, %2767
  %2809 = load ptr, ptr %145, align 8, !tbaa !5
  %2810 = load ptr, ptr %139, align 8, !tbaa !5
  %2811 = icmp ult ptr %2809, %2810
  br i1 %2811, label %2813, label %2812

2812:                                             ; preds = %2808
  store i32 10, ptr %19, align 4
  br label %2893

2813:                                             ; preds = %2808
  %2814 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2815 = load float, ptr %2814, align 4, !tbaa !79
  %2816 = getelementptr inbounds %struct.ImVec4, ptr %118, i32 0, i32 3
  %2817 = load float, ptr %2816, align 4, !tbaa !171
  %2818 = load ptr, ptr %20, align 8, !tbaa !5
  %2819 = getelementptr inbounds %struct.ImGuiContext, ptr %2818, i32 0, i32 7
  %2820 = load float, ptr %2819, align 8, !tbaa !44
  %2821 = fadd float %2817, %2820
  %2822 = fcmp ogt float %2815, %2821
  br i1 %2822, label %2823, label %2824

2823:                                             ; preds = %2813
  store i32 10, ptr %19, align 4
  br label %2893

2824:                                             ; preds = %2813
  %2825 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2826 = load float, ptr %2825, align 4, !tbaa !79
  %2827 = getelementptr inbounds %struct.ImVec4, ptr %118, i32 0, i32 1
  %2828 = load float, ptr %2827, align 4, !tbaa !172
  %2829 = fcmp olt float %2826, %2828
  br i1 %2829, label %2830, label %2844

2830:                                             ; preds = %2824
  br label %2831

2831:                                             ; preds = %2842, %2830
  %2832 = load ptr, ptr %145, align 8, !tbaa !5
  %2833 = load ptr, ptr %139, align 8, !tbaa !5
  %2834 = icmp ult ptr %2832, %2833
  br i1 %2834, label %2835, label %2843

2835:                                             ; preds = %2831
  %2836 = load ptr, ptr %145, align 8, !tbaa !5
  %2837 = getelementptr inbounds i16, ptr %2836, i32 1
  store ptr %2837, ptr %145, align 8, !tbaa !5
  %2838 = load i16, ptr %2836, align 2, !tbaa !142
  %2839 = zext i16 %2838 to i32
  %2840 = icmp eq i32 %2839, 10
  br i1 %2840, label %2841, label %2842

2841:                                             ; preds = %2835
  br label %2843

2842:                                             ; preds = %2835
  br label %2831, !llvm.loop !173

2843:                                             ; preds = %2841, %2831
  br label %2880

2844:                                             ; preds = %2824
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #14
  %2845 = load ptr, ptr %145, align 8, !tbaa !5
  %2846 = load ptr, ptr %139, align 8, !tbaa !5
  %2847 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2845, ptr noundef %2846, ptr noundef %145, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %2847, ptr %146, align 4
  %2848 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %2849 = load float, ptr %2848, align 4, !tbaa !81
  %2850 = fcmp ole float %2849, 0.000000e+00
  br i1 %2850, label %2851, label %2860

2851:                                             ; preds = %2844
  %2852 = load ptr, ptr %20, align 8, !tbaa !5
  %2853 = getelementptr inbounds %struct.ImGuiContext, ptr %2852, i32 0, i32 6
  %2854 = load ptr, ptr %2853, align 8, !tbaa !113
  %2855 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114) %2854, i16 noundef zeroext 32)
  %2856 = fmul float %2855, 5.000000e-01
  %2857 = fptosi float %2856 to i32
  %2858 = sitofp i32 %2857 to float
  %2859 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  store float %2858, ptr %2859, align 4, !tbaa !81
  br label %2860

2860:                                             ; preds = %2851, %2844
  call void @llvm.lifetime.start.p0(i64 16, ptr %147) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #14
  %2861 = load float, ptr %141, align 4, !tbaa !43
  %2862 = load ptr, ptr %20, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.ImGuiContext, ptr %2862, i32 0, i32 7
  %2864 = load float, ptr %2863, align 8, !tbaa !44
  %2865 = fsub float %2861, %2864
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %149, float noundef 0.000000e+00, float noundef %2865)
  %2866 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %143, ptr noundef nonnull align 4 dereferenceable(8) %149)
  store <2 x float> %2866, ptr %148, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #14
  %2867 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %2868 = load float, ptr %2867, align 4, !tbaa !81
  %2869 = load float, ptr %142, align 4, !tbaa !43
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %151, float noundef %2868, float noundef %2869)
  %2870 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %143, ptr noundef nonnull align 4 dereferenceable(8) %151)
  store <2 x float> %2870, ptr %150, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %147, ptr noundef nonnull align 4 dereferenceable(8) %148, ptr noundef nonnull align 4 dereferenceable(8) %150)
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %152) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %152, ptr noundef nonnull align 4 dereferenceable(16) %118)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %147, ptr noundef nonnull align 4 dereferenceable(16) %152)
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %153) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %153, ptr noundef nonnull align 4 dereferenceable(16) %118)
  %2871 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %147, ptr noundef nonnull align 4 dereferenceable(16) %153)
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #14
  br i1 %2871, label %2872, label %2879

2872:                                             ; preds = %2860
  %2873 = load ptr, ptr %38, align 8, !tbaa !5
  %2874 = getelementptr inbounds %struct.ImGuiWindow, ptr %2873, i32 0, i32 65
  %2875 = load ptr, ptr %2874, align 8, !tbaa !174
  %2876 = getelementptr inbounds %struct.ImRect, ptr %147, i32 0, i32 0
  %2877 = getelementptr inbounds %struct.ImRect, ptr %147, i32 0, i32 1
  %2878 = load i32, ptr %140, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %2875, ptr noundef nonnull align 4 dereferenceable(8) %2876, ptr noundef nonnull align 4 dereferenceable(8) %2877, i32 noundef %2878, float noundef 0.000000e+00, i32 noundef 15)
  br label %2879

2879:                                             ; preds = %2872, %2860
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #14
  br label %2880

2880:                                             ; preds = %2879, %2843
  %2881 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 0
  %2882 = load float, ptr %2881, align 4, !tbaa !81
  %2883 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  %2884 = load float, ptr %2883, align 4, !tbaa !81
  %2885 = fsub float %2882, %2884
  %2886 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 0
  store float %2885, ptr %2886, align 4, !tbaa !81
  %2887 = load ptr, ptr %20, align 8, !tbaa !5
  %2888 = getelementptr inbounds %struct.ImGuiContext, ptr %2887, i32 0, i32 7
  %2889 = load float, ptr %2888, align 8, !tbaa !44
  %2890 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2891 = load float, ptr %2890, align 4, !tbaa !79
  %2892 = fadd float %2891, %2889
  store float %2892, ptr %2890, align 4, !tbaa !79
  br label %2808, !llvm.loop !175

2893:                                             ; preds = %2823, %2812
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #14
  br label %2894

2894:                                             ; preds = %2893
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #14
  br label %2895

2895:                                             ; preds = %2894, %2761
  %2896 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2897 = trunc i8 %2896 to i1
  br i1 %2897, label %2905, label %2898

2898:                                             ; preds = %2895
  %2899 = load ptr, ptr %123, align 8, !tbaa !5
  %2900 = load ptr, ptr %122, align 8, !tbaa !5
  %2901 = ptrtoint ptr %2899 to i64
  %2902 = ptrtoint ptr %2900 to i64
  %2903 = sub i64 %2901, %2902
  %2904 = icmp slt i64 %2903, 2097152
  br i1 %2904, label %2905, label %2930

2905:                                             ; preds = %2898, %2895
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #14
  %2906 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %2907 = trunc i8 %2906 to i1
  %2908 = zext i1 %2907 to i64
  %2909 = select i1 %2907, i32 1, i32 0
  %2910 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %2909, float noundef 1.000000e+00)
  store i32 %2910, ptr %154, align 4, !tbaa !9
  %2911 = load ptr, ptr %38, align 8, !tbaa !5
  %2912 = getelementptr inbounds %struct.ImGuiWindow, ptr %2911, i32 0, i32 65
  %2913 = load ptr, ptr %2912, align 8, !tbaa !174
  %2914 = load ptr, ptr %20, align 8, !tbaa !5
  %2915 = getelementptr inbounds %struct.ImGuiContext, ptr %2914, i32 0, i32 6
  %2916 = load ptr, ptr %2915, align 8, !tbaa !113
  %2917 = load ptr, ptr %20, align 8, !tbaa !5
  %2918 = getelementptr inbounds %struct.ImGuiContext, ptr %2917, i32 0, i32 7
  %2919 = load float, ptr %2918, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #14
  %2920 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %137)
  store <2 x float> %2920, ptr %155, align 4
  %2921 = load i32, ptr %154, align 4, !tbaa !9
  %2922 = load ptr, ptr %122, align 8, !tbaa !5
  %2923 = load ptr, ptr %123, align 8, !tbaa !5
  %2924 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2925 = trunc i8 %2924 to i1
  br i1 %2925, label %2926, label %2927

2926:                                             ; preds = %2905
  br label %2928

2927:                                             ; preds = %2905
  br label %2928

2928:                                             ; preds = %2927, %2926
  %2929 = phi ptr [ null, %2926 ], [ %118, %2927 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %2913, ptr noundef %2916, float noundef %2919, ptr noundef nonnull align 4 dereferenceable(8) %155, i32 noundef %2921, ptr noundef %2922, ptr noundef %2923, float noundef 0.000000e+00, ptr noundef %2929)
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #14
  br label %2930

2930:                                             ; preds = %2928, %2898
  %2931 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2932 = trunc i8 %2931 to i1
  br i1 %2932, label %2933, label %3006

2933:                                             ; preds = %2930
  %2934 = load ptr, ptr %21, align 8, !tbaa !5
  %2935 = getelementptr inbounds %struct.ImGuiIO, ptr %2934, i32 0, i32 3
  %2936 = load float, ptr %2935, align 8, !tbaa !176
  %2937 = load ptr, ptr %43, align 8, !tbaa !5
  %2938 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2937, i32 0, i32 10
  %2939 = load float, ptr %2938, align 8, !tbaa !177
  %2940 = fadd float %2939, %2936
  store float %2940, ptr %2938, align 8, !tbaa !177
  call void @llvm.lifetime.start.p0(i64 1, ptr %156) #14
  %2941 = load ptr, ptr %20, align 8, !tbaa !5
  %2942 = getelementptr inbounds %struct.ImGuiContext, ptr %2941, i32 0, i32 3
  %2943 = getelementptr inbounds %struct.ImGuiIO, ptr %2942, i32 0, i32 21
  %2944 = load i8, ptr %2943, align 2, !tbaa !178, !range !39, !noundef !40
  %2945 = trunc i8 %2944 to i1
  br i1 %2945, label %2946, label %2957

2946:                                             ; preds = %2933
  %2947 = load ptr, ptr %43, align 8, !tbaa !5
  %2948 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2947, i32 0, i32 10
  %2949 = load float, ptr %2948, align 8, !tbaa !177
  %2950 = fcmp ole float %2949, 0.000000e+00
  br i1 %2950, label %2957, label %2951

2951:                                             ; preds = %2946
  %2952 = load ptr, ptr %43, align 8, !tbaa !5
  %2953 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2952, i32 0, i32 10
  %2954 = load float, ptr %2953, align 8, !tbaa !177
  %2955 = call float @fmodf(float noundef %2954, float noundef 0x3FF3333340000000) #14
  %2956 = fcmp ole float %2955, 0x3FE99999A0000000
  br label %2957

2957:                                             ; preds = %2951, %2946, %2933
  %2958 = phi i1 [ true, %2946 ], [ true, %2933 ], [ %2956, %2951 ]
  %2959 = zext i1 %2958 to i8
  store i8 %2959, ptr %156, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #14
  %2960 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %119, ptr noundef nonnull align 4 dereferenceable(8) %125)
  store <2 x float> %2960, ptr %158, align 4
  %2961 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %158, ptr noundef nonnull align 4 dereferenceable(8) %137)
  store <2 x float> %2961, ptr %157, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr %159) #14
  %2962 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2963 = load float, ptr %2962, align 4, !tbaa !81
  %2964 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2965 = load float, ptr %2964, align 4, !tbaa !79
  %2966 = load ptr, ptr %20, align 8, !tbaa !5
  %2967 = getelementptr inbounds %struct.ImGuiContext, ptr %2966, i32 0, i32 7
  %2968 = load float, ptr %2967, align 8, !tbaa !44
  %2969 = fsub float %2965, %2968
  %2970 = fadd float %2969, 5.000000e-01
  %2971 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2972 = load float, ptr %2971, align 4, !tbaa !81
  %2973 = fadd float %2972, 1.000000e+00
  %2974 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2975 = load float, ptr %2974, align 4, !tbaa !79
  %2976 = fsub float %2975, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %159, float noundef %2963, float noundef %2970, float noundef %2973, float noundef %2976)
  %2977 = load i8, ptr %156, align 1, !tbaa !41, !range !39, !noundef !40
  %2978 = trunc i8 %2977 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #14
  br i1 %2978, label %2979, label %2981

2979:                                             ; preds = %2957
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %160, ptr noundef nonnull align 4 dereferenceable(16) %118)
  %2980 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %159, ptr noundef nonnull align 4 dereferenceable(16) %160)
  br label %2981

2981:                                             ; preds = %2979, %2957
  %2982 = phi i1 [ false, %2957 ], [ %2980, %2979 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #14
  br i1 %2982, label %2983, label %2990

2983:                                             ; preds = %2981
  %2984 = load ptr, ptr %38, align 8, !tbaa !5
  %2985 = getelementptr inbounds %struct.ImGuiWindow, ptr %2984, i32 0, i32 65
  %2986 = load ptr, ptr %2985, align 8, !tbaa !174
  %2987 = getelementptr inbounds %struct.ImRect, ptr %159, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #14
  %2988 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %159)
  store <2 x float> %2988, ptr %161, align 4
  %2989 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %2986, ptr noundef nonnull align 4 dereferenceable(8) %2987, ptr noundef nonnull align 4 dereferenceable(8) %161, i32 noundef %2989, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #14
  br label %2990

2990:                                             ; preds = %2983, %2981
  %2991 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %2992 = trunc i8 %2991 to i1
  br i1 %2992, label %3005, label %2993

2993:                                             ; preds = %2990
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  %2994 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2995 = load float, ptr %2994, align 4, !tbaa !81
  %2996 = fsub float %2995, 1.000000e+00
  %2997 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2998 = load float, ptr %2997, align 4, !tbaa !79
  %2999 = load ptr, ptr %20, align 8, !tbaa !5
  %3000 = getelementptr inbounds %struct.ImGuiContext, ptr %2999, i32 0, i32 7
  %3001 = load float, ptr %3000, align 8, !tbaa !44
  %3002 = fsub float %2998, %3001
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %162, float noundef %2996, float noundef %3002)
  %3003 = load ptr, ptr %20, align 8, !tbaa !5
  %3004 = getelementptr inbounds %struct.ImGuiContext, ptr %3003, i32 0, i32 168
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3004, ptr align 4 %162, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #14
  br label %3005

3005:                                             ; preds = %2993, %2990
  call void @llvm.lifetime.end.p0(i64 16, ptr %159) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #14
  br label %3006

3006:                                             ; preds = %3005, %2930
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #14
  br label %3081

3007:                                             ; preds = %2458
  %3008 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3009 = trunc i8 %3008 to i1
  br i1 %3009, label %3010, label %3020

3010:                                             ; preds = %3007
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #14
  %3011 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %3012 = load float, ptr %3011, align 4, !tbaa !81
  %3013 = load ptr, ptr %122, align 8, !tbaa !5
  %3014 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %3013, ptr noundef %123)
  %3015 = sitofp i32 %3014 to float
  %3016 = load ptr, ptr %20, align 8, !tbaa !5
  %3017 = getelementptr inbounds %struct.ImGuiContext, ptr %3016, i32 0, i32 7
  %3018 = load float, ptr %3017, align 8, !tbaa !44
  %3019 = fmul float %3015, %3018
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %163, float noundef %3012, float noundef %3019)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %120, ptr align 4 %163, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #14
  br label %3046

3020:                                             ; preds = %3007
  %3021 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %3022 = trunc i8 %3021 to i1
  br i1 %3022, label %3036, label %3023

3023:                                             ; preds = %3020
  %3024 = load ptr, ptr %20, align 8, !tbaa !5
  %3025 = getelementptr inbounds %struct.ImGuiContext, ptr %3024, i32 0, i32 38
  %3026 = load i32, ptr %3025, align 8, !tbaa !93
  %3027 = load i32, ptr %29, align 4, !tbaa !9
  %3028 = icmp eq i32 %3026, %3027
  br i1 %3028, label %3029, label %3036

3029:                                             ; preds = %3023
  %3030 = load ptr, ptr %122, align 8, !tbaa !5
  %3031 = load ptr, ptr %43, align 8, !tbaa !5
  %3032 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %3031, i32 0, i32 2
  %3033 = load i32, ptr %3032, align 8, !tbaa !102
  %3034 = sext i32 %3033 to i64
  %3035 = getelementptr inbounds i8, ptr %3030, i64 %3034
  store ptr %3035, ptr %123, align 8, !tbaa !5
  br label %3045

3036:                                             ; preds = %3023, %3020
  %3037 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %3038 = trunc i8 %3037 to i1
  br i1 %3038, label %3044, label %3039

3039:                                             ; preds = %3036
  %3040 = load ptr, ptr %122, align 8, !tbaa !5
  %3041 = load ptr, ptr %122, align 8, !tbaa !5
  %3042 = call i64 @strlen(ptr noundef %3041) #16
  %3043 = getelementptr inbounds i8, ptr %3040, i64 %3042
  store ptr %3043, ptr %123, align 8, !tbaa !5
  br label %3044

3044:                                             ; preds = %3039, %3036
  br label %3045

3045:                                             ; preds = %3044, %3029
  br label %3046

3046:                                             ; preds = %3045, %3010
  %3047 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3048 = trunc i8 %3047 to i1
  br i1 %3048, label %3056, label %3049

3049:                                             ; preds = %3046
  %3050 = load ptr, ptr %123, align 8, !tbaa !5
  %3051 = load ptr, ptr %122, align 8, !tbaa !5
  %3052 = ptrtoint ptr %3050 to i64
  %3053 = ptrtoint ptr %3051 to i64
  %3054 = sub i64 %3052, %3053
  %3055 = icmp slt i64 %3054, 2097152
  br i1 %3055, label %3056, label %3080

3056:                                             ; preds = %3049, %3046
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #14
  %3057 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %3058 = trunc i8 %3057 to i1
  %3059 = zext i1 %3058 to i64
  %3060 = select i1 %3058, i32 1, i32 0
  %3061 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3060, float noundef 1.000000e+00)
  store i32 %3061, ptr %164, align 4, !tbaa !9
  %3062 = load ptr, ptr %38, align 8, !tbaa !5
  %3063 = getelementptr inbounds %struct.ImGuiWindow, ptr %3062, i32 0, i32 65
  %3064 = load ptr, ptr %3063, align 8, !tbaa !174
  %3065 = load ptr, ptr %20, align 8, !tbaa !5
  %3066 = getelementptr inbounds %struct.ImGuiContext, ptr %3065, i32 0, i32 6
  %3067 = load ptr, ptr %3066, align 8, !tbaa !113
  %3068 = load ptr, ptr %20, align 8, !tbaa !5
  %3069 = getelementptr inbounds %struct.ImGuiContext, ptr %3068, i32 0, i32 7
  %3070 = load float, ptr %3069, align 8, !tbaa !44
  %3071 = load i32, ptr %164, align 4, !tbaa !9
  %3072 = load ptr, ptr %122, align 8, !tbaa !5
  %3073 = load ptr, ptr %123, align 8, !tbaa !5
  %3074 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3075 = trunc i8 %3074 to i1
  br i1 %3075, label %3076, label %3077

3076:                                             ; preds = %3056
  br label %3078

3077:                                             ; preds = %3056
  br label %3078

3078:                                             ; preds = %3077, %3076
  %3079 = phi ptr [ null, %3076 ], [ %118, %3077 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %3064, ptr noundef %3067, float noundef %3070, ptr noundef nonnull align 4 dereferenceable(8) %119, i32 noundef %3071, ptr noundef %3072, ptr noundef %3073, float noundef 0.000000e+00, ptr noundef %3079)
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #14
  br label %3080

3080:                                             ; preds = %3078, %3049
  br label %3081

3081:                                             ; preds = %3080, %3006
  %3082 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3083 = trunc i8 %3082 to i1
  br i1 %3083, label %3084, label %3089

3084:                                             ; preds = %3081
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #14
  %3085 = load ptr, ptr %20, align 8, !tbaa !5
  %3086 = getelementptr inbounds %struct.ImGuiContext, ptr %3085, i32 0, i32 7
  %3087 = load float, ptr %3086, align 8, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %166, float noundef 0.000000e+00, float noundef %3087)
  %3088 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %120, ptr noundef nonnull align 4 dereferenceable(8) %166)
  store <2 x float> %3088, ptr %165, align 4
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %165)
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #14
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %3089

3089:                                             ; preds = %3084, %3081
  %3090 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %3091 = trunc i8 %3090 to i1
  br i1 %3091, label %3092, label %3096

3092:                                             ; preds = %3089
  %3093 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %3094 = trunc i8 %3093 to i1
  br i1 %3094, label %3096, label %3095

3095:                                             ; preds = %3092
  call void @_ZN5ImGui7PopFontEv()
  br label %3096

3096:                                             ; preds = %3095, %3092, %3089
  %3097 = load ptr, ptr %20, align 8, !tbaa !5
  %3098 = getelementptr inbounds %struct.ImGuiContext, ptr %3097, i32 0, i32 176
  %3099 = load i8, ptr %3098, align 8, !tbaa !179, !range !39, !noundef !40
  %3100 = trunc i8 %3099 to i1
  br i1 %3100, label %3101, label %3110

3101:                                             ; preds = %3096
  %3102 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %3103 = trunc i8 %3102 to i1
  br i1 %3103, label %3104, label %3107

3104:                                             ; preds = %3101
  %3105 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %3106 = trunc i8 %3105 to i1
  br i1 %3106, label %3107, label %3110

3107:                                             ; preds = %3104, %3101
  %3108 = load ptr, ptr %122, align 8, !tbaa !5
  %3109 = load ptr, ptr %123, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %119, ptr noundef %3108, ptr noundef %3109)
  br label %3110

3110:                                             ; preds = %3107, %3104, %3096
  %3111 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3112 = load float, ptr %3111, align 4, !tbaa !81
  %3113 = fcmp ogt float %3112, 0.000000e+00
  br i1 %3113, label %3114, label %3133

3114:                                             ; preds = %3110
  %3115 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  %3116 = getelementptr inbounds %struct.ImVec2, ptr %3115, i32 0, i32 0
  %3117 = load float, ptr %3116, align 4, !tbaa !180
  %3118 = load ptr, ptr %22, align 8, !tbaa !5
  %3119 = getelementptr inbounds %struct.ImGuiStyle, ptr %3118, i32 0, i32 15
  %3120 = getelementptr inbounds %struct.ImVec2, ptr %3119, i32 0, i32 0
  %3121 = load float, ptr %3120, align 4, !tbaa !82
  %3122 = fadd float %3117, %3121
  %3123 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %3124 = getelementptr inbounds %struct.ImVec2, ptr %3123, i32 0, i32 1
  %3125 = load float, ptr %3124, align 4, !tbaa !169
  %3126 = load ptr, ptr %22, align 8, !tbaa !5
  %3127 = getelementptr inbounds %struct.ImGuiStyle, ptr %3126, i32 0, i32 11
  %3128 = getelementptr inbounds %struct.ImVec2, ptr %3127, i32 0, i32 1
  %3129 = load float, ptr %3128, align 4, !tbaa !80
  %3130 = fadd float %3125, %3129
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %167, float noundef %3122, float noundef %3130)
  %3131 = load ptr, ptr %10, align 8, !tbaa !5
  %3132 = load <2 x float>, ptr %167, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3132, ptr noundef %3131, ptr noundef null, i1 noundef zeroext true)
  br label %3133

3133:                                             ; preds = %3114, %3110
  %3134 = load i8, ptr %60, align 1, !tbaa !41, !range !39, !noundef !40
  %3135 = trunc i8 %3134 to i1
  br i1 %3135, label %3136, label %3142

3136:                                             ; preds = %3133
  %3137 = load i32, ptr %15, align 4, !tbaa !9
  %3138 = and i32 %3137, 2097152
  %3139 = icmp ne i32 %3138, 0
  br i1 %3139, label %3142, label %3140

3140:                                             ; preds = %3136
  %3141 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3141)
  br label %3142

3142:                                             ; preds = %3140, %3136, %3133
  br label %3143

3143:                                             ; preds = %3142
  br label %3144

3144:                                             ; preds = %3143
  br label %3145

3145:                                             ; preds = %3144
  %3146 = load i32, ptr %15, align 4, !tbaa !9
  %3147 = and i32 %3146, 32
  %3148 = icmp ne i32 %3147, 0
  br i1 %3148, label %3149, label %3152

3149:                                             ; preds = %3145
  %3150 = load i8, ptr %61, align 1, !tbaa !41, !range !39, !noundef !40
  %3151 = trunc i8 %3150 to i1
  store i1 %3151, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3155

3152:                                             ; preds = %3145
  %3153 = load i8, ptr %60, align 1, !tbaa !41, !range !39, !noundef !40
  %3154 = trunc i8 %3153 to i1
  store i1 %3154, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3155

3155:                                             ; preds = %3152, %3149
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 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 %3156

3156:                                             ; preds = %3155, %358, %348, %303
  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 %3157

3157:                                             ; preds = %3156, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #14
  %3158 = load i1, ptr %9, align 1
  ret i1 %3158

3159:                                             ; preds = %1996
  %3160 = load ptr, ptr %105, align 8
  %3161 = load i32, ptr %106, align 4
  %3162 = insertvalue { ptr, i32 } poison, ptr %3160, 0
  %3163 = insertvalue { ptr, i32 } %3162, i32 %3161, 1
  resume { ptr, i32 } %3163

3164:                                             ; preds = %1219
  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(3728), i32 noundef) #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728)) #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(3728)) #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(3728)) #4 align 2

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114), 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(3728)) #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 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(3728)) #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(114), 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(168), 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 131}
!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, !14, i64 64, !14, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !13, i64 84, !13, i64 92, !13, i64 100, !13, i64 108, !13, i64 116, !15, i64 124, !15, i64 125, !15, i64 126, !15, i64 127, !15, i64 128, !15, i64 129, !15, i64 130, !15, i64 131, !15, i64 132, !15, i64 133, !15, i64 134, !15, i64 135, !7, i64 136, !16, i64 138, !16, i64 140, !16, i64 142, !10, i64 144, !7, i64 148, !7, i64 149, !7, i64 150, !15, i64 151, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !13, i64 176, !13, i64 184, !17, i64 192, !18, i64 208, !20, i64 536, !20, i64 552, !20, i64 568, !20, i64 584, !20, i64 600, !20, i64 616, !10, i64 632, !14, i64 636, !14, i64 640, !27, i64 648, !29, i64 664, !14, i64 680, !10, i64 684, !6, i64 688, !30, i64 696, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !6, i64 896, !7, i64 904, !7, i64 912, !15, i64 944, !10, i64 948, !10, i64 952}
!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, !14, i64 48, !14, i64 52, !19, i64 56, !19, i64 60, !19, i64 64, !10, i64 68, !10, i64 72, !20, i64 76, !20, i64 92, !21, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !15, i64 128, !15, i64 129, !15, i64 130, !13, i64 132, !22, i64 140, !10, i64 176, !10, i64 180, !23, i64 184, !6, i64 200, !6, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !14, i64 236, !14, i64 240, !24, i64 248, !25, i64 264, !25, i64 280, !26, i64 296, !7, i64 312}
!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 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!26 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS12ImGuiStorage", !28, i64 0}
!28 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!29 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS10ImDrawList", !31, i64 0, !32, i64 16, !33, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !6, i64 80, !6, i64 88, !34, i64 96, !35, i64 112, !36, i64 128, !37, i64 144}
!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 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !38, i64 8}
!38 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!15, !15, i64 0}
!42 = !{i64 0, i64 4, !43, i64 4, i64 4, !43}
!43 = !{!14, !14, i64 0}
!44 = !{!45, !14, i64 6432}
!45 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !46, i64 8, !47, i64 5472, !6, i64 6424, !14, i64 6432, !14, i64 6436, !48, i64 6440, !50, i64 6648, !10, i64 6656, !10, i64 6660, !10, i64 6664, !15, i64 6668, !15, i64 6669, !15, i64 6670, !23, i64 6672, !23, i64 6688, !23, i64 6704, !23, i64 6720, !27, i64 6736, !10, i64 6752, !6, i64 6760, !6, i64 6768, !6, i64 6776, !6, i64 6784, !6, i64 6792, !13, i64 6800, !14, i64 6808, !10, i64 6812, !15, i64 6816, !10, i64 6820, !14, i64 6824, !14, i64 6828, !10, i64 6832, !10, i64 6836, !14, i64 6840, !15, i64 6844, !15, i64 6845, !15, i64 6846, !15, i64 6847, !15, i64 6848, !10, i64 6852, !10, i64 6856, !51, i64 6864, !13, i64 6872, !6, i64 6880, !52, i64 6888, !10, i64 6892, !10, i64 6896, !15, i64 6900, !15, i64 6901, !6, i64 6904, !10, i64 6912, !14, i64 6916, !53, i64 6920, !54, i64 7024, !55, i64 7048, !56, i64 7064, !57, i64 7080, !58, i64 7096, !58, i64 7112, !6, i64 7128, !10, i64 7136, !10, i64 7140, !10, i64 7144, !10, i64 7148, !10, i64 7152, !10, i64 7156, !10, i64 7160, !10, i64 7164, !10, i64 7168, !10, i64 7172, !52, i64 7176, !20, i64 7180, !10, i64 7196, !21, i64 7200, !10, i64 7204, !15, i64 7208, !15, i64 7209, !15, i64 7210, !15, i64 7211, !15, i64 7212, !15, i64 7213, !15, i64 7214, !10, i64 7216, !20, i64 7220, !15, i64 7236, !15, i64 7237, !10, i64 7240, !59, i64 7244, !10, i64 7248, !10, i64 7252, !10, i64 7256, !60, i64 7264, !60, i64 7312, !60, i64 7360, !6, i64 7408, !6, i64 7416, !6, i64 7424, !14, i64 7432, !14, i64 7436, !15, i64 7440, !6, i64 7448, !6, i64 7456, !10, i64 7464, !10, i64 7468, !10, i64 7472, !10, i64 7476, !15, i64 7480, !61, i64 7488, !62, i64 7544, !14, i64 7576, !30, i64 7584, !30, i64 7752, !10, i64 7920, !15, i64 7924, !15, i64 7925, !10, i64 7928, !10, i64 7932, !10, i64 7936, !63, i64 7944, !20, i64 8008, !10, i64 8024, !10, i64 8028, !14, i64 8032, !10, i64 8036, !10, i64 8040, !10, i64 8044, !64, i64 8048, !7, i64 8064, !6, i64 8080, !65, i64 8088, !67, i64 8128, !68, i64 8144, !13, i64 8160, !69, i64 8168, !73, i64 11896, !10, i64 12016, !10, i64 12020, !14, i64 12024, !14, i64 12028, !7, i64 12032, !49, i64 12044, !15, i64 12060, !14, i64 12064, !14, i64 12068, !14, i64 12072, !10, i64 12076, !70, i64 12080, !17, i64 12096, !13, i64 12112, !13, i64 12120, !15, i64 12128, !14, i64 12132, !75, i64 12136, !76, i64 12152, !77, i64 12168, !15, i64 12184, !78, i64 12188, !6, i64 12192, !75, i64 12200, !14, i64 12216, !15, i64 12220, !10, i64 12224, !10, i64 12228, !10, i64 12232, !15, i64 12236, !10, i64 12240, !7, i64 12244, !10, i64 12724, !14, i64 12728, !10, i64 12732, !10, i64 12736, !10, i64 12740, !7, i64 12744}
!46 = !{!"_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, !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, !6, i64 288, !13, i64 296, !7, i64 304, !14, i64 312, !14, i64 316, !15, i64 320, !15, i64 321, !15, i64 322, !15, i64 323, !7, i64 324, !7, i64 836, !15, i64 920, !15, i64 921, !15, i64 922, !15, i64 923, !15, i64 924, !15, i64 925, !15, i64 926, !14, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !10, i64 948, !13, i64 952, !13, i64 960, !7, i64 968, !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, !16, i64 5440, !32, i64 5448}
!47 = !{!"_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, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !10, i64 128, !13, i64 132, !13, i64 140, !13, i64 148, !13, i64 156, !14, i64 164, !15, i64 168, !15, i64 169, !14, i64 172, !14, i64 176, !7, i64 180}
!48 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !49, i64 28, !10, i64 44, !7, i64 48, !7, i64 144}
!49 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!50 = !{!"double", !7, i64 0}
!51 = !{!"long long", !7, i64 0}
!52 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!53 = !{!"_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, !15, i64 48, !20, i64 52, !6, i64 72, !6, i64 80, !14, i64 88, !13, i64 92}
!54 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !10, i64 8, !10, i64 12, !15, i64 16}
!55 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!56 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!60 = !{!"_ZTS18ImGuiNavMoveResult", !6, i64 0, !10, i64 8, !10, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !20, i64 28}
!61 = !{!"_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}
!62 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!63 = !{!"_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}
!64 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!65 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !66, i64 0, !27, i64 16, !10, i64 32}
!66 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !6, i64 8}
!68 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !32, i64 16, !70, i64 32, !70, i64 48, !15, i64 64, !10, i64 68, !14, i64 72, !71, i64 76, !14, i64 3696, !15, i64 3700, !15, i64 3701, !10, i64 3704, !6, i64 3712, !6, i64 3720}
!70 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!71 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 12, !7, i64 13, !7, i64 14, !7, i64 15, !7, i64 16, !7, i64 17, !7, i64 18, !7, i64 19, !14, i64 20, !72, i64 24}
!72 = !{!"_ZTSN5ImStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !16, i64 3582, !16, i64 3584, !10, i64 3588, !10, i64 3592}
!73 = !{!"_ZTS6ImFont", !25, i64 0, !14, i64 16, !14, i64 20, !32, i64 24, !74, i64 40, !6, i64 56, !13, i64 64, !6, i64 72, !6, i64 80, !16, i64 88, !16, i64 90, !16, i64 92, !15, i64 94, !14, i64 96, !14, i64 100, !14, i64 104, !10, i64 108, !7, i64 112}
!74 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!75 = !{!"_ZTS15ImGuiTextBuffer", !70, i64 0}
!76 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !70, i64 0}
!78 = !{!"_ZTS12ImGuiLogType", !7, i64 0}
!79 = !{!13, !14, i64 4}
!80 = !{!47, !14, i64 60}
!81 = !{!13, !14, i64 0}
!82 = !{!47, !14, i64 80}
!83 = !{!47, !14, i64 64}
!84 = !{!47, !14, i64 68}
!85 = !{!45, !6, i64 6760}
!86 = !{!12, !10, i64 320}
!87 = !{!12, !10, i64 328}
!88 = !{!12, !14, i64 116}
!89 = !{!45, !10, i64 7920}
!90 = !{!45, !6, i64 7448}
!91 = !{!45, !10, i64 7464}
!92 = !{!12, !10, i64 432}
!93 = !{!45, !10, i64 6832}
!94 = !{!45, !10, i64 7156}
!95 = !{!45, !10, i64 7144}
!96 = !{!45, !52, i64 7176}
!97 = !{!45, !10, i64 6896}
!98 = !{!69, !6, i64 56}
!99 = !{!69, !15, i64 64}
!100 = !{!69, !6, i64 24}
!101 = !{!69, !10, i64 4}
!102 = !{!69, !10, i64 8}
!103 = !{!69, !10, i64 0}
!104 = !{!69, !14, i64 72}
!105 = !{!69, !7, i64 88}
!106 = !{!46, !15, i64 320}
!107 = !{!45, !10, i64 6852}
!108 = !{!45, !10, i64 6856}
!109 = !{!45, !51, i64 6864}
!110 = !{!69, !10, i64 16}
!111 = !{!69, !6, i64 40}
!112 = !{!7, !7, i64 0}
!113 = !{!45, !6, i64 6424}
!114 = !{!73, !14, i64 20}
!115 = !{!73, !14, i64 96}
!116 = !{!73, !14, i64 100}
!117 = !{!73, !14, i64 104}
!118 = !{!73, !6, i64 72}
!119 = !{!73, !6, i64 56}
!120 = !{!121, !14, i64 4}
!121 = !{!"_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}
!122 = !{!73, !14, i64 16}
!123 = !{!69, !10, i64 68}
!124 = !{!69, !10, i64 3704}
!125 = !{!69, !6, i64 3712}
!126 = !{!69, !6, i64 3720}
!127 = !{!45, !15, i64 6845}
!128 = !{!45, !10, i64 12740}
!129 = !{!46, !14, i64 296}
!130 = !{!20, !14, i64 0}
!131 = !{!47, !14, i64 56}
!132 = !{!46, !14, i64 300}
!133 = !{!12, !14, i64 212}
!134 = !{!46, !15, i64 193}
!135 = !{!69, !15, i64 3701}
!136 = !{!46, !14, i64 952}
!137 = !{!46, !14, i64 956}
!138 = !{!69, !15, i64 3700}
!139 = !{!46, !15, i64 322}
!140 = !{!46, !15, i64 323}
!141 = !{!46, !15, i64 321}
!142 = !{!16, !16, i64 0}
!143 = !{!46, !10, i64 5448}
!144 = distinct !{!144, !145}
!145 = !{!"llvm.loop.mustprogress"}
!146 = !{!45, !15, i64 6844}
!147 = !{!12, !14, i64 88}
!148 = !{!46, !6, i64 256}
!149 = !{!69, !10, i64 80}
!150 = !{!69, !10, i64 84}
!151 = distinct !{!151, !145}
!152 = !{!69, !10, i64 48}
!153 = !{!32, !6, i64 8}
!154 = !{!32, !10, i64 0}
!155 = !{!69, !10, i64 32}
!156 = !{!157, !10, i64 0}
!157 = !{!"_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}
!158 = !{!157, !10, i64 4}
!159 = !{!157, !6, i64 8}
!160 = !{!157, !10, i64 20}
!161 = !{!157, !6, i64 24}
!162 = !{!157, !10, i64 32}
!163 = !{!157, !10, i64 36}
!164 = !{!157, !15, i64 40}
!165 = !{!69, !10, i64 76}
!166 = !{!157, !10, i64 44}
!167 = !{!157, !10, i64 48}
!168 = !{!157, !10, i64 52}
!169 = !{!20, !14, i64 4}
!170 = distinct !{!170, !145}
!171 = !{!49, !14, i64 12}
!172 = !{!49, !14, i64 4}
!173 = distinct !{!173, !145}
!174 = !{!12, !6, i64 688}
!175 = distinct !{!175, !145}
!176 = !{!46, !14, i64 16}
!177 = !{!69, !14, i64 3696}
!178 = !{!45, !15, i64 202}
!179 = !{!45, !15, i64 12184}
!180 = !{!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.7 = 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 [106 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.62 = 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(956), 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(168), 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

declare void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168), 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: 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 @_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.7, 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 = alloca %struct.ImVec2, align 4
  %53 = alloca %struct.ImVec2, align 8
  %54 = tail call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %55 = getelementptr inbounds i8, ptr %54, i64 131
  %56 = load i8, ptr %55, align 1, !tbaa !5, !range !37, !noundef !38
  %57 = trunc nuw i8 %56 to i1
  br i1 %57, label %1363, label %58

58:                                               ; preds = %8
  %59 = and i32 %5, 128
  %.not862.not = icmp eq i32 %59, 0
  %60 = and i32 %5, 1048576
  %61 = icmp ne i32 %60, 0
  %62 = and i32 %5, 1048704
  %.not863 = icmp eq i32 %62, 1048704
  br i1 %.not863, label %63, label %64

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

64:                                               ; preds = %58
  %65 = and i32 %5, 64
  %.not864 = icmp eq i32 %65, 0
  %66 = and i32 %5, 1024
  %.not865 = icmp eq i32 %66, 0
  %67 = and i32 %5, 1088
  %.not866 = icmp eq i32 %67, 1088
  br i1 %.not866, label %68, label %69

68:                                               ; preds = %64
  tail call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 3455, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

69:                                               ; preds = %64
  %70 = load ptr, ptr @GImGui, align 8, !tbaa !39
  %71 = and i32 %5, 16384
  %72 = icmp ne i32 %71, 0
  %73 = and i32 %5, 32768
  %.not867 = icmp eq i32 %73, 0
  %74 = and i32 %5, 65536
  %75 = icmp eq i32 %74, 0
  %76 = and i32 %5, 262144
  %.not868 = icmp eq i32 %76, 0
  %77 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not868, %77
  br i1 %or.cond17, label %79, label %78

78:                                               ; preds = %69
  tail call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 3468, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

79:                                               ; preds = %69
  br i1 %61, label %80, label %81

80:                                               ; preds = %79
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %81

81:                                               ; preds = %80, %79
  %82 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(956) %54, ptr noundef %0, ptr noundef null)
  %83 = 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.0465.0.copyload = load <2 x float>, ptr %4, align 4
  %84 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %61, label %85, label %89

85:                                               ; preds = %81
  %86 = getelementptr inbounds i8, ptr %70, i64 6432
  %87 = load float, ptr %86, align 8, !tbaa !40
  %88 = fmul float %87, 8.000000e+00
  br label %90

89:                                               ; preds = %81
  %.sroa.0466.4.vec.extract = extractelement <2 x float> %83, i64 1
  br label %90

90:                                               ; preds = %89, %85
  %91 = phi float [ %88, %85 ], [ %.sroa.0466.4.vec.extract, %89 ]
  %92 = getelementptr inbounds i8, ptr %70, i64 5528
  %93 = getelementptr inbounds i8, ptr %70, i64 5532
  %94 = load float, ptr %93, align 4, !tbaa !75
  %95 = tail call float @llvm.fmuladd.f32(float %94, float 2.000000e+00, float %91)
  %96 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0465.0.copyload, float noundef %84, float noundef %95)
  store <2 x float> %96, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #15
  %97 = extractelement <2 x float> %96, i64 0
  %.sroa.0466.0.vec.extract = extractelement <2 x float> %83, i64 0
  %98 = fcmp ogt float %.sroa.0466.0.vec.extract, 0.000000e+00
  %99 = extractelement <2 x float> %96, i64 1
  br i1 %98, label %100, label %104

100:                                              ; preds = %90
  %101 = getelementptr inbounds i8, ptr %70, i64 5552
  %102 = load float, ptr %101, align 4, !tbaa !76
  %103 = fadd float %.sroa.0466.0.vec.extract, %102
  br label %104

104:                                              ; preds = %90, %100
  %105 = phi float [ %103, %100 ], [ 0.000000e+00, %90 ]
  %106 = fadd float %97, %105
  %107 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %106, float noundef %99)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #15
  %108 = getelementptr inbounds i8, ptr %54, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15
  %109 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %108, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %109, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %108, 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
  %110 = 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> %110, 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.0438.0.copyload = load float, ptr %9, align 8, !tbaa !77
  %.sroa.12.0.copyload = load float, ptr %107, align 4, !tbaa !77
  br i1 %61, label %111, label %134

111:                                              ; preds = %104
  %112 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %82, ptr noundef nonnull %11)
  br i1 %112, label %115, label %113

113:                                              ; preds = %111
  %114 = load float, ptr %93, align 4, !tbaa !75
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %114)
  call void @_ZN5ImGui8EndGroupEv()
  br label %1362

115:                                              ; preds = %111
  %116 = getelementptr inbounds i8, ptr %70, i64 5764
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %116)
  %117 = getelementptr inbounds i8, ptr %70, i64 5536
  %118 = load float, ptr %117, align 4, !tbaa !78
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 6, float noundef %118)
  %119 = getelementptr inbounds i8, ptr %70, i64 5540
  %120 = load float, ptr %119, align 4, !tbaa !79
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %120)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %92)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #15
  %121 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %121, ptr %15, align 8
  %122 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %0, i32 noundef %82, 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 %122, label %.thread, label %133

.thread:                                          ; preds = %115
  %123 = getelementptr inbounds i8, ptr %70, i64 6760
  %124 = load ptr, ptr %123, align 8, !tbaa !80
  %125 = getelementptr inbounds i8, ptr %124, i64 320
  %126 = load i32, ptr %125, align 8, !tbaa !81
  %127 = getelementptr inbounds i8, ptr %124, i64 328
  %128 = load i32, ptr %127, align 8, !tbaa !82
  %129 = or i32 %128, %126
  store i32 %129, ptr %127, align 8, !tbaa !82
  %130 = getelementptr inbounds i8, ptr %124, i64 116
  %131 = load float, ptr %130, align 4, !tbaa !83
  %132 = fsub float %.sroa.0438.0.copyload, %131
  br label %137

133:                                              ; preds = %115
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1362

134:                                              ; preds = %104
  %135 = load float, ptr %93, align 4, !tbaa !75
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %135)
  %136 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %82, ptr noundef nonnull %11)
  br i1 %136, label %137, label %1362

137:                                              ; preds = %.thread, %134
  %.sroa.0438.1 = phi float [ %.sroa.0438.0.copyload, %134 ], [ %132, %.thread ]
  %.1793 = phi ptr [ %54, %134 ], [ %124, %.thread ]
  %138 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %82)
  br i1 %138, label %139, label %141

139:                                              ; preds = %137
  %140 = getelementptr inbounds i8, ptr %70, i64 7920
  store i32 1, ptr %140, align 8, !tbaa !84
  br label %141

141:                                              ; preds = %139, %137
  %142 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %82)
  %143 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef nonnull %54, i32 noundef %82)
  br i1 %143, label %144, label %154

144:                                              ; preds = %141
  %145 = getelementptr inbounds i8, ptr %70, i64 7448
  %146 = load ptr, ptr %145, align 8, !tbaa !85
  %147 = icmp eq ptr %146, %54
  br i1 %147, label %148, label %154

148:                                              ; preds = %144
  %149 = getelementptr inbounds i8, ptr %70, i64 7464
  %150 = load i32, ptr %149, align 8, !tbaa !86
  %151 = getelementptr inbounds i8, ptr %54, i64 432
  %152 = load i32, ptr %151, align 8, !tbaa !87
  %153 = icmp eq i32 %150, %152
  br label %154

154:                                              ; preds = %144, %148, %141
  %155 = phi i1 [ false, %141 ], [ false, %144 ], [ %153, %148 ]
  br i1 %138, label %156, label %160

156:                                              ; preds = %154
  %157 = getelementptr inbounds i8, ptr %70, i64 1056
  %158 = load i8, ptr %157, align 8, !tbaa !88, !range !37, !noundef !38
  %159 = trunc nuw i8 %158 to i1
  br label %160

160:                                              ; preds = %156, %154
  %161 = phi i1 [ false, %154 ], [ %159, %156 ]
  %162 = getelementptr inbounds i8, ptr %70, i64 6832
  %163 = load i32, ptr %162, align 8, !tbaa !89
  %.not869 = icmp eq i32 %163, %82
  br i1 %.not869, label %176, label %164

164:                                              ; preds = %160
  %165 = getelementptr inbounds i8, ptr %70, i64 7156
  %166 = load i32, ptr %165, align 4, !tbaa !90
  %167 = icmp eq i32 %166, %82
  br i1 %167, label %176, label %168

168:                                              ; preds = %164
  %169 = getelementptr inbounds i8, ptr %70, i64 7144
  %170 = load i32, ptr %169, align 8, !tbaa !91
  %171 = icmp eq i32 %170, %82
  br i1 %171, label %172, label %176

172:                                              ; preds = %168
  %173 = getelementptr inbounds i8, ptr %70, i64 7176
  %174 = load i32, ptr %173, align 8, !tbaa !92
  %175 = icmp eq i32 %174, 3
  br label %176

176:                                              ; preds = %164, %172, %168, %160
  %177 = phi i1 [ false, %160 ], [ true, %164 ], [ false, %168 ], [ %175, %172 ]
  %178 = icmp ne ptr %142, null
  %or.cond = and i1 %61, %178
  br i1 %or.cond, label %179, label %190

179:                                              ; preds = %176
  %180 = icmp eq i32 %163, 0
  br i1 %180, label %181, label %186

181:                                              ; preds = %179
  %182 = getelementptr inbounds i8, ptr %70, i64 6896
  %183 = load i32, ptr %182, align 8, !tbaa !93
  %184 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.1793, i32 noundef 1)
  %185 = icmp eq i32 %183, %184
  %.pre = load i32, ptr %162, align 8, !tbaa !89
  br label %186

186:                                              ; preds = %181, %179
  %187 = phi i32 [ %.pre, %181 ], [ %163, %179 ]
  %.ph = phi i1 [ %185, %181 ], [ false, %179 ]
  %188 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.1793, i32 noundef 1)
  %189 = icmp eq i32 %187, %188
  %.pre1071 = load i32, ptr %162, align 8, !tbaa !89
  br label %190

190:                                              ; preds = %176, %186
  %191 = phi i32 [ %.pre1071, %186 ], [ %163, %176 ]
  %192 = phi i1 [ %.ph, %186 ], [ false, %176 ]
  %193 = phi i1 [ %189, %186 ], [ false, %176 ]
  %.not870 = icmp eq i32 %191, %82
  br i1 %.not870, label %194, label %.thread996

194:                                              ; preds = %190
  %brmerge900 = select i1 %143, i1 true, i1 %161
  %195 = select i1 %brmerge900, i1 true, i1 %192
  %spec.select990 = select i1 %195, i1 true, i1 %177
  %196 = select i1 %spec.select990, i1 true, i1 %193
  br label %257

.thread996:                                       ; preds = %190
  %197 = and i32 %5, 16
  %.not871 = icmp ne i32 %197, 0
  %brmerge = select i1 %.not871, i1 true, i1 %177
  %198 = xor i1 %61, true
  %spec.select986 = and i1 %brmerge, %198
  %brmerge900997 = select i1 %143, i1 true, i1 %161
  %199 = select i1 %brmerge900997, i1 true, i1 %192
  %spec.select990999 = select i1 %199, i1 true, i1 %177
  %200 = select i1 %spec.select990999, i1 true, i1 %193
  br i1 %200, label %201, label %257

201:                                              ; preds = %.thread996
  %202 = getelementptr inbounds i8, ptr %70, i64 8168
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %202)
  %203 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16
  %204 = trunc i64 %203 to i32
  %205 = getelementptr inbounds i8, ptr %70, i64 8216
  %206 = add nsw i32 %204, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %205, i32 noundef %206)
  %207 = getelementptr inbounds i8, ptr %70, i64 8224
  %208 = load ptr, ptr %207, align 8, !tbaa !94
  %209 = sext i32 %206 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %208, ptr align 1 %2, i64 %209, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #15
  store ptr null, ptr %16, align 8, !tbaa !39
  %210 = getelementptr inbounds i8, ptr %70, i64 8184
  %211 = add nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %210, i32 noundef %211)
  %212 = getelementptr inbounds i8, ptr %70, i64 8200
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %212, i32 noundef 0)
  %213 = getelementptr inbounds i8, ptr %70, i64 8232
  store i8 0, ptr %213, align 8, !tbaa !95
  %214 = getelementptr inbounds i8, ptr %70, i64 8192
  %215 = load ptr, ptr %214, align 8, !tbaa !96
  %216 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %215, i32 noundef %3, ptr noundef %2, ptr noundef null, ptr noundef nonnull %16)
  %217 = getelementptr inbounds i8, ptr %70, i64 8172
  store i32 %216, ptr %217, align 4, !tbaa !97
  %218 = load ptr, ptr %16, align 8, !tbaa !39
  %219 = ptrtoint ptr %218 to i64
  %220 = ptrtoint ptr %2 to i64
  %221 = sub i64 %219, %220
  %222 = trunc i64 %221 to i32
  %223 = getelementptr inbounds i8, ptr %70, i64 8176
  store i32 %222, ptr %223, align 8, !tbaa !98
  %224 = load i32, ptr %202, align 8, !tbaa !99
  %225 = icmp eq i32 %224, %82
  br i1 %225, label %226, label %227

226:                                              ; preds = %201
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %202)
  br label %231

227:                                              ; preds = %201
  store i32 %82, ptr %202, align 8, !tbaa !99
  %228 = getelementptr inbounds i8, ptr %70, i64 8240
  store float 0.000000e+00, ptr %228, align 8, !tbaa !100
  %229 = getelementptr inbounds i8, ptr %70, i64 8244
  %230 = zext i1 %198 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %229, i32 noundef %230)
  %spec.select901 = select i1 %155, i1 true, i1 %spec.select986
  %spec.select991 = select i1 %198, i1 %spec.select901, i1 false
  br label %231

231:                                              ; preds = %227, %226
  %.0799 = phi i1 [ %spec.select986, %226 ], [ %spec.select991, %227 ]
  %232 = and i32 %5, 8192
  %.not873 = icmp eq i32 %232, 0
  br i1 %.not873, label %235, label %233

233:                                              ; preds = %231
  %234 = getelementptr inbounds i8, ptr %70, i64 8256
  store i8 1, ptr %234, align 4, !tbaa !101
  br label %235

235:                                              ; preds = %233, %231
  br i1 %61, label %244, label %236

236:                                              ; preds = %235
  %not. = xor i1 %143, true
  %237 = select i1 %not., i1 true, i1 %155
  br i1 %237, label %238, label %243

238:                                              ; preds = %236
  br i1 %161, label %239, label %244

239:                                              ; preds = %238
  %240 = getelementptr inbounds i8, ptr %70, i64 328
  %241 = load i8, ptr %240, align 8, !tbaa !102, !range !37, !noundef !38
  %242 = trunc nuw i8 %241 to i1
  br i1 %242, label %243, label %244

243:                                              ; preds = %239, %236
  br label %244

244:                                              ; preds = %235, %238, %239, %243
  %.1800 = phi i1 [ %.0799, %235 ], [ true, %243 ], [ %.0799, %239 ], [ %.0799, %238 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #15
  %.pre1072 = load i32, ptr %162, align 8, !tbaa !89
  %.not874 = icmp ne i32 %.pre1072, %82
  %brmerge903.not = and i1 %spec.select990999, %.not874
  br i1 %brmerge903.not, label %245, label %.thread1006

245:                                              ; preds = %244
  %246 = load i32, ptr %202, align 8, !tbaa !99
  %247 = icmp eq i32 %246, %82
  br i1 %247, label %248, label %.critedge

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

248:                                              ; preds = %245
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %82, ptr noundef nonnull %54)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %82, ptr noundef nonnull %54)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %54)
  %249 = getelementptr inbounds i8, ptr %70, i64 6852
  %brmerge904.not = icmp eq i32 %62, 0
  %spec.select.v = select i1 %brmerge904.not, i32 3, i32 15
  %250 = load <2 x i32>, ptr %249, align 4, !tbaa !103
  %251 = insertelement <2 x i32> <i32 poison, i32 2>, i32 %spec.select.v, i64 0
  %252 = or <2 x i32> %250, %251
  store <2 x i32> %252, ptr %249, align 4, !tbaa !103
  %253 = getelementptr inbounds i8, ptr %70, i64 6864
  %254 = load i64, ptr %253, align 8, !tbaa !104
  %spec.select905.v = select i1 %61, i64 480, i64 384
  %spec.select905 = or i64 %254, %spec.select905.v
  store i64 %spec.select905, ptr %253, align 8, !tbaa !104
  %.not876 = icmp eq i32 %67, 0
  br i1 %.not876, label %.thread1006, label %255

255:                                              ; preds = %248
  %256 = or i64 %spec.select905, 1
  store i64 %256, ptr %253, align 8, !tbaa !104
  br label %.thread1006

257:                                              ; preds = %.thread996, %194
  %.ph1095 = phi i32 [ %82, %194 ], [ %191, %.thread996 ]
  %.ph1096 = phi i1 [ %196, %194 ], [ false, %.thread996 ]
  %.2801.ph = phi i1 [ false, %194 ], [ %spec.select986, %.thread996 ]
  %258 = icmp eq i32 %.ph1095, %82
  %259 = icmp eq ptr %142, null
  %or.cond5 = and i1 %259, %258
  br i1 %or.cond5, label %260, label %.thread1006

260:                                              ; preds = %257
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %.thread1006

.thread1006:                                      ; preds = %244, %255, %248, %260, %257
  %.07941106 = phi ptr [ %202, %255 ], [ %202, %248 ], [ null, %260 ], [ %142, %257 ], [ %202, %244 ]
  %.28011103 = phi i1 [ %.1800, %255 ], [ %.1800, %248 ], [ %.2801.ph, %260 ], [ %.2801.ph, %257 ], [ %.1800, %244 ]
  %261 = phi i1 [ true, %255 ], [ true, %248 ], [ %.ph1096, %260 ], [ %.ph1096, %257 ], [ true, %244 ]
  %262 = load i32, ptr %162, align 8, !tbaa !89
  %263 = icmp eq i32 %262, %82
  br i1 %263, label %.thread1008, label %267

.thread1008:                                      ; preds = %.thread1006
  %264 = getelementptr inbounds i8, ptr %70, i64 1056
  %265 = load i8, ptr %264, align 8, !tbaa !88, !range !37, !noundef !38
  %266 = trunc nuw i8 %265 to i1
  %.not1052 = xor i1 %261, true
  %not.brmerge907 = and i1 %.not1052, %266
  %spec.select987 = zext i1 %not.brmerge907 to i8
  br label %270

267:                                              ; preds = %.thread1006
  %268 = icmp ne ptr %.07941106, null
  %269 = select i1 %268, i1 %193, i1 false
  br label %270

270:                                              ; preds = %.thread1008, %267
  %.07951010 = phi i8 [ 0, %267 ], [ %spec.select987, %.thread1008 ]
  %271 = phi i1 [ %269, %267 ], [ true, %.thread1008 ]
  %272 = icmp ne ptr %.07941106, null
  br i1 %272, label %273, label %.thread1011

273:                                              ; preds = %270
  %274 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  %spec.select908 = select i1 %274, i1 %271, i1 false
  %or.cond988 = select i1 %72, i1 %271, i1 false
  br i1 %or.cond988, label %275, label %.thread1011

275:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #15
  store ptr null, ptr %17, align 8, !tbaa !39
  %276 = getelementptr inbounds i8, ptr %.07941106, i64 16
  %277 = add nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %276, i32 noundef %277)
  %278 = getelementptr inbounds i8, ptr %.07941106, i64 24
  %279 = load ptr, ptr %278, align 8, !tbaa !96
  %280 = load i32, ptr %276, align 8, !tbaa !105
  %281 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %279, i32 noundef %280, ptr noundef %2, ptr noundef null, ptr noundef nonnull %17)
  %282 = getelementptr inbounds i8, ptr %.07941106, i64 4
  store i32 %281, ptr %282, align 4, !tbaa !97
  %283 = load ptr, ptr %17, align 8, !tbaa !39
  %284 = ptrtoint ptr %283 to i64
  %285 = ptrtoint ptr %2 to i64
  %286 = sub i64 %284, %285
  %287 = trunc i64 %286 to i32
  %288 = getelementptr inbounds i8, ptr %.07941106, i64 8
  store i32 %287, ptr %288, align 8, !tbaa !98
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  %289 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  %290 = and i1 %spec.select908, %289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #15
  br label %.thread1011

.thread1011:                                      ; preds = %270, %275, %273
  %.0803.in = phi i1 [ %290, %275 ], [ %spec.select908, %273 ], [ false, %270 ]
  %brmerge910 = select i1 %271, i1 true, i1 %.0803.in
  br i1 %brmerge910, label %295, label %291

291:                                              ; preds = %.thread1011
  %292 = load i32, ptr %162, align 8, !tbaa !89
  %293 = icmp eq i32 %292, %82
  %.not = xor i1 %72, true
  %294 = and i1 %293, %.not
  %or.cond911 = and i1 %272, %294
  br i1 %or.cond911, label %296, label %300

295:                                              ; preds = %.thread1011
  %.not.old = xor i1 %72, true
  %or.cond9.old = and i1 %272, %.not.old
  br i1 %or.cond9.old, label %296, label %300

296:                                              ; preds = %291, %295
  %297 = getelementptr inbounds i8, ptr %.07941106, i64 64
  %298 = load i8, ptr %297, align 8, !tbaa !95, !range !37, !noundef !38
  %299 = trunc nuw i8 %298 to i1
  br label %300

300:                                              ; preds = %296, %295, %291
  %301 = phi i1 [ false, %295 ], [ false, %291 ], [ %299, %296 ]
  %.not877 = icmp eq ptr %1, null
  br i1 %.not877, label %310, label %302

302:                                              ; preds = %300
  br i1 %301, label %303, label %306

303:                                              ; preds = %302
  %304 = getelementptr inbounds i8, ptr %.07941106, i64 40
  %305 = load ptr, ptr %304, align 8, !tbaa !106
  br label %306

306:                                              ; preds = %302, %303
  %307 = phi ptr [ %305, %303 ], [ %2, %302 ]
  %308 = load i8, ptr %307, align 1, !tbaa !107
  %309 = icmp eq i8 %308, 0
  br label %310

310:                                              ; preds = %306, %300
  %311 = phi i1 [ false, %300 ], [ %309, %306 ]
  %brmerge912 = select i1 %.not867, i1 true, i1 %311
  br i1 %brmerge912, label %345, label %312

312:                                              ; preds = %310
  %313 = getelementptr inbounds i8, ptr %70, i64 6424
  %314 = load ptr, ptr %313, align 8, !tbaa !108
  %315 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114) %314, i16 noundef zeroext 42)
  %316 = getelementptr inbounds i8, ptr %70, i64 11896
  %317 = load ptr, ptr %313, align 8, !tbaa !108
  %318 = getelementptr inbounds i8, ptr %317, i64 20
  %319 = load float, ptr %318, align 4, !tbaa !109
  %320 = getelementptr inbounds i8, ptr %70, i64 11916
  store float %319, ptr %320, align 4, !tbaa !109
  %321 = getelementptr inbounds i8, ptr %317, i64 96
  %322 = load float, ptr %321, align 8, !tbaa !110
  %323 = getelementptr inbounds i8, ptr %70, i64 11992
  store float %322, ptr %323, align 8, !tbaa !110
  %324 = getelementptr inbounds i8, ptr %317, i64 64
  %325 = getelementptr inbounds i8, ptr %70, i64 11960
  %326 = load i64, ptr %324, align 8
  store i64 %326, ptr %325, align 8
  %327 = getelementptr inbounds i8, ptr %317, i64 100
  %328 = getelementptr inbounds i8, ptr %70, i64 11996
  %329 = load <2 x float>, ptr %327, align 4, !tbaa !77
  store <2 x float> %329, ptr %328, align 4, !tbaa !77
  %330 = getelementptr inbounds i8, ptr %317, i64 72
  %331 = load ptr, ptr %330, align 8, !tbaa !111
  %332 = getelementptr inbounds i8, ptr %70, i64 11968
  store ptr %331, ptr %332, align 8, !tbaa !111
  %333 = getelementptr inbounds i8, ptr %70, i64 11952
  store ptr %315, ptr %333, align 8, !tbaa !112
  %334 = getelementptr inbounds i8, ptr %315, i64 4
  %335 = load float, ptr %334, align 4, !tbaa !113
  %336 = getelementptr inbounds i8, ptr %70, i64 11912
  store float %335, ptr %336, align 8, !tbaa !115
  %337 = getelementptr inbounds i8, ptr %70, i64 11936
  %338 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %337)
  br i1 %338, label %339, label %.critedge11

339:                                              ; preds = %312
  %340 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %316)
  br i1 %340, label %341, label %.critedge11

341:                                              ; preds = %339
  %342 = getelementptr inbounds i8, ptr %70, i64 11920
  %343 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
  br i1 %343, label %344, label %.critedge11

.critedge11:                                      ; preds = %339, %312, %341
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 3642, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

344:                                              ; preds = %341
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %316)
  br label %345

345:                                              ; preds = %310, %344
  %346 = load i32, ptr %162, align 8, !tbaa !89
  %347 = icmp eq i32 %346, %82
  br i1 %347, label %348, label %490

348:                                              ; preds = %345
  br i1 %272, label %350, label %349

349:                                              ; preds = %348
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.1, i32 noundef 3650, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

350:                                              ; preds = %348
  %351 = getelementptr inbounds i8, ptr %.07941106, i64 8
  %352 = load i32, ptr %351, align 8, !tbaa !98
  %353 = getelementptr inbounds i8, ptr %.07941106, i64 68
  store i32 %3, ptr %353, align 4, !tbaa !116
  %354 = getelementptr inbounds i8, ptr %.07941106, i64 3704
  store i32 %5, ptr %354, align 8, !tbaa !117
  %355 = getelementptr inbounds i8, ptr %.07941106, i64 3712
  store ptr %6, ptr %355, align 8, !tbaa !118
  %356 = getelementptr inbounds i8, ptr %.07941106, i64 3720
  store ptr %7, ptr %356, align 8, !tbaa !119
  %357 = getelementptr inbounds i8, ptr %70, i64 312
  %358 = load i8, ptr %357, align 8, !tbaa !88, !range !37, !noundef !38
  %359 = xor i8 %358, 1
  %360 = getelementptr inbounds i8, ptr %70, i64 6845
  store i8 %359, ptr %360, align 1, !tbaa !120
  %361 = getelementptr inbounds i8, ptr %70, i64 12740
  store i32 1, ptr %361, align 4, !tbaa !121
  %362 = getelementptr inbounds i8, ptr %70, i64 304
  %363 = load float, ptr %362, align 8, !tbaa !122
  %364 = load float, ptr %11, align 8, !tbaa !123
  %365 = fsub float %363, %364
  %366 = load float, ptr %92, align 4, !tbaa !124
  %367 = fsub float %365, %366
  %368 = getelementptr inbounds i8, ptr %.07941106, i64 72
  %369 = load float, ptr %368, align 8, !tbaa !100
  %370 = fadd float %367, %369
  br i1 %61, label %371, label %379

371:                                              ; preds = %350
  %372 = getelementptr inbounds i8, ptr %70, i64 308
  %373 = load float, ptr %372, align 4, !tbaa !125
  %374 = getelementptr inbounds i8, ptr %.1793, i64 212
  %375 = load float, ptr %374, align 4, !tbaa !126
  %376 = fsub float %373, %375
  %377 = load float, ptr %93, align 4, !tbaa !75
  %378 = fsub float %376, %377
  br label %383

379:                                              ; preds = %350
  %380 = getelementptr inbounds i8, ptr %70, i64 6432
  %381 = load float, ptr %380, align 8, !tbaa !40
  %382 = fmul float %381, 5.000000e-01
  br label %383

383:                                              ; preds = %379, %371
  %384 = phi float [ %378, %371 ], [ %382, %379 ]
  %385 = getelementptr inbounds i8, ptr %70, i64 201
  %386 = load i8, ptr %385, align 1, !tbaa !127, !range !37, !noundef !38
  %387 = trunc nuw i8 %386 to i1
  br i1 %.28011103, label %393, label %388

388:                                              ; preds = %383
  %.not913 = xor i1 %138, true
  %brmerge914 = select i1 %.not913, i1 true, i1 %387
  br i1 %brmerge914, label %395, label %389

389:                                              ; preds = %388
  %390 = getelementptr inbounds i8, ptr %70, i64 1061
  %391 = load i8, ptr %390, align 1, !tbaa !88, !range !37, !noundef !38
  %392 = trunc nuw i8 %391 to i1
  br i1 %392, label %393, label %395

393:                                              ; preds = %389, %383
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  %394 = getelementptr inbounds i8, ptr %.07941106, i64 3701
  store i8 1, ptr %394, align 1, !tbaa !128
  br label %430

395:                                              ; preds = %388, %389
  %396 = select i1 %138, i1 %387, i1 false
  br i1 %396, label %397, label %402

397:                                              ; preds = %395
  %398 = getelementptr inbounds i8, ptr %70, i64 1061
  %399 = load i8, ptr %398, align 1, !tbaa !88, !range !37, !noundef !38
  %400 = trunc nuw i8 %399 to i1
  br i1 %400, label %401, label %402

401:                                              ; preds = %397
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef 2097164)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef 6291469)
  br label %430

402:                                              ; preds = %395, %397
  %403 = getelementptr inbounds i8, ptr %70, i64 1056
  %404 = load i8, ptr %403, align 8, !tbaa !88, !range !37, !noundef !38
  %405 = trunc nuw i8 %404 to i1
  br i1 %405, label %406, label %413

406:                                              ; preds = %402
  %407 = getelementptr inbounds i8, ptr %.07941106, i64 3701
  %408 = load i8, ptr %407, align 1, !tbaa !128, !range !37, !noundef !38
  %409 = trunc nuw i8 %408 to i1
  br i1 %409, label %413, label %410

410:                                              ; preds = %406
  br i1 %138, label %411, label %430

411:                                              ; preds = %410
  %412 = getelementptr inbounds i8, ptr %.07941106, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.07941106, ptr noundef nonnull %412, float noundef %370, float noundef %384)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br label %430

413:                                              ; preds = %406, %402
  %414 = trunc nuw i8 %358 to i1
  br i1 %414, label %415, label %430

415:                                              ; preds = %413
  %416 = getelementptr inbounds i8, ptr %.07941106, i64 3701
  %417 = load i8, ptr %416, align 1, !tbaa !128, !range !37, !noundef !38
  %418 = trunc nuw i8 %417 to i1
  br i1 %418, label %430, label %419

419:                                              ; preds = %415
  %420 = getelementptr inbounds i8, ptr %70, i64 960
  %421 = load float, ptr %420, align 8, !tbaa !129
  %422 = fcmp une float %421, 0.000000e+00
  br i1 %422, label %427, label %423

423:                                              ; preds = %419
  %424 = getelementptr inbounds i8, ptr %70, i64 964
  %425 = load float, ptr %424, align 4, !tbaa !130
  %426 = fcmp une float %425, 0.000000e+00
  br i1 %426, label %427, label %430

427:                                              ; preds = %423, %419
  %428 = getelementptr inbounds i8, ptr %.07941106, i64 76
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.07941106, ptr noundef nonnull %428, float noundef %370, float noundef %384)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  %429 = getelementptr inbounds i8, ptr %.07941106, i64 3700
  store i8 1, ptr %429, align 4, !tbaa !131
  br label %430

430:                                              ; preds = %401, %413, %415, %423, %427, %410, %411, %393
  %431 = getelementptr inbounds i8, ptr %.07941106, i64 3701
  %432 = load i8, ptr %431, align 1, !tbaa !128, !range !37, !noundef !38
  %433 = trunc nuw i8 %432 to i1
  br i1 %433, label %434, label %438

434:                                              ; preds = %430
  %435 = load i8, ptr %357, align 8, !tbaa !88, !range !37, !noundef !38
  %436 = trunc nuw i8 %435 to i1
  br i1 %436, label %438, label %437

437:                                              ; preds = %434
  store i8 0, ptr %431, align 1, !tbaa !128
  br label %438

438:                                              ; preds = %437, %434, %430
  %439 = getelementptr inbounds i8, ptr %70, i64 328
  %440 = load i8, ptr %439, align 8, !tbaa !102, !range !37, !noundef !38
  %441 = trunc nuw i8 %440 to i1
  br i1 %441, label %442, label %447

442:                                              ; preds = %438
  %443 = getelementptr inbounds i8, ptr %70, i64 330
  %444 = load i8, ptr %443, align 2, !tbaa !132, !range !37, !noundef !38
  %445 = trunc nuw i8 %444 to i1
  %.not918 = xor i1 %445, true
  %446 = select i1 %445, i1 %387, i1 false
  br i1 %446, label %448, label %452

447:                                              ; preds = %438
  br i1 %387, label %448, label %452

448:                                              ; preds = %442, %447
  %449 = getelementptr inbounds i8, ptr %70, i64 331
  %450 = load i8, ptr %449, align 1, !tbaa !133, !range !37, !noundef !38
  %451 = trunc nuw i8 %450 to i1
  br label %452

452:                                              ; preds = %442, %447, %448
  %453 = phi i1 [ %.not918, %442 ], [ false, %447 ], [ %451, %448 ]
  br i1 %.not865, label %468, label %454

454:                                              ; preds = %452
  %455 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  %.not921 = xor i1 %455, true
  %brmerge922 = select i1 %.not921, i1 true, i1 %453
  br i1 %brmerge922, label %468, label %456

456:                                              ; preds = %454
  %457 = getelementptr inbounds i8, ptr %70, i64 329
  %458 = load i8, ptr %457, align 1, !tbaa !134, !range !37, !noundef !38
  %459 = trunc nuw i8 %458 to i1
  %brmerge923 = or i1 %72, %459
  br i1 %brmerge923, label %468, label %460

460:                                              ; preds = %456
  %461 = getelementptr inbounds i8, ptr %70, i64 5456
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #15
  store i16 9, ptr %18, align 2, !tbaa !135
  %462 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %461, ptr noundef nonnull align 2 dereferenceable(2) %18)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #15
  br i1 %462, label %468, label %463

463:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #15
  store i32 9, ptr %19, align 4, !tbaa !103
  %464 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %19, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %464, label %465, label %467

465:                                              ; preds = %463
  %466 = load i32, ptr %19, align 4, !tbaa !103
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %466)
  br label %467

467:                                              ; preds = %465, %463
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #15
  br label %468

468:                                              ; preds = %456, %454, %460, %467, %452
  %469 = getelementptr inbounds i8, ptr %70, i64 5456
  %470 = load i32, ptr %469, align 8, !tbaa !136
  %471 = icmp sgt i32 %470, 0
  br i1 %471, label %472, label %490

472:                                              ; preds = %468
  %brmerge924 = or i1 %72, %453
  %brmerge925 = select i1 %brmerge924, i1 true, i1 %177
  br i1 %brmerge925, label %.loopexit1059, label %.lr.ph

.lr.ph:                                           ; preds = %472
  %473 = getelementptr inbounds i8, ptr %70, i64 329
  br label %474

474:                                              ; preds = %.lr.ph, %486
  %.08201062 = phi i32 [ 0, %.lr.ph ], [ %487, %486 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #15
  %475 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %469, i32 noundef %.08201062)
  %476 = load i16, ptr %475, align 2, !tbaa !135
  %477 = zext i16 %476 to i32
  store i32 %477, ptr %20, align 4, !tbaa !103
  %478 = icmp eq i16 %476, 9
  br i1 %478, label %479, label %482

479:                                              ; preds = %474
  %480 = load i8, ptr %473, align 1, !tbaa !134, !range !37, !noundef !38
  %481 = trunc nuw i8 %480 to i1
  br i1 %481, label %486, label %482

482:                                              ; preds = %479, %474
  %483 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %483, label %484, label %486

484:                                              ; preds = %482
  %485 = load i32, ptr %20, align 4, !tbaa !103
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %485)
  br label %486

486:                                              ; preds = %482, %484, %479
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #15
  %487 = add nuw nsw i32 %.08201062, 1
  %488 = load i32, ptr %469, align 8, !tbaa !136
  %489 = icmp slt i32 %487, %488
  br i1 %489, label %474, label %.loopexit1059, !llvm.loop !137

.loopexit1059:                                    ; preds = %486, %472
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %469, i32 noundef 0)
  br label %490

490:                                              ; preds = %468, %.loopexit1059, %345
  %.0818 = phi i32 [ 0, %345 ], [ %352, %.loopexit1059 ], [ %352, %468 ]
  %491 = load i32, ptr %162, align 8, !tbaa !89
  %492 = icmp eq i32 %491, %82
  br i1 %492, label %493, label %822

493:                                              ; preds = %490
  %494 = getelementptr inbounds i8, ptr %70, i64 6844
  %495 = load i8, ptr %494, align 4, !tbaa !139, !range !37, !noundef !38
  %496 = trunc nuw i8 %495 to i1
  br i1 %496, label %.thread1124, label %497

497:                                              ; preds = %493
  %498 = trunc nuw i8 %.07951010 to i1
  br i1 %498, label %.thread1124, label %499

499:                                              ; preds = %497
  br i1 %272, label %501, label %500

500:                                              ; preds = %499
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.1, i32 noundef 3730, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

501:                                              ; preds = %499
  %502 = getelementptr inbounds i8, ptr %70, i64 329
  %503 = load i8, ptr %502, align 1, !tbaa !134, !range !37, !noundef !38
  %504 = trunc nuw i8 %503 to i1
  %505 = select i1 %504, i32 4194304, i32 0
  %506 = getelementptr inbounds i8, ptr %70, i64 201
  %507 = load i8, ptr %506, align 1, !tbaa !127, !range !37, !noundef !38
  %508 = trunc nuw i8 %507 to i1
  br i1 %508, label %509, label %521

509:                                              ; preds = %501
  %510 = getelementptr inbounds i8, ptr %70, i64 331
  %511 = load i8, ptr %510, align 1, !tbaa !133, !range !37, !noundef !38
  %512 = trunc nuw i8 %511 to i1
  br i1 %512, label %513, label %.thread1016

513:                                              ; preds = %509
  %514 = getelementptr inbounds i8, ptr %70, i64 328
  %515 = load i8, ptr %514, align 8, !tbaa !88, !range !37, !noundef !38
  %516 = trunc nuw i8 %515 to i1
  br i1 %516, label %.thread1016, label %.thread1119

.thread1119:                                      ; preds = %513
  %517 = getelementptr inbounds i8, ptr %70, i64 330
  %518 = load i8, ptr %517, align 2, !tbaa !132, !range !37, !noundef !38
  %519 = trunc nuw i8 %518 to i1
  %520 = select i1 %519, i1 true, i1 %504
  %spec.select10451121 = xor i1 %520, true
  br label %.thread1016

521:                                              ; preds = %501
  %522 = getelementptr inbounds i8, ptr %70, i64 328
  %523 = load i8, ptr %522, align 8, !tbaa !88, !range !37, !noundef !38
  %524 = trunc nuw i8 %523 to i1
  br i1 %524, label %525, label %.thread1018

525:                                              ; preds = %521
  %526 = getelementptr inbounds i8, ptr %70, i64 331
  %527 = load i8, ptr %526, align 1, !tbaa !133, !range !37, !noundef !38
  %528 = trunc nuw i8 %527 to i1
  br i1 %528, label %.thread1018, label %529

529:                                              ; preds = %525
  %530 = getelementptr inbounds i8, ptr %70, i64 330
  %531 = load i8, ptr %530, align 2, !tbaa !132, !range !37, !noundef !38
  %532 = trunc nuw i8 %531 to i1
  %533 = select i1 %532, i1 true, i1 %504
  %spec.select1045 = xor i1 %533, true
  br label %.thread1018

.thread1016:                                      ; preds = %.thread1119, %509, %513
  %534 = phi i1 [ false, %513 ], [ false, %509 ], [ %spec.select10451121, %.thread1119 ]
  %535 = trunc nuw i8 %511 to i1
  %536 = select i1 %535, i1 %504, i1 false
  br i1 %536, label %537, label %549

537:                                              ; preds = %.thread1016
  %538 = getelementptr inbounds i8, ptr %70, i64 328
  %539 = load i8, ptr %538, align 8, !tbaa !102, !range !37, !noundef !38
  %540 = trunc nuw i8 %539 to i1
  br i1 %540, label %549, label %541

541:                                              ; preds = %537
  %542 = getelementptr inbounds i8, ptr %70, i64 330
  %543 = load i8, ptr %542, align 2, !tbaa !132, !range !37, !noundef !38
  %544 = trunc nuw i8 %543 to i1
  %545 = xor i1 %544, true
  br label %549

.thread1018:                                      ; preds = %529, %521, %525
  %546 = phi i1 [ %spec.select1045, %529 ], [ false, %525 ], [ false, %521 ]
  %547 = getelementptr inbounds i8, ptr %70, i64 330
  %548 = getelementptr inbounds i8, ptr %70, i64 328
  br label %._crit_edge1075

549:                                              ; preds = %.thread1016, %541, %537
  %.ph1020 = phi i1 [ %545, %541 ], [ false, %.thread1016 ], [ false, %537 ]
  %550 = getelementptr inbounds i8, ptr %70, i64 330
  %551 = getelementptr inbounds i8, ptr %70, i64 328
  %.in1023 = load i8, ptr %550, align 2, !tbaa !88, !range !37, !noundef !38
  %552 = load i8, ptr %551, align 8, !tbaa !102, !range !37
  br i1 %535, label %553, label %._crit_edge1075

553:                                              ; preds = %549
  %554 = trunc nuw i8 %552 to i1
  br i1 %554, label %._crit_edge1075, label %555

555:                                              ; preds = %553
  %556 = trunc nuw i8 %.in1023 to i1
  %557 = xor i1 %556, true
  br label %._crit_edge1075

._crit_edge1075:                                  ; preds = %549, %.thread1018, %555, %553
  %558 = phi i8 [ %552, %553 ], [ %523, %.thread1018 ], [ %552, %555 ], [ %552, %549 ]
  %.in1054 = phi i8 [ %.in1023, %553 ], [ %523, %.thread1018 ], [ %.in1023, %555 ], [ %.in1023, %549 ]
  %559 = phi ptr [ %551, %553 ], [ %548, %.thread1018 ], [ %551, %555 ], [ %551, %549 ]
  %560 = phi ptr [ %550, %553 ], [ %547, %.thread1018 ], [ %550, %555 ], [ %550, %549 ]
  %561 = phi i1 [ %.ph1020, %553 ], [ false, %.thread1018 ], [ %.ph1020, %555 ], [ %.ph1020, %549 ]
  %562 = phi i1 [ %534, %553 ], [ %546, %.thread1018 ], [ %534, %555 ], [ %534, %549 ]
  %563 = phi i1 [ false, %553 ], [ false, %.thread1018 ], [ %557, %555 ], [ false, %549 ]
  %564 = trunc nuw i8 %.in1054 to i1
  %565 = trunc nuw i8 %558 to i1
  br i1 %565, label %566, label %575

566:                                              ; preds = %._crit_edge1075
  br i1 %504, label %.thread1028, label %567

567:                                              ; preds = %566
  %568 = load i8, ptr %560, align 2, !tbaa !132, !range !37, !noundef !38
  %569 = trunc nuw i8 %568 to i1
  br i1 %569, label %.thread1028, label %570

570:                                              ; preds = %567
  %571 = getelementptr inbounds i8, ptr %70, i64 331
  %572 = load i8, ptr %571, align 1, !tbaa !133, !range !37, !noundef !38
  %573 = trunc nuw i8 %572 to i1
  %574 = xor i1 %573, true
  br label %.thread1028

575:                                              ; preds = %._crit_edge1075
  br i1 %504, label %576, label %.thread1028

576:                                              ; preds = %575
  %577 = load i8, ptr %560, align 2, !tbaa !132, !range !37, !noundef !38
  %578 = trunc nuw i8 %577 to i1
  br i1 %578, label %.thread1028, label %579

579:                                              ; preds = %576
  %580 = getelementptr inbounds i8, ptr %70, i64 331
  %581 = load i8, ptr %580, align 1, !tbaa !133, !range !37, !noundef !38
  %582 = trunc nuw i8 %581 to i1
  %583 = xor i1 %582, true
  br label %.thread1028

.thread1028:                                      ; preds = %567, %570, %566, %579, %576, %575
  %584 = phi i1 [ false, %576 ], [ false, %575 ], [ false, %579 ], [ false, %566 ], [ %574, %570 ], [ false, %567 ]
  %585 = phi i1 [ false, %576 ], [ false, %575 ], [ %583, %579 ], [ false, %566 ], [ false, %570 ], [ false, %567 ]
  br i1 %562, label %586, label %588

586:                                              ; preds = %.thread1028
  %587 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %587, label %593, label %588

588:                                              ; preds = %586, %.thread1028
  br i1 %585, label %589, label %596

589:                                              ; preds = %588
  %590 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %591 = and i1 %.not867, %590
  %592 = xor i1 %591, true
  %brmerge928 = or i1 %72, %592
  %.not934 = xor i1 %61, true
  %brmerge935 = or i1 %brmerge928, %.not934
  %not.brmerge928 = xor i1 %brmerge928, true
  br i1 %brmerge935, label %596, label %594

593:                                              ; preds = %586
  %.not867.not929 = xor i1 %.not867, true
  %brmerge930 = or i1 %72, %.not867.not929
  %.not931 = xor i1 %61, true
  %brmerge932 = or i1 %brmerge930, %.not931
  %not.brmerge930 = xor i1 %brmerge930, true
  br i1 %brmerge932, label %.thread1029, label %594

594:                                              ; preds = %589, %593
  %595 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br label %596

596:                                              ; preds = %589, %594, %588
  %597 = phi i1 [ %not.brmerge928, %589 ], [ false, %588 ], [ %595, %594 ]
  br i1 %562, label %.thread1029, label %600

.thread1029:                                      ; preds = %593, %596
  %598 = phi i1 [ %597, %596 ], [ %not.brmerge930, %593 ]
  %599 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %599, label %604, label %600

600:                                              ; preds = %.thread1029, %596
  %601 = phi i1 [ %598, %.thread1029 ], [ %597, %596 ]
  br i1 %584, label %602, label %609

602:                                              ; preds = %600
  %603 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %brmerge939.demorgan = and i1 %.not867, %603
  %brmerge941.not = and i1 %61, %brmerge939.demorgan
  br i1 %brmerge941.not, label %606, label %609

604:                                              ; preds = %.thread1029
  %605 = and i32 %5, 1081344
  %brmerge945.not = icmp eq i32 %605, 1048576
  br i1 %brmerge945.not, label %606, label %.thread1030

606:                                              ; preds = %604, %602
  %607 = phi i1 [ %598, %604 ], [ %601, %602 ]
  %608 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br label %609

609:                                              ; preds = %602, %606, %600
  %610 = phi i1 [ %601, %602 ], [ %601, %600 ], [ %607, %606 ]
  %611 = phi i1 [ %brmerge939.demorgan, %602 ], [ false, %600 ], [ %608, %606 ]
  br i1 %562, label %.thread1030, label %615

.thread1030:                                      ; preds = %604, %609
  %612 = phi i1 [ %611, %609 ], [ %.not867, %604 ]
  %613 = phi i1 [ %610, %609 ], [ %598, %604 ]
  %614 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %614, label %620, label %615

615:                                              ; preds = %.thread1030, %609
  %616 = phi i1 [ %612, %.thread1030 ], [ %611, %609 ]
  %617 = phi i1 [ %613, %.thread1030 ], [ %610, %609 ]
  br i1 %585, label %618, label %624

618:                                              ; preds = %615
  %619 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %619, label %620, label %624

620:                                              ; preds = %618, %.thread1030
  %621 = phi i1 [ %616, %618 ], [ %612, %.thread1030 ]
  %622 = phi i1 [ %617, %618 ], [ %613, %.thread1030 ]
  %623 = xor i1 %72, true
  br label %624

624:                                              ; preds = %620, %618, %615
  %625 = phi i1 [ %616, %618 ], [ %616, %615 ], [ %621, %620 ]
  %626 = phi i1 [ %617, %618 ], [ %617, %615 ], [ %622, %620 ]
  %627 = phi i1 [ false, %618 ], [ false, %615 ], [ %623, %620 ]
  br i1 %562, label %628, label %632

628:                                              ; preds = %624
  %629 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  %not.1055 = xor i1 %72, true
  %630 = and i1 %629, %not.1055
  %spec.select992 = and i1 %75, %630
  %631 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %631, label %636, label %632

632:                                              ; preds = %624, %628
  %633 = phi i1 [ %spec.select992, %628 ], [ false, %624 ]
  br i1 %561, label %634, label %638

634:                                              ; preds = %632
  %635 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %635, label %._crit_edge1089, label %638

._crit_edge1089:                                  ; preds = %634
  %.pre1090 = xor i1 %72, true
  br label %636

636:                                              ; preds = %._crit_edge1089, %628
  %not.1056.pre-phi = phi i1 [ %.pre1090, %._crit_edge1089 ], [ %not.1055, %628 ]
  %637 = phi i1 [ %633, %._crit_edge1089 ], [ %spec.select992, %628 ]
  %spec.select948 = and i1 %75, %not.1056.pre-phi
  br label %638

638:                                              ; preds = %636, %634, %632
  %639 = phi i1 [ %633, %634 ], [ %633, %632 ], [ %637, %636 ]
  %640 = phi i1 [ false, %634 ], [ false, %632 ], [ %spec.select948, %636 ]
  %641 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %641, label %642, label %645

642:                                              ; preds = %638
  %643 = select i1 %564, i32 2097164, i32 2097152
  %spec.select949 = select i1 %563, i32 2097156, i32 %643
  %644 = or disjoint i32 %spec.select949, %505
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %644)
  br label %819

645:                                              ; preds = %638
  %646 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %646, label %647, label %650

647:                                              ; preds = %645
  %648 = select i1 %564, i32 2097165, i32 2097153
  %spec.select950 = select i1 %563, i32 2097157, i32 %648
  %649 = or disjoint i32 %spec.select950, %505
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %649)
  br label %819

650:                                              ; preds = %645
  %651 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  %brmerge953.not = and i1 %61, %651
  br i1 %brmerge953.not, label %652, label %665

652:                                              ; preds = %650
  %653 = load i8, ptr %559, align 8, !tbaa !102, !range !37, !noundef !38
  %654 = trunc nuw i8 %653 to i1
  br i1 %654, label %655, label %662

655:                                              ; preds = %652
  %656 = getelementptr inbounds i8, ptr %.1793, i64 88
  %657 = load float, ptr %656, align 4, !tbaa !140
  %658 = getelementptr inbounds i8, ptr %70, i64 6432
  %659 = load float, ptr %658, align 8, !tbaa !40
  %660 = fsub float %657, %659
  %661 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %660, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.1793, float noundef %661)
  br label %819

662:                                              ; preds = %652
  %663 = select i1 %563, i32 2097158, i32 2097154
  %664 = or disjoint i32 %663, %505
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %664)
  br label %819

665:                                              ; preds = %650
  %666 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  %brmerge956.demorgan = and i1 %61, %666
  br i1 %brmerge956.demorgan, label %667, label %681

667:                                              ; preds = %665
  %668 = load i8, ptr %559, align 8, !tbaa !102, !range !37, !noundef !38
  %669 = trunc nuw i8 %668 to i1
  br i1 %669, label %670, label %678

670:                                              ; preds = %667
  %671 = getelementptr inbounds i8, ptr %.1793, i64 88
  %672 = load float, ptr %671, align 4, !tbaa !140
  %673 = getelementptr inbounds i8, ptr %70, i64 6432
  %674 = load float, ptr %673, align 8, !tbaa !40
  %675 = fadd float %672, %674
  %676 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %677 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %675, float noundef %676)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.1793, float noundef %677)
  br label %819

678:                                              ; preds = %667
  %679 = select i1 %563, i32 2097159, i32 2097155
  %680 = or disjoint i32 %679, %505
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %680)
  br label %819

681:                                              ; preds = %665
  %682 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %682, label %683, label %687

683:                                              ; preds = %681
  %684 = load i8, ptr %559, align 8, !tbaa !102, !range !37, !noundef !38
  %685 = trunc nuw i8 %684 to i1
  %.v882 = select i1 %685, i32 2097158, i32 2097156
  %686 = or disjoint i32 %.v882, %505
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %686)
  br label %819

687:                                              ; preds = %681
  %688 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %688, label %689, label %693

689:                                              ; preds = %687
  %690 = load i8, ptr %559, align 8, !tbaa !102, !range !37, !noundef !38
  %691 = trunc nuw i8 %690 to i1
  %.v = select i1 %691, i32 2097159, i32 2097157
  %692 = or disjoint i32 %.v, %505
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %692)
  br label %819

693:                                              ; preds = %687
  %694 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %.not957 = xor i1 %694, true
  %brmerge958 = or i1 %72, %.not957
  br i1 %brmerge958, label %697, label %695

695:                                              ; preds = %693
  %696 = or disjoint i32 %505, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %696)
  br label %819

697:                                              ; preds = %693
  %698 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  %.not959 = xor i1 %698, true
  %brmerge960 = or i1 %72, %.not959
  br i1 %brmerge960, label %715, label %699

699:                                              ; preds = %697
  %700 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br i1 %700, label %713, label %701

701:                                              ; preds = %699
  br i1 %564, label %.sink.split, label %702

702:                                              ; preds = %701
  br i1 %508, label %703, label %713

703:                                              ; preds = %702
  %704 = getelementptr inbounds i8, ptr %70, i64 331
  %705 = load i8, ptr %704, align 1, !tbaa !133, !range !37, !noundef !38
  %706 = trunc nuw i8 %705 to i1
  br i1 %706, label %707, label %713

707:                                              ; preds = %703
  %708 = load i8, ptr %560, align 2, !tbaa !132, !range !37, !noundef !38
  %709 = trunc nuw i8 %708 to i1
  br i1 %709, label %713, label %710

710:                                              ; preds = %707
  %711 = load i8, ptr %559, align 8, !tbaa !102, !range !37, !noundef !38
  %712 = trunc nuw i8 %711 to i1
  br i1 %712, label %713, label %.sink.split

.sink.split:                                      ; preds = %710, %701
  %.sink = phi i32 [ 6291468, %701 ], [ 6291460, %710 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %.sink)
  br label %713

713:                                              ; preds = %.sink.split, %710, %707, %703, %702, %699
  %714 = or disjoint i32 %505, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %714)
  br label %819

715:                                              ; preds = %697
  %716 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %716, label %719, label %717

717:                                              ; preds = %715
  %718 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %718, label %719, label %730

719:                                              ; preds = %717, %715
  br i1 %61, label %720, label %819

720:                                              ; preds = %719
  %721 = and i32 %5, 2048
  %.not881 = icmp eq i32 %721, 0
  %722 = load i8, ptr %559, align 8, !tbaa !102, !range !37, !noundef !38
  %723 = trunc nuw i8 %722 to i1
  br i1 %.not881, label %.critedge962, label %724

724:                                              ; preds = %720
  %.not1049 = xor i1 %723, true
  %brmerge1050 = or i1 %72, %.not1049
  %.mux = zext i1 %.not1049 to i8
  %.mux1051 = select i1 %723, i8 %.07951010, i8 1
  br i1 %brmerge1050, label %819, label %725

.critedge962:                                     ; preds = %720
  %brmerge963 = or i1 %72, %723
  %.mux965 = select i1 %723, i8 1, i8 %.07951010
  br i1 %brmerge963, label %819, label %725

725:                                              ; preds = %724, %.critedge962
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  store i32 10, ptr %21, align 4, !tbaa !103
  %726 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %726, label %727, label %729

727:                                              ; preds = %725
  %728 = load i32, ptr %21, align 4, !tbaa !103
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %728)
  br label %729

729:                                              ; preds = %727, %725
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  br label %819

730:                                              ; preds = %717
  %731 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %731, label %819, label %732

732:                                              ; preds = %730
  %brmerge966 = or i1 %639, %640
  br i1 %brmerge966, label %733, label %734

733:                                              ; preds = %732
  %.mux967 = select i1 %639, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106, i32 noundef %.mux967)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br label %819

734:                                              ; preds = %732
  br i1 %562, label %735, label %739

735:                                              ; preds = %734
  %736 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %736, label %737, label %739

737:                                              ; preds = %735
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  %738 = getelementptr inbounds i8, ptr %.07941106, i64 3700
  store i8 1, ptr %738, align 4, !tbaa !131
  br label %819

739:                                              ; preds = %735, %734
  %brmerge968 = or i1 %625, %626
  br i1 %brmerge968, label %740, label %787

740:                                              ; preds = %739
  %741 = getelementptr inbounds i8, ptr %70, i64 264
  %742 = load ptr, ptr %741, align 8, !tbaa !141
  %.not880 = icmp eq ptr %742, null
  br i1 %.not880, label %779, label %743

743:                                              ; preds = %740
  %744 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br i1 %744, label %745, label %751

745:                                              ; preds = %743
  %746 = getelementptr inbounds i8, ptr %.07941106, i64 80
  %747 = load i32, ptr %746, align 4, !tbaa !142
  %748 = getelementptr inbounds i8, ptr %.07941106, i64 84
  %749 = load i32, ptr %748, align 4, !tbaa !143
  %750 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %747, i32 noundef %749)
  br label %751

751:                                              ; preds = %743, %745
  %752 = phi i32 [ %750, %745 ], [ 0, %743 ]
  %753 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br i1 %753, label %754, label %760

754:                                              ; preds = %751
  %755 = getelementptr inbounds i8, ptr %.07941106, i64 80
  %756 = load i32, ptr %755, align 4, !tbaa !142
  %757 = getelementptr inbounds i8, ptr %.07941106, i64 84
  %758 = load i32, ptr %757, align 4, !tbaa !143
  %759 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %756, i32 noundef %758)
  br label %763

760:                                              ; preds = %751
  %761 = getelementptr inbounds i8, ptr %.07941106, i64 4
  %762 = load i32, ptr %761, align 4, !tbaa !97
  br label %763

763:                                              ; preds = %760, %754
  %764 = phi i32 [ %759, %754 ], [ %762, %760 ]
  %765 = getelementptr inbounds i8, ptr %.07941106, i64 24
  %766 = load ptr, ptr %765, align 8, !tbaa !96
  %767 = sext i32 %752 to i64
  %768 = getelementptr inbounds i16, ptr %766, i64 %767
  %769 = sext i32 %764 to i64
  %770 = getelementptr inbounds i16, ptr %766, i64 %769
  %771 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %768, ptr noundef %770)
  %772 = add nsw i32 %771, 1
  %773 = sext i32 %772 to i64
  %774 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %773)
  %775 = load ptr, ptr %765, align 8, !tbaa !96
  %776 = getelementptr inbounds i16, ptr %775, i64 %767
  %777 = getelementptr inbounds i16, ptr %775, i64 %769
  %778 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %774, i32 noundef %772, ptr noundef %776, ptr noundef %777)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %774)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %774)
  br label %779

779:                                              ; preds = %763, %740
  br i1 %626, label %780, label %819

780:                                              ; preds = %779
  %781 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br i1 %781, label %783, label %782

782:                                              ; preds = %780
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br label %783

783:                                              ; preds = %782, %780
  %784 = getelementptr inbounds i8, ptr %.07941106, i64 3700
  store i8 1, ptr %784, align 4, !tbaa !131
  %785 = getelementptr inbounds i8, ptr %.07941106, i64 76
  %786 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.07941106, ptr noundef nonnull %785)
  br label %819

787:                                              ; preds = %739
  br i1 %627, label %788, label %819

788:                                              ; preds = %787
  %789 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not878 = icmp eq ptr %789, null
  br i1 %.not878, label %819, label %790

790:                                              ; preds = %788
  %791 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %789) #16
  %792 = shl i64 %791, 32
  %sext = add i64 %792, 4294967296
  %793 = ashr exact i64 %sext, 31
  %794 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %793)
  %795 = load i8, ptr %789, align 1, !tbaa !107
  %.not8791063 = icmp eq i8 %795, 0
  br i1 %.not8791063, label %.loopexit1057.thread, label %.lr.ph1066

.loopexit1057.thread:                             ; preds = %790
  store i16 0, ptr %794, align 2, !tbaa !135
  br label %818

.lr.ph1066:                                       ; preds = %790, %809
  %.08231065 = phi i32 [ %.1824, %809 ], [ 0, %790 ]
  %.08261064 = phi ptr [ %798, %809 ], [ %789, %790 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  %796 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %22, ptr noundef nonnull %.08261064, ptr noundef null)
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds i8, ptr %.08261064, i64 %797
  %799 = load i32, ptr %22, align 4, !tbaa !103
  %800 = icmp eq i32 %799, 0
  br i1 %800, label %.thread1032, label %801

.thread1032:                                      ; preds = %.lr.ph1066
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  br label %.loopexit1057

801:                                              ; preds = %.lr.ph1066
  %802 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %802, label %803, label %809, !llvm.loop !144

803:                                              ; preds = %801
  %804 = load i32, ptr %22, align 4, !tbaa !103
  %805 = trunc i32 %804 to i16
  %806 = add nsw i32 %.08231065, 1
  %807 = sext i32 %.08231065 to i64
  %808 = getelementptr inbounds i16, ptr %794, i64 %807
  store i16 %805, ptr %808, align 2, !tbaa !135
  br label %809

809:                                              ; preds = %801, %803
  %.1824 = phi i32 [ %806, %803 ], [ %.08231065, %801 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  %810 = load i8, ptr %798, align 1, !tbaa !107
  %.not879 = icmp eq i8 %810, 0
  br i1 %.not879, label %.loopexit1057, label %.lr.ph1066

.loopexit1057:                                    ; preds = %809, %.thread1032
  %.08231061 = phi i32 [ %.08231065, %.thread1032 ], [ %.1824, %809 ]
  %811 = sext i32 %.08231061 to i64
  %812 = getelementptr inbounds i16, ptr %794, i64 %811
  store i16 0, ptr %812, align 2, !tbaa !135
  %813 = icmp sgt i32 %.08231061, 0
  br i1 %813, label %814, label %818

814:                                              ; preds = %.loopexit1057
  %815 = getelementptr inbounds i8, ptr %.07941106, i64 76
  %816 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.07941106, ptr noundef nonnull %815, ptr noundef nonnull %794, i32 noundef %.08231061)
  %817 = getelementptr inbounds i8, ptr %.07941106, i64 3700
  store i8 1, ptr %817, align 4, !tbaa !131
  br label %818

818:                                              ; preds = %.loopexit1057.thread, %814, %.loopexit1057
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %794)
  br label %819

819:                                              ; preds = %724, %788, %818, %730, %729, %719, %.critedge962, %647, %678, %670, %689, %713, %737, %787, %779, %783, %733, %695, %683, %655, %662, %642
  %.0821 = phi i1 [ false, %642 ], [ false, %647 ], [ false, %655 ], [ false, %662 ], [ false, %670 ], [ false, %678 ], [ false, %683 ], [ false, %689 ], [ false, %733 ], [ false, %737 ], [ false, %783 ], [ false, %779 ], [ false, %787 ], [ false, %713 ], [ false, %695 ], [ false, %.critedge962 ], [ false, %719 ], [ false, %724 ], [ false, %729 ], [ true, %730 ], [ false, %818 ], [ false, %788 ]
  %.1808 = phi i8 [ 0, %642 ], [ 0, %647 ], [ 0, %655 ], [ 0, %662 ], [ 0, %670 ], [ 0, %678 ], [ 0, %683 ], [ 0, %689 ], [ 0, %733 ], [ 0, %737 ], [ 0, %783 ], [ 0, %779 ], [ 0, %787 ], [ 0, %713 ], [ 0, %695 ], [ %722, %.critedge962 ], [ 1, %719 ], [ %.mux, %724 ], [ 0, %729 ], [ 0, %730 ], [ 0, %818 ], [ 0, %788 ]
  %.2797 = phi i8 [ %.07951010, %642 ], [ %.07951010, %647 ], [ %.07951010, %655 ], [ %.07951010, %662 ], [ %.07951010, %670 ], [ %.07951010, %678 ], [ %.07951010, %683 ], [ %.07951010, %689 ], [ %.07951010, %733 ], [ %.07951010, %737 ], [ %.07951010, %783 ], [ %.07951010, %779 ], [ %.07951010, %787 ], [ %.07951010, %713 ], [ %.07951010, %695 ], [ %.mux965, %.critedge962 ], [ 1, %719 ], [ %.mux1051, %724 ], [ %.07951010, %729 ], [ 1, %730 ], [ %.07951010, %818 ], [ %.07951010, %788 ]
  %820 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  %821 = select i1 %820, i1 %271, i1 %.0803.in
  %.pre1077 = load i32, ptr %162, align 8, !tbaa !89
  br label %822

822:                                              ; preds = %819, %490
  %823 = phi i32 [ %.pre1077, %819 ], [ %491, %490 ]
  %.1822 = phi i1 [ %.0821, %819 ], [ false, %490 ]
  %.2809 = phi i8 [ %.1808, %819 ], [ 0, %490 ]
  %.1804.in = phi i1 [ %821, %819 ], [ %.0803.in, %490 ]
  %.3798 = phi i8 [ %.2797, %819 ], [ %.07951010, %490 ]
  %824 = icmp eq i32 %823, %82
  br i1 %824, label %.thread1124, label %1020

.thread1124:                                      ; preds = %497, %493, %822
  %.37981138 = phi i8 [ %.3798, %822 ], [ %.07951010, %493 ], [ %.07951010, %497 ]
  %.1804.in1136 = phi i1 [ %.1804.in, %822 ], [ %.0803.in, %493 ], [ %.0803.in, %497 ]
  %.28091132 = phi i8 [ %.2809, %822 ], [ 0, %493 ], [ 0, %497 ]
  %.18221131 = phi i1 [ %.1822, %822 ], [ false, %493 ], [ false, %497 ]
  br i1 %272, label %826, label %825

825:                                              ; preds = %.thread1124
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.1, i32 noundef 3848, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

826:                                              ; preds = %.thread1124
  %.1822.not = xor i1 %.18221131, true
  %brmerge969 = or i1 %72, %.1822.not
  br i1 %brmerge969, label %857, label %827

827:                                              ; preds = %826
  %828 = getelementptr inbounds i8, ptr %.07941106, i64 56
  %829 = load ptr, ptr %828, align 8, !tbaa !94
  %830 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %829) #16
  %.not883 = icmp eq i32 %830, 0
  br i1 %.not883, label %857, label %831

831:                                              ; preds = %827
  %832 = getelementptr inbounds i8, ptr %.07941106, i64 48
  %833 = load i32, ptr %832, align 8, !tbaa !145
  %834 = add nsw i32 %833, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23)
  %835 = icmp sgt i32 %833, 1
  br i1 %835, label %836, label %849

836:                                              ; preds = %831
  %837 = zext nneg i32 %834 to i64
  %838 = getelementptr inbounds i8, ptr %829, i64 %837
  %839 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %829, ptr noundef %838)
          to label %840 unwind label %847

840:                                              ; preds = %836
  %841 = add nsw i32 %839, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %23, i32 noundef %841)
          to label %842 unwind label %847

842:                                              ; preds = %840
  %843 = getelementptr inbounds i8, ptr %23, i64 8
  %844 = load ptr, ptr %843, align 8, !tbaa !146
  %845 = load i32, ptr %23, align 8, !tbaa !147
  %846 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %844, i32 noundef %845, ptr noundef %829, ptr noundef %838, ptr noundef null)
          to label %849 unwind label %847

847:                                              ; preds = %849, %842, %840, %836
  %848 = 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 } %848

849:                                              ; preds = %842, %831
  %850 = getelementptr inbounds i8, ptr %.07941106, i64 76
  %851 = getelementptr inbounds i8, ptr %23, i64 8
  %852 = load ptr, ptr %851, align 8, !tbaa !146
  %853 = load i32, ptr %23, align 8
  %854 = add nsw i32 %853, -1
  %855 = select i1 %835, i32 %854, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.07941106, ptr noundef nonnull %850, ptr noundef %852, i32 noundef %855)
          to label %856 unwind label %847

856:                                              ; preds = %849
  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 %857

857:                                              ; preds = %826, %827, %856
  %.0829 = phi i32 [ %834, %856 ], [ 0, %827 ], [ 0, %826 ]
  %.0827 = phi ptr [ %829, %856 ], [ null, %827 ], [ null, %826 ]
  br i1 %.18221131, label %858, label %.critedge971

858:                                              ; preds = %857
  %859 = trunc nuw i8 %.28091132 to i1
  %860 = and i32 %5, 32
  %861 = icmp ne i32 %860, 0
  %862 = and i1 %861, %859
  br i1 %862, label %.critedge971, label %992

.critedge971:                                     ; preds = %857, %858
  br i1 %72, label %876, label %863

863:                                              ; preds = %.critedge971
  %864 = getelementptr inbounds i8, ptr %.07941106, i64 64
  store i8 1, ptr %864, align 8, !tbaa !95
  %865 = getelementptr inbounds i8, ptr %.07941106, i64 32
  %866 = getelementptr inbounds i8, ptr %.07941106, i64 16
  %867 = load i32, ptr %866, align 8, !tbaa !105
  %868 = shl nsw i32 %867, 2
  %869 = or disjoint i32 %868, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %865, i32 noundef %869)
  %870 = getelementptr inbounds i8, ptr %.07941106, i64 40
  %871 = load ptr, ptr %870, align 8, !tbaa !106
  %872 = load i32, ptr %865, align 8, !tbaa !148
  %873 = getelementptr inbounds i8, ptr %.07941106, i64 24
  %874 = load ptr, ptr %873, align 8, !tbaa !96
  %875 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %871, i32 noundef %872, ptr noundef %874, ptr noundef null)
  br label %876

876:                                              ; preds = %863, %.critedge971
  %877 = and i32 %5, 448
  %.not884 = icmp eq i32 %877, 0
  br i1 %.not884, label %984, label %878

878:                                              ; preds = %876
  br i1 %77, label %880, label %879

879:                                              ; preds = %878
  call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 3889, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

880:                                              ; preds = %878
  br i1 %.not864, label %883, label %881

881:                                              ; preds = %880
  %882 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %882, label %.thread1036, label %883

883:                                              ; preds = %881, %880
  br i1 %.not862.not, label %888, label %884

884:                                              ; preds = %883
  %885 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %885, label %.thread1036, label %886

886:                                              ; preds = %884
  %887 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %887, label %.thread1036, label %888

888:                                              ; preds = %886, %883
  %889 = and i32 %5, 256
  %.not885 = icmp eq i32 %889, 0
  br i1 %.not885, label %984, label %.thread1036

.thread1036:                                      ; preds = %886, %884, %881, %888
  %.08321041 = phi i32 [ 256, %888 ], [ 128, %886 ], [ 128, %884 ], [ 64, %881 ]
  %.08331040 = phi i32 [ 22, %888 ], [ 4, %886 ], [ 3, %884 ], [ 0, %881 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %24)
  %890 = getelementptr inbounds i8, ptr %24, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %890, i8 0, i64 40, i1 false)
  store i32 %.08321041, ptr %24, align 8, !tbaa !149
  %891 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 %5, ptr %891, align 4, !tbaa !151
  %892 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %7, ptr %892, align 8, !tbaa !152
  %893 = getelementptr inbounds i8, ptr %24, i64 20
  store i32 %.08331040, ptr %893, align 4, !tbaa !153
  %894 = getelementptr inbounds i8, ptr %.07941106, i64 40
  %895 = load ptr, ptr %894, align 8, !tbaa !106
  %896 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %895, ptr %896, align 8, !tbaa !154
  %897 = getelementptr inbounds i8, ptr %.07941106, i64 8
  %898 = load i32, ptr %897, align 8, !tbaa !98
  %899 = getelementptr inbounds i8, ptr %24, i64 32
  store i32 %898, ptr %899, align 8, !tbaa !155
  %900 = getelementptr inbounds i8, ptr %.07941106, i64 68
  %901 = load i32, ptr %900, align 4, !tbaa !116
  %902 = getelementptr inbounds i8, ptr %24, i64 36
  store i32 %901, ptr %902, align 4, !tbaa !156
  %903 = getelementptr inbounds i8, ptr %24, i64 40
  %904 = getelementptr inbounds i8, ptr %.07941106, i64 16
  %905 = getelementptr inbounds i8, ptr %.07941106, i64 24
  %906 = load ptr, ptr %905, align 8, !tbaa !96
  %907 = getelementptr inbounds i8, ptr %.07941106, i64 76
  %908 = load i32, ptr %907, align 4, !tbaa !157
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds i16, ptr %906, i64 %909
  %911 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %906, ptr noundef %910)
  %912 = getelementptr inbounds i8, ptr %24, i64 44
  store i32 %911, ptr %912, align 4, !tbaa !158
  %913 = getelementptr inbounds i8, ptr %.07941106, i64 80
  %914 = load i32, ptr %913, align 4, !tbaa !142
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds i16, ptr %906, i64 %915
  %917 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %906, ptr noundef %916)
  %918 = getelementptr inbounds i8, ptr %24, i64 48
  store i32 %917, ptr %918, align 8, !tbaa !159
  %919 = getelementptr inbounds i8, ptr %.07941106, i64 84
  %920 = load i32, ptr %919, align 4, !tbaa !143
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds i16, ptr %906, i64 %921
  %923 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %906, ptr noundef %922)
  %924 = getelementptr inbounds i8, ptr %24, i64 52
  store i32 %923, ptr %924, align 4, !tbaa !160
  %925 = call noundef i32 %6(ptr noundef nonnull %24)
  %926 = load ptr, ptr %896, align 8, !tbaa !154
  %927 = load ptr, ptr %894, align 8, !tbaa !106
  %928 = icmp eq ptr %926, %927
  br i1 %928, label %930, label %929

929:                                              ; preds = %.thread1036
  call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.1, i32 noundef 3936, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

930:                                              ; preds = %.thread1036
  %931 = load i32, ptr %902, align 4, !tbaa !156
  %932 = load i32, ptr %900, align 4, !tbaa !116
  %933 = icmp eq i32 %931, %932
  br i1 %933, label %935, label %934

934:                                              ; preds = %930
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.1, i32 noundef 3937, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

935:                                              ; preds = %930
  %936 = load i32, ptr %891, align 4, !tbaa !151
  %937 = icmp eq i32 %936, %5
  br i1 %937, label %939, label %938

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

939:                                              ; preds = %935
  %940 = load i32, ptr %912, align 4, !tbaa !158
  %.not887 = icmp eq i32 %940, %911
  br i1 %.not887, label %946, label %941

941:                                              ; preds = %939
  %942 = sext i32 %940 to i64
  %943 = getelementptr inbounds i8, ptr %926, i64 %942
  %944 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %926, ptr noundef %943)
  store i32 %944, ptr %907, align 4, !tbaa !157
  %945 = getelementptr inbounds i8, ptr %.07941106, i64 3700
  store i8 1, ptr %945, align 4, !tbaa !131
  br label %946

946:                                              ; preds = %941, %939
  %947 = load i32, ptr %918, align 8, !tbaa !159
  %.not888 = icmp eq i32 %947, %917
  br i1 %.not888, label %953, label %948

948:                                              ; preds = %946
  %949 = load ptr, ptr %896, align 8, !tbaa !154
  %950 = sext i32 %947 to i64
  %951 = getelementptr inbounds i8, ptr %949, i64 %950
  %952 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %949, ptr noundef %951)
  store i32 %952, ptr %913, align 4, !tbaa !142
  br label %953

953:                                              ; preds = %948, %946
  %954 = load i32, ptr %924, align 4, !tbaa !160
  %.not889 = icmp eq i32 %954, %923
  br i1 %.not889, label %960, label %955

955:                                              ; preds = %953
  %956 = load ptr, ptr %896, align 8, !tbaa !154
  %957 = sext i32 %954 to i64
  %958 = getelementptr inbounds i8, ptr %956, i64 %957
  %959 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %956, ptr noundef %958)
  store i32 %959, ptr %919, align 4, !tbaa !143
  br label %960

960:                                              ; preds = %955, %953
  %961 = load i8, ptr %903, align 8, !tbaa !161, !range !37, !noundef !38
  %962 = trunc nuw i8 %961 to i1
  br i1 %962, label %963, label %983

963:                                              ; preds = %960
  %964 = load i32, ptr %899, align 8, !tbaa !155
  %965 = load ptr, ptr %896, align 8, !tbaa !154
  %966 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %965) #16
  %967 = trunc i64 %966 to i32
  %968 = icmp eq i32 %964, %967
  br i1 %968, label %970, label %969

969:                                              ; preds = %963
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.1, i32 noundef 3944, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

970:                                              ; preds = %963
  %971 = icmp sle i32 %964, %.0818
  %brmerge977 = or i1 %.not868, %971
  br i1 %brmerge977, label %976, label %972

972:                                              ; preds = %970
  %973 = load i32, ptr %904, align 8, !tbaa !105
  %974 = sub i32 %964, %.0818
  %975 = add nsw i32 %974, %973
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %904, i32 noundef %975)
  %.pre1078 = load ptr, ptr %896, align 8, !tbaa !154
  br label %976

976:                                              ; preds = %970, %972
  %977 = phi ptr [ %965, %970 ], [ %.pre1078, %972 ]
  %978 = load ptr, ptr %905, align 8, !tbaa !96
  %979 = load i32, ptr %904, align 8, !tbaa !105
  %980 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %978, i32 noundef %979, ptr noundef %977, ptr noundef null, ptr noundef null)
  %981 = getelementptr inbounds i8, ptr %.07941106, i64 4
  store i32 %980, ptr %981, align 4, !tbaa !97
  %982 = load i32, ptr %899, align 8, !tbaa !155
  store i32 %982, ptr %897, align 8, !tbaa !98
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07941106)
  br label %983

983:                                              ; preds = %976, %960
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #15
  br label %984

984:                                              ; preds = %888, %983, %876
  br i1 %72, label %992, label %985

985:                                              ; preds = %984
  %986 = getelementptr inbounds i8, ptr %.07941106, i64 40
  %987 = load ptr, ptr %986, align 8, !tbaa !106
  %988 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %987, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not890 = icmp eq i32 %988, 0
  br i1 %.not890, label %992, label %989

989:                                              ; preds = %985
  %990 = getelementptr inbounds i8, ptr %.07941106, i64 8
  %991 = load i32, ptr %990, align 8, !tbaa !98
  br label %992

992:                                              ; preds = %984, %985, %989, %858
  %.1830 = phi i32 [ %.0829, %984 ], [ %991, %989 ], [ %.0829, %985 ], [ %.0829, %858 ]
  %.1828 = phi ptr [ %.0827, %984 ], [ %987, %989 ], [ %.0827, %985 ], [ %.0827, %858 ]
  %.not891 = icmp ne ptr %.1828, null
  br i1 %.not891, label %993, label %1017

993:                                              ; preds = %992
  %994 = icmp sgt i32 %.1830, -1
  br i1 %994, label %996, label %995

995:                                              ; preds = %993
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.1, i32 noundef 3968, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

996:                                              ; preds = %993
  br i1 %.not868, label %1013, label %997

997:                                              ; preds = %996
  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 !149
  %998 = getelementptr inbounds i8, ptr %25, i64 4
  store i32 %5, ptr %998, align 4, !tbaa !151
  %999 = getelementptr inbounds i8, ptr %25, i64 24
  store ptr %2, ptr %999, align 8, !tbaa !154
  %1000 = getelementptr inbounds i8, ptr %25, i64 32
  store i32 %.1830, ptr %1000, align 8, !tbaa !155
  %1001 = add nuw nsw i32 %.1830, 1
  %1002 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %1001)
  %1003 = getelementptr inbounds i8, ptr %25, i64 36
  store i32 %1002, ptr %1003, align 4, !tbaa !156
  %1004 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %7, ptr %1004, align 8, !tbaa !152
  %1005 = call noundef i32 %6(ptr noundef nonnull %25)
  %1006 = load ptr, ptr %999, align 8, !tbaa !154
  %1007 = load i32, ptr %1003, align 4, !tbaa !156
  %1008 = load i32, ptr %1000, align 8, !tbaa !155
  %1009 = add nsw i32 %1007, -1
  %1010 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1008, i32 noundef %1009)
  %.not892 = icmp sgt i32 %1010, %1007
  br i1 %.not892, label %1011, label %1012

1011:                                             ; preds = %997
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.1, i32 noundef 3982, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1012:                                             ; preds = %997
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #15
  br label %1013

1013:                                             ; preds = %1012, %996
  %.2831 = phi i32 [ %1010, %1012 ], [ %.1830, %996 ]
  %.0789 = phi i32 [ %1007, %1012 ], [ %3, %996 ]
  %.0786 = phi ptr [ %1006, %1012 ], [ %2, %996 ]
  %1014 = add nsw i32 %.2831, 1
  %1015 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1014, i32 noundef %.0789)
  %1016 = sext i32 %1015 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0786, ptr noundef nonnull %.1828, i64 noundef %1016)
  br label %1017

1017:                                             ; preds = %1013, %992
  %.1787 = phi ptr [ %.0786, %1013 ], [ %2, %992 ]
  %1018 = getelementptr inbounds i8, ptr %.07941106, i64 3704
  store i32 0, ptr %1018, align 8, !tbaa !117
  %1019 = getelementptr inbounds i8, ptr %.07941106, i64 3712
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %1019, i8 0, i64 16, i1 false)
  br label %1020

1020:                                             ; preds = %1017, %822
  %.37981137 = phi i8 [ %.37981138, %1017 ], [ %.3798, %822 ]
  %.1804.in1135 = phi i1 [ %.1804.in1136, %1017 ], [ %.1804.in, %822 ]
  %.28091133 = phi i8 [ %.28091132, %1017 ], [ %.2809, %822 ]
  %.1806 = phi i1 [ %.not891, %1017 ], [ false, %822 ]
  %.2788 = phi ptr [ %.1787, %1017 ], [ %2, %822 ]
  %1021 = trunc nuw i8 %.37981137 to i1
  br i1 %1021, label %1022, label %1026

1022:                                             ; preds = %1020
  %1023 = load i32, ptr %162, align 8, !tbaa !89
  %1024 = icmp eq i32 %1023, %82
  br i1 %1024, label %1025, label %1026

1025:                                             ; preds = %1022
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1026

1026:                                             ; preds = %1025, %1022, %1020
  br i1 %61, label %1032, label %1027

1027:                                             ; preds = %1026
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %82, i32 noundef 1)
  %.sroa.092.0.copyload = load <2 x float>, ptr %11, align 8
  %1028 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %1028, align 8
  %1029 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1030 = getelementptr inbounds i8, ptr %70, i64 5536
  %1031 = load float, ptr %1030, align 4, !tbaa !78
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %1029, i1 noundef zeroext true, float noundef %1031)
  br label %1032

1032:                                             ; preds = %1027, %1026
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #15
  %1033 = load float, ptr %11, align 8, !tbaa !123
  %1034 = getelementptr inbounds i8, ptr %11, i64 4
  %1035 = load float, ptr %1034, align 4, !tbaa !162
  %1036 = fadd float %.sroa.0438.1, %1033
  %1037 = fadd float %.sroa.12.0.copyload, %1035
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %26, float noundef %1033, float noundef %1035, float noundef %1036, float noundef %1037)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #15
  br i1 %61, label %1038, label %1041

1038:                                             ; preds = %1032
  %1039 = getelementptr inbounds i8, ptr %.1793, i64 208
  %1040 = load i64, ptr %1039, align 8
  br label %1044

1041:                                             ; preds = %1032
  %1042 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %92)
  %1043 = bitcast <2 x float> %1042 to i64
  br label %1044

1044:                                             ; preds = %1041, %1038
  %storemerge893 = phi i64 [ %1040, %1038 ], [ %1043, %1041 ]
  store i64 %storemerge893, 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 %301, label %1045, label %1048

1045:                                             ; preds = %1044
  %1046 = getelementptr inbounds i8, ptr %.07941106, i64 40
  %1047 = load ptr, ptr %1046, align 8, !tbaa !106
  br label %1048

1048:                                             ; preds = %1044, %1045
  %1049 = phi ptr [ %1047, %1045 ], [ %.2788, %1044 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  store ptr null, ptr %29, align 8, !tbaa !39
  br i1 %311, label %1050, label %1053

1050:                                             ; preds = %1048
  %1051 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1052 = getelementptr inbounds i8, ptr %1, i64 %1051
  store ptr %1052, ptr %29, align 8, !tbaa !39
  br label %1053

1053:                                             ; preds = %1050, %1048
  %1054 = phi ptr [ %1052, %1050 ], [ null, %1048 ]
  %.0819 = phi ptr [ %1, %1050 ], [ %1049, %1048 ]
  %brmerge978 = select i1 %271, i1 true, i1 %.1804.in1135
  br i1 %brmerge978, label %1055, label %1299

1055:                                             ; preds = %1053
  br i1 %272, label %1057, label %1056

1056:                                             ; preds = %1055
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.1, i32 noundef 4028, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1057:                                             ; preds = %1055
  br i1 %311, label %1063, label %1058

1058:                                             ; preds = %1057
  %1059 = getelementptr inbounds i8, ptr %.07941106, i64 8
  %1060 = load i32, ptr %1059, align 8, !tbaa !98
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds i8, ptr %.0819, i64 %1061
  store ptr %1062, ptr %29, align 8, !tbaa !39
  br label %1063

1063:                                             ; preds = %1058, %1057
  %.pre10841086 = phi ptr [ %1062, %1058 ], [ %1054, %1057 ]
  %1064 = getelementptr inbounds i8, ptr %.07941106, i64 24
  %1065 = load ptr, ptr %1064, align 8, !tbaa !96
  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.063.0.copyload = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, align 4
  %.sroa.9.0.copyload = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 4), align 4
  br i1 %271, label %1066, label %1071

1066:                                             ; preds = %1063
  %1067 = getelementptr inbounds i8, ptr %.07941106, i64 76
  %1068 = load i32, ptr %1067, align 4, !tbaa !157
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds i16, ptr %1065, i64 %1069
  br label %1071

1071:                                             ; preds = %1066, %1063
  %.sroa.069.0 = phi ptr [ %1070, %1066 ], [ null, %1063 ]
  %.sroa.063.0 = phi i32 [ -1, %1066 ], [ %.sroa.063.0.copyload, %1063 ]
  %.0814 = phi i32 [ 1, %1066 ], [ 0, %1063 ]
  br i1 %.1804.in1135, label %1072, label %1081

1072:                                             ; preds = %1071
  %1073 = getelementptr inbounds i8, ptr %.07941106, i64 80
  %1074 = load i32, ptr %1073, align 4, !tbaa !142
  %1075 = getelementptr inbounds i8, ptr %.07941106, i64 84
  %1076 = load i32, ptr %1075, align 4, !tbaa !143
  %1077 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1074, i32 noundef %1076)
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds i16, ptr %1065, i64 %1078
  %1080 = add nuw nsw i32 %.0814, 1
  br label %1081

1081:                                             ; preds = %1072, %1071
  %.sroa.7.0 = phi ptr [ %1079, %1072 ], [ null, %1071 ]
  %.sroa.9.0 = phi i32 [ -1, %1072 ], [ %.sroa.9.0.copyload, %1071 ]
  %.1815 = phi i32 [ %1080, %1072 ], [ %.0814, %1071 ]
  %.lobit = lshr exact i32 %60, 20
  %1082 = add nuw nsw i32 %.1815, %.lobit
  br label %1083

1083:                                             ; preds = %1098, %1081
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1081 ], [ %.sroa.9.2, %1098 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1081 ], [ %.sroa.063.3, %1098 ]
  %.2816 = phi i32 [ %1082, %1081 ], [ %.4, %1098 ]
  %.0811 = phi i32 [ 0, %1081 ], [ %.1812, %1098 ]
  %.0810 = phi ptr [ %1065, %1081 ], [ %1099, %1098 ]
  %1084 = load i16, ptr %.0810, align 2, !tbaa !135
  switch i16 %1084, label %1098 [
    i16 0, label %1100
    i16 10, label %1085
  ]

1085:                                             ; preds = %1083
  %1086 = add nsw i32 %.0811, 1
  %1087 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1087, label %1088, label %1092

1088:                                             ; preds = %1085
  %.not895 = icmp ult ptr %.0810, %.sroa.069.0
  br i1 %.not895, label %1092, label %1089

1089:                                             ; preds = %1088
  %1090 = add nsw i32 %.2816, -1
  %1091 = icmp slt i32 %.2816, 2
  br i1 %1091, label %1100, label %1092

1092:                                             ; preds = %1089, %1088, %1085
  %.sroa.063.2 = phi i32 [ %1086, %1089 ], [ -1, %1088 ], [ %.sroa.063.1, %1085 ]
  %.3817 = phi i32 [ %1090, %1089 ], [ %.2816, %1088 ], [ %.2816, %1085 ]
  %1093 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1093, label %1094, label %1098

1094:                                             ; preds = %1092
  %.not896 = icmp ult ptr %.0810, %.sroa.7.0
  br i1 %.not896, label %1098, label %1095

1095:                                             ; preds = %1094
  %1096 = add nsw i32 %.3817, -1
  %1097 = icmp slt i32 %.3817, 2
  br i1 %1097, label %1100, label %1098

1098:                                             ; preds = %1083, %1095, %1094, %1092
  %.sroa.9.2 = phi i32 [ %1086, %1095 ], [ -1, %1094 ], [ %.sroa.9.1, %1092 ], [ %.sroa.9.1, %1083 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1095 ], [ %.sroa.063.2, %1094 ], [ %.sroa.063.2, %1092 ], [ %.sroa.063.1, %1083 ]
  %.4 = phi i32 [ %1096, %1095 ], [ %.3817, %1094 ], [ %.3817, %1092 ], [ %.2816, %1083 ]
  %.1812 = phi i32 [ %1086, %1095 ], [ %1086, %1094 ], [ %1086, %1092 ], [ %.0811, %1083 ]
  %1099 = getelementptr inbounds i8, ptr %.0810, i64 2
  br label %1083, !llvm.loop !163

1100:                                             ; preds = %1095, %1089, %1083
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1083 ], [ %.sroa.9.1, %1089 ], [ %1086, %1095 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1083 ], [ %1086, %1089 ], [ %.sroa.063.2, %1095 ]
  %.2813 = phi i32 [ %.0811, %1083 ], [ %1086, %1089 ], [ %1086, %1095 ]
  %1101 = add nsw i32 %.2813, 1
  %1102 = icmp eq i32 %.sroa.063.4, -1
  %spec.select979 = select i1 %1102, i32 %1101, i32 %.sroa.063.4
  %1103 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1103, i32 %1101, i32 %.sroa.9.3
  %1104 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1065)
  %1105 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1104, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1105, i64 0
  store float %.sroa.045.0.vec.extract, ptr %30, align 4, !tbaa !164
  %1106 = sitofp i32 %spec.select979 to float
  %1107 = getelementptr inbounds i8, ptr %70, i64 6432
  %1108 = load float, ptr %1107, align 8, !tbaa !40
  %1109 = fmul float %1108, %1106
  %1110 = getelementptr inbounds i8, ptr %30, i64 4
  store float %1109, ptr %1110, align 4, !tbaa !165
  %1111 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1111, label %1112, label %1119

1112:                                             ; preds = %1100
  %1113 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1065)
  %1114 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1113, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1114, i64 0
  store float %.sroa.044.0.vec.extract, ptr %31, align 4, !tbaa !164
  %1115 = uitofp nneg i32 %.sroa.9.4 to float
  %1116 = load float, ptr %1107, align 8, !tbaa !40
  %1117 = fmul float %1116, %1115
  %1118 = getelementptr inbounds i8, ptr %31, i64 4
  store float %1117, ptr %1118, align 4, !tbaa !165
  br label %1119

1119:                                             ; preds = %1112, %1100
  %1120 = phi float [ %1116, %1112 ], [ %1108, %1100 ]
  br i1 %61, label %1121, label %1125

1121:                                             ; preds = %1119
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  %1122 = sitofp i32 %1101 to float
  %1123 = fmul float %1120, %1122
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %.sroa.0438.1, float noundef %1123)
  %1124 = load i64, ptr %32, align 8
  store i64 %1124, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  br label %1125

1125:                                             ; preds = %1121, %1119
  br i1 %271, label %1126, label %1173

1126:                                             ; preds = %1125
  %1127 = getelementptr inbounds i8, ptr %.07941106, i64 3700
  %1128 = load i8, ptr %1127, align 4, !tbaa !131, !range !37, !noundef !38
  %1129 = trunc nuw i8 %1128 to i1
  br i1 %1129, label %1130, label %1173

1130:                                             ; preds = %1126
  %1131 = and i32 %5, 4096
  %.not897 = icmp eq i32 %1131, 0
  br i1 %.not897, label %1132, label %1150

1132:                                             ; preds = %1130
  %1133 = fmul float %.sroa.0438.1, 2.500000e-01
  %1134 = load float, ptr %30, align 4, !tbaa !164
  %1135 = getelementptr inbounds i8, ptr %.07941106, i64 72
  %1136 = load float, ptr %1135, align 8, !tbaa !100
  %1137 = fcmp olt float %1134, %1136
  br i1 %1137, label %1138, label %1143

1138:                                             ; preds = %1132
  %1139 = fsub float %1134, %1133
  %1140 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1139)
  %1141 = fptosi float %1140 to i32
  %1142 = sitofp i32 %1141 to float
  store float %1142, ptr %1135, align 8, !tbaa !100
  br label %1152

1143:                                             ; preds = %1132
  %1144 = fsub float %1134, %.sroa.0438.1
  %1145 = fcmp ult float %1144, %1136
  br i1 %1145, label %1152, label %1146

1146:                                             ; preds = %1143
  %1147 = fadd float %1133, %1144
  %1148 = fptosi float %1147 to i32
  %1149 = sitofp i32 %1148 to float
  store float %1149, ptr %1135, align 8, !tbaa !100
  br label %1152

1150:                                             ; preds = %1130
  %1151 = getelementptr inbounds i8, ptr %.07941106, i64 72
  store float 0.000000e+00, ptr %1151, align 8, !tbaa !100
  br label %1152

1152:                                             ; preds = %1138, %1146, %1143, %1150
  br i1 %61, label %1153, label %1172

1153:                                             ; preds = %1152
  %1154 = getelementptr inbounds i8, ptr %.1793, i64 88
  %1155 = load float, ptr %1154, align 4, !tbaa !140
  %1156 = load float, ptr %1110, align 4, !tbaa !165
  %1157 = load float, ptr %1107, align 8, !tbaa !40
  %1158 = fsub float %1156, %1157
  %1159 = fcmp olt float %1158, %1155
  br i1 %1159, label %1160, label %1162

1160:                                             ; preds = %1153
  %1161 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1158)
  %.pre1079 = load float, ptr %1154, align 4, !tbaa !140
  br label %1166

1162:                                             ; preds = %1153
  %1163 = fsub float %1156, %.sroa.12.0.copyload
  %1164 = fcmp ult float %1163, %1155
  br i1 %1164, label %1166, label %1165

1165:                                             ; preds = %1162
  br label %1166

1166:                                             ; preds = %1162, %1165, %1160
  %1167 = phi float [ %.pre1079, %1160 ], [ %1155, %1165 ], [ %1155, %1162 ]
  %.0802 = phi float [ %1161, %1160 ], [ %1163, %1165 ], [ %1155, %1162 ]
  %1168 = fsub float %1167, %.0802
  %1169 = getelementptr inbounds i8, ptr %27, i64 4
  %1170 = load float, ptr %1169, align 4, !tbaa !165
  %1171 = fadd float %1170, %1168
  store float %1171, ptr %1169, align 4, !tbaa !165
  store float %.0802, ptr %1154, align 4, !tbaa !140
  br label %1172

1172:                                             ; preds = %1166, %1152
  store i8 0, ptr %1127, align 4, !tbaa !131
  br label %1173

1173:                                             ; preds = %1172, %1126, %1125
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #15
  %1174 = getelementptr inbounds i8, ptr %.07941106, i64 72
  %1175 = load float, ptr %1174, align 8, !tbaa !100
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %1175, float noundef 0.000000e+00)
  br i1 %.1804.in1135, label %1176, label %1245

1176:                                             ; preds = %1173
  %1177 = getelementptr inbounds i8, ptr %.07941106, i64 80
  %1178 = load i32, ptr %1177, align 4, !tbaa !142
  %1179 = getelementptr inbounds i8, ptr %.07941106, i64 84
  %1180 = load i32, ptr %1179, align 4, !tbaa !143
  %1181 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1178, i32 noundef %1180)
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds i16, ptr %1065, i64 %1182
  %1184 = load i32, ptr %1177, align 4, !tbaa !142
  %1185 = load i32, ptr %1179, align 4, !tbaa !143
  %1186 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1184, i32 noundef %1185)
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds i16, ptr %1065, i64 %1187
  %1189 = select i1 %271, float 1.000000e+00, float 0x3FE3333340000000
  %1190 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 42, float noundef %1189)
  %1191 = select i1 %61, float 0.000000e+00, float -1.000000e+00
  %1192 = select i1 %61, 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
  %1193 = 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> %1193, ptr %35, align 8
  %1194 = 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> %1194, 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 %1183, ptr %36, align 8, !tbaa !39
  %1195 = getelementptr inbounds i8, ptr %34, i64 4
  %1196 = icmp slt i32 %1181, %1186
  br i1 %1196, label %.lr.ph1067, label %._crit_edge

.lr.ph1067:                                       ; preds = %1176
  %1197 = extractelement <2 x float> %1194, i64 1
  %1198 = getelementptr inbounds i8, ptr %26, i64 12
  %1199 = getelementptr inbounds i8, ptr %26, i64 4
  %1200 = getelementptr inbounds i8, ptr %70, i64 6424
  %1201 = getelementptr inbounds i8, ptr %.1793, i64 688
  %1202 = getelementptr inbounds i8, ptr %37, i64 8
  %.pre1080 = load float, ptr %1107, align 8, !tbaa !40
  br label %1203

1203:                                             ; preds = %.lr.ph1067, %.loopexit
  %1204 = phi ptr [ %1183, %.lr.ph1067 ], [ %1237, %.loopexit ]
  %1205 = phi float [ %1197, %.lr.ph1067 ], [ %1243, %.loopexit ]
  %1206 = phi float [ %.pre1080, %.lr.ph1067 ], [ %1239, %.loopexit ]
  %1207 = load float, ptr %1198, align 4, !tbaa !166
  %1208 = fadd float %1207, %1206
  %1209 = fcmp ogt float %1205, %1208
  br i1 %1209, label %._crit_edge.loopexit, label %1210

1210:                                             ; preds = %1203
  %1211 = load float, ptr %1199, align 4, !tbaa !167
  %1212 = fcmp olt float %1205, %1211
  br i1 %1212, label %.preheader, label %1219

.preheader:                                       ; preds = %1210, %1215
  %1213 = phi ptr [ %1216, %1215 ], [ %1204, %1210 ]
  %1214 = icmp ult ptr %1213, %1188
  br i1 %1214, label %1215, label %.loopexit

1215:                                             ; preds = %.preheader
  %1216 = getelementptr inbounds i8, ptr %1213, i64 2
  store ptr %1216, ptr %36, align 8, !tbaa !39
  %1217 = load i16, ptr %1213, align 2, !tbaa !135
  %1218 = icmp eq i16 %1217, 10
  br i1 %1218, label %.loopexit, label %.preheader, !llvm.loop !168

1219:                                             ; preds = %1210
  %1220 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1204, ptr noundef nonnull %1188, ptr noundef nonnull %36, ptr noundef null, i1 noundef zeroext true)
  %.sroa.028.0.vec.extract = extractelement <2 x float> %1220, i64 0
  %1221 = fcmp ugt float %.sroa.028.0.vec.extract, 0.000000e+00
  br i1 %1221, label %1228, label %1222

1222:                                             ; preds = %1219
  %1223 = load ptr, ptr %1200, align 8, !tbaa !108
  %1224 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114) %1223, i16 noundef zeroext 32)
  %1225 = fmul float %1224, 5.000000e-01
  %1226 = fptosi float %1225 to i32
  %1227 = sitofp i32 %1226 to float
  br label %1228

1228:                                             ; preds = %1222, %1219
  %.sroa.028.0.vec.extract31.pre-phi = phi float [ %1227, %1222 ], [ %.sroa.028.0.vec.extract, %1219 ]
  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
  %1229 = load float, ptr %1107, align 8, !tbaa !40
  %1230 = fsub float %1191, %1229
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef %1230)
  %1231 = 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> %1231, 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 %1192)
  %1232 = 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> %1232, 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)
  %1233 = 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 %1233, label %1234, label %1236

1234:                                             ; preds = %1228
  %1235 = load ptr, ptr %1201, align 8, !tbaa !169
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1235, ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1202, i32 noundef %1190, float noundef 0.000000e+00, i32 noundef 15)
  br label %1236

1236:                                             ; preds = %1234, %1228
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #15
  %.pre1081 = load float, ptr %1107, align 8, !tbaa !40
  %.pre1082 = load float, ptr %1195, align 4, !tbaa !165
  %.pre1083 = load ptr, ptr %36, align 8, !tbaa !39
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1215, %1236
  %1237 = phi ptr [ %.pre1083, %1236 ], [ %1213, %.preheader ], [ %1216, %1215 ]
  %1238 = phi float [ %.pre1082, %1236 ], [ %1205, %1215 ], [ %1205, %.preheader ]
  %1239 = phi float [ %.pre1081, %1236 ], [ %1206, %1215 ], [ %1206, %.preheader ]
  %1240 = load float, ptr %27, align 8, !tbaa !164
  %1241 = load float, ptr %33, align 4, !tbaa !164
  %1242 = fsub float %1240, %1241
  store float %1242, ptr %34, align 8, !tbaa !164
  %1243 = fadd float %1239, %1238
  store float %1243, ptr %1195, align 4, !tbaa !165
  %1244 = icmp ult ptr %1237, %1188
  br i1 %1244, label %1203, label %._crit_edge.loopexit, !llvm.loop !170

._crit_edge.loopexit:                             ; preds = %1203, %.loopexit
  %.pre1084.pre.pre = load ptr, ptr %29, align 8, !tbaa !39
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1176
  %.pre1084.pre = phi ptr [ %.pre1084.pre.pre, %._crit_edge.loopexit ], [ %.pre10841086, %1176 ]
  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 %1245

1245:                                             ; preds = %._crit_edge, %1173
  %.pre1084 = phi ptr [ %.pre1084.pre, %._crit_edge ], [ %.pre10841086, %1173 ]
  br i1 %61, label %1251, label %1246

1246:                                             ; preds = %1245
  %1247 = ptrtoint ptr %.pre1084 to i64
  %1248 = ptrtoint ptr %.0819 to i64
  %1249 = sub i64 %1247, %1248
  %1250 = icmp slt i64 %1249, 2097152
  br i1 %1250, label %1251, label %1260

1251:                                             ; preds = %1246, %1245
  %. = phi ptr [ %26, %1246 ], [ null, %1245 ]
  %1252 = zext i1 %311 to i32
  %1253 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1252, float noundef 1.000000e+00)
  %1254 = getelementptr inbounds i8, ptr %.1793, i64 688
  %1255 = load ptr, ptr %1254, align 8, !tbaa !169
  %1256 = getelementptr inbounds i8, ptr %70, i64 6424
  %1257 = load ptr, ptr %1256, align 8, !tbaa !108
  %1258 = load float, ptr %1107, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #15
  %1259 = 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> %1259, ptr %44, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1255, ptr noundef %1257, float noundef %1258, ptr noundef nonnull align 4 dereferenceable(8) %44, i32 noundef %1253, ptr noundef %.0819, ptr noundef %.pre1084, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #15
  br label %1260

1260:                                             ; preds = %1251, %1246
  br i1 %271, label %1261, label %1298

1261:                                             ; preds = %1260
  %1262 = getelementptr inbounds i8, ptr %70, i64 24
  %1263 = load float, ptr %1262, align 8, !tbaa !171
  %1264 = getelementptr inbounds i8, ptr %.07941106, i64 3696
  %1265 = load float, ptr %1264, align 8, !tbaa !172
  %1266 = fadd float %1263, %1265
  store float %1266, ptr %1264, align 8, !tbaa !172
  %1267 = getelementptr inbounds i8, ptr %70, i64 202
  %1268 = load i8, ptr %1267, align 2, !tbaa !173, !range !37, !noundef !38
  %1269 = trunc nuw i8 %1268 to i1
  %1270 = fcmp ugt float %1266, 0.000000e+00
  %or.cond980 = select i1 %1269, i1 %1270, i1 false
  br i1 %or.cond980, label %1271, label %1274

1271:                                             ; preds = %1261
  %1272 = call float @fmodf(float noundef %1266, float noundef 0x3FF3333340000000) #15
  %1273 = fcmp ole float %1272, 0x3FE99999A0000000
  br label %1274

1274:                                             ; preds = %1271, %1261
  %1275 = phi i1 [ true, %1261 ], [ %1273, %1271 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #15
  %1276 = 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> %1276, ptr %45, align 8
  %1277 = 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> %1277, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1277, i64 1
  %1278 = load float, ptr %1107, align 8, !tbaa !40
  %1279 = fsub float %.sroa.0.4.vec.extract, %1278
  %1280 = fadd float %1279, 5.000000e-01
  %1281 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1282 = 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 %1280, float noundef %1281, float noundef %1282)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #15
  br i1 %1275, label %1283, label %.critedge13

1283:                                             ; preds = %1274
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %47, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %1284 = 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 %1284, label %1285, label %1290

1285:                                             ; preds = %1283
  %1286 = getelementptr inbounds i8, ptr %.1793, i64 688
  %1287 = load ptr, ptr %1286, align 8, !tbaa !169
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #15
  %1288 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %46)
  store <2 x float> %1288, ptr %48, align 8
  %1289 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1287, ptr noundef nonnull align 4 dereferenceable(8) %46, ptr noundef nonnull align 4 dereferenceable(8) %48, i32 noundef %1289, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #15
  br label %1290

.critedge13:                                      ; preds = %1274
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #15
  br label %1290

1290:                                             ; preds = %.critedge13, %1285, %1283
  br i1 %72, label %1297, label %1291

1291:                                             ; preds = %1290
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #15
  %1292 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1293 = load float, ptr %1107, align 8, !tbaa !40
  %1294 = fsub float %.sroa.0.4.vec.extract, %1293
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %1292, float noundef %1294)
  %1295 = getelementptr inbounds i8, ptr %70, i64 12112
  %1296 = load i64, ptr %49, align 8
  store i64 %1296, ptr %1295, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #15
  br label %1297

1297:                                             ; preds = %1291, %1290
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #15
  br label %1298

1298:                                             ; preds = %1297, %1260
  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 %1334

1299:                                             ; preds = %1053
  br i1 %61, label %.critedge982, label %1300

1300:                                             ; preds = %1299
  br i1 %311, label %1318, label %1301

1301:                                             ; preds = %1300
  %1302 = load i32, ptr %162, align 8, !tbaa !89
  %1303 = icmp eq i32 %1302, %82
  br i1 %1303, label %1304, label %1309

1304:                                             ; preds = %1301
  %1305 = getelementptr inbounds i8, ptr %.07941106, i64 8
  %1306 = load i32, ptr %1305, align 8, !tbaa !98
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds i8, ptr %.0819, i64 %1307
  store ptr %1308, ptr %29, align 8, !tbaa !39
  br label %1318

1309:                                             ; preds = %1301
  %1310 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0819) #16
  %1311 = getelementptr inbounds i8, ptr %.0819, i64 %1310
  store ptr %1311, ptr %29, align 8, !tbaa !39
  br label %1318

.critedge982:                                     ; preds = %1299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #15
  %1312 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0819, ptr noundef nonnull %29)
  %1313 = sitofp i32 %1312 to float
  %1314 = getelementptr inbounds i8, ptr %70, i64 6432
  %1315 = load float, ptr %1314, align 8, !tbaa !40
  %1316 = fmul float %1315, %1313
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %50, float noundef %.sroa.0438.1, float noundef %1316)
  %1317 = load i64, ptr %50, align 8
  store i64 %1317, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #15
  br label %1324

1318:                                             ; preds = %1300, %1304, %1309
  %1319 = phi ptr [ %1054, %1300 ], [ %1308, %1304 ], [ %1311, %1309 ]
  %1320 = ptrtoint ptr %1319 to i64
  %1321 = ptrtoint ptr %.0819 to i64
  %1322 = sub i64 %1320, %1321
  %1323 = icmp slt i64 %1322, 2097152
  br i1 %1323, label %1324, label %.thread1042

1324:                                             ; preds = %.critedge982, %1318
  %.14 = phi ptr [ %26, %1318 ], [ null, %.critedge982 ]
  %1325 = zext i1 %311 to i32
  %1326 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1325, float noundef 1.000000e+00)
  %1327 = getelementptr inbounds i8, ptr %.1793, i64 688
  %1328 = load ptr, ptr %1327, align 8, !tbaa !169
  %1329 = getelementptr inbounds i8, ptr %70, i64 6424
  %1330 = load ptr, ptr %1329, align 8, !tbaa !108
  %1331 = getelementptr inbounds i8, ptr %70, i64 6432
  %1332 = load float, ptr %1331, align 8, !tbaa !40
  %1333 = load ptr, ptr %29, align 8, !tbaa !39
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1328, ptr noundef %1330, float noundef %1332, ptr noundef nonnull align 4 dereferenceable(8) %27, i32 noundef %1326, ptr noundef %.0819, ptr noundef %1333, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1334

1334:                                             ; preds = %1324, %1298
  br i1 %61, label %1335, label %.thread1042

1335:                                             ; preds = %1334
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #15
  %1336 = getelementptr inbounds i8, ptr %70, i64 6432
  %1337 = load float, ptr %1336, align 8, !tbaa !40
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef 0.000000e+00, float noundef %1337)
  %1338 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %52)
  store <2 x float> %1338, ptr %51, align 8
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %51)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #15
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread1042

.thread1042:                                      ; preds = %1318, %1335, %1334
  br i1 %brmerge912, label %1339, label %.thread1043

.thread1043:                                      ; preds = %.thread1042
  call void @_ZN5ImGui7PopFontEv()
  br label %1345

1339:                                             ; preds = %.thread1042
  %1340 = getelementptr inbounds i8, ptr %70, i64 12184
  %1341 = load i8, ptr %1340, align 8, !tbaa !174, !range !37, !noundef !38
  %1342 = trunc nuw i8 %1341 to i1
  br i1 %1342, label %1343, label %1345

1343:                                             ; preds = %1339
  %1344 = load ptr, ptr %29, align 8, !tbaa !39
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %27, ptr noundef %.0819, ptr noundef %1344)
  br label %1345

1345:                                             ; preds = %.thread1043, %1343, %1339
  br i1 %98, label %1346, label %1356

1346:                                             ; preds = %1345
  %1347 = getelementptr inbounds i8, ptr %11, i64 8
  %1348 = load float, ptr %1347, align 8, !tbaa !175
  %1349 = getelementptr inbounds i8, ptr %70, i64 5552
  %1350 = load float, ptr %1349, align 4, !tbaa !76
  %1351 = fadd float %1348, %1350
  %1352 = load float, ptr %1034, align 4, !tbaa !162
  %1353 = load float, ptr %93, align 4, !tbaa !75
  %1354 = fadd float %1352, %1353
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %1351, float noundef %1354)
  %1355 = load <2 x float>, ptr %53, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1355, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1356

1356:                                             ; preds = %1346, %1345
  %1357 = and i32 %5, 2097152
  %.not898 = icmp eq i32 %1357, 0
  %or.cond985 = and i1 %.not898, %.1806
  br i1 %or.cond985, label %1358, label %1359

1358:                                             ; preds = %1356
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %82)
  br label %1359

1359:                                             ; preds = %1356, %1358
  %1360 = and i32 %5, 32
  %.not899 = icmp eq i32 %1360, 0
  %1361 = trunc nuw i8 %.28091133 to i1
  %.1 = select i1 %.not899, i1 %.1806, i1 %1361
  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 %1362

1362:                                             ; preds = %133, %134, %1359, %113
  %.2 = phi i1 [ %.1, %1359 ], [ false, %133 ], [ false, %113 ], [ false, %134 ]
  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 %1363

1363:                                             ; preds = %8, %1362
  %.3 = phi i1 [ %.2, %1362 ], [ 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(3728), i32 noundef) local_unnamed_addr #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728)) 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(3728)) 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(3728)) local_unnamed_addr #4 align 2

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114), 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(3728)) 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 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(3728)) 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(114), 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(168), 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 131}
!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, !12, i64 64, !12, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !11, i64 84, !11, i64 92, !11, i64 100, !11, i64 108, !11, i64 116, !13, i64 124, !13, i64 125, !13, i64 126, !13, i64 127, !13, i64 128, !13, i64 129, !13, i64 130, !13, i64 131, !13, i64 132, !13, i64 133, !13, i64 134, !13, i64 135, !8, i64 136, !14, i64 138, !14, i64 140, !14, i64 142, !10, i64 144, !8, i64 148, !8, i64 149, !8, i64 150, !13, i64 151, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !11, i64 176, !11, i64 184, !15, i64 192, !16, i64 208, !18, i64 536, !18, i64 552, !18, i64 568, !18, i64 584, !18, i64 600, !18, i64 616, !10, i64 632, !12, i64 636, !12, i64 640, !25, i64 648, !27, i64 664, !12, i64 680, !10, i64 684, !7, i64 688, !28, i64 696, !7, i64 864, !7, i64 872, !7, i64 880, !7, i64 888, !7, i64 896, !8, i64 904, !8, i64 912, !13, i64 944, !10, i64 948, !10, i64 952}
!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, !12, i64 48, !12, i64 52, !17, i64 56, !17, i64 60, !17, i64 64, !10, i64 68, !10, i64 72, !18, i64 76, !18, i64 92, !19, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !13, i64 128, !13, i64 129, !13, i64 130, !11, i64 132, !20, i64 140, !10, i64 176, !10, i64 180, !21, i64 184, !7, i64 200, !7, i64 208, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !12, i64 236, !12, i64 240, !22, i64 248, !23, i64 264, !23, i64 280, !24, i64 296, !8, i64 312}
!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 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!23 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!24 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorIN12ImGuiStorage16ImGuiStoragePairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!27 = !{!"_ZTS8ImVectorI12ImGuiColumnsE", !10, i64 0, !10, i64 4, !7, i64 8}
!28 = !{!"_ZTS10ImDrawList", !29, i64 0, !30, i64 16, !31, i64 32, !10, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !10, i64 76, !7, i64 80, !7, i64 88, !32, i64 96, !33, i64 112, !34, i64 128, !35, i64 144}
!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 = !{!"_ZTS18ImDrawListSplitter", !10, i64 0, !10, i64 4, !36, i64 8}
!36 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!7, !7, i64 0}
!40 = !{!41, !12, i64 6432}
!41 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !42, i64 8, !43, i64 5472, !7, i64 6424, !12, i64 6432, !12, i64 6436, !44, i64 6440, !46, i64 6648, !10, i64 6656, !10, i64 6660, !10, i64 6664, !13, i64 6668, !13, i64 6669, !13, i64 6670, !21, i64 6672, !21, i64 6688, !21, i64 6704, !21, i64 6720, !25, i64 6736, !10, i64 6752, !7, i64 6760, !7, i64 6768, !7, i64 6776, !7, i64 6784, !7, i64 6792, !11, i64 6800, !12, i64 6808, !10, i64 6812, !13, i64 6816, !10, i64 6820, !12, i64 6824, !12, i64 6828, !10, i64 6832, !10, i64 6836, !12, i64 6840, !13, i64 6844, !13, i64 6845, !13, i64 6846, !13, i64 6847, !13, i64 6848, !10, i64 6852, !10, i64 6856, !47, i64 6864, !11, i64 6872, !7, i64 6880, !48, i64 6888, !10, i64 6892, !10, i64 6896, !13, i64 6900, !13, i64 6901, !7, i64 6904, !10, i64 6912, !12, i64 6916, !49, i64 6920, !50, i64 7024, !51, i64 7048, !52, i64 7064, !53, i64 7080, !54, i64 7096, !54, i64 7112, !7, i64 7128, !10, i64 7136, !10, i64 7140, !10, i64 7144, !10, i64 7148, !10, i64 7152, !10, i64 7156, !10, i64 7160, !10, i64 7164, !10, i64 7168, !10, i64 7172, !48, i64 7176, !18, i64 7180, !10, i64 7196, !19, i64 7200, !10, i64 7204, !13, i64 7208, !13, i64 7209, !13, i64 7210, !13, i64 7211, !13, i64 7212, !13, i64 7213, !13, i64 7214, !10, i64 7216, !18, i64 7220, !13, i64 7236, !13, i64 7237, !10, i64 7240, !55, i64 7244, !10, i64 7248, !10, i64 7252, !10, i64 7256, !56, i64 7264, !56, i64 7312, !56, i64 7360, !7, i64 7408, !7, i64 7416, !7, i64 7424, !12, i64 7432, !12, i64 7436, !13, i64 7440, !7, i64 7448, !7, i64 7456, !10, i64 7464, !10, i64 7468, !10, i64 7472, !10, i64 7476, !13, i64 7480, !57, i64 7488, !58, i64 7544, !12, i64 7576, !28, i64 7584, !28, i64 7752, !10, i64 7920, !13, i64 7924, !13, i64 7925, !10, i64 7928, !10, i64 7932, !10, i64 7936, !59, i64 7944, !18, i64 8008, !10, i64 8024, !10, i64 8028, !12, i64 8032, !10, i64 8036, !10, i64 8040, !10, i64 8044, !60, i64 8048, !8, i64 8064, !7, i64 8080, !61, i64 8088, !63, i64 8128, !64, i64 8144, !11, i64 8160, !65, i64 8168, !69, i64 11896, !10, i64 12016, !10, i64 12020, !12, i64 12024, !12, i64 12028, !8, i64 12032, !45, i64 12044, !13, i64 12060, !12, i64 12064, !12, i64 12068, !12, i64 12072, !10, i64 12076, !66, i64 12080, !15, i64 12096, !11, i64 12112, !11, i64 12120, !13, i64 12128, !12, i64 12132, !71, i64 12136, !72, i64 12152, !73, i64 12168, !13, i64 12184, !74, i64 12188, !7, i64 12192, !71, i64 12200, !12, i64 12216, !13, i64 12220, !10, i64 12224, !10, i64 12228, !10, i64 12232, !13, i64 12236, !10, i64 12240, !8, i64 12244, !10, i64 12724, !12, i64 12728, !10, i64 12732, !10, i64 12736, !10, i64 12740, !8, i64 12744}
!42 = !{!"_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, !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, !7, i64 288, !11, i64 296, !8, i64 304, !12, i64 312, !12, i64 316, !13, i64 320, !13, i64 321, !13, i64 322, !13, i64 323, !8, i64 324, !8, i64 836, !13, i64 920, !13, i64 921, !13, i64 922, !13, i64 923, !13, i64 924, !13, i64 925, !13, i64 926, !12, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !10, i64 948, !11, i64 952, !11, i64 960, !8, i64 968, !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, !14, i64 5440, !30, i64 5448}
!43 = !{!"_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, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !10, i64 128, !11, i64 132, !11, i64 140, !11, i64 148, !11, i64 156, !12, i64 164, !13, i64 168, !13, i64 169, !12, i64 172, !12, i64 176, !8, i64 180}
!44 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !45, i64 28, !10, i64 44, !8, i64 48, !8, i64 144}
!45 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!46 = !{!"double", !8, i64 0}
!47 = !{!"long long", !8, i64 0}
!48 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!49 = !{!"_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, !13, i64 48, !18, i64 52, !7, i64 72, !7, i64 80, !12, i64 88, !11, i64 92}
!50 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !10, i64 8, !10, i64 12, !13, i64 16}
!51 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !7, i64 8}
!52 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !7, i64 8}
!53 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !7, i64 8}
!54 = !{!"_ZTS8ImVectorI14ImGuiPopupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!55 = !{!"_ZTS15ImGuiNavForward", !8, i64 0}
!56 = !{!"_ZTS18ImGuiNavMoveResult", !7, i64 0, !10, i64 8, !10, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !18, i64 28}
!57 = !{!"_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}
!58 = !{!"_ZTS17ImDrawDataBuilder", !8, i64 0}
!59 = !{!"_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}
!60 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!61 = !{!"_ZTS6ImPoolI11ImGuiTabBarE", !62, i64 0, !25, i64 16, !10, i64 32}
!62 = !{!"_ZTS8ImVectorI11ImGuiTabBarE", !10, i64 0, !10, i64 4, !7, i64 8}
!63 = !{!"_ZTS8ImVectorI15ImGuiPtrOrIndexE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTS8ImVectorI20ImGuiShrinkWidthItemE", !10, i64 0, !10, i64 4, !7, i64 8}
!65 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !10, i64 4, !10, i64 8, !30, i64 16, !66, i64 32, !66, i64 48, !13, i64 64, !10, i64 68, !12, i64 72, !67, i64 76, !12, i64 3696, !13, i64 3700, !13, i64 3701, !10, i64 3704, !7, i64 3712, !7, i64 3720}
!66 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!67 = !{!"_ZTSN5ImStb17STB_TexteditStateE", !10, i64 0, !10, i64 4, !10, i64 8, !8, i64 12, !8, i64 13, !8, i64 14, !8, i64 15, !8, i64 16, !8, i64 17, !8, i64 18, !8, i64 19, !12, i64 20, !68, i64 24}
!68 = !{!"_ZTSN5ImStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !14, i64 3582, !14, i64 3584, !10, i64 3588, !10, i64 3592}
!69 = !{!"_ZTS6ImFont", !23, i64 0, !12, i64 16, !12, i64 20, !30, i64 24, !70, i64 40, !7, i64 56, !11, i64 64, !7, i64 72, !7, i64 80, !14, i64 88, !14, i64 90, !14, i64 92, !13, i64 94, !12, i64 96, !12, i64 100, !12, i64 104, !10, i64 108, !8, i64 112}
!70 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS15ImGuiTextBuffer", !66, i64 0}
!72 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!73 = !{!"_ZTS13ImChunkStreamI19ImGuiWindowSettingsE", !66, i64 0}
!74 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!75 = !{!43, !12, i64 60}
!76 = !{!43, !12, i64 80}
!77 = !{!12, !12, i64 0}
!78 = !{!43, !12, i64 64}
!79 = !{!43, !12, i64 68}
!80 = !{!41, !7, i64 6760}
!81 = !{!6, !10, i64 320}
!82 = !{!6, !10, i64 328}
!83 = !{!6, !12, i64 116}
!84 = !{!41, !10, i64 7920}
!85 = !{!41, !7, i64 7448}
!86 = !{!41, !10, i64 7464}
!87 = !{!6, !10, i64 432}
!88 = !{!13, !13, i64 0}
!89 = !{!41, !10, i64 6832}
!90 = !{!41, !10, i64 7156}
!91 = !{!41, !10, i64 7144}
!92 = !{!41, !48, i64 7176}
!93 = !{!41, !10, i64 6896}
!94 = !{!65, !7, i64 56}
!95 = !{!65, !13, i64 64}
!96 = !{!65, !7, i64 24}
!97 = !{!65, !10, i64 4}
!98 = !{!65, !10, i64 8}
!99 = !{!65, !10, i64 0}
!100 = !{!65, !12, i64 72}
!101 = !{!65, !8, i64 88}
!102 = !{!42, !13, i64 320}
!103 = !{!10, !10, i64 0}
!104 = !{!41, !47, i64 6864}
!105 = !{!65, !10, i64 16}
!106 = !{!65, !7, i64 40}
!107 = !{!8, !8, i64 0}
!108 = !{!41, !7, i64 6424}
!109 = !{!69, !12, i64 20}
!110 = !{!69, !12, i64 96}
!111 = !{!69, !7, i64 72}
!112 = !{!69, !7, i64 56}
!113 = !{!114, !12, i64 4}
!114 = !{!"_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}
!115 = !{!69, !12, i64 16}
!116 = !{!65, !10, i64 68}
!117 = !{!65, !10, i64 3704}
!118 = !{!65, !7, i64 3712}
!119 = !{!65, !7, i64 3720}
!120 = !{!41, !13, i64 6845}
!121 = !{!41, !10, i64 12740}
!122 = !{!42, !12, i64 296}
!123 = !{!18, !12, i64 0}
!124 = !{!43, !12, i64 56}
!125 = !{!42, !12, i64 300}
!126 = !{!6, !12, i64 212}
!127 = !{!42, !13, i64 193}
!128 = !{!65, !13, i64 3701}
!129 = !{!42, !12, i64 952}
!130 = !{!42, !12, i64 956}
!131 = !{!65, !13, i64 3700}
!132 = !{!42, !13, i64 322}
!133 = !{!42, !13, i64 323}
!134 = !{!42, !13, i64 321}
!135 = !{!14, !14, i64 0}
!136 = !{!42, !10, i64 5448}
!137 = distinct !{!137, !138}
!138 = !{!"llvm.loop.mustprogress"}
!139 = !{!41, !13, i64 6844}
!140 = !{!6, !12, i64 88}
!141 = !{!42, !7, i64 256}
!142 = !{!65, !10, i64 80}
!143 = !{!65, !10, i64 84}
!144 = distinct !{!144, !138}
!145 = !{!65, !10, i64 48}
!146 = !{!30, !7, i64 8}
!147 = !{!30, !10, i64 0}
!148 = !{!65, !10, i64 32}
!149 = !{!150, !10, i64 0}
!150 = !{!"_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}
!151 = !{!150, !10, i64 4}
!152 = !{!150, !7, i64 8}
!153 = !{!150, !10, i64 20}
!154 = !{!150, !7, i64 24}
!155 = !{!150, !10, i64 32}
!156 = !{!150, !10, i64 36}
!157 = !{!65, !10, i64 76}
!158 = !{!150, !10, i64 44}
!159 = !{!150, !10, i64 48}
!160 = !{!150, !10, i64 52}
!161 = !{!150, !13, i64 40}
!162 = !{!18, !12, i64 4}
!163 = distinct !{!163, !138}
!164 = !{!11, !12, i64 0}
!165 = !{!11, !12, i64 4}
!166 = !{!45, !12, i64 12}
!167 = !{!45, !12, i64 4}
!168 = distinct !{!168, !138}
!169 = !{!6, !7, i64 688}
!170 = distinct !{!170, !138}
!171 = !{!42, !12, i64 16}
!172 = !{!65, !12, i64 3696}
!173 = !{!41, !13, i64 202}
!174 = !{!41, !13, i64 12184}
!175 = !{!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