; LLVM IR from lbowes/falcon-9-simulation :: 3rd_party/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, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, i8, i8, i8, i8, i32, [4 x i8], ptr, %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, 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, i32, [4 x i8], %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, ptr, i32, [4 x i8], ptr, ptr, ptr, float, float, i8, [7 x i8], ptr, ptr, i32, i32, i32, i32, i8, [7 x i8], %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, %struct.ImDrawList, i32, i8, i8, i8, i8, i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, i32, [4 x i8], %struct.ImVector.18, [16 x i8], ptr, %struct.ImPool, %struct.ImVector.20, %struct.ImVector.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, i32, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float], 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, 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, %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 [94 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [31 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.63 = 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

; 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

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

174:                                              ; preds = %8
  %175 = load ptr, ptr %12, align 8, !tbaa !5
  %176 = icmp ne ptr %175, null
  br i1 %176, label %177, label %180

177:                                              ; preds = %174
  %178 = load i32, ptr %13, align 4, !tbaa !9
  %179 = icmp sge i32 %178, 0
  br label %180

180:                                              ; preds = %177, %174
  %181 = phi i1 [ false, %174 ], [ %179, %177 ]
  br i1 %181, label %182, label %183

182:                                              ; preds = %180
  br label %185

183:                                              ; preds = %180
  call void @__assert_fail(ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 3526, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

184:                                              ; No predecessors!
  br label %185

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

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

193:                                              ; preds = %189, %185
  %194 = phi i1 [ false, %185 ], [ %192, %189 ]
  %195 = xor i1 %194, true
  br i1 %195, label %196, label %197

196:                                              ; preds = %193
  br label %199

197:                                              ; preds = %193
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 3527, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #15
  unreachable

198:                                              ; No predecessors!
  br label %199

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

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

207:                                              ; preds = %203, %199
  %208 = phi i1 [ false, %199 ], [ %206, %203 ]
  %209 = xor i1 %208, true
  br i1 %209, label %210, label %211

210:                                              ; preds = %207
  br label %213

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

212:                                              ; No predecessors!
  br label %213

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

241:                                              ; preds = %213
  %242 = load ptr, ptr %16, align 8, !tbaa !5
  %243 = icmp ne ptr %242, null
  br i1 %243, label %244, label %245

244:                                              ; preds = %241
  br label %247

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

246:                                              ; No predecessors!
  br label %247

247:                                              ; preds = %246, %244
  br label %248

248:                                              ; preds = %247, %213
  %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 %252

251:                                              ; preds = %248
  call void @_ZN5ImGui10BeginGroupEv()
  br label %252

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

262:                                              ; preds = %252
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.ImGuiContext, ptr %263, i32 0, i32 6
  %265 = load float, ptr %264, align 8, !tbaa !44
  %266 = fmul float %265, 8.000000e+00
  br label %270

267:                                              ; preds = %252
  %268 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 1
  %269 = load float, ptr %268, align 4, !tbaa !79
  br label %270

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

284:                                              ; preds = %270
  %285 = load ptr, ptr %22, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ImGuiStyle, ptr %285, i32 0, i32 15
  %287 = getelementptr inbounds %struct.ImVec2, ptr %286, i32 0, i32 0
  %288 = load float, ptr %287, align 4, !tbaa !82
  %289 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %290 = load float, ptr %289, align 4, !tbaa !81
  %291 = fadd float %288, %290
  br label %293

292:                                              ; preds = %270
  br label %293

293:                                              ; preds = %292, %284
  %294 = phi float [ %291, %284 ], [ 0.000000e+00, %292 ]
  %295 = fadd float %280, %294
  %296 = getelementptr inbounds %struct.ImVec2, ptr %31, i32 0, i32 1
  %297 = load float, ptr %296, align 4, !tbaa !79
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %295, float noundef %297)
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #14
  %298 = load ptr, ptr %18, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.ImGuiWindow, ptr %298, i32 0, i32 50
  %300 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %299, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #14
  %301 = load ptr, ptr %18, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.ImGuiWindow, ptr %301, i32 0, i32 50
  %303 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %302, i32 0, i32 0
  %304 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %303, ptr noundef nonnull align 4 dereferenceable(8) %31)
  store <2 x float> %304, ptr %35, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %34, ptr noundef nonnull align 4 dereferenceable(8) %300, 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
  %305 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #14
  %306 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %307 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %306, ptr noundef nonnull align 4 dereferenceable(8) %33)
  store <2 x float> %307, ptr %37, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(8) %305, 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
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %308, 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
  %309 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %310 = trunc i8 %309 to i1
  br i1 %310, label %311, label %362

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

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

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

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

339:                                              ; preds = %319
  %340 = load ptr, ptr %20, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.ImGuiContext, ptr %340, i32 0, i32 27
  %342 = load ptr, ptr %341, align 8, !tbaa !85
  store ptr %342, ptr %38, align 8, !tbaa !5
  %343 = load ptr, ptr %38, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.ImGuiWindow, ptr %343, i32 0, i32 50
  %345 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %344, i32 0, i32 16
  %346 = load i32, ptr %345, align 8, !tbaa !86
  %347 = load ptr, ptr %38, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.ImGuiWindow, ptr %347, i32 0, i32 50
  %349 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %348, i32 0, i32 18
  %350 = load i32, ptr %349, align 8, !tbaa !87
  %351 = or i32 %350, %346
  store i32 %351, ptr %349, align 8, !tbaa !87
  %352 = load ptr, ptr %38, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ImGuiWindow, ptr %352, i32 0, i32 18
  %354 = getelementptr inbounds %struct.ImVec2, ptr %353, i32 0, i32 0
  %355 = load float, ptr %354, align 4, !tbaa !88
  %356 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %357 = load float, ptr %356, align 4, !tbaa !81
  %358 = fsub float %357, %355
  store float %358, ptr %356, align 4, !tbaa !81
  store i32 0, ptr %19, align 4
  br label %359

359:                                              ; preds = %339, %338
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #14
  %360 = load i32, ptr %19, align 4
  switch i32 %360, label %3109 [
    i32 0, label %361
  ]

361:                                              ; preds = %359
  br label %371

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

369:                                              ; preds = %362
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3109

370:                                              ; preds = %362
  br label %371

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

377:                                              ; preds = %371
  %378 = load ptr, ptr %20, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.ImGuiContext, ptr %378, i32 0, i32 136
  store i32 1, ptr %379, align 8, !tbaa !89
  br label %380

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

389:                                              ; preds = %380
  %390 = load ptr, ptr %20, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.ImGuiContext, ptr %390, i32 0, i32 122
  %392 = load ptr, ptr %391, align 8, !tbaa !90
  %393 = load ptr, ptr %18, align 8, !tbaa !5
  %394 = icmp eq ptr %392, %393
  br i1 %394, label %395, label %404

395:                                              ; preds = %389
  %396 = load ptr, ptr %20, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.ImGuiContext, ptr %396, i32 0, i32 124
  %398 = load i32, ptr %397, align 8, !tbaa !91
  %399 = load ptr, ptr %18, align 8, !tbaa !5
  %400 = getelementptr inbounds %struct.ImGuiWindow, ptr %399, i32 0, i32 50
  %401 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %400, i32 0, i32 33
  %402 = load i32, ptr %401, align 8, !tbaa !92
  %403 = icmp eq i32 %398, %402
  br label %404

404:                                              ; preds = %395, %389
  %405 = phi i1 [ false, %389 ], [ %403, %395 ]
  br label %406

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

411:                                              ; preds = %406
  %412 = load i8, ptr %45, align 1, !tbaa !41, !range !39, !noundef !40
  %413 = trunc i8 %412 to i1
  %414 = xor i1 %413, true
  br label %415

415:                                              ; preds = %411, %406
  %416 = phi i1 [ false, %406 ], [ %414, %411 ]
  %417 = zext i1 %416 to i8
  store i8 %417, ptr %46, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #14
  %418 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %419 = trunc i8 %418 to i1
  br i1 %419, label %420, label %426

420:                                              ; preds = %415
  %421 = load ptr, ptr %21, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.ImGuiIO, ptr %421, i32 0, i32 64
  %423 = getelementptr inbounds [5 x i8], ptr %422, i64 0, i64 0
  %424 = load i8, ptr %423, align 8, !tbaa !41, !range !39, !noundef !40
  %425 = trunc i8 %424 to i1
  br label %426

426:                                              ; preds = %420, %415
  %427 = phi i1 [ false, %415 ], [ %425, %420 ]
  %428 = zext i1 %427 to i8
  store i8 %428, ptr %47, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #14
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.ImGuiContext, ptr %429, i32 0, i32 40
  %431 = load i32, ptr %430, align 8, !tbaa !93
  %432 = load i32, ptr %29, align 4, !tbaa !9
  %433 = icmp ne i32 %431, %432
  br i1 %433, label %434, label %455

434:                                              ; preds = %426
  %435 = load ptr, ptr %20, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.ImGuiContext, ptr %435, i32 0, i32 78
  %437 = load i32, ptr %436, align 4, !tbaa !94
  %438 = load i32, ptr %29, align 4, !tbaa !9
  %439 = icmp eq i32 %437, %438
  br i1 %439, label %453, label %440

440:                                              ; preds = %434
  %441 = load ptr, ptr %20, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.ImGuiContext, ptr %441, i32 0, i32 75
  %443 = load i32, ptr %442, align 8, !tbaa !95
  %444 = load i32, ptr %29, align 4, !tbaa !9
  %445 = icmp eq i32 %443, %444
  br i1 %445, label %446, label %451

446:                                              ; preds = %440
  %447 = load ptr, ptr %20, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.ImGuiContext, ptr %447, i32 0, i32 84
  %449 = load i32, ptr %448, align 4, !tbaa !96
  %450 = icmp eq i32 %449, 3
  br label %451

451:                                              ; preds = %446, %440
  %452 = phi i1 [ false, %440 ], [ %450, %446 ]
  br label %453

453:                                              ; preds = %451, %434
  %454 = phi i1 [ true, %434 ], [ %452, %451 ]
  br label %455

455:                                              ; preds = %453, %426
  %456 = phi i1 [ false, %426 ], [ %454, %453 ]
  %457 = zext i1 %456 to i8
  store i8 %457, ptr %48, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #14
  %458 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %459 = trunc i8 %458 to i1
  br i1 %459, label %460, label %475

460:                                              ; preds = %455
  %461 = load ptr, ptr %43, align 8, !tbaa !5
  %462 = icmp ne ptr %461, null
  br i1 %462, label %463, label %475

463:                                              ; preds = %460
  %464 = load ptr, ptr %20, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.ImGuiContext, ptr %464, i32 0, i32 40
  %466 = load i32, ptr %465, align 8, !tbaa !93
  %467 = icmp eq i32 %466, 0
  br i1 %467, label %468, label %475

468:                                              ; preds = %463
  %469 = load ptr, ptr %20, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiContext, ptr %469, i32 0, i32 57
  %471 = load i32, ptr %470, align 8, !tbaa !97
  %472 = load ptr, ptr %38, align 8, !tbaa !5
  %473 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %472, i32 noundef 1)
  %474 = icmp eq i32 %471, %473
  br label %475

475:                                              ; preds = %468, %463, %460, %455
  %476 = phi i1 [ false, %463 ], [ false, %460 ], [ false, %455 ], [ %474, %468 ]
  %477 = zext i1 %476 to i8
  store i8 %477, ptr %49, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #14
  %478 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %479 = trunc i8 %478 to i1
  br i1 %479, label %480, label %490

480:                                              ; preds = %475
  %481 = load ptr, ptr %43, align 8, !tbaa !5
  %482 = icmp ne ptr %481, null
  br i1 %482, label %483, label %490

483:                                              ; preds = %480
  %484 = load ptr, ptr %20, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.ImGuiContext, ptr %484, i32 0, i32 40
  %486 = load i32, ptr %485, align 8, !tbaa !93
  %487 = load ptr, ptr %38, align 8, !tbaa !5
  %488 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %487, i32 noundef 1)
  %489 = icmp eq i32 %486, %488
  br label %490

490:                                              ; preds = %483, %480, %475
  %491 = phi i1 [ false, %480 ], [ false, %475 ], [ %489, %483 ]
  %492 = zext i1 %491 to i8
  store i8 %492, 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
  %493 = load ptr, ptr %20, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.ImGuiContext, ptr %493, i32 0, i32 40
  %495 = load i32, ptr %494, align 8, !tbaa !93
  %496 = load i32, ptr %29, align 4, !tbaa !9
  %497 = icmp ne i32 %495, %496
  br i1 %497, label %498, label %509

498:                                              ; preds = %490
  %499 = load i32, ptr %15, align 4, !tbaa !9
  %500 = and i32 %499, 16
  %501 = icmp ne i32 %500, 0
  br i1 %501, label %505, label %502

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

505:                                              ; preds = %502, %498
  %506 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %507 = trunc i8 %506 to i1
  %508 = xor i1 %507, true
  br label %509

509:                                              ; preds = %505, %502, %490
  %510 = phi i1 [ false, %502 ], [ false, %490 ], [ %508, %505 ]
  %511 = zext i1 %510 to i8
  store i8 %511, ptr %52, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #14
  %512 = load i8, ptr %44, align 1, !tbaa !41, !range !39, !noundef !40
  %513 = trunc i8 %512 to i1
  br i1 %513, label %523, label %514

514:                                              ; preds = %509
  %515 = load i8, ptr %47, align 1, !tbaa !41, !range !39, !noundef !40
  %516 = trunc i8 %515 to i1
  br i1 %516, label %523, label %517

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

520:                                              ; preds = %517
  %521 = load i8, ptr %48, align 1, !tbaa !41, !range !39, !noundef !40
  %522 = trunc i8 %521 to i1
  br label %523

523:                                              ; preds = %520, %517, %514, %509
  %524 = phi i1 [ true, %517 ], [ true, %514 ], [ true, %509 ], [ %522, %520 ]
  %525 = zext i1 %524 to i8
  store i8 %525, ptr %53, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #14
  %526 = load i8, ptr %53, align 1, !tbaa !41, !range !39, !noundef !40
  %527 = trunc i8 %526 to i1
  br i1 %527, label %531, label %528

528:                                              ; preds = %523
  %529 = load i8, ptr %50, align 1, !tbaa !41, !range !39, !noundef !40
  %530 = trunc i8 %529 to i1
  br label %531

531:                                              ; preds = %528, %523
  %532 = phi i1 [ true, %523 ], [ %530, %528 ]
  %533 = zext i1 %532 to i8
  store i8 %533, ptr %54, align 1, !tbaa !41
  %534 = load i8, ptr %54, align 1, !tbaa !41, !range !39, !noundef !40
  %535 = trunc i8 %534 to i1
  br i1 %535, label %536, label %639

536:                                              ; preds = %531
  %537 = load ptr, ptr %20, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.ImGuiContext, ptr %537, i32 0, i32 40
  %539 = load i32, ptr %538, align 8, !tbaa !93
  %540 = load i32, ptr %29, align 4, !tbaa !9
  %541 = icmp ne i32 %539, %540
  br i1 %541, label %542, label %639

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

594:                                              ; preds = %542
  %595 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %595)
  br label %615

596:                                              ; preds = %542
  %597 = load i32, ptr %29, align 4, !tbaa !9
  %598 = load ptr, ptr %43, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %598, i32 0, i32 0
  store i32 %597, ptr %599, align 8, !tbaa !103
  %600 = load ptr, ptr %43, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %600, i32 0, i32 8
  store float 0.000000e+00, ptr %601, align 8, !tbaa !104
  %602 = load ptr, ptr %43, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %602, i32 0, i32 9
  %604 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %605 = trunc i8 %604 to i1
  %606 = xor i1 %605, true
  %607 = zext i1 %606 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %603, i32 noundef %607)
  %608 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %609 = trunc i8 %608 to i1
  br i1 %609, label %614, label %610

610:                                              ; preds = %596
  %611 = load i8, ptr %45, align 1, !tbaa !41, !range !39, !noundef !40
  %612 = trunc i8 %611 to i1
  br i1 %612, label %613, label %614

613:                                              ; preds = %610
  store i8 1, ptr %52, align 1, !tbaa !41
  br label %614

614:                                              ; preds = %613, %610, %596
  br label %615

615:                                              ; preds = %614, %594
  %616 = load i32, ptr %15, align 4, !tbaa !9
  %617 = and i32 %616, 8192
  %618 = icmp ne i32 %617, 0
  br i1 %618, label %619, label %623

619:                                              ; preds = %615
  %620 = load ptr, ptr %43, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %620, i32 0, i32 9
  %622 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %621, i32 0, i32 3
  store i8 1, ptr %622, align 4, !tbaa !105
  br label %623

623:                                              ; preds = %619, %615
  %624 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %625 = trunc i8 %624 to i1
  br i1 %625, label %638, label %626

626:                                              ; preds = %623
  %627 = load i8, ptr %46, align 1, !tbaa !41, !range !39, !noundef !40
  %628 = trunc i8 %627 to i1
  br i1 %628, label %637, label %629

629:                                              ; preds = %626
  %630 = load i8, ptr %47, align 1, !tbaa !41, !range !39, !noundef !40
  %631 = trunc i8 %630 to i1
  br i1 %631, label %632, label %638

632:                                              ; preds = %629
  %633 = load ptr, ptr %21, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.ImGuiIO, ptr %633, i32 0, i32 40
  %635 = load i8, ptr %634, align 8, !tbaa !106, !range !39, !noundef !40
  %636 = trunc i8 %635 to i1
  br i1 %636, label %637, label %638

637:                                              ; preds = %632, %626
  store i8 1, ptr %52, align 1, !tbaa !41
  br label %638

638:                                              ; preds = %637, %632, %629, %623
  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 %639

639:                                              ; preds = %638, %536, %531
  %640 = load ptr, ptr %20, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ImGuiContext, ptr %640, i32 0, i32 40
  %642 = load i32, ptr %641, align 8, !tbaa !93
  %643 = load i32, ptr %29, align 4, !tbaa !9
  %644 = icmp ne i32 %642, %643
  br i1 %644, label %645, label %709

645:                                              ; preds = %639
  %646 = load i8, ptr %53, align 1, !tbaa !41, !range !39, !noundef !40
  %647 = trunc i8 %646 to i1
  br i1 %647, label %648, label %709

648:                                              ; preds = %645
  %649 = load ptr, ptr %43, align 8, !tbaa !5
  %650 = icmp ne ptr %649, null
  br i1 %650, label %651, label %657

651:                                              ; preds = %648
  %652 = load ptr, ptr %43, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %652, i32 0, i32 0
  %654 = load i32, ptr %653, align 8, !tbaa !103
  %655 = load i32, ptr %29, align 4, !tbaa !9
  %656 = icmp eq i32 %654, %655
  br label %657

657:                                              ; preds = %651, %648
  %658 = phi i1 [ false, %648 ], [ %656, %651 ]
  br i1 %658, label %659, label %660

659:                                              ; preds = %657
  br label %662

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

661:                                              ; No predecessors!
  br label %662

662:                                              ; preds = %661, %659
  %663 = load i32, ptr %29, align 4, !tbaa !9
  %664 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %663, ptr noundef %664)
  %665 = load i32, ptr %29, align 4, !tbaa !9
  %666 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %665, ptr noundef %666)
  %667 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %667)
  %668 = load ptr, ptr %20, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.ImGuiContext, ptr %668, i32 0, i32 49
  %670 = load i32, ptr %669, align 4, !tbaa !107
  %671 = or i32 %670, 3
  store i32 %671, ptr %669, align 4, !tbaa !107
  %672 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %673 = trunc i8 %672 to i1
  br i1 %673, label %678, label %674

674:                                              ; preds = %662
  %675 = load i32, ptr %15, align 4, !tbaa !9
  %676 = and i32 %675, 128
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %678, label %683

678:                                              ; preds = %674, %662
  %679 = load ptr, ptr %20, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.ImGuiContext, ptr %679, i32 0, i32 49
  %681 = load i32, ptr %680, align 4, !tbaa !107
  %682 = or i32 %681, 12
  store i32 %682, ptr %680, align 4, !tbaa !107
  br label %683

683:                                              ; preds = %678, %674
  %684 = load ptr, ptr %20, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.ImGuiContext, ptr %684, i32 0, i32 50
  %686 = load i32, ptr %685, align 8, !tbaa !108
  %687 = or i32 %686, 2
  store i32 %687, ptr %685, align 8, !tbaa !108
  %688 = load ptr, ptr %20, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.ImGuiContext, ptr %688, i32 0, i32 52
  %690 = load i64, ptr %689, align 8, !tbaa !109
  %691 = or i64 %690, 384
  store i64 %691, ptr %689, align 8, !tbaa !109
  %692 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %693 = trunc i8 %692 to i1
  br i1 %693, label %694, label %699

694:                                              ; preds = %683
  %695 = load ptr, ptr %20, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.ImGuiContext, ptr %695, i32 0, i32 52
  %697 = load i64, ptr %696, align 8, !tbaa !109
  %698 = or i64 %697, 96
  store i64 %698, ptr %696, align 8, !tbaa !109
  br label %699

699:                                              ; preds = %694, %683
  %700 = load i32, ptr %15, align 4, !tbaa !9
  %701 = and i32 %700, 1088
  %702 = icmp ne i32 %701, 0
  br i1 %702, label %703, label %708

703:                                              ; preds = %699
  %704 = load ptr, ptr %20, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiContext, ptr %704, i32 0, i32 52
  %706 = load i64, ptr %705, align 8, !tbaa !109
  %707 = or i64 %706, 1
  store i64 %707, ptr %705, align 8, !tbaa !109
  br label %708

708:                                              ; preds = %703, %699
  br label %709

709:                                              ; preds = %708, %645, %639
  %710 = load ptr, ptr %20, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.ImGuiContext, ptr %710, i32 0, i32 40
  %712 = load i32, ptr %711, align 8, !tbaa !93
  %713 = load i32, ptr %29, align 4, !tbaa !9
  %714 = icmp eq i32 %712, %713
  br i1 %714, label %715, label %719

715:                                              ; preds = %709
  %716 = load ptr, ptr %43, align 8, !tbaa !5
  %717 = icmp eq ptr %716, null
  br i1 %717, label %718, label %719

718:                                              ; preds = %715
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %719

719:                                              ; preds = %718, %715, %709
  %720 = load ptr, ptr %20, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.ImGuiContext, ptr %720, i32 0, i32 40
  %722 = load i32, ptr %721, align 8, !tbaa !93
  %723 = load i32, ptr %29, align 4, !tbaa !9
  %724 = icmp eq i32 %722, %723
  br i1 %724, label %725, label %738

725:                                              ; preds = %719
  %726 = load ptr, ptr %21, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.ImGuiIO, ptr %726, i32 0, i32 64
  %728 = getelementptr inbounds [5 x i8], ptr %727, i64 0, i64 0
  %729 = load i8, ptr %728, align 8, !tbaa !41, !range !39, !noundef !40
  %730 = trunc i8 %729 to i1
  br i1 %730, label %731, label %738

731:                                              ; preds = %725
  %732 = load i8, ptr %54, align 1, !tbaa !41, !range !39, !noundef !40
  %733 = trunc i8 %732 to i1
  br i1 %733, label %738, label %734

734:                                              ; preds = %731
  %735 = load i8, ptr %53, align 1, !tbaa !41, !range !39, !noundef !40
  %736 = trunc i8 %735 to i1
  br i1 %736, label %738, label %737

737:                                              ; preds = %734
  store i8 1, ptr %51, align 1, !tbaa !41
  br label %738

738:                                              ; preds = %737, %734, %731, %725, %719
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #14
  %739 = load ptr, ptr %20, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ImGuiContext, ptr %739, i32 0, i32 40
  %741 = load i32, ptr %740, align 8, !tbaa !93
  %742 = load i32, ptr %29, align 4, !tbaa !9
  %743 = icmp eq i32 %741, %742
  br i1 %743, label %752, label %744

744:                                              ; preds = %738
  %745 = load ptr, ptr %43, align 8, !tbaa !5
  %746 = icmp ne ptr %745, null
  br i1 %746, label %747, label %750

747:                                              ; preds = %744
  %748 = load i8, ptr %50, align 1, !tbaa !41, !range !39, !noundef !40
  %749 = trunc i8 %748 to i1
  br label %750

750:                                              ; preds = %747, %744
  %751 = phi i1 [ false, %744 ], [ %749, %747 ]
  br label %752

752:                                              ; preds = %750, %738
  %753 = phi i1 [ true, %738 ], [ %751, %750 ]
  %754 = zext i1 %753 to i8
  store i8 %754, ptr %58, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #14
  %755 = load ptr, ptr %43, align 8, !tbaa !5
  %756 = icmp ne ptr %755, null
  br i1 %756, label %757, label %763

757:                                              ; preds = %752
  %758 = load ptr, ptr %43, align 8, !tbaa !5
  %759 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %758)
  br i1 %759, label %760, label %763

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

763:                                              ; preds = %760, %757, %752
  %764 = phi i1 [ false, %757 ], [ false, %752 ], [ %762, %760 ]
  %765 = zext i1 %764 to i8
  store i8 %765, 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
  %766 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %767 = trunc i8 %766 to i1
  br i1 %767, label %768, label %812

768:                                              ; preds = %763
  %769 = load ptr, ptr %43, align 8, !tbaa !5
  %770 = icmp ne ptr %769, null
  br i1 %770, label %771, label %812

771:                                              ; preds = %768
  %772 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %773 = trunc i8 %772 to i1
  br i1 %773, label %777, label %774

774:                                              ; preds = %771
  %775 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %776 = trunc i8 %775 to i1
  br i1 %776, label %777, label %812

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

812:                                              ; preds = %777, %774, %768, %763
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #14
  %813 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %814 = trunc i8 %813 to i1
  br i1 %814, label %824, label %815

815:                                              ; preds = %812
  %816 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %817 = trunc i8 %816 to i1
  br i1 %817, label %824, label %818

818:                                              ; preds = %815
  %819 = load ptr, ptr %20, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.ImGuiContext, ptr %819, i32 0, i32 40
  %821 = load i32, ptr %820, align 8, !tbaa !93
  %822 = load i32, ptr %29, align 4, !tbaa !9
  %823 = icmp eq i32 %821, %822
  br i1 %823, label %824, label %835

824:                                              ; preds = %818, %815, %812
  %825 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %826 = trunc i8 %825 to i1
  br i1 %826, label %835, label %827

827:                                              ; preds = %824
  %828 = load ptr, ptr %43, align 8, !tbaa !5
  %829 = icmp ne ptr %828, null
  br i1 %829, label %830, label %835

830:                                              ; preds = %827
  %831 = load ptr, ptr %43, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %831, i32 0, i32 6
  %833 = load i8, ptr %832, align 8, !tbaa !99, !range !39, !noundef !40
  %834 = trunc i8 %833 to i1
  br label %835

835:                                              ; preds = %830, %827, %824, %818
  %836 = phi i1 [ false, %827 ], [ false, %824 ], [ false, %818 ], [ %834, %830 ]
  %837 = zext i1 %836 to i8
  store i8 %837, ptr %63, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #14
  %838 = load ptr, ptr %11, align 8, !tbaa !5
  %839 = icmp ne ptr %838, null
  br i1 %839, label %840, label %856

840:                                              ; preds = %835
  %841 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %842 = trunc i8 %841 to i1
  br i1 %842, label %843, label %848

843:                                              ; preds = %840
  %844 = load ptr, ptr %43, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %844, i32 0, i32 4
  %846 = getelementptr inbounds %struct.ImVector.22, ptr %845, i32 0, i32 2
  %847 = load ptr, ptr %846, align 8, !tbaa !111
  br label %850

848:                                              ; preds = %840
  %849 = load ptr, ptr %12, align 8, !tbaa !5
  br label %850

850:                                              ; preds = %848, %843
  %851 = phi ptr [ %847, %843 ], [ %849, %848 ]
  %852 = getelementptr inbounds i8, ptr %851, i64 0
  %853 = load i8, ptr %852, align 1, !tbaa !112
  %854 = sext i8 %853 to i32
  %855 = icmp eq i32 %854, 0
  br label %856

856:                                              ; preds = %850, %835
  %857 = phi i1 [ false, %835 ], [ %855, %850 ]
  %858 = zext i1 %857 to i8
  store i8 %858, ptr %64, align 1, !tbaa !41
  %859 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %860 = trunc i8 %859 to i1
  br i1 %860, label %861, label %938

861:                                              ; preds = %856
  %862 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %863 = trunc i8 %862 to i1
  br i1 %863, label %938, label %864

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

923:                                              ; preds = %864
  %924 = load ptr, ptr %66, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.ImFont, ptr %924, i32 0, i32 0
  %926 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %925)
  br i1 %926, label %927, label %931

927:                                              ; preds = %923
  %928 = load ptr, ptr %66, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.ImFont, ptr %928, i32 0, i32 3
  %930 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %929)
  br label %931

931:                                              ; preds = %927, %923, %864
  %932 = phi i1 [ false, %923 ], [ false, %864 ], [ %930, %927 ]
  br i1 %932, label %933, label %934

933:                                              ; preds = %931
  br label %936

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

935:                                              ; No predecessors!
  br label %936

936:                                              ; preds = %935, %933
  %937 = load ptr, ptr %66, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %937)
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #14
  br label %938

938:                                              ; preds = %936, %861, %856
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #14
  store i32 0, ptr %67, align 4, !tbaa !9
  %939 = load ptr, ptr %20, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.ImGuiContext, ptr %939, i32 0, i32 40
  %941 = load i32, ptr %940, align 8, !tbaa !93
  %942 = load i32, ptr %29, align 4, !tbaa !9
  %943 = icmp eq i32 %941, %942
  br i1 %943, label %944, label %1241

944:                                              ; preds = %938
  %945 = load ptr, ptr %43, align 8, !tbaa !5
  %946 = icmp ne ptr %945, null
  br i1 %946, label %947, label %948

947:                                              ; preds = %944
  br label %950

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

949:                                              ; No predecessors!
  br label %950

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

996:                                              ; preds = %950
  %997 = load ptr, ptr %21, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.ImGuiIO, ptr %997, i32 0, i32 36
  %999 = getelementptr inbounds %struct.ImVec2, ptr %998, i32 0, i32 1
  %1000 = load float, ptr %999, align 4, !tbaa !132
  %1001 = load ptr, ptr %38, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.ImGuiWindow, ptr %1001, i32 0, i32 50
  %1003 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %1002, i32 0, i32 0
  %1004 = getelementptr inbounds %struct.ImVec2, ptr %1003, i32 0, i32 1
  %1005 = load float, ptr %1004, align 4, !tbaa !133
  %1006 = fsub float %1000, %1005
  %1007 = load ptr, ptr %22, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.ImGuiStyle, ptr %1007, i32 0, i32 11
  %1009 = getelementptr inbounds %struct.ImVec2, ptr %1008, i32 0, i32 1
  %1010 = load float, ptr %1009, align 4, !tbaa !80
  %1011 = fsub float %1006, %1010
  br label %1017

1012:                                             ; preds = %950
  %1013 = load ptr, ptr %20, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.ImGuiContext, ptr %1013, i32 0, i32 6
  %1015 = load float, ptr %1014, align 8, !tbaa !44
  %1016 = fmul float %1015, 5.000000e-01
  br label %1017

1017:                                             ; preds = %1012, %996
  %1018 = phi float [ %1011, %996 ], [ %1016, %1012 ]
  store float %1018, ptr %69, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #14
  %1019 = load ptr, ptr %21, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.ImGuiIO, ptr %1019, i32 0, i32 20
  %1021 = load i8, ptr %1020, align 1, !tbaa !134, !range !39, !noundef !40
  %1022 = trunc i8 %1021 to i1
  %1023 = zext i1 %1022 to i8
  store i8 %1023, ptr %70, align 1, !tbaa !41
  %1024 = load i8, ptr %52, align 1, !tbaa !41, !range !39, !noundef !40
  %1025 = trunc i8 %1024 to i1
  br i1 %1025, label %1038, label %1026

1026:                                             ; preds = %1017
  %1027 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %1028 = trunc i8 %1027 to i1
  br i1 %1028, label %1029, label %1042

1029:                                             ; preds = %1026
  %1030 = load i8, ptr %70, align 1, !tbaa !41, !range !39, !noundef !40
  %1031 = trunc i8 %1030 to i1
  br i1 %1031, label %1042, label %1032

1032:                                             ; preds = %1029
  %1033 = load ptr, ptr %21, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.ImGuiIO, ptr %1033, i32 0, i32 65
  %1035 = getelementptr inbounds [5 x i8], ptr %1034, i64 0, i64 0
  %1036 = load i8, ptr %1035, align 1, !tbaa !41, !range !39, !noundef !40
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1038, label %1042

1038:                                             ; preds = %1032, %1017
  %1039 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1039)
  %1040 = load ptr, ptr %43, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1040, i32 0, i32 12
  store i8 1, ptr %1041, align 1, !tbaa !135
  br label %1114

1042:                                             ; preds = %1032, %1029, %1026
  %1043 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %1044 = trunc i8 %1043 to i1
  br i1 %1044, label %1045, label %1057

1045:                                             ; preds = %1042
  %1046 = load i8, ptr %70, align 1, !tbaa !41, !range !39, !noundef !40
  %1047 = trunc i8 %1046 to i1
  br i1 %1047, label %1048, label %1057

1048:                                             ; preds = %1045
  %1049 = load ptr, ptr %21, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiIO, ptr %1049, i32 0, i32 65
  %1051 = getelementptr inbounds [5 x i8], ptr %1050, i64 0, i64 0
  %1052 = load i8, ptr %1051, align 1, !tbaa !41, !range !39, !noundef !40
  %1053 = trunc i8 %1052 to i1
  br i1 %1053, label %1054, label %1057

1054:                                             ; preds = %1048
  %1055 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1055, i32 noundef 2097164)
  %1056 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1056, i32 noundef 6291469)
  br label %1113

1057:                                             ; preds = %1048, %1045, %1042
  %1058 = load ptr, ptr %21, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.ImGuiIO, ptr %1058, i32 0, i32 64
  %1060 = getelementptr inbounds [5 x i8], ptr %1059, i64 0, i64 0
  %1061 = load i8, ptr %1060, align 8, !tbaa !41, !range !39, !noundef !40
  %1062 = trunc i8 %1061 to i1
  br i1 %1062, label %1063, label %1079

1063:                                             ; preds = %1057
  %1064 = load ptr, ptr %43, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1064, i32 0, i32 12
  %1066 = load i8, ptr %1065, align 1, !tbaa !135, !range !39, !noundef !40
  %1067 = trunc i8 %1066 to i1
  br i1 %1067, label %1079, label %1068

1068:                                             ; preds = %1063
  %1069 = load i8, ptr %42, align 1, !tbaa !41, !range !39, !noundef !40
  %1070 = trunc i8 %1069 to i1
  br i1 %1070, label %1071, label %1078

1071:                                             ; preds = %1068
  %1072 = load ptr, ptr %43, align 8, !tbaa !5
  %1073 = load ptr, ptr %43, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1073, i32 0, i32 9
  %1075 = load float, ptr %68, align 4, !tbaa !43
  %1076 = load float, ptr %69, align 4, !tbaa !43
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1072, ptr noundef %1074, float noundef %1075, float noundef %1076)
  %1077 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %1077)
  br label %1078

1078:                                             ; preds = %1071, %1068
  br label %1112

1079:                                             ; preds = %1063, %1057
  %1080 = load ptr, ptr %21, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.ImGuiIO, ptr %1080, i32 0, i32 37
  %1082 = getelementptr inbounds [5 x i8], ptr %1081, i64 0, i64 0
  %1083 = load i8, ptr %1082, align 8, !tbaa !41, !range !39, !noundef !40
  %1084 = trunc i8 %1083 to i1
  br i1 %1084, label %1085, label %1111

1085:                                             ; preds = %1079
  %1086 = load ptr, ptr %43, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1086, i32 0, i32 12
  %1088 = load i8, ptr %1087, align 1, !tbaa !135, !range !39, !noundef !40
  %1089 = trunc i8 %1088 to i1
  br i1 %1089, label %1111, label %1090

1090:                                             ; preds = %1085
  %1091 = load ptr, ptr %21, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.ImGuiIO, ptr %1091, i32 0, i32 59
  %1093 = getelementptr inbounds %struct.ImVec2, ptr %1092, i32 0, i32 0
  %1094 = load float, ptr %1093, align 8, !tbaa !136
  %1095 = fcmp une float %1094, 0.000000e+00
  br i1 %1095, label %1102, label %1096

1096:                                             ; preds = %1090
  %1097 = load ptr, ptr %21, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.ImGuiIO, ptr %1097, i32 0, i32 59
  %1099 = getelementptr inbounds %struct.ImVec2, ptr %1098, i32 0, i32 1
  %1100 = load float, ptr %1099, align 4, !tbaa !137
  %1101 = fcmp une float %1100, 0.000000e+00
  br i1 %1101, label %1102, label %1111

1102:                                             ; preds = %1096, %1090
  %1103 = load ptr, ptr %43, align 8, !tbaa !5
  %1104 = load ptr, ptr %43, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1104, i32 0, i32 9
  %1106 = load float, ptr %68, align 4, !tbaa !43
  %1107 = load float, ptr %69, align 4, !tbaa !43
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1103, ptr noundef %1105, float noundef %1106, float noundef %1107)
  %1108 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %1108)
  %1109 = load ptr, ptr %43, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1109, i32 0, i32 11
  store i8 1, ptr %1110, align 4, !tbaa !138
  br label %1111

1111:                                             ; preds = %1102, %1096, %1085, %1079
  br label %1112

1112:                                             ; preds = %1111, %1078
  br label %1113

1113:                                             ; preds = %1112, %1054
  br label %1114

1114:                                             ; preds = %1113, %1038
  %1115 = load ptr, ptr %43, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1115, i32 0, i32 12
  %1117 = load i8, ptr %1116, align 1, !tbaa !135, !range !39, !noundef !40
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1119, label %1128

1119:                                             ; preds = %1114
  %1120 = load ptr, ptr %21, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.ImGuiIO, ptr %1120, i32 0, i32 37
  %1122 = getelementptr inbounds [5 x i8], ptr %1121, i64 0, i64 0
  %1123 = load i8, ptr %1122, align 8, !tbaa !41, !range !39, !noundef !40
  %1124 = trunc i8 %1123 to i1
  br i1 %1124, label %1128, label %1125

1125:                                             ; preds = %1119
  %1126 = load ptr, ptr %43, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1126, i32 0, i32 12
  store i8 0, ptr %1127, align 1, !tbaa !135
  br label %1128

1128:                                             ; preds = %1125, %1119, %1114
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #14
  %1129 = load ptr, ptr %21, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.ImGuiIO, ptr %1129, i32 0, i32 40
  %1131 = load i8, ptr %1130, align 8, !tbaa !106, !range !39, !noundef !40
  %1132 = trunc i8 %1131 to i1
  br i1 %1132, label %1133, label %1138

1133:                                             ; preds = %1128
  %1134 = load ptr, ptr %21, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.ImGuiIO, ptr %1134, i32 0, i32 42
  %1136 = load i8, ptr %1135, align 2, !tbaa !139, !range !39, !noundef !40
  %1137 = trunc i8 %1136 to i1
  br i1 %1137, label %1138, label %1148

1138:                                             ; preds = %1133, %1128
  %1139 = load i8, ptr %70, align 1, !tbaa !41, !range !39, !noundef !40
  %1140 = trunc i8 %1139 to i1
  br i1 %1140, label %1141, label %1146

1141:                                             ; preds = %1138
  %1142 = load ptr, ptr %21, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.ImGuiIO, ptr %1142, i32 0, i32 43
  %1144 = load i8, ptr %1143, align 1, !tbaa !140, !range !39, !noundef !40
  %1145 = trunc i8 %1144 to i1
  br label %1146

1146:                                             ; preds = %1141, %1138
  %1147 = phi i1 [ false, %1138 ], [ %1145, %1141 ]
  br label %1148

1148:                                             ; preds = %1146, %1133
  %1149 = phi i1 [ true, %1133 ], [ %1147, %1146 ]
  %1150 = zext i1 %1149 to i8
  store i8 %1150, ptr %71, align 1, !tbaa !41
  %1151 = load i32, ptr %15, align 4, !tbaa !9
  %1152 = and i32 %1151, 1024
  %1153 = icmp ne i32 %1152, 0
  br i1 %1153, label %1154, label %1182

1154:                                             ; preds = %1148
  %1155 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1155, label %1156, label %1182

1156:                                             ; preds = %1154
  %1157 = load i8, ptr %71, align 1, !tbaa !41, !range !39, !noundef !40
  %1158 = trunc i8 %1157 to i1
  br i1 %1158, label %1182, label %1159

1159:                                             ; preds = %1156
  %1160 = load ptr, ptr %21, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.ImGuiIO, ptr %1160, i32 0, i32 41
  %1162 = load i8, ptr %1161, align 1, !tbaa !141, !range !39, !noundef !40
  %1163 = trunc i8 %1162 to i1
  br i1 %1163, label %1182, label %1164

1164:                                             ; preds = %1159
  %1165 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1166 = trunc i8 %1165 to i1
  br i1 %1166, label %1182, label %1167

1167:                                             ; preds = %1164
  %1168 = load ptr, ptr %21, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.ImGuiIO, ptr %1168, i32 0, i32 78
  call void @llvm.lifetime.start.p0(i64 2, ptr %72) #14
  store i16 9, ptr %72, align 2, !tbaa !142
  %1170 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %1169, ptr noundef nonnull align 2 dereferenceable(2) %72)
  %1171 = xor i1 %1170, true
  call void @llvm.lifetime.end.p0(i64 2, ptr %72) #14
  br i1 %1171, label %1172, label %1181

1172:                                             ; preds = %1167
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #14
  store i32 9, ptr %73, align 4, !tbaa !9
  %1173 = load i32, ptr %15, align 4, !tbaa !9
  %1174 = load ptr, ptr %16, align 8, !tbaa !5
  %1175 = load ptr, ptr %17, align 8, !tbaa !5
  %1176 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %73, i32 noundef %1173, ptr noundef %1174, ptr noundef %1175)
  br i1 %1176, label %1177, label %1180

1177:                                             ; preds = %1172
  %1178 = load ptr, ptr %43, align 8, !tbaa !5
  %1179 = load i32, ptr %73, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1178, i32 noundef %1179)
  br label %1180

1180:                                             ; preds = %1177, %1172
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #14
  br label %1181

1181:                                             ; preds = %1180, %1167
  br label %1182

1182:                                             ; preds = %1181, %1164, %1159, %1156, %1154, %1148
  %1183 = load ptr, ptr %21, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.ImGuiIO, ptr %1183, i32 0, i32 78
  %1185 = getelementptr inbounds %struct.ImVector.7, ptr %1184, i32 0, i32 0
  %1186 = load i32, ptr %1185, align 8, !tbaa !143
  %1187 = icmp sgt i32 %1186, 0
  br i1 %1187, label %1188, label %1240

1188:                                             ; preds = %1182
  %1189 = load i8, ptr %71, align 1, !tbaa !41, !range !39, !noundef !40
  %1190 = trunc i8 %1189 to i1
  br i1 %1190, label %1237, label %1191

1191:                                             ; preds = %1188
  %1192 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1193 = trunc i8 %1192 to i1
  br i1 %1193, label %1237, label %1194

1194:                                             ; preds = %1191
  %1195 = load i8, ptr %48, align 1, !tbaa !41, !range !39, !noundef !40
  %1196 = trunc i8 %1195 to i1
  br i1 %1196, label %1237, label %1197

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

1198:                                             ; preds = %1233, %1197
  %1199 = load i32, ptr %74, align 4, !tbaa !9
  %1200 = load ptr, ptr %21, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct.ImGuiIO, ptr %1200, i32 0, i32 78
  %1202 = getelementptr inbounds %struct.ImVector.7, ptr %1201, i32 0, i32 0
  %1203 = load i32, ptr %1202, align 8, !tbaa !143
  %1204 = icmp slt i32 %1199, %1203
  br i1 %1204, label %1206, label %1205

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

1206:                                             ; preds = %1198
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #14
  %1207 = load ptr, ptr %21, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.ImGuiIO, ptr %1207, i32 0, i32 78
  %1209 = load i32, ptr %74, align 4, !tbaa !9
  %1210 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1208, i32 noundef %1209)
  %1211 = load i16, ptr %1210, align 2, !tbaa !142
  %1212 = zext i16 %1211 to i32
  store i32 %1212, ptr %75, align 4, !tbaa !9
  %1213 = load i32, ptr %75, align 4, !tbaa !9
  %1214 = icmp eq i32 %1213, 9
  br i1 %1214, label %1215, label %1221

1215:                                             ; preds = %1206
  %1216 = load ptr, ptr %21, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.ImGuiIO, ptr %1216, i32 0, i32 41
  %1218 = load i8, ptr %1217, align 1, !tbaa !141, !range !39, !noundef !40
  %1219 = trunc i8 %1218 to i1
  br i1 %1219, label %1220, label %1221

1220:                                             ; preds = %1215
  store i32 4, ptr %19, align 4
  br label %1230

1221:                                             ; preds = %1215, %1206
  %1222 = load i32, ptr %15, align 4, !tbaa !9
  %1223 = load ptr, ptr %16, align 8, !tbaa !5
  %1224 = load ptr, ptr %17, align 8, !tbaa !5
  %1225 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %75, i32 noundef %1222, ptr noundef %1223, ptr noundef %1224)
  br i1 %1225, label %1226, label %1229

1226:                                             ; preds = %1221
  %1227 = load ptr, ptr %43, align 8, !tbaa !5
  %1228 = load i32, ptr %75, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1227, i32 noundef %1228)
  br label %1229

1229:                                             ; preds = %1226, %1221
  store i32 0, ptr %19, align 4
  br label %1230

1230:                                             ; preds = %1229, %1220
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #14
  %1231 = load i32, ptr %19, align 4
  switch i32 %1231, label %3117 [
    i32 0, label %1232
    i32 4, label %1233
  ]

1232:                                             ; preds = %1230
  br label %1233

1233:                                             ; preds = %1232, %1230
  %1234 = load i32, ptr %74, align 4, !tbaa !9
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %74, align 4, !tbaa !9
  br label %1198, !llvm.loop !144

1236:                                             ; preds = %1205
  br label %1237

1237:                                             ; preds = %1236, %1194, %1191, %1188
  %1238 = load ptr, ptr %21, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.ImGuiIO, ptr %1238, i32 0, i32 78
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1239, i32 noundef 0)
  br label %1240

1240:                                             ; preds = %1237, %1182
  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 %1241

1241:                                             ; preds = %1240, %938
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #14
  store i8 0, ptr %76, align 1, !tbaa !41
  %1242 = load ptr, ptr %20, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct.ImGuiContext, ptr %1242, i32 0, i32 40
  %1244 = load i32, ptr %1243, align 8, !tbaa !93
  %1245 = load i32, ptr %29, align 4, !tbaa !9
  %1246 = icmp eq i32 %1244, %1245
  br i1 %1246, label %1247, label %1890

1247:                                             ; preds = %1241
  %1248 = load ptr, ptr %20, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.ImGuiContext, ptr %1248, i32 0, i32 43
  %1250 = load i8, ptr %1249, align 4, !tbaa !146, !range !39, !noundef !40
  %1251 = trunc i8 %1250 to i1
  br i1 %1251, label %1890, label %1252

1252:                                             ; preds = %1247
  %1253 = load i8, ptr %51, align 1, !tbaa !41, !range !39, !noundef !40
  %1254 = trunc i8 %1253 to i1
  br i1 %1254, label %1890, label %1255

1255:                                             ; preds = %1252
  %1256 = load ptr, ptr %43, align 8, !tbaa !5
  %1257 = icmp ne ptr %1256, null
  br i1 %1257, label %1258, label %1259

1258:                                             ; preds = %1255
  br label %1261

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

1260:                                             ; No predecessors!
  br label %1261

1261:                                             ; preds = %1260, %1258
  %1262 = load ptr, ptr %21, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.ImGuiIO, ptr %1262, i32 0, i32 60
  %1264 = load i32, ptr %1263, align 8, !tbaa !147
  %1265 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %1266 = icmp eq i32 %1264, %1265
  br i1 %1266, label %1267, label %1268

1267:                                             ; preds = %1261
  br label %1268

1268:                                             ; preds = %1267, %1261
  %1269 = phi i1 [ false, %1261 ], [ true, %1267 ]
  br i1 %1269, label %1270, label %1271

1270:                                             ; preds = %1268
  br label %1273

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

1272:                                             ; No predecessors!
  br label %1273

1273:                                             ; preds = %1272, %1270
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #14
  %1274 = load ptr, ptr %21, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.ImGuiIO, ptr %1274, i32 0, i32 41
  %1276 = load i8, ptr %1275, align 1, !tbaa !141, !range !39, !noundef !40
  %1277 = trunc i8 %1276 to i1
  %1278 = zext i1 %1277 to i64
  %1279 = select i1 %1277, i32 4194304, i32 0
  store i32 %1279, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #14
  %1280 = load ptr, ptr %21, align 8, !tbaa !5
  %1281 = getelementptr inbounds %struct.ImGuiIO, ptr %1280, i32 0, i32 20
  %1282 = load i8, ptr %1281, align 1, !tbaa !134, !range !39, !noundef !40
  %1283 = trunc i8 %1282 to i1
  %1284 = zext i1 %1283 to i8
  store i8 %1284, ptr %78, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #14
  %1285 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1286 = trunc i8 %1285 to i1
  br i1 %1286, label %1287, label %1292

1287:                                             ; preds = %1273
  %1288 = load ptr, ptr %21, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.ImGuiIO, ptr %1288, i32 0, i32 60
  %1290 = load i32, ptr %1289, align 8, !tbaa !147
  %1291 = icmp eq i32 %1290, 10
  br label %1292

1292:                                             ; preds = %1287, %1273
  %1293 = phi i1 [ false, %1273 ], [ %1291, %1287 ]
  %1294 = zext i1 %1293 to i8
  store i8 %1294, ptr %79, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #14
  %1295 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1296 = trunc i8 %1295 to i1
  br i1 %1296, label %1297, label %1302

1297:                                             ; preds = %1292
  %1298 = load ptr, ptr %21, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.ImGuiIO, ptr %1298, i32 0, i32 42
  %1300 = load i8, ptr %1299, align 2, !tbaa !139, !range !39, !noundef !40
  %1301 = trunc i8 %1300 to i1
  br label %1307

1302:                                             ; preds = %1292
  %1303 = load ptr, ptr %21, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct.ImGuiIO, ptr %1303, i32 0, i32 40
  %1305 = load i8, ptr %1304, align 8, !tbaa !106, !range !39, !noundef !40
  %1306 = trunc i8 %1305 to i1
  br label %1307

1307:                                             ; preds = %1302, %1297
  %1308 = phi i1 [ %1301, %1297 ], [ %1306, %1302 ]
  %1309 = zext i1 %1308 to i8
  store i8 %1309, ptr %80, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #14
  %1310 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1311 = trunc i8 %1310 to i1
  br i1 %1311, label %1312, label %1328

1312:                                             ; preds = %1307
  %1313 = load ptr, ptr %21, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.ImGuiIO, ptr %1313, i32 0, i32 43
  %1315 = load i8, ptr %1314, align 1, !tbaa !140, !range !39, !noundef !40
  %1316 = trunc i8 %1315 to i1
  br i1 %1316, label %1317, label %1328

1317:                                             ; preds = %1312
  %1318 = load ptr, ptr %21, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.ImGuiIO, ptr %1318, i32 0, i32 40
  %1320 = load i8, ptr %1319, align 8, !tbaa !106, !range !39, !noundef !40
  %1321 = trunc i8 %1320 to i1
  br i1 %1321, label %1328, label %1322

1322:                                             ; preds = %1317
  %1323 = load ptr, ptr %21, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct.ImGuiIO, ptr %1323, i32 0, i32 42
  %1325 = load i8, ptr %1324, align 2, !tbaa !139, !range !39, !noundef !40
  %1326 = trunc i8 %1325 to i1
  %1327 = xor i1 %1326, true
  br label %1328

1328:                                             ; preds = %1322, %1317, %1312, %1307
  %1329 = phi i1 [ false, %1317 ], [ false, %1312 ], [ false, %1307 ], [ %1327, %1322 ]
  %1330 = zext i1 %1329 to i8
  store i8 %1330, ptr %81, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #14
  %1331 = load ptr, ptr %21, align 8, !tbaa !5
  %1332 = getelementptr inbounds %struct.ImGuiIO, ptr %1331, i32 0, i32 60
  %1333 = load i32, ptr %1332, align 8, !tbaa !147
  %1334 = icmp eq i32 %1333, 1
  %1335 = zext i1 %1334 to i8
  store i8 %1335, ptr %82, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #14
  %1336 = load ptr, ptr %21, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.ImGuiIO, ptr %1336, i32 0, i32 60
  %1338 = load i32, ptr %1337, align 8, !tbaa !147
  %1339 = icmp eq i32 %1338, 2
  %1340 = zext i1 %1339 to i8
  store i8 %1340, ptr %83, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #14
  %1341 = load ptr, ptr %20, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.ImGuiContext, ptr %1341, i32 0, i32 3
  %1343 = getelementptr inbounds %struct.ImGuiIO, ptr %1342, i32 0, i32 20
  %1344 = load i8, ptr %1343, align 1, !tbaa !148, !range !39, !noundef !40
  %1345 = trunc i8 %1344 to i1
  br i1 %1345, label %1346, label %1351

1346:                                             ; preds = %1328
  %1347 = load ptr, ptr %21, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ImGuiIO, ptr %1347, i32 0, i32 60
  %1349 = load i32, ptr %1348, align 8, !tbaa !147
  %1350 = icmp eq i32 %1349, 8
  br label %1356

1351:                                             ; preds = %1328
  %1352 = load ptr, ptr %21, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.ImGuiIO, ptr %1352, i32 0, i32 60
  %1354 = load i32, ptr %1353, align 8, !tbaa !147
  %1355 = icmp eq i32 %1354, 1
  br label %1356

1356:                                             ; preds = %1351, %1346
  %1357 = phi i1 [ %1350, %1346 ], [ %1355, %1351 ]
  %1358 = zext i1 %1357 to i8
  store i8 %1358, ptr %84, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #14
  %1359 = load i8, ptr %84, align 1, !tbaa !41, !range !39, !noundef !40
  %1360 = trunc i8 %1359 to i1
  br i1 %1360, label %1361, label %1363

1361:                                             ; preds = %1356
  %1362 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %1362, label %1368, label %1363

1363:                                             ; preds = %1361, %1356
  %1364 = load i8, ptr %83, align 1, !tbaa !41, !range !39, !noundef !40
  %1365 = trunc i8 %1364 to i1
  br i1 %1365, label %1366, label %1382

1366:                                             ; preds = %1363
  %1367 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1367, label %1368, label %1382

1368:                                             ; preds = %1366, %1361
  %1369 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1370 = trunc i8 %1369 to i1
  br i1 %1370, label %1382, label %1371

1371:                                             ; preds = %1368
  %1372 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %1373 = trunc i8 %1372 to i1
  br i1 %1373, label %1382, label %1374

1374:                                             ; preds = %1371
  %1375 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1376 = trunc i8 %1375 to i1
  br i1 %1376, label %1377, label %1380

1377:                                             ; preds = %1374
  %1378 = load ptr, ptr %43, align 8, !tbaa !5
  %1379 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1378)
  br label %1380

1380:                                             ; preds = %1377, %1374
  %1381 = phi i1 [ true, %1374 ], [ %1379, %1377 ]
  br label %1382

1382:                                             ; preds = %1380, %1371, %1368, %1366, %1363
  %1383 = phi i1 [ false, %1371 ], [ false, %1368 ], [ false, %1366 ], [ false, %1363 ], [ %1381, %1380 ]
  %1384 = zext i1 %1383 to i8
  store i8 %1384, ptr %85, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #14
  %1385 = load i8, ptr %84, align 1, !tbaa !41, !range !39, !noundef !40
  %1386 = trunc i8 %1385 to i1
  br i1 %1386, label %1387, label %1389

1387:                                             ; preds = %1382
  %1388 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1388, label %1394, label %1389

1389:                                             ; preds = %1387, %1382
  %1390 = load i8, ptr %82, align 1, !tbaa !41, !range !39, !noundef !40
  %1391 = trunc i8 %1390 to i1
  br i1 %1391, label %1392, label %1405

1392:                                             ; preds = %1389
  %1393 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1393, label %1394, label %1405

1394:                                             ; preds = %1392, %1387
  %1395 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %1396 = trunc i8 %1395 to i1
  br i1 %1396, label %1405, label %1397

1397:                                             ; preds = %1394
  %1398 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1399 = trunc i8 %1398 to i1
  br i1 %1399, label %1400, label %1403

1400:                                             ; preds = %1397
  %1401 = load ptr, ptr %43, align 8, !tbaa !5
  %1402 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1401)
  br label %1403

1403:                                             ; preds = %1400, %1397
  %1404 = phi i1 [ true, %1397 ], [ %1402, %1400 ]
  br label %1405

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

1410:                                             ; preds = %1405
  %1411 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1411, label %1417, label %1412

1412:                                             ; preds = %1410, %1405
  %1413 = load i8, ptr %83, align 1, !tbaa !41, !range !39, !noundef !40
  %1414 = trunc i8 %1413 to i1
  br i1 %1414, label %1415, label %1421

1415:                                             ; preds = %1412
  %1416 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1416, label %1417, label %1421

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

1421:                                             ; preds = %1417, %1415, %1412
  %1422 = phi i1 [ false, %1415 ], [ false, %1412 ], [ %1420, %1417 ]
  %1423 = zext i1 %1422 to i8
  store i8 %1423, ptr %87, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #14
  %1424 = load i8, ptr %84, align 1, !tbaa !41, !range !39, !noundef !40
  %1425 = trunc i8 %1424 to i1
  br i1 %1425, label %1426, label %1434

1426:                                             ; preds = %1421
  %1427 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1427, label %1428, label %1434

1428:                                             ; preds = %1426
  %1429 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1430 = trunc i8 %1429 to i1
  br i1 %1430, label %1434, label %1431

1431:                                             ; preds = %1428
  %1432 = load i8, ptr %27, align 1, !tbaa !41, !range !39, !noundef !40
  %1433 = trunc i8 %1432 to i1
  br label %1434

1434:                                             ; preds = %1431, %1428, %1426, %1421
  %1435 = phi i1 [ false, %1428 ], [ false, %1426 ], [ false, %1421 ], [ %1433, %1431 ]
  %1436 = zext i1 %1435 to i8
  store i8 %1436, ptr %88, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #14
  %1437 = load i8, ptr %84, align 1, !tbaa !41, !range !39, !noundef !40
  %1438 = trunc i8 %1437 to i1
  br i1 %1438, label %1439, label %1441

1439:                                             ; preds = %1434
  %1440 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1440, label %1446, label %1441

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

1444:                                             ; preds = %1441
  %1445 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1445, label %1446, label %1452

1446:                                             ; preds = %1444, %1439
  %1447 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1448 = trunc i8 %1447 to i1
  br i1 %1448, label %1452, label %1449

1449:                                             ; preds = %1446
  %1450 = load i8, ptr %27, align 1, !tbaa !41, !range !39, !noundef !40
  %1451 = trunc i8 %1450 to i1
  br label %1452

1452:                                             ; preds = %1449, %1446, %1444, %1441
  %1453 = phi i1 [ false, %1446 ], [ false, %1444 ], [ false, %1441 ], [ %1451, %1449 ]
  %1454 = zext i1 %1453 to i8
  store i8 %1454, ptr %89, align 1, !tbaa !41
  %1455 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1455, label %1456, label %1470

1456:                                             ; preds = %1452
  %1457 = load ptr, ptr %43, align 8, !tbaa !5
  %1458 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1459 = trunc i8 %1458 to i1
  br i1 %1459, label %1460, label %1461

1460:                                             ; preds = %1456
  br label %1466

1461:                                             ; preds = %1456
  %1462 = load i8, ptr %80, align 1, !tbaa !41, !range !39, !noundef !40
  %1463 = trunc i8 %1462 to i1
  %1464 = zext i1 %1463 to i64
  %1465 = select i1 %1463, i32 2097164, i32 2097152
  br label %1466

1466:                                             ; preds = %1461, %1460
  %1467 = phi i32 [ 2097156, %1460 ], [ %1465, %1461 ]
  %1468 = load i32, ptr %77, align 4, !tbaa !9
  %1469 = or i32 %1467, %1468
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1457, i32 noundef %1469)
  br label %1875

1470:                                             ; preds = %1452
  %1471 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1471, label %1472, label %1486

1472:                                             ; preds = %1470
  %1473 = load ptr, ptr %43, align 8, !tbaa !5
  %1474 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1475 = trunc i8 %1474 to i1
  br i1 %1475, label %1476, label %1477

1476:                                             ; preds = %1472
  br label %1482

1477:                                             ; preds = %1472
  %1478 = load i8, ptr %80, align 1, !tbaa !41, !range !39, !noundef !40
  %1479 = trunc i8 %1478 to i1
  %1480 = zext i1 %1479 to i64
  %1481 = select i1 %1479, i32 2097165, i32 2097153
  br label %1482

1482:                                             ; preds = %1477, %1476
  %1483 = phi i32 [ 2097157, %1476 ], [ %1481, %1477 ]
  %1484 = load i32, ptr %77, align 4, !tbaa !9
  %1485 = or i32 %1483, %1484
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1473, i32 noundef %1485)
  br label %1874

1486:                                             ; preds = %1470
  %1487 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1487, label %1488, label %1516

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

1491:                                             ; preds = %1488
  %1492 = load ptr, ptr %21, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.ImGuiIO, ptr %1492, i32 0, i32 40
  %1494 = load i8, ptr %1493, align 8, !tbaa !106, !range !39, !noundef !40
  %1495 = trunc i8 %1494 to i1
  br i1 %1495, label %1496, label %1507

1496:                                             ; preds = %1491
  %1497 = load ptr, ptr %38, align 8, !tbaa !5
  %1498 = load ptr, ptr %38, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.ImGuiWindow, ptr %1498, i32 0, i32 14
  %1500 = getelementptr inbounds %struct.ImVec2, ptr %1499, i32 0, i32 1
  %1501 = load float, ptr %1500, align 4, !tbaa !149
  %1502 = load ptr, ptr %20, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.ImGuiContext, ptr %1502, i32 0, i32 6
  %1504 = load float, ptr %1503, align 8, !tbaa !44
  %1505 = fsub float %1501, %1504
  %1506 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1505, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1497, float noundef %1506)
  br label %1515

1507:                                             ; preds = %1491
  %1508 = load ptr, ptr %43, align 8, !tbaa !5
  %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 2097158, i32 2097154
  %1513 = load i32, ptr %77, align 4, !tbaa !9
  %1514 = or i32 %1512, %1513
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1508, i32 noundef %1514)
  br label %1515

1515:                                             ; preds = %1507, %1496
  br label %1873

1516:                                             ; preds = %1488, %1486
  %1517 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1517, label %1518, label %1547

1518:                                             ; preds = %1516
  %1519 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1520 = trunc i8 %1519 to i1
  br i1 %1520, label %1521, label %1547

1521:                                             ; preds = %1518
  %1522 = load ptr, ptr %21, align 8, !tbaa !5
  %1523 = getelementptr inbounds %struct.ImGuiIO, ptr %1522, i32 0, i32 40
  %1524 = load i8, ptr %1523, align 8, !tbaa !106, !range !39, !noundef !40
  %1525 = trunc i8 %1524 to i1
  br i1 %1525, label %1526, label %1538

1526:                                             ; preds = %1521
  %1527 = load ptr, ptr %38, align 8, !tbaa !5
  %1528 = load ptr, ptr %38, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct.ImGuiWindow, ptr %1528, i32 0, i32 14
  %1530 = getelementptr inbounds %struct.ImVec2, ptr %1529, i32 0, i32 1
  %1531 = load float, ptr %1530, align 4, !tbaa !149
  %1532 = load ptr, ptr %20, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.ImGuiContext, ptr %1532, i32 0, i32 6
  %1534 = load float, ptr %1533, align 8, !tbaa !44
  %1535 = fadd float %1531, %1534
  %1536 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1537 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1535, float noundef %1536)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1527, float noundef %1537)
  br label %1546

1538:                                             ; preds = %1521
  %1539 = load ptr, ptr %43, align 8, !tbaa !5
  %1540 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1541 = trunc i8 %1540 to i1
  %1542 = zext i1 %1541 to i64
  %1543 = select i1 %1541, i32 2097159, i32 2097155
  %1544 = load i32, ptr %77, align 4, !tbaa !9
  %1545 = or i32 %1543, %1544
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1539, i32 noundef %1545)
  br label %1546

1546:                                             ; preds = %1538, %1526
  br label %1872

1547:                                             ; preds = %1518, %1516
  %1548 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1548, label %1549, label %1563

1549:                                             ; preds = %1547
  %1550 = load ptr, ptr %43, align 8, !tbaa !5
  %1551 = load ptr, ptr %21, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.ImGuiIO, ptr %1551, i32 0, i32 40
  %1553 = load i8, ptr %1552, align 8, !tbaa !106, !range !39, !noundef !40
  %1554 = trunc i8 %1553 to i1
  br i1 %1554, label %1555, label %1558

1555:                                             ; preds = %1549
  %1556 = load i32, ptr %77, align 4, !tbaa !9
  %1557 = or i32 2097158, %1556
  br label %1561

1558:                                             ; preds = %1549
  %1559 = load i32, ptr %77, align 4, !tbaa !9
  %1560 = or i32 2097156, %1559
  br label %1561

1561:                                             ; preds = %1558, %1555
  %1562 = phi i32 [ %1557, %1555 ], [ %1560, %1558 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1550, i32 noundef %1562)
  br label %1871

1563:                                             ; preds = %1547
  %1564 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1564, label %1565, label %1579

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

1571:                                             ; preds = %1565
  %1572 = load i32, ptr %77, align 4, !tbaa !9
  %1573 = or i32 2097159, %1572
  br label %1577

1574:                                             ; preds = %1565
  %1575 = load i32, ptr %77, align 4, !tbaa !9
  %1576 = or i32 2097157, %1575
  br label %1577

1577:                                             ; preds = %1574, %1571
  %1578 = phi i32 [ %1573, %1571 ], [ %1576, %1574 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1566, i32 noundef %1578)
  br label %1870

1579:                                             ; preds = %1563
  %1580 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1580, label %1581, label %1588

1581:                                             ; preds = %1579
  %1582 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1583 = trunc i8 %1582 to i1
  br i1 %1583, label %1588, label %1584

1584:                                             ; preds = %1581
  %1585 = load ptr, ptr %43, align 8, !tbaa !5
  %1586 = load i32, ptr %77, align 4, !tbaa !9
  %1587 = or i32 2097160, %1586
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1585, i32 noundef %1587)
  br label %1869

1588:                                             ; preds = %1581, %1579
  %1589 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1589, label %1590, label %1627

1590:                                             ; preds = %1588
  %1591 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1592 = trunc i8 %1591 to i1
  br i1 %1592, label %1627, label %1593

1593:                                             ; preds = %1590
  %1594 = load ptr, ptr %43, align 8, !tbaa !5
  %1595 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1594)
  br i1 %1595, label %1623, label %1596

1596:                                             ; preds = %1593
  %1597 = load i8, ptr %80, align 1, !tbaa !41, !range !39, !noundef !40
  %1598 = trunc i8 %1597 to i1
  br i1 %1598, label %1599, label %1601

1599:                                             ; preds = %1596
  %1600 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1600, i32 noundef 6291468)
  br label %1622

1601:                                             ; preds = %1596
  %1602 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1603 = trunc i8 %1602 to i1
  br i1 %1603, label %1604, label %1621

1604:                                             ; preds = %1601
  %1605 = load ptr, ptr %21, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.ImGuiIO, ptr %1605, i32 0, i32 43
  %1607 = load i8, ptr %1606, align 1, !tbaa !140, !range !39, !noundef !40
  %1608 = trunc i8 %1607 to i1
  br i1 %1608, label %1609, label %1621

1609:                                             ; preds = %1604
  %1610 = load ptr, ptr %21, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.ImGuiIO, ptr %1610, i32 0, i32 42
  %1612 = load i8, ptr %1611, align 2, !tbaa !139, !range !39, !noundef !40
  %1613 = trunc i8 %1612 to i1
  br i1 %1613, label %1621, label %1614

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

1619:                                             ; preds = %1614
  %1620 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1620, i32 noundef 6291460)
  br label %1621

1621:                                             ; preds = %1619, %1614, %1609, %1604, %1601
  br label %1622

1622:                                             ; preds = %1621, %1599
  br label %1623

1623:                                             ; preds = %1622, %1593
  %1624 = load ptr, ptr %43, align 8, !tbaa !5
  %1625 = load i32, ptr %77, align 4, !tbaa !9
  %1626 = or i32 2097161, %1625
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1624, i32 noundef %1626)
  br label %1868

1627:                                             ; preds = %1590, %1588
  %1628 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1628, label %1631, label %1629

1629:                                             ; preds = %1627
  %1630 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %1630, label %1631, label %1669

1631:                                             ; preds = %1629, %1627
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #14
  %1632 = load i32, ptr %15, align 4, !tbaa !9
  %1633 = and i32 %1632, 2048
  %1634 = icmp ne i32 %1633, 0
  %1635 = zext i1 %1634 to i8
  store i8 %1635, ptr %90, align 1, !tbaa !41
  %1636 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1637 = trunc i8 %1636 to i1
  br i1 %1637, label %1638, label %1654

1638:                                             ; preds = %1631
  %1639 = load i8, ptr %90, align 1, !tbaa !41, !range !39, !noundef !40
  %1640 = trunc i8 %1639 to i1
  br i1 %1640, label %1641, label %1646

1641:                                             ; preds = %1638
  %1642 = load ptr, ptr %21, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct.ImGuiIO, ptr %1642, i32 0, i32 40
  %1644 = load i8, ptr %1643, align 8, !tbaa !106, !range !39, !noundef !40
  %1645 = trunc i8 %1644 to i1
  br i1 %1645, label %1646, label %1654

1646:                                             ; preds = %1641, %1638
  %1647 = load i8, ptr %90, align 1, !tbaa !41, !range !39, !noundef !40
  %1648 = trunc i8 %1647 to i1
  br i1 %1648, label %1655, label %1649

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

1654:                                             ; preds = %1649, %1641, %1631
  store i8 1, ptr %51, align 1, !tbaa !41
  store i8 1, ptr %61, align 1, !tbaa !41
  br label %1668

1655:                                             ; preds = %1649, %1646
  %1656 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1657 = trunc i8 %1656 to i1
  br i1 %1657, label %1667, label %1658

1658:                                             ; preds = %1655
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #14
  store i32 10, ptr %91, align 4, !tbaa !9
  %1659 = load i32, ptr %15, align 4, !tbaa !9
  %1660 = load ptr, ptr %16, align 8, !tbaa !5
  %1661 = load ptr, ptr %17, align 8, !tbaa !5
  %1662 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %91, i32 noundef %1659, ptr noundef %1660, ptr noundef %1661)
  br i1 %1662, label %1663, label %1666

1663:                                             ; preds = %1658
  %1664 = load ptr, ptr %43, align 8, !tbaa !5
  %1665 = load i32, ptr %91, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1664, i32 noundef %1665)
  br label %1666

1666:                                             ; preds = %1663, %1658
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #14
  br label %1667

1667:                                             ; preds = %1666, %1655
  br label %1668

1668:                                             ; preds = %1667, %1654
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #14
  br label %1867

1669:                                             ; preds = %1629
  %1670 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1670, label %1671, label %1672

1671:                                             ; preds = %1669
  store i8 1, ptr %76, align 1, !tbaa !41
  store i8 1, ptr %51, align 1, !tbaa !41
  br label %1866

1672:                                             ; preds = %1669
  %1673 = load i8, ptr %88, align 1, !tbaa !41, !range !39, !noundef !40
  %1674 = trunc i8 %1673 to i1
  br i1 %1674, label %1678, label %1675

1675:                                             ; preds = %1672
  %1676 = load i8, ptr %89, align 1, !tbaa !41, !range !39, !noundef !40
  %1677 = trunc i8 %1676 to i1
  br i1 %1677, label %1678, label %1685

1678:                                             ; preds = %1675, %1672
  %1679 = load ptr, ptr %43, align 8, !tbaa !5
  %1680 = load i8, ptr %88, align 1, !tbaa !41, !range !39, !noundef !40
  %1681 = trunc i8 %1680 to i1
  %1682 = zext i1 %1681 to i64
  %1683 = select i1 %1681, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1679, i32 noundef %1683)
  %1684 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1684)
  br label %1865

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

1688:                                             ; preds = %1685
  %1689 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1689, label %1690, label %1694

1690:                                             ; preds = %1688
  %1691 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1691)
  %1692 = load ptr, ptr %43, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1692, i32 0, i32 11
  store i8 1, ptr %1693, align 4, !tbaa !138
  br label %1864

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

1697:                                             ; preds = %1694
  %1698 = load i8, ptr %86, align 1, !tbaa !41, !range !39, !noundef !40
  %1699 = trunc i8 %1698 to i1
  br i1 %1699, label %1700, label %1794

1700:                                             ; preds = %1697, %1694
  %1701 = load ptr, ptr %21, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.ImGuiIO, ptr %1701, i32 0, i32 31
  %1703 = load ptr, ptr %1702, align 8, !tbaa !150
  %1704 = icmp ne ptr %1703, null
  br i1 %1704, label %1705, label %1778

1705:                                             ; preds = %1700
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #14
  %1706 = load ptr, ptr %43, align 8, !tbaa !5
  %1707 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1706)
  br i1 %1707, label %1708, label %1718

1708:                                             ; preds = %1705
  %1709 = load ptr, ptr %43, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1709, i32 0, i32 9
  %1711 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1710, i32 0, i32 1
  %1712 = load i32, ptr %1711, align 4, !tbaa !151
  %1713 = load ptr, ptr %43, align 8, !tbaa !5
  %1714 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1713, i32 0, i32 9
  %1715 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1714, i32 0, i32 2
  %1716 = load i32, ptr %1715, align 4, !tbaa !152
  %1717 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1712, i32 noundef %1716)
  br label %1719

1718:                                             ; preds = %1705
  br label %1719

1719:                                             ; preds = %1718, %1708
  %1720 = phi i32 [ %1717, %1708 ], [ 0, %1718 ]
  store i32 %1720, ptr %92, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #14
  %1721 = load ptr, ptr %43, align 8, !tbaa !5
  %1722 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1721)
  br i1 %1722, label %1723, label %1733

1723:                                             ; preds = %1719
  %1724 = load ptr, ptr %43, align 8, !tbaa !5
  %1725 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1724, i32 0, i32 9
  %1726 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1725, i32 0, i32 1
  %1727 = load i32, ptr %1726, align 4, !tbaa !151
  %1728 = load ptr, ptr %43, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1728, i32 0, i32 9
  %1730 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1729, i32 0, i32 2
  %1731 = load i32, ptr %1730, align 4, !tbaa !152
  %1732 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1727, i32 noundef %1731)
  br label %1737

1733:                                             ; preds = %1719
  %1734 = load ptr, ptr %43, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1734, i32 0, i32 1
  %1736 = load i32, ptr %1735, align 4, !tbaa !101
  br label %1737

1737:                                             ; preds = %1733, %1723
  %1738 = phi i32 [ %1732, %1723 ], [ %1736, %1733 ]
  store i32 %1738, ptr %93, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #14
  %1739 = load ptr, ptr %43, align 8, !tbaa !5
  %1740 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1739, i32 0, i32 3
  %1741 = getelementptr inbounds %struct.ImVector.7, ptr %1740, i32 0, i32 2
  %1742 = load ptr, ptr %1741, align 8, !tbaa !100
  %1743 = load i32, ptr %92, align 4, !tbaa !9
  %1744 = sext i32 %1743 to i64
  %1745 = getelementptr inbounds i16, ptr %1742, i64 %1744
  %1746 = load ptr, ptr %43, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1746, i32 0, i32 3
  %1748 = getelementptr inbounds %struct.ImVector.7, ptr %1747, i32 0, i32 2
  %1749 = load ptr, ptr %1748, align 8, !tbaa !100
  %1750 = load i32, ptr %93, align 4, !tbaa !9
  %1751 = sext i32 %1750 to i64
  %1752 = getelementptr inbounds i16, ptr %1749, i64 %1751
  %1753 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1745, ptr noundef %1752)
  %1754 = add nsw i32 %1753, 1
  store i32 %1754, ptr %94, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #14
  %1755 = load i32, ptr %94, align 4, !tbaa !9
  %1756 = sext i32 %1755 to i64
  %1757 = mul i64 %1756, 1
  %1758 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1757)
  store ptr %1758, ptr %95, align 8, !tbaa !5
  %1759 = load ptr, ptr %95, align 8, !tbaa !5
  %1760 = load i32, ptr %94, align 4, !tbaa !9
  %1761 = load ptr, ptr %43, align 8, !tbaa !5
  %1762 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1761, i32 0, i32 3
  %1763 = getelementptr inbounds %struct.ImVector.7, ptr %1762, i32 0, i32 2
  %1764 = load ptr, ptr %1763, align 8, !tbaa !100
  %1765 = load i32, ptr %92, align 4, !tbaa !9
  %1766 = sext i32 %1765 to i64
  %1767 = getelementptr inbounds i16, ptr %1764, i64 %1766
  %1768 = load ptr, ptr %43, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1768, i32 0, i32 3
  %1770 = getelementptr inbounds %struct.ImVector.7, ptr %1769, i32 0, i32 2
  %1771 = load ptr, ptr %1770, align 8, !tbaa !100
  %1772 = load i32, ptr %93, align 4, !tbaa !9
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds i16, ptr %1771, i64 %1773
  %1775 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1759, i32 noundef %1760, ptr noundef %1767, ptr noundef %1774)
  %1776 = load ptr, ptr %95, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1776)
  %1777 = load ptr, ptr %95, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1777)
  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 %1778

1778:                                             ; preds = %1737, %1700
  %1779 = load i8, ptr %85, align 1, !tbaa !41, !range !39, !noundef !40
  %1780 = trunc i8 %1779 to i1
  br i1 %1780, label %1781, label %1793

1781:                                             ; preds = %1778
  %1782 = load ptr, ptr %43, align 8, !tbaa !5
  %1783 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1782)
  br i1 %1783, label %1786, label %1784

1784:                                             ; preds = %1781
  %1785 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1785)
  br label %1786

1786:                                             ; preds = %1784, %1781
  %1787 = load ptr, ptr %43, align 8, !tbaa !5
  %1788 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1787, i32 0, i32 11
  store i8 1, ptr %1788, align 4, !tbaa !138
  %1789 = load ptr, ptr %43, align 8, !tbaa !5
  %1790 = load ptr, ptr %43, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1790, i32 0, i32 9
  %1792 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1789, ptr noundef %1791)
  br label %1793

1793:                                             ; preds = %1786, %1778
  br label %1863

1794:                                             ; preds = %1697
  %1795 = load i8, ptr %87, align 1, !tbaa !41, !range !39, !noundef !40
  %1796 = trunc i8 %1795 to i1
  br i1 %1796, label %1797, label %1862

1797:                                             ; preds = %1794
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #14
  %1798 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %1798, ptr %96, align 8, !tbaa !5
  %1799 = load ptr, ptr %96, align 8, !tbaa !5
  %1800 = icmp ne ptr %1799, null
  br i1 %1800, label %1801, label %1861

1801:                                             ; preds = %1797
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #14
  %1802 = load ptr, ptr %96, align 8, !tbaa !5
  %1803 = call i64 @strlen(ptr noundef %1802) #16
  %1804 = trunc i64 %1803 to i32
  store i32 %1804, ptr %97, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #14
  %1805 = load i32, ptr %97, align 4, !tbaa !9
  %1806 = add nsw i32 %1805, 1
  %1807 = sext i32 %1806 to i64
  %1808 = mul i64 %1807, 2
  %1809 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1808)
  store ptr %1809, 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
  %1810 = load ptr, ptr %96, align 8, !tbaa !5
  store ptr %1810, ptr %100, align 8, !tbaa !5
  br label %1811

1811:                                             ; preds = %1841, %1839, %1801
  %1812 = load ptr, ptr %100, align 8, !tbaa !5
  %1813 = load i8, ptr %1812, align 1, !tbaa !112
  %1814 = icmp ne i8 %1813, 0
  br i1 %1814, label %1816, label %1815

1815:                                             ; preds = %1811
  store i32 5, ptr %19, align 4
  br label %1842

1816:                                             ; preds = %1811
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #14
  %1817 = load ptr, ptr %100, align 8, !tbaa !5
  %1818 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %101, ptr noundef %1817, ptr noundef null)
  %1819 = load ptr, ptr %100, align 8, !tbaa !5
  %1820 = sext i32 %1818 to i64
  %1821 = getelementptr inbounds i8, ptr %1819, i64 %1820
  store ptr %1821, ptr %100, align 8, !tbaa !5
  %1822 = load i32, ptr %101, align 4, !tbaa !9
  %1823 = icmp eq i32 %1822, 0
  br i1 %1823, label %1824, label %1825

1824:                                             ; preds = %1816
  store i32 5, ptr %19, align 4
  br label %1839

1825:                                             ; preds = %1816
  %1826 = load i32, ptr %15, align 4, !tbaa !9
  %1827 = load ptr, ptr %16, align 8, !tbaa !5
  %1828 = load ptr, ptr %17, align 8, !tbaa !5
  %1829 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %101, i32 noundef %1826, ptr noundef %1827, ptr noundef %1828)
  br i1 %1829, label %1831, label %1830

1830:                                             ; preds = %1825
  store i32 6, ptr %19, align 4
  br label %1839, !llvm.loop !153

1831:                                             ; preds = %1825
  %1832 = load i32, ptr %101, align 4, !tbaa !9
  %1833 = trunc i32 %1832 to i16
  %1834 = load ptr, ptr %98, align 8, !tbaa !5
  %1835 = load i32, ptr %99, align 4, !tbaa !9
  %1836 = add nsw i32 %1835, 1
  store i32 %1836, ptr %99, align 4, !tbaa !9
  %1837 = sext i32 %1835 to i64
  %1838 = getelementptr inbounds i16, ptr %1834, i64 %1837
  store i16 %1833, ptr %1838, align 2, !tbaa !142
  store i32 0, ptr %19, align 4
  br label %1839

1839:                                             ; preds = %1831, %1830, %1824
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #14
  %1840 = load i32, ptr %19, align 4
  switch i32 %1840, label %1842 [
    i32 0, label %1841
    i32 6, label %1811
  ]

1841:                                             ; preds = %1839
  br label %1811, !llvm.loop !153

1842:                                             ; preds = %1839, %1815
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #14
  br label %1843

1843:                                             ; preds = %1842
  %1844 = load ptr, ptr %98, align 8, !tbaa !5
  %1845 = load i32, ptr %99, align 4, !tbaa !9
  %1846 = sext i32 %1845 to i64
  %1847 = getelementptr inbounds i16, ptr %1844, i64 %1846
  store i16 0, ptr %1847, align 2, !tbaa !142
  %1848 = load i32, ptr %99, align 4, !tbaa !9
  %1849 = icmp sgt i32 %1848, 0
  br i1 %1849, label %1850, label %1859

1850:                                             ; preds = %1843
  %1851 = load ptr, ptr %43, align 8, !tbaa !5
  %1852 = load ptr, ptr %43, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1852, i32 0, i32 9
  %1854 = load ptr, ptr %98, align 8, !tbaa !5
  %1855 = load i32, ptr %99, align 4, !tbaa !9
  %1856 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1851, ptr noundef %1853, ptr noundef %1854, i32 noundef %1855)
  %1857 = load ptr, ptr %43, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1857, i32 0, i32 11
  store i8 1, ptr %1858, align 4, !tbaa !138
  br label %1859

1859:                                             ; preds = %1850, %1843
  %1860 = load ptr, ptr %98, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1860)
  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 %1861

1861:                                             ; preds = %1859, %1797
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #14
  br label %1862

1862:                                             ; preds = %1861, %1794
  br label %1863

1863:                                             ; preds = %1862, %1793
  br label %1864

1864:                                             ; preds = %1863, %1690
  br label %1865

1865:                                             ; preds = %1864, %1678
  br label %1866

1866:                                             ; preds = %1865, %1671
  br label %1867

1867:                                             ; preds = %1866, %1668
  br label %1868

1868:                                             ; preds = %1867, %1623
  br label %1869

1869:                                             ; preds = %1868, %1584
  br label %1870

1870:                                             ; preds = %1869, %1577
  br label %1871

1871:                                             ; preds = %1870, %1561
  br label %1872

1872:                                             ; preds = %1871, %1546
  br label %1873

1873:                                             ; preds = %1872, %1515
  br label %1874

1874:                                             ; preds = %1873, %1482
  br label %1875

1875:                                             ; preds = %1874, %1466
  %1876 = load ptr, ptr %43, align 8, !tbaa !5
  %1877 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1876)
  br i1 %1877, label %1878, label %1881

1878:                                             ; preds = %1875
  %1879 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %1880 = trunc i8 %1879 to i1
  br label %1881

1881:                                             ; preds = %1878, %1875
  %1882 = phi i1 [ false, %1875 ], [ %1880, %1878 ]
  %1883 = zext i1 %1882 to i32
  %1884 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %1885 = trunc i8 %1884 to i1
  %1886 = zext i1 %1885 to i32
  %1887 = or i32 %1886, %1883
  %1888 = icmp ne i32 %1887, 0
  %1889 = zext i1 %1888 to i8
  store i8 %1889, 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 %1890

1890:                                             ; preds = %1881, %1252, %1247, %1241
  %1891 = load ptr, ptr %20, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.ImGuiContext, ptr %1891, i32 0, i32 40
  %1893 = load i32, ptr %1892, align 8, !tbaa !93
  %1894 = load i32, ptr %29, align 4, !tbaa !9
  %1895 = icmp eq i32 %1893, %1894
  br i1 %1895, label %1896, label %2335

1896:                                             ; preds = %1890
  %1897 = load ptr, ptr %43, align 8, !tbaa !5
  %1898 = icmp ne ptr %1897, null
  br i1 %1898, label %1899, label %1900

1899:                                             ; preds = %1896
  br label %1902

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

1901:                                             ; No predecessors!
  br label %1902

1902:                                             ; preds = %1901, %1899
  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
  %1903 = load i8, ptr %76, align 1, !tbaa !41, !range !39, !noundef !40
  %1904 = trunc i8 %1903 to i1
  br i1 %1904, label %1905, label %1970

1905:                                             ; preds = %1902
  %1906 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1907 = trunc i8 %1906 to i1
  br i1 %1907, label %1969, label %1908

1908:                                             ; preds = %1905
  %1909 = load ptr, ptr %12, align 8, !tbaa !5
  %1910 = load ptr, ptr %43, align 8, !tbaa !5
  %1911 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1910, i32 0, i32 5
  %1912 = getelementptr inbounds %struct.ImVector.22, ptr %1911, i32 0, i32 2
  %1913 = load ptr, ptr %1912, align 8, !tbaa !98
  %1914 = call i32 @strcmp(ptr noundef %1909, ptr noundef %1913) #16
  %1915 = icmp ne i32 %1914, 0
  br i1 %1915, label %1916, label %1969

1916:                                             ; preds = %1908
  %1917 = load ptr, ptr %43, align 8, !tbaa !5
  %1918 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1917, i32 0, i32 5
  %1919 = getelementptr inbounds %struct.ImVector.22, ptr %1918, i32 0, i32 2
  %1920 = load ptr, ptr %1919, align 8, !tbaa !98
  store ptr %1920, ptr %102, align 8, !tbaa !5
  %1921 = load ptr, ptr %43, align 8, !tbaa !5
  %1922 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1921, i32 0, i32 5
  %1923 = getelementptr inbounds %struct.ImVector.22, ptr %1922, i32 0, i32 0
  %1924 = load i32, ptr %1923, align 8, !tbaa !154
  %1925 = sub nsw i32 %1924, 1
  store i32 %1925, 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)
  %1926 = load i32, ptr %103, align 4, !tbaa !9
  %1927 = icmp sgt i32 %1926, 0
  br i1 %1927, label %1928, label %1953

1928:                                             ; preds = %1916
  %1929 = load ptr, ptr %102, align 8, !tbaa !5
  %1930 = load ptr, ptr %102, align 8, !tbaa !5
  %1931 = load i32, ptr %103, align 4, !tbaa !9
  %1932 = sext i32 %1931 to i64
  %1933 = getelementptr inbounds i8, ptr %1930, i64 %1932
  %1934 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1929, ptr noundef %1933)
          to label %1935 unwind label %1949

1935:                                             ; preds = %1928
  %1936 = add nsw i32 %1934, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %104, i32 noundef %1936)
          to label %1937 unwind label %1949

1937:                                             ; preds = %1935
  %1938 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 2
  %1939 = load ptr, ptr %1938, align 8, !tbaa !155
  %1940 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 0
  %1941 = load i32, ptr %1940, align 8, !tbaa !156
  %1942 = load ptr, ptr %102, align 8, !tbaa !5
  %1943 = load ptr, ptr %102, align 8, !tbaa !5
  %1944 = load i32, ptr %103, align 4, !tbaa !9
  %1945 = sext i32 %1944 to i64
  %1946 = getelementptr inbounds i8, ptr %1943, i64 %1945
  %1947 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1939, i32 noundef %1941, ptr noundef %1942, ptr noundef %1946, ptr noundef null)
          to label %1948 unwind label %1949

1948:                                             ; preds = %1937
  br label %1953

1949:                                             ; preds = %1966, %1937, %1935, %1928
  %1950 = landingpad { ptr, i32 }
          cleanup
  %1951 = extractvalue { ptr, i32 } %1950, 0
  store ptr %1951, ptr %105, align 8
  %1952 = extractvalue { ptr, i32 } %1950, 1
  store i32 %1952, 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 %3112

1953:                                             ; preds = %1948, %1916
  %1954 = load ptr, ptr %43, align 8, !tbaa !5
  %1955 = load ptr, ptr %43, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1955, i32 0, i32 9
  %1957 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 2
  %1958 = load ptr, ptr %1957, align 8, !tbaa !155
  %1959 = load i32, ptr %103, align 4, !tbaa !9
  %1960 = icmp sgt i32 %1959, 0
  br i1 %1960, label %1961, label %1965

1961:                                             ; preds = %1953
  %1962 = getelementptr inbounds %struct.ImVector.7, ptr %104, i32 0, i32 0
  %1963 = load i32, ptr %1962, align 8, !tbaa !156
  %1964 = sub nsw i32 %1963, 1
  br label %1966

1965:                                             ; preds = %1953
  br label %1966

1966:                                             ; preds = %1965, %1961
  %1967 = phi i32 [ %1964, %1961 ], [ 0, %1965 ]
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1954, ptr noundef %1956, ptr noundef %1958, i32 noundef %1967)
          to label %1968 unwind label %1949

1968:                                             ; preds = %1966
  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 %1969

1969:                                             ; preds = %1968, %1908, %1905
  br label %1970

1970:                                             ; preds = %1969, %1902
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #14
  %1971 = load i8, ptr %76, align 1, !tbaa !41, !range !39, !noundef !40
  %1972 = trunc i8 %1971 to i1
  br i1 %1972, label %1973, label %1982

1973:                                             ; preds = %1970
  %1974 = load i8, ptr %61, align 1, !tbaa !41, !range !39, !noundef !40
  %1975 = trunc i8 %1974 to i1
  br i1 %1975, label %1976, label %1980

1976:                                             ; preds = %1973
  %1977 = load i32, ptr %15, align 4, !tbaa !9
  %1978 = and i32 %1977, 32
  %1979 = icmp ne i32 %1978, 0
  br label %1980

1980:                                             ; preds = %1976, %1973
  %1981 = phi i1 [ false, %1973 ], [ %1979, %1976 ]
  br label %1982

1982:                                             ; preds = %1980, %1970
  %1983 = phi i1 [ true, %1970 ], [ %1981, %1980 ]
  %1984 = zext i1 %1983 to i8
  store i8 %1984, ptr %107, align 1, !tbaa !41
  %1985 = load i8, ptr %107, align 1, !tbaa !41, !range !39, !noundef !40
  %1986 = trunc i8 %1985 to i1
  br i1 %1986, label %1987, label %2275

1987:                                             ; preds = %1982
  %1988 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1989 = trunc i8 %1988 to i1
  br i1 %1989, label %2014, label %1990

1990:                                             ; preds = %1987
  %1991 = load ptr, ptr %43, align 8, !tbaa !5
  %1992 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1991, i32 0, i32 6
  store i8 1, ptr %1992, align 8, !tbaa !99
  %1993 = load ptr, ptr %43, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1993, i32 0, i32 4
  %1995 = load ptr, ptr %43, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1995, i32 0, i32 3
  %1997 = getelementptr inbounds %struct.ImVector.7, ptr %1996, i32 0, i32 0
  %1998 = load i32, ptr %1997, align 8, !tbaa !110
  %1999 = mul nsw i32 %1998, 4
  %2000 = add nsw i32 %1999, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1994, i32 noundef %2000)
  %2001 = load ptr, ptr %43, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2001, i32 0, i32 4
  %2003 = getelementptr inbounds %struct.ImVector.22, ptr %2002, i32 0, i32 2
  %2004 = load ptr, ptr %2003, align 8, !tbaa !111
  %2005 = load ptr, ptr %43, align 8, !tbaa !5
  %2006 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2005, i32 0, i32 4
  %2007 = getelementptr inbounds %struct.ImVector.22, ptr %2006, i32 0, i32 0
  %2008 = load i32, ptr %2007, align 8, !tbaa !157
  %2009 = load ptr, ptr %43, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2009, i32 0, i32 3
  %2011 = getelementptr inbounds %struct.ImVector.7, ptr %2010, i32 0, i32 2
  %2012 = load ptr, ptr %2011, align 8, !tbaa !100
  %2013 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %2004, i32 noundef %2008, ptr noundef %2012, ptr noundef null)
  br label %2014

2014:                                             ; preds = %1990, %1987
  %2015 = load i32, ptr %15, align 4, !tbaa !9
  %2016 = and i32 %2015, 448
  %2017 = icmp ne i32 %2016, 0
  br i1 %2017, label %2018, label %2255

2018:                                             ; preds = %2014
  %2019 = load ptr, ptr %16, align 8, !tbaa !5
  %2020 = icmp ne ptr %2019, null
  br i1 %2020, label %2021, label %2022

2021:                                             ; preds = %2018
  br label %2024

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

2023:                                             ; No predecessors!
  br label %2024

2024:                                             ; preds = %2023, %2021
  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
  %2025 = load i32, ptr %15, align 4, !tbaa !9
  %2026 = and i32 %2025, 64
  %2027 = icmp ne i32 %2026, 0
  br i1 %2027, label %2028, label %2031

2028:                                             ; preds = %2024
  %2029 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %2029, label %2030, label %2031

2030:                                             ; preds = %2028
  store i32 64, ptr %108, align 4, !tbaa !9
  store i32 0, ptr %109, align 4, !tbaa !9
  br label %2053

2031:                                             ; preds = %2028, %2024
  %2032 = load i32, ptr %15, align 4, !tbaa !9
  %2033 = and i32 %2032, 128
  %2034 = icmp ne i32 %2033, 0
  br i1 %2034, label %2035, label %2038

2035:                                             ; preds = %2031
  %2036 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %2036, label %2037, label %2038

2037:                                             ; preds = %2035
  store i32 128, ptr %108, align 4, !tbaa !9
  store i32 3, ptr %109, align 4, !tbaa !9
  br label %2052

2038:                                             ; preds = %2035, %2031
  %2039 = load i32, ptr %15, align 4, !tbaa !9
  %2040 = and i32 %2039, 128
  %2041 = icmp ne i32 %2040, 0
  br i1 %2041, label %2042, label %2045

2042:                                             ; preds = %2038
  %2043 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %2043, label %2044, label %2045

2044:                                             ; preds = %2042
  store i32 128, ptr %108, align 4, !tbaa !9
  store i32 4, ptr %109, align 4, !tbaa !9
  br label %2051

2045:                                             ; preds = %2042, %2038
  %2046 = load i32, ptr %15, align 4, !tbaa !9
  %2047 = and i32 %2046, 256
  %2048 = icmp ne i32 %2047, 0
  br i1 %2048, label %2049, label %2050

2049:                                             ; preds = %2045
  store i32 256, ptr %108, align 4, !tbaa !9
  br label %2050

2050:                                             ; preds = %2049, %2045
  br label %2051

2051:                                             ; preds = %2050, %2044
  br label %2052

2052:                                             ; preds = %2051, %2037
  br label %2053

2053:                                             ; preds = %2052, %2030
  %2054 = load i32, ptr %108, align 4, !tbaa !9
  %2055 = icmp ne i32 %2054, 0
  br i1 %2055, label %2056, label %2254

2056:                                             ; preds = %2053
  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)
  %2057 = load i32, ptr %108, align 4, !tbaa !9
  %2058 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 0
  store i32 %2057, ptr %2058, align 8, !tbaa !158
  %2059 = load i32, ptr %15, align 4, !tbaa !9
  %2060 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 1
  store i32 %2059, ptr %2060, align 4, !tbaa !160
  %2061 = load ptr, ptr %17, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 2
  store ptr %2061, ptr %2062, align 8, !tbaa !161
  %2063 = load i32, ptr %109, align 4, !tbaa !9
  %2064 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 4
  store i32 %2063, ptr %2064, align 4, !tbaa !162
  %2065 = load ptr, ptr %43, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2065, i32 0, i32 4
  %2067 = getelementptr inbounds %struct.ImVector.22, ptr %2066, i32 0, i32 2
  %2068 = load ptr, ptr %2067, align 8, !tbaa !111
  %2069 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  store ptr %2068, ptr %2069, align 8, !tbaa !163
  %2070 = load ptr, ptr %43, align 8, !tbaa !5
  %2071 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2070, i32 0, i32 2
  %2072 = load i32, ptr %2071, align 8, !tbaa !102
  %2073 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  store i32 %2072, ptr %2073, align 8, !tbaa !164
  %2074 = load ptr, ptr %43, align 8, !tbaa !5
  %2075 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2074, i32 0, i32 7
  %2076 = load i32, ptr %2075, align 4, !tbaa !123
  %2077 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 7
  store i32 %2076, ptr %2077, align 4, !tbaa !165
  %2078 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 8
  store i8 0, ptr %2078, align 8, !tbaa !166
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #14
  %2079 = load ptr, ptr %43, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2079, i32 0, i32 3
  %2081 = getelementptr inbounds %struct.ImVector.7, ptr %2080, i32 0, i32 2
  %2082 = load ptr, ptr %2081, align 8, !tbaa !100
  store ptr %2082, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #14
  %2083 = load ptr, ptr %111, align 8, !tbaa !5
  %2084 = load ptr, ptr %111, align 8, !tbaa !5
  %2085 = load ptr, ptr %43, align 8, !tbaa !5
  %2086 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2085, i32 0, i32 9
  %2087 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2086, i32 0, i32 0
  %2088 = load i32, ptr %2087, align 4, !tbaa !167
  %2089 = sext i32 %2088 to i64
  %2090 = getelementptr inbounds i16, ptr %2084, i64 %2089
  %2091 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2083, ptr noundef %2090)
  %2092 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  store i32 %2091, ptr %2092, align 4, !tbaa !168
  store i32 %2091, ptr %112, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #14
  %2093 = load ptr, ptr %111, align 8, !tbaa !5
  %2094 = load ptr, ptr %111, align 8, !tbaa !5
  %2095 = load ptr, ptr %43, align 8, !tbaa !5
  %2096 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2095, i32 0, i32 9
  %2097 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2096, i32 0, i32 1
  %2098 = load i32, ptr %2097, align 4, !tbaa !151
  %2099 = sext i32 %2098 to i64
  %2100 = getelementptr inbounds i16, ptr %2094, i64 %2099
  %2101 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2093, ptr noundef %2100)
  %2102 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  store i32 %2101, ptr %2102, align 8, !tbaa !169
  store i32 %2101, ptr %113, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #14
  %2103 = load ptr, ptr %111, align 8, !tbaa !5
  %2104 = load ptr, ptr %111, align 8, !tbaa !5
  %2105 = load ptr, ptr %43, align 8, !tbaa !5
  %2106 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2105, i32 0, i32 9
  %2107 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2106, i32 0, i32 2
  %2108 = load i32, ptr %2107, align 4, !tbaa !152
  %2109 = sext i32 %2108 to i64
  %2110 = getelementptr inbounds i16, ptr %2104, i64 %2109
  %2111 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2103, ptr noundef %2110)
  %2112 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  store i32 %2111, ptr %2112, align 4, !tbaa !170
  store i32 %2111, ptr %114, align 4, !tbaa !9
  %2113 = load ptr, ptr %16, align 8, !tbaa !5
  %2114 = call noundef i32 %2113(ptr noundef %110)
  %2115 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2116 = load ptr, ptr %2115, align 8, !tbaa !163
  %2117 = load ptr, ptr %43, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2117, i32 0, i32 4
  %2119 = getelementptr inbounds %struct.ImVector.22, ptr %2118, i32 0, i32 2
  %2120 = load ptr, ptr %2119, align 8, !tbaa !111
  %2121 = icmp eq ptr %2116, %2120
  br i1 %2121, label %2122, label %2123

2122:                                             ; preds = %2056
  br label %2125

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

2124:                                             ; No predecessors!
  br label %2125

2125:                                             ; preds = %2124, %2122
  %2126 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 7
  %2127 = load i32, ptr %2126, align 4, !tbaa !165
  %2128 = load ptr, ptr %43, align 8, !tbaa !5
  %2129 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2128, i32 0, i32 7
  %2130 = load i32, ptr %2129, align 4, !tbaa !123
  %2131 = icmp eq i32 %2127, %2130
  br i1 %2131, label %2132, label %2133

2132:                                             ; preds = %2125
  br label %2135

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

2134:                                             ; No predecessors!
  br label %2135

2135:                                             ; preds = %2134, %2132
  %2136 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 1
  %2137 = load i32, ptr %2136, align 4, !tbaa !160
  %2138 = load i32, ptr %15, align 4, !tbaa !9
  %2139 = icmp eq i32 %2137, %2138
  br i1 %2139, label %2140, label %2141

2140:                                             ; preds = %2135
  br label %2143

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

2142:                                             ; No predecessors!
  br label %2143

2143:                                             ; preds = %2142, %2140
  %2144 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  %2145 = load i32, ptr %2144, align 4, !tbaa !168
  %2146 = load i32, ptr %112, align 4, !tbaa !9
  %2147 = icmp ne i32 %2145, %2146
  br i1 %2147, label %2148, label %2163

2148:                                             ; preds = %2143
  %2149 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2150 = load ptr, ptr %2149, align 8, !tbaa !163
  %2151 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2152 = load ptr, ptr %2151, align 8, !tbaa !163
  %2153 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 9
  %2154 = load i32, ptr %2153, align 4, !tbaa !168
  %2155 = sext i32 %2154 to i64
  %2156 = getelementptr inbounds i8, ptr %2152, i64 %2155
  %2157 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2150, ptr noundef %2156)
  %2158 = load ptr, ptr %43, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2158, i32 0, i32 9
  %2160 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2159, i32 0, i32 0
  store i32 %2157, ptr %2160, align 4, !tbaa !167
  %2161 = load ptr, ptr %43, align 8, !tbaa !5
  %2162 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2161, i32 0, i32 11
  store i8 1, ptr %2162, align 4, !tbaa !138
  br label %2163

2163:                                             ; preds = %2148, %2143
  %2164 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  %2165 = load i32, ptr %2164, align 8, !tbaa !169
  %2166 = load i32, ptr %113, align 4, !tbaa !9
  %2167 = icmp ne i32 %2165, %2166
  br i1 %2167, label %2168, label %2181

2168:                                             ; preds = %2163
  %2169 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2170 = load ptr, ptr %2169, align 8, !tbaa !163
  %2171 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2172 = load ptr, ptr %2171, align 8, !tbaa !163
  %2173 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 10
  %2174 = load i32, ptr %2173, align 8, !tbaa !169
  %2175 = sext i32 %2174 to i64
  %2176 = getelementptr inbounds i8, ptr %2172, i64 %2175
  %2177 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2170, ptr noundef %2176)
  %2178 = load ptr, ptr %43, align 8, !tbaa !5
  %2179 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2178, i32 0, i32 9
  %2180 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2179, i32 0, i32 1
  store i32 %2177, ptr %2180, align 4, !tbaa !151
  br label %2181

2181:                                             ; preds = %2168, %2163
  %2182 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  %2183 = load i32, ptr %2182, align 4, !tbaa !170
  %2184 = load i32, ptr %114, align 4, !tbaa !9
  %2185 = icmp ne i32 %2183, %2184
  br i1 %2185, label %2186, label %2199

2186:                                             ; preds = %2181
  %2187 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2188 = load ptr, ptr %2187, align 8, !tbaa !163
  %2189 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2190 = load ptr, ptr %2189, align 8, !tbaa !163
  %2191 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 11
  %2192 = load i32, ptr %2191, align 4, !tbaa !170
  %2193 = sext i32 %2192 to i64
  %2194 = getelementptr inbounds i8, ptr %2190, i64 %2193
  %2195 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2188, ptr noundef %2194)
  %2196 = load ptr, ptr %43, align 8, !tbaa !5
  %2197 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2196, i32 0, i32 9
  %2198 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2197, i32 0, i32 2
  store i32 %2195, ptr %2198, align 4, !tbaa !152
  br label %2199

2199:                                             ; preds = %2186, %2181
  %2200 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 8
  %2201 = load i8, ptr %2200, align 8, !tbaa !166, !range !39, !noundef !40
  %2202 = trunc i8 %2201 to i1
  br i1 %2202, label %2203, label %2253

2203:                                             ; preds = %2199
  %2204 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2205 = load i32, ptr %2204, align 8, !tbaa !164
  %2206 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2207 = load ptr, ptr %2206, align 8, !tbaa !163
  %2208 = call i64 @strlen(ptr noundef %2207) #16
  %2209 = trunc i64 %2208 to i32
  %2210 = icmp eq i32 %2205, %2209
  br i1 %2210, label %2211, label %2212

2211:                                             ; preds = %2203
  br label %2214

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

2213:                                             ; No predecessors!
  br label %2214

2214:                                             ; preds = %2213, %2211
  %2215 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2216 = load i32, ptr %2215, align 8, !tbaa !164
  %2217 = load i32, ptr %67, align 4, !tbaa !9
  %2218 = icmp sgt i32 %2216, %2217
  br i1 %2218, label %2219, label %2234

2219:                                             ; preds = %2214
  %2220 = load i8, ptr %28, align 1, !tbaa !41, !range !39, !noundef !40
  %2221 = trunc i8 %2220 to i1
  br i1 %2221, label %2222, label %2234

2222:                                             ; preds = %2219
  %2223 = load ptr, ptr %43, align 8, !tbaa !5
  %2224 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2223, i32 0, i32 3
  %2225 = load ptr, ptr %43, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2225, i32 0, i32 3
  %2227 = getelementptr inbounds %struct.ImVector.7, ptr %2226, i32 0, i32 0
  %2228 = load i32, ptr %2227, align 8, !tbaa !110
  %2229 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2230 = load i32, ptr %2229, align 8, !tbaa !164
  %2231 = load i32, ptr %67, align 4, !tbaa !9
  %2232 = sub nsw i32 %2230, %2231
  %2233 = add nsw i32 %2228, %2232
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2224, i32 noundef %2233)
  br label %2234

2234:                                             ; preds = %2222, %2219, %2214
  %2235 = load ptr, ptr %43, align 8, !tbaa !5
  %2236 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2235, i32 0, i32 3
  %2237 = getelementptr inbounds %struct.ImVector.7, ptr %2236, i32 0, i32 2
  %2238 = load ptr, ptr %2237, align 8, !tbaa !100
  %2239 = load ptr, ptr %43, align 8, !tbaa !5
  %2240 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2239, i32 0, i32 3
  %2241 = getelementptr inbounds %struct.ImVector.7, ptr %2240, i32 0, i32 0
  %2242 = load i32, ptr %2241, align 8, !tbaa !110
  %2243 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 5
  %2244 = load ptr, ptr %2243, align 8, !tbaa !163
  %2245 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2238, i32 noundef %2242, ptr noundef %2244, ptr noundef null, ptr noundef null)
  %2246 = load ptr, ptr %43, align 8, !tbaa !5
  %2247 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2246, i32 0, i32 1
  store i32 %2245, ptr %2247, align 4, !tbaa !101
  %2248 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %110, i32 0, i32 6
  %2249 = load i32, ptr %2248, align 8, !tbaa !164
  %2250 = load ptr, ptr %43, align 8, !tbaa !5
  %2251 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2250, i32 0, i32 2
  store i32 %2249, ptr %2251, align 8, !tbaa !102
  %2252 = load ptr, ptr %43, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %2252)
  br label %2253

2253:                                             ; preds = %2234, %2199
  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 %2254

2254:                                             ; preds = %2253, %2053
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #14
  br label %2255

2255:                                             ; preds = %2254, %2014
  %2256 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %2257 = trunc i8 %2256 to i1
  br i1 %2257, label %2274, label %2258

2258:                                             ; preds = %2255
  %2259 = load ptr, ptr %43, align 8, !tbaa !5
  %2260 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2259, i32 0, i32 4
  %2261 = getelementptr inbounds %struct.ImVector.22, ptr %2260, i32 0, i32 2
  %2262 = load ptr, ptr %2261, align 8, !tbaa !111
  %2263 = load ptr, ptr %12, align 8, !tbaa !5
  %2264 = call i32 @strcmp(ptr noundef %2262, ptr noundef %2263) #16
  %2265 = icmp ne i32 %2264, 0
  br i1 %2265, label %2266, label %2274

2266:                                             ; preds = %2258
  %2267 = load ptr, ptr %43, align 8, !tbaa !5
  %2268 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2267, i32 0, i32 4
  %2269 = getelementptr inbounds %struct.ImVector.22, ptr %2268, i32 0, i32 2
  %2270 = load ptr, ptr %2269, align 8, !tbaa !111
  store ptr %2270, ptr %102, align 8, !tbaa !5
  %2271 = load ptr, ptr %43, align 8, !tbaa !5
  %2272 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2271, i32 0, i32 2
  %2273 = load i32, ptr %2272, align 8, !tbaa !102
  store i32 %2273, ptr %103, align 4, !tbaa !9
  br label %2274

2274:                                             ; preds = %2266, %2258, %2255
  br label %2275

2275:                                             ; preds = %2274, %1982
  %2276 = load ptr, ptr %102, align 8, !tbaa !5
  %2277 = icmp ne ptr %2276, null
  br i1 %2277, label %2278, label %2328

2278:                                             ; preds = %2275
  %2279 = load i32, ptr %103, align 4, !tbaa !9
  %2280 = icmp sge i32 %2279, 0
  br i1 %2280, label %2281, label %2282

2281:                                             ; preds = %2278
  br label %2284

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

2283:                                             ; No predecessors!
  br label %2284

2284:                                             ; preds = %2283, %2281
  %2285 = load i8, ptr %28, align 1, !tbaa !41, !range !39, !noundef !40
  %2286 = trunc i8 %2285 to i1
  br i1 %2286, label %2287, label %2320

2287:                                             ; preds = %2284
  call void @llvm.lifetime.start.p0(i64 56, ptr %115) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %115)
  %2288 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 0
  store i32 262144, ptr %2288, align 8, !tbaa !158
  %2289 = load i32, ptr %15, align 4, !tbaa !9
  %2290 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 1
  store i32 %2289, ptr %2290, align 4, !tbaa !160
  %2291 = load ptr, ptr %12, align 8, !tbaa !5
  %2292 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 5
  store ptr %2291, ptr %2292, align 8, !tbaa !163
  %2293 = load i32, ptr %103, align 4, !tbaa !9
  %2294 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 6
  store i32 %2293, ptr %2294, align 8, !tbaa !164
  %2295 = load i32, ptr %13, align 4, !tbaa !9
  %2296 = load i32, ptr %103, align 4, !tbaa !9
  %2297 = add nsw i32 %2296, 1
  %2298 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2295, i32 noundef %2297)
  %2299 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 7
  store i32 %2298, ptr %2299, align 4, !tbaa !165
  %2300 = load ptr, ptr %17, align 8, !tbaa !5
  %2301 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 2
  store ptr %2300, ptr %2301, align 8, !tbaa !161
  %2302 = load ptr, ptr %16, align 8, !tbaa !5
  %2303 = call noundef i32 %2302(ptr noundef %115)
  %2304 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 5
  %2305 = load ptr, ptr %2304, align 8, !tbaa !163
  store ptr %2305, ptr %12, align 8, !tbaa !5
  %2306 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 7
  %2307 = load i32, ptr %2306, align 4, !tbaa !165
  store i32 %2307, ptr %13, align 4, !tbaa !9
  %2308 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %115, i32 0, i32 6
  %2309 = load i32, ptr %2308, align 8, !tbaa !164
  %2310 = load i32, ptr %13, align 4, !tbaa !9
  %2311 = sub nsw i32 %2310, 1
  %2312 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2309, i32 noundef %2311)
  store i32 %2312, ptr %103, align 4, !tbaa !9
  %2313 = load i32, ptr %103, align 4, !tbaa !9
  %2314 = load i32, ptr %13, align 4, !tbaa !9
  %2315 = icmp sle i32 %2313, %2314
  br i1 %2315, label %2316, label %2317

2316:                                             ; preds = %2287
  br label %2319

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

2318:                                             ; No predecessors!
  br label %2319

2319:                                             ; preds = %2318, %2316
  call void @llvm.lifetime.end.p0(i64 56, ptr %115) #14
  br label %2320

2320:                                             ; preds = %2319, %2284
  %2321 = load ptr, ptr %12, align 8, !tbaa !5
  %2322 = load ptr, ptr %102, align 8, !tbaa !5
  %2323 = load i32, ptr %103, align 4, !tbaa !9
  %2324 = add nsw i32 %2323, 1
  %2325 = load i32, ptr %13, align 4, !tbaa !9
  %2326 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2324, i32 noundef %2325)
  %2327 = sext i32 %2326 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2321, ptr noundef %2322, i64 noundef %2327)
  store i8 1, ptr %60, align 1, !tbaa !41
  br label %2328

2328:                                             ; preds = %2320, %2275
  %2329 = load ptr, ptr %43, align 8, !tbaa !5
  %2330 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2329, i32 0, i32 13
  store i32 0, ptr %2330, align 8, !tbaa !124
  %2331 = load ptr, ptr %43, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2331, i32 0, i32 14
  store ptr null, ptr %2332, align 8, !tbaa !125
  %2333 = load ptr, ptr %43, align 8, !tbaa !5
  %2334 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2333, i32 0, i32 15
  store ptr null, ptr %2334, 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 %2335

2335:                                             ; preds = %2328, %1890
  %2336 = load i8, ptr %51, align 1, !tbaa !41, !range !39, !noundef !40
  %2337 = trunc i8 %2336 to i1
  br i1 %2337, label %2338, label %2345

2338:                                             ; preds = %2335
  %2339 = load ptr, ptr %20, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiContext, ptr %2339, i32 0, i32 40
  %2341 = load i32, ptr %2340, align 8, !tbaa !93
  %2342 = load i32, ptr %29, align 4, !tbaa !9
  %2343 = icmp eq i32 %2341, %2342
  br i1 %2343, label %2344, label %2345

2344:                                             ; preds = %2338
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2345

2345:                                             ; preds = %2344, %2338, %2335
  %2346 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2347 = trunc i8 %2346 to i1
  br i1 %2347, label %2358, label %2348

2348:                                             ; preds = %2345
  %2349 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %2349, i32 noundef 1)
  %2350 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 4 %2350, i64 8, i1 false), !tbaa.struct !42
  %2351 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %117, ptr align 4 %2351, i64 8, i1 false), !tbaa.struct !42
  %2352 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2353 = load ptr, ptr %22, align 8, !tbaa !5
  %2354 = getelementptr inbounds %struct.ImGuiStyle, ptr %2353, i32 0, i32 12
  %2355 = load float, ptr %2354, align 4, !tbaa !83
  %2356 = load <2 x float>, ptr %116, align 4
  %2357 = load <2 x float>, ptr %117, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2356, <2 x float> %2357, i32 noundef %2352, i1 noundef zeroext true, float noundef %2355)
  br label %2358

2358:                                             ; preds = %2348, %2345
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #14
  %2359 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2360 = getelementptr inbounds %struct.ImVec2, ptr %2359, i32 0, i32 0
  %2361 = load float, ptr %2360, align 4, !tbaa !130
  %2362 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2363 = getelementptr inbounds %struct.ImVec2, ptr %2362, i32 0, i32 1
  %2364 = load float, ptr %2363, align 4, !tbaa !171
  %2365 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2366 = getelementptr inbounds %struct.ImVec2, ptr %2365, i32 0, i32 0
  %2367 = load float, ptr %2366, align 4, !tbaa !130
  %2368 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2369 = load float, ptr %2368, align 4, !tbaa !81
  %2370 = fadd float %2367, %2369
  %2371 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2372 = getelementptr inbounds %struct.ImVec2, ptr %2371, i32 0, i32 1
  %2373 = load float, ptr %2372, align 4, !tbaa !171
  %2374 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2375 = load float, ptr %2374, align 4, !tbaa !79
  %2376 = fadd float %2373, %2375
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %118, float noundef %2361, float noundef %2364, float noundef %2370, float noundef %2376)
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #14
  %2377 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2378 = trunc i8 %2377 to i1
  br i1 %2378, label %2379, label %2383

2379:                                             ; preds = %2358
  %2380 = load ptr, ptr %38, align 8, !tbaa !5
  %2381 = getelementptr inbounds %struct.ImGuiWindow, ptr %2380, i32 0, i32 50
  %2382 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2381, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %119, ptr align 8 %2382, i64 8, i1 false), !tbaa.struct !42
  br label %2388

2383:                                             ; preds = %2358
  %2384 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2385 = load ptr, ptr %22, align 8, !tbaa !5
  %2386 = getelementptr inbounds %struct.ImGuiStyle, ptr %2385, i32 0, i32 11
  %2387 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2384, ptr noundef nonnull align 4 dereferenceable(8) %2386)
  store <2 x float> %2387, ptr %119, align 4
  br label %2388

2388:                                             ; preds = %2383, %2379
  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
  %2389 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %2390 = trunc i8 %2389 to i1
  br i1 %2390, label %2391, label %2396

2391:                                             ; preds = %2388
  %2392 = load ptr, ptr %43, align 8, !tbaa !5
  %2393 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2392, i32 0, i32 4
  %2394 = getelementptr inbounds %struct.ImVector.22, ptr %2393, i32 0, i32 2
  %2395 = load ptr, ptr %2394, align 8, !tbaa !111
  br label %2398

2396:                                             ; preds = %2388
  %2397 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2398

2398:                                             ; preds = %2396, %2391
  %2399 = phi ptr [ %2395, %2391 ], [ %2397, %2396 ]
  store ptr %2399, 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
  %2400 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %2401 = trunc i8 %2400 to i1
  br i1 %2401, label %2402, label %2408

2402:                                             ; preds = %2398
  %2403 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2403, ptr %122, align 8, !tbaa !5
  %2404 = load ptr, ptr %11, align 8, !tbaa !5
  %2405 = load ptr, ptr %11, align 8, !tbaa !5
  %2406 = call i64 @strlen(ptr noundef %2405) #16
  %2407 = getelementptr inbounds i8, ptr %2404, i64 %2406
  store ptr %2407, ptr %123, align 8, !tbaa !5
  br label %2408

2408:                                             ; preds = %2402, %2398
  %2409 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2410 = trunc i8 %2409 to i1
  br i1 %2410, label %2414, label %2411

2411:                                             ; preds = %2408
  %2412 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %2413 = trunc i8 %2412 to i1
  br i1 %2413, label %2414, label %2960

2414:                                             ; preds = %2411, %2408
  %2415 = load ptr, ptr %43, align 8, !tbaa !5
  %2416 = icmp ne ptr %2415, null
  br i1 %2416, label %2417, label %2418

2417:                                             ; preds = %2414
  br label %2420

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

2419:                                             ; No predecessors!
  br label %2420

2420:                                             ; preds = %2419, %2417
  %2421 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %2422 = trunc i8 %2421 to i1
  br i1 %2422, label %2430, label %2423

2423:                                             ; preds = %2420
  %2424 = load ptr, ptr %122, align 8, !tbaa !5
  %2425 = load ptr, ptr %43, align 8, !tbaa !5
  %2426 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2425, i32 0, i32 2
  %2427 = load i32, ptr %2426, align 8, !tbaa !102
  %2428 = sext i32 %2427 to i64
  %2429 = getelementptr inbounds i8, ptr %2424, i64 %2428
  store ptr %2429, ptr %123, align 8, !tbaa !5
  br label %2430

2430:                                             ; preds = %2423, %2420
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #14
  %2431 = load ptr, ptr %43, align 8, !tbaa !5
  %2432 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2431, i32 0, i32 3
  %2433 = getelementptr inbounds %struct.ImVector.7, ptr %2432, i32 0, i32 2
  %2434 = load ptr, ptr %2433, align 8, !tbaa !100
  store ptr %2434, 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
  %2435 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2436 = trunc i8 %2435 to i1
  br i1 %2436, label %2437, label %2449

2437:                                             ; preds = %2430
  %2438 = load ptr, ptr %124, align 8, !tbaa !5
  %2439 = load ptr, ptr %43, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2439, i32 0, i32 9
  %2441 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2440, i32 0, i32 0
  %2442 = load i32, ptr %2441, align 4, !tbaa !167
  %2443 = sext i32 %2442 to i64
  %2444 = getelementptr inbounds i16, ptr %2438, i64 %2443
  %2445 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  store ptr %2444, ptr %2445, align 16, !tbaa !5
  %2446 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 -1, ptr %2446, align 4, !tbaa !9
  %2447 = load i32, ptr %129, align 4, !tbaa !9
  %2448 = add nsw i32 %2447, 1
  store i32 %2448, ptr %129, align 4, !tbaa !9
  br label %2449

2449:                                             ; preds = %2437, %2430
  %2450 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %2451 = trunc i8 %2450 to i1
  br i1 %2451, label %2452, label %2469

2452:                                             ; preds = %2449
  %2453 = load ptr, ptr %124, align 8, !tbaa !5
  %2454 = load ptr, ptr %43, align 8, !tbaa !5
  %2455 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2454, i32 0, i32 9
  %2456 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2455, i32 0, i32 1
  %2457 = load i32, ptr %2456, align 4, !tbaa !151
  %2458 = load ptr, ptr %43, align 8, !tbaa !5
  %2459 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2458, i32 0, i32 9
  %2460 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2459, i32 0, i32 2
  %2461 = load i32, ptr %2460, align 4, !tbaa !152
  %2462 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2457, i32 noundef %2461)
  %2463 = sext i32 %2462 to i64
  %2464 = getelementptr inbounds i16, ptr %2453, i64 %2463
  %2465 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  store ptr %2464, ptr %2465, align 8, !tbaa !5
  %2466 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 -1, ptr %2466, align 4, !tbaa !9
  %2467 = load i32, ptr %129, align 4, !tbaa !9
  %2468 = add nsw i32 %2467, 1
  store i32 %2468, ptr %129, align 4, !tbaa !9
  br label %2469

2469:                                             ; preds = %2452, %2449
  %2470 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2471 = trunc i8 %2470 to i1
  %2472 = zext i1 %2471 to i64
  %2473 = select i1 %2471, i32 1, i32 0
  %2474 = load i32, ptr %129, align 4, !tbaa !9
  %2475 = add nsw i32 %2474, %2473
  store i32 %2475, 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
  %2476 = load ptr, ptr %124, align 8, !tbaa !5
  store ptr %2476, ptr %131, align 8, !tbaa !5
  br label %2477

2477:                                             ; preds = %2526, %2469
  %2478 = load ptr, ptr %131, align 8, !tbaa !5
  %2479 = load i16, ptr %2478, align 2, !tbaa !142
  %2480 = zext i16 %2479 to i32
  %2481 = icmp ne i32 %2480, 0
  br i1 %2481, label %2483, label %2482

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

2483:                                             ; preds = %2477
  %2484 = load ptr, ptr %131, align 8, !tbaa !5
  %2485 = load i16, ptr %2484, align 2, !tbaa !142
  %2486 = zext i16 %2485 to i32
  %2487 = icmp eq i32 %2486, 10
  br i1 %2487, label %2488, label %2525

2488:                                             ; preds = %2483
  %2489 = load i32, ptr %130, align 4, !tbaa !9
  %2490 = add nsw i32 %2489, 1
  store i32 %2490, ptr %130, align 4, !tbaa !9
  %2491 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2492 = load i32, ptr %2491, align 4, !tbaa !9
  %2493 = icmp eq i32 %2492, -1
  br i1 %2493, label %2494, label %2507

2494:                                             ; preds = %2488
  %2495 = load ptr, ptr %131, align 8, !tbaa !5
  %2496 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2497 = load ptr, ptr %2496, align 16, !tbaa !5
  %2498 = icmp uge ptr %2495, %2497
  br i1 %2498, label %2499, label %2507

2499:                                             ; preds = %2494
  %2500 = load i32, ptr %130, align 4, !tbaa !9
  %2501 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 %2500, ptr %2501, align 4, !tbaa !9
  %2502 = load i32, ptr %129, align 4, !tbaa !9
  %2503 = add nsw i32 %2502, -1
  store i32 %2503, ptr %129, align 4, !tbaa !9
  %2504 = icmp sle i32 %2503, 0
  br i1 %2504, label %2505, label %2506

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

2506:                                             ; preds = %2499
  br label %2507

2507:                                             ; preds = %2506, %2494, %2488
  %2508 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2509 = load i32, ptr %2508, align 4, !tbaa !9
  %2510 = icmp eq i32 %2509, -1
  br i1 %2510, label %2511, label %2524

2511:                                             ; preds = %2507
  %2512 = load ptr, ptr %131, align 8, !tbaa !5
  %2513 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2514 = load ptr, ptr %2513, align 8, !tbaa !5
  %2515 = icmp uge ptr %2512, %2514
  br i1 %2515, label %2516, label %2524

2516:                                             ; preds = %2511
  %2517 = load i32, ptr %130, align 4, !tbaa !9
  %2518 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 %2517, ptr %2518, align 4, !tbaa !9
  %2519 = load i32, ptr %129, align 4, !tbaa !9
  %2520 = add nsw i32 %2519, -1
  store i32 %2520, ptr %129, align 4, !tbaa !9
  %2521 = icmp sle i32 %2520, 0
  br i1 %2521, label %2522, label %2523

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

2523:                                             ; preds = %2516
  br label %2524

2524:                                             ; preds = %2523, %2511, %2507
  br label %2525

2525:                                             ; preds = %2524, %2483
  br label %2526

2526:                                             ; preds = %2525
  %2527 = load ptr, ptr %131, align 8, !tbaa !5
  %2528 = getelementptr inbounds i16, ptr %2527, i32 1
  store ptr %2528, ptr %131, align 8, !tbaa !5
  br label %2477, !llvm.loop !172

2529:                                             ; preds = %2522, %2505, %2482
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #14
  br label %2530

2530:                                             ; preds = %2529
  %2531 = load i32, ptr %130, align 4, !tbaa !9
  %2532 = add nsw i32 %2531, 1
  store i32 %2532, ptr %130, align 4, !tbaa !9
  %2533 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2534 = load i32, ptr %2533, align 4, !tbaa !9
  %2535 = icmp eq i32 %2534, -1
  br i1 %2535, label %2536, label %2539

2536:                                             ; preds = %2530
  %2537 = load i32, ptr %130, align 4, !tbaa !9
  %2538 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  store i32 %2537, ptr %2538, align 4, !tbaa !9
  br label %2539

2539:                                             ; preds = %2536, %2530
  %2540 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2541 = load i32, ptr %2540, align 4, !tbaa !9
  %2542 = icmp eq i32 %2541, -1
  br i1 %2542, label %2543, label %2546

2543:                                             ; preds = %2539
  %2544 = load i32, ptr %130, align 4, !tbaa !9
  %2545 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  store i32 %2544, ptr %2545, align 4, !tbaa !9
  br label %2546

2546:                                             ; preds = %2543, %2539
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #14
  %2547 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2548 = load ptr, ptr %2547, align 16, !tbaa !5
  %2549 = load ptr, ptr %124, align 8, !tbaa !5
  %2550 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2548, ptr noundef %2549)
  %2551 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 0
  %2552 = load ptr, ptr %2551, align 16, !tbaa !5
  %2553 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2550, ptr noundef %2552, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2553, ptr %132, align 4
  %2554 = getelementptr inbounds %struct.ImVec2, ptr %132, i32 0, i32 0
  %2555 = load float, ptr %2554, align 4, !tbaa !81
  %2556 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  store float %2555, ptr %2556, align 4, !tbaa !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #14
  %2557 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 0
  %2558 = load i32, ptr %2557, align 4, !tbaa !9
  %2559 = sitofp i32 %2558 to float
  %2560 = load ptr, ptr %20, align 8, !tbaa !5
  %2561 = getelementptr inbounds %struct.ImGuiContext, ptr %2560, i32 0, i32 6
  %2562 = load float, ptr %2561, align 8, !tbaa !44
  %2563 = fmul float %2559, %2562
  %2564 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  store float %2563, ptr %2564, align 4, !tbaa !79
  %2565 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2566 = load i32, ptr %2565, align 4, !tbaa !9
  %2567 = icmp sge i32 %2566, 0
  br i1 %2567, label %2568, label %2587

2568:                                             ; preds = %2546
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #14
  %2569 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2570 = load ptr, ptr %2569, align 8, !tbaa !5
  %2571 = load ptr, ptr %124, align 8, !tbaa !5
  %2572 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2570, ptr noundef %2571)
  %2573 = getelementptr inbounds [2 x ptr], ptr %127, i64 0, i64 1
  %2574 = load ptr, ptr %2573, align 8, !tbaa !5
  %2575 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2572, ptr noundef %2574, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2575, ptr %133, align 4
  %2576 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 0
  %2577 = load float, ptr %2576, align 4, !tbaa !81
  %2578 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 0
  store float %2577, ptr %2578, align 4, !tbaa !81
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #14
  %2579 = getelementptr inbounds [2 x i32], ptr %128, i64 0, i64 1
  %2580 = load i32, ptr %2579, align 4, !tbaa !9
  %2581 = sitofp i32 %2580 to float
  %2582 = load ptr, ptr %20, align 8, !tbaa !5
  %2583 = getelementptr inbounds %struct.ImGuiContext, ptr %2582, i32 0, i32 6
  %2584 = load float, ptr %2583, align 8, !tbaa !44
  %2585 = fmul float %2581, %2584
  %2586 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 1
  store float %2585, ptr %2586, align 4, !tbaa !79
  br label %2587

2587:                                             ; preds = %2568, %2546
  %2588 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2589 = trunc i8 %2588 to i1
  br i1 %2589, label %2590, label %2599

2590:                                             ; preds = %2587
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #14
  %2591 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2592 = load float, ptr %2591, align 4, !tbaa !81
  %2593 = load i32, ptr %130, align 4, !tbaa !9
  %2594 = sitofp i32 %2593 to float
  %2595 = load ptr, ptr %20, align 8, !tbaa !5
  %2596 = getelementptr inbounds %struct.ImGuiContext, ptr %2595, i32 0, i32 6
  %2597 = load float, ptr %2596, align 8, !tbaa !44
  %2598 = fmul float %2594, %2597
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %134, float noundef %2592, float noundef %2598)
  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 %2599

2599:                                             ; preds = %2590, %2587
  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
  %2600 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2601 = trunc i8 %2600 to i1
  br i1 %2601, label %2602, label %2714

2602:                                             ; preds = %2599
  %2603 = load ptr, ptr %43, align 8, !tbaa !5
  %2604 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2603, i32 0, i32 11
  %2605 = load i8, ptr %2604, align 4, !tbaa !138, !range !39, !noundef !40
  %2606 = trunc i8 %2605 to i1
  br i1 %2606, label %2607, label %2714

2607:                                             ; preds = %2602
  %2608 = load i32, ptr %15, align 4, !tbaa !9
  %2609 = and i32 %2608, 4096
  %2610 = icmp ne i32 %2609, 0
  br i1 %2610, label %2655, label %2611

2611:                                             ; preds = %2607
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #14
  %2612 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2613 = load float, ptr %2612, align 4, !tbaa !81
  %2614 = fmul float %2613, 2.500000e-01
  store float %2614, ptr %135, align 4, !tbaa !43
  %2615 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2616 = load float, ptr %2615, align 4, !tbaa !81
  %2617 = load ptr, ptr %43, align 8, !tbaa !5
  %2618 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2617, i32 0, i32 8
  %2619 = load float, ptr %2618, align 8, !tbaa !104
  %2620 = fcmp olt float %2616, %2619
  br i1 %2620, label %2621, label %2631

2621:                                             ; preds = %2611
  %2622 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2623 = load float, ptr %2622, align 4, !tbaa !81
  %2624 = load float, ptr %135, align 4, !tbaa !43
  %2625 = fsub float %2623, %2624
  %2626 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2625)
  %2627 = fptosi float %2626 to i32
  %2628 = sitofp i32 %2627 to float
  %2629 = load ptr, ptr %43, align 8, !tbaa !5
  %2630 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2629, i32 0, i32 8
  store float %2628, ptr %2630, align 8, !tbaa !104
  br label %2654

2631:                                             ; preds = %2611
  %2632 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2633 = load float, ptr %2632, align 4, !tbaa !81
  %2634 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2635 = load float, ptr %2634, align 4, !tbaa !81
  %2636 = fsub float %2633, %2635
  %2637 = load ptr, ptr %43, align 8, !tbaa !5
  %2638 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2637, i32 0, i32 8
  %2639 = load float, ptr %2638, align 8, !tbaa !104
  %2640 = fcmp oge float %2636, %2639
  br i1 %2640, label %2641, label %2653

2641:                                             ; preds = %2631
  %2642 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 0
  %2643 = load float, ptr %2642, align 4, !tbaa !81
  %2644 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2645 = load float, ptr %2644, align 4, !tbaa !81
  %2646 = fsub float %2643, %2645
  %2647 = load float, ptr %135, align 4, !tbaa !43
  %2648 = fadd float %2646, %2647
  %2649 = fptosi float %2648 to i32
  %2650 = sitofp i32 %2649 to float
  %2651 = load ptr, ptr %43, align 8, !tbaa !5
  %2652 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2651, i32 0, i32 8
  store float %2650, ptr %2652, align 8, !tbaa !104
  br label %2653

2653:                                             ; preds = %2641, %2631
  br label %2654

2654:                                             ; preds = %2653, %2621
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #14
  br label %2658

2655:                                             ; preds = %2607
  %2656 = load ptr, ptr %43, align 8, !tbaa !5
  %2657 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2656, i32 0, i32 8
  store float 0.000000e+00, ptr %2657, align 8, !tbaa !104
  br label %2658

2658:                                             ; preds = %2655, %2654
  %2659 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2660 = trunc i8 %2659 to i1
  br i1 %2660, label %2661, label %2711

2661:                                             ; preds = %2658
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #14
  %2662 = load ptr, ptr %38, align 8, !tbaa !5
  %2663 = getelementptr inbounds %struct.ImGuiWindow, ptr %2662, i32 0, i32 14
  %2664 = getelementptr inbounds %struct.ImVec2, ptr %2663, i32 0, i32 1
  %2665 = load float, ptr %2664, align 4, !tbaa !149
  store float %2665, ptr %136, align 4, !tbaa !43
  %2666 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2667 = load float, ptr %2666, align 4, !tbaa !79
  %2668 = load ptr, ptr %20, align 8, !tbaa !5
  %2669 = getelementptr inbounds %struct.ImGuiContext, ptr %2668, i32 0, i32 6
  %2670 = load float, ptr %2669, align 8, !tbaa !44
  %2671 = fsub float %2667, %2670
  %2672 = load float, ptr %136, align 4, !tbaa !43
  %2673 = fcmp olt float %2671, %2672
  br i1 %2673, label %2674, label %2682

2674:                                             ; preds = %2661
  %2675 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2676 = load float, ptr %2675, align 4, !tbaa !79
  %2677 = load ptr, ptr %20, align 8, !tbaa !5
  %2678 = getelementptr inbounds %struct.ImGuiContext, ptr %2677, i32 0, i32 6
  %2679 = load float, ptr %2678, align 8, !tbaa !44
  %2680 = fsub float %2676, %2679
  %2681 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2680)
  store float %2681, ptr %136, align 4, !tbaa !43
  br label %2697

2682:                                             ; preds = %2661
  %2683 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2684 = load float, ptr %2683, align 4, !tbaa !79
  %2685 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2686 = load float, ptr %2685, align 4, !tbaa !79
  %2687 = fsub float %2684, %2686
  %2688 = load float, ptr %136, align 4, !tbaa !43
  %2689 = fcmp oge float %2687, %2688
  br i1 %2689, label %2690, label %2696

2690:                                             ; preds = %2682
  %2691 = getelementptr inbounds %struct.ImVec2, ptr %125, i32 0, i32 1
  %2692 = load float, ptr %2691, align 4, !tbaa !79
  %2693 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2694 = load float, ptr %2693, align 4, !tbaa !79
  %2695 = fsub float %2692, %2694
  store float %2695, ptr %136, align 4, !tbaa !43
  br label %2696

2696:                                             ; preds = %2690, %2682
  br label %2697

2697:                                             ; preds = %2696, %2674
  %2698 = load ptr, ptr %38, align 8, !tbaa !5
  %2699 = getelementptr inbounds %struct.ImGuiWindow, ptr %2698, i32 0, i32 14
  %2700 = getelementptr inbounds %struct.ImVec2, ptr %2699, i32 0, i32 1
  %2701 = load float, ptr %2700, align 4, !tbaa !149
  %2702 = load float, ptr %136, align 4, !tbaa !43
  %2703 = fsub float %2701, %2702
  %2704 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 1
  %2705 = load float, ptr %2704, align 4, !tbaa !79
  %2706 = fadd float %2705, %2703
  store float %2706, ptr %2704, align 4, !tbaa !79
  %2707 = load float, ptr %136, align 4, !tbaa !43
  %2708 = load ptr, ptr %38, align 8, !tbaa !5
  %2709 = getelementptr inbounds %struct.ImGuiWindow, ptr %2708, i32 0, i32 14
  %2710 = getelementptr inbounds %struct.ImVec2, ptr %2709, i32 0, i32 1
  store float %2707, ptr %2710, align 4, !tbaa !149
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #14
  br label %2711

2711:                                             ; preds = %2697, %2658
  %2712 = load ptr, ptr %43, align 8, !tbaa !5
  %2713 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2712, i32 0, i32 11
  store i8 0, ptr %2713, align 4, !tbaa !138
  br label %2714

2714:                                             ; preds = %2711, %2602, %2599
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #14
  %2715 = load ptr, ptr %43, align 8, !tbaa !5
  %2716 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2715, i32 0, i32 8
  %2717 = load float, ptr %2716, align 8, !tbaa !104
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %137, float noundef %2717, float noundef 0.000000e+00)
  %2718 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %2719 = trunc i8 %2718 to i1
  br i1 %2719, label %2720, label %2848

2720:                                             ; preds = %2714
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #14
  %2721 = load ptr, ptr %124, align 8, !tbaa !5
  %2722 = load ptr, ptr %43, align 8, !tbaa !5
  %2723 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2722, i32 0, i32 9
  %2724 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2723, i32 0, i32 1
  %2725 = load i32, ptr %2724, align 4, !tbaa !151
  %2726 = load ptr, ptr %43, align 8, !tbaa !5
  %2727 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2726, i32 0, i32 9
  %2728 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2727, i32 0, i32 2
  %2729 = load i32, ptr %2728, align 4, !tbaa !152
  %2730 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2725, i32 noundef %2729)
  %2731 = sext i32 %2730 to i64
  %2732 = getelementptr inbounds i16, ptr %2721, i64 %2731
  store ptr %2732, ptr %138, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #14
  %2733 = load ptr, ptr %124, align 8, !tbaa !5
  %2734 = load ptr, ptr %43, align 8, !tbaa !5
  %2735 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2734, i32 0, i32 9
  %2736 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2735, i32 0, i32 1
  %2737 = load i32, ptr %2736, align 4, !tbaa !151
  %2738 = load ptr, ptr %43, align 8, !tbaa !5
  %2739 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2738, i32 0, i32 9
  %2740 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2739, i32 0, i32 2
  %2741 = load i32, ptr %2740, align 4, !tbaa !152
  %2742 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2737, i32 noundef %2741)
  %2743 = sext i32 %2742 to i64
  %2744 = getelementptr inbounds i16, ptr %2733, i64 %2743
  store ptr %2744, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #14
  %2745 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2746 = trunc i8 %2745 to i1
  %2747 = zext i1 %2746 to i64
  %2748 = select i1 %2746, float 1.000000e+00, float 0x3FE3333340000000
  %2749 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 42, float noundef %2748)
  store i32 %2749, ptr %140, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #14
  %2750 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2751 = trunc i8 %2750 to i1
  %2752 = zext i1 %2751 to i64
  %2753 = select i1 %2751, float 0.000000e+00, float -1.000000e+00
  store float %2753, ptr %141, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #14
  %2754 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2755 = trunc i8 %2754 to i1
  %2756 = zext i1 %2755 to i64
  %2757 = select i1 %2755, float 0.000000e+00, float 2.000000e+00
  store float %2757, 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
  %2758 = 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> %2758, ptr %144, align 4
  %2759 = 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> %2759, 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
  %2760 = load ptr, ptr %138, align 8, !tbaa !5
  store ptr %2760, ptr %145, align 8, !tbaa !5
  br label %2761

2761:                                             ; preds = %2833, %2720
  %2762 = load ptr, ptr %145, align 8, !tbaa !5
  %2763 = load ptr, ptr %139, align 8, !tbaa !5
  %2764 = icmp ult ptr %2762, %2763
  br i1 %2764, label %2766, label %2765

2765:                                             ; preds = %2761
  store i32 10, ptr %19, align 4
  br label %2846

2766:                                             ; preds = %2761
  %2767 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2768 = load float, ptr %2767, align 4, !tbaa !79
  %2769 = getelementptr inbounds %struct.ImVec4, ptr %118, i32 0, i32 3
  %2770 = load float, ptr %2769, align 4, !tbaa !173
  %2771 = load ptr, ptr %20, align 8, !tbaa !5
  %2772 = getelementptr inbounds %struct.ImGuiContext, ptr %2771, i32 0, i32 6
  %2773 = load float, ptr %2772, align 8, !tbaa !44
  %2774 = fadd float %2770, %2773
  %2775 = fcmp ogt float %2768, %2774
  br i1 %2775, label %2776, label %2777

2776:                                             ; preds = %2766
  store i32 10, ptr %19, align 4
  br label %2846

2777:                                             ; preds = %2766
  %2778 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2779 = load float, ptr %2778, align 4, !tbaa !79
  %2780 = getelementptr inbounds %struct.ImVec4, ptr %118, i32 0, i32 1
  %2781 = load float, ptr %2780, align 4, !tbaa !174
  %2782 = fcmp olt float %2779, %2781
  br i1 %2782, label %2783, label %2797

2783:                                             ; preds = %2777
  br label %2784

2784:                                             ; preds = %2795, %2783
  %2785 = load ptr, ptr %145, align 8, !tbaa !5
  %2786 = load ptr, ptr %139, align 8, !tbaa !5
  %2787 = icmp ult ptr %2785, %2786
  br i1 %2787, label %2788, label %2796

2788:                                             ; preds = %2784
  %2789 = load ptr, ptr %145, align 8, !tbaa !5
  %2790 = getelementptr inbounds i16, ptr %2789, i32 1
  store ptr %2790, ptr %145, align 8, !tbaa !5
  %2791 = load i16, ptr %2789, align 2, !tbaa !142
  %2792 = zext i16 %2791 to i32
  %2793 = icmp eq i32 %2792, 10
  br i1 %2793, label %2794, label %2795

2794:                                             ; preds = %2788
  br label %2796

2795:                                             ; preds = %2788
  br label %2784, !llvm.loop !175

2796:                                             ; preds = %2794, %2784
  br label %2833

2797:                                             ; preds = %2777
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #14
  %2798 = load ptr, ptr %145, align 8, !tbaa !5
  %2799 = load ptr, ptr %139, align 8, !tbaa !5
  %2800 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2798, ptr noundef %2799, ptr noundef %145, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %2800, ptr %146, align 4
  %2801 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %2802 = load float, ptr %2801, align 4, !tbaa !81
  %2803 = fcmp ole float %2802, 0.000000e+00
  br i1 %2803, label %2804, label %2813

2804:                                             ; preds = %2797
  %2805 = load ptr, ptr %20, align 8, !tbaa !5
  %2806 = getelementptr inbounds %struct.ImGuiContext, ptr %2805, i32 0, i32 5
  %2807 = load ptr, ptr %2806, align 8, !tbaa !113
  %2808 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114) %2807, i16 noundef zeroext 32)
  %2809 = fmul float %2808, 5.000000e-01
  %2810 = fptosi float %2809 to i32
  %2811 = sitofp i32 %2810 to float
  %2812 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  store float %2811, ptr %2812, align 4, !tbaa !81
  br label %2813

2813:                                             ; preds = %2804, %2797
  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
  %2814 = load float, ptr %141, align 4, !tbaa !43
  %2815 = load ptr, ptr %20, align 8, !tbaa !5
  %2816 = getelementptr inbounds %struct.ImGuiContext, ptr %2815, i32 0, i32 6
  %2817 = load float, ptr %2816, align 8, !tbaa !44
  %2818 = fsub float %2814, %2817
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %149, float noundef 0.000000e+00, float noundef %2818)
  %2819 = 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> %2819, 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
  %2820 = getelementptr inbounds %struct.ImVec2, ptr %146, i32 0, i32 0
  %2821 = load float, ptr %2820, align 4, !tbaa !81
  %2822 = load float, ptr %142, align 4, !tbaa !43
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %151, float noundef %2821, float noundef %2822)
  %2823 = 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> %2823, 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)
  %2824 = 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 %2824, label %2825, label %2832

2825:                                             ; preds = %2813
  %2826 = load ptr, ptr %38, align 8, !tbaa !5
  %2827 = getelementptr inbounds %struct.ImGuiWindow, ptr %2826, i32 0, i32 65
  %2828 = load ptr, ptr %2827, align 8, !tbaa !176
  %2829 = getelementptr inbounds %struct.ImRect, ptr %147, i32 0, i32 0
  %2830 = getelementptr inbounds %struct.ImRect, ptr %147, i32 0, i32 1
  %2831 = load i32, ptr %140, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %2828, ptr noundef nonnull align 4 dereferenceable(8) %2829, ptr noundef nonnull align 4 dereferenceable(8) %2830, i32 noundef %2831, float noundef 0.000000e+00, i32 noundef 15)
  br label %2832

2832:                                             ; preds = %2825, %2813
  call void @llvm.lifetime.end.p0(i64 16, ptr %147) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #14
  br label %2833

2833:                                             ; preds = %2832, %2796
  %2834 = getelementptr inbounds %struct.ImVec2, ptr %119, i32 0, i32 0
  %2835 = load float, ptr %2834, align 4, !tbaa !81
  %2836 = getelementptr inbounds %struct.ImVec2, ptr %137, i32 0, i32 0
  %2837 = load float, ptr %2836, align 4, !tbaa !81
  %2838 = fsub float %2835, %2837
  %2839 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 0
  store float %2838, ptr %2839, align 4, !tbaa !81
  %2840 = load ptr, ptr %20, align 8, !tbaa !5
  %2841 = getelementptr inbounds %struct.ImGuiContext, ptr %2840, i32 0, i32 6
  %2842 = load float, ptr %2841, align 8, !tbaa !44
  %2843 = getelementptr inbounds %struct.ImVec2, ptr %143, i32 0, i32 1
  %2844 = load float, ptr %2843, align 4, !tbaa !79
  %2845 = fadd float %2844, %2842
  store float %2845, ptr %2843, align 4, !tbaa !79
  br label %2761, !llvm.loop !177

2846:                                             ; preds = %2776, %2765
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #14
  br label %2847

2847:                                             ; preds = %2846
  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 %2848

2848:                                             ; preds = %2847, %2714
  %2849 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2850 = trunc i8 %2849 to i1
  br i1 %2850, label %2858, label %2851

2851:                                             ; preds = %2848
  %2852 = load ptr, ptr %123, align 8, !tbaa !5
  %2853 = load ptr, ptr %122, align 8, !tbaa !5
  %2854 = ptrtoint ptr %2852 to i64
  %2855 = ptrtoint ptr %2853 to i64
  %2856 = sub i64 %2854, %2855
  %2857 = icmp slt i64 %2856, 2097152
  br i1 %2857, label %2858, label %2883

2858:                                             ; preds = %2851, %2848
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #14
  %2859 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %2860 = trunc i8 %2859 to i1
  %2861 = zext i1 %2860 to i64
  %2862 = select i1 %2860, i32 1, i32 0
  %2863 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %2862, float noundef 1.000000e+00)
  store i32 %2863, ptr %154, align 4, !tbaa !9
  %2864 = load ptr, ptr %38, align 8, !tbaa !5
  %2865 = getelementptr inbounds %struct.ImGuiWindow, ptr %2864, i32 0, i32 65
  %2866 = load ptr, ptr %2865, align 8, !tbaa !176
  %2867 = load ptr, ptr %20, align 8, !tbaa !5
  %2868 = getelementptr inbounds %struct.ImGuiContext, ptr %2867, i32 0, i32 5
  %2869 = load ptr, ptr %2868, align 8, !tbaa !113
  %2870 = load ptr, ptr %20, align 8, !tbaa !5
  %2871 = getelementptr inbounds %struct.ImGuiContext, ptr %2870, i32 0, i32 6
  %2872 = load float, ptr %2871, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #14
  %2873 = 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> %2873, ptr %155, align 4
  %2874 = load i32, ptr %154, align 4, !tbaa !9
  %2875 = load ptr, ptr %122, align 8, !tbaa !5
  %2876 = load ptr, ptr %123, align 8, !tbaa !5
  %2877 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2878 = trunc i8 %2877 to i1
  br i1 %2878, label %2879, label %2880

2879:                                             ; preds = %2858
  br label %2881

2880:                                             ; preds = %2858
  br label %2881

2881:                                             ; preds = %2880, %2879
  %2882 = phi ptr [ null, %2879 ], [ %118, %2880 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %2866, ptr noundef %2869, float noundef %2872, ptr noundef nonnull align 4 dereferenceable(8) %155, i32 noundef %2874, ptr noundef %2875, ptr noundef %2876, float noundef 0.000000e+00, ptr noundef %2882)
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #14
  br label %2883

2883:                                             ; preds = %2881, %2851
  %2884 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2885 = trunc i8 %2884 to i1
  br i1 %2885, label %2886, label %2959

2886:                                             ; preds = %2883
  %2887 = load ptr, ptr %21, align 8, !tbaa !5
  %2888 = getelementptr inbounds %struct.ImGuiIO, ptr %2887, i32 0, i32 3
  %2889 = load float, ptr %2888, align 8, !tbaa !178
  %2890 = load ptr, ptr %43, align 8, !tbaa !5
  %2891 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2890, i32 0, i32 10
  %2892 = load float, ptr %2891, align 8, !tbaa !179
  %2893 = fadd float %2892, %2889
  store float %2893, ptr %2891, align 8, !tbaa !179
  call void @llvm.lifetime.start.p0(i64 1, ptr %156) #14
  %2894 = load ptr, ptr %20, align 8, !tbaa !5
  %2895 = getelementptr inbounds %struct.ImGuiContext, ptr %2894, i32 0, i32 3
  %2896 = getelementptr inbounds %struct.ImGuiIO, ptr %2895, i32 0, i32 21
  %2897 = load i8, ptr %2896, align 2, !tbaa !180, !range !39, !noundef !40
  %2898 = trunc i8 %2897 to i1
  br i1 %2898, label %2899, label %2910

2899:                                             ; preds = %2886
  %2900 = load ptr, ptr %43, align 8, !tbaa !5
  %2901 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2900, i32 0, i32 10
  %2902 = load float, ptr %2901, align 8, !tbaa !179
  %2903 = fcmp ole float %2902, 0.000000e+00
  br i1 %2903, label %2910, label %2904

2904:                                             ; preds = %2899
  %2905 = load ptr, ptr %43, align 8, !tbaa !5
  %2906 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2905, i32 0, i32 10
  %2907 = load float, ptr %2906, align 8, !tbaa !179
  %2908 = call float @fmodf(float noundef %2907, float noundef 0x3FF3333340000000) #14
  %2909 = fcmp ole float %2908, 0x3FE99999A0000000
  br label %2910

2910:                                             ; preds = %2904, %2899, %2886
  %2911 = phi i1 [ true, %2899 ], [ true, %2886 ], [ %2909, %2904 ]
  %2912 = zext i1 %2911 to i8
  store i8 %2912, 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
  %2913 = 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> %2913, ptr %158, align 4
  %2914 = 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> %2914, 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
  %2915 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2916 = load float, ptr %2915, align 4, !tbaa !81
  %2917 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2918 = load float, ptr %2917, align 4, !tbaa !79
  %2919 = load ptr, ptr %20, align 8, !tbaa !5
  %2920 = getelementptr inbounds %struct.ImGuiContext, ptr %2919, i32 0, i32 6
  %2921 = load float, ptr %2920, align 8, !tbaa !44
  %2922 = fsub float %2918, %2921
  %2923 = fadd float %2922, 5.000000e-01
  %2924 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2925 = load float, ptr %2924, align 4, !tbaa !81
  %2926 = fadd float %2925, 1.000000e+00
  %2927 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2928 = load float, ptr %2927, align 4, !tbaa !79
  %2929 = fsub float %2928, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %159, float noundef %2916, float noundef %2923, float noundef %2926, float noundef %2929)
  %2930 = load i8, ptr %156, align 1, !tbaa !41, !range !39, !noundef !40
  %2931 = trunc i8 %2930 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #14
  br i1 %2931, label %2932, label %2934

2932:                                             ; preds = %2910
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %160, ptr noundef nonnull align 4 dereferenceable(16) %118)
  %2933 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %159, ptr noundef nonnull align 4 dereferenceable(16) %160)
  br label %2934

2934:                                             ; preds = %2932, %2910
  %2935 = phi i1 [ false, %2910 ], [ %2933, %2932 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #14
  br i1 %2935, label %2936, label %2943

2936:                                             ; preds = %2934
  %2937 = load ptr, ptr %38, align 8, !tbaa !5
  %2938 = getelementptr inbounds %struct.ImGuiWindow, ptr %2937, i32 0, i32 65
  %2939 = load ptr, ptr %2938, align 8, !tbaa !176
  %2940 = getelementptr inbounds %struct.ImRect, ptr %159, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #14
  %2941 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %159)
  store <2 x float> %2941, ptr %161, align 4
  %2942 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %2939, ptr noundef nonnull align 4 dereferenceable(8) %2940, ptr noundef nonnull align 4 dereferenceable(8) %161, i32 noundef %2942, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #14
  br label %2943

2943:                                             ; preds = %2936, %2934
  %2944 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %2945 = trunc i8 %2944 to i1
  br i1 %2945, label %2958, label %2946

2946:                                             ; preds = %2943
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #14
  %2947 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 0
  %2948 = load float, ptr %2947, align 4, !tbaa !81
  %2949 = fsub float %2948, 1.000000e+00
  %2950 = getelementptr inbounds %struct.ImVec2, ptr %157, i32 0, i32 1
  %2951 = load float, ptr %2950, align 4, !tbaa !79
  %2952 = load ptr, ptr %20, align 8, !tbaa !5
  %2953 = getelementptr inbounds %struct.ImGuiContext, ptr %2952, i32 0, i32 6
  %2954 = load float, ptr %2953, align 8, !tbaa !44
  %2955 = fsub float %2951, %2954
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %162, float noundef %2949, float noundef %2955)
  %2956 = load ptr, ptr %20, align 8, !tbaa !5
  %2957 = getelementptr inbounds %struct.ImGuiContext, ptr %2956, i32 0, i32 178
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2957, ptr align 4 %162, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #14
  br label %2958

2958:                                             ; preds = %2946, %2943
  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 %2959

2959:                                             ; preds = %2958, %2883
  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 %3034

2960:                                             ; preds = %2411
  %2961 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2962 = trunc i8 %2961 to i1
  br i1 %2962, label %2963, label %2973

2963:                                             ; preds = %2960
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #14
  %2964 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2965 = load float, ptr %2964, align 4, !tbaa !81
  %2966 = load ptr, ptr %122, align 8, !tbaa !5
  %2967 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %2966, ptr noundef %123)
  %2968 = sitofp i32 %2967 to float
  %2969 = load ptr, ptr %20, align 8, !tbaa !5
  %2970 = getelementptr inbounds %struct.ImGuiContext, ptr %2969, i32 0, i32 6
  %2971 = load float, ptr %2970, align 8, !tbaa !44
  %2972 = fmul float %2968, %2971
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %163, float noundef %2965, float noundef %2972)
  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 %2999

2973:                                             ; preds = %2960
  %2974 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %2975 = trunc i8 %2974 to i1
  br i1 %2975, label %2989, label %2976

2976:                                             ; preds = %2973
  %2977 = load ptr, ptr %20, align 8, !tbaa !5
  %2978 = getelementptr inbounds %struct.ImGuiContext, ptr %2977, i32 0, i32 40
  %2979 = load i32, ptr %2978, align 8, !tbaa !93
  %2980 = load i32, ptr %29, align 4, !tbaa !9
  %2981 = icmp eq i32 %2979, %2980
  br i1 %2981, label %2982, label %2989

2982:                                             ; preds = %2976
  %2983 = load ptr, ptr %122, align 8, !tbaa !5
  %2984 = load ptr, ptr %43, align 8, !tbaa !5
  %2985 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2984, i32 0, i32 2
  %2986 = load i32, ptr %2985, align 8, !tbaa !102
  %2987 = sext i32 %2986 to i64
  %2988 = getelementptr inbounds i8, ptr %2983, i64 %2987
  store ptr %2988, ptr %123, align 8, !tbaa !5
  br label %2998

2989:                                             ; preds = %2976, %2973
  %2990 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %2991 = trunc i8 %2990 to i1
  br i1 %2991, label %2997, label %2992

2992:                                             ; preds = %2989
  %2993 = load ptr, ptr %122, align 8, !tbaa !5
  %2994 = load ptr, ptr %122, align 8, !tbaa !5
  %2995 = call i64 @strlen(ptr noundef %2994) #16
  %2996 = getelementptr inbounds i8, ptr %2993, i64 %2995
  store ptr %2996, ptr %123, align 8, !tbaa !5
  br label %2997

2997:                                             ; preds = %2992, %2989
  br label %2998

2998:                                             ; preds = %2997, %2982
  br label %2999

2999:                                             ; preds = %2998, %2963
  %3000 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3001 = trunc i8 %3000 to i1
  br i1 %3001, label %3009, label %3002

3002:                                             ; preds = %2999
  %3003 = load ptr, ptr %123, align 8, !tbaa !5
  %3004 = load ptr, ptr %122, align 8, !tbaa !5
  %3005 = ptrtoint ptr %3003 to i64
  %3006 = ptrtoint ptr %3004 to i64
  %3007 = sub i64 %3005, %3006
  %3008 = icmp slt i64 %3007, 2097152
  br i1 %3008, label %3009, label %3033

3009:                                             ; preds = %3002, %2999
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #14
  %3010 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %3011 = trunc i8 %3010 to i1
  %3012 = zext i1 %3011 to i64
  %3013 = select i1 %3011, i32 1, i32 0
  %3014 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3013, float noundef 1.000000e+00)
  store i32 %3014, ptr %164, align 4, !tbaa !9
  %3015 = load ptr, ptr %38, align 8, !tbaa !5
  %3016 = getelementptr inbounds %struct.ImGuiWindow, ptr %3015, i32 0, i32 65
  %3017 = load ptr, ptr %3016, align 8, !tbaa !176
  %3018 = load ptr, ptr %20, align 8, !tbaa !5
  %3019 = getelementptr inbounds %struct.ImGuiContext, ptr %3018, i32 0, i32 5
  %3020 = load ptr, ptr %3019, align 8, !tbaa !113
  %3021 = load ptr, ptr %20, align 8, !tbaa !5
  %3022 = getelementptr inbounds %struct.ImGuiContext, ptr %3021, i32 0, i32 6
  %3023 = load float, ptr %3022, align 8, !tbaa !44
  %3024 = load i32, ptr %164, align 4, !tbaa !9
  %3025 = load ptr, ptr %122, align 8, !tbaa !5
  %3026 = load ptr, ptr %123, align 8, !tbaa !5
  %3027 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3028 = trunc i8 %3027 to i1
  br i1 %3028, label %3029, label %3030

3029:                                             ; preds = %3009
  br label %3031

3030:                                             ; preds = %3009
  br label %3031

3031:                                             ; preds = %3030, %3029
  %3032 = phi ptr [ null, %3029 ], [ %118, %3030 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %3017, ptr noundef %3020, float noundef %3023, ptr noundef nonnull align 4 dereferenceable(8) %119, i32 noundef %3024, ptr noundef %3025, ptr noundef %3026, float noundef 0.000000e+00, ptr noundef %3032)
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #14
  br label %3033

3033:                                             ; preds = %3031, %3002
  br label %3034

3034:                                             ; preds = %3033, %2959
  %3035 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3036 = trunc i8 %3035 to i1
  br i1 %3036, label %3037, label %3042

3037:                                             ; preds = %3034
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #14
  %3038 = load ptr, ptr %20, align 8, !tbaa !5
  %3039 = getelementptr inbounds %struct.ImGuiContext, ptr %3038, i32 0, i32 6
  %3040 = load float, ptr %3039, align 8, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %166, float noundef 0.000000e+00, float noundef %3040)
  %3041 = 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> %3041, 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 %3042

3042:                                             ; preds = %3037, %3034
  %3043 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %3044 = trunc i8 %3043 to i1
  br i1 %3044, label %3045, label %3049

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

3048:                                             ; preds = %3045
  call void @_ZN5ImGui7PopFontEv()
  br label %3049

3049:                                             ; preds = %3048, %3045, %3042
  %3050 = load ptr, ptr %20, align 8, !tbaa !5
  %3051 = getelementptr inbounds %struct.ImGuiContext, ptr %3050, i32 0, i32 186
  %3052 = load i8, ptr %3051, align 8, !tbaa !181, !range !39, !noundef !40
  %3053 = trunc i8 %3052 to i1
  br i1 %3053, label %3054, label %3063

3054:                                             ; preds = %3049
  %3055 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %3056 = trunc i8 %3055 to i1
  br i1 %3056, label %3057, label %3060

3057:                                             ; preds = %3054
  %3058 = load i8, ptr %64, align 1, !tbaa !41, !range !39, !noundef !40
  %3059 = trunc i8 %3058 to i1
  br i1 %3059, label %3060, label %3063

3060:                                             ; preds = %3057, %3054
  %3061 = load ptr, ptr %122, align 8, !tbaa !5
  %3062 = load ptr, ptr %123, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %119, ptr noundef %3061, ptr noundef %3062)
  br label %3063

3063:                                             ; preds = %3060, %3057, %3049
  %3064 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3065 = load float, ptr %3064, align 4, !tbaa !81
  %3066 = fcmp ogt float %3065, 0.000000e+00
  br i1 %3066, label %3067, label %3086

3067:                                             ; preds = %3063
  %3068 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 1
  %3069 = getelementptr inbounds %struct.ImVec2, ptr %3068, i32 0, i32 0
  %3070 = load float, ptr %3069, align 4, !tbaa !182
  %3071 = load ptr, ptr %22, align 8, !tbaa !5
  %3072 = getelementptr inbounds %struct.ImGuiStyle, ptr %3071, i32 0, i32 15
  %3073 = getelementptr inbounds %struct.ImVec2, ptr %3072, i32 0, i32 0
  %3074 = load float, ptr %3073, align 4, !tbaa !82
  %3075 = fadd float %3070, %3074
  %3076 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %3077 = getelementptr inbounds %struct.ImVec2, ptr %3076, i32 0, i32 1
  %3078 = load float, ptr %3077, align 4, !tbaa !171
  %3079 = load ptr, ptr %22, align 8, !tbaa !5
  %3080 = getelementptr inbounds %struct.ImGuiStyle, ptr %3079, i32 0, i32 11
  %3081 = getelementptr inbounds %struct.ImVec2, ptr %3080, i32 0, i32 1
  %3082 = load float, ptr %3081, align 4, !tbaa !80
  %3083 = fadd float %3078, %3082
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %167, float noundef %3075, float noundef %3083)
  %3084 = load ptr, ptr %10, align 8, !tbaa !5
  %3085 = load <2 x float>, ptr %167, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %3085, ptr noundef %3084, ptr noundef null, i1 noundef zeroext true)
  br label %3086

3086:                                             ; preds = %3067, %3063
  %3087 = load i8, ptr %60, align 1, !tbaa !41, !range !39, !noundef !40
  %3088 = trunc i8 %3087 to i1
  br i1 %3088, label %3089, label %3095

3089:                                             ; preds = %3086
  %3090 = load i32, ptr %15, align 4, !tbaa !9
  %3091 = and i32 %3090, 2097152
  %3092 = icmp ne i32 %3091, 0
  br i1 %3092, label %3095, label %3093

3093:                                             ; preds = %3089
  %3094 = load i32, ptr %29, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %3094)
  br label %3095

3095:                                             ; preds = %3093, %3089, %3086
  br label %3096

3096:                                             ; preds = %3095
  br label %3097

3097:                                             ; preds = %3096
  br label %3098

3098:                                             ; preds = %3097
  %3099 = load i32, ptr %15, align 4, !tbaa !9
  %3100 = and i32 %3099, 32
  %3101 = icmp ne i32 %3100, 0
  br i1 %3101, label %3102, label %3105

3102:                                             ; preds = %3098
  %3103 = load i8, ptr %61, align 1, !tbaa !41, !range !39, !noundef !40
  %3104 = trunc i8 %3103 to i1
  store i1 %3104, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3108

3105:                                             ; preds = %3098
  %3106 = load i8, ptr %60, align 1, !tbaa !41, !range !39, !noundef !40
  %3107 = trunc i8 %3106 to i1
  store i1 %3107, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3108

3108:                                             ; preds = %3105, %3102
  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 %3109

3109:                                             ; preds = %3108, %369, %359, %314
  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 %3110

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

3112:                                             ; preds = %1949
  %3113 = load ptr, ptr %105, align 8
  %3114 = load i32, ptr %106, align 4
  %3115 = insertvalue { ptr, i32 } poison, ptr %3113, 0
  %3116 = insertvalue { ptr, i32 } %3115, i32 %3114, 1
  resume { ptr, i32 } %3116

3117:                                             ; preds = %1230
  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 noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv() #6

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(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 6440}
!45 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !46, i64 8, !47, i64 5480, !6, i64 6432, !14, i64 6440, !14, i64 6444, !48, i64 6448, !50, i64 6656, !10, i64 6664, !10, i64 6668, !10, i64 6672, !15, i64 6676, !15, i64 6677, !15, i64 6678, !15, i64 6679, !10, i64 6680, !6, i64 6688, !23, i64 6696, !23, i64 6712, !23, i64 6728, !23, i64 6744, !27, i64 6760, !10, i64 6776, !6, i64 6784, !6, i64 6792, !6, i64 6800, !6, i64 6808, !6, i64 6816, !13, i64 6824, !14, i64 6832, !10, i64 6836, !15, i64 6840, !10, i64 6844, !14, i64 6848, !14, i64 6852, !10, i64 6856, !10, i64 6860, !14, i64 6864, !15, i64 6868, !15, i64 6869, !15, i64 6870, !15, i64 6871, !15, i64 6872, !10, i64 6876, !10, i64 6880, !51, i64 6888, !13, i64 6896, !6, i64 6904, !52, i64 6912, !10, i64 6916, !10, i64 6920, !15, i64 6924, !15, i64 6925, !6, i64 6928, !10, i64 6936, !14, i64 6940, !53, i64 6944, !54, i64 7056, !55, i64 7080, !56, i64 7096, !57, i64 7112, !58, i64 7128, !58, i64 7144, !6, i64 7160, !10, i64 7168, !10, i64 7172, !10, i64 7176, !10, i64 7180, !10, i64 7184, !10, i64 7188, !10, i64 7192, !10, i64 7196, !10, i64 7200, !10, i64 7204, !10, i64 7208, !52, i64 7212, !20, i64 7216, !10, i64 7232, !21, i64 7236, !10, i64 7240, !15, i64 7244, !15, i64 7245, !15, i64 7246, !15, i64 7247, !15, i64 7248, !15, i64 7249, !15, i64 7250, !10, i64 7252, !20, i64 7256, !15, i64 7272, !15, i64 7273, !10, i64 7276, !59, i64 7280, !10, i64 7284, !10, i64 7288, !10, i64 7292, !10, i64 7296, !60, i64 7304, !60, i64 7352, !60, i64 7400, !6, i64 7448, !10, i64 7456, !6, i64 7464, !6, i64 7472, !6, i64 7480, !14, i64 7488, !14, i64 7492, !15, i64 7496, !6, i64 7504, !6, i64 7512, !10, i64 7520, !10, i64 7524, !10, i64 7528, !10, i64 7532, !15, i64 7536, !61, i64 7544, !62, i64 7600, !14, i64 7632, !30, i64 7640, !30, i64 7808, !10, i64 7976, !15, i64 7980, !15, i64 7981, !15, i64 7982, !10, i64 7984, !10, i64 7988, !10, i64 7992, !63, i64 8000, !20, i64 8064, !10, i64 8080, !10, i64 8084, !14, i64 8088, !10, i64 8092, !10, i64 8096, !10, i64 8100, !10, i64 8104, !64, i64 8112, !7, i64 8128, !6, i64 8144, !65, i64 8152, !67, i64 8192, !68, i64 8208, !13, i64 8224, !69, i64 8232, !73, i64 11960, !10, i64 12080, !10, i64 12084, !14, i64 12088, !14, i64 12092, !7, i64 12096, !49, i64 12108, !15, i64 12124, !14, i64 12128, !14, i64 12132, !14, i64 12136, !10, i64 12140, !70, i64 12144, !17, i64 12160, !13, i64 12176, !13, i64 12184, !15, i64 12192, !14, i64 12196, !75, i64 12200, !76, i64 12216, !77, i64 12232, !15, i64 12248, !78, i64 12252, !6, i64 12256, !75, i64 12264, !14, i64 12280, !15, i64 12284, !10, i64 12288, !10, i64 12292, !10, i64 12296, !15, i64 12300, !10, i64 12304, !7, i64 12308, !10, i64 12788, !14, i64 12792, !10, i64 12796, !10, i64 12800, !10, i64 12804, !7, i64 12808}
!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, !10, i64 960, !13, i64 964, !7, i64 972, !7, i64 1016, !7, i64 1056, !7, i64 1061, !7, i64 1066, !7, i64 1071, !7, i64 1076, !7, i64 1084, !7, i64 1104, !7, i64 1124, !7, i64 1164, !7, i64 1184, !7, i64 3232, !7, i64 5280, !7, i64 5364, !16, i64 5448, !32, i64 5456}
!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, !14, i64 128, !10, i64 132, !13, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !14, i64 168, !15, i64 172, !15, i64 173, !14, i64 176, !14, i64 180, !7, i64 184}
!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, !13, i64 48, !15, i64 56, !20, i64 60, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100}
!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 6784}
!86 = !{!12, !10, i64 320}
!87 = !{!12, !10, i64 328}
!88 = !{!12, !14, i64 116}
!89 = !{!45, !10, i64 7976}
!90 = !{!45, !6, i64 7504}
!91 = !{!45, !10, i64 7520}
!92 = !{!12, !10, i64 432}
!93 = !{!45, !10, i64 6856}
!94 = !{!45, !10, i64 7188}
!95 = !{!45, !10, i64 7176}
!96 = !{!45, !52, i64 7212}
!97 = !{!45, !10, i64 6920}
!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 6876}
!108 = !{!45, !10, i64 6880}
!109 = !{!45, !51, i64 6888}
!110 = !{!69, !10, i64 16}
!111 = !{!69, !6, i64 40}
!112 = !{!7, !7, i64 0}
!113 = !{!45, !6, i64 6432}
!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 6869}
!128 = !{!45, !10, i64 12804}
!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 5456}
!144 = distinct !{!144, !145}
!145 = !{!"llvm.loop.mustprogress"}
!146 = !{!45, !15, i64 6868}
!147 = !{!46, !10, i64 960}
!148 = !{!45, !15, i64 201}
!149 = !{!12, !14, i64 88}
!150 = !{!46, !6, i64 256}
!151 = !{!69, !10, i64 80}
!152 = !{!69, !10, i64 84}
!153 = distinct !{!153, !145}
!154 = !{!69, !10, i64 48}
!155 = !{!32, !6, i64 8}
!156 = !{!32, !10, i64 0}
!157 = !{!69, !10, i64 32}
!158 = !{!159, !10, i64 0}
!159 = !{!"_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}
!160 = !{!159, !10, i64 4}
!161 = !{!159, !6, i64 8}
!162 = !{!159, !10, i64 20}
!163 = !{!159, !6, i64 24}
!164 = !{!159, !10, i64 32}
!165 = !{!159, !10, i64 36}
!166 = !{!159, !15, i64 40}
!167 = !{!69, !10, i64 76}
!168 = !{!159, !10, i64 44}
!169 = !{!159, !10, i64 48}
!170 = !{!159, !10, i64 52}
!171 = !{!20, !14, i64 4}
!172 = distinct !{!172, !145}
!173 = !{!49, !14, i64 12}
!174 = !{!49, !14, i64 4}
!175 = distinct !{!175, !145}
!176 = !{!12, !6, i64 688}
!177 = distinct !{!177, !145}
!178 = !{!46, !14, i64 16}
!179 = !{!69, !14, i64 3696}
!180 = !{!45, !15, i64 202}
!181 = !{!45, !15, i64 12248}
!182 = !{!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 [94 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [31 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [113 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.63 = 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

; 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

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: 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 %1324, label %58

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

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

63:                                               ; preds = %58
  %64 = and i32 %5, 128
  %.not854.not = icmp eq i32 %64, 0
  %65 = and i32 %5, 1048576
  %66 = icmp ne i32 %65, 0
  %67 = and i32 %5, 1048704
  %.not855 = icmp eq i32 %67, 1048704
  br i1 %.not855, label %68, label %69

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

69:                                               ; preds = %63
  %70 = and i32 %5, 64
  %.not856 = icmp eq i32 %70, 0
  %71 = and i32 %5, 1024
  %.not857 = icmp eq i32 %71, 0
  %72 = and i32 %5, 1088
  %.not858 = icmp eq i32 %72, 1088
  br i1 %.not858, label %73, label %74

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

74:                                               ; preds = %69
  %75 = load ptr, ptr @GImGui, align 8, !tbaa !39
  %76 = and i32 %5, 16384
  %77 = icmp ne i32 %76, 0
  %78 = and i32 %5, 32768
  %.not859 = icmp eq i32 %78, 0
  %79 = and i32 %5, 65536
  %80 = icmp eq i32 %79, 0
  %81 = and i32 %5, 262144
  %.not860 = icmp eq i32 %81, 0
  %82 = icmp ne ptr %6, null
  %or.cond17 = or i1 %.not860, %82
  br i1 %or.cond17, label %84, label %83

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

84:                                               ; preds = %74
  br i1 %66, label %85, label %86

85:                                               ; preds = %84
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %86

86:                                               ; preds = %85, %84
  %87 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(956) %54, ptr noundef %0, ptr noundef null)
  %88 = 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.0464.0.copyload = load <2 x float>, ptr %4, align 4
  %89 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %66, label %90, label %94

90:                                               ; preds = %86
  %91 = getelementptr inbounds i8, ptr %75, i64 6440
  %92 = load float, ptr %91, align 8, !tbaa !40
  %93 = fmul float %92, 8.000000e+00
  br label %95

94:                                               ; preds = %86
  %.sroa.0465.4.vec.extract = extractelement <2 x float> %88, i64 1
  br label %95

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

105:                                              ; preds = %95
  %106 = getelementptr inbounds i8, ptr %75, i64 5560
  %107 = load float, ptr %106, align 4, !tbaa !76
  %108 = fadd float %.sroa.0465.0.vec.extract, %107
  br label %109

109:                                              ; preds = %95, %105
  %110 = phi float [ %108, %105 ], [ 0.000000e+00, %95 ]
  %111 = fadd float %102, %110
  %112 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %111, float noundef %104)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #15
  %113 = getelementptr inbounds i8, ptr %54, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #15
  %114 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %113, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %114, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %113, 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
  %115 = 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> %115, 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.0437.0.copyload = load float, ptr %9, align 8, !tbaa !77
  %.sroa.12.0.copyload = load float, ptr %112, align 4, !tbaa !77
  br i1 %66, label %116, label %139

116:                                              ; preds = %109
  %117 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %87, ptr noundef nonnull %11)
  br i1 %117, label %120, label %118

118:                                              ; preds = %116
  %119 = load float, ptr %98, align 4, !tbaa !75
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %119)
  call void @_ZN5ImGui8EndGroupEv()
  br label %1323

120:                                              ; preds = %116
  %121 = getelementptr inbounds i8, ptr %75, i64 5776
  call void @_ZN5ImGui14PushStyleColorEiRK6ImVec4(i32 noundef 3, ptr noundef nonnull align 4 dereferenceable(16) %121)
  %122 = getelementptr inbounds i8, ptr %75, i64 5544
  %123 = load float, ptr %122, align 4, !tbaa !78
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 6, float noundef %123)
  %124 = getelementptr inbounds i8, ptr %75, i64 5548
  %125 = load float, ptr %124, align 4, !tbaa !79
  call void @_ZN5ImGui12PushStyleVarEif(i32 noundef 7, float noundef %125)
  call void @_ZN5ImGui12PushStyleVarEiRK6ImVec2(i32 noundef 1, ptr noundef nonnull align 4 dereferenceable(8) %97)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #15
  %126 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %126, ptr %15, align 8
  %127 = call noundef zeroext i1 @_ZN5ImGui12BeginChildExEPKcjRK6ImVec2bi(ptr noundef %0, i32 noundef %87, 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 %127, label %.thread, label %138

.thread:                                          ; preds = %120
  %128 = getelementptr inbounds i8, ptr %75, i64 6784
  %129 = load ptr, ptr %128, align 8, !tbaa !80
  %130 = getelementptr inbounds i8, ptr %129, i64 320
  %131 = load i32, ptr %130, align 8, !tbaa !81
  %132 = getelementptr inbounds i8, ptr %129, i64 328
  %133 = load i32, ptr %132, align 8, !tbaa !82
  %134 = or i32 %133, %131
  store i32 %134, ptr %132, align 8, !tbaa !82
  %135 = getelementptr inbounds i8, ptr %129, i64 116
  %136 = load float, ptr %135, align 4, !tbaa !83
  %137 = fsub float %.sroa.0437.0.copyload, %136
  br label %142

138:                                              ; preds = %120
  call void @_ZN5ImGui8EndChildEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1323

139:                                              ; preds = %109
  %140 = load float, ptr %98, align 4, !tbaa !75
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %140)
  %141 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %87, ptr noundef nonnull %11)
  br i1 %141, label %142, label %1323

142:                                              ; preds = %.thread, %139
  %.sroa.0437.1 = phi float [ %.sroa.0437.0.copyload, %139 ], [ %137, %.thread ]
  %.1783 = phi ptr [ %54, %139 ], [ %129, %.thread ]
  %143 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %87)
  br i1 %143, label %144, label %146

144:                                              ; preds = %142
  %145 = getelementptr inbounds i8, ptr %75, i64 7976
  store i32 1, ptr %145, align 8, !tbaa !84
  br label %146

146:                                              ; preds = %144, %142
  %147 = call noundef ptr @_ZN5ImGui17GetInputTextStateEj(i32 noundef %87)
  %148 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef nonnull %54, i32 noundef %87)
  br i1 %148, label %149, label %159

149:                                              ; preds = %146
  %150 = getelementptr inbounds i8, ptr %75, i64 7504
  %151 = load ptr, ptr %150, align 8, !tbaa !85
  %152 = icmp eq ptr %151, %54
  br i1 %152, label %153, label %159

153:                                              ; preds = %149
  %154 = getelementptr inbounds i8, ptr %75, i64 7520
  %155 = load i32, ptr %154, align 8, !tbaa !86
  %156 = getelementptr inbounds i8, ptr %54, i64 432
  %157 = load i32, ptr %156, align 8, !tbaa !87
  %158 = icmp eq i32 %155, %157
  br label %159

159:                                              ; preds = %149, %153, %146
  %160 = phi i1 [ false, %146 ], [ false, %149 ], [ %158, %153 ]
  br i1 %143, label %161, label %165

161:                                              ; preds = %159
  %162 = getelementptr inbounds i8, ptr %75, i64 1064
  %163 = load i8, ptr %162, align 8, !tbaa !88, !range !37, !noundef !38
  %164 = trunc nuw i8 %163 to i1
  br label %165

165:                                              ; preds = %161, %159
  %166 = phi i1 [ false, %159 ], [ %164, %161 ]
  %167 = getelementptr inbounds i8, ptr %75, i64 6856
  %168 = load i32, ptr %167, align 8, !tbaa !89
  %.not861 = icmp eq i32 %168, %87
  br i1 %.not861, label %181, label %169

169:                                              ; preds = %165
  %170 = getelementptr inbounds i8, ptr %75, i64 7188
  %171 = load i32, ptr %170, align 4, !tbaa !90
  %172 = icmp eq i32 %171, %87
  br i1 %172, label %181, label %173

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %75, i64 7176
  %175 = load i32, ptr %174, align 8, !tbaa !91
  %176 = icmp eq i32 %175, %87
  br i1 %176, label %177, label %181

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %75, i64 7212
  %179 = load i32, ptr %178, align 4, !tbaa !92
  %180 = icmp eq i32 %179, 3
  br label %181

181:                                              ; preds = %169, %177, %173, %165
  %182 = phi i1 [ false, %165 ], [ true, %169 ], [ false, %173 ], [ %180, %177 ]
  %183 = icmp ne ptr %147, null
  %or.cond = and i1 %66, %183
  br i1 %or.cond, label %184, label %195

184:                                              ; preds = %181
  %185 = icmp eq i32 %168, 0
  br i1 %185, label %186, label %191

186:                                              ; preds = %184
  %187 = getelementptr inbounds i8, ptr %75, i64 6920
  %188 = load i32, ptr %187, align 8, !tbaa !93
  %189 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.1783, i32 noundef 1)
  %190 = icmp eq i32 %188, %189
  %.pre = load i32, ptr %167, align 8, !tbaa !89
  br label %191

191:                                              ; preds = %186, %184
  %192 = phi i32 [ %.pre, %186 ], [ %168, %184 ]
  %.ph = phi i1 [ %190, %186 ], [ false, %184 ]
  %193 = call noundef i32 @_ZN5ImGui20GetWindowScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.1783, i32 noundef 1)
  %194 = icmp eq i32 %192, %193
  %.pre1048 = load i32, ptr %167, align 8, !tbaa !89
  br label %195

195:                                              ; preds = %181, %191
  %196 = phi i32 [ %.pre1048, %191 ], [ %168, %181 ]
  %197 = phi i1 [ %.ph, %191 ], [ false, %181 ]
  %198 = phi i1 [ %194, %191 ], [ false, %181 ]
  %.not862 = icmp eq i32 %196, %87
  br i1 %.not862, label %199, label %.thread988

199:                                              ; preds = %195
  %brmerge892 = select i1 %148, i1 true, i1 %166
  %200 = select i1 %brmerge892, i1 true, i1 %197
  %spec.select982 = select i1 %200, i1 true, i1 %182
  %201 = select i1 %spec.select982, i1 true, i1 %198
  br label %262

.thread988:                                       ; preds = %195
  %202 = and i32 %5, 16
  %.not863 = icmp ne i32 %202, 0
  %brmerge = select i1 %.not863, i1 true, i1 %182
  %203 = xor i1 %66, true
  %spec.select978 = and i1 %brmerge, %203
  %brmerge892989 = select i1 %148, i1 true, i1 %166
  %204 = select i1 %brmerge892989, i1 true, i1 %197
  %spec.select982991 = select i1 %204, i1 true, i1 %182
  %205 = select i1 %spec.select982991, i1 true, i1 %198
  br i1 %205, label %206, label %262

206:                                              ; preds = %.thread988
  %207 = getelementptr inbounds i8, ptr %75, i64 8232
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %207)
  %208 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #16
  %209 = trunc i64 %208 to i32
  %210 = getelementptr inbounds i8, ptr %75, i64 8280
  %211 = add nsw i32 %209, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %210, i32 noundef %211)
  %212 = getelementptr inbounds i8, ptr %75, i64 8288
  %213 = load ptr, ptr %212, align 8, !tbaa !94
  %214 = sext i32 %211 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %213, ptr nonnull align 1 %2, i64 %214, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #15
  store ptr null, ptr %16, align 8, !tbaa !39
  %215 = getelementptr inbounds i8, ptr %75, i64 8248
  %216 = add nuw nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %215, i32 noundef %216)
  %217 = getelementptr inbounds i8, ptr %75, i64 8264
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %217, i32 noundef 0)
  %218 = getelementptr inbounds i8, ptr %75, i64 8296
  store i8 0, ptr %218, align 8, !tbaa !95
  %219 = getelementptr inbounds i8, ptr %75, i64 8256
  %220 = load ptr, ptr %219, align 8, !tbaa !96
  %221 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %220, i32 noundef %3, ptr noundef nonnull %2, ptr noundef null, ptr noundef nonnull %16)
  %222 = getelementptr inbounds i8, ptr %75, i64 8236
  store i32 %221, ptr %222, align 4, !tbaa !97
  %223 = load ptr, ptr %16, align 8, !tbaa !39
  %224 = ptrtoint ptr %223 to i64
  %225 = ptrtoint ptr %2 to i64
  %226 = sub i64 %224, %225
  %227 = trunc i64 %226 to i32
  %228 = getelementptr inbounds i8, ptr %75, i64 8240
  store i32 %227, ptr %228, align 8, !tbaa !98
  %229 = load i32, ptr %207, align 8, !tbaa !99
  %230 = icmp eq i32 %229, %87
  br i1 %230, label %231, label %232

231:                                              ; preds = %206
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %207)
  br label %236

232:                                              ; preds = %206
  store i32 %87, ptr %207, align 8, !tbaa !99
  %233 = getelementptr inbounds i8, ptr %75, i64 8304
  store float 0.000000e+00, ptr %233, align 8, !tbaa !100
  %234 = getelementptr inbounds i8, ptr %75, i64 8308
  %235 = zext i1 %203 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %234, i32 noundef %235)
  %spec.select893 = select i1 %160, i1 true, i1 %spec.select978
  %spec.select983 = select i1 %203, i1 %spec.select893, i1 false
  br label %236

236:                                              ; preds = %232, %231
  %.0789 = phi i1 [ %spec.select978, %231 ], [ %spec.select983, %232 ]
  %237 = and i32 %5, 8192
  %.not865 = icmp eq i32 %237, 0
  br i1 %.not865, label %240, label %238

238:                                              ; preds = %236
  %239 = getelementptr inbounds i8, ptr %75, i64 8320
  store i8 1, ptr %239, align 4, !tbaa !101
  br label %240

240:                                              ; preds = %238, %236
  br i1 %66, label %249, label %241

241:                                              ; preds = %240
  %not. = xor i1 %148, true
  %242 = select i1 %not., i1 true, i1 %160
  br i1 %242, label %243, label %248

243:                                              ; preds = %241
  br i1 %166, label %244, label %249

244:                                              ; preds = %243
  %245 = getelementptr inbounds i8, ptr %75, i64 328
  %246 = load i8, ptr %245, align 8, !tbaa !102, !range !37, !noundef !38
  %247 = trunc nuw i8 %246 to i1
  br i1 %247, label %248, label %249

248:                                              ; preds = %244, %241
  br label %249

249:                                              ; preds = %240, %243, %244, %248
  %.1790 = phi i1 [ %.0789, %240 ], [ true, %248 ], [ %.0789, %244 ], [ %.0789, %243 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #15
  %.pre1049 = load i32, ptr %167, align 8, !tbaa !89
  %.not866 = icmp ne i32 %.pre1049, %87
  %brmerge895.not = and i1 %spec.select982991, %.not866
  br i1 %brmerge895.not, label %250, label %.thread998

250:                                              ; preds = %249
  %251 = load i32, ptr %207, align 8, !tbaa !99
  %252 = icmp eq i32 %251, %87
  br i1 %252, label %253, label %.critedge

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

253:                                              ; preds = %250
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %87, ptr noundef nonnull %54)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %87, ptr noundef nonnull %54)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %54)
  %254 = getelementptr inbounds i8, ptr %75, i64 6876
  %brmerge896.not = icmp eq i32 %67, 0
  %spec.select.v = select i1 %brmerge896.not, i32 3, i32 15
  %255 = load <2 x i32>, ptr %254, align 4, !tbaa !103
  %256 = insertelement <2 x i32> <i32 poison, i32 2>, i32 %spec.select.v, i64 0
  %257 = or <2 x i32> %255, %256
  store <2 x i32> %257, ptr %254, align 4, !tbaa !103
  %258 = getelementptr inbounds i8, ptr %75, i64 6888
  %259 = load i64, ptr %258, align 8, !tbaa !104
  %spec.select897.v = select i1 %66, i64 480, i64 384
  %spec.select897 = or i64 %259, %spec.select897.v
  store i64 %spec.select897, ptr %258, align 8, !tbaa !104
  %.not868 = icmp eq i32 %72, 0
  br i1 %.not868, label %.thread998, label %260

260:                                              ; preds = %253
  %261 = or i64 %spec.select897, 1
  store i64 %261, ptr %258, align 8, !tbaa !104
  br label %.thread998

262:                                              ; preds = %.thread988, %199
  %.ph1069 = phi i32 [ %87, %199 ], [ %196, %.thread988 ]
  %.ph1070 = phi i1 [ %201, %199 ], [ false, %.thread988 ]
  %.2791.ph = phi i1 [ false, %199 ], [ %spec.select978, %.thread988 ]
  %263 = icmp eq i32 %.ph1069, %87
  %264 = icmp eq ptr %147, null
  %or.cond5 = and i1 %264, %263
  br i1 %or.cond5, label %265, label %.thread998

265:                                              ; preds = %262
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %.thread998

.thread998:                                       ; preds = %249, %260, %253, %265, %262
  %.07841080 = phi ptr [ %207, %260 ], [ %207, %253 ], [ null, %265 ], [ %147, %262 ], [ %207, %249 ]
  %.27911077 = phi i1 [ %.1790, %260 ], [ %.1790, %253 ], [ %.2791.ph, %265 ], [ %.2791.ph, %262 ], [ %.1790, %249 ]
  %266 = phi i1 [ true, %260 ], [ true, %253 ], [ %.ph1070, %265 ], [ %.ph1070, %262 ], [ true, %249 ]
  %267 = load i32, ptr %167, align 8, !tbaa !89
  %268 = icmp eq i32 %267, %87
  br i1 %268, label %.thread1000, label %272

.thread1000:                                      ; preds = %.thread998
  %269 = getelementptr inbounds i8, ptr %75, i64 1064
  %270 = load i8, ptr %269, align 8, !tbaa !88, !range !37, !noundef !38
  %271 = trunc nuw i8 %270 to i1
  %.not1029 = xor i1 %266, true
  %not.brmerge899 = and i1 %.not1029, %271
  %spec.select979 = zext i1 %not.brmerge899 to i8
  br label %275

272:                                              ; preds = %.thread998
  %273 = icmp ne ptr %.07841080, null
  %274 = select i1 %273, i1 %198, i1 false
  br label %275

275:                                              ; preds = %.thread1000, %272
  %.07851002 = phi i8 [ 0, %272 ], [ %spec.select979, %.thread1000 ]
  %276 = phi i1 [ %274, %272 ], [ true, %.thread1000 ]
  %277 = icmp ne ptr %.07841080, null
  br i1 %277, label %278, label %.thread1003

278:                                              ; preds = %275
  %279 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  %spec.select900 = select i1 %279, i1 %276, i1 false
  %or.cond980 = select i1 %77, i1 %276, i1 false
  br i1 %or.cond980, label %280, label %.thread1003

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

.thread1003:                                      ; preds = %275, %280, %278
  %.0793.in = phi i1 [ %295, %280 ], [ %spec.select900, %278 ], [ false, %275 ]
  %brmerge902 = select i1 %276, i1 true, i1 %.0793.in
  br i1 %brmerge902, label %300, label %296

296:                                              ; preds = %.thread1003
  %297 = load i32, ptr %167, align 8, !tbaa !89
  %298 = icmp eq i32 %297, %87
  %.not = xor i1 %77, true
  %299 = and i1 %298, %.not
  %or.cond903 = and i1 %277, %299
  br i1 %or.cond903, label %301, label %305

300:                                              ; preds = %.thread1003
  %.not.old = xor i1 %77, true
  %or.cond9.old = and i1 %277, %.not.old
  br i1 %or.cond9.old, label %301, label %305

301:                                              ; preds = %296, %300
  %302 = getelementptr inbounds i8, ptr %.07841080, i64 64
  %303 = load i8, ptr %302, align 8, !tbaa !95, !range !37, !noundef !38
  %304 = trunc nuw i8 %303 to i1
  br label %305

305:                                              ; preds = %301, %300, %296
  %306 = phi i1 [ false, %300 ], [ false, %296 ], [ %304, %301 ]
  %.not869 = icmp eq ptr %1, null
  br i1 %.not869, label %315, label %307

307:                                              ; preds = %305
  br i1 %306, label %308, label %311

308:                                              ; preds = %307
  %309 = getelementptr inbounds i8, ptr %.07841080, i64 40
  %310 = load ptr, ptr %309, align 8, !tbaa !106
  br label %311

311:                                              ; preds = %307, %308
  %312 = phi ptr [ %310, %308 ], [ %2, %307 ]
  %313 = load i8, ptr %312, align 1, !tbaa !107
  %314 = icmp eq i8 %313, 0
  br label %315

315:                                              ; preds = %311, %305
  %316 = phi i1 [ false, %305 ], [ %314, %311 ]
  %brmerge904 = select i1 %.not859, i1 true, i1 %316
  br i1 %brmerge904, label %350, label %317

317:                                              ; preds = %315
  %318 = getelementptr inbounds i8, ptr %75, i64 6432
  %319 = load ptr, ptr %318, align 8, !tbaa !108
  %320 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(114) %319, i16 noundef zeroext 42)
  %321 = getelementptr inbounds i8, ptr %75, i64 11960
  %322 = load ptr, ptr %318, align 8, !tbaa !108
  %323 = getelementptr inbounds i8, ptr %322, i64 20
  %324 = load float, ptr %323, align 4, !tbaa !109
  %325 = getelementptr inbounds i8, ptr %75, i64 11980
  store float %324, ptr %325, align 4, !tbaa !109
  %326 = getelementptr inbounds i8, ptr %322, i64 96
  %327 = load float, ptr %326, align 8, !tbaa !110
  %328 = getelementptr inbounds i8, ptr %75, i64 12056
  store float %327, ptr %328, align 8, !tbaa !110
  %329 = getelementptr inbounds i8, ptr %322, i64 64
  %330 = getelementptr inbounds i8, ptr %75, i64 12024
  %331 = load i64, ptr %329, align 8
  store i64 %331, ptr %330, align 8
  %332 = getelementptr inbounds i8, ptr %322, i64 100
  %333 = getelementptr inbounds i8, ptr %75, i64 12060
  %334 = load <2 x float>, ptr %332, align 4, !tbaa !77
  store <2 x float> %334, ptr %333, align 4, !tbaa !77
  %335 = getelementptr inbounds i8, ptr %322, i64 72
  %336 = load ptr, ptr %335, align 8, !tbaa !111
  %337 = getelementptr inbounds i8, ptr %75, i64 12032
  store ptr %336, ptr %337, align 8, !tbaa !111
  %338 = getelementptr inbounds i8, ptr %75, i64 12016
  store ptr %320, ptr %338, align 8, !tbaa !112
  %339 = getelementptr inbounds i8, ptr %320, i64 4
  %340 = load float, ptr %339, align 4, !tbaa !113
  %341 = getelementptr inbounds i8, ptr %75, i64 11976
  store float %340, ptr %341, align 8, !tbaa !115
  %342 = getelementptr inbounds i8, ptr %75, i64 12000
  %343 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
  br i1 %343, label %344, label %.critedge11

344:                                              ; preds = %317
  %345 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %321)
  br i1 %345, label %346, label %.critedge11

346:                                              ; preds = %344
  %347 = getelementptr inbounds i8, ptr %75, i64 11984
  %348 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %347)
  br i1 %348, label %349, label %.critedge11

.critedge11:                                      ; preds = %344, %317, %346
  call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 3715, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

349:                                              ; preds = %346
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %321)
  br label %350

350:                                              ; preds = %315, %349
  %351 = load i32, ptr %167, align 8, !tbaa !89
  %352 = icmp eq i32 %351, %87
  br i1 %352, label %353, label %495

353:                                              ; preds = %350
  br i1 %277, label %355, label %354

354:                                              ; preds = %353
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 3723, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

355:                                              ; preds = %353
  %356 = getelementptr inbounds i8, ptr %.07841080, i64 8
  %357 = load i32, ptr %356, align 8, !tbaa !98
  %358 = getelementptr inbounds i8, ptr %.07841080, i64 68
  store i32 %3, ptr %358, align 4, !tbaa !116
  %359 = getelementptr inbounds i8, ptr %.07841080, i64 3704
  store i32 %5, ptr %359, align 8, !tbaa !117
  %360 = getelementptr inbounds i8, ptr %.07841080, i64 3712
  store ptr %6, ptr %360, align 8, !tbaa !118
  %361 = getelementptr inbounds i8, ptr %.07841080, i64 3720
  store ptr %7, ptr %361, align 8, !tbaa !119
  %362 = getelementptr inbounds i8, ptr %75, i64 312
  %363 = load i8, ptr %362, align 8, !tbaa !88, !range !37, !noundef !38
  %364 = xor i8 %363, 1
  %365 = getelementptr inbounds i8, ptr %75, i64 6869
  store i8 %364, ptr %365, align 1, !tbaa !120
  %366 = getelementptr inbounds i8, ptr %75, i64 12804
  store i32 1, ptr %366, align 4, !tbaa !121
  %367 = getelementptr inbounds i8, ptr %75, i64 304
  %368 = load float, ptr %367, align 8, !tbaa !122
  %369 = load float, ptr %11, align 8, !tbaa !123
  %370 = fsub float %368, %369
  %371 = load float, ptr %97, align 4, !tbaa !124
  %372 = fsub float %370, %371
  %373 = getelementptr inbounds i8, ptr %.07841080, i64 72
  %374 = load float, ptr %373, align 8, !tbaa !100
  %375 = fadd float %372, %374
  br i1 %66, label %376, label %384

376:                                              ; preds = %355
  %377 = getelementptr inbounds i8, ptr %75, i64 308
  %378 = load float, ptr %377, align 4, !tbaa !125
  %379 = getelementptr inbounds i8, ptr %.1783, i64 212
  %380 = load float, ptr %379, align 4, !tbaa !126
  %381 = fsub float %378, %380
  %382 = load float, ptr %98, align 4, !tbaa !75
  %383 = fsub float %381, %382
  br label %388

384:                                              ; preds = %355
  %385 = getelementptr inbounds i8, ptr %75, i64 6440
  %386 = load float, ptr %385, align 8, !tbaa !40
  %387 = fmul float %386, 5.000000e-01
  br label %388

388:                                              ; preds = %384, %376
  %389 = phi float [ %383, %376 ], [ %387, %384 ]
  %390 = getelementptr inbounds i8, ptr %75, i64 201
  %391 = load i8, ptr %390, align 1, !tbaa !127, !range !37, !noundef !38
  %392 = trunc nuw i8 %391 to i1
  br i1 %.27911077, label %398, label %393

393:                                              ; preds = %388
  %.not905 = xor i1 %143, true
  %brmerge906 = select i1 %.not905, i1 true, i1 %392
  br i1 %brmerge906, label %400, label %394

394:                                              ; preds = %393
  %395 = getelementptr inbounds i8, ptr %75, i64 1069
  %396 = load i8, ptr %395, align 1, !tbaa !88, !range !37, !noundef !38
  %397 = trunc nuw i8 %396 to i1
  br i1 %397, label %398, label %400

398:                                              ; preds = %394, %388
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  %399 = getelementptr inbounds i8, ptr %.07841080, i64 3701
  store i8 1, ptr %399, align 1, !tbaa !128
  br label %435

400:                                              ; preds = %393, %394
  %401 = select i1 %143, i1 %392, i1 false
  br i1 %401, label %402, label %407

402:                                              ; preds = %400
  %403 = getelementptr inbounds i8, ptr %75, i64 1069
  %404 = load i8, ptr %403, align 1, !tbaa !88, !range !37, !noundef !38
  %405 = trunc nuw i8 %404 to i1
  br i1 %405, label %406, label %407

406:                                              ; preds = %402
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef 2097164)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef 6291469)
  br label %435

407:                                              ; preds = %400, %402
  %408 = getelementptr inbounds i8, ptr %75, i64 1064
  %409 = load i8, ptr %408, align 8, !tbaa !88, !range !37, !noundef !38
  %410 = trunc nuw i8 %409 to i1
  br i1 %410, label %411, label %418

411:                                              ; preds = %407
  %412 = getelementptr inbounds i8, ptr %.07841080, i64 3701
  %413 = load i8, ptr %412, align 1, !tbaa !128, !range !37, !noundef !38
  %414 = trunc nuw i8 %413 to i1
  br i1 %414, label %418, label %415

415:                                              ; preds = %411
  br i1 %143, label %416, label %435

416:                                              ; preds = %415
  %417 = getelementptr inbounds i8, ptr %.07841080, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.07841080, ptr noundef nonnull %417, float noundef %375, float noundef %389)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br label %435

418:                                              ; preds = %411, %407
  %419 = trunc nuw i8 %363 to i1
  br i1 %419, label %420, label %435

420:                                              ; preds = %418
  %421 = getelementptr inbounds i8, ptr %.07841080, i64 3701
  %422 = load i8, ptr %421, align 1, !tbaa !128, !range !37, !noundef !38
  %423 = trunc nuw i8 %422 to i1
  br i1 %423, label %435, label %424

424:                                              ; preds = %420
  %425 = getelementptr inbounds i8, ptr %75, i64 960
  %426 = load float, ptr %425, align 8, !tbaa !129
  %427 = fcmp une float %426, 0.000000e+00
  br i1 %427, label %432, label %428

428:                                              ; preds = %424
  %429 = getelementptr inbounds i8, ptr %75, i64 964
  %430 = load float, ptr %429, align 4, !tbaa !130
  %431 = fcmp une float %430, 0.000000e+00
  br i1 %431, label %432, label %435

432:                                              ; preds = %428, %424
  %433 = getelementptr inbounds i8, ptr %.07841080, i64 76
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.07841080, ptr noundef nonnull %433, float noundef %375, float noundef %389)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  %434 = getelementptr inbounds i8, ptr %.07841080, i64 3700
  store i8 1, ptr %434, align 4, !tbaa !131
  br label %435

435:                                              ; preds = %406, %418, %420, %428, %432, %415, %416, %398
  %436 = getelementptr inbounds i8, ptr %.07841080, i64 3701
  %437 = load i8, ptr %436, align 1, !tbaa !128, !range !37, !noundef !38
  %438 = trunc nuw i8 %437 to i1
  br i1 %438, label %439, label %443

439:                                              ; preds = %435
  %440 = load i8, ptr %362, align 8, !tbaa !88, !range !37, !noundef !38
  %441 = trunc nuw i8 %440 to i1
  br i1 %441, label %443, label %442

442:                                              ; preds = %439
  store i8 0, ptr %436, align 1, !tbaa !128
  br label %443

443:                                              ; preds = %442, %439, %435
  %444 = getelementptr inbounds i8, ptr %75, i64 328
  %445 = load i8, ptr %444, align 8, !tbaa !102, !range !37, !noundef !38
  %446 = trunc nuw i8 %445 to i1
  br i1 %446, label %447, label %452

447:                                              ; preds = %443
  %448 = getelementptr inbounds i8, ptr %75, i64 330
  %449 = load i8, ptr %448, align 2, !tbaa !132, !range !37, !noundef !38
  %450 = trunc nuw i8 %449 to i1
  %.not910 = xor i1 %450, true
  %451 = select i1 %450, i1 %392, i1 false
  br i1 %451, label %453, label %457

452:                                              ; preds = %443
  br i1 %392, label %453, label %457

453:                                              ; preds = %447, %452
  %454 = getelementptr inbounds i8, ptr %75, i64 331
  %455 = load i8, ptr %454, align 1, !tbaa !133, !range !37, !noundef !38
  %456 = trunc nuw i8 %455 to i1
  br label %457

457:                                              ; preds = %447, %452, %453
  %458 = phi i1 [ %.not910, %447 ], [ false, %452 ], [ %456, %453 ]
  br i1 %.not857, label %473, label %459

459:                                              ; preds = %457
  %460 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  %.not913 = xor i1 %460, true
  %brmerge914 = select i1 %.not913, i1 true, i1 %458
  br i1 %brmerge914, label %473, label %461

461:                                              ; preds = %459
  %462 = getelementptr inbounds i8, ptr %75, i64 329
  %463 = load i8, ptr %462, align 1, !tbaa !134, !range !37, !noundef !38
  %464 = trunc nuw i8 %463 to i1
  %brmerge915 = or i1 %77, %464
  br i1 %brmerge915, label %473, label %465

465:                                              ; preds = %461
  %466 = getelementptr inbounds i8, ptr %75, i64 5464
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #15
  store i16 9, ptr %18, align 2, !tbaa !135
  %467 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %466, ptr noundef nonnull align 2 dereferenceable(2) %18)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #15
  br i1 %467, label %473, label %468

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

470:                                              ; preds = %468
  %471 = load i32, ptr %19, align 4, !tbaa !103
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %471)
  br label %472

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

473:                                              ; preds = %461, %459, %465, %472, %457
  %474 = getelementptr inbounds i8, ptr %75, i64 5464
  %475 = load i32, ptr %474, align 8, !tbaa !136
  %476 = icmp sgt i32 %475, 0
  br i1 %476, label %477, label %495

477:                                              ; preds = %473
  %brmerge916 = or i1 %77, %458
  %brmerge917 = select i1 %brmerge916, i1 true, i1 %182
  br i1 %brmerge917, label %.loopexit1036, label %.lr.ph

.lr.ph:                                           ; preds = %477
  %478 = getelementptr inbounds i8, ptr %75, i64 329
  br label %479

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

484:                                              ; preds = %479
  %485 = load i8, ptr %478, align 1, !tbaa !134, !range !37, !noundef !38
  %486 = trunc nuw i8 %485 to i1
  br i1 %486, label %491, label %487

487:                                              ; preds = %484, %479
  %488 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %488, label %489, label %491

489:                                              ; preds = %487
  %490 = load i32, ptr %20, align 4, !tbaa !103
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %490)
  br label %491

491:                                              ; preds = %487, %489, %484
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #15
  %492 = add nuw nsw i32 %.08101039, 1
  %493 = load i32, ptr %474, align 8, !tbaa !136
  %494 = icmp slt i32 %492, %493
  br i1 %494, label %479, label %.loopexit1036, !llvm.loop !137

.loopexit1036:                                    ; preds = %491, %477
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %474, i32 noundef 0)
  br label %495

495:                                              ; preds = %473, %.loopexit1036, %350
  %.0808 = phi i32 [ 0, %350 ], [ %357, %.loopexit1036 ], [ %357, %473 ]
  %496 = load i32, ptr %167, align 8, !tbaa !89
  %497 = icmp eq i32 %496, %87
  br i1 %497, label %498, label %783

498:                                              ; preds = %495
  %499 = getelementptr inbounds i8, ptr %75, i64 6868
  %500 = load i8, ptr %499, align 4, !tbaa !139, !range !37, !noundef !38
  %501 = trunc nuw i8 %500 to i1
  br i1 %501, label %.thread1095, label %502

502:                                              ; preds = %498
  %503 = trunc nuw i8 %.07851002 to i1
  br i1 %503, label %.thread1095, label %504

504:                                              ; preds = %502
  br i1 %277, label %506, label %505

505:                                              ; preds = %504
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 3803, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

506:                                              ; preds = %504
  %507 = getelementptr inbounds i8, ptr %75, i64 968
  %508 = load i32, ptr %507, align 8, !tbaa !140
  %509 = call noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv()
  %510 = icmp eq i32 %508, %509
  br i1 %510, label %512, label %511

511:                                              ; preds = %506
  call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.1, i32 noundef 3804, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

512:                                              ; preds = %506
  %513 = getelementptr inbounds i8, ptr %75, i64 329
  %514 = load i8, ptr %513, align 1, !tbaa !134, !range !37, !noundef !38
  %515 = trunc nuw i8 %514 to i1
  %516 = select i1 %515, i32 4194304, i32 0
  %517 = getelementptr inbounds i8, ptr %75, i64 201
  %518 = load i8, ptr %517, align 1, !tbaa !127, !range !37, !noundef !38
  %519 = trunc nuw i8 %518 to i1
  br i1 %519, label %523, label %520

520:                                              ; preds = %512
  %521 = getelementptr inbounds i8, ptr %75, i64 330
  %522 = getelementptr inbounds i8, ptr %75, i64 328
  %.in = load i8, ptr %522, align 2, !tbaa !88, !range !37, !noundef !38
  %.pre1050 = load i32, ptr %507, align 8, !tbaa !140
  br label %537

523:                                              ; preds = %512
  %524 = load i32, ptr %507, align 8, !tbaa !140
  %525 = icmp eq i32 %524, 10
  %526 = getelementptr inbounds i8, ptr %75, i64 330
  %527 = getelementptr inbounds i8, ptr %75, i64 328
  %.in1009 = load i8, ptr %526, align 2, !tbaa !88, !range !37, !noundef !38
  %528 = getelementptr inbounds i8, ptr %75, i64 331
  %529 = load i8, ptr %528, align 1, !tbaa !133, !range !37, !noundef !38
  %530 = trunc nuw i8 %529 to i1
  br i1 %530, label %531, label %537

531:                                              ; preds = %523
  %532 = load i8, ptr %527, align 8, !tbaa !102, !range !37, !noundef !38
  %533 = trunc nuw i8 %532 to i1
  br i1 %533, label %537, label %534

534:                                              ; preds = %531
  %535 = trunc nuw i8 %.in1009 to i1
  %536 = xor i1 %535, true
  br label %537

537:                                              ; preds = %520, %534, %531, %523
  %538 = phi i32 [ %524, %531 ], [ %524, %523 ], [ %.pre1050, %520 ], [ %524, %534 ]
  %.v1031 = phi i32 [ 8, %531 ], [ 8, %523 ], [ 1, %520 ], [ 8, %534 ]
  %.in1030 = phi i8 [ %.in1009, %531 ], [ %.in1009, %523 ], [ %.in, %520 ], [ %.in1009, %534 ]
  %539 = phi ptr [ %527, %531 ], [ %527, %523 ], [ %522, %520 ], [ %527, %534 ]
  %540 = phi ptr [ %526, %531 ], [ %526, %523 ], [ %521, %520 ], [ %526, %534 ]
  %541 = phi i1 [ %525, %531 ], [ %525, %523 ], [ false, %520 ], [ %525, %534 ]
  %542 = phi i1 [ false, %531 ], [ false, %523 ], [ false, %520 ], [ %536, %534 ]
  %543 = trunc nuw i8 %.in1030 to i1
  %544 = icmp eq i32 %538, 1
  %545 = icmp eq i32 %538, 2
  %546 = icmp eq i32 %538, %.v1031
  br i1 %546, label %547, label %549

547:                                              ; preds = %537
  %548 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %548, label %554, label %549

549:                                              ; preds = %547, %537
  br i1 %545, label %550, label %557

550:                                              ; preds = %549
  %551 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %552 = and i1 %.not859, %551
  %553 = xor i1 %552, true
  %brmerge920 = or i1 %77, %553
  %.not926 = xor i1 %66, true
  %brmerge927 = or i1 %brmerge920, %.not926
  %not.brmerge920 = xor i1 %brmerge920, true
  br i1 %brmerge927, label %557, label %555

554:                                              ; preds = %547
  %.not859.not921 = xor i1 %.not859, true
  %brmerge922 = or i1 %77, %.not859.not921
  %.not923 = xor i1 %66, true
  %brmerge924 = or i1 %brmerge922, %.not923
  %not.brmerge922 = xor i1 %brmerge922, true
  br i1 %brmerge924, label %.thread1010, label %555

555:                                              ; preds = %550, %554
  %556 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br label %557

557:                                              ; preds = %550, %555, %549
  %558 = phi i1 [ %not.brmerge920, %550 ], [ false, %549 ], [ %556, %555 ]
  br i1 %546, label %.thread1010, label %561

.thread1010:                                      ; preds = %554, %557
  %559 = phi i1 [ %558, %557 ], [ %not.brmerge922, %554 ]
  %560 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %560, label %565, label %561

561:                                              ; preds = %.thread1010, %557
  %562 = phi i1 [ %559, %.thread1010 ], [ %558, %557 ]
  br i1 %544, label %563, label %570

563:                                              ; preds = %561
  %564 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %brmerge931.demorgan = and i1 %.not859, %564
  %brmerge933.not = and i1 %66, %brmerge931.demorgan
  br i1 %brmerge933.not, label %567, label %570

565:                                              ; preds = %.thread1010
  %566 = and i32 %5, 1081344
  %brmerge937.not = icmp eq i32 %566, 1048576
  br i1 %brmerge937.not, label %567, label %.thread1011

567:                                              ; preds = %565, %563
  %568 = phi i1 [ %559, %565 ], [ %562, %563 ]
  %569 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br label %570

570:                                              ; preds = %563, %567, %561
  %571 = phi i1 [ %562, %563 ], [ %562, %561 ], [ %568, %567 ]
  %572 = phi i1 [ %brmerge931.demorgan, %563 ], [ false, %561 ], [ %569, %567 ]
  br i1 %546, label %.thread1011, label %576

.thread1011:                                      ; preds = %565, %570
  %573 = phi i1 [ %572, %570 ], [ %.not859, %565 ]
  %574 = phi i1 [ %571, %570 ], [ %559, %565 ]
  %575 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %575, label %581, label %576

576:                                              ; preds = %.thread1011, %570
  %577 = phi i1 [ %573, %.thread1011 ], [ %572, %570 ]
  %578 = phi i1 [ %574, %.thread1011 ], [ %571, %570 ]
  br i1 %545, label %579, label %585

579:                                              ; preds = %576
  %580 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %580, label %581, label %585

581:                                              ; preds = %579, %.thread1011
  %582 = phi i1 [ %577, %579 ], [ %573, %.thread1011 ]
  %583 = phi i1 [ %578, %579 ], [ %574, %.thread1011 ]
  %584 = xor i1 %77, true
  br label %585

585:                                              ; preds = %581, %579, %576
  %586 = phi i1 [ %577, %579 ], [ %577, %576 ], [ %582, %581 ]
  %587 = phi i1 [ %578, %579 ], [ %578, %576 ], [ %583, %581 ]
  %588 = phi i1 [ false, %579 ], [ false, %576 ], [ %584, %581 ]
  br i1 %546, label %589, label %593

589:                                              ; preds = %585
  %590 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  %not.1032 = xor i1 %77, true
  %591 = and i1 %590, %not.1032
  %spec.select984 = and i1 %80, %591
  %592 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %592, label %597, label %593

593:                                              ; preds = %585, %589
  %594 = phi i1 [ %spec.select984, %589 ], [ false, %585 ]
  br i1 %541, label %595, label %599

595:                                              ; preds = %593
  %596 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %596, label %._crit_edge1063, label %599

._crit_edge1063:                                  ; preds = %595
  %.pre1064 = xor i1 %77, true
  br label %597

597:                                              ; preds = %._crit_edge1063, %589
  %not.1033.pre-phi = phi i1 [ %.pre1064, %._crit_edge1063 ], [ %not.1032, %589 ]
  %598 = phi i1 [ %594, %._crit_edge1063 ], [ %spec.select984, %589 ]
  %spec.select940 = and i1 %80, %not.1033.pre-phi
  br label %599

599:                                              ; preds = %597, %595, %593
  %600 = phi i1 [ %594, %595 ], [ %594, %593 ], [ %598, %597 ]
  %601 = phi i1 [ false, %595 ], [ false, %593 ], [ %spec.select940, %597 ]
  %602 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %602, label %603, label %606

603:                                              ; preds = %599
  %604 = select i1 %543, i32 2097164, i32 2097152
  %spec.select941 = select i1 %542, i32 2097156, i32 %604
  %605 = or disjoint i32 %spec.select941, %516
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %605)
  br label %780

606:                                              ; preds = %599
  %607 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %607, label %608, label %611

608:                                              ; preds = %606
  %609 = select i1 %543, i32 2097165, i32 2097153
  %spec.select942 = select i1 %542, i32 2097157, i32 %609
  %610 = or disjoint i32 %spec.select942, %516
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %610)
  br label %780

611:                                              ; preds = %606
  %612 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  %brmerge945.not = and i1 %66, %612
  br i1 %brmerge945.not, label %613, label %626

613:                                              ; preds = %611
  %614 = load i8, ptr %539, align 8, !tbaa !102, !range !37, !noundef !38
  %615 = trunc nuw i8 %614 to i1
  br i1 %615, label %616, label %623

616:                                              ; preds = %613
  %617 = getelementptr inbounds i8, ptr %.1783, i64 88
  %618 = load float, ptr %617, align 4, !tbaa !141
  %619 = getelementptr inbounds i8, ptr %75, i64 6440
  %620 = load float, ptr %619, align 8, !tbaa !40
  %621 = fsub float %618, %620
  %622 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %621, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.1783, float noundef %622)
  br label %780

623:                                              ; preds = %613
  %624 = select i1 %542, i32 2097158, i32 2097154
  %625 = or disjoint i32 %624, %516
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %625)
  br label %780

626:                                              ; preds = %611
  %627 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  %brmerge948.demorgan = and i1 %66, %627
  br i1 %brmerge948.demorgan, label %628, label %642

628:                                              ; preds = %626
  %629 = load i8, ptr %539, align 8, !tbaa !102, !range !37, !noundef !38
  %630 = trunc nuw i8 %629 to i1
  br i1 %630, label %631, label %639

631:                                              ; preds = %628
  %632 = getelementptr inbounds i8, ptr %.1783, i64 88
  %633 = load float, ptr %632, align 4, !tbaa !141
  %634 = getelementptr inbounds i8, ptr %75, i64 6440
  %635 = load float, ptr %634, align 8, !tbaa !40
  %636 = fadd float %633, %635
  %637 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %638 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %636, float noundef %637)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.1783, float noundef %638)
  br label %780

639:                                              ; preds = %628
  %640 = select i1 %542, i32 2097159, i32 2097155
  %641 = or disjoint i32 %640, %516
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %641)
  br label %780

642:                                              ; preds = %626
  %643 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %643, label %644, label %648

644:                                              ; preds = %642
  %645 = load i8, ptr %539, align 8, !tbaa !102, !range !37, !noundef !38
  %646 = trunc nuw i8 %645 to i1
  %.v874 = select i1 %646, i32 2097158, i32 2097156
  %647 = or disjoint i32 %.v874, %516
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %647)
  br label %780

648:                                              ; preds = %642
  %649 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %649, label %650, label %654

650:                                              ; preds = %648
  %651 = load i8, ptr %539, align 8, !tbaa !102, !range !37, !noundef !38
  %652 = trunc nuw i8 %651 to i1
  %.v = select i1 %652, i32 2097159, i32 2097157
  %653 = or disjoint i32 %.v, %516
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %653)
  br label %780

654:                                              ; preds = %648
  %655 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %.not949 = xor i1 %655, true
  %brmerge950 = or i1 %77, %.not949
  br i1 %brmerge950, label %658, label %656

656:                                              ; preds = %654
  %657 = or disjoint i32 %516, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %657)
  br label %780

658:                                              ; preds = %654
  %659 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  %.not951 = xor i1 %659, true
  %brmerge952 = or i1 %77, %.not951
  br i1 %brmerge952, label %676, label %660

660:                                              ; preds = %658
  %661 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br i1 %661, label %674, label %662

662:                                              ; preds = %660
  br i1 %543, label %.sink.split, label %663

663:                                              ; preds = %662
  br i1 %519, label %664, label %674

664:                                              ; preds = %663
  %665 = getelementptr inbounds i8, ptr %75, i64 331
  %666 = load i8, ptr %665, align 1, !tbaa !133, !range !37, !noundef !38
  %667 = trunc nuw i8 %666 to i1
  br i1 %667, label %668, label %674

668:                                              ; preds = %664
  %669 = load i8, ptr %540, align 2, !tbaa !132, !range !37, !noundef !38
  %670 = trunc nuw i8 %669 to i1
  br i1 %670, label %674, label %671

671:                                              ; preds = %668
  %672 = load i8, ptr %539, align 8, !tbaa !102, !range !37, !noundef !38
  %673 = trunc nuw i8 %672 to i1
  br i1 %673, label %674, label %.sink.split

.sink.split:                                      ; preds = %671, %662
  %.sink = phi i32 [ 6291468, %662 ], [ 6291460, %671 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %.sink)
  br label %674

674:                                              ; preds = %.sink.split, %671, %668, %664, %663, %660
  %675 = or disjoint i32 %516, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %675)
  br label %780

676:                                              ; preds = %658
  %677 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %677, label %680, label %678

678:                                              ; preds = %676
  %679 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %679, label %680, label %691

680:                                              ; preds = %678, %676
  br i1 %66, label %681, label %780

681:                                              ; preds = %680
  %682 = and i32 %5, 2048
  %.not873 = icmp eq i32 %682, 0
  %683 = load i8, ptr %539, align 8, !tbaa !102, !range !37, !noundef !38
  %684 = trunc nuw i8 %683 to i1
  br i1 %.not873, label %.critedge954, label %685

685:                                              ; preds = %681
  %.not1026 = xor i1 %684, true
  %brmerge1027 = or i1 %77, %.not1026
  %.mux = zext i1 %.not1026 to i8
  %.mux1028 = select i1 %684, i8 %.07851002, i8 1
  br i1 %brmerge1027, label %780, label %686

.critedge954:                                     ; preds = %681
  %brmerge955 = or i1 %77, %684
  %.mux957 = select i1 %684, i8 1, i8 %.07851002
  br i1 %brmerge955, label %780, label %686

686:                                              ; preds = %685, %.critedge954
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  store i32 10, ptr %21, align 4, !tbaa !103
  %687 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %687, label %688, label %690

688:                                              ; preds = %686
  %689 = load i32, ptr %21, align 4, !tbaa !103
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %689)
  br label %690

690:                                              ; preds = %688, %686
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  br label %780

691:                                              ; preds = %678
  %692 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %692, label %780, label %693

693:                                              ; preds = %691
  %brmerge958 = or i1 %600, %601
  br i1 %brmerge958, label %694, label %695

694:                                              ; preds = %693
  %.mux959 = select i1 %600, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080, i32 noundef %.mux959)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br label %780

695:                                              ; preds = %693
  br i1 %546, label %696, label %700

696:                                              ; preds = %695
  %697 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %697, label %698, label %700

698:                                              ; preds = %696
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  %699 = getelementptr inbounds i8, ptr %.07841080, i64 3700
  store i8 1, ptr %699, align 4, !tbaa !131
  br label %780

700:                                              ; preds = %696, %695
  %brmerge960 = or i1 %586, %587
  br i1 %brmerge960, label %701, label %748

701:                                              ; preds = %700
  %702 = getelementptr inbounds i8, ptr %75, i64 264
  %703 = load ptr, ptr %702, align 8, !tbaa !142
  %.not872 = icmp eq ptr %703, null
  br i1 %.not872, label %740, label %704

704:                                              ; preds = %701
  %705 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br i1 %705, label %706, label %712

706:                                              ; preds = %704
  %707 = getelementptr inbounds i8, ptr %.07841080, i64 80
  %708 = load i32, ptr %707, align 4, !tbaa !143
  %709 = getelementptr inbounds i8, ptr %.07841080, i64 84
  %710 = load i32, ptr %709, align 4, !tbaa !144
  %711 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %708, i32 noundef %710)
  br label %712

712:                                              ; preds = %704, %706
  %713 = phi i32 [ %711, %706 ], [ 0, %704 ]
  %714 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br i1 %714, label %715, label %721

715:                                              ; preds = %712
  %716 = getelementptr inbounds i8, ptr %.07841080, i64 80
  %717 = load i32, ptr %716, align 4, !tbaa !143
  %718 = getelementptr inbounds i8, ptr %.07841080, i64 84
  %719 = load i32, ptr %718, align 4, !tbaa !144
  %720 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %717, i32 noundef %719)
  br label %724

721:                                              ; preds = %712
  %722 = getelementptr inbounds i8, ptr %.07841080, i64 4
  %723 = load i32, ptr %722, align 4, !tbaa !97
  br label %724

724:                                              ; preds = %721, %715
  %725 = phi i32 [ %720, %715 ], [ %723, %721 ]
  %726 = getelementptr inbounds i8, ptr %.07841080, i64 24
  %727 = load ptr, ptr %726, align 8, !tbaa !96
  %728 = sext i32 %713 to i64
  %729 = getelementptr inbounds i16, ptr %727, i64 %728
  %730 = sext i32 %725 to i64
  %731 = getelementptr inbounds i16, ptr %727, i64 %730
  %732 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %729, ptr noundef %731)
  %733 = add nsw i32 %732, 1
  %734 = sext i32 %733 to i64
  %735 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %734)
  %736 = load ptr, ptr %726, align 8, !tbaa !96
  %737 = getelementptr inbounds i16, ptr %736, i64 %728
  %738 = getelementptr inbounds i16, ptr %736, i64 %730
  %739 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %735, i32 noundef %733, ptr noundef %737, ptr noundef %738)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %735)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %735)
  br label %740

740:                                              ; preds = %724, %701
  br i1 %587, label %741, label %780

741:                                              ; preds = %740
  %742 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br i1 %742, label %744, label %743

743:                                              ; preds = %741
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br label %744

744:                                              ; preds = %743, %741
  %745 = getelementptr inbounds i8, ptr %.07841080, i64 3700
  store i8 1, ptr %745, align 4, !tbaa !131
  %746 = getelementptr inbounds i8, ptr %.07841080, i64 76
  %747 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.07841080, ptr noundef nonnull %746)
  br label %780

748:                                              ; preds = %700
  br i1 %588, label %749, label %780

749:                                              ; preds = %748
  %750 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not870 = icmp eq ptr %750, null
  br i1 %.not870, label %780, label %751

751:                                              ; preds = %749
  %752 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %750) #16
  %753 = shl i64 %752, 32
  %sext = add i64 %753, 4294967296
  %754 = ashr exact i64 %sext, 31
  %755 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %754)
  %756 = load i8, ptr %750, align 1, !tbaa !107
  %.not8711040 = icmp eq i8 %756, 0
  br i1 %.not8711040, label %.loopexit1034.thread, label %.lr.ph1043

.loopexit1034.thread:                             ; preds = %751
  store i16 0, ptr %755, align 2, !tbaa !135
  br label %779

.lr.ph1043:                                       ; preds = %751, %770
  %.08131042 = phi i32 [ %.1814, %770 ], [ 0, %751 ]
  %.08161041 = phi ptr [ %759, %770 ], [ %750, %751 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  %757 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %22, ptr noundef nonnull %.08161041, ptr noundef null)
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds i8, ptr %.08161041, i64 %758
  %760 = load i32, ptr %22, align 4, !tbaa !103
  %761 = icmp eq i32 %760, 0
  br i1 %761, label %.thread1013, label %762

.thread1013:                                      ; preds = %.lr.ph1043
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  br label %.loopexit1034

762:                                              ; preds = %.lr.ph1043
  %763 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %763, label %764, label %770, !llvm.loop !145

764:                                              ; preds = %762
  %765 = load i32, ptr %22, align 4, !tbaa !103
  %766 = trunc i32 %765 to i16
  %767 = add nsw i32 %.08131042, 1
  %768 = sext i32 %.08131042 to i64
  %769 = getelementptr inbounds i16, ptr %755, i64 %768
  store i16 %766, ptr %769, align 2, !tbaa !135
  br label %770

770:                                              ; preds = %762, %764
  %.1814 = phi i32 [ %767, %764 ], [ %.08131042, %762 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  %771 = load i8, ptr %759, align 1, !tbaa !107
  %.not871 = icmp eq i8 %771, 0
  br i1 %.not871, label %.loopexit1034, label %.lr.ph1043

.loopexit1034:                                    ; preds = %770, %.thread1013
  %.08131038 = phi i32 [ %.08131042, %.thread1013 ], [ %.1814, %770 ]
  %772 = sext i32 %.08131038 to i64
  %773 = getelementptr inbounds i16, ptr %755, i64 %772
  store i16 0, ptr %773, align 2, !tbaa !135
  %774 = icmp sgt i32 %.08131038, 0
  br i1 %774, label %775, label %779

775:                                              ; preds = %.loopexit1034
  %776 = getelementptr inbounds i8, ptr %.07841080, i64 76
  %777 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.07841080, ptr noundef nonnull %776, ptr noundef nonnull %755, i32 noundef %.08131038)
  %778 = getelementptr inbounds i8, ptr %.07841080, i64 3700
  store i8 1, ptr %778, align 4, !tbaa !131
  br label %779

779:                                              ; preds = %.loopexit1034.thread, %775, %.loopexit1034
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %755)
  br label %780

780:                                              ; preds = %685, %749, %779, %691, %690, %680, %.critedge954, %608, %639, %631, %650, %674, %698, %748, %740, %744, %694, %656, %644, %616, %623, %603
  %.0811 = phi i1 [ false, %603 ], [ false, %608 ], [ false, %616 ], [ false, %623 ], [ false, %631 ], [ false, %639 ], [ false, %644 ], [ false, %650 ], [ false, %694 ], [ false, %698 ], [ false, %744 ], [ false, %740 ], [ false, %748 ], [ false, %674 ], [ false, %656 ], [ false, %.critedge954 ], [ false, %680 ], [ false, %685 ], [ false, %690 ], [ true, %691 ], [ false, %779 ], [ false, %749 ]
  %.1798 = phi i8 [ 0, %603 ], [ 0, %608 ], [ 0, %616 ], [ 0, %623 ], [ 0, %631 ], [ 0, %639 ], [ 0, %644 ], [ 0, %650 ], [ 0, %694 ], [ 0, %698 ], [ 0, %744 ], [ 0, %740 ], [ 0, %748 ], [ 0, %674 ], [ 0, %656 ], [ %683, %.critedge954 ], [ 1, %680 ], [ %.mux, %685 ], [ 0, %690 ], [ 0, %691 ], [ 0, %779 ], [ 0, %749 ]
  %.2787 = phi i8 [ %.07851002, %603 ], [ %.07851002, %608 ], [ %.07851002, %616 ], [ %.07851002, %623 ], [ %.07851002, %631 ], [ %.07851002, %639 ], [ %.07851002, %644 ], [ %.07851002, %650 ], [ %.07851002, %694 ], [ %.07851002, %698 ], [ %.07851002, %744 ], [ %.07851002, %740 ], [ %.07851002, %748 ], [ %.07851002, %674 ], [ %.07851002, %656 ], [ %.mux957, %.critedge954 ], [ 1, %680 ], [ %.mux1028, %685 ], [ %.07851002, %690 ], [ 1, %691 ], [ %.07851002, %779 ], [ %.07851002, %749 ]
  %781 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  %782 = select i1 %781, i1 %276, i1 %.0793.in
  %.pre1051 = load i32, ptr %167, align 8, !tbaa !89
  br label %783

783:                                              ; preds = %780, %495
  %784 = phi i32 [ %.pre1051, %780 ], [ %496, %495 ]
  %.1812 = phi i1 [ %.0811, %780 ], [ false, %495 ]
  %.2799 = phi i8 [ %.1798, %780 ], [ 0, %495 ]
  %.1794.in = phi i1 [ %782, %780 ], [ %.0793.in, %495 ]
  %.3788 = phi i8 [ %.2787, %780 ], [ %.07851002, %495 ]
  %785 = icmp eq i32 %784, %87
  br i1 %785, label %.thread1095, label %981

.thread1095:                                      ; preds = %502, %498, %783
  %.37881109 = phi i8 [ %.3788, %783 ], [ %.07851002, %498 ], [ %.07851002, %502 ]
  %.1794.in1107 = phi i1 [ %.1794.in, %783 ], [ %.0793.in, %498 ], [ %.0793.in, %502 ]
  %.27991103 = phi i8 [ %.2799, %783 ], [ 0, %498 ], [ 0, %502 ]
  %.18121102 = phi i1 [ %.1812, %783 ], [ false, %498 ], [ false, %502 ]
  br i1 %277, label %787, label %786

786:                                              ; preds = %.thread1095
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 3923, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

787:                                              ; preds = %.thread1095
  %.1812.not = xor i1 %.18121102, true
  %brmerge961 = or i1 %77, %.1812.not
  br i1 %brmerge961, label %818, label %788

788:                                              ; preds = %787
  %789 = getelementptr inbounds i8, ptr %.07841080, i64 56
  %790 = load ptr, ptr %789, align 8, !tbaa !94
  %791 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %790) #16
  %.not875 = icmp eq i32 %791, 0
  br i1 %.not875, label %818, label %792

792:                                              ; preds = %788
  %793 = getelementptr inbounds i8, ptr %.07841080, i64 48
  %794 = load i32, ptr %793, align 8, !tbaa !146
  %795 = add nsw i32 %794, -1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #15
  call void @_ZN8ImVectorItEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %23)
  %796 = icmp sgt i32 %794, 1
  br i1 %796, label %797, label %810

797:                                              ; preds = %792
  %798 = zext nneg i32 %795 to i64
  %799 = getelementptr inbounds i8, ptr %790, i64 %798
  %800 = invoke noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %790, ptr noundef %799)
          to label %801 unwind label %808

801:                                              ; preds = %797
  %802 = add nsw i32 %800, 1
  invoke void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %23, i32 noundef %802)
          to label %803 unwind label %808

803:                                              ; preds = %801
  %804 = getelementptr inbounds i8, ptr %23, i64 8
  %805 = load ptr, ptr %804, align 8, !tbaa !147
  %806 = load i32, ptr %23, align 8, !tbaa !148
  %807 = invoke noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %805, i32 noundef %806, ptr noundef %790, ptr noundef %799, ptr noundef null)
          to label %810 unwind label %808

808:                                              ; preds = %810, %803, %801, %797
  %809 = 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 } %809

810:                                              ; preds = %803, %792
  %811 = getelementptr inbounds i8, ptr %.07841080, i64 76
  %812 = getelementptr inbounds i8, ptr %23, i64 8
  %813 = load ptr, ptr %812, align 8, !tbaa !147
  %814 = load i32, ptr %23, align 8
  %815 = add nsw i32 %814, -1
  %816 = select i1 %796, i32 %815, i32 0
  invoke void @_ZN5ImStbL20stb_textedit_replaceEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %.07841080, ptr noundef nonnull %811, ptr noundef %813, i32 noundef %816)
          to label %817 unwind label %808

817:                                              ; preds = %810
  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 %818

818:                                              ; preds = %787, %788, %817
  %.0819 = phi i32 [ %795, %817 ], [ 0, %788 ], [ 0, %787 ]
  %.0817 = phi ptr [ %790, %817 ], [ null, %788 ], [ null, %787 ]
  br i1 %.18121102, label %819, label %.critedge963

819:                                              ; preds = %818
  %820 = trunc nuw i8 %.27991103 to i1
  %821 = and i32 %5, 32
  %822 = icmp ne i32 %821, 0
  %823 = and i1 %822, %820
  br i1 %823, label %.critedge963, label %953

.critedge963:                                     ; preds = %818, %819
  br i1 %77, label %837, label %824

824:                                              ; preds = %.critedge963
  %825 = getelementptr inbounds i8, ptr %.07841080, i64 64
  store i8 1, ptr %825, align 8, !tbaa !95
  %826 = getelementptr inbounds i8, ptr %.07841080, i64 32
  %827 = getelementptr inbounds i8, ptr %.07841080, i64 16
  %828 = load i32, ptr %827, align 8, !tbaa !105
  %829 = shl nsw i32 %828, 2
  %830 = or disjoint i32 %829, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %826, i32 noundef %830)
  %831 = getelementptr inbounds i8, ptr %.07841080, i64 40
  %832 = load ptr, ptr %831, align 8, !tbaa !106
  %833 = load i32, ptr %826, align 8, !tbaa !149
  %834 = getelementptr inbounds i8, ptr %.07841080, i64 24
  %835 = load ptr, ptr %834, align 8, !tbaa !96
  %836 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %832, i32 noundef %833, ptr noundef %835, ptr noundef null)
  br label %837

837:                                              ; preds = %824, %.critedge963
  %838 = and i32 %5, 448
  %.not876 = icmp eq i32 %838, 0
  br i1 %.not876, label %945, label %839

839:                                              ; preds = %837
  br i1 %82, label %841, label %840

840:                                              ; preds = %839
  call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 3964, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

841:                                              ; preds = %839
  br i1 %.not856, label %844, label %842

842:                                              ; preds = %841
  %843 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %843, label %.thread1017, label %844

844:                                              ; preds = %842, %841
  br i1 %.not854.not, label %849, label %845

845:                                              ; preds = %844
  %846 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %846, label %.thread1017, label %847

847:                                              ; preds = %845
  %848 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %848, label %.thread1017, label %849

849:                                              ; preds = %847, %844
  %850 = and i32 %5, 256
  %.not877 = icmp eq i32 %850, 0
  br i1 %.not877, label %945, label %.thread1017

.thread1017:                                      ; preds = %847, %845, %842, %849
  %.08221022 = phi i32 [ 256, %849 ], [ 128, %847 ], [ 128, %845 ], [ 64, %842 ]
  %.08231021 = phi i32 [ 22, %849 ], [ 4, %847 ], [ 3, %845 ], [ 0, %842 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #15
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %24)
  %851 = getelementptr inbounds i8, ptr %24, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %851, i8 0, i64 40, i1 false)
  store i32 %.08221022, ptr %24, align 8, !tbaa !150
  %852 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 %5, ptr %852, align 4, !tbaa !152
  %853 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %7, ptr %853, align 8, !tbaa !153
  %854 = getelementptr inbounds i8, ptr %24, i64 20
  store i32 %.08231021, ptr %854, align 4, !tbaa !154
  %855 = getelementptr inbounds i8, ptr %.07841080, i64 40
  %856 = load ptr, ptr %855, align 8, !tbaa !106
  %857 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %856, ptr %857, align 8, !tbaa !155
  %858 = getelementptr inbounds i8, ptr %.07841080, i64 8
  %859 = load i32, ptr %858, align 8, !tbaa !98
  %860 = getelementptr inbounds i8, ptr %24, i64 32
  store i32 %859, ptr %860, align 8, !tbaa !156
  %861 = getelementptr inbounds i8, ptr %.07841080, i64 68
  %862 = load i32, ptr %861, align 4, !tbaa !116
  %863 = getelementptr inbounds i8, ptr %24, i64 36
  store i32 %862, ptr %863, align 4, !tbaa !157
  %864 = getelementptr inbounds i8, ptr %24, i64 40
  %865 = getelementptr inbounds i8, ptr %.07841080, i64 16
  %866 = getelementptr inbounds i8, ptr %.07841080, i64 24
  %867 = load ptr, ptr %866, align 8, !tbaa !96
  %868 = getelementptr inbounds i8, ptr %.07841080, i64 76
  %869 = load i32, ptr %868, align 4, !tbaa !158
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds i16, ptr %867, i64 %870
  %872 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %867, ptr noundef %871)
  %873 = getelementptr inbounds i8, ptr %24, i64 44
  store i32 %872, ptr %873, align 4, !tbaa !159
  %874 = getelementptr inbounds i8, ptr %.07841080, i64 80
  %875 = load i32, ptr %874, align 4, !tbaa !143
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds i16, ptr %867, i64 %876
  %878 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %867, ptr noundef %877)
  %879 = getelementptr inbounds i8, ptr %24, i64 48
  store i32 %878, ptr %879, align 8, !tbaa !160
  %880 = getelementptr inbounds i8, ptr %.07841080, i64 84
  %881 = load i32, ptr %880, align 4, !tbaa !144
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds i16, ptr %867, i64 %882
  %884 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %867, ptr noundef %883)
  %885 = getelementptr inbounds i8, ptr %24, i64 52
  store i32 %884, ptr %885, align 4, !tbaa !161
  %886 = call noundef i32 %6(ptr noundef nonnull %24)
  %887 = load ptr, ptr %857, align 8, !tbaa !155
  %888 = load ptr, ptr %855, align 8, !tbaa !106
  %889 = icmp eq ptr %887, %888
  br i1 %889, label %891, label %890

890:                                              ; preds = %.thread1017
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.1, i32 noundef 4011, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

891:                                              ; preds = %.thread1017
  %892 = load i32, ptr %863, align 4, !tbaa !157
  %893 = load i32, ptr %861, align 4, !tbaa !116
  %894 = icmp eq i32 %892, %893
  br i1 %894, label %896, label %895

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

896:                                              ; preds = %891
  %897 = load i32, ptr %852, align 4, !tbaa !152
  %898 = icmp eq i32 %897, %5
  br i1 %898, label %900, label %899

899:                                              ; preds = %896
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.1, i32 noundef 4013, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

900:                                              ; preds = %896
  %901 = load i32, ptr %873, align 4, !tbaa !159
  %.not879 = icmp eq i32 %901, %872
  br i1 %.not879, label %907, label %902

902:                                              ; preds = %900
  %903 = sext i32 %901 to i64
  %904 = getelementptr inbounds i8, ptr %887, i64 %903
  %905 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %887, ptr noundef %904)
  store i32 %905, ptr %868, align 4, !tbaa !158
  %906 = getelementptr inbounds i8, ptr %.07841080, i64 3700
  store i8 1, ptr %906, align 4, !tbaa !131
  br label %907

907:                                              ; preds = %902, %900
  %908 = load i32, ptr %879, align 8, !tbaa !160
  %.not880 = icmp eq i32 %908, %878
  br i1 %.not880, label %914, label %909

909:                                              ; preds = %907
  %910 = load ptr, ptr %857, align 8, !tbaa !155
  %911 = sext i32 %908 to i64
  %912 = getelementptr inbounds i8, ptr %910, i64 %911
  %913 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %910, ptr noundef %912)
  store i32 %913, ptr %874, align 4, !tbaa !143
  br label %914

914:                                              ; preds = %909, %907
  %915 = load i32, ptr %885, align 4, !tbaa !161
  %.not881 = icmp eq i32 %915, %884
  br i1 %.not881, label %921, label %916

916:                                              ; preds = %914
  %917 = load ptr, ptr %857, align 8, !tbaa !155
  %918 = sext i32 %915 to i64
  %919 = getelementptr inbounds i8, ptr %917, i64 %918
  %920 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %917, ptr noundef %919)
  store i32 %920, ptr %880, align 4, !tbaa !144
  br label %921

921:                                              ; preds = %916, %914
  %922 = load i8, ptr %864, align 8, !tbaa !162, !range !37, !noundef !38
  %923 = trunc nuw i8 %922 to i1
  br i1 %923, label %924, label %944

924:                                              ; preds = %921
  %925 = load i32, ptr %860, align 8, !tbaa !156
  %926 = load ptr, ptr %857, align 8, !tbaa !155
  %927 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %926) #16
  %928 = trunc i64 %927 to i32
  %929 = icmp eq i32 %925, %928
  br i1 %929, label %931, label %930

930:                                              ; preds = %924
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.1, i32 noundef 4019, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

931:                                              ; preds = %924
  %932 = icmp sle i32 %925, %.0808
  %brmerge969 = or i1 %.not860, %932
  br i1 %brmerge969, label %937, label %933

933:                                              ; preds = %931
  %934 = load i32, ptr %865, align 8, !tbaa !105
  %935 = sub i32 %925, %.0808
  %936 = add nsw i32 %935, %934
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %865, i32 noundef %936)
  %.pre1052 = load ptr, ptr %857, align 8, !tbaa !155
  br label %937

937:                                              ; preds = %931, %933
  %938 = phi ptr [ %926, %931 ], [ %.pre1052, %933 ]
  %939 = load ptr, ptr %866, align 8, !tbaa !96
  %940 = load i32, ptr %865, align 8, !tbaa !105
  %941 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %939, i32 noundef %940, ptr noundef %938, ptr noundef null, ptr noundef null)
  %942 = getelementptr inbounds i8, ptr %.07841080, i64 4
  store i32 %941, ptr %942, align 4, !tbaa !97
  %943 = load i32, ptr %860, align 8, !tbaa !156
  store i32 %943, ptr %858, align 8, !tbaa !98
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.07841080)
  br label %944

944:                                              ; preds = %937, %921
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #15
  br label %945

945:                                              ; preds = %849, %944, %837
  br i1 %77, label %953, label %946

946:                                              ; preds = %945
  %947 = getelementptr inbounds i8, ptr %.07841080, i64 40
  %948 = load ptr, ptr %947, align 8, !tbaa !106
  %949 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %948, ptr noundef nonnull dereferenceable(1) %2) #16
  %.not882 = icmp eq i32 %949, 0
  br i1 %.not882, label %953, label %950

950:                                              ; preds = %946
  %951 = getelementptr inbounds i8, ptr %.07841080, i64 8
  %952 = load i32, ptr %951, align 8, !tbaa !98
  br label %953

953:                                              ; preds = %945, %946, %950, %819
  %.1820 = phi i32 [ %.0819, %945 ], [ %952, %950 ], [ %.0819, %946 ], [ %.0819, %819 ]
  %.1818 = phi ptr [ %.0817, %945 ], [ %948, %950 ], [ %.0817, %946 ], [ %.0817, %819 ]
  %.not883 = icmp ne ptr %.1818, null
  br i1 %.not883, label %954, label %978

954:                                              ; preds = %953
  %955 = icmp sgt i32 %.1820, -1
  br i1 %955, label %957, label %956

956:                                              ; preds = %954
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.1, i32 noundef 4043, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

957:                                              ; preds = %954
  br i1 %.not860, label %974, label %958

958:                                              ; preds = %957
  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 !150
  %959 = getelementptr inbounds i8, ptr %25, i64 4
  store i32 %5, ptr %959, align 4, !tbaa !152
  %960 = getelementptr inbounds i8, ptr %25, i64 24
  store ptr %2, ptr %960, align 8, !tbaa !155
  %961 = getelementptr inbounds i8, ptr %25, i64 32
  store i32 %.1820, ptr %961, align 8, !tbaa !156
  %962 = add nuw nsw i32 %.1820, 1
  %963 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %962)
  %964 = getelementptr inbounds i8, ptr %25, i64 36
  store i32 %963, ptr %964, align 4, !tbaa !157
  %965 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %7, ptr %965, align 8, !tbaa !153
  %966 = call noundef i32 %6(ptr noundef nonnull %25)
  %967 = load ptr, ptr %960, align 8, !tbaa !155
  %968 = load i32, ptr %964, align 4, !tbaa !157
  %969 = load i32, ptr %961, align 8, !tbaa !156
  %970 = add nsw i32 %968, -1
  %971 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %969, i32 noundef %970)
  %.not884 = icmp sgt i32 %971, %968
  br i1 %.not884, label %972, label %973

972:                                              ; preds = %958
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.1, i32 noundef 4057, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

973:                                              ; preds = %958
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %25) #15
  br label %974

974:                                              ; preds = %973, %957
  %.2821 = phi i32 [ %971, %973 ], [ %.1820, %957 ]
  %.0779 = phi i32 [ %968, %973 ], [ %3, %957 ]
  %.0776 = phi ptr [ %967, %973 ], [ %2, %957 ]
  %975 = add nsw i32 %.2821, 1
  %976 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %975, i32 noundef %.0779)
  %977 = sext i32 %976 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0776, ptr noundef nonnull %.1818, i64 noundef %977)
  br label %978

978:                                              ; preds = %974, %953
  %.1777 = phi ptr [ %.0776, %974 ], [ %2, %953 ]
  %979 = getelementptr inbounds i8, ptr %.07841080, i64 3704
  store i32 0, ptr %979, align 8, !tbaa !117
  %980 = getelementptr inbounds i8, ptr %.07841080, i64 3712
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %980, i8 0, i64 16, i1 false)
  br label %981

981:                                              ; preds = %978, %783
  %.37881108 = phi i8 [ %.37881109, %978 ], [ %.3788, %783 ]
  %.1794.in1106 = phi i1 [ %.1794.in1107, %978 ], [ %.1794.in, %783 ]
  %.27991104 = phi i8 [ %.27991103, %978 ], [ %.2799, %783 ]
  %.1796 = phi i1 [ %.not883, %978 ], [ false, %783 ]
  %.2778 = phi ptr [ %.1777, %978 ], [ %2, %783 ]
  %982 = trunc nuw i8 %.37881108 to i1
  br i1 %982, label %983, label %987

983:                                              ; preds = %981
  %984 = load i32, ptr %167, align 8, !tbaa !89
  %985 = icmp eq i32 %984, %87
  br i1 %985, label %986, label %987

986:                                              ; preds = %983
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %987

987:                                              ; preds = %986, %983, %981
  br i1 %66, label %993, label %988

988:                                              ; preds = %987
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %87, i32 noundef 1)
  %.sroa.092.0.copyload = load <2 x float>, ptr %11, align 8
  %989 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %989, align 8
  %990 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %991 = getelementptr inbounds i8, ptr %75, i64 5544
  %992 = load float, ptr %991, align 4, !tbaa !78
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %990, i1 noundef zeroext true, float noundef %992)
  br label %993

993:                                              ; preds = %988, %987
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #15
  %994 = load float, ptr %11, align 8, !tbaa !123
  %995 = getelementptr inbounds i8, ptr %11, i64 4
  %996 = load float, ptr %995, align 4, !tbaa !163
  %997 = fadd float %.sroa.0437.1, %994
  %998 = fadd float %.sroa.12.0.copyload, %996
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %26, float noundef %994, float noundef %996, float noundef %997, float noundef %998)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #15
  br i1 %66, label %999, label %1002

999:                                              ; preds = %993
  %1000 = getelementptr inbounds i8, ptr %.1783, i64 208
  %1001 = load i64, ptr %1000, align 8
  br label %1005

1002:                                             ; preds = %993
  %1003 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %97)
  %1004 = bitcast <2 x float> %1003 to i64
  br label %1005

1005:                                             ; preds = %1002, %999
  %storemerge885 = phi i64 [ %1001, %999 ], [ %1004, %1002 ]
  store i64 %storemerge885, 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 %306, label %1006, label %1009

1006:                                             ; preds = %1005
  %1007 = getelementptr inbounds i8, ptr %.07841080, i64 40
  %1008 = load ptr, ptr %1007, align 8, !tbaa !106
  br label %1009

1009:                                             ; preds = %1005, %1006
  %1010 = phi ptr [ %1008, %1006 ], [ %.2778, %1005 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #15
  store ptr null, ptr %29, align 8, !tbaa !39
  br i1 %316, label %1011, label %1014

1011:                                             ; preds = %1009
  %1012 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #16
  %1013 = getelementptr inbounds i8, ptr %1, i64 %1012
  store ptr %1013, ptr %29, align 8, !tbaa !39
  br label %1014

1014:                                             ; preds = %1011, %1009
  %1015 = phi ptr [ %1013, %1011 ], [ null, %1009 ]
  %.0809 = phi ptr [ %1, %1011 ], [ %1010, %1009 ]
  %brmerge970 = select i1 %276, i1 true, i1 %.1794.in1106
  br i1 %brmerge970, label %1016, label %1260

1016:                                             ; preds = %1014
  br i1 %277, label %1018, label %1017

1017:                                             ; preds = %1016
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 4103, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1018:                                             ; preds = %1016
  br i1 %316, label %1024, label %1019

1019:                                             ; preds = %1018
  %1020 = getelementptr inbounds i8, ptr %.07841080, i64 8
  %1021 = load i32, ptr %1020, align 8, !tbaa !98
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds i8, ptr %.0809, i64 %1022
  store ptr %1023, ptr %29, align 8, !tbaa !39
  br label %1024

1024:                                             ; preds = %1019, %1018
  %.pre10581060 = phi ptr [ %1023, %1019 ], [ %1015, %1018 ]
  %1025 = getelementptr inbounds i8, ptr %.07841080, i64 24
  %1026 = load ptr, ptr %1025, 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 %276, label %1027, label %1032

1027:                                             ; preds = %1024
  %1028 = getelementptr inbounds i8, ptr %.07841080, i64 76
  %1029 = load i32, ptr %1028, align 4, !tbaa !158
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds i16, ptr %1026, i64 %1030
  br label %1032

1032:                                             ; preds = %1027, %1024
  %.sroa.069.0 = phi ptr [ %1031, %1027 ], [ null, %1024 ]
  %.sroa.063.0 = phi i32 [ -1, %1027 ], [ %.sroa.063.0.copyload, %1024 ]
  %.0804 = phi i32 [ 1, %1027 ], [ 0, %1024 ]
  br i1 %.1794.in1106, label %1033, label %1042

1033:                                             ; preds = %1032
  %1034 = getelementptr inbounds i8, ptr %.07841080, i64 80
  %1035 = load i32, ptr %1034, align 4, !tbaa !143
  %1036 = getelementptr inbounds i8, ptr %.07841080, i64 84
  %1037 = load i32, ptr %1036, align 4, !tbaa !144
  %1038 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1035, i32 noundef %1037)
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds i16, ptr %1026, i64 %1039
  %1041 = add nuw nsw i32 %.0804, 1
  br label %1042

1042:                                             ; preds = %1033, %1032
  %.sroa.7.0 = phi ptr [ %1040, %1033 ], [ null, %1032 ]
  %.sroa.9.0 = phi i32 [ -1, %1033 ], [ %.sroa.9.0.copyload, %1032 ]
  %.1805 = phi i32 [ %1041, %1033 ], [ %.0804, %1032 ]
  %.lobit = lshr exact i32 %65, 20
  %1043 = add nuw nsw i32 %.1805, %.lobit
  br label %1044

1044:                                             ; preds = %1059, %1042
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1042 ], [ %.sroa.9.2, %1059 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1042 ], [ %.sroa.063.3, %1059 ]
  %.2806 = phi i32 [ %1043, %1042 ], [ %.4, %1059 ]
  %.0801 = phi i32 [ 0, %1042 ], [ %.1802, %1059 ]
  %.0800 = phi ptr [ %1026, %1042 ], [ %1060, %1059 ]
  %1045 = load i16, ptr %.0800, align 2, !tbaa !135
  switch i16 %1045, label %1059 [
    i16 0, label %1061
    i16 10, label %1046
  ]

1046:                                             ; preds = %1044
  %1047 = add nsw i32 %.0801, 1
  %1048 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1048, label %1049, label %1053

1049:                                             ; preds = %1046
  %.not887 = icmp ult ptr %.0800, %.sroa.069.0
  br i1 %.not887, label %1053, label %1050

1050:                                             ; preds = %1049
  %1051 = add nsw i32 %.2806, -1
  %1052 = icmp slt i32 %.2806, 2
  br i1 %1052, label %1061, label %1053

1053:                                             ; preds = %1050, %1049, %1046
  %.sroa.063.2 = phi i32 [ %1047, %1050 ], [ -1, %1049 ], [ %.sroa.063.1, %1046 ]
  %.3807 = phi i32 [ %1051, %1050 ], [ %.2806, %1049 ], [ %.2806, %1046 ]
  %1054 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1054, label %1055, label %1059

1055:                                             ; preds = %1053
  %.not888 = icmp ult ptr %.0800, %.sroa.7.0
  br i1 %.not888, label %1059, label %1056

1056:                                             ; preds = %1055
  %1057 = add nsw i32 %.3807, -1
  %1058 = icmp slt i32 %.3807, 2
  br i1 %1058, label %1061, label %1059

1059:                                             ; preds = %1044, %1056, %1055, %1053
  %.sroa.9.2 = phi i32 [ %1047, %1056 ], [ -1, %1055 ], [ %.sroa.9.1, %1053 ], [ %.sroa.9.1, %1044 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1056 ], [ %.sroa.063.2, %1055 ], [ %.sroa.063.2, %1053 ], [ %.sroa.063.1, %1044 ]
  %.4 = phi i32 [ %1057, %1056 ], [ %.3807, %1055 ], [ %.3807, %1053 ], [ %.2806, %1044 ]
  %.1802 = phi i32 [ %1047, %1056 ], [ %1047, %1055 ], [ %1047, %1053 ], [ %.0801, %1044 ]
  %1060 = getelementptr inbounds i8, ptr %.0800, i64 2
  br label %1044, !llvm.loop !164

1061:                                             ; preds = %1056, %1050, %1044
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1044 ], [ %.sroa.9.1, %1050 ], [ %1047, %1056 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1044 ], [ %1047, %1050 ], [ %.sroa.063.2, %1056 ]
  %.2803 = phi i32 [ %.0801, %1044 ], [ %1047, %1050 ], [ %1047, %1056 ]
  %1062 = add nsw i32 %.2803, 1
  %1063 = icmp eq i32 %.sroa.063.4, -1
  %spec.select971 = select i1 %1063, i32 %1062, i32 %.sroa.063.4
  %1064 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1064, i32 %1062, i32 %.sroa.9.3
  %1065 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1026)
  %1066 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1065, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1066, i64 0
  store float %.sroa.045.0.vec.extract, ptr %30, align 4, !tbaa !165
  %1067 = sitofp i32 %spec.select971 to float
  %1068 = getelementptr inbounds i8, ptr %75, i64 6440
  %1069 = load float, ptr %1068, align 8, !tbaa !40
  %1070 = fmul float %1069, %1067
  %1071 = getelementptr inbounds i8, ptr %30, i64 4
  store float %1070, ptr %1071, align 4, !tbaa !166
  %1072 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1072, label %1073, label %1080

1073:                                             ; preds = %1061
  %1074 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1026)
  %1075 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1074, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1075, i64 0
  store float %.sroa.044.0.vec.extract, ptr %31, align 4, !tbaa !165
  %1076 = uitofp nneg i32 %.sroa.9.4 to float
  %1077 = load float, ptr %1068, align 8, !tbaa !40
  %1078 = fmul float %1077, %1076
  %1079 = getelementptr inbounds i8, ptr %31, i64 4
  store float %1078, ptr %1079, align 4, !tbaa !166
  br label %1080

1080:                                             ; preds = %1073, %1061
  %1081 = phi float [ %1077, %1073 ], [ %1069, %1061 ]
  br i1 %66, label %1082, label %1086

1082:                                             ; preds = %1080
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #15
  %1083 = sitofp i32 %1062 to float
  %1084 = fmul float %1081, %1083
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %.sroa.0437.1, float noundef %1084)
  %1085 = load i64, ptr %32, align 8
  store i64 %1085, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #15
  br label %1086

1086:                                             ; preds = %1082, %1080
  br i1 %276, label %1087, label %1134

1087:                                             ; preds = %1086
  %1088 = getelementptr inbounds i8, ptr %.07841080, i64 3700
  %1089 = load i8, ptr %1088, align 4, !tbaa !131, !range !37, !noundef !38
  %1090 = trunc nuw i8 %1089 to i1
  br i1 %1090, label %1091, label %1134

1091:                                             ; preds = %1087
  %1092 = and i32 %5, 4096
  %.not889 = icmp eq i32 %1092, 0
  br i1 %.not889, label %1093, label %1111

1093:                                             ; preds = %1091
  %1094 = fmul float %.sroa.0437.1, 2.500000e-01
  %1095 = load float, ptr %30, align 4, !tbaa !165
  %1096 = getelementptr inbounds i8, ptr %.07841080, i64 72
  %1097 = load float, ptr %1096, align 8, !tbaa !100
  %1098 = fcmp olt float %1095, %1097
  br i1 %1098, label %1099, label %1104

1099:                                             ; preds = %1093
  %1100 = fsub float %1095, %1094
  %1101 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1100)
  %1102 = fptosi float %1101 to i32
  %1103 = sitofp i32 %1102 to float
  store float %1103, ptr %1096, align 8, !tbaa !100
  br label %1113

1104:                                             ; preds = %1093
  %1105 = fsub float %1095, %.sroa.0437.1
  %1106 = fcmp ult float %1105, %1097
  br i1 %1106, label %1113, label %1107

1107:                                             ; preds = %1104
  %1108 = fadd float %1094, %1105
  %1109 = fptosi float %1108 to i32
  %1110 = sitofp i32 %1109 to float
  store float %1110, ptr %1096, align 8, !tbaa !100
  br label %1113

1111:                                             ; preds = %1091
  %1112 = getelementptr inbounds i8, ptr %.07841080, i64 72
  store float 0.000000e+00, ptr %1112, align 8, !tbaa !100
  br label %1113

1113:                                             ; preds = %1099, %1107, %1104, %1111
  br i1 %66, label %1114, label %1133

1114:                                             ; preds = %1113
  %1115 = getelementptr inbounds i8, ptr %.1783, i64 88
  %1116 = load float, ptr %1115, align 4, !tbaa !141
  %1117 = load float, ptr %1071, align 4, !tbaa !166
  %1118 = load float, ptr %1068, align 8, !tbaa !40
  %1119 = fsub float %1117, %1118
  %1120 = fcmp olt float %1119, %1116
  br i1 %1120, label %1121, label %1123

1121:                                             ; preds = %1114
  %1122 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1119)
  %.pre1053 = load float, ptr %1115, align 4, !tbaa !141
  br label %1127

1123:                                             ; preds = %1114
  %1124 = fsub float %1117, %.sroa.12.0.copyload
  %1125 = fcmp ult float %1124, %1116
  br i1 %1125, label %1127, label %1126

1126:                                             ; preds = %1123
  br label %1127

1127:                                             ; preds = %1123, %1126, %1121
  %1128 = phi float [ %.pre1053, %1121 ], [ %1116, %1126 ], [ %1116, %1123 ]
  %.0792 = phi float [ %1122, %1121 ], [ %1124, %1126 ], [ %1116, %1123 ]
  %1129 = fsub float %1128, %.0792
  %1130 = getelementptr inbounds i8, ptr %27, i64 4
  %1131 = load float, ptr %1130, align 4, !tbaa !166
  %1132 = fadd float %1131, %1129
  store float %1132, ptr %1130, align 4, !tbaa !166
  store float %.0792, ptr %1115, align 4, !tbaa !141
  br label %1133

1133:                                             ; preds = %1127, %1113
  store i8 0, ptr %1088, align 4, !tbaa !131
  br label %1134

1134:                                             ; preds = %1133, %1087, %1086
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #15
  %1135 = getelementptr inbounds i8, ptr %.07841080, i64 72
  %1136 = load float, ptr %1135, align 8, !tbaa !100
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %33, float noundef %1136, float noundef 0.000000e+00)
  br i1 %.1794.in1106, label %1137, label %1206

1137:                                             ; preds = %1134
  %1138 = getelementptr inbounds i8, ptr %.07841080, i64 80
  %1139 = load i32, ptr %1138, align 4, !tbaa !143
  %1140 = getelementptr inbounds i8, ptr %.07841080, i64 84
  %1141 = load i32, ptr %1140, align 4, !tbaa !144
  %1142 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1139, i32 noundef %1141)
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr inbounds i16, ptr %1026, i64 %1143
  %1145 = load i32, ptr %1138, align 4, !tbaa !143
  %1146 = load i32, ptr %1140, align 4, !tbaa !144
  %1147 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1145, i32 noundef %1146)
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds i16, ptr %1026, i64 %1148
  %1150 = select i1 %276, float 1.000000e+00, float 0x3FE3333340000000
  %1151 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 42, float noundef %1150)
  %1152 = select i1 %66, float 0.000000e+00, float -1.000000e+00
  %1153 = select i1 %66, 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
  %1154 = 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> %1154, ptr %35, align 8
  %1155 = 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> %1155, 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 %1144, ptr %36, align 8, !tbaa !39
  %1156 = getelementptr inbounds i8, ptr %34, i64 4
  %1157 = icmp slt i32 %1142, %1147
  br i1 %1157, label %.lr.ph1044, label %._crit_edge

.lr.ph1044:                                       ; preds = %1137
  %1158 = extractelement <2 x float> %1155, i64 1
  %1159 = getelementptr inbounds i8, ptr %26, i64 12
  %1160 = getelementptr inbounds i8, ptr %26, i64 4
  %1161 = getelementptr inbounds i8, ptr %75, i64 6432
  %1162 = getelementptr inbounds i8, ptr %.1783, i64 688
  %1163 = getelementptr inbounds i8, ptr %37, i64 8
  %.pre1054 = load float, ptr %1068, align 8, !tbaa !40
  br label %1164

1164:                                             ; preds = %.lr.ph1044, %.loopexit
  %1165 = phi ptr [ %1144, %.lr.ph1044 ], [ %1198, %.loopexit ]
  %1166 = phi float [ %1158, %.lr.ph1044 ], [ %1204, %.loopexit ]
  %1167 = phi float [ %.pre1054, %.lr.ph1044 ], [ %1200, %.loopexit ]
  %1168 = load float, ptr %1159, align 4, !tbaa !167
  %1169 = fadd float %1168, %1167
  %1170 = fcmp ogt float %1166, %1169
  br i1 %1170, label %._crit_edge.loopexit, label %1171

1171:                                             ; preds = %1164
  %1172 = load float, ptr %1160, align 4, !tbaa !168
  %1173 = fcmp olt float %1166, %1172
  br i1 %1173, label %.preheader, label %1180

.preheader:                                       ; preds = %1171, %1176
  %1174 = phi ptr [ %1177, %1176 ], [ %1165, %1171 ]
  %1175 = icmp ult ptr %1174, %1149
  br i1 %1175, label %1176, label %.loopexit

1176:                                             ; preds = %.preheader
  %1177 = getelementptr inbounds i8, ptr %1174, i64 2
  store ptr %1177, ptr %36, align 8, !tbaa !39
  %1178 = load i16, ptr %1174, align 2, !tbaa !135
  %1179 = icmp eq i16 %1178, 10
  br i1 %1179, label %.loopexit, label %.preheader, !llvm.loop !169

1180:                                             ; preds = %1171
  %1181 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1165, ptr noundef nonnull %1149, ptr noundef nonnull %36, ptr noundef null, i1 noundef zeroext true)
  %.sroa.028.0.vec.extract = extractelement <2 x float> %1181, i64 0
  %1182 = fcmp ugt float %.sroa.028.0.vec.extract, 0.000000e+00
  br i1 %1182, label %1189, label %1183

1183:                                             ; preds = %1180
  %1184 = load ptr, ptr %1161, align 8, !tbaa !108
  %1185 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(114) %1184, i16 noundef zeroext 32)
  %1186 = fmul float %1185, 5.000000e-01
  %1187 = fptosi float %1186 to i32
  %1188 = sitofp i32 %1187 to float
  br label %1189

1189:                                             ; preds = %1183, %1180
  %.sroa.028.0.vec.extract31.pre-phi = phi float [ %1188, %1183 ], [ %.sroa.028.0.vec.extract, %1180 ]
  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
  %1190 = load float, ptr %1068, align 8, !tbaa !40
  %1191 = fsub float %1152, %1190
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %39, float noundef 0.000000e+00, float noundef %1191)
  %1192 = 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> %1192, 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 %1153)
  %1193 = 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> %1193, 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)
  %1194 = 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 %1194, label %1195, label %1197

1195:                                             ; preds = %1189
  %1196 = load ptr, ptr %1162, align 8, !tbaa !170
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1196, ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %1163, i32 noundef %1151, float noundef 0.000000e+00, i32 noundef 15)
  br label %1197

1197:                                             ; preds = %1195, %1189
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #15
  %.pre1055 = load float, ptr %1068, align 8, !tbaa !40
  %.pre1056 = load float, ptr %1156, align 4, !tbaa !166
  %.pre1057 = load ptr, ptr %36, align 8, !tbaa !39
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1176, %1197
  %1198 = phi ptr [ %.pre1057, %1197 ], [ %1174, %.preheader ], [ %1177, %1176 ]
  %1199 = phi float [ %.pre1056, %1197 ], [ %1166, %1176 ], [ %1166, %.preheader ]
  %1200 = phi float [ %.pre1055, %1197 ], [ %1167, %1176 ], [ %1167, %.preheader ]
  %1201 = load float, ptr %27, align 8, !tbaa !165
  %1202 = load float, ptr %33, align 4, !tbaa !165
  %1203 = fsub float %1201, %1202
  store float %1203, ptr %34, align 8, !tbaa !165
  %1204 = fadd float %1200, %1199
  store float %1204, ptr %1156, align 4, !tbaa !166
  %1205 = icmp ult ptr %1198, %1149
  br i1 %1205, label %1164, label %._crit_edge.loopexit, !llvm.loop !171

._crit_edge.loopexit:                             ; preds = %1164, %.loopexit
  %.pre1058.pre.pre = load ptr, ptr %29, align 8, !tbaa !39
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1137
  %.pre1058.pre = phi ptr [ %.pre1058.pre.pre, %._crit_edge.loopexit ], [ %.pre10581060, %1137 ]
  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 %1206

1206:                                             ; preds = %._crit_edge, %1134
  %.pre1058 = phi ptr [ %.pre1058.pre, %._crit_edge ], [ %.pre10581060, %1134 ]
  br i1 %66, label %1212, label %1207

1207:                                             ; preds = %1206
  %1208 = ptrtoint ptr %.pre1058 to i64
  %1209 = ptrtoint ptr %.0809 to i64
  %1210 = sub i64 %1208, %1209
  %1211 = icmp slt i64 %1210, 2097152
  br i1 %1211, label %1212, label %1221

1212:                                             ; preds = %1207, %1206
  %. = phi ptr [ %26, %1207 ], [ null, %1206 ]
  %1213 = zext i1 %316 to i32
  %1214 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1213, float noundef 1.000000e+00)
  %1215 = getelementptr inbounds i8, ptr %.1783, i64 688
  %1216 = load ptr, ptr %1215, align 8, !tbaa !170
  %1217 = getelementptr inbounds i8, ptr %75, i64 6432
  %1218 = load ptr, ptr %1217, align 8, !tbaa !108
  %1219 = load float, ptr %1068, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #15
  %1220 = 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> %1220, ptr %44, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1216, ptr noundef %1218, float noundef %1219, ptr noundef nonnull align 4 dereferenceable(8) %44, i32 noundef %1214, ptr noundef %.0809, ptr noundef %.pre1058, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #15
  br label %1221

1221:                                             ; preds = %1212, %1207
  br i1 %276, label %1222, label %1259

1222:                                             ; preds = %1221
  %1223 = getelementptr inbounds i8, ptr %75, i64 24
  %1224 = load float, ptr %1223, align 8, !tbaa !172
  %1225 = getelementptr inbounds i8, ptr %.07841080, i64 3696
  %1226 = load float, ptr %1225, align 8, !tbaa !173
  %1227 = fadd float %1224, %1226
  store float %1227, ptr %1225, align 8, !tbaa !173
  %1228 = getelementptr inbounds i8, ptr %75, i64 202
  %1229 = load i8, ptr %1228, align 2, !tbaa !174, !range !37, !noundef !38
  %1230 = trunc nuw i8 %1229 to i1
  %1231 = fcmp ugt float %1227, 0.000000e+00
  %or.cond972 = select i1 %1230, i1 %1231, i1 false
  br i1 %or.cond972, label %1232, label %1235

1232:                                             ; preds = %1222
  %1233 = call float @fmodf(float noundef %1227, float noundef 0x3FF3333340000000) #15
  %1234 = fcmp ole float %1233, 0x3FE99999A0000000
  br label %1235

1235:                                             ; preds = %1232, %1222
  %1236 = phi i1 [ true, %1222 ], [ %1234, %1232 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #15
  %1237 = 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> %1237, ptr %45, align 8
  %1238 = 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> %1238, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1238, i64 1
  %1239 = load float, ptr %1068, align 8, !tbaa !40
  %1240 = fsub float %.sroa.0.4.vec.extract, %1239
  %1241 = fadd float %1240, 5.000000e-01
  %1242 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1243 = 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 %1241, float noundef %1242, float noundef %1243)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #15
  br i1 %1236, label %1244, label %.critedge13

1244:                                             ; preds = %1235
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %47, ptr noundef nonnull align 4 dereferenceable(16) %26)
  %1245 = 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 %1245, label %1246, label %1251

1246:                                             ; preds = %1244
  %1247 = getelementptr inbounds i8, ptr %.1783, i64 688
  %1248 = load ptr, ptr %1247, align 8, !tbaa !170
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #15
  %1249 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %46)
  store <2 x float> %1249, ptr %48, align 8
  %1250 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1248, ptr noundef nonnull align 4 dereferenceable(8) %46, ptr noundef nonnull align 4 dereferenceable(8) %48, i32 noundef %1250, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #15
  br label %1251

.critedge13:                                      ; preds = %1235
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #15
  br label %1251

1251:                                             ; preds = %.critedge13, %1246, %1244
  br i1 %77, label %1258, label %1252

1252:                                             ; preds = %1251
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #15
  %1253 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1254 = load float, ptr %1068, align 8, !tbaa !40
  %1255 = fsub float %.sroa.0.4.vec.extract, %1254
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %1253, float noundef %1255)
  %1256 = getelementptr inbounds i8, ptr %75, i64 12176
  %1257 = load i64, ptr %49, align 8
  store i64 %1257, ptr %1256, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #15
  br label %1258

1258:                                             ; preds = %1252, %1251
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #15
  br label %1259

1259:                                             ; preds = %1258, %1221
  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 %1295

1260:                                             ; preds = %1014
  br i1 %66, label %.critedge974, label %1261

1261:                                             ; preds = %1260
  br i1 %316, label %1279, label %1262

1262:                                             ; preds = %1261
  %1263 = load i32, ptr %167, align 8, !tbaa !89
  %1264 = icmp eq i32 %1263, %87
  br i1 %1264, label %1265, label %1270

1265:                                             ; preds = %1262
  %1266 = getelementptr inbounds i8, ptr %.07841080, i64 8
  %1267 = load i32, ptr %1266, align 8, !tbaa !98
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds i8, ptr %.0809, i64 %1268
  store ptr %1269, ptr %29, align 8, !tbaa !39
  br label %1279

1270:                                             ; preds = %1262
  %1271 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0809) #16
  %1272 = getelementptr inbounds i8, ptr %.0809, i64 %1271
  store ptr %1272, ptr %29, align 8, !tbaa !39
  br label %1279

.critedge974:                                     ; preds = %1260
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #15
  %1273 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0809, ptr noundef nonnull %29)
  %1274 = sitofp i32 %1273 to float
  %1275 = getelementptr inbounds i8, ptr %75, i64 6440
  %1276 = load float, ptr %1275, align 8, !tbaa !40
  %1277 = fmul float %1276, %1274
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %50, float noundef %.sroa.0437.1, float noundef %1277)
  %1278 = load i64, ptr %50, align 8
  store i64 %1278, ptr %28, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #15
  br label %1285

1279:                                             ; preds = %1261, %1265, %1270
  %1280 = phi ptr [ %1015, %1261 ], [ %1269, %1265 ], [ %1272, %1270 ]
  %1281 = ptrtoint ptr %1280 to i64
  %1282 = ptrtoint ptr %.0809 to i64
  %1283 = sub i64 %1281, %1282
  %1284 = icmp slt i64 %1283, 2097152
  br i1 %1284, label %1285, label %.thread1023

1285:                                             ; preds = %.critedge974, %1279
  %.14 = phi ptr [ %26, %1279 ], [ null, %.critedge974 ]
  %1286 = zext i1 %316 to i32
  %1287 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1286, float noundef 1.000000e+00)
  %1288 = getelementptr inbounds i8, ptr %.1783, i64 688
  %1289 = load ptr, ptr %1288, align 8, !tbaa !170
  %1290 = getelementptr inbounds i8, ptr %75, i64 6432
  %1291 = load ptr, ptr %1290, align 8, !tbaa !108
  %1292 = getelementptr inbounds i8, ptr %75, i64 6440
  %1293 = load float, ptr %1292, align 8, !tbaa !40
  %1294 = load ptr, ptr %29, align 8, !tbaa !39
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1289, ptr noundef %1291, float noundef %1293, ptr noundef nonnull align 4 dereferenceable(8) %27, i32 noundef %1287, ptr noundef %.0809, ptr noundef %1294, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1295

1295:                                             ; preds = %1285, %1259
  br i1 %66, label %1296, label %.thread1023

1296:                                             ; preds = %1295
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #15
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #15
  %1297 = getelementptr inbounds i8, ptr %75, i64 6440
  %1298 = load float, ptr %1297, align 8, !tbaa !40
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef 0.000000e+00, float noundef %1298)
  %1299 = 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> %1299, 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 %.thread1023

.thread1023:                                      ; preds = %1279, %1296, %1295
  br i1 %brmerge904, label %1300, label %.thread1024

.thread1024:                                      ; preds = %.thread1023
  call void @_ZN5ImGui7PopFontEv()
  br label %1306

1300:                                             ; preds = %.thread1023
  %1301 = getelementptr inbounds i8, ptr %75, i64 12248
  %1302 = load i8, ptr %1301, align 8, !tbaa !175, !range !37, !noundef !38
  %1303 = trunc nuw i8 %1302 to i1
  br i1 %1303, label %1304, label %1306

1304:                                             ; preds = %1300
  %1305 = load ptr, ptr %29, align 8, !tbaa !39
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %27, ptr noundef %.0809, ptr noundef %1305)
  br label %1306

1306:                                             ; preds = %.thread1024, %1304, %1300
  br i1 %103, label %1307, label %1317

1307:                                             ; preds = %1306
  %1308 = getelementptr inbounds i8, ptr %11, i64 8
  %1309 = load float, ptr %1308, align 8, !tbaa !176
  %1310 = getelementptr inbounds i8, ptr %75, i64 5560
  %1311 = load float, ptr %1310, align 4, !tbaa !76
  %1312 = fadd float %1309, %1311
  %1313 = load float, ptr %995, align 4, !tbaa !163
  %1314 = load float, ptr %98, align 4, !tbaa !75
  %1315 = fadd float %1313, %1314
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef %1312, float noundef %1315)
  %1316 = load <2 x float>, ptr %53, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1316, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1317

1317:                                             ; preds = %1307, %1306
  %1318 = and i32 %5, 2097152
  %.not890 = icmp eq i32 %1318, 0
  %or.cond977 = and i1 %.not890, %.1796
  br i1 %or.cond977, label %1319, label %1320

1319:                                             ; preds = %1317
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %87)
  br label %1320

1320:                                             ; preds = %1317, %1319
  %1321 = and i32 %5, 32
  %.not891 = icmp eq i32 %1321, 0
  %1322 = trunc nuw i8 %.27991104 to i1
  %.1 = select i1 %.not891, i1 %.1796, i1 %1322
  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 %1323

1323:                                             ; preds = %138, %139, %1320, %118
  %.2 = phi i1 [ %.1, %1320 ], [ false, %138 ], [ false, %118 ], [ false, %139 ]
  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 %1324

1324:                                             ; preds = %8, %1323
  %.3 = phi i1 [ %.2, %1323 ], [ 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 noundef i32 @_ZN5ImGui20GetMergedKeyModFlagsEv() local_unnamed_addr #6

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(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 6440}
!41 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !42, i64 8, !43, i64 5480, !7, i64 6432, !12, i64 6440, !12, i64 6444, !44, i64 6448, !46, i64 6656, !10, i64 6664, !10, i64 6668, !10, i64 6672, !13, i64 6676, !13, i64 6677, !13, i64 6678, !13, i64 6679, !10, i64 6680, !7, i64 6688, !21, i64 6696, !21, i64 6712, !21, i64 6728, !21, i64 6744, !25, i64 6760, !10, i64 6776, !7, i64 6784, !7, i64 6792, !7, i64 6800, !7, i64 6808, !7, i64 6816, !11, i64 6824, !12, i64 6832, !10, i64 6836, !13, i64 6840, !10, i64 6844, !12, i64 6848, !12, i64 6852, !10, i64 6856, !10, i64 6860, !12, i64 6864, !13, i64 6868, !13, i64 6869, !13, i64 6870, !13, i64 6871, !13, i64 6872, !10, i64 6876, !10, i64 6880, !47, i64 6888, !11, i64 6896, !7, i64 6904, !48, i64 6912, !10, i64 6916, !10, i64 6920, !13, i64 6924, !13, i64 6925, !7, i64 6928, !10, i64 6936, !12, i64 6940, !49, i64 6944, !50, i64 7056, !51, i64 7080, !52, i64 7096, !53, i64 7112, !54, i64 7128, !54, i64 7144, !7, i64 7160, !10, i64 7168, !10, i64 7172, !10, i64 7176, !10, i64 7180, !10, i64 7184, !10, i64 7188, !10, i64 7192, !10, i64 7196, !10, i64 7200, !10, i64 7204, !10, i64 7208, !48, i64 7212, !18, i64 7216, !10, i64 7232, !19, i64 7236, !10, i64 7240, !13, i64 7244, !13, i64 7245, !13, i64 7246, !13, i64 7247, !13, i64 7248, !13, i64 7249, !13, i64 7250, !10, i64 7252, !18, i64 7256, !13, i64 7272, !13, i64 7273, !10, i64 7276, !55, i64 7280, !10, i64 7284, !10, i64 7288, !10, i64 7292, !10, i64 7296, !56, i64 7304, !56, i64 7352, !56, i64 7400, !7, i64 7448, !10, i64 7456, !7, i64 7464, !7, i64 7472, !7, i64 7480, !12, i64 7488, !12, i64 7492, !13, i64 7496, !7, i64 7504, !7, i64 7512, !10, i64 7520, !10, i64 7524, !10, i64 7528, !10, i64 7532, !13, i64 7536, !57, i64 7544, !58, i64 7600, !12, i64 7632, !28, i64 7640, !28, i64 7808, !10, i64 7976, !13, i64 7980, !13, i64 7981, !13, i64 7982, !10, i64 7984, !10, i64 7988, !10, i64 7992, !59, i64 8000, !18, i64 8064, !10, i64 8080, !10, i64 8084, !12, i64 8088, !10, i64 8092, !10, i64 8096, !10, i64 8100, !10, i64 8104, !60, i64 8112, !8, i64 8128, !7, i64 8144, !61, i64 8152, !63, i64 8192, !64, i64 8208, !11, i64 8224, !65, i64 8232, !69, i64 11960, !10, i64 12080, !10, i64 12084, !12, i64 12088, !12, i64 12092, !8, i64 12096, !45, i64 12108, !13, i64 12124, !12, i64 12128, !12, i64 12132, !12, i64 12136, !10, i64 12140, !66, i64 12144, !15, i64 12160, !11, i64 12176, !11, i64 12184, !13, i64 12192, !12, i64 12196, !71, i64 12200, !72, i64 12216, !73, i64 12232, !13, i64 12248, !74, i64 12252, !7, i64 12256, !71, i64 12264, !12, i64 12280, !13, i64 12284, !10, i64 12288, !10, i64 12292, !10, i64 12296, !13, i64 12300, !10, i64 12304, !8, i64 12308, !10, i64 12788, !12, i64 12792, !10, i64 12796, !10, i64 12800, !10, i64 12804, !8, i64 12808}
!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, !10, i64 960, !11, i64 964, !8, i64 972, !8, i64 1016, !8, i64 1056, !8, i64 1061, !8, i64 1066, !8, i64 1071, !8, i64 1076, !8, i64 1084, !8, i64 1104, !8, i64 1124, !8, i64 1164, !8, i64 1184, !8, i64 3232, !8, i64 5280, !8, i64 5364, !14, i64 5448, !30, i64 5456}
!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, !12, i64 128, !10, i64 132, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !12, i64 168, !13, i64 172, !13, i64 173, !12, i64 176, !12, i64 180, !8, i64 184}
!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, !11, i64 48, !13, i64 56, !18, i64 60, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100}
!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 6784}
!81 = !{!6, !10, i64 320}
!82 = !{!6, !10, i64 328}
!83 = !{!6, !12, i64 116}
!84 = !{!41, !10, i64 7976}
!85 = !{!41, !7, i64 7504}
!86 = !{!41, !10, i64 7520}
!87 = !{!6, !10, i64 432}
!88 = !{!13, !13, i64 0}
!89 = !{!41, !10, i64 6856}
!90 = !{!41, !10, i64 7188}
!91 = !{!41, !10, i64 7176}
!92 = !{!41, !48, i64 7212}
!93 = !{!41, !10, i64 6920}
!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 6888}
!105 = !{!65, !10, i64 16}
!106 = !{!65, !7, i64 40}
!107 = !{!8, !8, i64 0}
!108 = !{!41, !7, i64 6432}
!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 6869}
!121 = !{!41, !10, i64 12804}
!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 5456}
!137 = distinct !{!137, !138}
!138 = !{!"llvm.loop.mustprogress"}
!139 = !{!41, !13, i64 6868}
!140 = !{!42, !10, i64 960}
!141 = !{!6, !12, i64 88}
!142 = !{!42, !7, i64 256}
!143 = !{!65, !10, i64 80}
!144 = !{!65, !10, i64 84}
!145 = distinct !{!145, !138}
!146 = !{!65, !10, i64 48}
!147 = !{!30, !7, i64 8}
!148 = !{!30, !10, i64 0}
!149 = !{!65, !10, i64 32}
!150 = !{!151, !10, i64 0}
!151 = !{!"_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}
!152 = !{!151, !10, i64 4}
!153 = !{!151, !7, i64 8}
!154 = !{!151, !10, i64 20}
!155 = !{!151, !7, i64 24}
!156 = !{!151, !10, i64 32}
!157 = !{!151, !10, i64 36}
!158 = !{!65, !10, i64 76}
!159 = !{!151, !10, i64 44}
!160 = !{!151, !10, i64 48}
!161 = !{!151, !10, i64 52}
!162 = !{!151, !13, i64 40}
!163 = !{!18, !12, i64 4}
!164 = distinct !{!164, !138}
!165 = !{!11, !12, i64 0}
!166 = !{!11, !12, i64 4}
!167 = !{!45, !12, i64 12}
!168 = !{!45, !12, i64 4}
!169 = distinct !{!169, !138}
!170 = !{!6, !7, i64 688}
!171 = distinct !{!171, !138}
!172 = !{!42, !12, i64 16}
!173 = !{!65, !12, i64 3696}
!174 = !{!41, !13, i64 202}
!175 = !{!41, !13, i64 12248}
!176 = !{!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