; LLVM IR from Dragons-Lake/REI :: sources/REI_Integration/3rdParty/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.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, i16, i16, i16, [2 x i8], 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, %struct.ImGuiMenuColumns, %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, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i32, i32, i32, i32, i8, i8, i8, %struct.ImVec2, %struct.ImVector.0, ptr, i32, i32, i32, i32, i32, float, float, %struct.ImVector.1, %struct.ImVector.2, %struct.ImVector.2, %struct.ImVector.3, [6 x i16], %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, ptr }
%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.ImVec1 = type { float }
%struct.ImGuiMenuColumns = type { float, float, float, [3 x float], [3 x float] }
%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.7 = 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, i8, i8, [4 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, [4 x i8], %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImVector.0, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, float, i32, i8, [3 x i8], i32, float, float, i32, i32, float, i8, i8, i8, i8, i8, [3 x i8], i32, i32, [4 x i8], i64, %struct.ImVec2, ptr, i32, i32, i8, i8, [6 x i8], ptr, i32, float, %struct.ImGuiNextWindowData, %struct.ImGuiNextItemData, %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, %struct.ImRect, i32, [4 x i8], ptr, ptr, ptr, float, float, i8, [3 x i8], i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.ImRect, i8, i8, [2 x i8], i32, i32, i32, i32, i32, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, %struct.ImGuiNavMoveResult, ptr, ptr, i32, i32, i32, i32, i8, [7 x i8], %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, %struct.ImDrawList, i32, i8, i8, [2 x i8], i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, %struct.ImVector.18, [8 x i8], ptr, %struct.ImPool, %struct.ImVector.20, %struct.ImVector.21, %struct.ImVec2, %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, float, [3 x float], %struct.ImVec4, i8, [3 x i8], float, float, float, i32, [4 x i8], %struct.ImVector.22, i32, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, [4 x i8], %struct.ImGuiTextBuffer, %struct.ImVector.24, %struct.ImVector.25, i8, [3 x i8], i32, ptr, %struct.ImGuiTextBuffer, float, i8, [3 x i8], i32, i32, i32, i8, [3 x i8], i32, [120 x float], i32, float, i32, i32, i32, [3073 x i8], [7 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [22 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [512 x i8], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float], %struct.ImVector.7 }
%struct.ImGuiStyle = type { float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, i32, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, float, float, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, float, [48 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type <{ %struct.ImVec2, ptr, float, float, %struct.ImVec4, i32, [12 x %struct.ImVec2], [4 x i8] }>
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, [4 x i8], ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiNextItemData = type { i32, float, i8, i32 }
%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 <{ i32, i32, ptr, 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, [2 x i8], float, float, float, i32, i8, [7 x i8] }>
%struct.ImVector.23 = type { i32, i32, ptr }
%struct.ImVector.22 = type { i32, i32, ptr }
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %struct.ImVector.22 }
%struct.ImFontGlyph = type { i16, float, float, float, float, float, float, float, float, float }

@GImGui = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [107 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.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.56 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.61 = 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 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(948), 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 @_ZN5ImGui14GetScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef, i32 noundef) #9

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

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

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #6

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

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

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

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

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

170:                                              ; preds = %8
  %171 = load i32, ptr %15, align 4, !tbaa !9
  %172 = and i32 %171, 128
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %178

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

178:                                              ; preds = %174, %170
  %179 = phi i1 [ false, %170 ], [ %177, %174 ]
  %180 = xor i1 %179, true
  br i1 %180, label %181, label %182

181:                                              ; preds = %178
  br label %184

182:                                              ; preds = %178
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 3400, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

183:                                              ; No predecessors!
  br label %184

184:                                              ; preds = %183, %181
  %185 = load i32, ptr %15, align 4, !tbaa !9
  %186 = and i32 %185, 64
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %192

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

192:                                              ; preds = %188, %184
  %193 = phi i1 [ false, %184 ], [ %191, %188 ]
  %194 = xor i1 %193, true
  br i1 %194, label %195, label %196

195:                                              ; preds = %192
  br label %198

196:                                              ; preds = %192
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.1, i32 noundef 3401, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

197:                                              ; No predecessors!
  br label %198

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

226:                                              ; preds = %198
  %227 = load ptr, ptr %16, align 8, !tbaa !5
  %228 = icmp ne ptr %227, null
  br i1 %228, label %229, label %230

229:                                              ; preds = %226
  br label %232

230:                                              ; preds = %226
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 3414, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

231:                                              ; No predecessors!
  br label %232

232:                                              ; preds = %231, %229
  br label %233

233:                                              ; preds = %232, %198
  %234 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %235 = trunc i8 %234 to i1
  br i1 %235, label %236, label %237

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

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

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

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

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

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

277:                                              ; preds = %255
  br label %278

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

296:                                              ; preds = %278
  %297 = load i32, ptr %29, align 4, !tbaa !9
  %298 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %297, ptr noundef %34)
  br i1 %298, label %304, label %299

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

304:                                              ; preds = %296
  %305 = load i32, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %306 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %34)
  store <2 x float> %306, ptr %40, align 4
  %307 = call noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef %305, ptr noundef nonnull align 4 dereferenceable(8) %40, i32 noundef 0)
  %308 = xor i1 %307, true
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  br i1 %308, label %309, label %310

309:                                              ; preds = %304
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3107

310:                                              ; preds = %304
  %311 = load ptr, ptr %20, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.ImGuiContext, ptr %311, i32 0, i32 23
  %313 = load ptr, ptr %312, align 8, !tbaa !83
  store ptr %313, ptr %38, align 8, !tbaa !5
  %314 = load ptr, ptr %38, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.ImGuiWindow, ptr %314, i32 0, i32 49
  %316 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %315, i32 0, i32 15
  %317 = load i32, ptr %316, align 4, !tbaa !84
  %318 = load ptr, ptr %38, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.ImGuiWindow, ptr %318, i32 0, i32 49
  %320 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %319, i32 0, i32 17
  %321 = load i32, ptr %320, align 4, !tbaa !85
  %322 = or i32 %321, %317
  store i32 %322, ptr %320, align 4, !tbaa !85
  %323 = load ptr, ptr %38, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.ImGuiWindow, ptr %323, i32 0, i32 18
  %325 = getelementptr inbounds %struct.ImVec2, ptr %324, i32 0, i32 0
  %326 = load float, ptr %325, align 4, !tbaa !86
  %327 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %328 = load float, ptr %327, align 4, !tbaa !81
  %329 = fsub float %328, %326
  store float %329, ptr %327, align 4, !tbaa !81
  br label %339

330:                                              ; preds = %278
  %331 = load ptr, ptr %22, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ImGuiStyle, ptr %331, i32 0, i32 11
  %333 = getelementptr inbounds %struct.ImVec2, ptr %332, i32 0, i32 1
  %334 = load float, ptr %333, align 4, !tbaa !80
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef %334)
  %335 = load i32, ptr %29, align 4, !tbaa !9
  %336 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef %335, ptr noundef %34)
  br i1 %336, label %338, label %337

337:                                              ; preds = %330
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3107

338:                                              ; preds = %330
  br label %339

339:                                              ; preds = %338, %310
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #13
  %340 = load i32, ptr %29, align 4, !tbaa !9
  %341 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %34, i32 noundef %340)
  %342 = zext i1 %341 to i8
  store i8 %342, ptr %41, align 1, !tbaa !41
  %343 = load i8, ptr %41, align 1, !tbaa !41, !range !39, !noundef !40
  %344 = trunc i8 %343 to i1
  br i1 %344, label %345, label %348

345:                                              ; preds = %339
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.ImGuiContext, ptr %346, i32 0, i32 124
  store i32 1, ptr %347, align 8, !tbaa !87
  br label %348

348:                                              ; preds = %345, %339
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #13
  store ptr null, ptr %42, align 8, !tbaa !5
  %349 = load ptr, ptr %20, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.ImGuiContext, ptr %349, i32 0, i32 147
  %351 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %350, i32 0, i32 0
  %352 = load i32, ptr %351, align 8, !tbaa !88
  %353 = load i32, ptr %29, align 4, !tbaa !9
  %354 = icmp eq i32 %352, %353
  br i1 %354, label %355, label %358

355:                                              ; preds = %348
  %356 = load ptr, ptr %20, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.ImGuiContext, ptr %356, i32 0, i32 147
  store ptr %357, ptr %42, align 8, !tbaa !5
  br label %358

358:                                              ; preds = %355, %348
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #13
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = load i32, ptr %29, align 4, !tbaa !9
  %361 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef %359, i32 noundef %360)
  %362 = zext i1 %361 to i8
  store i8 %362, ptr %43, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #13
  %363 = load i8, ptr %43, align 1, !tbaa !41, !range !39, !noundef !40
  %364 = trunc i8 %363 to i1
  br i1 %364, label %365, label %382

365:                                              ; preds = %358
  %366 = load ptr, ptr %20, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.ImGuiContext, ptr %366, i32 0, i32 110
  %368 = load ptr, ptr %367, align 8, !tbaa !89
  %369 = load ptr, ptr %18, align 8, !tbaa !5
  %370 = icmp eq ptr %368, %369
  br i1 %370, label %371, label %380

371:                                              ; preds = %365
  %372 = load ptr, ptr %20, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.ImGuiContext, ptr %372, i32 0, i32 112
  %374 = load i32, ptr %373, align 8, !tbaa !90
  %375 = load ptr, ptr %18, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.ImGuiWindow, ptr %375, i32 0, i32 49
  %377 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %376, i32 0, i32 26
  %378 = load i32, ptr %377, align 8, !tbaa !91
  %379 = icmp eq i32 %374, %378
  br label %380

380:                                              ; preds = %371, %365
  %381 = phi i1 [ false, %365 ], [ %379, %371 ]
  br label %382

382:                                              ; preds = %380, %358
  %383 = phi i1 [ false, %358 ], [ %381, %380 ]
  %384 = zext i1 %383 to i8
  store i8 %384, ptr %44, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #13
  %385 = load i8, ptr %43, align 1, !tbaa !41, !range !39, !noundef !40
  %386 = trunc i8 %385 to i1
  br i1 %386, label %387, label %391

387:                                              ; preds = %382
  %388 = load i8, ptr %44, align 1, !tbaa !41, !range !39, !noundef !40
  %389 = trunc i8 %388 to i1
  %390 = xor i1 %389, true
  br label %391

391:                                              ; preds = %387, %382
  %392 = phi i1 [ false, %382 ], [ %390, %387 ]
  %393 = zext i1 %392 to i8
  store i8 %393, ptr %45, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #13
  %394 = load i8, ptr %41, align 1, !tbaa !41, !range !39, !noundef !40
  %395 = trunc i8 %394 to i1
  br i1 %395, label %396, label %402

396:                                              ; preds = %391
  %397 = load ptr, ptr %21, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.ImGuiIO, ptr %397, i32 0, i32 63
  %399 = getelementptr inbounds [5 x i8], ptr %398, i64 0, i64 0
  %400 = load i8, ptr %399, align 8, !tbaa !41, !range !39, !noundef !40
  %401 = trunc i8 %400 to i1
  br label %402

402:                                              ; preds = %396, %391
  %403 = phi i1 [ false, %391 ], [ %401, %396 ]
  %404 = zext i1 %403 to i8
  store i8 %404, ptr %46, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #13
  %405 = load ptr, ptr %20, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.ImGuiContext, ptr %405, i32 0, i32 36
  %407 = load i32, ptr %406, align 8, !tbaa !92
  %408 = load i32, ptr %29, align 4, !tbaa !9
  %409 = icmp ne i32 %407, %408
  br i1 %409, label %410, label %431

410:                                              ; preds = %402
  %411 = load ptr, ptr %20, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.ImGuiContext, ptr %411, i32 0, i32 71
  %413 = load i32, ptr %412, align 8, !tbaa !93
  %414 = load i32, ptr %29, align 4, !tbaa !9
  %415 = icmp eq i32 %413, %414
  br i1 %415, label %429, label %416

416:                                              ; preds = %410
  %417 = load ptr, ptr %20, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.ImGuiContext, ptr %417, i32 0, i32 68
  %419 = load i32, ptr %418, align 4, !tbaa !94
  %420 = load i32, ptr %29, align 4, !tbaa !9
  %421 = icmp eq i32 %419, %420
  br i1 %421, label %422, label %427

422:                                              ; preds = %416
  %423 = load ptr, ptr %20, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.ImGuiContext, ptr %423, i32 0, i32 76
  %425 = load i32, ptr %424, align 4, !tbaa !95
  %426 = icmp eq i32 %425, 3
  br label %427

427:                                              ; preds = %422, %416
  %428 = phi i1 [ false, %416 ], [ %426, %422 ]
  br label %429

429:                                              ; preds = %427, %410
  %430 = phi i1 [ true, %410 ], [ %428, %427 ]
  br label %431

431:                                              ; preds = %429, %402
  %432 = phi i1 [ false, %402 ], [ %430, %429 ]
  %433 = zext i1 %432 to i8
  store i8 %433, ptr %47, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #13
  %434 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %435 = trunc i8 %434 to i1
  br i1 %435, label %436, label %451

436:                                              ; preds = %431
  %437 = load ptr, ptr %42, align 8, !tbaa !5
  %438 = icmp ne ptr %437, null
  br i1 %438, label %439, label %451

439:                                              ; preds = %436
  %440 = load ptr, ptr %20, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.ImGuiContext, ptr %440, i32 0, i32 36
  %442 = load i32, ptr %441, align 8, !tbaa !92
  %443 = icmp eq i32 %442, 0
  br i1 %443, label %444, label %451

444:                                              ; preds = %439
  %445 = load ptr, ptr %20, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.ImGuiContext, ptr %445, i32 0, i32 52
  %447 = load i32, ptr %446, align 4, !tbaa !96
  %448 = load ptr, ptr %38, align 8, !tbaa !5
  %449 = call noundef i32 @_ZN5ImGui14GetScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %448, i32 noundef 1)
  %450 = icmp eq i32 %447, %449
  br label %451

451:                                              ; preds = %444, %439, %436, %431
  %452 = phi i1 [ false, %439 ], [ false, %436 ], [ false, %431 ], [ %450, %444 ]
  %453 = zext i1 %452 to i8
  store i8 %453, ptr %48, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #13
  %454 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %455 = trunc i8 %454 to i1
  br i1 %455, label %456, label %466

456:                                              ; preds = %451
  %457 = load ptr, ptr %42, align 8, !tbaa !5
  %458 = icmp ne ptr %457, null
  br i1 %458, label %459, label %466

459:                                              ; preds = %456
  %460 = load ptr, ptr %20, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.ImGuiContext, ptr %460, i32 0, i32 36
  %462 = load i32, ptr %461, align 8, !tbaa !92
  %463 = load ptr, ptr %38, align 8, !tbaa !5
  %464 = call noundef i32 @_ZN5ImGui14GetScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef %463, i32 noundef 1)
  %465 = icmp eq i32 %462, %464
  br label %466

466:                                              ; preds = %459, %456, %451
  %467 = phi i1 [ false, %456 ], [ false, %451 ], [ %465, %459 ]
  %468 = zext i1 %467 to i8
  store i8 %468, ptr %49, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #13
  store i8 0, ptr %50, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #13
  %469 = load ptr, ptr %20, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiContext, ptr %469, i32 0, i32 36
  %471 = load i32, ptr %470, align 8, !tbaa !92
  %472 = load i32, ptr %29, align 4, !tbaa !9
  %473 = icmp ne i32 %471, %472
  br i1 %473, label %474, label %485

474:                                              ; preds = %466
  %475 = load i32, ptr %15, align 4, !tbaa !9
  %476 = and i32 %475, 16
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %481, label %478

478:                                              ; preds = %474
  %479 = load i8, ptr %47, align 1, !tbaa !41, !range !39, !noundef !40
  %480 = trunc i8 %479 to i1
  br i1 %480, label %481, label %485

481:                                              ; preds = %478, %474
  %482 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %483 = trunc i8 %482 to i1
  %484 = xor i1 %483, true
  br label %485

485:                                              ; preds = %481, %478, %466
  %486 = phi i1 [ false, %478 ], [ false, %466 ], [ %484, %481 ]
  %487 = zext i1 %486 to i8
  store i8 %487, ptr %51, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #13
  %488 = load i8, ptr %43, align 1, !tbaa !41, !range !39, !noundef !40
  %489 = trunc i8 %488 to i1
  br i1 %489, label %499, label %490

490:                                              ; preds = %485
  %491 = load i8, ptr %46, align 1, !tbaa !41, !range !39, !noundef !40
  %492 = trunc i8 %491 to i1
  br i1 %492, label %499, label %493

493:                                              ; preds = %490
  %494 = load i8, ptr %48, align 1, !tbaa !41, !range !39, !noundef !40
  %495 = trunc i8 %494 to i1
  br i1 %495, label %499, label %496

496:                                              ; preds = %493
  %497 = load i8, ptr %47, align 1, !tbaa !41, !range !39, !noundef !40
  %498 = trunc i8 %497 to i1
  br label %499

499:                                              ; preds = %496, %493, %490, %485
  %500 = phi i1 [ true, %493 ], [ true, %490 ], [ true, %485 ], [ %498, %496 ]
  %501 = zext i1 %500 to i8
  store i8 %501, ptr %52, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #13
  %502 = load i8, ptr %52, align 1, !tbaa !41, !range !39, !noundef !40
  %503 = trunc i8 %502 to i1
  br i1 %503, label %507, label %504

504:                                              ; preds = %499
  %505 = load i8, ptr %49, align 1, !tbaa !41, !range !39, !noundef !40
  %506 = trunc i8 %505 to i1
  br label %507

507:                                              ; preds = %504, %499
  %508 = phi i1 [ true, %499 ], [ %506, %504 ]
  %509 = zext i1 %508 to i8
  store i8 %509, ptr %53, align 1, !tbaa !41
  %510 = load i8, ptr %53, align 1, !tbaa !41, !range !39, !noundef !40
  %511 = trunc i8 %510 to i1
  br i1 %511, label %512, label %615

512:                                              ; preds = %507
  %513 = load ptr, ptr %20, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.ImGuiContext, ptr %513, i32 0, i32 36
  %515 = load i32, ptr %514, align 8, !tbaa !92
  %516 = load i32, ptr %29, align 4, !tbaa !9
  %517 = icmp ne i32 %515, %516
  br i1 %517, label %518, label %615

518:                                              ; preds = %512
  %519 = load ptr, ptr %20, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.ImGuiContext, ptr %519, i32 0, i32 147
  store ptr %520, ptr %42, align 8, !tbaa !5
  %521 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %521)
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #13
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  %523 = call i64 @strlen(ptr noundef %522) #15
  %524 = trunc i64 %523 to i32
  store i32 %524, ptr %54, align 4, !tbaa !9
  %525 = load ptr, ptr %42, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %525, i32 0, i32 5
  %527 = load i32, ptr %54, align 4, !tbaa !9
  %528 = add nsw i32 %527, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %526, i32 noundef %528)
  %529 = load ptr, ptr %42, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %529, i32 0, i32 5
  %531 = getelementptr inbounds %struct.ImVector.22, ptr %530, i32 0, i32 2
  %532 = load ptr, ptr %531, align 8, !tbaa !97
  %533 = load ptr, ptr %12, align 8, !tbaa !5
  %534 = load i32, ptr %54, align 4, !tbaa !9
  %535 = add nsw i32 %534, 1
  %536 = sext i32 %535 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %532, ptr align 1 %533, i64 %536, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  store ptr null, ptr %55, align 8, !tbaa !5
  %537 = load ptr, ptr %42, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %537, i32 0, i32 3
  %539 = load i32, ptr %13, align 4, !tbaa !9
  %540 = add nsw i32 %539, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %538, i32 noundef %540)
  %541 = load ptr, ptr %42, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %541, i32 0, i32 4
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %542, i32 noundef 0)
  %543 = load ptr, ptr %42, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %543, i32 0, i32 6
  store i8 0, ptr %544, align 8, !tbaa !98
  %545 = load ptr, ptr %42, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %545, i32 0, i32 3
  %547 = getelementptr inbounds %struct.ImVector.7, ptr %546, i32 0, i32 2
  %548 = load ptr, ptr %547, align 8, !tbaa !99
  %549 = load i32, ptr %13, align 4, !tbaa !9
  %550 = load ptr, ptr %12, align 8, !tbaa !5
  %551 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %548, i32 noundef %549, ptr noundef %550, ptr noundef null, ptr noundef %55)
  %552 = load ptr, ptr %42, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %552, i32 0, i32 1
  store i32 %551, ptr %553, align 4, !tbaa !100
  %554 = load ptr, ptr %55, align 8, !tbaa !5
  %555 = load ptr, ptr %12, align 8, !tbaa !5
  %556 = ptrtoint ptr %554 to i64
  %557 = ptrtoint ptr %555 to i64
  %558 = sub i64 %556, %557
  %559 = trunc i64 %558 to i32
  %560 = load ptr, ptr %42, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %560, i32 0, i32 2
  store i32 %559, ptr %561, align 8, !tbaa !101
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #13
  %562 = load ptr, ptr %42, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %562, i32 0, i32 0
  %564 = load i32, ptr %563, align 8, !tbaa !102
  %565 = load i32, ptr %29, align 4, !tbaa !9
  %566 = icmp eq i32 %564, %565
  %567 = zext i1 %566 to i8
  store i8 %567, ptr %56, align 1, !tbaa !41
  %568 = load i8, ptr %56, align 1, !tbaa !41, !range !39, !noundef !40
  %569 = trunc i8 %568 to i1
  br i1 %569, label %570, label %572

570:                                              ; preds = %518
  %571 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %571)
  br label %591

572:                                              ; preds = %518
  %573 = load i32, ptr %29, align 4, !tbaa !9
  %574 = load ptr, ptr %42, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %574, i32 0, i32 0
  store i32 %573, ptr %575, align 8, !tbaa !102
  %576 = load ptr, ptr %42, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %576, i32 0, i32 8
  store float 0.000000e+00, ptr %577, align 8, !tbaa !103
  %578 = load ptr, ptr %42, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %578, i32 0, i32 9
  %580 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %581 = trunc i8 %580 to i1
  %582 = xor i1 %581, true
  %583 = zext i1 %582 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %579, i32 noundef %583)
  %584 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %585 = trunc i8 %584 to i1
  br i1 %585, label %590, label %586

586:                                              ; preds = %572
  %587 = load i8, ptr %44, align 1, !tbaa !41, !range !39, !noundef !40
  %588 = trunc i8 %587 to i1
  br i1 %588, label %589, label %590

589:                                              ; preds = %586
  store i8 1, ptr %51, align 1, !tbaa !41
  br label %590

590:                                              ; preds = %589, %586, %572
  br label %591

591:                                              ; preds = %590, %570
  %592 = load i32, ptr %15, align 4, !tbaa !9
  %593 = and i32 %592, 8192
  %594 = icmp ne i32 %593, 0
  br i1 %594, label %595, label %599

595:                                              ; preds = %591
  %596 = load ptr, ptr %42, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %596, i32 0, i32 9
  %598 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %597, i32 0, i32 3
  store i8 1, ptr %598, align 4, !tbaa !104
  br label %599

599:                                              ; preds = %595, %591
  %600 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %601 = trunc i8 %600 to i1
  br i1 %601, label %614, label %602

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

605:                                              ; preds = %602
  %606 = load i8, ptr %46, align 1, !tbaa !41, !range !39, !noundef !40
  %607 = trunc i8 %606 to i1
  br i1 %607, label %608, label %614

608:                                              ; preds = %605
  %609 = load ptr, ptr %21, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.ImGuiIO, ptr %609, i32 0, i32 40
  %611 = load i8, ptr %610, align 8, !tbaa !105, !range !39, !noundef !40
  %612 = trunc i8 %611 to i1
  br i1 %612, label %613, label %614

613:                                              ; preds = %608, %602
  store i8 1, ptr %51, align 1, !tbaa !41
  br label %614

614:                                              ; preds = %613, %608, %605, %599
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #13
  br label %615

615:                                              ; preds = %614, %512, %507
  %616 = load ptr, ptr %20, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.ImGuiContext, ptr %616, i32 0, i32 36
  %618 = load i32, ptr %617, align 8, !tbaa !92
  %619 = load i32, ptr %29, align 4, !tbaa !9
  %620 = icmp ne i32 %618, %619
  br i1 %620, label %621, label %685

621:                                              ; preds = %615
  %622 = load i8, ptr %52, align 1, !tbaa !41, !range !39, !noundef !40
  %623 = trunc i8 %622 to i1
  br i1 %623, label %624, label %685

624:                                              ; preds = %621
  %625 = load ptr, ptr %42, align 8, !tbaa !5
  %626 = icmp ne ptr %625, null
  br i1 %626, label %627, label %633

627:                                              ; preds = %624
  %628 = load ptr, ptr %42, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %628, i32 0, i32 0
  %630 = load i32, ptr %629, align 8, !tbaa !102
  %631 = load i32, ptr %29, align 4, !tbaa !9
  %632 = icmp eq i32 %630, %631
  br label %633

633:                                              ; preds = %627, %624
  %634 = phi i1 [ false, %624 ], [ %632, %627 ]
  br i1 %634, label %635, label %636

635:                                              ; preds = %633
  br label %638

636:                                              ; preds = %633
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 3520, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

637:                                              ; No predecessors!
  br label %638

638:                                              ; preds = %637, %635
  %639 = load i32, ptr %29, align 4, !tbaa !9
  %640 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %639, ptr noundef %640)
  %641 = load i32, ptr %29, align 4, !tbaa !9
  %642 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %641, ptr noundef %642)
  %643 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %643)
  %644 = load ptr, ptr %20, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.ImGuiContext, ptr %644, i32 0, i32 45
  %646 = load i32, ptr %645, align 4, !tbaa !106
  %647 = or i32 %646, 3
  store i32 %647, ptr %645, align 4, !tbaa !106
  %648 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %649 = trunc i8 %648 to i1
  br i1 %649, label %654, label %650

650:                                              ; preds = %638
  %651 = load i32, ptr %15, align 4, !tbaa !9
  %652 = and i32 %651, 128
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %654, label %659

654:                                              ; preds = %650, %638
  %655 = load ptr, ptr %20, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.ImGuiContext, ptr %655, i32 0, i32 45
  %657 = load i32, ptr %656, align 4, !tbaa !106
  %658 = or i32 %657, 12
  store i32 %658, ptr %656, align 4, !tbaa !106
  br label %659

659:                                              ; preds = %654, %650
  %660 = load ptr, ptr %20, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.ImGuiContext, ptr %660, i32 0, i32 46
  %662 = load i32, ptr %661, align 8, !tbaa !107
  %663 = or i32 %662, 2
  store i32 %663, ptr %661, align 8, !tbaa !107
  %664 = load ptr, ptr %20, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.ImGuiContext, ptr %664, i32 0, i32 48
  %666 = load i64, ptr %665, align 8, !tbaa !108
  %667 = or i64 %666, 384
  store i64 %667, ptr %665, align 8, !tbaa !108
  %668 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %669 = trunc i8 %668 to i1
  br i1 %669, label %670, label %675

670:                                              ; preds = %659
  %671 = load ptr, ptr %20, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiContext, ptr %671, i32 0, i32 48
  %673 = load i64, ptr %672, align 8, !tbaa !108
  %674 = or i64 %673, 96
  store i64 %674, ptr %672, align 8, !tbaa !108
  br label %675

675:                                              ; preds = %670, %659
  %676 = load i32, ptr %15, align 4, !tbaa !9
  %677 = and i32 %676, 1088
  %678 = icmp ne i32 %677, 0
  br i1 %678, label %679, label %684

679:                                              ; preds = %675
  %680 = load ptr, ptr %20, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.ImGuiContext, ptr %680, i32 0, i32 48
  %682 = load i64, ptr %681, align 8, !tbaa !108
  %683 = or i64 %682, 1
  store i64 %683, ptr %681, align 8, !tbaa !108
  br label %684

684:                                              ; preds = %679, %675
  br label %685

685:                                              ; preds = %684, %621, %615
  %686 = load ptr, ptr %20, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.ImGuiContext, ptr %686, i32 0, i32 36
  %688 = load i32, ptr %687, align 8, !tbaa !92
  %689 = load i32, ptr %29, align 4, !tbaa !9
  %690 = icmp eq i32 %688, %689
  br i1 %690, label %691, label %695

691:                                              ; preds = %685
  %692 = load ptr, ptr %42, align 8, !tbaa !5
  %693 = icmp eq ptr %692, null
  br i1 %693, label %694, label %695

694:                                              ; preds = %691
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %695

695:                                              ; preds = %694, %691, %685
  %696 = load ptr, ptr %20, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.ImGuiContext, ptr %696, i32 0, i32 36
  %698 = load i32, ptr %697, align 8, !tbaa !92
  %699 = load i32, ptr %29, align 4, !tbaa !9
  %700 = icmp eq i32 %698, %699
  br i1 %700, label %701, label %714

701:                                              ; preds = %695
  %702 = load ptr, ptr %21, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.ImGuiIO, ptr %702, i32 0, i32 63
  %704 = getelementptr inbounds [5 x i8], ptr %703, i64 0, i64 0
  %705 = load i8, ptr %704, align 8, !tbaa !41, !range !39, !noundef !40
  %706 = trunc i8 %705 to i1
  br i1 %706, label %707, label %714

707:                                              ; preds = %701
  %708 = load i8, ptr %53, align 1, !tbaa !41, !range !39, !noundef !40
  %709 = trunc i8 %708 to i1
  br i1 %709, label %714, label %710

710:                                              ; preds = %707
  %711 = load i8, ptr %52, align 1, !tbaa !41, !range !39, !noundef !40
  %712 = trunc i8 %711 to i1
  br i1 %712, label %714, label %713

713:                                              ; preds = %710
  store i8 1, ptr %50, align 1, !tbaa !41
  br label %714

714:                                              ; preds = %713, %710, %707, %701, %695
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #13
  %715 = load ptr, ptr %20, align 8, !tbaa !5
  %716 = getelementptr inbounds %struct.ImGuiContext, ptr %715, i32 0, i32 36
  %717 = load i32, ptr %716, align 8, !tbaa !92
  %718 = load i32, ptr %29, align 4, !tbaa !9
  %719 = icmp eq i32 %717, %718
  br i1 %719, label %728, label %720

720:                                              ; preds = %714
  %721 = load ptr, ptr %42, align 8, !tbaa !5
  %722 = icmp ne ptr %721, null
  br i1 %722, label %723, label %726

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

726:                                              ; preds = %723, %720
  %727 = phi i1 [ false, %720 ], [ %725, %723 ]
  br label %728

728:                                              ; preds = %726, %714
  %729 = phi i1 [ true, %714 ], [ %727, %726 ]
  %730 = zext i1 %729 to i8
  store i8 %730, ptr %57, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #13
  %731 = load ptr, ptr %42, align 8, !tbaa !5
  %732 = icmp ne ptr %731, null
  br i1 %732, label %733, label %739

733:                                              ; preds = %728
  %734 = load ptr, ptr %42, align 8, !tbaa !5
  %735 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %734)
  br i1 %735, label %736, label %739

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

739:                                              ; preds = %736, %733, %728
  %740 = phi i1 [ false, %733 ], [ false, %728 ], [ %738, %736 ]
  %741 = zext i1 %740 to i8
  store i8 %741, ptr %58, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #13
  store i8 0, ptr %59, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #13
  store i8 0, ptr %60, align 1, !tbaa !41
  %742 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %743 = trunc i8 %742 to i1
  br i1 %743, label %744, label %788

744:                                              ; preds = %739
  %745 = load ptr, ptr %42, align 8, !tbaa !5
  %746 = icmp ne ptr %745, null
  br i1 %746, label %747, label %788

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

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

753:                                              ; preds = %750, %747
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #13
  store ptr null, ptr %61, align 8, !tbaa !5
  %754 = load ptr, ptr %42, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %754, i32 0, i32 3
  %756 = load i32, ptr %13, align 4, !tbaa !9
  %757 = add nsw i32 %756, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %755, i32 noundef %757)
  %758 = load ptr, ptr %42, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %758, i32 0, i32 3
  %760 = getelementptr inbounds %struct.ImVector.7, ptr %759, i32 0, i32 2
  %761 = load ptr, ptr %760, align 8, !tbaa !99
  %762 = load ptr, ptr %42, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %762, i32 0, i32 3
  %764 = getelementptr inbounds %struct.ImVector.7, ptr %763, i32 0, i32 0
  %765 = load i32, ptr %764, align 8, !tbaa !109
  %766 = load ptr, ptr %12, align 8, !tbaa !5
  %767 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %761, i32 noundef %765, ptr noundef %766, ptr noundef null, ptr noundef %61)
  %768 = load ptr, ptr %42, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %768, i32 0, i32 1
  store i32 %767, ptr %769, align 4, !tbaa !100
  %770 = load ptr, ptr %61, align 8, !tbaa !5
  %771 = load ptr, ptr %12, align 8, !tbaa !5
  %772 = ptrtoint ptr %770 to i64
  %773 = ptrtoint ptr %771 to i64
  %774 = sub i64 %772, %773
  %775 = trunc i64 %774 to i32
  %776 = load ptr, ptr %42, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %776, i32 0, i32 2
  store i32 %775, ptr %777, align 8, !tbaa !101
  %778 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %778)
  %779 = load ptr, ptr %42, align 8, !tbaa !5
  %780 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %779)
  %781 = zext i1 %780 to i32
  %782 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %783 = trunc i8 %782 to i1
  %784 = zext i1 %783 to i32
  %785 = and i32 %784, %781
  %786 = icmp ne i32 %785, 0
  %787 = zext i1 %786 to i8
  store i8 %787, ptr %58, align 1, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  br label %788

788:                                              ; preds = %753, %750, %744, %739
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #13
  %789 = load i8, ptr %57, align 1, !tbaa !41, !range !39, !noundef !40
  %790 = trunc i8 %789 to i1
  br i1 %790, label %800, label %791

791:                                              ; preds = %788
  %792 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %793 = trunc i8 %792 to i1
  br i1 %793, label %800, label %794

794:                                              ; preds = %791
  %795 = load ptr, ptr %20, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.ImGuiContext, ptr %795, i32 0, i32 36
  %797 = load i32, ptr %796, align 8, !tbaa !92
  %798 = load i32, ptr %29, align 4, !tbaa !9
  %799 = icmp eq i32 %797, %798
  br i1 %799, label %800, label %811

800:                                              ; preds = %794, %791, %788
  %801 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %802 = trunc i8 %801 to i1
  br i1 %802, label %811, label %803

803:                                              ; preds = %800
  %804 = load ptr, ptr %42, align 8, !tbaa !5
  %805 = icmp ne ptr %804, null
  br i1 %805, label %806, label %811

806:                                              ; preds = %803
  %807 = load ptr, ptr %42, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %807, i32 0, i32 6
  %809 = load i8, ptr %808, align 8, !tbaa !98, !range !39, !noundef !40
  %810 = trunc i8 %809 to i1
  br label %811

811:                                              ; preds = %806, %803, %800, %794
  %812 = phi i1 [ false, %803 ], [ false, %800 ], [ false, %794 ], [ %810, %806 ]
  %813 = zext i1 %812 to i8
  store i8 %813, ptr %62, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #13
  %814 = load ptr, ptr %11, align 8, !tbaa !5
  %815 = icmp ne ptr %814, null
  br i1 %815, label %816, label %832

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

819:                                              ; preds = %816
  %820 = load ptr, ptr %42, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %820, i32 0, i32 4
  %822 = getelementptr inbounds %struct.ImVector.22, ptr %821, i32 0, i32 2
  %823 = load ptr, ptr %822, align 8, !tbaa !110
  br label %826

824:                                              ; preds = %816
  %825 = load ptr, ptr %12, align 8, !tbaa !5
  br label %826

826:                                              ; preds = %824, %819
  %827 = phi ptr [ %823, %819 ], [ %825, %824 ]
  %828 = getelementptr inbounds i8, ptr %827, i64 0
  %829 = load i8, ptr %828, align 1, !tbaa !111
  %830 = sext i8 %829 to i32
  %831 = icmp eq i32 %830, 0
  br label %832

832:                                              ; preds = %826, %811
  %833 = phi i1 [ false, %811 ], [ %831, %826 ]
  %834 = zext i1 %833 to i8
  store i8 %834, ptr %63, align 1, !tbaa !41
  %835 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %836 = trunc i8 %835 to i1
  br i1 %836, label %837, label %914

837:                                              ; preds = %832
  %838 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %839 = trunc i8 %838 to i1
  br i1 %839, label %914, label %840

840:                                              ; preds = %837
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  %841 = load ptr, ptr %20, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.ImGuiContext, ptr %841, i32 0, i32 7
  %843 = load ptr, ptr %842, align 8, !tbaa !112
  %844 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(113) %843, i16 noundef zeroext 42)
  store ptr %844, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #13
  %845 = load ptr, ptr %20, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.ImGuiContext, ptr %845, i32 0, i32 148
  store ptr %846, ptr %65, align 8, !tbaa !5
  %847 = load ptr, ptr %20, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.ImGuiContext, ptr %847, i32 0, i32 7
  %849 = load ptr, ptr %848, align 8, !tbaa !112
  %850 = getelementptr inbounds %struct.ImFont, ptr %849, i32 0, i32 2
  %851 = load float, ptr %850, align 4, !tbaa !113
  %852 = load ptr, ptr %65, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.ImFont, ptr %852, i32 0, i32 2
  store float %851, ptr %853, align 4, !tbaa !113
  %854 = load ptr, ptr %20, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.ImGuiContext, ptr %854, i32 0, i32 7
  %856 = load ptr, ptr %855, align 8, !tbaa !112
  %857 = getelementptr inbounds %struct.ImFont, ptr %856, i32 0, i32 13
  %858 = load float, ptr %857, align 8, !tbaa !114
  %859 = load ptr, ptr %65, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.ImFont, ptr %859, i32 0, i32 13
  store float %858, ptr %860, align 8, !tbaa !114
  %861 = load ptr, ptr %20, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.ImGuiContext, ptr %861, i32 0, i32 7
  %863 = load ptr, ptr %862, align 8, !tbaa !112
  %864 = getelementptr inbounds %struct.ImFont, ptr %863, i32 0, i32 6
  %865 = load ptr, ptr %65, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.ImFont, ptr %865, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %866, ptr align 8 %864, i64 8, i1 false), !tbaa.struct !42
  %867 = load ptr, ptr %20, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.ImGuiContext, ptr %867, i32 0, i32 7
  %869 = load ptr, ptr %868, align 8, !tbaa !112
  %870 = getelementptr inbounds %struct.ImFont, ptr %869, i32 0, i32 14
  %871 = load float, ptr %870, align 4, !tbaa !115
  %872 = load ptr, ptr %65, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.ImFont, ptr %872, i32 0, i32 14
  store float %871, ptr %873, align 4, !tbaa !115
  %874 = load ptr, ptr %20, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct.ImGuiContext, ptr %874, i32 0, i32 7
  %876 = load ptr, ptr %875, align 8, !tbaa !112
  %877 = getelementptr inbounds %struct.ImFont, ptr %876, i32 0, i32 15
  %878 = load float, ptr %877, align 8, !tbaa !116
  %879 = load ptr, ptr %65, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.ImFont, ptr %879, i32 0, i32 15
  store float %878, ptr %880, align 8, !tbaa !116
  %881 = load ptr, ptr %20, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiContext, ptr %881, i32 0, i32 7
  %883 = load ptr, ptr %882, align 8, !tbaa !112
  %884 = getelementptr inbounds %struct.ImFont, ptr %883, i32 0, i32 7
  %885 = load ptr, ptr %884, align 8, !tbaa !117
  %886 = load ptr, ptr %65, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImFont, ptr %886, i32 0, i32 7
  store ptr %885, ptr %887, align 8, !tbaa !117
  %888 = load ptr, ptr %64, align 8, !tbaa !5
  %889 = load ptr, ptr %65, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.ImFont, ptr %889, i32 0, i32 5
  store ptr %888, ptr %890, align 8, !tbaa !118
  %891 = load ptr, ptr %64, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.ImFontGlyph, ptr %891, i32 0, i32 1
  %893 = load float, ptr %892, align 4, !tbaa !119
  %894 = load ptr, ptr %65, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImFont, ptr %894, i32 0, i32 1
  store float %893, ptr %895, align 8, !tbaa !121
  %896 = load ptr, ptr %65, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.ImFont, ptr %896, i32 0, i32 4
  %898 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %897)
  br i1 %898, label %899, label %907

899:                                              ; preds = %840
  %900 = load ptr, ptr %65, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.ImFont, ptr %900, i32 0, i32 0
  %902 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %901)
  br i1 %902, label %903, label %907

903:                                              ; preds = %899
  %904 = load ptr, ptr %65, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.ImFont, ptr %904, i32 0, i32 3
  %906 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %905)
  br label %907

907:                                              ; preds = %903, %899, %840
  %908 = phi i1 [ false, %899 ], [ false, %840 ], [ %906, %903 ]
  br i1 %908, label %909, label %910

909:                                              ; preds = %907
  br label %912

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

911:                                              ; No predecessors!
  br label %912

912:                                              ; preds = %911, %909
  %913 = load ptr, ptr %65, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %913)
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  br label %914

914:                                              ; preds = %912, %837, %832
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #13
  store i32 0, ptr %66, align 4, !tbaa !9
  %915 = load ptr, ptr %20, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.ImGuiContext, ptr %915, i32 0, i32 36
  %917 = load i32, ptr %916, align 8, !tbaa !92
  %918 = load i32, ptr %29, align 4, !tbaa !9
  %919 = icmp eq i32 %917, %918
  br i1 %919, label %920, label %1217

920:                                              ; preds = %914
  %921 = load ptr, ptr %42, align 8, !tbaa !5
  %922 = icmp ne ptr %921, null
  br i1 %922, label %923, label %924

923:                                              ; preds = %920
  br label %926

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

925:                                              ; No predecessors!
  br label %926

926:                                              ; preds = %925, %923
  %927 = load ptr, ptr %42, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %927, i32 0, i32 2
  %929 = load i32, ptr %928, align 8, !tbaa !101
  store i32 %929, ptr %66, align 4, !tbaa !9
  %930 = load i32, ptr %13, align 4, !tbaa !9
  %931 = load ptr, ptr %42, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %931, i32 0, i32 7
  store i32 %930, ptr %932, align 4, !tbaa !122
  %933 = load i32, ptr %15, align 4, !tbaa !9
  %934 = load ptr, ptr %42, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %934, i32 0, i32 13
  store i32 %933, ptr %935, align 8, !tbaa !123
  %936 = load ptr, ptr %16, align 8, !tbaa !5
  %937 = load ptr, ptr %42, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %937, i32 0, i32 14
  store ptr %936, ptr %938, align 8, !tbaa !124
  %939 = load ptr, ptr %17, align 8, !tbaa !5
  %940 = load ptr, ptr %42, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %940, i32 0, i32 15
  store ptr %939, ptr %941, align 8, !tbaa !125
  %942 = load ptr, ptr %21, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.ImGuiIO, ptr %942, i32 0, i32 37
  %944 = getelementptr inbounds [5 x i8], ptr %943, i64 0, i64 0
  %945 = load i8, ptr %944, align 8, !tbaa !41, !range !39, !noundef !40
  %946 = trunc i8 %945 to i1
  %947 = xor i1 %946, true
  %948 = load ptr, ptr %20, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.ImGuiContext, ptr %948, i32 0, i32 40
  %950 = zext i1 %947 to i8
  store i8 %950, ptr %949, align 1, !tbaa !126
  %951 = load ptr, ptr %20, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.ImGuiContext, ptr %951, i32 0, i32 191
  store i32 1, ptr %952, align 4, !tbaa !127
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #13
  %953 = load ptr, ptr %21, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ImGuiIO, ptr %953, i32 0, i32 36
  %955 = getelementptr inbounds %struct.ImVec2, ptr %954, i32 0, i32 0
  %956 = load float, ptr %955, align 8, !tbaa !128
  %957 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %958 = getelementptr inbounds %struct.ImVec2, ptr %957, i32 0, i32 0
  %959 = load float, ptr %958, align 4, !tbaa !129
  %960 = fsub float %956, %959
  %961 = load ptr, ptr %22, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.ImGuiStyle, ptr %961, i32 0, i32 11
  %963 = getelementptr inbounds %struct.ImVec2, ptr %962, i32 0, i32 0
  %964 = load float, ptr %963, align 4, !tbaa !130
  %965 = fsub float %960, %964
  %966 = load ptr, ptr %42, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %966, i32 0, i32 8
  %968 = load float, ptr %967, align 8, !tbaa !103
  %969 = fadd float %965, %968
  store float %969, ptr %67, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #13
  %970 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %971 = trunc i8 %970 to i1
  br i1 %971, label %972, label %988

972:                                              ; preds = %926
  %973 = load ptr, ptr %21, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.ImGuiIO, ptr %973, i32 0, i32 36
  %975 = getelementptr inbounds %struct.ImVec2, ptr %974, i32 0, i32 1
  %976 = load float, ptr %975, align 4, !tbaa !131
  %977 = load ptr, ptr %38, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.ImGuiWindow, ptr %977, i32 0, i32 49
  %979 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %978, i32 0, i32 0
  %980 = getelementptr inbounds %struct.ImVec2, ptr %979, i32 0, i32 1
  %981 = load float, ptr %980, align 4, !tbaa !132
  %982 = fsub float %976, %981
  %983 = load ptr, ptr %22, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.ImGuiStyle, ptr %983, i32 0, i32 11
  %985 = getelementptr inbounds %struct.ImVec2, ptr %984, i32 0, i32 1
  %986 = load float, ptr %985, align 4, !tbaa !80
  %987 = fsub float %982, %986
  br label %993

988:                                              ; preds = %926
  %989 = load ptr, ptr %20, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.ImGuiContext, ptr %989, i32 0, i32 8
  %991 = load float, ptr %990, align 8, !tbaa !44
  %992 = fmul float %991, 5.000000e-01
  br label %993

993:                                              ; preds = %988, %972
  %994 = phi float [ %987, %972 ], [ %992, %988 ]
  store float %994, ptr %68, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #13
  %995 = load ptr, ptr %21, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.ImGuiIO, ptr %995, i32 0, i32 20
  %997 = load i8, ptr %996, align 1, !tbaa !133, !range !39, !noundef !40
  %998 = trunc i8 %997 to i1
  %999 = zext i1 %998 to i8
  store i8 %999, ptr %69, align 1, !tbaa !41
  %1000 = load i8, ptr %51, align 1, !tbaa !41, !range !39, !noundef !40
  %1001 = trunc i8 %1000 to i1
  br i1 %1001, label %1014, label %1002

1002:                                             ; preds = %993
  %1003 = load i8, ptr %41, align 1, !tbaa !41, !range !39, !noundef !40
  %1004 = trunc i8 %1003 to i1
  br i1 %1004, label %1005, label %1018

1005:                                             ; preds = %1002
  %1006 = load i8, ptr %69, align 1, !tbaa !41, !range !39, !noundef !40
  %1007 = trunc i8 %1006 to i1
  br i1 %1007, label %1018, label %1008

1008:                                             ; preds = %1005
  %1009 = load ptr, ptr %21, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.ImGuiIO, ptr %1009, i32 0, i32 64
  %1011 = getelementptr inbounds [5 x i8], ptr %1010, i64 0, i64 0
  %1012 = load i8, ptr %1011, align 1, !tbaa !41, !range !39, !noundef !40
  %1013 = trunc i8 %1012 to i1
  br i1 %1013, label %1014, label %1018

1014:                                             ; preds = %1008, %993
  %1015 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1015)
  %1016 = load ptr, ptr %42, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1016, i32 0, i32 12
  store i8 1, ptr %1017, align 1, !tbaa !134
  br label %1090

1018:                                             ; preds = %1008, %1005, %1002
  %1019 = load i8, ptr %41, align 1, !tbaa !41, !range !39, !noundef !40
  %1020 = trunc i8 %1019 to i1
  br i1 %1020, label %1021, label %1033

1021:                                             ; preds = %1018
  %1022 = load i8, ptr %69, align 1, !tbaa !41, !range !39, !noundef !40
  %1023 = trunc i8 %1022 to i1
  br i1 %1023, label %1024, label %1033

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

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1031, i32 noundef 2097164)
  %1032 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1032, i32 noundef 6291469)
  br label %1089

1033:                                             ; preds = %1024, %1021, %1018
  %1034 = load ptr, ptr %21, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.ImGuiIO, ptr %1034, i32 0, i32 63
  %1036 = getelementptr inbounds [5 x i8], ptr %1035, i64 0, i64 0
  %1037 = load i8, ptr %1036, align 8, !tbaa !41, !range !39, !noundef !40
  %1038 = trunc i8 %1037 to i1
  br i1 %1038, label %1039, label %1055

1039:                                             ; preds = %1033
  %1040 = load ptr, ptr %42, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1040, i32 0, i32 12
  %1042 = load i8, ptr %1041, align 1, !tbaa !134, !range !39, !noundef !40
  %1043 = trunc i8 %1042 to i1
  br i1 %1043, label %1055, label %1044

1044:                                             ; preds = %1039
  %1045 = load i8, ptr %41, align 1, !tbaa !41, !range !39, !noundef !40
  %1046 = trunc i8 %1045 to i1
  br i1 %1046, label %1047, label %1054

1047:                                             ; preds = %1044
  %1048 = load ptr, ptr %42, align 8, !tbaa !5
  %1049 = load ptr, ptr %42, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1049, i32 0, i32 9
  %1051 = load float, ptr %67, align 4, !tbaa !43
  %1052 = load float, ptr %68, align 4, !tbaa !43
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1048, ptr noundef %1050, float noundef %1051, float noundef %1052)
  %1053 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %1053)
  br label %1054

1054:                                             ; preds = %1047, %1044
  br label %1088

1055:                                             ; preds = %1039, %1033
  %1056 = load ptr, ptr %21, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.ImGuiIO, ptr %1056, i32 0, i32 37
  %1058 = getelementptr inbounds [5 x i8], ptr %1057, i64 0, i64 0
  %1059 = load i8, ptr %1058, align 8, !tbaa !41, !range !39, !noundef !40
  %1060 = trunc i8 %1059 to i1
  br i1 %1060, label %1061, label %1087

1061:                                             ; preds = %1055
  %1062 = load ptr, ptr %42, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1062, i32 0, i32 12
  %1064 = load i8, ptr %1063, align 1, !tbaa !134, !range !39, !noundef !40
  %1065 = trunc i8 %1064 to i1
  br i1 %1065, label %1087, label %1066

1066:                                             ; preds = %1061
  %1067 = load ptr, ptr %21, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.ImGuiIO, ptr %1067, i32 0, i32 59
  %1069 = getelementptr inbounds %struct.ImVec2, ptr %1068, i32 0, i32 0
  %1070 = load float, ptr %1069, align 8, !tbaa !135
  %1071 = fcmp une float %1070, 0.000000e+00
  br i1 %1071, label %1078, label %1072

1072:                                             ; preds = %1066
  %1073 = load ptr, ptr %21, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.ImGuiIO, ptr %1073, i32 0, i32 59
  %1075 = getelementptr inbounds %struct.ImVec2, ptr %1074, i32 0, i32 1
  %1076 = load float, ptr %1075, align 4, !tbaa !136
  %1077 = fcmp une float %1076, 0.000000e+00
  br i1 %1077, label %1078, label %1087

1078:                                             ; preds = %1072, %1066
  %1079 = load ptr, ptr %42, align 8, !tbaa !5
  %1080 = load ptr, ptr %42, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1080, i32 0, i32 9
  %1082 = load float, ptr %67, align 4, !tbaa !43
  %1083 = load float, ptr %68, align 4, !tbaa !43
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %1079, ptr noundef %1081, float noundef %1082, float noundef %1083)
  %1084 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %1084)
  %1085 = load ptr, ptr %42, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1085, i32 0, i32 11
  store i8 1, ptr %1086, align 4, !tbaa !137
  br label %1087

1087:                                             ; preds = %1078, %1072, %1061, %1055
  br label %1088

1088:                                             ; preds = %1087, %1054
  br label %1089

1089:                                             ; preds = %1088, %1030
  br label %1090

1090:                                             ; preds = %1089, %1014
  %1091 = load ptr, ptr %42, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1091, i32 0, i32 12
  %1093 = load i8, ptr %1092, align 1, !tbaa !134, !range !39, !noundef !40
  %1094 = trunc i8 %1093 to i1
  br i1 %1094, label %1095, label %1104

1095:                                             ; preds = %1090
  %1096 = load ptr, ptr %21, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.ImGuiIO, ptr %1096, i32 0, i32 37
  %1098 = getelementptr inbounds [5 x i8], ptr %1097, i64 0, i64 0
  %1099 = load i8, ptr %1098, align 8, !tbaa !41, !range !39, !noundef !40
  %1100 = trunc i8 %1099 to i1
  br i1 %1100, label %1104, label %1101

1101:                                             ; preds = %1095
  %1102 = load ptr, ptr %42, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1102, i32 0, i32 12
  store i8 0, ptr %1103, align 1, !tbaa !134
  br label %1104

1104:                                             ; preds = %1101, %1095, %1090
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1105 = load ptr, ptr %21, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.ImGuiIO, ptr %1105, i32 0, i32 40
  %1107 = load i8, ptr %1106, align 8, !tbaa !105, !range !39, !noundef !40
  %1108 = trunc i8 %1107 to i1
  br i1 %1108, label %1109, label %1114

1109:                                             ; preds = %1104
  %1110 = load ptr, ptr %21, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.ImGuiIO, ptr %1110, i32 0, i32 42
  %1112 = load i8, ptr %1111, align 2, !tbaa !138, !range !39, !noundef !40
  %1113 = trunc i8 %1112 to i1
  br i1 %1113, label %1114, label %1124

1114:                                             ; preds = %1109, %1104
  %1115 = load i8, ptr %69, align 1, !tbaa !41, !range !39, !noundef !40
  %1116 = trunc i8 %1115 to i1
  br i1 %1116, label %1117, label %1122

1117:                                             ; preds = %1114
  %1118 = load ptr, ptr %21, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.ImGuiIO, ptr %1118, i32 0, i32 43
  %1120 = load i8, ptr %1119, align 1, !tbaa !139, !range !39, !noundef !40
  %1121 = trunc i8 %1120 to i1
  br label %1122

1122:                                             ; preds = %1117, %1114
  %1123 = phi i1 [ false, %1114 ], [ %1121, %1117 ]
  br label %1124

1124:                                             ; preds = %1122, %1109
  %1125 = phi i1 [ true, %1109 ], [ %1123, %1122 ]
  %1126 = zext i1 %1125 to i8
  store i8 %1126, ptr %70, align 1, !tbaa !41
  %1127 = load i32, ptr %15, align 4, !tbaa !9
  %1128 = and i32 %1127, 1024
  %1129 = icmp ne i32 %1128, 0
  br i1 %1129, label %1130, label %1158

1130:                                             ; preds = %1124
  %1131 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1131, label %1132, label %1158

1132:                                             ; preds = %1130
  %1133 = load i8, ptr %70, align 1, !tbaa !41, !range !39, !noundef !40
  %1134 = trunc i8 %1133 to i1
  br i1 %1134, label %1158, label %1135

1135:                                             ; preds = %1132
  %1136 = load ptr, ptr %21, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.ImGuiIO, ptr %1136, i32 0, i32 41
  %1138 = load i8, ptr %1137, align 1, !tbaa !140, !range !39, !noundef !40
  %1139 = trunc i8 %1138 to i1
  br i1 %1139, label %1158, label %1140

1140:                                             ; preds = %1135
  %1141 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1142 = trunc i8 %1141 to i1
  br i1 %1142, label %1158, label %1143

1143:                                             ; preds = %1140
  %1144 = load ptr, ptr %21, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.ImGuiIO, ptr %1144, i32 0, i32 76
  call void @llvm.lifetime.start.p0(i64 2, ptr %71) #13
  store i16 9, ptr %71, align 2, !tbaa !141
  %1146 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %1145, ptr noundef nonnull align 2 dereferenceable(2) %71)
  %1147 = xor i1 %1146, true
  call void @llvm.lifetime.end.p0(i64 2, ptr %71) #13
  br i1 %1147, label %1148, label %1157

1148:                                             ; preds = %1143
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #13
  store i32 9, ptr %72, align 4, !tbaa !9
  %1149 = load i32, ptr %15, align 4, !tbaa !9
  %1150 = load ptr, ptr %16, align 8, !tbaa !5
  %1151 = load ptr, ptr %17, align 8, !tbaa !5
  %1152 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %72, i32 noundef %1149, ptr noundef %1150, ptr noundef %1151)
  br i1 %1152, label %1153, label %1156

1153:                                             ; preds = %1148
  %1154 = load ptr, ptr %42, align 8, !tbaa !5
  %1155 = load i32, ptr %72, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1154, i32 noundef %1155)
  br label %1156

1156:                                             ; preds = %1153, %1148
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #13
  br label %1157

1157:                                             ; preds = %1156, %1143
  br label %1158

1158:                                             ; preds = %1157, %1140, %1135, %1132, %1130, %1124
  %1159 = load ptr, ptr %21, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.ImGuiIO, ptr %1159, i32 0, i32 76
  %1161 = getelementptr inbounds %struct.ImVector.7, ptr %1160, i32 0, i32 0
  %1162 = load i32, ptr %1161, align 8, !tbaa !142
  %1163 = icmp sgt i32 %1162, 0
  br i1 %1163, label %1164, label %1216

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

1167:                                             ; preds = %1164
  %1168 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1169 = trunc i8 %1168 to i1
  br i1 %1169, label %1213, label %1170

1170:                                             ; preds = %1167
  %1171 = load i8, ptr %47, align 1, !tbaa !41, !range !39, !noundef !40
  %1172 = trunc i8 %1171 to i1
  br i1 %1172, label %1213, label %1173

1173:                                             ; preds = %1170
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #13
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %1174

1174:                                             ; preds = %1209, %1173
  %1175 = load i32, ptr %73, align 4, !tbaa !9
  %1176 = load ptr, ptr %21, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.ImGuiIO, ptr %1176, i32 0, i32 76
  %1178 = getelementptr inbounds %struct.ImVector.7, ptr %1177, i32 0, i32 0
  %1179 = load i32, ptr %1178, align 8, !tbaa !142
  %1180 = icmp slt i32 %1175, %1179
  br i1 %1180, label %1182, label %1181

1181:                                             ; preds = %1174
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #13
  br label %1212

1182:                                             ; preds = %1174
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #13
  %1183 = load ptr, ptr %21, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.ImGuiIO, ptr %1183, i32 0, i32 76
  %1185 = load i32, ptr %73, align 4, !tbaa !9
  %1186 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %1184, i32 noundef %1185)
  %1187 = load i16, ptr %1186, align 2, !tbaa !141
  %1188 = zext i16 %1187 to i32
  store i32 %1188, ptr %74, align 4, !tbaa !9
  %1189 = load i32, ptr %74, align 4, !tbaa !9
  %1190 = icmp eq i32 %1189, 9
  br i1 %1190, label %1191, label %1197

1191:                                             ; preds = %1182
  %1192 = load ptr, ptr %21, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct.ImGuiIO, ptr %1192, i32 0, i32 41
  %1194 = load i8, ptr %1193, align 1, !tbaa !140, !range !39, !noundef !40
  %1195 = trunc i8 %1194 to i1
  br i1 %1195, label %1196, label %1197

1196:                                             ; preds = %1191
  store i32 4, ptr %19, align 4
  br label %1206

1197:                                             ; preds = %1191, %1182
  %1198 = load i32, ptr %15, align 4, !tbaa !9
  %1199 = load ptr, ptr %16, align 8, !tbaa !5
  %1200 = load ptr, ptr %17, align 8, !tbaa !5
  %1201 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %74, i32 noundef %1198, ptr noundef %1199, ptr noundef %1200)
  br i1 %1201, label %1202, label %1205

1202:                                             ; preds = %1197
  %1203 = load ptr, ptr %42, align 8, !tbaa !5
  %1204 = load i32, ptr %74, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1203, i32 noundef %1204)
  br label %1205

1205:                                             ; preds = %1202, %1197
  store i32 0, ptr %19, align 4
  br label %1206

1206:                                             ; preds = %1205, %1196
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #13
  %1207 = load i32, ptr %19, align 4
  switch i32 %1207, label %3110 [
    i32 0, label %1208
    i32 4, label %1209
  ]

1208:                                             ; preds = %1206
  br label %1209

1209:                                             ; preds = %1208, %1206
  %1210 = load i32, ptr %73, align 4, !tbaa !9
  %1211 = add nsw i32 %1210, 1
  store i32 %1211, ptr %73, align 4, !tbaa !9
  br label %1174, !llvm.loop !143

1212:                                             ; preds = %1181
  br label %1213

1213:                                             ; preds = %1212, %1170, %1167, %1164
  %1214 = load ptr, ptr %21, align 8, !tbaa !5
  %1215 = getelementptr inbounds %struct.ImGuiIO, ptr %1214, i32 0, i32 76
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1215, i32 noundef 0)
  br label %1216

1216:                                             ; preds = %1213, %1158
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #13
  br label %1217

1217:                                             ; preds = %1216, %914
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #13
  store i8 0, ptr %75, align 1, !tbaa !41
  %1218 = load ptr, ptr %20, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.ImGuiContext, ptr %1218, i32 0, i32 36
  %1220 = load i32, ptr %1219, align 8, !tbaa !92
  %1221 = load i32, ptr %29, align 4, !tbaa !9
  %1222 = icmp eq i32 %1220, %1221
  br i1 %1222, label %1223, label %1927

1223:                                             ; preds = %1217
  %1224 = load ptr, ptr %20, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.ImGuiContext, ptr %1224, i32 0, i32 39
  %1226 = load i8, ptr %1225, align 4, !tbaa !145, !range !39, !noundef !40
  %1227 = trunc i8 %1226 to i1
  br i1 %1227, label %1927, label %1228

1228:                                             ; preds = %1223
  %1229 = load i8, ptr %50, align 1, !tbaa !41, !range !39, !noundef !40
  %1230 = trunc i8 %1229 to i1
  br i1 %1230, label %1927, label %1231

1231:                                             ; preds = %1228
  %1232 = load ptr, ptr %42, align 8, !tbaa !5
  %1233 = icmp ne ptr %1232, null
  br i1 %1233, label %1234, label %1235

1234:                                             ; preds = %1231
  br label %1237

1235:                                             ; preds = %1231
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 3669, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1236:                                             ; No predecessors!
  br label %1237

1237:                                             ; preds = %1236, %1234
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #13
  %1238 = load ptr, ptr %21, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.ImGuiIO, ptr %1238, i32 0, i32 41
  %1240 = load i8, ptr %1239, align 1, !tbaa !140, !range !39, !noundef !40
  %1241 = trunc i8 %1240 to i1
  %1242 = zext i1 %1241 to i64
  %1243 = select i1 %1241, i32 4194304, i32 0
  store i32 %1243, ptr %76, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #13
  %1244 = load ptr, ptr %21, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.ImGuiIO, ptr %1244, i32 0, i32 20
  %1246 = load i8, ptr %1245, align 1, !tbaa !133, !range !39, !noundef !40
  %1247 = trunc i8 %1246 to i1
  %1248 = zext i1 %1247 to i8
  store i8 %1248, ptr %77, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #13
  %1249 = load i8, ptr %77, align 1, !tbaa !41, !range !39, !noundef !40
  %1250 = trunc i8 %1249 to i1
  br i1 %1250, label %1251, label %1261

1251:                                             ; preds = %1237
  %1252 = load ptr, ptr %21, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.ImGuiIO, ptr %1252, i32 0, i32 43
  %1254 = load i8, ptr %1253, align 1, !tbaa !139, !range !39, !noundef !40
  %1255 = trunc i8 %1254 to i1
  br i1 %1255, label %1256, label %1282

1256:                                             ; preds = %1251
  %1257 = load ptr, ptr %21, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.ImGuiIO, ptr %1257, i32 0, i32 40
  %1259 = load i8, ptr %1258, align 8, !tbaa !105, !range !39, !noundef !40
  %1260 = trunc i8 %1259 to i1
  br i1 %1260, label %1282, label %1271

1261:                                             ; preds = %1237
  %1262 = load ptr, ptr %21, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.ImGuiIO, ptr %1262, i32 0, i32 40
  %1264 = load i8, ptr %1263, align 8, !tbaa !105, !range !39, !noundef !40
  %1265 = trunc i8 %1264 to i1
  br i1 %1265, label %1266, label %1282

1266:                                             ; preds = %1261
  %1267 = load ptr, ptr %21, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct.ImGuiIO, ptr %1267, i32 0, i32 43
  %1269 = load i8, ptr %1268, align 1, !tbaa !139, !range !39, !noundef !40
  %1270 = trunc i8 %1269 to i1
  br i1 %1270, label %1282, label %1271

1271:                                             ; preds = %1266, %1256
  %1272 = load ptr, ptr %21, align 8, !tbaa !5
  %1273 = getelementptr inbounds %struct.ImGuiIO, ptr %1272, i32 0, i32 42
  %1274 = load i8, ptr %1273, align 2, !tbaa !138, !range !39, !noundef !40
  %1275 = trunc i8 %1274 to i1
  br i1 %1275, label %1282, label %1276

1276:                                             ; preds = %1271
  %1277 = load ptr, ptr %21, align 8, !tbaa !5
  %1278 = getelementptr inbounds %struct.ImGuiIO, ptr %1277, i32 0, i32 41
  %1279 = load i8, ptr %1278, align 1, !tbaa !140, !range !39, !noundef !40
  %1280 = trunc i8 %1279 to i1
  %1281 = xor i1 %1280, true
  br label %1282

1282:                                             ; preds = %1276, %1271, %1266, %1261, %1256, %1251
  %1283 = phi i1 [ false, %1271 ], [ false, %1266 ], [ false, %1261 ], [ false, %1256 ], [ false, %1251 ], [ %1281, %1276 ]
  %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) #13
  %1285 = load i8, ptr %77, align 1, !tbaa !41, !range !39, !noundef !40
  %1286 = trunc i8 %1285 to i1
  br i1 %1286, label %1287, label %1308

1287:                                             ; preds = %1282
  %1288 = load ptr, ptr %21, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct.ImGuiIO, ptr %1288, i32 0, i32 43
  %1290 = load i8, ptr %1289, align 1, !tbaa !139, !range !39, !noundef !40
  %1291 = trunc i8 %1290 to i1
  br i1 %1291, label %1292, label %1308

1292:                                             ; preds = %1287
  %1293 = load ptr, ptr %21, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.ImGuiIO, ptr %1293, i32 0, i32 41
  %1295 = load i8, ptr %1294, align 1, !tbaa !140, !range !39, !noundef !40
  %1296 = trunc i8 %1295 to i1
  br i1 %1296, label %1297, label %1308

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

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

1308:                                             ; preds = %1302, %1297, %1292, %1287, %1282
  %1309 = phi i1 [ false, %1297 ], [ false, %1292 ], [ false, %1287 ], [ false, %1282 ], [ %1307, %1302 ]
  %1310 = zext i1 %1309 to i8
  store i8 %1310, ptr %79, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #13
  %1311 = load i8, ptr %77, align 1, !tbaa !41, !range !39, !noundef !40
  %1312 = trunc i8 %1311 to i1
  br i1 %1312, label %1313, label %1318

1313:                                             ; preds = %1308
  %1314 = load ptr, ptr %21, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.ImGuiIO, ptr %1314, i32 0, i32 42
  %1316 = load i8, ptr %1315, align 2, !tbaa !138, !range !39, !noundef !40
  %1317 = trunc i8 %1316 to i1
  br label %1323

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

1323:                                             ; preds = %1318, %1313
  %1324 = phi i1 [ %1317, %1313 ], [ %1322, %1318 ]
  %1325 = zext i1 %1324 to i8
  store i8 %1325, ptr %80, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #13
  %1326 = load i8, ptr %77, align 1, !tbaa !41, !range !39, !noundef !40
  %1327 = trunc i8 %1326 to i1
  br i1 %1327, label %1328, label %1344

1328:                                             ; preds = %1323
  %1329 = load ptr, ptr %21, align 8, !tbaa !5
  %1330 = getelementptr inbounds %struct.ImGuiIO, ptr %1329, i32 0, i32 43
  %1331 = load i8, ptr %1330, align 1, !tbaa !139, !range !39, !noundef !40
  %1332 = trunc i8 %1331 to i1
  br i1 %1332, label %1333, label %1344

1333:                                             ; preds = %1328
  %1334 = load ptr, ptr %21, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.ImGuiIO, ptr %1334, i32 0, i32 40
  %1336 = load i8, ptr %1335, align 8, !tbaa !105, !range !39, !noundef !40
  %1337 = trunc i8 %1336 to i1
  br i1 %1337, label %1344, label %1338

1338:                                             ; preds = %1333
  %1339 = load ptr, ptr %21, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.ImGuiIO, ptr %1339, i32 0, i32 42
  %1341 = load i8, ptr %1340, align 2, !tbaa !138, !range !39, !noundef !40
  %1342 = trunc i8 %1341 to i1
  %1343 = xor i1 %1342, true
  br label %1344

1344:                                             ; preds = %1338, %1333, %1328, %1323
  %1345 = phi i1 [ false, %1333 ], [ false, %1328 ], [ false, %1323 ], [ %1343, %1338 ]
  %1346 = zext i1 %1345 to i8
  store i8 %1346, ptr %81, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #13
  %1347 = load ptr, ptr %21, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ImGuiIO, ptr %1347, i32 0, i32 40
  %1349 = load i8, ptr %1348, align 8, !tbaa !105, !range !39, !noundef !40
  %1350 = trunc i8 %1349 to i1
  br i1 %1350, label %1351, label %1367

1351:                                             ; preds = %1344
  %1352 = load ptr, ptr %21, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.ImGuiIO, ptr %1352, i32 0, i32 41
  %1354 = load i8, ptr %1353, align 1, !tbaa !140, !range !39, !noundef !40
  %1355 = trunc i8 %1354 to i1
  br i1 %1355, label %1367, label %1356

1356:                                             ; preds = %1351
  %1357 = load ptr, ptr %21, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.ImGuiIO, ptr %1357, i32 0, i32 42
  %1359 = load i8, ptr %1358, align 2, !tbaa !138, !range !39, !noundef !40
  %1360 = trunc i8 %1359 to i1
  br i1 %1360, label %1367, label %1361

1361:                                             ; preds = %1356
  %1362 = load ptr, ptr %21, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.ImGuiIO, ptr %1362, i32 0, i32 43
  %1364 = load i8, ptr %1363, align 1, !tbaa !139, !range !39, !noundef !40
  %1365 = trunc i8 %1364 to i1
  %1366 = xor i1 %1365, true
  br label %1367

1367:                                             ; preds = %1361, %1356, %1351, %1344
  %1368 = phi i1 [ false, %1356 ], [ false, %1351 ], [ false, %1344 ], [ %1366, %1361 ]
  %1369 = zext i1 %1368 to i8
  store i8 %1369, ptr %82, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #13
  %1370 = load ptr, ptr %21, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.ImGuiIO, ptr %1370, i32 0, i32 41
  %1372 = load i8, ptr %1371, align 1, !tbaa !140, !range !39, !noundef !40
  %1373 = trunc i8 %1372 to i1
  br i1 %1373, label %1374, label %1390

1374:                                             ; preds = %1367
  %1375 = load ptr, ptr %21, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.ImGuiIO, ptr %1375, i32 0, i32 40
  %1377 = load i8, ptr %1376, align 8, !tbaa !105, !range !39, !noundef !40
  %1378 = trunc i8 %1377 to i1
  br i1 %1378, label %1390, label %1379

1379:                                             ; preds = %1374
  %1380 = load ptr, ptr %21, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.ImGuiIO, ptr %1380, i32 0, i32 42
  %1382 = load i8, ptr %1381, align 2, !tbaa !138, !range !39, !noundef !40
  %1383 = trunc i8 %1382 to i1
  br i1 %1383, label %1390, label %1384

1384:                                             ; preds = %1379
  %1385 = load ptr, ptr %21, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.ImGuiIO, ptr %1385, i32 0, i32 43
  %1387 = load i8, ptr %1386, align 1, !tbaa !139, !range !39, !noundef !40
  %1388 = trunc i8 %1387 to i1
  %1389 = xor i1 %1388, true
  br label %1390

1390:                                             ; preds = %1384, %1379, %1374, %1367
  %1391 = phi i1 [ false, %1379 ], [ false, %1374 ], [ false, %1367 ], [ %1389, %1384 ]
  %1392 = zext i1 %1391 to i8
  store i8 %1392, ptr %83, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #13
  %1393 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1394 = trunc i8 %1393 to i1
  br i1 %1394, label %1395, label %1397

1395:                                             ; preds = %1390
  %1396 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %1396, label %1402, label %1397

1397:                                             ; preds = %1395, %1390
  %1398 = load i8, ptr %83, align 1, !tbaa !41, !range !39, !noundef !40
  %1399 = trunc i8 %1398 to i1
  br i1 %1399, label %1400, label %1416

1400:                                             ; preds = %1397
  %1401 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1401, label %1402, label %1416

1402:                                             ; preds = %1400, %1395
  %1403 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1404 = trunc i8 %1403 to i1
  br i1 %1404, label %1416, label %1405

1405:                                             ; preds = %1402
  %1406 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %1407 = trunc i8 %1406 to i1
  br i1 %1407, label %1416, label %1408

1408:                                             ; preds = %1405
  %1409 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1410 = trunc i8 %1409 to i1
  br i1 %1410, label %1411, label %1414

1411:                                             ; preds = %1408
  %1412 = load ptr, ptr %42, align 8, !tbaa !5
  %1413 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1412)
  br label %1414

1414:                                             ; preds = %1411, %1408
  %1415 = phi i1 [ true, %1408 ], [ %1413, %1411 ]
  br label %1416

1416:                                             ; preds = %1414, %1405, %1402, %1400, %1397
  %1417 = phi i1 [ false, %1405 ], [ false, %1402 ], [ false, %1400 ], [ false, %1397 ], [ %1415, %1414 ]
  %1418 = zext i1 %1417 to i8
  store i8 %1418, ptr %84, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #13
  %1419 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1420 = trunc i8 %1419 to i1
  br i1 %1420, label %1421, label %1423

1421:                                             ; preds = %1416
  %1422 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1422, label %1428, label %1423

1423:                                             ; preds = %1421, %1416
  %1424 = load i8, ptr %82, align 1, !tbaa !41, !range !39, !noundef !40
  %1425 = trunc i8 %1424 to i1
  br i1 %1425, label %1426, label %1439

1426:                                             ; preds = %1423
  %1427 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1427, label %1428, label %1439

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

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

1434:                                             ; preds = %1431
  %1435 = load ptr, ptr %42, align 8, !tbaa !5
  %1436 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1435)
  br label %1437

1437:                                             ; preds = %1434, %1431
  %1438 = phi i1 [ true, %1431 ], [ %1436, %1434 ]
  br label %1439

1439:                                             ; preds = %1437, %1428, %1426, %1423
  %1440 = phi i1 [ false, %1428 ], [ false, %1426 ], [ false, %1423 ], [ %1438, %1437 ]
  %1441 = zext i1 %1440 to i8
  store i8 %1441, ptr %85, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #13
  %1442 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1443 = trunc i8 %1442 to i1
  br i1 %1443, label %1444, label %1446

1444:                                             ; preds = %1439
  %1445 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1445, label %1451, label %1446

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

1449:                                             ; preds = %1446
  %1450 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1450, label %1451, label %1455

1451:                                             ; preds = %1449, %1444
  %1452 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1453 = trunc i8 %1452 to i1
  %1454 = xor i1 %1453, true
  br label %1455

1455:                                             ; preds = %1451, %1449, %1446
  %1456 = phi i1 [ false, %1449 ], [ false, %1446 ], [ %1454, %1451 ]
  %1457 = zext i1 %1456 to i8
  store i8 %1457, ptr %86, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #13
  %1458 = load i8, ptr %78, align 1, !tbaa !41, !range !39, !noundef !40
  %1459 = trunc i8 %1458 to i1
  br i1 %1459, label %1460, label %1468

1460:                                             ; preds = %1455
  %1461 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1461, label %1462, label %1468

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

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

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

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

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

1478:                                             ; preds = %1475
  %1479 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %1479, label %1480, label %1486

1480:                                             ; preds = %1478, %1473
  %1481 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1482 = trunc i8 %1481 to i1
  br i1 %1482, label %1486, label %1483

1483:                                             ; preds = %1480
  %1484 = load i8, ptr %27, align 1, !tbaa !41, !range !39, !noundef !40
  %1485 = trunc i8 %1484 to i1
  br label %1486

1486:                                             ; preds = %1483, %1480, %1478, %1475
  %1487 = phi i1 [ false, %1480 ], [ false, %1478 ], [ false, %1475 ], [ %1485, %1483 ]
  %1488 = zext i1 %1487 to i8
  store i8 %1488, ptr %88, align 1, !tbaa !41
  %1489 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1489, label %1490, label %1504

1490:                                             ; preds = %1486
  %1491 = load ptr, ptr %42, align 8, !tbaa !5
  %1492 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1493 = trunc i8 %1492 to i1
  br i1 %1493, label %1494, label %1495

1494:                                             ; preds = %1490
  br label %1500

1495:                                             ; preds = %1490
  %1496 = load i8, ptr %80, align 1, !tbaa !41, !range !39, !noundef !40
  %1497 = trunc i8 %1496 to i1
  %1498 = zext i1 %1497 to i64
  %1499 = select i1 %1497, i32 2097164, i32 2097152
  br label %1500

1500:                                             ; preds = %1495, %1494
  %1501 = phi i32 [ 2097156, %1494 ], [ %1499, %1495 ]
  %1502 = load i32, ptr %76, align 4, !tbaa !9
  %1503 = or i32 %1501, %1502
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1491, i32 noundef %1503)
  br label %1912

1504:                                             ; preds = %1486
  %1505 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1505, label %1506, label %1520

1506:                                             ; preds = %1504
  %1507 = load ptr, ptr %42, align 8, !tbaa !5
  %1508 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1509 = trunc i8 %1508 to i1
  br i1 %1509, label %1510, label %1511

1510:                                             ; preds = %1506
  br label %1516

1511:                                             ; preds = %1506
  %1512 = load i8, ptr %80, align 1, !tbaa !41, !range !39, !noundef !40
  %1513 = trunc i8 %1512 to i1
  %1514 = zext i1 %1513 to i64
  %1515 = select i1 %1513, i32 2097165, i32 2097153
  br label %1516

1516:                                             ; preds = %1511, %1510
  %1517 = phi i32 [ 2097157, %1510 ], [ %1515, %1511 ]
  %1518 = load i32, ptr %76, align 4, !tbaa !9
  %1519 = or i32 %1517, %1518
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1507, i32 noundef %1519)
  br label %1911

1520:                                             ; preds = %1504
  %1521 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1521, label %1522, label %1550

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

1525:                                             ; preds = %1522
  %1526 = load ptr, ptr %21, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.ImGuiIO, ptr %1526, i32 0, i32 40
  %1528 = load i8, ptr %1527, align 8, !tbaa !105, !range !39, !noundef !40
  %1529 = trunc i8 %1528 to i1
  br i1 %1529, label %1530, label %1541

1530:                                             ; preds = %1525
  %1531 = load ptr, ptr %38, align 8, !tbaa !5
  %1532 = load ptr, ptr %38, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.ImGuiWindow, ptr %1532, i32 0, i32 14
  %1534 = getelementptr inbounds %struct.ImVec2, ptr %1533, i32 0, i32 1
  %1535 = load float, ptr %1534, align 4, !tbaa !146
  %1536 = load ptr, ptr %20, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.ImGuiContext, ptr %1536, i32 0, i32 8
  %1538 = load float, ptr %1537, align 8, !tbaa !44
  %1539 = fsub float %1535, %1538
  %1540 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1539, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1531, float noundef %1540)
  br label %1549

1541:                                             ; preds = %1525
  %1542 = load ptr, ptr %42, align 8, !tbaa !5
  %1543 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1544 = trunc i8 %1543 to i1
  %1545 = zext i1 %1544 to i64
  %1546 = select i1 %1544, i32 2097158, i32 2097154
  %1547 = load i32, ptr %76, align 4, !tbaa !9
  %1548 = or i32 %1546, %1547
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1542, i32 noundef %1548)
  br label %1549

1549:                                             ; preds = %1541, %1530
  br label %1910

1550:                                             ; preds = %1522, %1520
  %1551 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1551, label %1552, label %1581

1552:                                             ; preds = %1550
  %1553 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1554 = trunc i8 %1553 to i1
  br i1 %1554, label %1555, label %1581

1555:                                             ; preds = %1552
  %1556 = load ptr, ptr %21, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct.ImGuiIO, ptr %1556, i32 0, i32 40
  %1558 = load i8, ptr %1557, align 8, !tbaa !105, !range !39, !noundef !40
  %1559 = trunc i8 %1558 to i1
  br i1 %1559, label %1560, label %1572

1560:                                             ; preds = %1555
  %1561 = load ptr, ptr %38, align 8, !tbaa !5
  %1562 = load ptr, ptr %38, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.ImGuiWindow, ptr %1562, i32 0, i32 14
  %1564 = getelementptr inbounds %struct.ImVec2, ptr %1563, i32 0, i32 1
  %1565 = load float, ptr %1564, align 4, !tbaa !146
  %1566 = load ptr, ptr %20, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.ImGuiContext, ptr %1566, i32 0, i32 8
  %1568 = load float, ptr %1567, align 8, !tbaa !44
  %1569 = fadd float %1565, %1568
  %1570 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1571 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1569, float noundef %1570)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %1561, float noundef %1571)
  br label %1580

1572:                                             ; preds = %1555
  %1573 = load ptr, ptr %42, align 8, !tbaa !5
  %1574 = load i8, ptr %81, align 1, !tbaa !41, !range !39, !noundef !40
  %1575 = trunc i8 %1574 to i1
  %1576 = zext i1 %1575 to i64
  %1577 = select i1 %1575, i32 2097159, i32 2097155
  %1578 = load i32, ptr %76, align 4, !tbaa !9
  %1579 = or i32 %1577, %1578
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1573, i32 noundef %1579)
  br label %1580

1580:                                             ; preds = %1572, %1560
  br label %1909

1581:                                             ; preds = %1552, %1550
  %1582 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1582, label %1583, label %1597

1583:                                             ; preds = %1581
  %1584 = load ptr, ptr %42, align 8, !tbaa !5
  %1585 = load ptr, ptr %21, align 8, !tbaa !5
  %1586 = getelementptr inbounds %struct.ImGuiIO, ptr %1585, i32 0, i32 40
  %1587 = load i8, ptr %1586, align 8, !tbaa !105, !range !39, !noundef !40
  %1588 = trunc i8 %1587 to i1
  br i1 %1588, label %1589, label %1592

1589:                                             ; preds = %1583
  %1590 = load i32, ptr %76, align 4, !tbaa !9
  %1591 = or i32 2097158, %1590
  br label %1595

1592:                                             ; preds = %1583
  %1593 = load i32, ptr %76, align 4, !tbaa !9
  %1594 = or i32 2097156, %1593
  br label %1595

1595:                                             ; preds = %1592, %1589
  %1596 = phi i32 [ %1591, %1589 ], [ %1594, %1592 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1584, i32 noundef %1596)
  br label %1908

1597:                                             ; preds = %1581
  %1598 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1598, label %1599, label %1613

1599:                                             ; preds = %1597
  %1600 = load ptr, ptr %42, align 8, !tbaa !5
  %1601 = load ptr, ptr %21, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.ImGuiIO, ptr %1601, i32 0, i32 40
  %1603 = load i8, ptr %1602, align 8, !tbaa !105, !range !39, !noundef !40
  %1604 = trunc i8 %1603 to i1
  br i1 %1604, label %1605, label %1608

1605:                                             ; preds = %1599
  %1606 = load i32, ptr %76, align 4, !tbaa !9
  %1607 = or i32 2097159, %1606
  br label %1611

1608:                                             ; preds = %1599
  %1609 = load i32, ptr %76, align 4, !tbaa !9
  %1610 = or i32 2097157, %1609
  br label %1611

1611:                                             ; preds = %1608, %1605
  %1612 = phi i32 [ %1607, %1605 ], [ %1610, %1608 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1600, i32 noundef %1612)
  br label %1907

1613:                                             ; preds = %1597
  %1614 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1614, label %1615, label %1622

1615:                                             ; preds = %1613
  %1616 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1617 = trunc i8 %1616 to i1
  br i1 %1617, label %1622, label %1618

1618:                                             ; preds = %1615
  %1619 = load ptr, ptr %42, align 8, !tbaa !5
  %1620 = load i32, ptr %76, align 4, !tbaa !9
  %1621 = or i32 2097160, %1620
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1619, i32 noundef %1621)
  br label %1906

1622:                                             ; preds = %1615, %1613
  %1623 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1623, label %1624, label %1661

1624:                                             ; preds = %1622
  %1625 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1626 = trunc i8 %1625 to i1
  br i1 %1626, label %1661, label %1627

1627:                                             ; preds = %1624
  %1628 = load ptr, ptr %42, align 8, !tbaa !5
  %1629 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1628)
  br i1 %1629, label %1657, label %1630

1630:                                             ; preds = %1627
  %1631 = load i8, ptr %80, align 1, !tbaa !41, !range !39, !noundef !40
  %1632 = trunc i8 %1631 to i1
  br i1 %1632, label %1633, label %1635

1633:                                             ; preds = %1630
  %1634 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1634, i32 noundef 6291468)
  br label %1656

1635:                                             ; preds = %1630
  %1636 = load i8, ptr %77, align 1, !tbaa !41, !range !39, !noundef !40
  %1637 = trunc i8 %1636 to i1
  br i1 %1637, label %1638, label %1655

1638:                                             ; preds = %1635
  %1639 = load ptr, ptr %21, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.ImGuiIO, ptr %1639, i32 0, i32 43
  %1641 = load i8, ptr %1640, align 1, !tbaa !139, !range !39, !noundef !40
  %1642 = trunc i8 %1641 to i1
  br i1 %1642, label %1643, label %1655

1643:                                             ; preds = %1638
  %1644 = load ptr, ptr %21, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.ImGuiIO, ptr %1644, i32 0, i32 42
  %1646 = load i8, ptr %1645, align 2, !tbaa !138, !range !39, !noundef !40
  %1647 = trunc i8 %1646 to i1
  br i1 %1647, label %1655, label %1648

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

1653:                                             ; preds = %1648
  %1654 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1654, i32 noundef 6291460)
  br label %1655

1655:                                             ; preds = %1653, %1648, %1643, %1638, %1635
  br label %1656

1656:                                             ; preds = %1655, %1633
  br label %1657

1657:                                             ; preds = %1656, %1627
  %1658 = load ptr, ptr %42, align 8, !tbaa !5
  %1659 = load i32, ptr %76, align 4, !tbaa !9
  %1660 = or i32 2097161, %1659
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1658, i32 noundef %1660)
  br label %1905

1661:                                             ; preds = %1624, %1622
  %1662 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1662, label %1665, label %1663

1663:                                             ; preds = %1661
  %1664 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %1664, label %1665, label %1703

1665:                                             ; preds = %1663, %1661
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #13
  %1666 = load i32, ptr %15, align 4, !tbaa !9
  %1667 = and i32 %1666, 2048
  %1668 = icmp ne i32 %1667, 0
  %1669 = zext i1 %1668 to i8
  store i8 %1669, ptr %89, align 1, !tbaa !41
  %1670 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %1671 = trunc i8 %1670 to i1
  br i1 %1671, label %1672, label %1688

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

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

1680:                                             ; preds = %1675, %1672
  %1681 = load i8, ptr %89, align 1, !tbaa !41, !range !39, !noundef !40
  %1682 = trunc i8 %1681 to i1
  br i1 %1682, label %1689, label %1683

1683:                                             ; preds = %1680
  %1684 = load ptr, ptr %21, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct.ImGuiIO, ptr %1684, i32 0, i32 40
  %1686 = load i8, ptr %1685, align 8, !tbaa !105, !range !39, !noundef !40
  %1687 = trunc i8 %1686 to i1
  br i1 %1687, label %1688, label %1689

1688:                                             ; preds = %1683, %1675, %1665
  store i8 1, ptr %50, align 1, !tbaa !41
  store i8 1, ptr %60, align 1, !tbaa !41
  br label %1702

1689:                                             ; preds = %1683, %1680
  %1690 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1691 = trunc i8 %1690 to i1
  br i1 %1691, label %1701, label %1692

1692:                                             ; preds = %1689
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #13
  store i32 10, ptr %90, align 4, !tbaa !9
  %1693 = load i32, ptr %15, align 4, !tbaa !9
  %1694 = load ptr, ptr %16, align 8, !tbaa !5
  %1695 = load ptr, ptr %17, align 8, !tbaa !5
  %1696 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %90, i32 noundef %1693, ptr noundef %1694, ptr noundef %1695)
  br i1 %1696, label %1697, label %1700

1697:                                             ; preds = %1692
  %1698 = load ptr, ptr %42, align 8, !tbaa !5
  %1699 = load i32, ptr %90, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1698, i32 noundef %1699)
  br label %1700

1700:                                             ; preds = %1697, %1692
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #13
  br label %1701

1701:                                             ; preds = %1700, %1689
  br label %1702

1702:                                             ; preds = %1701, %1688
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #13
  br label %1904

1703:                                             ; preds = %1663
  %1704 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1704, label %1705, label %1706

1705:                                             ; preds = %1703
  store i8 1, ptr %75, align 1, !tbaa !41
  store i8 1, ptr %50, align 1, !tbaa !41
  br label %1903

1706:                                             ; preds = %1703
  %1707 = load i8, ptr %87, align 1, !tbaa !41, !range !39, !noundef !40
  %1708 = trunc i8 %1707 to i1
  br i1 %1708, label %1712, label %1709

1709:                                             ; preds = %1706
  %1710 = load i8, ptr %88, align 1, !tbaa !41, !range !39, !noundef !40
  %1711 = trunc i8 %1710 to i1
  br i1 %1711, label %1712, label %1719

1712:                                             ; preds = %1709, %1706
  %1713 = load ptr, ptr %42, align 8, !tbaa !5
  %1714 = load i8, ptr %87, align 1, !tbaa !41, !range !39, !noundef !40
  %1715 = trunc i8 %1714 to i1
  %1716 = zext i1 %1715 to i64
  %1717 = select i1 %1715, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %1713, i32 noundef %1717)
  %1718 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1718)
  br label %1902

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

1722:                                             ; preds = %1719
  %1723 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1723, label %1724, label %1728

1724:                                             ; preds = %1722
  %1725 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1725)
  %1726 = load ptr, ptr %42, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1726, i32 0, i32 11
  store i8 1, ptr %1727, align 4, !tbaa !137
  br label %1901

1728:                                             ; preds = %1722, %1719
  %1729 = load i8, ptr %84, align 1, !tbaa !41, !range !39, !noundef !40
  %1730 = trunc i8 %1729 to i1
  br i1 %1730, label %1734, label %1731

1731:                                             ; preds = %1728
  %1732 = load i8, ptr %85, align 1, !tbaa !41, !range !39, !noundef !40
  %1733 = trunc i8 %1732 to i1
  br i1 %1733, label %1734, label %1828

1734:                                             ; preds = %1731, %1728
  %1735 = load ptr, ptr %21, align 8, !tbaa !5
  %1736 = getelementptr inbounds %struct.ImGuiIO, ptr %1735, i32 0, i32 31
  %1737 = load ptr, ptr %1736, align 8, !tbaa !147
  %1738 = icmp ne ptr %1737, null
  br i1 %1738, label %1739, label %1812

1739:                                             ; preds = %1734
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #13
  %1740 = load ptr, ptr %42, align 8, !tbaa !5
  %1741 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1740)
  br i1 %1741, label %1742, label %1752

1742:                                             ; preds = %1739
  %1743 = load ptr, ptr %42, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1743, i32 0, i32 9
  %1745 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1744, i32 0, i32 1
  %1746 = load i32, ptr %1745, align 4, !tbaa !148
  %1747 = load ptr, ptr %42, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1747, i32 0, i32 9
  %1749 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1748, i32 0, i32 2
  %1750 = load i32, ptr %1749, align 4, !tbaa !149
  %1751 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1746, i32 noundef %1750)
  br label %1753

1752:                                             ; preds = %1739
  br label %1753

1753:                                             ; preds = %1752, %1742
  %1754 = phi i32 [ %1751, %1742 ], [ 0, %1752 ]
  store i32 %1754, ptr %91, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #13
  %1755 = load ptr, ptr %42, align 8, !tbaa !5
  %1756 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1755)
  br i1 %1756, label %1757, label %1767

1757:                                             ; preds = %1753
  %1758 = load ptr, ptr %42, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1758, i32 0, i32 9
  %1760 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1759, i32 0, i32 1
  %1761 = load i32, ptr %1760, align 4, !tbaa !148
  %1762 = load ptr, ptr %42, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1762, i32 0, i32 9
  %1764 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %1763, i32 0, i32 2
  %1765 = load i32, ptr %1764, align 4, !tbaa !149
  %1766 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1761, i32 noundef %1765)
  br label %1771

1767:                                             ; preds = %1753
  %1768 = load ptr, ptr %42, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1768, i32 0, i32 1
  %1770 = load i32, ptr %1769, align 4, !tbaa !100
  br label %1771

1771:                                             ; preds = %1767, %1757
  %1772 = phi i32 [ %1766, %1757 ], [ %1770, %1767 ]
  store i32 %1772, ptr %92, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #13
  %1773 = load ptr, ptr %42, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1773, i32 0, i32 3
  %1775 = getelementptr inbounds %struct.ImVector.7, ptr %1774, i32 0, i32 2
  %1776 = load ptr, ptr %1775, align 8, !tbaa !99
  %1777 = load i32, ptr %91, align 4, !tbaa !9
  %1778 = sext i32 %1777 to i64
  %1779 = getelementptr inbounds i16, ptr %1776, i64 %1778
  %1780 = load ptr, ptr %42, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1780, i32 0, i32 3
  %1782 = getelementptr inbounds %struct.ImVector.7, ptr %1781, i32 0, i32 2
  %1783 = load ptr, ptr %1782, align 8, !tbaa !99
  %1784 = load i32, ptr %92, align 4, !tbaa !9
  %1785 = sext i32 %1784 to i64
  %1786 = getelementptr inbounds i16, ptr %1783, i64 %1785
  %1787 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1779, ptr noundef %1786)
  %1788 = add nsw i32 %1787, 1
  store i32 %1788, ptr %93, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #13
  %1789 = load i32, ptr %93, align 4, !tbaa !9
  %1790 = sext i32 %1789 to i64
  %1791 = mul i64 %1790, 1
  %1792 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1791)
  store ptr %1792, ptr %94, align 8, !tbaa !5
  %1793 = load ptr, ptr %94, align 8, !tbaa !5
  %1794 = load i32, ptr %93, align 4, !tbaa !9
  %1795 = load ptr, ptr %42, align 8, !tbaa !5
  %1796 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1795, i32 0, i32 3
  %1797 = getelementptr inbounds %struct.ImVector.7, ptr %1796, i32 0, i32 2
  %1798 = load ptr, ptr %1797, align 8, !tbaa !99
  %1799 = load i32, ptr %91, align 4, !tbaa !9
  %1800 = sext i32 %1799 to i64
  %1801 = getelementptr inbounds i16, ptr %1798, i64 %1800
  %1802 = load ptr, ptr %42, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1802, i32 0, i32 3
  %1804 = getelementptr inbounds %struct.ImVector.7, ptr %1803, i32 0, i32 2
  %1805 = load ptr, ptr %1804, align 8, !tbaa !99
  %1806 = load i32, ptr %92, align 4, !tbaa !9
  %1807 = sext i32 %1806 to i64
  %1808 = getelementptr inbounds i16, ptr %1805, i64 %1807
  %1809 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1793, i32 noundef %1794, ptr noundef %1801, ptr noundef %1808)
  %1810 = load ptr, ptr %94, align 8, !tbaa !5
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1810)
  %1811 = load ptr, ptr %94, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1811)
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #13
  br label %1812

1812:                                             ; preds = %1771, %1734
  %1813 = load i8, ptr %84, align 1, !tbaa !41, !range !39, !noundef !40
  %1814 = trunc i8 %1813 to i1
  br i1 %1814, label %1815, label %1827

1815:                                             ; preds = %1812
  %1816 = load ptr, ptr %42, align 8, !tbaa !5
  %1817 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1816)
  br i1 %1817, label %1820, label %1818

1818:                                             ; preds = %1815
  %1819 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %1819)
  br label %1820

1820:                                             ; preds = %1818, %1815
  %1821 = load ptr, ptr %42, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1821, i32 0, i32 11
  store i8 1, ptr %1822, align 4, !tbaa !137
  %1823 = load ptr, ptr %42, align 8, !tbaa !5
  %1824 = load ptr, ptr %42, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1824, i32 0, i32 9
  %1826 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1823, ptr noundef %1825)
  br label %1827

1827:                                             ; preds = %1820, %1812
  br label %1900

1828:                                             ; preds = %1731
  %1829 = load i8, ptr %86, align 1, !tbaa !41, !range !39, !noundef !40
  %1830 = trunc i8 %1829 to i1
  br i1 %1830, label %1831, label %1899

1831:                                             ; preds = %1828
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #13
  %1832 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %1832, ptr %95, align 8, !tbaa !5
  %1833 = load ptr, ptr %95, align 8, !tbaa !5
  %1834 = icmp ne ptr %1833, null
  br i1 %1834, label %1835, label %1898

1835:                                             ; preds = %1831
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #13
  %1836 = load ptr, ptr %95, align 8, !tbaa !5
  %1837 = call i64 @strlen(ptr noundef %1836) #15
  %1838 = trunc i64 %1837 to i32
  store i32 %1838, ptr %96, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #13
  %1839 = load i32, ptr %96, align 4, !tbaa !9
  %1840 = add nsw i32 %1839, 1
  %1841 = sext i32 %1840 to i64
  %1842 = mul i64 %1841, 2
  %1843 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1842)
  store ptr %1843, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #13
  store i32 0, ptr %98, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #13
  %1844 = load ptr, ptr %95, align 8, !tbaa !5
  store ptr %1844, ptr %99, align 8, !tbaa !5
  br label %1845

1845:                                             ; preds = %1878, %1876, %1835
  %1846 = load ptr, ptr %99, align 8, !tbaa !5
  %1847 = load i8, ptr %1846, align 1, !tbaa !111
  %1848 = icmp ne i8 %1847, 0
  br i1 %1848, label %1850, label %1849

1849:                                             ; preds = %1845
  store i32 5, ptr %19, align 4
  br label %1879

1850:                                             ; preds = %1845
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #13
  %1851 = load ptr, ptr %99, align 8, !tbaa !5
  %1852 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %100, ptr noundef %1851, ptr noundef null)
  %1853 = load ptr, ptr %99, align 8, !tbaa !5
  %1854 = sext i32 %1852 to i64
  %1855 = getelementptr inbounds i8, ptr %1853, i64 %1854
  store ptr %1855, ptr %99, align 8, !tbaa !5
  %1856 = load i32, ptr %100, align 4, !tbaa !9
  %1857 = icmp eq i32 %1856, 0
  br i1 %1857, label %1858, label %1859

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

1859:                                             ; preds = %1850
  %1860 = load i32, ptr %100, align 4, !tbaa !9
  %1861 = icmp uge i32 %1860, 65536
  br i1 %1861, label %1867, label %1862

1862:                                             ; preds = %1859
  %1863 = load i32, ptr %15, align 4, !tbaa !9
  %1864 = load ptr, ptr %16, align 8, !tbaa !5
  %1865 = load ptr, ptr %17, align 8, !tbaa !5
  %1866 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %100, i32 noundef %1863, ptr noundef %1864, ptr noundef %1865)
  br i1 %1866, label %1868, label %1867

1867:                                             ; preds = %1862, %1859
  store i32 6, ptr %19, align 4
  br label %1876, !llvm.loop !150

1868:                                             ; preds = %1862
  %1869 = load i32, ptr %100, align 4, !tbaa !9
  %1870 = trunc i32 %1869 to i16
  %1871 = load ptr, ptr %97, align 8, !tbaa !5
  %1872 = load i32, ptr %98, align 4, !tbaa !9
  %1873 = add nsw i32 %1872, 1
  store i32 %1873, ptr %98, align 4, !tbaa !9
  %1874 = sext i32 %1872 to i64
  %1875 = getelementptr inbounds i16, ptr %1871, i64 %1874
  store i16 %1870, ptr %1875, align 2, !tbaa !141
  store i32 0, ptr %19, align 4
  br label %1876

1876:                                             ; preds = %1868, %1867, %1858
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #13
  %1877 = load i32, ptr %19, align 4
  switch i32 %1877, label %1879 [
    i32 0, label %1878
    i32 6, label %1845
  ]

1878:                                             ; preds = %1876
  br label %1845, !llvm.loop !150

1879:                                             ; preds = %1876, %1849
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  br label %1880

1880:                                             ; preds = %1879
  %1881 = load ptr, ptr %97, align 8, !tbaa !5
  %1882 = load i32, ptr %98, align 4, !tbaa !9
  %1883 = sext i32 %1882 to i64
  %1884 = getelementptr inbounds i16, ptr %1881, i64 %1883
  store i16 0, ptr %1884, align 2, !tbaa !141
  %1885 = load i32, ptr %98, align 4, !tbaa !9
  %1886 = icmp sgt i32 %1885, 0
  br i1 %1886, label %1887, label %1896

1887:                                             ; preds = %1880
  %1888 = load ptr, ptr %42, align 8, !tbaa !5
  %1889 = load ptr, ptr %42, align 8, !tbaa !5
  %1890 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1889, i32 0, i32 9
  %1891 = load ptr, ptr %97, align 8, !tbaa !5
  %1892 = load i32, ptr %98, align 4, !tbaa !9
  %1893 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1888, ptr noundef %1890, ptr noundef %1891, i32 noundef %1892)
  %1894 = load ptr, ptr %42, align 8, !tbaa !5
  %1895 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1894, i32 0, i32 11
  store i8 1, ptr %1895, align 4, !tbaa !137
  br label %1896

1896:                                             ; preds = %1887, %1880
  %1897 = load ptr, ptr %97, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1897)
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #13
  br label %1898

1898:                                             ; preds = %1896, %1831
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #13
  br label %1899

1899:                                             ; preds = %1898, %1828
  br label %1900

1900:                                             ; preds = %1899, %1827
  br label %1901

1901:                                             ; preds = %1900, %1724
  br label %1902

1902:                                             ; preds = %1901, %1712
  br label %1903

1903:                                             ; preds = %1902, %1705
  br label %1904

1904:                                             ; preds = %1903, %1702
  br label %1905

1905:                                             ; preds = %1904, %1657
  br label %1906

1906:                                             ; preds = %1905, %1618
  br label %1907

1907:                                             ; preds = %1906, %1611
  br label %1908

1908:                                             ; preds = %1907, %1595
  br label %1909

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

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

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

1912:                                             ; preds = %1911, %1500
  %1913 = load ptr, ptr %42, align 8, !tbaa !5
  %1914 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %1913)
  br i1 %1914, label %1915, label %1918

1915:                                             ; preds = %1912
  %1916 = load i8, ptr %57, align 1, !tbaa !41, !range !39, !noundef !40
  %1917 = trunc i8 %1916 to i1
  br label %1918

1918:                                             ; preds = %1915, %1912
  %1919 = phi i1 [ false, %1912 ], [ %1917, %1915 ]
  %1920 = zext i1 %1919 to i32
  %1921 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %1922 = trunc i8 %1921 to i1
  %1923 = zext i1 %1922 to i32
  %1924 = or i32 %1923, %1920
  %1925 = icmp ne i32 %1924, 0
  %1926 = zext i1 %1925 to i8
  store i8 %1926, ptr %58, align 1, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #13
  br label %1927

1927:                                             ; preds = %1918, %1228, %1223, %1217
  %1928 = load ptr, ptr %20, align 8, !tbaa !5
  %1929 = getelementptr inbounds %struct.ImGuiContext, ptr %1928, i32 0, i32 36
  %1930 = load i32, ptr %1929, align 8, !tbaa !92
  %1931 = load i32, ptr %29, align 4, !tbaa !9
  %1932 = icmp eq i32 %1930, %1931
  br i1 %1932, label %1933, label %2333

1933:                                             ; preds = %1927
  %1934 = load ptr, ptr %42, align 8, !tbaa !5
  %1935 = icmp ne ptr %1934, null
  br i1 %1935, label %1936, label %1937

1936:                                             ; preds = %1933
  br label %1939

1937:                                             ; preds = %1933
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 3787, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1938:                                             ; No predecessors!
  br label %1939

1939:                                             ; preds = %1938, %1936
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #13
  store ptr null, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #13
  store i32 0, ptr %102, align 4, !tbaa !9
  %1940 = load i8, ptr %75, align 1, !tbaa !41, !range !39, !noundef !40
  %1941 = trunc i8 %1940 to i1
  br i1 %1941, label %1942, label %1964

1942:                                             ; preds = %1939
  %1943 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1944 = trunc i8 %1943 to i1
  br i1 %1944, label %1963, label %1945

1945:                                             ; preds = %1942
  %1946 = load ptr, ptr %12, align 8, !tbaa !5
  %1947 = load ptr, ptr %42, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1947, i32 0, i32 5
  %1949 = getelementptr inbounds %struct.ImVector.22, ptr %1948, i32 0, i32 2
  %1950 = load ptr, ptr %1949, align 8, !tbaa !97
  %1951 = call i32 @strcmp(ptr noundef %1946, ptr noundef %1950) #15
  %1952 = icmp ne i32 %1951, 0
  br i1 %1952, label %1953, label %1963

1953:                                             ; preds = %1945
  %1954 = load ptr, ptr %42, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1954, i32 0, i32 5
  %1956 = getelementptr inbounds %struct.ImVector.22, ptr %1955, i32 0, i32 2
  %1957 = load ptr, ptr %1956, align 8, !tbaa !97
  store ptr %1957, ptr %101, align 8, !tbaa !5
  %1958 = load ptr, ptr %42, align 8, !tbaa !5
  %1959 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1958, i32 0, i32 5
  %1960 = getelementptr inbounds %struct.ImVector.22, ptr %1959, i32 0, i32 0
  %1961 = load i32, ptr %1960, align 8, !tbaa !151
  %1962 = sub nsw i32 %1961, 1
  store i32 %1962, ptr %102, align 4, !tbaa !9
  br label %1963

1963:                                             ; preds = %1953, %1945, %1942
  br label %1964

1964:                                             ; preds = %1963, %1939
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #13
  %1965 = load i8, ptr %75, align 1, !tbaa !41, !range !39, !noundef !40
  %1966 = trunc i8 %1965 to i1
  br i1 %1966, label %1967, label %1976

1967:                                             ; preds = %1964
  %1968 = load i8, ptr %60, align 1, !tbaa !41, !range !39, !noundef !40
  %1969 = trunc i8 %1968 to i1
  br i1 %1969, label %1970, label %1974

1970:                                             ; preds = %1967
  %1971 = load i32, ptr %15, align 4, !tbaa !9
  %1972 = and i32 %1971, 32
  %1973 = icmp ne i32 %1972, 0
  br label %1974

1974:                                             ; preds = %1970, %1967
  %1975 = phi i1 [ false, %1967 ], [ %1973, %1970 ]
  br label %1976

1976:                                             ; preds = %1974, %1964
  %1977 = phi i1 [ true, %1964 ], [ %1975, %1974 ]
  %1978 = zext i1 %1977 to i8
  store i8 %1978, ptr %103, align 1, !tbaa !41
  %1979 = load i8, ptr %103, align 1, !tbaa !41, !range !39, !noundef !40
  %1980 = trunc i8 %1979 to i1
  br i1 %1980, label %1981, label %2269

1981:                                             ; preds = %1976
  %1982 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %1983 = trunc i8 %1982 to i1
  br i1 %1983, label %2008, label %1984

1984:                                             ; preds = %1981
  %1985 = load ptr, ptr %42, align 8, !tbaa !5
  %1986 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1985, i32 0, i32 6
  store i8 1, ptr %1986, align 8, !tbaa !98
  %1987 = load ptr, ptr %42, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1987, i32 0, i32 4
  %1989 = load ptr, ptr %42, align 8, !tbaa !5
  %1990 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1989, i32 0, i32 3
  %1991 = getelementptr inbounds %struct.ImVector.7, ptr %1990, i32 0, i32 0
  %1992 = load i32, ptr %1991, align 8, !tbaa !109
  %1993 = mul nsw i32 %1992, 4
  %1994 = add nsw i32 %1993, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1988, i32 noundef %1994)
  %1995 = load ptr, ptr %42, align 8, !tbaa !5
  %1996 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1995, i32 0, i32 4
  %1997 = getelementptr inbounds %struct.ImVector.22, ptr %1996, i32 0, i32 2
  %1998 = load ptr, ptr %1997, align 8, !tbaa !110
  %1999 = load ptr, ptr %42, align 8, !tbaa !5
  %2000 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1999, i32 0, i32 4
  %2001 = getelementptr inbounds %struct.ImVector.22, ptr %2000, i32 0, i32 0
  %2002 = load i32, ptr %2001, align 8, !tbaa !152
  %2003 = load ptr, ptr %42, align 8, !tbaa !5
  %2004 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2003, i32 0, i32 3
  %2005 = getelementptr inbounds %struct.ImVector.7, ptr %2004, i32 0, i32 2
  %2006 = load ptr, ptr %2005, align 8, !tbaa !99
  %2007 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1998, i32 noundef %2002, ptr noundef %2006, ptr noundef null)
  br label %2008

2008:                                             ; preds = %1984, %1981
  %2009 = load i32, ptr %15, align 4, !tbaa !9
  %2010 = and i32 %2009, 448
  %2011 = icmp ne i32 %2010, 0
  br i1 %2011, label %2012, label %2249

2012:                                             ; preds = %2008
  %2013 = load ptr, ptr %16, align 8, !tbaa !5
  %2014 = icmp ne ptr %2013, null
  br i1 %2014, label %2015, label %2016

2015:                                             ; preds = %2012
  br label %2018

2016:                                             ; preds = %2012
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 3819, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2017:                                             ; No predecessors!
  br label %2018

2018:                                             ; preds = %2017, %2015
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #13
  store i32 0, ptr %104, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #13
  store i32 22, ptr %105, align 4, !tbaa !9
  %2019 = load i32, ptr %15, align 4, !tbaa !9
  %2020 = and i32 %2019, 64
  %2021 = icmp ne i32 %2020, 0
  br i1 %2021, label %2022, label %2025

2022:                                             ; preds = %2018
  %2023 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %2023, label %2024, label %2025

2024:                                             ; preds = %2022
  store i32 64, ptr %104, align 4, !tbaa !9
  store i32 0, ptr %105, align 4, !tbaa !9
  br label %2047

2025:                                             ; preds = %2022, %2018
  %2026 = load i32, ptr %15, align 4, !tbaa !9
  %2027 = and i32 %2026, 128
  %2028 = icmp ne i32 %2027, 0
  br i1 %2028, label %2029, label %2032

2029:                                             ; preds = %2025
  %2030 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %2030, label %2031, label %2032

2031:                                             ; preds = %2029
  store i32 128, ptr %104, align 4, !tbaa !9
  store i32 3, ptr %105, align 4, !tbaa !9
  br label %2046

2032:                                             ; preds = %2029, %2025
  %2033 = load i32, ptr %15, align 4, !tbaa !9
  %2034 = and i32 %2033, 128
  %2035 = icmp ne i32 %2034, 0
  br i1 %2035, label %2036, label %2039

2036:                                             ; preds = %2032
  %2037 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %2037, label %2038, label %2039

2038:                                             ; preds = %2036
  store i32 128, ptr %104, align 4, !tbaa !9
  store i32 4, ptr %105, align 4, !tbaa !9
  br label %2045

2039:                                             ; preds = %2036, %2032
  %2040 = load i32, ptr %15, align 4, !tbaa !9
  %2041 = and i32 %2040, 256
  %2042 = icmp ne i32 %2041, 0
  br i1 %2042, label %2043, label %2044

2043:                                             ; preds = %2039
  store i32 256, ptr %104, align 4, !tbaa !9
  br label %2044

2044:                                             ; preds = %2043, %2039
  br label %2045

2045:                                             ; preds = %2044, %2038
  br label %2046

2046:                                             ; preds = %2045, %2031
  br label %2047

2047:                                             ; preds = %2046, %2024
  %2048 = load i32, ptr %104, align 4, !tbaa !9
  %2049 = icmp ne i32 %2048, 0
  br i1 %2049, label %2050, label %2248

2050:                                             ; preds = %2047
  call void @llvm.lifetime.start.p0(i64 56, ptr %106) #13
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %106)
  call void @llvm.memset.p0.i64(ptr align 8 %106, i8 0, i64 56, i1 false)
  %2051 = load i32, ptr %104, align 4, !tbaa !9
  %2052 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 0
  store i32 %2051, ptr %2052, align 8, !tbaa !153
  %2053 = load i32, ptr %15, align 4, !tbaa !9
  %2054 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 1
  store i32 %2053, ptr %2054, align 4, !tbaa !155
  %2055 = load ptr, ptr %17, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 2
  store ptr %2055, ptr %2056, align 8, !tbaa !156
  %2057 = load i32, ptr %105, align 4, !tbaa !9
  %2058 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 4
  store i32 %2057, ptr %2058, align 4, !tbaa !157
  %2059 = load ptr, ptr %42, align 8, !tbaa !5
  %2060 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2059, i32 0, i32 4
  %2061 = getelementptr inbounds %struct.ImVector.22, ptr %2060, i32 0, i32 2
  %2062 = load ptr, ptr %2061, align 8, !tbaa !110
  %2063 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  store ptr %2062, ptr %2063, align 8, !tbaa !158
  %2064 = load ptr, ptr %42, align 8, !tbaa !5
  %2065 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2064, i32 0, i32 2
  %2066 = load i32, ptr %2065, align 8, !tbaa !101
  %2067 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 6
  store i32 %2066, ptr %2067, align 8, !tbaa !159
  %2068 = load ptr, ptr %42, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2068, i32 0, i32 7
  %2070 = load i32, ptr %2069, align 4, !tbaa !122
  %2071 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 7
  store i32 %2070, ptr %2071, align 4, !tbaa !160
  %2072 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 8
  store i8 0, ptr %2072, align 8, !tbaa !161
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #13
  %2073 = load ptr, ptr %42, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2073, i32 0, i32 3
  %2075 = getelementptr inbounds %struct.ImVector.7, ptr %2074, i32 0, i32 2
  %2076 = load ptr, ptr %2075, align 8, !tbaa !99
  store ptr %2076, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #13
  %2077 = load ptr, ptr %107, align 8, !tbaa !5
  %2078 = load ptr, ptr %107, align 8, !tbaa !5
  %2079 = load ptr, ptr %42, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2079, i32 0, i32 9
  %2081 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2080, i32 0, i32 0
  %2082 = load i32, ptr %2081, align 4, !tbaa !162
  %2083 = sext i32 %2082 to i64
  %2084 = getelementptr inbounds i16, ptr %2078, i64 %2083
  %2085 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2077, ptr noundef %2084)
  %2086 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 9
  store i32 %2085, ptr %2086, align 4, !tbaa !163
  store i32 %2085, ptr %108, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #13
  %2087 = load ptr, ptr %107, align 8, !tbaa !5
  %2088 = load ptr, ptr %107, align 8, !tbaa !5
  %2089 = load ptr, ptr %42, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2089, i32 0, i32 9
  %2091 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2090, i32 0, i32 1
  %2092 = load i32, ptr %2091, align 4, !tbaa !148
  %2093 = sext i32 %2092 to i64
  %2094 = getelementptr inbounds i16, ptr %2088, i64 %2093
  %2095 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2087, ptr noundef %2094)
  %2096 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 10
  store i32 %2095, ptr %2096, align 8, !tbaa !164
  store i32 %2095, ptr %109, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #13
  %2097 = load ptr, ptr %107, align 8, !tbaa !5
  %2098 = load ptr, ptr %107, align 8, !tbaa !5
  %2099 = load ptr, ptr %42, align 8, !tbaa !5
  %2100 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2099, i32 0, i32 9
  %2101 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2100, i32 0, i32 2
  %2102 = load i32, ptr %2101, align 4, !tbaa !149
  %2103 = sext i32 %2102 to i64
  %2104 = getelementptr inbounds i16, ptr %2098, i64 %2103
  %2105 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %2097, ptr noundef %2104)
  %2106 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 11
  store i32 %2105, ptr %2106, align 4, !tbaa !165
  store i32 %2105, ptr %110, align 4, !tbaa !9
  %2107 = load ptr, ptr %16, align 8, !tbaa !5
  %2108 = call noundef i32 %2107(ptr noundef %106)
  %2109 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2110 = load ptr, ptr %2109, align 8, !tbaa !158
  %2111 = load ptr, ptr %42, align 8, !tbaa !5
  %2112 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2111, i32 0, i32 4
  %2113 = getelementptr inbounds %struct.ImVector.22, ptr %2112, i32 0, i32 2
  %2114 = load ptr, ptr %2113, align 8, !tbaa !110
  %2115 = icmp eq ptr %2110, %2114
  br i1 %2115, label %2116, label %2117

2116:                                             ; preds = %2050
  br label %2119

2117:                                             ; preds = %2050
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.1, i32 noundef 3866, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2118:                                             ; No predecessors!
  br label %2119

2119:                                             ; preds = %2118, %2116
  %2120 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 7
  %2121 = load i32, ptr %2120, align 4, !tbaa !160
  %2122 = load ptr, ptr %42, align 8, !tbaa !5
  %2123 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2122, i32 0, i32 7
  %2124 = load i32, ptr %2123, align 4, !tbaa !122
  %2125 = icmp eq i32 %2121, %2124
  br i1 %2125, label %2126, label %2127

2126:                                             ; preds = %2119
  br label %2129

2127:                                             ; preds = %2119
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.1, i32 noundef 3867, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2128:                                             ; No predecessors!
  br label %2129

2129:                                             ; preds = %2128, %2126
  %2130 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 1
  %2131 = load i32, ptr %2130, align 4, !tbaa !155
  %2132 = load i32, ptr %15, align 4, !tbaa !9
  %2133 = icmp eq i32 %2131, %2132
  br i1 %2133, label %2134, label %2135

2134:                                             ; preds = %2129
  br label %2137

2135:                                             ; preds = %2129
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.1, i32 noundef 3868, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2136:                                             ; No predecessors!
  br label %2137

2137:                                             ; preds = %2136, %2134
  %2138 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 9
  %2139 = load i32, ptr %2138, align 4, !tbaa !163
  %2140 = load i32, ptr %108, align 4, !tbaa !9
  %2141 = icmp ne i32 %2139, %2140
  br i1 %2141, label %2142, label %2157

2142:                                             ; preds = %2137
  %2143 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2144 = load ptr, ptr %2143, align 8, !tbaa !158
  %2145 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2146 = load ptr, ptr %2145, align 8, !tbaa !158
  %2147 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 9
  %2148 = load i32, ptr %2147, align 4, !tbaa !163
  %2149 = sext i32 %2148 to i64
  %2150 = getelementptr inbounds i8, ptr %2146, i64 %2149
  %2151 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2144, ptr noundef %2150)
  %2152 = load ptr, ptr %42, align 8, !tbaa !5
  %2153 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2152, i32 0, i32 9
  %2154 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2153, i32 0, i32 0
  store i32 %2151, ptr %2154, align 4, !tbaa !162
  %2155 = load ptr, ptr %42, align 8, !tbaa !5
  %2156 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2155, i32 0, i32 11
  store i8 1, ptr %2156, align 4, !tbaa !137
  br label %2157

2157:                                             ; preds = %2142, %2137
  %2158 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 10
  %2159 = load i32, ptr %2158, align 8, !tbaa !164
  %2160 = load i32, ptr %109, align 4, !tbaa !9
  %2161 = icmp ne i32 %2159, %2160
  br i1 %2161, label %2162, label %2175

2162:                                             ; preds = %2157
  %2163 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2164 = load ptr, ptr %2163, align 8, !tbaa !158
  %2165 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2166 = load ptr, ptr %2165, align 8, !tbaa !158
  %2167 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 10
  %2168 = load i32, ptr %2167, align 8, !tbaa !164
  %2169 = sext i32 %2168 to i64
  %2170 = getelementptr inbounds i8, ptr %2166, i64 %2169
  %2171 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2164, ptr noundef %2170)
  %2172 = load ptr, ptr %42, align 8, !tbaa !5
  %2173 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2172, i32 0, i32 9
  %2174 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2173, i32 0, i32 1
  store i32 %2171, ptr %2174, align 4, !tbaa !148
  br label %2175

2175:                                             ; preds = %2162, %2157
  %2176 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 11
  %2177 = load i32, ptr %2176, align 4, !tbaa !165
  %2178 = load i32, ptr %110, align 4, !tbaa !9
  %2179 = icmp ne i32 %2177, %2178
  br i1 %2179, label %2180, label %2193

2180:                                             ; preds = %2175
  %2181 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2182 = load ptr, ptr %2181, align 8, !tbaa !158
  %2183 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2184 = load ptr, ptr %2183, align 8, !tbaa !158
  %2185 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 11
  %2186 = load i32, ptr %2185, align 4, !tbaa !165
  %2187 = sext i32 %2186 to i64
  %2188 = getelementptr inbounds i8, ptr %2184, i64 %2187
  %2189 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %2182, ptr noundef %2188)
  %2190 = load ptr, ptr %42, align 8, !tbaa !5
  %2191 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2190, i32 0, i32 9
  %2192 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2191, i32 0, i32 2
  store i32 %2189, ptr %2192, align 4, !tbaa !149
  br label %2193

2193:                                             ; preds = %2180, %2175
  %2194 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 8
  %2195 = load i8, ptr %2194, align 8, !tbaa !161, !range !39, !noundef !40
  %2196 = trunc i8 %2195 to i1
  br i1 %2196, label %2197, label %2247

2197:                                             ; preds = %2193
  %2198 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 6
  %2199 = load i32, ptr %2198, align 8, !tbaa !159
  %2200 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2201 = load ptr, ptr %2200, align 8, !tbaa !158
  %2202 = call i64 @strlen(ptr noundef %2201) #15
  %2203 = trunc i64 %2202 to i32
  %2204 = icmp eq i32 %2199, %2203
  br i1 %2204, label %2205, label %2206

2205:                                             ; preds = %2197
  br label %2208

2206:                                             ; preds = %2197
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.1, i32 noundef 3874, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2207:                                             ; No predecessors!
  br label %2208

2208:                                             ; preds = %2207, %2205
  %2209 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 6
  %2210 = load i32, ptr %2209, align 8, !tbaa !159
  %2211 = load i32, ptr %66, align 4, !tbaa !9
  %2212 = icmp sgt i32 %2210, %2211
  br i1 %2212, label %2213, label %2228

2213:                                             ; preds = %2208
  %2214 = load i8, ptr %28, align 1, !tbaa !41, !range !39, !noundef !40
  %2215 = trunc i8 %2214 to i1
  br i1 %2215, label %2216, label %2228

2216:                                             ; preds = %2213
  %2217 = load ptr, ptr %42, align 8, !tbaa !5
  %2218 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2217, i32 0, i32 3
  %2219 = load ptr, ptr %42, align 8, !tbaa !5
  %2220 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2219, i32 0, i32 3
  %2221 = getelementptr inbounds %struct.ImVector.7, ptr %2220, i32 0, i32 0
  %2222 = load i32, ptr %2221, align 8, !tbaa !109
  %2223 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 6
  %2224 = load i32, ptr %2223, align 8, !tbaa !159
  %2225 = load i32, ptr %66, align 4, !tbaa !9
  %2226 = sub nsw i32 %2224, %2225
  %2227 = add nsw i32 %2222, %2226
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %2218, i32 noundef %2227)
  br label %2228

2228:                                             ; preds = %2216, %2213, %2208
  %2229 = load ptr, ptr %42, align 8, !tbaa !5
  %2230 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2229, i32 0, i32 3
  %2231 = getelementptr inbounds %struct.ImVector.7, ptr %2230, i32 0, i32 2
  %2232 = load ptr, ptr %2231, align 8, !tbaa !99
  %2233 = load ptr, ptr %42, align 8, !tbaa !5
  %2234 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2233, i32 0, i32 3
  %2235 = getelementptr inbounds %struct.ImVector.7, ptr %2234, i32 0, i32 0
  %2236 = load i32, ptr %2235, align 8, !tbaa !109
  %2237 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 5
  %2238 = load ptr, ptr %2237, align 8, !tbaa !158
  %2239 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %2232, i32 noundef %2236, ptr noundef %2238, ptr noundef null, ptr noundef null)
  %2240 = load ptr, ptr %42, align 8, !tbaa !5
  %2241 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2240, i32 0, i32 1
  store i32 %2239, ptr %2241, align 4, !tbaa !100
  %2242 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %106, i32 0, i32 6
  %2243 = load i32, ptr %2242, align 8, !tbaa !159
  %2244 = load ptr, ptr %42, align 8, !tbaa !5
  %2245 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2244, i32 0, i32 2
  store i32 %2243, ptr %2245, align 8, !tbaa !101
  %2246 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %2246)
  br label %2247

2247:                                             ; preds = %2228, %2193
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr %106) #13
  br label %2248

2248:                                             ; preds = %2247, %2047
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #13
  br label %2249

2249:                                             ; preds = %2248, %2008
  %2250 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %2251 = trunc i8 %2250 to i1
  br i1 %2251, label %2268, label %2252

2252:                                             ; preds = %2249
  %2253 = load ptr, ptr %42, align 8, !tbaa !5
  %2254 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2253, i32 0, i32 4
  %2255 = getelementptr inbounds %struct.ImVector.22, ptr %2254, i32 0, i32 2
  %2256 = load ptr, ptr %2255, align 8, !tbaa !110
  %2257 = load ptr, ptr %12, align 8, !tbaa !5
  %2258 = call i32 @strcmp(ptr noundef %2256, ptr noundef %2257) #15
  %2259 = icmp ne i32 %2258, 0
  br i1 %2259, label %2260, label %2268

2260:                                             ; preds = %2252
  %2261 = load ptr, ptr %42, align 8, !tbaa !5
  %2262 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2261, i32 0, i32 4
  %2263 = getelementptr inbounds %struct.ImVector.22, ptr %2262, i32 0, i32 2
  %2264 = load ptr, ptr %2263, align 8, !tbaa !110
  store ptr %2264, ptr %101, align 8, !tbaa !5
  %2265 = load ptr, ptr %42, align 8, !tbaa !5
  %2266 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2265, i32 0, i32 2
  %2267 = load i32, ptr %2266, align 8, !tbaa !101
  store i32 %2267, ptr %102, align 4, !tbaa !9
  br label %2268

2268:                                             ; preds = %2260, %2252, %2249
  br label %2269

2269:                                             ; preds = %2268, %1976
  %2270 = load ptr, ptr %101, align 8, !tbaa !5
  %2271 = icmp ne ptr %2270, null
  br i1 %2271, label %2272, label %2326

2272:                                             ; preds = %2269
  %2273 = load i32, ptr %102, align 4, !tbaa !9
  %2274 = icmp sge i32 %2273, 0
  br i1 %2274, label %2275, label %2276

2275:                                             ; preds = %2272
  br label %2278

2276:                                             ; preds = %2272
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.1, i32 noundef 3895, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2277:                                             ; No predecessors!
  br label %2278

2278:                                             ; preds = %2277, %2275
  %2279 = load i32, ptr %66, align 4, !tbaa !9
  %2280 = load i32, ptr %102, align 4, !tbaa !9
  %2281 = icmp ne i32 %2279, %2280
  br i1 %2281, label %2282, label %2318

2282:                                             ; preds = %2278
  %2283 = load i8, ptr %28, align 1, !tbaa !41, !range !39, !noundef !40
  %2284 = trunc i8 %2283 to i1
  br i1 %2284, label %2285, label %2318

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

2314:                                             ; preds = %2285
  br label %2317

2315:                                             ; preds = %2285
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.1, i32 noundef 3909, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2316:                                             ; No predecessors!
  br label %2317

2317:                                             ; preds = %2316, %2314
  call void @llvm.lifetime.end.p0(i64 56, ptr %111) #13
  br label %2318

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

2326:                                             ; preds = %2318, %2269
  %2327 = load ptr, ptr %42, align 8, !tbaa !5
  %2328 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2327, i32 0, i32 13
  store i32 0, ptr %2328, align 8, !tbaa !123
  %2329 = load ptr, ptr %42, align 8, !tbaa !5
  %2330 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2329, i32 0, i32 14
  store ptr null, ptr %2330, align 8, !tbaa !124
  %2331 = load ptr, ptr %42, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2331, i32 0, i32 15
  store ptr null, ptr %2332, align 8, !tbaa !125
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #13
  br label %2333

2333:                                             ; preds = %2326, %1927
  %2334 = load i8, ptr %50, align 1, !tbaa !41, !range !39, !noundef !40
  %2335 = trunc i8 %2334 to i1
  br i1 %2335, label %2336, label %2343

2336:                                             ; preds = %2333
  %2337 = load ptr, ptr %20, align 8, !tbaa !5
  %2338 = getelementptr inbounds %struct.ImGuiContext, ptr %2337, i32 0, i32 36
  %2339 = load i32, ptr %2338, align 8, !tbaa !92
  %2340 = load i32, ptr %29, align 4, !tbaa !9
  %2341 = icmp eq i32 %2339, %2340
  br i1 %2341, label %2342, label %2343

2342:                                             ; preds = %2336
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2343

2343:                                             ; preds = %2342, %2336, %2333
  %2344 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2345 = trunc i8 %2344 to i1
  br i1 %2345, label %2356, label %2346

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

2356:                                             ; preds = %2346, %2343
  call void @llvm.lifetime.start.p0(i64 16, ptr %114) #13
  %2357 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2358 = getelementptr inbounds %struct.ImVec2, ptr %2357, i32 0, i32 0
  %2359 = load float, ptr %2358, align 4, !tbaa !129
  %2360 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2361 = getelementptr inbounds %struct.ImVec2, ptr %2360, i32 0, i32 1
  %2362 = load float, ptr %2361, align 4, !tbaa !167
  %2363 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2364 = getelementptr inbounds %struct.ImVec2, ptr %2363, i32 0, i32 0
  %2365 = load float, ptr %2364, align 4, !tbaa !129
  %2366 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2367 = load float, ptr %2366, align 4, !tbaa !81
  %2368 = fadd float %2365, %2367
  %2369 = getelementptr inbounds %struct.ImRect, ptr %34, i32 0, i32 0
  %2370 = getelementptr inbounds %struct.ImVec2, ptr %2369, i32 0, i32 1
  %2371 = load float, ptr %2370, align 4, !tbaa !167
  %2372 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2373 = load float, ptr %2372, align 4, !tbaa !79
  %2374 = fadd float %2371, %2373
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %114, float noundef %2359, float noundef %2362, float noundef %2368, float noundef %2374)
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #13
  %2375 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2376 = trunc i8 %2375 to i1
  br i1 %2376, label %2377, label %2381

2377:                                             ; preds = %2356
  %2378 = load ptr, ptr %38, align 8, !tbaa !5
  %2379 = getelementptr inbounds %struct.ImGuiWindow, ptr %2378, i32 0, i32 49
  %2380 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2379, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %115, ptr align 8 %2380, i64 8, i1 false), !tbaa.struct !42
  br label %2386

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

2386:                                             ; preds = %2381, %2377
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %116, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #13
  store i32 2097152, ptr %117, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #13
  %2387 = load i8, ptr %62, align 1, !tbaa !41, !range !39, !noundef !40
  %2388 = trunc i8 %2387 to i1
  br i1 %2388, label %2389, label %2394

2389:                                             ; preds = %2386
  %2390 = load ptr, ptr %42, align 8, !tbaa !5
  %2391 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2390, i32 0, i32 4
  %2392 = getelementptr inbounds %struct.ImVector.22, ptr %2391, i32 0, i32 2
  %2393 = load ptr, ptr %2392, align 8, !tbaa !110
  br label %2396

2394:                                             ; preds = %2386
  %2395 = load ptr, ptr %12, align 8, !tbaa !5
  br label %2396

2396:                                             ; preds = %2394, %2389
  %2397 = phi ptr [ %2393, %2389 ], [ %2395, %2394 ]
  store ptr %2397, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #13
  store ptr null, ptr %119, align 8, !tbaa !5
  %2398 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %2399 = trunc i8 %2398 to i1
  br i1 %2399, label %2400, label %2406

2400:                                             ; preds = %2396
  %2401 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2401, ptr %118, align 8, !tbaa !5
  %2402 = load ptr, ptr %11, align 8, !tbaa !5
  %2403 = load ptr, ptr %11, align 8, !tbaa !5
  %2404 = call i64 @strlen(ptr noundef %2403) #15
  %2405 = getelementptr inbounds i8, ptr %2402, i64 %2404
  store ptr %2405, ptr %119, align 8, !tbaa !5
  br label %2406

2406:                                             ; preds = %2400, %2396
  %2407 = load i8, ptr %57, align 1, !tbaa !41, !range !39, !noundef !40
  %2408 = trunc i8 %2407 to i1
  br i1 %2408, label %2412, label %2409

2409:                                             ; preds = %2406
  %2410 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2411 = trunc i8 %2410 to i1
  br i1 %2411, label %2412, label %2958

2412:                                             ; preds = %2409, %2406
  %2413 = load ptr, ptr %42, align 8, !tbaa !5
  %2414 = icmp ne ptr %2413, null
  br i1 %2414, label %2415, label %2416

2415:                                             ; preds = %2412
  br label %2418

2416:                                             ; preds = %2412
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.1, i32 noundef 3954, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2417:                                             ; No predecessors!
  br label %2418

2418:                                             ; preds = %2417, %2415
  %2419 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %2420 = trunc i8 %2419 to i1
  br i1 %2420, label %2428, label %2421

2421:                                             ; preds = %2418
  %2422 = load ptr, ptr %118, align 8, !tbaa !5
  %2423 = load ptr, ptr %42, align 8, !tbaa !5
  %2424 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2423, i32 0, i32 2
  %2425 = load i32, ptr %2424, align 8, !tbaa !101
  %2426 = sext i32 %2425 to i64
  %2427 = getelementptr inbounds i8, ptr %2422, i64 %2426
  store ptr %2427, ptr %119, align 8, !tbaa !5
  br label %2428

2428:                                             ; preds = %2421, %2418
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #13
  %2429 = load ptr, ptr %42, align 8, !tbaa !5
  %2430 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2429, i32 0, i32 3
  %2431 = getelementptr inbounds %struct.ImVector.7, ptr %2430, i32 0, i32 2
  %2432 = load ptr, ptr %2431, align 8, !tbaa !99
  store ptr %2432, ptr %120, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %121)
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %122)
  call void @llvm.lifetime.start.p0(i64 16, ptr %123) #13
  call void @llvm.memset.p0.i64(ptr align 16 %123, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %124, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_no, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #13
  store i32 0, ptr %125, align 4, !tbaa !9
  %2433 = load i8, ptr %57, align 1, !tbaa !41, !range !39, !noundef !40
  %2434 = trunc i8 %2433 to i1
  br i1 %2434, label %2435, label %2447

2435:                                             ; preds = %2428
  %2436 = load ptr, ptr %120, align 8, !tbaa !5
  %2437 = load ptr, ptr %42, align 8, !tbaa !5
  %2438 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2437, i32 0, i32 9
  %2439 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2438, i32 0, i32 0
  %2440 = load i32, ptr %2439, align 4, !tbaa !162
  %2441 = sext i32 %2440 to i64
  %2442 = getelementptr inbounds i16, ptr %2436, i64 %2441
  %2443 = getelementptr inbounds [2 x ptr], ptr %123, i64 0, i64 0
  store ptr %2442, ptr %2443, align 16, !tbaa !5
  %2444 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 0
  store i32 -1, ptr %2444, align 4, !tbaa !9
  %2445 = load i32, ptr %125, align 4, !tbaa !9
  %2446 = add nsw i32 %2445, 1
  store i32 %2446, ptr %125, align 4, !tbaa !9
  br label %2447

2447:                                             ; preds = %2435, %2428
  %2448 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2449 = trunc i8 %2448 to i1
  br i1 %2449, label %2450, label %2467

2450:                                             ; preds = %2447
  %2451 = load ptr, ptr %120, align 8, !tbaa !5
  %2452 = load ptr, ptr %42, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2452, i32 0, i32 9
  %2454 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2453, i32 0, i32 1
  %2455 = load i32, ptr %2454, align 4, !tbaa !148
  %2456 = load ptr, ptr %42, align 8, !tbaa !5
  %2457 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2456, i32 0, i32 9
  %2458 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2457, i32 0, i32 2
  %2459 = load i32, ptr %2458, align 4, !tbaa !149
  %2460 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2455, i32 noundef %2459)
  %2461 = sext i32 %2460 to i64
  %2462 = getelementptr inbounds i16, ptr %2451, i64 %2461
  %2463 = getelementptr inbounds [2 x ptr], ptr %123, i64 0, i64 1
  store ptr %2462, ptr %2463, align 8, !tbaa !5
  %2464 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 1
  store i32 -1, ptr %2464, align 4, !tbaa !9
  %2465 = load i32, ptr %125, align 4, !tbaa !9
  %2466 = add nsw i32 %2465, 1
  store i32 %2466, ptr %125, align 4, !tbaa !9
  br label %2467

2467:                                             ; preds = %2450, %2447
  %2468 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2469 = trunc i8 %2468 to i1
  %2470 = zext i1 %2469 to i64
  %2471 = select i1 %2469, i32 1, i32 0
  %2472 = load i32, ptr %125, align 4, !tbaa !9
  %2473 = add nsw i32 %2472, %2471
  store i32 %2473, ptr %125, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #13
  store i32 0, ptr %126, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #13
  %2474 = load ptr, ptr %120, align 8, !tbaa !5
  store ptr %2474, ptr %127, align 8, !tbaa !5
  br label %2475

2475:                                             ; preds = %2524, %2467
  %2476 = load ptr, ptr %127, align 8, !tbaa !5
  %2477 = load i16, ptr %2476, align 2, !tbaa !141
  %2478 = zext i16 %2477 to i32
  %2479 = icmp ne i32 %2478, 0
  br i1 %2479, label %2481, label %2480

2480:                                             ; preds = %2475
  store i32 7, ptr %19, align 4
  br label %2527

2481:                                             ; preds = %2475
  %2482 = load ptr, ptr %127, align 8, !tbaa !5
  %2483 = load i16, ptr %2482, align 2, !tbaa !141
  %2484 = zext i16 %2483 to i32
  %2485 = icmp eq i32 %2484, 10
  br i1 %2485, label %2486, label %2523

2486:                                             ; preds = %2481
  %2487 = load i32, ptr %126, align 4, !tbaa !9
  %2488 = add nsw i32 %2487, 1
  store i32 %2488, ptr %126, align 4, !tbaa !9
  %2489 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 0
  %2490 = load i32, ptr %2489, align 4, !tbaa !9
  %2491 = icmp eq i32 %2490, -1
  br i1 %2491, label %2492, label %2505

2492:                                             ; preds = %2486
  %2493 = load ptr, ptr %127, align 8, !tbaa !5
  %2494 = getelementptr inbounds [2 x ptr], ptr %123, i64 0, i64 0
  %2495 = load ptr, ptr %2494, align 16, !tbaa !5
  %2496 = icmp uge ptr %2493, %2495
  br i1 %2496, label %2497, label %2505

2497:                                             ; preds = %2492
  %2498 = load i32, ptr %126, align 4, !tbaa !9
  %2499 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 0
  store i32 %2498, ptr %2499, align 4, !tbaa !9
  %2500 = load i32, ptr %125, align 4, !tbaa !9
  %2501 = add nsw i32 %2500, -1
  store i32 %2501, ptr %125, align 4, !tbaa !9
  %2502 = icmp sle i32 %2501, 0
  br i1 %2502, label %2503, label %2504

2503:                                             ; preds = %2497
  store i32 7, ptr %19, align 4
  br label %2527

2504:                                             ; preds = %2497
  br label %2505

2505:                                             ; preds = %2504, %2492, %2486
  %2506 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 1
  %2507 = load i32, ptr %2506, align 4, !tbaa !9
  %2508 = icmp eq i32 %2507, -1
  br i1 %2508, label %2509, label %2522

2509:                                             ; preds = %2505
  %2510 = load ptr, ptr %127, align 8, !tbaa !5
  %2511 = getelementptr inbounds [2 x ptr], ptr %123, i64 0, i64 1
  %2512 = load ptr, ptr %2511, align 8, !tbaa !5
  %2513 = icmp uge ptr %2510, %2512
  br i1 %2513, label %2514, label %2522

2514:                                             ; preds = %2509
  %2515 = load i32, ptr %126, align 4, !tbaa !9
  %2516 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 1
  store i32 %2515, ptr %2516, align 4, !tbaa !9
  %2517 = load i32, ptr %125, align 4, !tbaa !9
  %2518 = add nsw i32 %2517, -1
  store i32 %2518, ptr %125, align 4, !tbaa !9
  %2519 = icmp sle i32 %2518, 0
  br i1 %2519, label %2520, label %2521

2520:                                             ; preds = %2514
  store i32 7, ptr %19, align 4
  br label %2527

2521:                                             ; preds = %2514
  br label %2522

2522:                                             ; preds = %2521, %2509, %2505
  br label %2523

2523:                                             ; preds = %2522, %2481
  br label %2524

2524:                                             ; preds = %2523
  %2525 = load ptr, ptr %127, align 8, !tbaa !5
  %2526 = getelementptr inbounds i16, ptr %2525, i32 1
  store ptr %2526, ptr %127, align 8, !tbaa !5
  br label %2475, !llvm.loop !168

2527:                                             ; preds = %2520, %2503, %2480
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #13
  br label %2528

2528:                                             ; preds = %2527
  %2529 = load i32, ptr %126, align 4, !tbaa !9
  %2530 = add nsw i32 %2529, 1
  store i32 %2530, ptr %126, align 4, !tbaa !9
  %2531 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 0
  %2532 = load i32, ptr %2531, align 4, !tbaa !9
  %2533 = icmp eq i32 %2532, -1
  br i1 %2533, label %2534, label %2537

2534:                                             ; preds = %2528
  %2535 = load i32, ptr %126, align 4, !tbaa !9
  %2536 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 0
  store i32 %2535, ptr %2536, align 4, !tbaa !9
  br label %2537

2537:                                             ; preds = %2534, %2528
  %2538 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 1
  %2539 = load i32, ptr %2538, align 4, !tbaa !9
  %2540 = icmp eq i32 %2539, -1
  br i1 %2540, label %2541, label %2544

2541:                                             ; preds = %2537
  %2542 = load i32, ptr %126, align 4, !tbaa !9
  %2543 = getelementptr inbounds [2 x i32], ptr %124, i64 0, i64 1
  store i32 %2542, ptr %2543, align 4, !tbaa !9
  br label %2544

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

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

2585:                                             ; preds = %2566, %2544
  %2586 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2587 = trunc i8 %2586 to i1
  br i1 %2587, label %2588, label %2597

2588:                                             ; preds = %2585
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #13
  %2589 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2590 = load float, ptr %2589, align 4, !tbaa !81
  %2591 = load i32, ptr %126, align 4, !tbaa !9
  %2592 = sitofp i32 %2591 to float
  %2593 = load ptr, ptr %20, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.ImGuiContext, ptr %2593, i32 0, i32 8
  %2595 = load float, ptr %2594, align 8, !tbaa !44
  %2596 = fmul float %2592, %2595
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %130, float noundef %2590, float noundef %2596)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 4 %130, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #13
  br label %2597

2597:                                             ; preds = %2588, %2585
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %123) #13
  %2598 = load i8, ptr %57, align 1, !tbaa !41, !range !39, !noundef !40
  %2599 = trunc i8 %2598 to i1
  br i1 %2599, label %2600, label %2712

2600:                                             ; preds = %2597
  %2601 = load ptr, ptr %42, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2601, i32 0, i32 11
  %2603 = load i8, ptr %2602, align 4, !tbaa !137, !range !39, !noundef !40
  %2604 = trunc i8 %2603 to i1
  br i1 %2604, label %2605, label %2712

2605:                                             ; preds = %2600
  %2606 = load i32, ptr %15, align 4, !tbaa !9
  %2607 = and i32 %2606, 4096
  %2608 = icmp ne i32 %2607, 0
  br i1 %2608, label %2653, label %2609

2609:                                             ; preds = %2605
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #13
  %2610 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2611 = load float, ptr %2610, align 4, !tbaa !81
  %2612 = fmul float %2611, 2.500000e-01
  store float %2612, ptr %131, align 4, !tbaa !43
  %2613 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 0
  %2614 = load float, ptr %2613, align 4, !tbaa !81
  %2615 = load ptr, ptr %42, align 8, !tbaa !5
  %2616 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2615, i32 0, i32 8
  %2617 = load float, ptr %2616, align 8, !tbaa !103
  %2618 = fcmp olt float %2614, %2617
  br i1 %2618, label %2619, label %2629

2619:                                             ; preds = %2609
  %2620 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 0
  %2621 = load float, ptr %2620, align 4, !tbaa !81
  %2622 = load float, ptr %131, align 4, !tbaa !43
  %2623 = fsub float %2621, %2622
  %2624 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2623)
  %2625 = fptosi float %2624 to i32
  %2626 = sitofp i32 %2625 to float
  %2627 = load ptr, ptr %42, align 8, !tbaa !5
  %2628 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2627, i32 0, i32 8
  store float %2626, ptr %2628, align 8, !tbaa !103
  br label %2652

2629:                                             ; preds = %2609
  %2630 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 0
  %2631 = load float, ptr %2630, align 4, !tbaa !81
  %2632 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2633 = load float, ptr %2632, align 4, !tbaa !81
  %2634 = fsub float %2631, %2633
  %2635 = load ptr, ptr %42, align 8, !tbaa !5
  %2636 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2635, i32 0, i32 8
  %2637 = load float, ptr %2636, align 8, !tbaa !103
  %2638 = fcmp oge float %2634, %2637
  br i1 %2638, label %2639, label %2651

2639:                                             ; preds = %2629
  %2640 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 0
  %2641 = load float, ptr %2640, align 4, !tbaa !81
  %2642 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2643 = load float, ptr %2642, align 4, !tbaa !81
  %2644 = fsub float %2641, %2643
  %2645 = load float, ptr %131, align 4, !tbaa !43
  %2646 = fadd float %2644, %2645
  %2647 = fptosi float %2646 to i32
  %2648 = sitofp i32 %2647 to float
  %2649 = load ptr, ptr %42, align 8, !tbaa !5
  %2650 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2649, i32 0, i32 8
  store float %2648, ptr %2650, align 8, !tbaa !103
  br label %2651

2651:                                             ; preds = %2639, %2629
  br label %2652

2652:                                             ; preds = %2651, %2619
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #13
  br label %2656

2653:                                             ; preds = %2605
  %2654 = load ptr, ptr %42, align 8, !tbaa !5
  %2655 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2654, i32 0, i32 8
  store float 0.000000e+00, ptr %2655, align 8, !tbaa !103
  br label %2656

2656:                                             ; preds = %2653, %2652
  %2657 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2658 = trunc i8 %2657 to i1
  br i1 %2658, label %2659, label %2709

2659:                                             ; preds = %2656
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #13
  %2660 = load ptr, ptr %38, align 8, !tbaa !5
  %2661 = getelementptr inbounds %struct.ImGuiWindow, ptr %2660, i32 0, i32 14
  %2662 = getelementptr inbounds %struct.ImVec2, ptr %2661, i32 0, i32 1
  %2663 = load float, ptr %2662, align 4, !tbaa !146
  store float %2663, ptr %132, align 4, !tbaa !43
  %2664 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 1
  %2665 = load float, ptr %2664, align 4, !tbaa !79
  %2666 = load ptr, ptr %20, align 8, !tbaa !5
  %2667 = getelementptr inbounds %struct.ImGuiContext, ptr %2666, i32 0, i32 8
  %2668 = load float, ptr %2667, align 8, !tbaa !44
  %2669 = fsub float %2665, %2668
  %2670 = load float, ptr %132, align 4, !tbaa !43
  %2671 = fcmp olt float %2669, %2670
  br i1 %2671, label %2672, label %2680

2672:                                             ; preds = %2659
  %2673 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 1
  %2674 = load float, ptr %2673, align 4, !tbaa !79
  %2675 = load ptr, ptr %20, align 8, !tbaa !5
  %2676 = getelementptr inbounds %struct.ImGuiContext, ptr %2675, i32 0, i32 8
  %2677 = load float, ptr %2676, align 8, !tbaa !44
  %2678 = fsub float %2674, %2677
  %2679 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2678)
  store float %2679, ptr %132, align 4, !tbaa !43
  br label %2695

2680:                                             ; preds = %2659
  %2681 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 1
  %2682 = load float, ptr %2681, align 4, !tbaa !79
  %2683 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2684 = load float, ptr %2683, align 4, !tbaa !79
  %2685 = fsub float %2682, %2684
  %2686 = load float, ptr %132, align 4, !tbaa !43
  %2687 = fcmp oge float %2685, %2686
  br i1 %2687, label %2688, label %2694

2688:                                             ; preds = %2680
  %2689 = getelementptr inbounds %struct.ImVec2, ptr %121, i32 0, i32 1
  %2690 = load float, ptr %2689, align 4, !tbaa !79
  %2691 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 1
  %2692 = load float, ptr %2691, align 4, !tbaa !79
  %2693 = fsub float %2690, %2692
  store float %2693, ptr %132, align 4, !tbaa !43
  br label %2694

2694:                                             ; preds = %2688, %2680
  br label %2695

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

2709:                                             ; preds = %2695, %2656
  %2710 = load ptr, ptr %42, align 8, !tbaa !5
  %2711 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2710, i32 0, i32 11
  store i8 0, ptr %2711, align 4, !tbaa !137
  br label %2712

2712:                                             ; preds = %2709, %2600, %2597
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #13
  %2713 = load ptr, ptr %42, align 8, !tbaa !5
  %2714 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2713, i32 0, i32 8
  %2715 = load float, ptr %2714, align 8, !tbaa !103
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %133, float noundef %2715, float noundef 0.000000e+00)
  %2716 = load i8, ptr %58, align 1, !tbaa !41, !range !39, !noundef !40
  %2717 = trunc i8 %2716 to i1
  br i1 %2717, label %2718, label %2846

2718:                                             ; preds = %2712
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #13
  %2719 = load ptr, ptr %120, align 8, !tbaa !5
  %2720 = load ptr, ptr %42, align 8, !tbaa !5
  %2721 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2720, i32 0, i32 9
  %2722 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2721, i32 0, i32 1
  %2723 = load i32, ptr %2722, align 4, !tbaa !148
  %2724 = load ptr, ptr %42, align 8, !tbaa !5
  %2725 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2724, i32 0, i32 9
  %2726 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2725, i32 0, i32 2
  %2727 = load i32, ptr %2726, align 4, !tbaa !149
  %2728 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2723, i32 noundef %2727)
  %2729 = sext i32 %2728 to i64
  %2730 = getelementptr inbounds i16, ptr %2719, i64 %2729
  store ptr %2730, ptr %134, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #13
  %2731 = load ptr, ptr %120, align 8, !tbaa !5
  %2732 = load ptr, ptr %42, align 8, !tbaa !5
  %2733 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2732, i32 0, i32 9
  %2734 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2733, i32 0, i32 1
  %2735 = load i32, ptr %2734, align 4, !tbaa !148
  %2736 = load ptr, ptr %42, align 8, !tbaa !5
  %2737 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2736, i32 0, i32 9
  %2738 = getelementptr inbounds %"struct.ImStb::STB_TexteditState", ptr %2737, i32 0, i32 2
  %2739 = load i32, ptr %2738, align 4, !tbaa !149
  %2740 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2735, i32 noundef %2739)
  %2741 = sext i32 %2740 to i64
  %2742 = getelementptr inbounds i16, ptr %2731, i64 %2741
  store ptr %2742, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #13
  %2743 = load i8, ptr %57, align 1, !tbaa !41, !range !39, !noundef !40
  %2744 = trunc i8 %2743 to i1
  %2745 = zext i1 %2744 to i64
  %2746 = select i1 %2744, float 1.000000e+00, float 0x3FE3333340000000
  %2747 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 42, float noundef %2746)
  store i32 %2747, ptr %136, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #13
  %2748 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2749 = trunc i8 %2748 to i1
  %2750 = zext i1 %2749 to i64
  %2751 = select i1 %2749, float 0.000000e+00, float -1.000000e+00
  store float %2751, ptr %137, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #13
  %2752 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2753 = trunc i8 %2752 to i1
  %2754 = zext i1 %2753 to i64
  %2755 = select i1 %2753, float 0.000000e+00, float 2.000000e+00
  store float %2755, ptr %138, align 4, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #13
  %2756 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %115, ptr noundef nonnull align 4 dereferenceable(8) %122)
  store <2 x float> %2756, ptr %140, align 4
  %2757 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %140, ptr noundef nonnull align 4 dereferenceable(8) %133)
  store <2 x float> %2757, ptr %139, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #13
  %2758 = load ptr, ptr %134, align 8, !tbaa !5
  store ptr %2758, ptr %141, align 8, !tbaa !5
  br label %2759

2759:                                             ; preds = %2831, %2718
  %2760 = load ptr, ptr %141, align 8, !tbaa !5
  %2761 = load ptr, ptr %135, align 8, !tbaa !5
  %2762 = icmp ult ptr %2760, %2761
  br i1 %2762, label %2764, label %2763

2763:                                             ; preds = %2759
  store i32 10, ptr %19, align 4
  br label %2844

2764:                                             ; preds = %2759
  %2765 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 1
  %2766 = load float, ptr %2765, align 4, !tbaa !79
  %2767 = getelementptr inbounds %struct.ImVec4, ptr %114, i32 0, i32 3
  %2768 = load float, ptr %2767, align 4, !tbaa !169
  %2769 = load ptr, ptr %20, align 8, !tbaa !5
  %2770 = getelementptr inbounds %struct.ImGuiContext, ptr %2769, i32 0, i32 8
  %2771 = load float, ptr %2770, align 8, !tbaa !44
  %2772 = fadd float %2768, %2771
  %2773 = fcmp ogt float %2766, %2772
  br i1 %2773, label %2774, label %2775

2774:                                             ; preds = %2764
  store i32 10, ptr %19, align 4
  br label %2844

2775:                                             ; preds = %2764
  %2776 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 1
  %2777 = load float, ptr %2776, align 4, !tbaa !79
  %2778 = getelementptr inbounds %struct.ImVec4, ptr %114, i32 0, i32 1
  %2779 = load float, ptr %2778, align 4, !tbaa !170
  %2780 = fcmp olt float %2777, %2779
  br i1 %2780, label %2781, label %2795

2781:                                             ; preds = %2775
  br label %2782

2782:                                             ; preds = %2793, %2781
  %2783 = load ptr, ptr %141, align 8, !tbaa !5
  %2784 = load ptr, ptr %135, align 8, !tbaa !5
  %2785 = icmp ult ptr %2783, %2784
  br i1 %2785, label %2786, label %2794

2786:                                             ; preds = %2782
  %2787 = load ptr, ptr %141, align 8, !tbaa !5
  %2788 = getelementptr inbounds i16, ptr %2787, i32 1
  store ptr %2788, ptr %141, align 8, !tbaa !5
  %2789 = load i16, ptr %2787, align 2, !tbaa !141
  %2790 = zext i16 %2789 to i32
  %2791 = icmp eq i32 %2790, 10
  br i1 %2791, label %2792, label %2793

2792:                                             ; preds = %2786
  br label %2794

2793:                                             ; preds = %2786
  br label %2782, !llvm.loop !171

2794:                                             ; preds = %2792, %2782
  br label %2831

2795:                                             ; preds = %2775
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #13
  %2796 = load ptr, ptr %141, align 8, !tbaa !5
  %2797 = load ptr, ptr %135, align 8, !tbaa !5
  %2798 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2796, ptr noundef %2797, ptr noundef %141, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %2798, ptr %142, align 4
  %2799 = getelementptr inbounds %struct.ImVec2, ptr %142, i32 0, i32 0
  %2800 = load float, ptr %2799, align 4, !tbaa !81
  %2801 = fcmp ole float %2800, 0.000000e+00
  br i1 %2801, label %2802, label %2811

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

2811:                                             ; preds = %2802, %2795
  call void @llvm.lifetime.start.p0(i64 16, ptr %143) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #13
  %2812 = load float, ptr %137, align 4, !tbaa !43
  %2813 = load ptr, ptr %20, align 8, !tbaa !5
  %2814 = getelementptr inbounds %struct.ImGuiContext, ptr %2813, i32 0, i32 8
  %2815 = load float, ptr %2814, align 8, !tbaa !44
  %2816 = fsub float %2812, %2815
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %145, float noundef 0.000000e+00, float noundef %2816)
  %2817 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %139, ptr noundef nonnull align 4 dereferenceable(8) %145)
  store <2 x float> %2817, ptr %144, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #13
  %2818 = getelementptr inbounds %struct.ImVec2, ptr %142, i32 0, i32 0
  %2819 = load float, ptr %2818, align 4, !tbaa !81
  %2820 = load float, ptr %138, align 4, !tbaa !43
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %147, float noundef %2819, float noundef %2820)
  %2821 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %139, ptr noundef nonnull align 4 dereferenceable(8) %147)
  store <2 x float> %2821, ptr %146, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %143, ptr noundef nonnull align 4 dereferenceable(8) %144, ptr noundef nonnull align 4 dereferenceable(8) %146)
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %148) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %148, ptr noundef nonnull align 4 dereferenceable(16) %114)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %143, ptr noundef nonnull align 4 dereferenceable(16) %148)
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %149) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %149, ptr noundef nonnull align 4 dereferenceable(16) %114)
  %2822 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %143, ptr noundef nonnull align 4 dereferenceable(16) %149)
  call void @llvm.lifetime.end.p0(i64 16, ptr %149) #13
  br i1 %2822, label %2823, label %2830

2823:                                             ; preds = %2811
  %2824 = load ptr, ptr %38, align 8, !tbaa !5
  %2825 = getelementptr inbounds %struct.ImGuiWindow, ptr %2824, i32 0, i32 64
  %2826 = load ptr, ptr %2825, align 8, !tbaa !172
  %2827 = getelementptr inbounds %struct.ImRect, ptr %143, i32 0, i32 0
  %2828 = getelementptr inbounds %struct.ImRect, ptr %143, i32 0, i32 1
  %2829 = load i32, ptr %136, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %2826, ptr noundef nonnull align 4 dereferenceable(8) %2827, ptr noundef nonnull align 4 dereferenceable(8) %2828, i32 noundef %2829, float noundef 0.000000e+00, i32 noundef 15)
  br label %2830

2830:                                             ; preds = %2823, %2811
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #13
  br label %2831

2831:                                             ; preds = %2830, %2794
  %2832 = getelementptr inbounds %struct.ImVec2, ptr %115, i32 0, i32 0
  %2833 = load float, ptr %2832, align 4, !tbaa !81
  %2834 = getelementptr inbounds %struct.ImVec2, ptr %133, i32 0, i32 0
  %2835 = load float, ptr %2834, align 4, !tbaa !81
  %2836 = fsub float %2833, %2835
  %2837 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 0
  store float %2836, ptr %2837, align 4, !tbaa !81
  %2838 = load ptr, ptr %20, align 8, !tbaa !5
  %2839 = getelementptr inbounds %struct.ImGuiContext, ptr %2838, i32 0, i32 8
  %2840 = load float, ptr %2839, align 8, !tbaa !44
  %2841 = getelementptr inbounds %struct.ImVec2, ptr %139, i32 0, i32 1
  %2842 = load float, ptr %2841, align 4, !tbaa !79
  %2843 = fadd float %2842, %2840
  store float %2843, ptr %2841, align 4, !tbaa !79
  br label %2759, !llvm.loop !173

2844:                                             ; preds = %2774, %2763
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #13
  br label %2845

2845:                                             ; preds = %2844
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #13
  br label %2846

2846:                                             ; preds = %2845, %2712
  %2847 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2848 = trunc i8 %2847 to i1
  br i1 %2848, label %2856, label %2849

2849:                                             ; preds = %2846
  %2850 = load ptr, ptr %119, align 8, !tbaa !5
  %2851 = load ptr, ptr %118, align 8, !tbaa !5
  %2852 = ptrtoint ptr %2850 to i64
  %2853 = ptrtoint ptr %2851 to i64
  %2854 = sub i64 %2852, %2853
  %2855 = icmp slt i64 %2854, 2097152
  br i1 %2855, label %2856, label %2881

2856:                                             ; preds = %2849, %2846
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #13
  %2857 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %2858 = trunc i8 %2857 to i1
  %2859 = zext i1 %2858 to i64
  %2860 = select i1 %2858, i32 1, i32 0
  %2861 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %2860, float noundef 1.000000e+00)
  store i32 %2861, ptr %150, align 4, !tbaa !9
  %2862 = load ptr, ptr %38, align 8, !tbaa !5
  %2863 = getelementptr inbounds %struct.ImGuiWindow, ptr %2862, i32 0, i32 64
  %2864 = load ptr, ptr %2863, align 8, !tbaa !172
  %2865 = load ptr, ptr %20, align 8, !tbaa !5
  %2866 = getelementptr inbounds %struct.ImGuiContext, ptr %2865, i32 0, i32 7
  %2867 = load ptr, ptr %2866, align 8, !tbaa !112
  %2868 = load ptr, ptr %20, align 8, !tbaa !5
  %2869 = getelementptr inbounds %struct.ImGuiContext, ptr %2868, i32 0, i32 8
  %2870 = load float, ptr %2869, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #13
  %2871 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %115, ptr noundef nonnull align 4 dereferenceable(8) %133)
  store <2 x float> %2871, ptr %151, align 4
  %2872 = load i32, ptr %150, align 4, !tbaa !9
  %2873 = load ptr, ptr %118, align 8, !tbaa !5
  %2874 = load ptr, ptr %119, align 8, !tbaa !5
  %2875 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2876 = trunc i8 %2875 to i1
  br i1 %2876, label %2877, label %2878

2877:                                             ; preds = %2856
  br label %2879

2878:                                             ; preds = %2856
  br label %2879

2879:                                             ; preds = %2878, %2877
  %2880 = phi ptr [ null, %2877 ], [ %114, %2878 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %2864, ptr noundef %2867, float noundef %2870, ptr noundef nonnull align 4 dereferenceable(8) %151, i32 noundef %2872, ptr noundef %2873, ptr noundef %2874, float noundef 0.000000e+00, ptr noundef %2880)
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #13
  br label %2881

2881:                                             ; preds = %2879, %2849
  %2882 = load i8, ptr %57, align 1, !tbaa !41, !range !39, !noundef !40
  %2883 = trunc i8 %2882 to i1
  br i1 %2883, label %2884, label %2957

2884:                                             ; preds = %2881
  %2885 = load ptr, ptr %21, align 8, !tbaa !5
  %2886 = getelementptr inbounds %struct.ImGuiIO, ptr %2885, i32 0, i32 3
  %2887 = load float, ptr %2886, align 8, !tbaa !174
  %2888 = load ptr, ptr %42, align 8, !tbaa !5
  %2889 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2888, i32 0, i32 10
  %2890 = load float, ptr %2889, align 8, !tbaa !175
  %2891 = fadd float %2890, %2887
  store float %2891, ptr %2889, align 8, !tbaa !175
  call void @llvm.lifetime.start.p0(i64 1, ptr %152) #13
  %2892 = load ptr, ptr %20, align 8, !tbaa !5
  %2893 = getelementptr inbounds %struct.ImGuiContext, ptr %2892, i32 0, i32 5
  %2894 = getelementptr inbounds %struct.ImGuiIO, ptr %2893, i32 0, i32 21
  %2895 = load i8, ptr %2894, align 2, !tbaa !176, !range !39, !noundef !40
  %2896 = trunc i8 %2895 to i1
  br i1 %2896, label %2897, label %2908

2897:                                             ; preds = %2884
  %2898 = load ptr, ptr %42, align 8, !tbaa !5
  %2899 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2898, i32 0, i32 10
  %2900 = load float, ptr %2899, align 8, !tbaa !175
  %2901 = fcmp ole float %2900, 0.000000e+00
  br i1 %2901, label %2908, label %2902

2902:                                             ; preds = %2897
  %2903 = load ptr, ptr %42, align 8, !tbaa !5
  %2904 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2903, i32 0, i32 10
  %2905 = load float, ptr %2904, align 8, !tbaa !175
  %2906 = call noundef float @_ZL6ImFmodff(float noundef %2905, float noundef 0x3FF3333340000000)
  %2907 = fcmp ole float %2906, 0x3FE99999A0000000
  br label %2908

2908:                                             ; preds = %2902, %2897, %2884
  %2909 = phi i1 [ true, %2897 ], [ true, %2884 ], [ %2907, %2902 ]
  %2910 = zext i1 %2909 to i8
  store i8 %2910, ptr %152, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #13
  %2911 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %115, ptr noundef nonnull align 4 dereferenceable(8) %121)
  store <2 x float> %2911, ptr %154, align 4
  %2912 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %154, ptr noundef nonnull align 4 dereferenceable(8) %133)
  store <2 x float> %2912, ptr %153, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %155) #13
  %2913 = getelementptr inbounds %struct.ImVec2, ptr %153, i32 0, i32 0
  %2914 = load float, ptr %2913, align 4, !tbaa !81
  %2915 = getelementptr inbounds %struct.ImVec2, ptr %153, i32 0, i32 1
  %2916 = load float, ptr %2915, align 4, !tbaa !79
  %2917 = load ptr, ptr %20, align 8, !tbaa !5
  %2918 = getelementptr inbounds %struct.ImGuiContext, ptr %2917, i32 0, i32 8
  %2919 = load float, ptr %2918, align 8, !tbaa !44
  %2920 = fsub float %2916, %2919
  %2921 = fadd float %2920, 5.000000e-01
  %2922 = getelementptr inbounds %struct.ImVec2, ptr %153, i32 0, i32 0
  %2923 = load float, ptr %2922, align 4, !tbaa !81
  %2924 = fadd float %2923, 1.000000e+00
  %2925 = getelementptr inbounds %struct.ImVec2, ptr %153, i32 0, i32 1
  %2926 = load float, ptr %2925, align 4, !tbaa !79
  %2927 = fsub float %2926, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %155, float noundef %2914, float noundef %2921, float noundef %2924, float noundef %2927)
  %2928 = load i8, ptr %152, align 1, !tbaa !41, !range !39, !noundef !40
  %2929 = trunc i8 %2928 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %156) #13
  br i1 %2929, label %2930, label %2932

2930:                                             ; preds = %2908
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %156, ptr noundef nonnull align 4 dereferenceable(16) %114)
  %2931 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %155, ptr noundef nonnull align 4 dereferenceable(16) %156)
  br label %2932

2932:                                             ; preds = %2930, %2908
  %2933 = phi i1 [ false, %2908 ], [ %2931, %2930 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #13
  br i1 %2933, label %2934, label %2941

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

2941:                                             ; preds = %2934, %2932
  %2942 = load i8, ptr %25, align 1, !tbaa !41, !range !39, !noundef !40
  %2943 = trunc i8 %2942 to i1
  br i1 %2943, label %2956, label %2944

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

2956:                                             ; preds = %2944, %2941
  call void @llvm.lifetime.end.p0(i64 16, ptr %155) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #13
  br label %2957

2957:                                             ; preds = %2956, %2881
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #13
  br label %3032

2958:                                             ; preds = %2409
  %2959 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2960 = trunc i8 %2959 to i1
  br i1 %2960, label %2961, label %2971

2961:                                             ; preds = %2958
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #13
  %2962 = getelementptr inbounds %struct.ImVec2, ptr %39, i32 0, i32 0
  %2963 = load float, ptr %2962, align 4, !tbaa !81
  %2964 = load ptr, ptr %118, align 8, !tbaa !5
  %2965 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %2964, ptr noundef %119)
  %2966 = sitofp i32 %2965 to float
  %2967 = load ptr, ptr %20, align 8, !tbaa !5
  %2968 = getelementptr inbounds %struct.ImGuiContext, ptr %2967, i32 0, i32 8
  %2969 = load float, ptr %2968, align 8, !tbaa !44
  %2970 = fmul float %2966, %2969
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %159, float noundef %2963, float noundef %2970)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 4 %159, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #13
  br label %2997

2971:                                             ; preds = %2958
  %2972 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %2973 = trunc i8 %2972 to i1
  br i1 %2973, label %2987, label %2974

2974:                                             ; preds = %2971
  %2975 = load ptr, ptr %20, align 8, !tbaa !5
  %2976 = getelementptr inbounds %struct.ImGuiContext, ptr %2975, i32 0, i32 36
  %2977 = load i32, ptr %2976, align 8, !tbaa !92
  %2978 = load i32, ptr %29, align 4, !tbaa !9
  %2979 = icmp eq i32 %2977, %2978
  br i1 %2979, label %2980, label %2987

2980:                                             ; preds = %2974
  %2981 = load ptr, ptr %118, align 8, !tbaa !5
  %2982 = load ptr, ptr %42, align 8, !tbaa !5
  %2983 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2982, i32 0, i32 2
  %2984 = load i32, ptr %2983, align 8, !tbaa !101
  %2985 = sext i32 %2984 to i64
  %2986 = getelementptr inbounds i8, ptr %2981, i64 %2985
  store ptr %2986, ptr %119, align 8, !tbaa !5
  br label %2996

2987:                                             ; preds = %2974, %2971
  %2988 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %2989 = trunc i8 %2988 to i1
  br i1 %2989, label %2995, label %2990

2990:                                             ; preds = %2987
  %2991 = load ptr, ptr %118, align 8, !tbaa !5
  %2992 = load ptr, ptr %118, align 8, !tbaa !5
  %2993 = call i64 @strlen(ptr noundef %2992) #15
  %2994 = getelementptr inbounds i8, ptr %2991, i64 %2993
  store ptr %2994, ptr %119, align 8, !tbaa !5
  br label %2995

2995:                                             ; preds = %2990, %2987
  br label %2996

2996:                                             ; preds = %2995, %2980
  br label %2997

2997:                                             ; preds = %2996, %2961
  %2998 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %2999 = trunc i8 %2998 to i1
  br i1 %2999, label %3007, label %3000

3000:                                             ; preds = %2997
  %3001 = load ptr, ptr %119, align 8, !tbaa !5
  %3002 = load ptr, ptr %118, align 8, !tbaa !5
  %3003 = ptrtoint ptr %3001 to i64
  %3004 = ptrtoint ptr %3002 to i64
  %3005 = sub i64 %3003, %3004
  %3006 = icmp slt i64 %3005, 2097152
  br i1 %3006, label %3007, label %3031

3007:                                             ; preds = %3000, %2997
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #13
  %3008 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %3009 = trunc i8 %3008 to i1
  %3010 = zext i1 %3009 to i64
  %3011 = select i1 %3009, i32 1, i32 0
  %3012 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %3011, float noundef 1.000000e+00)
  store i32 %3012, ptr %160, align 4, !tbaa !9
  %3013 = load ptr, ptr %38, align 8, !tbaa !5
  %3014 = getelementptr inbounds %struct.ImGuiWindow, ptr %3013, i32 0, i32 64
  %3015 = load ptr, ptr %3014, align 8, !tbaa !172
  %3016 = load ptr, ptr %20, align 8, !tbaa !5
  %3017 = getelementptr inbounds %struct.ImGuiContext, ptr %3016, i32 0, i32 7
  %3018 = load ptr, ptr %3017, align 8, !tbaa !112
  %3019 = load ptr, ptr %20, align 8, !tbaa !5
  %3020 = getelementptr inbounds %struct.ImGuiContext, ptr %3019, i32 0, i32 8
  %3021 = load float, ptr %3020, align 8, !tbaa !44
  %3022 = load i32, ptr %160, align 4, !tbaa !9
  %3023 = load ptr, ptr %118, align 8, !tbaa !5
  %3024 = load ptr, ptr %119, align 8, !tbaa !5
  %3025 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3026 = trunc i8 %3025 to i1
  br i1 %3026, label %3027, label %3028

3027:                                             ; preds = %3007
  br label %3029

3028:                                             ; preds = %3007
  br label %3029

3029:                                             ; preds = %3028, %3027
  %3030 = phi ptr [ null, %3027 ], [ %114, %3028 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %3015, ptr noundef %3018, float noundef %3021, ptr noundef nonnull align 4 dereferenceable(8) %115, i32 noundef %3022, ptr noundef %3023, ptr noundef %3024, float noundef 0.000000e+00, ptr noundef %3030)
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #13
  br label %3031

3031:                                             ; preds = %3029, %3000
  br label %3032

3032:                                             ; preds = %3031, %2957
  %3033 = load i8, ptr %24, align 1, !tbaa !41, !range !39, !noundef !40
  %3034 = trunc i8 %3033 to i1
  br i1 %3034, label %3035, label %3040

3035:                                             ; preds = %3032
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #13
  %3036 = load ptr, ptr %20, align 8, !tbaa !5
  %3037 = getelementptr inbounds %struct.ImGuiContext, ptr %3036, i32 0, i32 8
  %3038 = load float, ptr %3037, align 8, !tbaa !44
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %162, float noundef 0.000000e+00, float noundef %3038)
  %3039 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %116, ptr noundef nonnull align 4 dereferenceable(8) %162)
  store <2 x float> %3039, ptr %161, align 4
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %161)
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #13
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %3040

3040:                                             ; preds = %3035, %3032
  %3041 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %3042 = trunc i8 %3041 to i1
  br i1 %3042, label %3043, label %3047

3043:                                             ; preds = %3040
  %3044 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %3045 = trunc i8 %3044 to i1
  br i1 %3045, label %3047, label %3046

3046:                                             ; preds = %3043
  call void @_ZN5ImGui7PopFontEv()
  br label %3047

3047:                                             ; preds = %3046, %3043, %3040
  %3048 = load ptr, ptr %20, align 8, !tbaa !5
  %3049 = getelementptr inbounds %struct.ImGuiContext, ptr %3048, i32 0, i32 172
  %3050 = load i8, ptr %3049, align 8, !tbaa !177, !range !39, !noundef !40
  %3051 = trunc i8 %3050 to i1
  br i1 %3051, label %3052, label %3061

3052:                                             ; preds = %3047
  %3053 = load i8, ptr %26, align 1, !tbaa !41, !range !39, !noundef !40
  %3054 = trunc i8 %3053 to i1
  br i1 %3054, label %3055, label %3058

3055:                                             ; preds = %3052
  %3056 = load i8, ptr %63, align 1, !tbaa !41, !range !39, !noundef !40
  %3057 = trunc i8 %3056 to i1
  br i1 %3057, label %3058, label %3061

3058:                                             ; preds = %3055, %3052
  %3059 = load ptr, ptr %118, align 8, !tbaa !5
  %3060 = load ptr, ptr %119, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %115, ptr noundef %3059, ptr noundef %3060)
  br label %3061

3061:                                             ; preds = %3058, %3055, %3047
  %3062 = getelementptr inbounds %struct.ImVec2, ptr %30, i32 0, i32 0
  %3063 = load float, ptr %3062, align 4, !tbaa !81
  %3064 = fcmp ogt float %3063, 0.000000e+00
  br i1 %3064, label %3065, label %3084

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

3084:                                             ; preds = %3065, %3061
  %3085 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %3086 = trunc i8 %3085 to i1
  br i1 %3086, label %3087, label %3093

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

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

3093:                                             ; preds = %3091, %3087, %3084
  br label %3094

3094:                                             ; preds = %3093
  br label %3095

3095:                                             ; preds = %3094
  br label %3096

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

3100:                                             ; preds = %3096
  %3101 = load i8, ptr %60, align 1, !tbaa !41, !range !39, !noundef !40
  %3102 = trunc i8 %3101 to i1
  store i1 %3102, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3106

3103:                                             ; preds = %3096
  %3104 = load i8, ptr %59, align 1, !tbaa !41, !range !39, !noundef !40
  %3105 = trunc i8 %3104 to i1
  store i1 %3105, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %3106

3106:                                             ; preds = %3103, %3100
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #13
  br label %3107

3107:                                             ; preds = %3106, %337, %309, %299
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %3108

3108:                                             ; preds = %3107, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  %3109 = load i1, ptr %9, align 1
  ret i1 %3109

3110:                                             ; preds = %1206
  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 noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) #6

declare void @_ZN5ImGui13EndChildFrameEv() #6

; 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(113), i16 noundef zeroext) #6

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) #6

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

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

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

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

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

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

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

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #6

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #6

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #6

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) #6

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() #6

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

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

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

; 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(113), 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL6ImFmodff(float noundef, float noundef) #1

; 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 }
attributes #14 = { noreturn nounwind }
attributes #15 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !15, i64 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, !7, i64 135, !16, i64 136, !16, i64 138, !16, i64 140, !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, !19, i64 496, !19, i64 512, !19, i64 528, !19, i64 544, !19, i64 560, !19, i64 576, !10, i64 592, !14, i64 596, !14, i64 600, !26, i64 604, !27, i64 640, !29, i64 656, !14, i64 672, !10, i64 676, !6, i64 680, !30, i64 688, !6, i64 856, !6, i64 864, !6, i64 872, !6, i64 880, !6, i64 888, !7, i64 896, !7, i64 904, !15, i64 936, !10, i64 940, !10, i64 944}
!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, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !19, i64 72, !19, i64 88, !20, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !15, i64 120, !15, i64 121, !15, i64 122, !13, i64 124, !21, i64 136, !6, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !14, i64 180, !14, i64 184, !22, i64 192, !23, i64 208, !23, i64 224, !24, i64 240, !7, i64 256, !25, i64 268, !25, i64 272, !25, i64 276, !6, i64 280}
!19 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!20 = !{!"_ZTS13ImGuiNavLayer", !7, i64 0}
!21 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!22 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!23 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!25 = !{!"_ZTS6ImVec1", !14, i64 0}
!26 = !{!"_ZTS16ImGuiMenuColumns", !14, i64 0, !14, i64 4, !14, i64 8, !7, i64 12, !7, i64 24}
!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 6416}
!45 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !15, i64 2, !15, i64 3, !46, i64 8, !47, i64 5464, !6, i64 6408, !14, i64 6416, !14, i64 6420, !48, i64 6424, !50, i64 6568, !10, i64 6576, !10, i64 6580, !10, i64 6584, !21, i64 6592, !21, i64 6608, !21, i64 6624, !21, i64 6640, !27, i64 6656, !10, i64 6672, !6, i64 6680, !6, i64 6688, !6, i64 6696, !6, i64 6704, !6, i64 6712, !13, i64 6720, !14, i64 6728, !10, i64 6732, !15, i64 6736, !10, i64 6740, !14, i64 6744, !14, i64 6748, !10, i64 6752, !10, i64 6756, !14, i64 6760, !15, i64 6764, !15, i64 6765, !15, i64 6766, !15, i64 6767, !15, i64 6768, !10, i64 6772, !10, i64 6776, !51, i64 6784, !13, i64 6792, !6, i64 6800, !52, i64 6808, !10, i64 6812, !15, i64 6816, !15, i64 6817, !6, i64 6824, !10, i64 6832, !14, i64 6836, !53, i64 6840, !54, i64 6944, !55, i64 6960, !56, i64 6976, !57, i64 6992, !58, i64 7008, !58, i64 7024, !6, i64 7040, !10, i64 7048, !10, i64 7052, !10, i64 7056, !10, i64 7060, !10, i64 7064, !10, i64 7068, !10, i64 7072, !10, i64 7076, !10, i64 7080, !52, i64 7084, !19, i64 7088, !10, i64 7104, !6, i64 7112, !6, i64 7120, !6, i64 7128, !14, i64 7136, !14, i64 7140, !15, i64 7144, !20, i64 7148, !10, i64 7152, !15, i64 7156, !15, i64 7157, !15, i64 7158, !15, i64 7159, !15, i64 7160, !15, i64 7161, !15, i64 7162, !10, i64 7164, !19, i64 7168, !15, i64 7184, !15, i64 7185, !10, i64 7188, !59, i64 7192, !10, i64 7196, !10, i64 7200, !10, i64 7204, !60, i64 7208, !60, i64 7256, !60, i64 7304, !6, i64 7352, !6, i64 7360, !10, i64 7368, !10, i64 7372, !10, i64 7376, !10, i64 7380, !15, i64 7384, !61, i64 7392, !62, i64 7448, !14, i64 7480, !30, i64 7488, !30, i64 7656, !10, i64 7824, !15, i64 7828, !15, i64 7829, !10, i64 7832, !10, i64 7836, !10, i64 7840, !63, i64 7848, !19, i64 7912, !10, i64 7928, !10, i64 7932, !14, i64 7936, !10, i64 7940, !10, i64 7944, !10, i64 7948, !64, i64 7952, !7, i64 7968, !6, i64 7976, !65, i64 7984, !67, i64 8024, !68, i64 8040, !13, i64 8056, !69, i64 8064, !73, i64 11792, !10, i64 11912, !10, i64 11916, !14, i64 11920, !7, i64 11924, !49, i64 11936, !15, i64 11952, !14, i64 11956, !14, i64 11960, !14, i64 11964, !10, i64 11968, !70, i64 11976, !10, i64 11992, !13, i64 11996, !13, i64 12004, !15, i64 12012, !14, i64 12016, !75, i64 12024, !76, i64 12040, !77, i64 12056, !15, i64 12072, !78, i64 12076, !6, i64 12080, !75, i64 12088, !14, i64 12104, !15, i64 12108, !10, i64 12112, !10, i64 12116, !10, i64 12120, !15, i64 12124, !10, i64 12128, !7, i64 12132, !10, i64 12612, !14, i64 12616, !10, i64 12620, !10, i64 12624, !10, i64 12628, !7, i64 12632}
!46 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !13, i64 8, !14, i64 16, !14, i64 20, !6, i64 24, !6, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !7, i64 52, !14, i64 140, !14, i64 144, !6, i64 152, !6, i64 160, !14, i64 168, !15, i64 172, !6, i64 176, !13, i64 184, !15, i64 192, !15, i64 193, !15, i64 194, !15, i64 195, !15, i64 196, !14, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !13, i64 296, !7, i64 304, !14, i64 312, !14, i64 316, !15, i64 320, !15, i64 321, !15, i64 322, !15, i64 323, !7, i64 324, !7, i64 836, !15, i64 920, !15, i64 921, !15, i64 922, !15, i64 923, !15, i64 924, !15, i64 925, !15, i64 926, !14, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !10, i64 948, !13, i64 952, !13, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !32, i64 5440}
!47 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !13, i64 4, !14, i64 12, !14, i64 16, !13, i64 20, !13, i64 28, !10, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !13, i64 56, !14, i64 64, !14, i64 68, !13, i64 72, !13, i64 80, !13, i64 88, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !10, i64 128, !13, i64 132, !13, i64 140, !13, i64 148, !13, i64 156, !14, i64 164, !15, i64 168, !15, i64 169, !14, i64 172, !7, i64 176}
!48 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !49, i64 24, !10, i64 40, !7, i64 44}
!49 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!50 = !{!"double", !7, i64 0}
!51 = !{!"long long", !7, i64 0}
!52 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!53 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !15, i64 48, !19, i64 52, !6, i64 72, !6, i64 80, !14, i64 88, !13, i64 92}
!54 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !14, i64 4, !15, i64 8, !10, i64 12}
!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", !10, i64 0, !10, i64 4, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !19, 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", !23, 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, !14, i64 96, !14, i64 100, !14, i64 104, !10, i64 108, !15, 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 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!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 = !{!45, !6, i64 6680}
!84 = !{!12, !10, i64 316}
!85 = !{!12, !10, i64 324}
!86 = !{!12, !14, i64 116}
!87 = !{!45, !10, i64 7824}
!88 = !{!45, !10, i64 8064}
!89 = !{!45, !6, i64 7352}
!90 = !{!45, !10, i64 7368}
!91 = !{!12, !10, i64 376}
!92 = !{!45, !10, i64 6752}
!93 = !{!45, !10, i64 7064}
!94 = !{!45, !10, i64 7052}
!95 = !{!45, !52, i64 7084}
!96 = !{!45, !10, i64 6812}
!97 = !{!69, !6, i64 56}
!98 = !{!69, !15, i64 64}
!99 = !{!69, !6, i64 24}
!100 = !{!69, !10, i64 4}
!101 = !{!69, !10, i64 8}
!102 = !{!69, !10, i64 0}
!103 = !{!69, !14, i64 72}
!104 = !{!69, !7, i64 88}
!105 = !{!46, !15, i64 320}
!106 = !{!45, !10, i64 6772}
!107 = !{!45, !10, i64 6776}
!108 = !{!45, !51, i64 6784}
!109 = !{!69, !10, i64 16}
!110 = !{!69, !6, i64 40}
!111 = !{!7, !7, i64 0}
!112 = !{!45, !6, i64 6408}
!113 = !{!73, !14, i64 20}
!114 = !{!73, !14, i64 96}
!115 = !{!73, !14, i64 100}
!116 = !{!73, !14, i64 104}
!117 = !{!73, !6, i64 72}
!118 = !{!73, !6, i64 56}
!119 = !{!120, !14, i64 4}
!120 = !{!"_ZTS11ImFontGlyph", !16, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36}
!121 = !{!73, !14, i64 16}
!122 = !{!69, !10, i64 68}
!123 = !{!69, !10, i64 3704}
!124 = !{!69, !6, i64 3712}
!125 = !{!69, !6, i64 3720}
!126 = !{!45, !15, i64 6765}
!127 = !{!45, !10, i64 12628}
!128 = !{!46, !14, i64 296}
!129 = !{!19, !14, i64 0}
!130 = !{!47, !14, i64 56}
!131 = !{!46, !14, i64 300}
!132 = !{!12, !14, i64 212}
!133 = !{!46, !15, i64 193}
!134 = !{!69, !15, i64 3701}
!135 = !{!46, !14, i64 952}
!136 = !{!46, !14, i64 956}
!137 = !{!69, !15, i64 3700}
!138 = !{!46, !15, i64 322}
!139 = !{!46, !15, i64 323}
!140 = !{!46, !15, i64 321}
!141 = !{!16, !16, i64 0}
!142 = !{!46, !10, i64 5440}
!143 = distinct !{!143, !144}
!144 = !{!"llvm.loop.mustprogress"}
!145 = !{!45, !15, i64 6764}
!146 = !{!12, !14, i64 88}
!147 = !{!46, !6, i64 256}
!148 = !{!69, !10, i64 80}
!149 = !{!69, !10, i64 84}
!150 = distinct !{!150, !144}
!151 = !{!69, !10, i64 48}
!152 = !{!69, !10, i64 32}
!153 = !{!154, !10, i64 0}
!154 = !{!"_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}
!155 = !{!154, !10, i64 4}
!156 = !{!154, !6, i64 8}
!157 = !{!154, !10, i64 20}
!158 = !{!154, !6, i64 24}
!159 = !{!154, !10, i64 32}
!160 = !{!154, !10, i64 36}
!161 = !{!154, !15, i64 40}
!162 = !{!69, !10, i64 76}
!163 = !{!154, !10, i64 44}
!164 = !{!154, !10, i64 48}
!165 = !{!154, !10, i64 52}
!166 = !{!47, !14, i64 64}
!167 = !{!19, !14, i64 4}
!168 = distinct !{!168, !144}
!169 = !{!49, !14, i64 12}
!170 = !{!49, !14, i64 4}
!171 = distinct !{!171, !144}
!172 = !{!12, !6, i64 680}
!173 = distinct !{!173, !144}
!174 = !{!46, !14, i64 16}
!175 = !{!69, !14, i64 3696}
!176 = !{!45, !15, i64 202}
!177 = !{!45, !15, i64 12072}
!178 = !{!19, !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.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 [107 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [134 x i8], align 1
@.str.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.56 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.61 = 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 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(948), 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 @_ZN5ImGui14GetScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef, i32 noundef) local_unnamed_addr #9

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

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

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #6

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

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

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

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

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

62:                                               ; preds = %57
  tail call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.1, i32 noundef 3400, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

63:                                               ; preds = %57
  %64 = and i32 %5, 64
  %.not848 = icmp eq i32 %64, 0
  %65 = and i32 %5, 1024
  %.not849 = icmp eq i32 %65, 0
  %66 = and i32 %5, 1088
  %.not850 = icmp eq i32 %66, 1088
  br i1 %.not850, label %67, label %68

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

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

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

78:                                               ; preds = %68
  br i1 %60, label %79, label %80

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

80:                                               ; preds = %79, %78
  %81 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(948) %53, ptr noundef %0, ptr noundef null)
  %82 = tail call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %0, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #14
  %.sroa.0454.0.copyload = load <2 x float>, ptr %4, align 4
  %83 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %60, label %84, label %88

84:                                               ; preds = %80
  %85 = getelementptr inbounds i8, ptr %69, i64 6416
  %86 = load float, ptr %85, align 8, !tbaa !40
  %87 = fmul float %86, 8.000000e+00
  br label %89

88:                                               ; preds = %80
  %.sroa.0455.4.vec.extract = extractelement <2 x float> %82, i64 1
  br label %89

89:                                               ; preds = %88, %84
  %90 = phi float [ %87, %84 ], [ %.sroa.0455.4.vec.extract, %88 ]
  %91 = getelementptr inbounds i8, ptr %69, i64 5520
  %92 = getelementptr inbounds i8, ptr %69, i64 5524
  %93 = load float, ptr %92, align 4, !tbaa !75
  %94 = tail call float @llvm.fmuladd.f32(float %93, float 2.000000e+00, float %90)
  %95 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0454.0.copyload, float noundef %83, float noundef %94)
  store <2 x float> %95, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  %96 = extractelement <2 x float> %95, i64 0
  %.sroa.0455.0.vec.extract = extractelement <2 x float> %82, i64 0
  %97 = fcmp ogt float %.sroa.0455.0.vec.extract, 0.000000e+00
  %98 = extractelement <2 x float> %95, i64 1
  br i1 %97, label %99, label %103

99:                                               ; preds = %89
  %100 = getelementptr inbounds i8, ptr %69, i64 5544
  %101 = load float, ptr %100, align 4, !tbaa !76
  %102 = fadd float %.sroa.0455.0.vec.extract, %101
  br label %103

103:                                              ; preds = %89, %99
  %104 = phi float [ %102, %99 ], [ 0.000000e+00, %89 ]
  %105 = fadd float %96, %104
  %106 = getelementptr inbounds i8, ptr %9, i64 4
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef %105, float noundef %98)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #14
  %107 = getelementptr inbounds i8, ptr %53, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %108 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %107, ptr noundef nonnull align 4 dereferenceable(8) %9)
  store <2 x float> %108, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %107, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  %109 = 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> %109, ptr %14, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %14)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #14
  %.sroa.0427.0.copyload = load float, ptr %9, align 8, !tbaa !77
  %.sroa.11.0.copyload = load float, ptr %106, align 4, !tbaa !77
  br i1 %60, label %110, label %129

110:                                              ; preds = %103
  %111 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %81, ptr noundef nonnull %11)
  br i1 %111, label %114, label %112

112:                                              ; preds = %110
  %113 = load float, ptr %92, align 4, !tbaa !75
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %113)
  call void @_ZN5ImGui8EndGroupEv()
  br label %1336

114:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  %115 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %11)
  store <2 x float> %115, ptr %15, align 8
  %116 = call noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef %81, ptr noundef nonnull align 4 dereferenceable(8) %15, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  br i1 %116, label %118, label %117

117:                                              ; preds = %114
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1336

118:                                              ; preds = %114
  %119 = getelementptr inbounds i8, ptr %69, i64 6680
  %120 = load ptr, ptr %119, align 8, !tbaa !78
  %121 = getelementptr inbounds i8, ptr %120, i64 316
  %122 = load i32, ptr %121, align 4, !tbaa !79
  %123 = getelementptr inbounds i8, ptr %120, i64 324
  %124 = load i32, ptr %123, align 4, !tbaa !80
  %125 = or i32 %124, %122
  store i32 %125, ptr %123, align 4, !tbaa !80
  %126 = getelementptr inbounds i8, ptr %120, i64 116
  %127 = load float, ptr %126, align 4, !tbaa !81
  %128 = fsub float %.sroa.0427.0.copyload, %127
  br label %132

129:                                              ; preds = %103
  %130 = load float, ptr %92, align 4, !tbaa !75
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef %130)
  %131 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %13, i32 noundef %81, ptr noundef nonnull %11)
  br i1 %131, label %132, label %1336

132:                                              ; preds = %129, %118
  %.sroa.0427.0 = phi float [ %128, %118 ], [ %.sroa.0427.0.copyload, %129 ]
  %.0776 = phi ptr [ %120, %118 ], [ %53, %129 ]
  %133 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %81)
  br i1 %133, label %134, label %136

134:                                              ; preds = %132
  %135 = getelementptr inbounds i8, ptr %69, i64 7824
  store i32 1, ptr %135, align 8, !tbaa !82
  br label %136

136:                                              ; preds = %134, %132
  %137 = getelementptr inbounds i8, ptr %69, i64 8064
  %138 = load i32, ptr %137, align 8, !tbaa !83
  %139 = icmp eq i32 %138, %81
  %spec.select = select i1 %139, ptr %137, ptr null
  %140 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowj(ptr noundef nonnull %53, i32 noundef %81)
  br i1 %140, label %141, label %151

141:                                              ; preds = %136
  %142 = getelementptr inbounds i8, ptr %69, i64 7352
  %143 = load ptr, ptr %142, align 8, !tbaa !84
  %144 = icmp eq ptr %143, %53
  br i1 %144, label %145, label %151

145:                                              ; preds = %141
  %146 = getelementptr inbounds i8, ptr %69, i64 7368
  %147 = load i32, ptr %146, align 8, !tbaa !85
  %148 = getelementptr inbounds i8, ptr %53, i64 376
  %149 = load i32, ptr %148, align 8, !tbaa !86
  %150 = icmp eq i32 %147, %149
  br label %151

151:                                              ; preds = %141, %145, %136
  %152 = phi i1 [ false, %136 ], [ false, %141 ], [ %150, %145 ]
  br i1 %133, label %153, label %157

153:                                              ; preds = %151
  %154 = getelementptr inbounds i8, ptr %69, i64 1056
  %155 = load i8, ptr %154, align 8, !tbaa !87, !range !37, !noundef !38
  %156 = trunc nuw i8 %155 to i1
  br label %157

157:                                              ; preds = %153, %151
  %158 = phi i1 [ false, %151 ], [ %156, %153 ]
  %159 = getelementptr inbounds i8, ptr %69, i64 6752
  %160 = load i32, ptr %159, align 8, !tbaa !88
  %.not853 = icmp eq i32 %160, %81
  br i1 %.not853, label %173, label %161

161:                                              ; preds = %157
  %162 = getelementptr inbounds i8, ptr %69, i64 7064
  %163 = load i32, ptr %162, align 8, !tbaa !89
  %164 = icmp eq i32 %163, %81
  br i1 %164, label %173, label %165

165:                                              ; preds = %161
  %166 = getelementptr inbounds i8, ptr %69, i64 7052
  %167 = load i32, ptr %166, align 4, !tbaa !90
  %168 = icmp eq i32 %167, %81
  br i1 %168, label %169, label %173

169:                                              ; preds = %165
  %170 = getelementptr inbounds i8, ptr %69, i64 7084
  %171 = load i32, ptr %170, align 4, !tbaa !91
  %172 = icmp eq i32 %171, 3
  br label %173

173:                                              ; preds = %161, %169, %165, %157
  %174 = phi i1 [ false, %157 ], [ true, %161 ], [ false, %165 ], [ %172, %169 ]
  %or.cond = and i1 %60, %139
  br i1 %or.cond, label %175, label %186

175:                                              ; preds = %173
  %176 = icmp eq i32 %160, 0
  br i1 %176, label %177, label %182

177:                                              ; preds = %175
  %178 = getelementptr inbounds i8, ptr %69, i64 6812
  %179 = load i32, ptr %178, align 4, !tbaa !92
  %180 = call noundef i32 @_ZN5ImGui14GetScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.0776, i32 noundef 1)
  %181 = icmp eq i32 %179, %180
  %.pre = load i32, ptr %159, align 8, !tbaa !88
  br label %182

182:                                              ; preds = %177, %175
  %183 = phi i32 [ %.pre, %177 ], [ %160, %175 ]
  %.ph = phi i1 [ %181, %177 ], [ false, %175 ]
  %184 = call noundef i32 @_ZN5ImGui14GetScrollbarIDEP11ImGuiWindow9ImGuiAxis(ptr noundef nonnull %.0776, i32 noundef 1)
  %185 = icmp eq i32 %183, %184
  %.pre1056 = load i32, ptr %159, align 8, !tbaa !88
  br label %186

186:                                              ; preds = %173, %182
  %187 = phi i32 [ %.pre1056, %182 ], [ %160, %173 ]
  %188 = phi i1 [ %.ph, %182 ], [ false, %173 ]
  %189 = phi i1 [ %185, %182 ], [ false, %173 ]
  %.not854 = icmp eq i32 %187, %81
  br i1 %.not854, label %190, label %.thread980

190:                                              ; preds = %186
  %brmerge885 = select i1 %140, i1 true, i1 %158
  %191 = select i1 %brmerge885, i1 true, i1 %188
  %spec.select977 = select i1 %191, i1 true, i1 %174
  %192 = select i1 %spec.select977, i1 true, i1 %189
  br label %252

.thread980:                                       ; preds = %186
  %193 = and i32 %5, 16
  %.not855 = icmp ne i32 %193, 0
  %brmerge = select i1 %.not855, i1 true, i1 %174
  %194 = xor i1 %60, true
  %spec.select973 = and i1 %brmerge, %194
  %brmerge885981 = select i1 %140, i1 true, i1 %158
  %195 = select i1 %brmerge885981, i1 true, i1 %188
  %spec.select977983 = select i1 %195, i1 true, i1 %174
  %196 = select i1 %spec.select977983, i1 true, i1 %189
  br i1 %196, label %197, label %252

197:                                              ; preds = %.thread980
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %137)
  %198 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #15
  %199 = trunc i64 %198 to i32
  %200 = getelementptr inbounds i8, ptr %69, i64 8112
  %201 = add nsw i32 %199, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %200, i32 noundef %201)
  %202 = getelementptr inbounds i8, ptr %69, i64 8120
  %203 = load ptr, ptr %202, align 8, !tbaa !93
  %204 = sext i32 %201 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %203, ptr align 1 %2, i64 %204, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #14
  store ptr null, ptr %16, align 8, !tbaa !39
  %205 = getelementptr inbounds i8, ptr %69, i64 8080
  %206 = add nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %205, i32 noundef %206)
  %207 = getelementptr inbounds i8, ptr %69, i64 8096
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %207, i32 noundef 0)
  %208 = getelementptr inbounds i8, ptr %69, i64 8128
  store i8 0, ptr %208, align 8, !tbaa !94
  %209 = getelementptr inbounds i8, ptr %69, i64 8088
  %210 = load ptr, ptr %209, align 8, !tbaa !95
  %211 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %210, i32 noundef %3, ptr noundef %2, ptr noundef null, ptr noundef nonnull %16)
  %212 = getelementptr inbounds i8, ptr %69, i64 8068
  store i32 %211, ptr %212, align 4, !tbaa !96
  %213 = load ptr, ptr %16, align 8, !tbaa !39
  %214 = ptrtoint ptr %213 to i64
  %215 = ptrtoint ptr %2 to i64
  %216 = sub i64 %214, %215
  %217 = trunc i64 %216 to i32
  %218 = getelementptr inbounds i8, ptr %69, i64 8072
  store i32 %217, ptr %218, align 8, !tbaa !97
  %219 = load i32, ptr %137, align 8, !tbaa !98
  %220 = icmp eq i32 %219, %81
  br i1 %220, label %221, label %222

221:                                              ; preds = %197
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %137)
  br label %226

222:                                              ; preds = %197
  store i32 %81, ptr %137, align 8, !tbaa !98
  %223 = getelementptr inbounds i8, ptr %69, i64 8136
  store float 0.000000e+00, ptr %223, align 8, !tbaa !99
  %224 = getelementptr inbounds i8, ptr %69, i64 8140
  %225 = zext i1 %194 to i32
  call void @_ZN5ImStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %224, i32 noundef %225)
  %spec.select887 = select i1 %152, i1 true, i1 %spec.select973
  %spec.select978 = select i1 %194, i1 %spec.select887, i1 false
  br label %226

226:                                              ; preds = %222, %221
  %.0782 = phi i1 [ %spec.select973, %221 ], [ %spec.select978, %222 ]
  %227 = and i32 %5, 8192
  %.not857 = icmp eq i32 %227, 0
  br i1 %.not857, label %230, label %228

228:                                              ; preds = %226
  %229 = getelementptr inbounds i8, ptr %69, i64 8152
  store i8 1, ptr %229, align 4, !tbaa !100
  br label %230

230:                                              ; preds = %228, %226
  br i1 %60, label %239, label %231

231:                                              ; preds = %230
  %not. = xor i1 %140, true
  %232 = select i1 %not., i1 true, i1 %152
  br i1 %232, label %233, label %238

233:                                              ; preds = %231
  br i1 %158, label %234, label %239

234:                                              ; preds = %233
  %235 = getelementptr inbounds i8, ptr %69, i64 328
  %236 = load i8, ptr %235, align 8, !tbaa !101, !range !37, !noundef !38
  %237 = trunc nuw i8 %236 to i1
  br i1 %237, label %238, label %239

238:                                              ; preds = %234, %231
  br label %239

239:                                              ; preds = %230, %233, %234, %238
  %.1783 = phi i1 [ %.0782, %230 ], [ true, %238 ], [ %.0782, %234 ], [ %.0782, %233 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #14
  %.pre1057 = load i32, ptr %159, align 8, !tbaa !88
  %.not858 = icmp ne i32 %.pre1057, %81
  %brmerge889.not = and i1 %spec.select977983, %.not858
  br i1 %brmerge889.not, label %240, label %.thread990

240:                                              ; preds = %239
  %241 = load i32, ptr %137, align 8, !tbaa !98
  %242 = icmp eq i32 %241, %81
  br i1 %242, label %243, label %.critedge

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

243:                                              ; preds = %240
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %81, ptr noundef nonnull %53)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %81, ptr noundef nonnull %53)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %53)
  %244 = getelementptr inbounds i8, ptr %69, i64 6772
  %brmerge890.not = icmp eq i32 %61, 0
  %spec.select1041.v = select i1 %brmerge890.not, i32 3, i32 15
  %245 = load <2 x i32>, ptr %244, align 4, !tbaa !102
  %246 = insertelement <2 x i32> <i32 poison, i32 2>, i32 %spec.select1041.v, i64 0
  %247 = or <2 x i32> %245, %246
  store <2 x i32> %247, ptr %244, align 4, !tbaa !102
  %248 = getelementptr inbounds i8, ptr %69, i64 6784
  %249 = load i64, ptr %248, align 8, !tbaa !103
  %spec.select891.v = select i1 %60, i64 480, i64 384
  %spec.select891 = or i64 %249, %spec.select891.v
  store i64 %spec.select891, ptr %248, align 8, !tbaa !103
  %.not860 = icmp eq i32 %66, 0
  br i1 %.not860, label %.thread990, label %250

250:                                              ; preds = %243
  %251 = or i64 %spec.select891, 1
  store i64 %251, ptr %248, align 8, !tbaa !103
  br label %.thread990

252:                                              ; preds = %.thread980, %190
  %.ph1080 = phi i32 [ %81, %190 ], [ %187, %.thread980 ]
  %.ph1081 = phi i1 [ %192, %190 ], [ false, %.thread980 ]
  %.2784.ph = phi i1 [ false, %190 ], [ %spec.select973, %.thread980 ]
  %253 = icmp ne i32 %.ph1080, %81
  %or.cond5.not = or i1 %253, %139
  br i1 %or.cond5.not, label %.thread990, label %254

254:                                              ; preds = %252
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %.thread990

.thread990:                                       ; preds = %239, %250, %243, %254, %252
  %.17781090 = phi ptr [ %137, %250 ], [ %137, %243 ], [ null, %254 ], [ %spec.select, %252 ], [ %137, %239 ]
  %.27841087 = phi i1 [ %.1783, %250 ], [ %.1783, %243 ], [ %.2784.ph, %254 ], [ %.2784.ph, %252 ], [ %.1783, %239 ]
  %255 = phi i1 [ true, %250 ], [ true, %243 ], [ %.ph1081, %254 ], [ %.ph1081, %252 ], [ true, %239 ]
  %256 = load i32, ptr %159, align 8, !tbaa !88
  %257 = icmp eq i32 %256, %81
  br i1 %257, label %.thread992, label %261

.thread992:                                       ; preds = %.thread990
  %258 = getelementptr inbounds i8, ptr %69, i64 1056
  %259 = load i8, ptr %258, align 8, !tbaa !87, !range !37, !noundef !38
  %260 = trunc nuw i8 %259 to i1
  %.not1036 = xor i1 %255, true
  %not.brmerge893 = and i1 %.not1036, %260
  %spec.select974 = zext i1 %not.brmerge893 to i8
  br label %264

261:                                              ; preds = %.thread990
  %262 = icmp ne ptr %.17781090, null
  %263 = select i1 %262, i1 %189, i1 false
  br label %264

264:                                              ; preds = %.thread992, %261
  %.0779994 = phi i8 [ 0, %261 ], [ %spec.select974, %.thread992 ]
  %265 = phi i1 [ %263, %261 ], [ true, %.thread992 ]
  %266 = icmp ne ptr %.17781090, null
  br i1 %266, label %267, label %.thread995

267:                                              ; preds = %264
  %268 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  %spec.select894 = select i1 %268, i1 %265, i1 false
  %or.cond975 = select i1 %71, i1 %265, i1 false
  br i1 %or.cond975, label %269, label %.thread995

269:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #14
  store ptr null, ptr %17, align 8, !tbaa !39
  %270 = getelementptr inbounds i8, ptr %.17781090, i64 16
  %271 = add nsw i32 %3, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %270, i32 noundef %271)
  %272 = getelementptr inbounds i8, ptr %.17781090, i64 24
  %273 = load ptr, ptr %272, align 8, !tbaa !95
  %274 = load i32, ptr %270, align 8, !tbaa !104
  %275 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %273, i32 noundef %274, ptr noundef %2, ptr noundef null, ptr noundef nonnull %17)
  %276 = getelementptr inbounds i8, ptr %.17781090, i64 4
  store i32 %275, ptr %276, align 4, !tbaa !96
  %277 = load ptr, ptr %17, align 8, !tbaa !39
  %278 = ptrtoint ptr %277 to i64
  %279 = ptrtoint ptr %2 to i64
  %280 = sub i64 %278, %279
  %281 = trunc i64 %280 to i32
  %282 = getelementptr inbounds i8, ptr %.17781090, i64 8
  store i32 %281, ptr %282, align 8, !tbaa !97
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  %283 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  %284 = and i1 %spec.select894, %283
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #14
  br label %.thread995

.thread995:                                       ; preds = %264, %269, %267
  %.0786.in = phi i1 [ %284, %269 ], [ %spec.select894, %267 ], [ false, %264 ]
  %brmerge896 = select i1 %265, i1 true, i1 %.0786.in
  br i1 %brmerge896, label %289, label %285

285:                                              ; preds = %.thread995
  %286 = load i32, ptr %159, align 8, !tbaa !88
  %287 = icmp eq i32 %286, %81
  %.not = xor i1 %71, true
  %288 = and i1 %287, %.not
  %or.cond897 = and i1 %266, %288
  br i1 %or.cond897, label %290, label %294

289:                                              ; preds = %.thread995
  %.not.old = xor i1 %71, true
  %or.cond9.old = and i1 %266, %.not.old
  br i1 %or.cond9.old, label %290, label %294

290:                                              ; preds = %285, %289
  %291 = getelementptr inbounds i8, ptr %.17781090, i64 64
  %292 = load i8, ptr %291, align 8, !tbaa !94, !range !37, !noundef !38
  %293 = trunc nuw i8 %292 to i1
  br label %294

294:                                              ; preds = %290, %289, %285
  %295 = phi i1 [ false, %289 ], [ false, %285 ], [ %293, %290 ]
  %.not861 = icmp eq ptr %1, null
  br i1 %.not861, label %304, label %296

296:                                              ; preds = %294
  br i1 %295, label %297, label %300

297:                                              ; preds = %296
  %298 = getelementptr inbounds i8, ptr %.17781090, i64 40
  %299 = load ptr, ptr %298, align 8, !tbaa !105
  br label %300

300:                                              ; preds = %296, %297
  %301 = phi ptr [ %299, %297 ], [ %2, %296 ]
  %302 = load i8, ptr %301, align 1, !tbaa !106
  %303 = icmp eq i8 %302, 0
  br label %304

304:                                              ; preds = %300, %294
  %305 = phi i1 [ false, %294 ], [ %303, %300 ]
  %brmerge898 = select i1 %.not851, i1 true, i1 %305
  br i1 %brmerge898, label %339, label %306

306:                                              ; preds = %304
  %307 = getelementptr inbounds i8, ptr %69, i64 6408
  %308 = load ptr, ptr %307, align 8, !tbaa !107
  %309 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(113) %308, i16 noundef zeroext 42)
  %310 = getelementptr inbounds i8, ptr %69, i64 11792
  %311 = load ptr, ptr %307, align 8, !tbaa !107
  %312 = getelementptr inbounds i8, ptr %311, i64 20
  %313 = load float, ptr %312, align 4, !tbaa !108
  %314 = getelementptr inbounds i8, ptr %69, i64 11812
  store float %313, ptr %314, align 4, !tbaa !108
  %315 = getelementptr inbounds i8, ptr %311, i64 96
  %316 = load float, ptr %315, align 8, !tbaa !109
  %317 = getelementptr inbounds i8, ptr %69, i64 11888
  store float %316, ptr %317, align 8, !tbaa !109
  %318 = getelementptr inbounds i8, ptr %311, i64 64
  %319 = getelementptr inbounds i8, ptr %69, i64 11856
  %320 = load i64, ptr %318, align 8
  store i64 %320, ptr %319, align 8
  %321 = getelementptr inbounds i8, ptr %311, i64 100
  %322 = getelementptr inbounds i8, ptr %69, i64 11892
  %323 = load <2 x float>, ptr %321, align 4, !tbaa !77
  store <2 x float> %323, ptr %322, align 4, !tbaa !77
  %324 = getelementptr inbounds i8, ptr %311, i64 72
  %325 = load ptr, ptr %324, align 8, !tbaa !110
  %326 = getelementptr inbounds i8, ptr %69, i64 11864
  store ptr %325, ptr %326, align 8, !tbaa !110
  %327 = getelementptr inbounds i8, ptr %69, i64 11848
  store ptr %309, ptr %327, align 8, !tbaa !111
  %328 = getelementptr inbounds i8, ptr %309, i64 4
  %329 = load float, ptr %328, align 4, !tbaa !112
  %330 = getelementptr inbounds i8, ptr %69, i64 11808
  store float %329, ptr %330, align 8, !tbaa !114
  %331 = getelementptr inbounds i8, ptr %69, i64 11832
  %332 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %331)
  br i1 %332, label %333, label %.critedge11

333:                                              ; preds = %306
  %334 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %310)
  br i1 %334, label %335, label %.critedge11

335:                                              ; preds = %333
  %336 = getelementptr inbounds i8, ptr %69, i64 11816
  %337 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %336)
  br i1 %337, label %338, label %.critedge11

.critedge11:                                      ; preds = %333, %306, %335
  call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 3581, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

338:                                              ; preds = %335
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %310)
  br label %339

339:                                              ; preds = %304, %338
  %340 = load i32, ptr %159, align 8, !tbaa !88
  %341 = icmp eq i32 %340, %81
  br i1 %341, label %342, label %484

342:                                              ; preds = %339
  br i1 %266, label %344, label %343

343:                                              ; preds = %342
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 3589, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

344:                                              ; preds = %342
  %345 = getelementptr inbounds i8, ptr %.17781090, i64 8
  %346 = load i32, ptr %345, align 8, !tbaa !97
  %347 = getelementptr inbounds i8, ptr %.17781090, i64 68
  store i32 %3, ptr %347, align 4, !tbaa !115
  %348 = getelementptr inbounds i8, ptr %.17781090, i64 3704
  store i32 %5, ptr %348, align 8, !tbaa !116
  %349 = getelementptr inbounds i8, ptr %.17781090, i64 3712
  store ptr %6, ptr %349, align 8, !tbaa !117
  %350 = getelementptr inbounds i8, ptr %.17781090, i64 3720
  store ptr %7, ptr %350, align 8, !tbaa !118
  %351 = getelementptr inbounds i8, ptr %69, i64 312
  %352 = load i8, ptr %351, align 8, !tbaa !87, !range !37, !noundef !38
  %353 = xor i8 %352, 1
  %354 = getelementptr inbounds i8, ptr %69, i64 6765
  store i8 %353, ptr %354, align 1, !tbaa !119
  %355 = getelementptr inbounds i8, ptr %69, i64 12628
  store i32 1, ptr %355, align 4, !tbaa !120
  %356 = getelementptr inbounds i8, ptr %69, i64 304
  %357 = load float, ptr %356, align 8, !tbaa !121
  %358 = load float, ptr %11, align 8, !tbaa !122
  %359 = fsub float %357, %358
  %360 = load float, ptr %91, align 4, !tbaa !123
  %361 = fsub float %359, %360
  %362 = getelementptr inbounds i8, ptr %.17781090, i64 72
  %363 = load float, ptr %362, align 8, !tbaa !99
  %364 = fadd float %361, %363
  br i1 %60, label %365, label %373

365:                                              ; preds = %344
  %366 = getelementptr inbounds i8, ptr %69, i64 308
  %367 = load float, ptr %366, align 4, !tbaa !124
  %368 = getelementptr inbounds i8, ptr %.0776, i64 212
  %369 = load float, ptr %368, align 4, !tbaa !125
  %370 = fsub float %367, %369
  %371 = load float, ptr %92, align 4, !tbaa !75
  %372 = fsub float %370, %371
  br label %377

373:                                              ; preds = %344
  %374 = getelementptr inbounds i8, ptr %69, i64 6416
  %375 = load float, ptr %374, align 8, !tbaa !40
  %376 = fmul float %375, 5.000000e-01
  br label %377

377:                                              ; preds = %373, %365
  %378 = phi float [ %372, %365 ], [ %376, %373 ]
  %379 = getelementptr inbounds i8, ptr %69, i64 201
  %380 = load i8, ptr %379, align 1, !tbaa !126, !range !37, !noundef !38
  %381 = trunc nuw i8 %380 to i1
  br i1 %.27841087, label %387, label %382

382:                                              ; preds = %377
  %.not899 = xor i1 %133, true
  %brmerge900 = select i1 %.not899, i1 true, i1 %381
  br i1 %brmerge900, label %389, label %383

383:                                              ; preds = %382
  %384 = getelementptr inbounds i8, ptr %69, i64 1061
  %385 = load i8, ptr %384, align 1, !tbaa !87, !range !37, !noundef !38
  %386 = trunc nuw i8 %385 to i1
  br i1 %386, label %387, label %389

387:                                              ; preds = %383, %377
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  %388 = getelementptr inbounds i8, ptr %.17781090, i64 3701
  store i8 1, ptr %388, align 1, !tbaa !127
  br label %424

389:                                              ; preds = %382, %383
  %390 = select i1 %133, i1 %381, i1 false
  br i1 %390, label %391, label %396

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

395:                                              ; preds = %391
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef 2097164)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef 6291469)
  br label %424

396:                                              ; preds = %389, %391
  %397 = getelementptr inbounds i8, ptr %69, i64 1056
  %398 = load i8, ptr %397, align 8, !tbaa !87, !range !37, !noundef !38
  %399 = trunc nuw i8 %398 to i1
  br i1 %399, label %400, label %407

400:                                              ; preds = %396
  %401 = getelementptr inbounds i8, ptr %.17781090, i64 3701
  %402 = load i8, ptr %401, align 1, !tbaa !127, !range !37, !noundef !38
  %403 = trunc nuw i8 %402 to i1
  br i1 %403, label %407, label %404

404:                                              ; preds = %400
  br i1 %133, label %405, label %424

405:                                              ; preds = %404
  %406 = getelementptr inbounds i8, ptr %.17781090, i64 76
  call void @_ZN5ImStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.17781090, ptr noundef nonnull %406, float noundef %364, float noundef %378)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br label %424

407:                                              ; preds = %400, %396
  %408 = trunc nuw i8 %352 to i1
  br i1 %408, label %409, label %424

409:                                              ; preds = %407
  %410 = getelementptr inbounds i8, ptr %.17781090, i64 3701
  %411 = load i8, ptr %410, align 1, !tbaa !127, !range !37, !noundef !38
  %412 = trunc nuw i8 %411 to i1
  br i1 %412, label %424, label %413

413:                                              ; preds = %409
  %414 = getelementptr inbounds i8, ptr %69, i64 960
  %415 = load float, ptr %414, align 8, !tbaa !128
  %416 = fcmp une float %415, 0.000000e+00
  br i1 %416, label %421, label %417

417:                                              ; preds = %413
  %418 = getelementptr inbounds i8, ptr %69, i64 964
  %419 = load float, ptr %418, align 4, !tbaa !129
  %420 = fcmp une float %419, 0.000000e+00
  br i1 %420, label %421, label %424

421:                                              ; preds = %417, %413
  %422 = getelementptr inbounds i8, ptr %.17781090, i64 76
  call void @_ZN5ImStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %.17781090, ptr noundef nonnull %422, float noundef %364, float noundef %378)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  %423 = getelementptr inbounds i8, ptr %.17781090, i64 3700
  store i8 1, ptr %423, align 4, !tbaa !130
  br label %424

424:                                              ; preds = %395, %407, %409, %417, %421, %404, %405, %387
  %425 = getelementptr inbounds i8, ptr %.17781090, i64 3701
  %426 = load i8, ptr %425, align 1, !tbaa !127, !range !37, !noundef !38
  %427 = trunc nuw i8 %426 to i1
  br i1 %427, label %428, label %432

428:                                              ; preds = %424
  %429 = load i8, ptr %351, align 8, !tbaa !87, !range !37, !noundef !38
  %430 = trunc nuw i8 %429 to i1
  br i1 %430, label %432, label %431

431:                                              ; preds = %428
  store i8 0, ptr %425, align 1, !tbaa !127
  br label %432

432:                                              ; preds = %431, %428, %424
  %433 = getelementptr inbounds i8, ptr %69, i64 328
  %434 = load i8, ptr %433, align 8, !tbaa !101, !range !37, !noundef !38
  %435 = trunc nuw i8 %434 to i1
  br i1 %435, label %436, label %441

436:                                              ; preds = %432
  %437 = getelementptr inbounds i8, ptr %69, i64 330
  %438 = load i8, ptr %437, align 2, !tbaa !131, !range !37, !noundef !38
  %439 = trunc nuw i8 %438 to i1
  %.not904 = xor i1 %439, true
  %440 = select i1 %439, i1 %381, i1 false
  br i1 %440, label %442, label %446

441:                                              ; preds = %432
  br i1 %381, label %442, label %446

442:                                              ; preds = %436, %441
  %443 = getelementptr inbounds i8, ptr %69, i64 331
  %444 = load i8, ptr %443, align 1, !tbaa !132, !range !37, !noundef !38
  %445 = trunc nuw i8 %444 to i1
  br label %446

446:                                              ; preds = %436, %441, %442
  %447 = phi i1 [ %.not904, %436 ], [ false, %441 ], [ %445, %442 ]
  br i1 %.not849, label %462, label %448

448:                                              ; preds = %446
  %449 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  %.not907 = xor i1 %449, true
  %brmerge908 = select i1 %.not907, i1 true, i1 %447
  br i1 %brmerge908, label %462, label %450

450:                                              ; preds = %448
  %451 = getelementptr inbounds i8, ptr %69, i64 329
  %452 = load i8, ptr %451, align 1, !tbaa !133, !range !37, !noundef !38
  %453 = trunc nuw i8 %452 to i1
  %brmerge909 = or i1 %71, %453
  br i1 %brmerge909, label %462, label %454

454:                                              ; preds = %450
  %455 = getelementptr inbounds i8, ptr %69, i64 5448
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #14
  store i16 9, ptr %18, align 2, !tbaa !134
  %456 = call noundef zeroext i1 @_ZNK8ImVectorItE8containsERKt(ptr noundef nonnull align 8 dereferenceable(16) %455, ptr noundef nonnull align 2 dereferenceable(2) %18)
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #14
  br i1 %456, label %462, label %457

457:                                              ; preds = %454
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #14
  store i32 9, ptr %19, align 4, !tbaa !102
  %458 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %19, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %458, label %459, label %461

459:                                              ; preds = %457
  %460 = load i32, ptr %19, align 4, !tbaa !102
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %460)
  br label %461

461:                                              ; preds = %459, %457
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #14
  br label %462

462:                                              ; preds = %450, %448, %454, %461, %446
  %463 = getelementptr inbounds i8, ptr %69, i64 5448
  %464 = load i32, ptr %463, align 8, !tbaa !135
  %465 = icmp sgt i32 %464, 0
  br i1 %465, label %466, label %484

466:                                              ; preds = %462
  %brmerge910 = or i1 %71, %447
  %brmerge911 = select i1 %brmerge910, i1 true, i1 %174
  br i1 %brmerge911, label %.loopexit1044, label %.lr.ph

.lr.ph:                                           ; preds = %466
  %467 = getelementptr inbounds i8, ptr %69, i64 329
  br label %468

468:                                              ; preds = %.lr.ph, %480
  %.08031047 = phi i32 [ 0, %.lr.ph ], [ %481, %480 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #14
  %469 = call noundef nonnull align 2 dereferenceable(2) ptr @_ZN8ImVectorItEixEi(ptr noundef nonnull align 8 dereferenceable(16) %463, i32 noundef %.08031047)
  %470 = load i16, ptr %469, align 2, !tbaa !134
  %471 = zext i16 %470 to i32
  store i32 %471, ptr %20, align 4, !tbaa !102
  %472 = icmp eq i16 %470, 9
  br i1 %472, label %473, label %476

473:                                              ; preds = %468
  %474 = load i8, ptr %467, align 1, !tbaa !133, !range !37, !noundef !38
  %475 = trunc nuw i8 %474 to i1
  br i1 %475, label %480, label %476

476:                                              ; preds = %473, %468
  %477 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %20, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %477, label %478, label %480

478:                                              ; preds = %476
  %479 = load i32, ptr %20, align 4, !tbaa !102
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %479)
  br label %480

480:                                              ; preds = %476, %478, %473
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #14
  %481 = add nuw nsw i32 %.08031047, 1
  %482 = load i32, ptr %463, align 8, !tbaa !135
  %483 = icmp slt i32 %481, %482
  br i1 %483, label %468, label %.loopexit1044, !llvm.loop !136

.loopexit1044:                                    ; preds = %480, %466
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %463, i32 noundef 0)
  br label %484

484:                                              ; preds = %462, %.loopexit1044, %339
  %.0801 = phi i32 [ 0, %339 ], [ %346, %.loopexit1044 ], [ %346, %462 ]
  %485 = load i32, ptr %159, align 8, !tbaa !88
  %486 = icmp eq i32 %485, %81
  br i1 %486, label %487, label %818

487:                                              ; preds = %484
  %488 = getelementptr inbounds i8, ptr %69, i64 6764
  %489 = load i8, ptr %488, align 4, !tbaa !138, !range !37, !noundef !38
  %490 = trunc nuw i8 %489 to i1
  br i1 %490, label %.thread1108, label %491

491:                                              ; preds = %487
  %492 = trunc nuw i8 %.0779994 to i1
  br i1 %492, label %.thread1108, label %493

493:                                              ; preds = %491
  br i1 %266, label %495, label %494

494:                                              ; preds = %493
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 3669, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

495:                                              ; preds = %493
  %496 = getelementptr inbounds i8, ptr %69, i64 329
  %497 = load i8, ptr %496, align 1, !tbaa !133, !range !37, !noundef !38
  %498 = trunc nuw i8 %497 to i1
  %499 = select i1 %498, i32 4194304, i32 0
  %500 = getelementptr inbounds i8, ptr %69, i64 201
  %501 = load i8, ptr %500, align 1, !tbaa !126, !range !37, !noundef !38
  %502 = trunc nuw i8 %501 to i1
  br i1 %502, label %503, label %515

503:                                              ; preds = %495
  %504 = getelementptr inbounds i8, ptr %69, i64 331
  %505 = load i8, ptr %504, align 1, !tbaa !132, !range !37, !noundef !38
  %506 = trunc nuw i8 %505 to i1
  br i1 %506, label %507, label %.thread1000

507:                                              ; preds = %503
  %508 = getelementptr inbounds i8, ptr %69, i64 328
  %509 = load i8, ptr %508, align 8, !tbaa !87, !range !37, !noundef !38
  %510 = trunc nuw i8 %509 to i1
  br i1 %510, label %.thread1000, label %.thread1103

.thread1103:                                      ; preds = %507
  %511 = getelementptr inbounds i8, ptr %69, i64 330
  %512 = load i8, ptr %511, align 2, !tbaa !131, !range !37, !noundef !38
  %513 = trunc nuw i8 %512 to i1
  %514 = select i1 %513, i1 true, i1 %498
  %spec.select10291105 = xor i1 %514, true
  br label %.thread1000

515:                                              ; preds = %495
  %516 = getelementptr inbounds i8, ptr %69, i64 328
  %517 = load i8, ptr %516, align 8, !tbaa !87, !range !37, !noundef !38
  %518 = trunc nuw i8 %517 to i1
  br i1 %518, label %519, label %.thread1002

519:                                              ; preds = %515
  %520 = getelementptr inbounds i8, ptr %69, i64 331
  %521 = load i8, ptr %520, align 1, !tbaa !132, !range !37, !noundef !38
  %522 = trunc nuw i8 %521 to i1
  br i1 %522, label %.thread1002, label %523

523:                                              ; preds = %519
  %524 = getelementptr inbounds i8, ptr %69, i64 330
  %525 = load i8, ptr %524, align 2, !tbaa !131, !range !37, !noundef !38
  %526 = trunc nuw i8 %525 to i1
  %527 = select i1 %526, i1 true, i1 %498
  %spec.select1029 = xor i1 %527, true
  br label %.thread1002

.thread1000:                                      ; preds = %.thread1103, %503, %507
  %528 = phi i1 [ false, %507 ], [ false, %503 ], [ %spec.select10291105, %.thread1103 ]
  %529 = trunc nuw i8 %505 to i1
  %530 = select i1 %529, i1 %498, i1 false
  br i1 %530, label %531, label %543

531:                                              ; preds = %.thread1000
  %532 = getelementptr inbounds i8, ptr %69, i64 328
  %533 = load i8, ptr %532, align 8, !tbaa !101, !range !37, !noundef !38
  %534 = trunc nuw i8 %533 to i1
  br i1 %534, label %543, label %535

535:                                              ; preds = %531
  %536 = getelementptr inbounds i8, ptr %69, i64 330
  %537 = load i8, ptr %536, align 2, !tbaa !131, !range !37, !noundef !38
  %538 = trunc nuw i8 %537 to i1
  %539 = xor i1 %538, true
  br label %543

.thread1002:                                      ; preds = %523, %515, %519
  %540 = phi i1 [ %spec.select1029, %523 ], [ false, %519 ], [ false, %515 ]
  %541 = getelementptr inbounds i8, ptr %69, i64 330
  %542 = getelementptr inbounds i8, ptr %69, i64 328
  br label %._crit_edge1060

543:                                              ; preds = %.thread1000, %535, %531
  %.ph1004 = phi i1 [ %539, %535 ], [ false, %.thread1000 ], [ false, %531 ]
  %544 = getelementptr inbounds i8, ptr %69, i64 330
  %545 = getelementptr inbounds i8, ptr %69, i64 328
  %.in1007 = load i8, ptr %544, align 2, !tbaa !87, !range !37, !noundef !38
  %546 = load i8, ptr %545, align 8, !tbaa !101, !range !37
  br i1 %529, label %547, label %._crit_edge1060

547:                                              ; preds = %543
  %548 = trunc nuw i8 %546 to i1
  br i1 %548, label %._crit_edge1060, label %549

549:                                              ; preds = %547
  %550 = trunc nuw i8 %.in1007 to i1
  %551 = xor i1 %550, true
  br label %._crit_edge1060

._crit_edge1060:                                  ; preds = %543, %.thread1002, %549, %547
  %552 = phi i8 [ %546, %547 ], [ %517, %.thread1002 ], [ %546, %549 ], [ %546, %543 ]
  %.in1038 = phi i8 [ %.in1007, %547 ], [ %517, %.thread1002 ], [ %.in1007, %549 ], [ %.in1007, %543 ]
  %553 = phi ptr [ %545, %547 ], [ %542, %.thread1002 ], [ %545, %549 ], [ %545, %543 ]
  %554 = phi ptr [ %544, %547 ], [ %541, %.thread1002 ], [ %544, %549 ], [ %544, %543 ]
  %555 = phi i1 [ %.ph1004, %547 ], [ false, %.thread1002 ], [ %.ph1004, %549 ], [ %.ph1004, %543 ]
  %556 = phi i1 [ %528, %547 ], [ %540, %.thread1002 ], [ %528, %549 ], [ %528, %543 ]
  %557 = phi i1 [ false, %547 ], [ false, %.thread1002 ], [ %551, %549 ], [ false, %543 ]
  %558 = trunc nuw i8 %.in1038 to i1
  %559 = trunc nuw i8 %552 to i1
  br i1 %559, label %560, label %569

560:                                              ; preds = %._crit_edge1060
  br i1 %498, label %.thread1012, label %561

561:                                              ; preds = %560
  %562 = load i8, ptr %554, align 2, !tbaa !131, !range !37, !noundef !38
  %563 = trunc nuw i8 %562 to i1
  br i1 %563, label %.thread1012, label %564

564:                                              ; preds = %561
  %565 = getelementptr inbounds i8, ptr %69, i64 331
  %566 = load i8, ptr %565, align 1, !tbaa !132, !range !37, !noundef !38
  %567 = trunc nuw i8 %566 to i1
  %568 = xor i1 %567, true
  br label %.thread1012

569:                                              ; preds = %._crit_edge1060
  br i1 %498, label %570, label %.thread1012

570:                                              ; preds = %569
  %571 = load i8, ptr %554, align 2, !tbaa !131, !range !37, !noundef !38
  %572 = trunc nuw i8 %571 to i1
  br i1 %572, label %.thread1012, label %573

573:                                              ; preds = %570
  %574 = getelementptr inbounds i8, ptr %69, i64 331
  %575 = load i8, ptr %574, align 1, !tbaa !132, !range !37, !noundef !38
  %576 = trunc nuw i8 %575 to i1
  %577 = xor i1 %576, true
  br label %.thread1012

.thread1012:                                      ; preds = %561, %564, %560, %573, %570, %569
  %578 = phi i1 [ false, %570 ], [ false, %569 ], [ false, %573 ], [ false, %560 ], [ %568, %564 ], [ false, %561 ]
  %579 = phi i1 [ false, %570 ], [ false, %569 ], [ %577, %573 ], [ false, %560 ], [ false, %564 ], [ false, %561 ]
  br i1 %556, label %580, label %582

580:                                              ; preds = %.thread1012
  %581 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %581, label %587, label %582

582:                                              ; preds = %580, %.thread1012
  br i1 %579, label %583, label %590

583:                                              ; preds = %582
  %584 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %585 = and i1 %.not851, %584
  %586 = xor i1 %585, true
  %brmerge914 = or i1 %71, %586
  %.not920 = xor i1 %60, true
  %brmerge921 = or i1 %brmerge914, %.not920
  %not.brmerge914 = xor i1 %brmerge914, true
  br i1 %brmerge921, label %590, label %588

587:                                              ; preds = %580
  %.not851.not915 = xor i1 %.not851, true
  %brmerge916 = or i1 %71, %.not851.not915
  %.not917 = xor i1 %60, true
  %brmerge918 = or i1 %brmerge916, %.not917
  %not.brmerge916 = xor i1 %brmerge916, true
  br i1 %brmerge918, label %.thread1013, label %588

588:                                              ; preds = %583, %587
  %589 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br label %590

590:                                              ; preds = %583, %588, %582
  %591 = phi i1 [ %not.brmerge914, %583 ], [ false, %582 ], [ %589, %588 ]
  br i1 %556, label %.thread1013, label %594

.thread1013:                                      ; preds = %587, %590
  %592 = phi i1 [ %591, %590 ], [ %not.brmerge916, %587 ]
  %593 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %593, label %598, label %594

594:                                              ; preds = %.thread1013, %590
  %595 = phi i1 [ %592, %.thread1013 ], [ %591, %590 ]
  br i1 %578, label %596, label %603

596:                                              ; preds = %594
  %597 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %brmerge925.demorgan = and i1 %.not851, %597
  %brmerge927.not = and i1 %60, %brmerge925.demorgan
  br i1 %brmerge927.not, label %600, label %603

598:                                              ; preds = %.thread1013
  %599 = and i32 %5, 1081344
  %brmerge931.not = icmp eq i32 %599, 1048576
  br i1 %brmerge931.not, label %600, label %.thread1014

600:                                              ; preds = %598, %596
  %601 = phi i1 [ %592, %598 ], [ %595, %596 ]
  %602 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br label %603

603:                                              ; preds = %596, %600, %594
  %604 = phi i1 [ %595, %596 ], [ %595, %594 ], [ %601, %600 ]
  %605 = phi i1 [ %brmerge925.demorgan, %596 ], [ false, %594 ], [ %602, %600 ]
  br i1 %556, label %.thread1014, label %609

.thread1014:                                      ; preds = %598, %603
  %606 = phi i1 [ %605, %603 ], [ %.not851, %598 ]
  %607 = phi i1 [ %604, %603 ], [ %592, %598 ]
  %608 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %608, label %614, label %609

609:                                              ; preds = %.thread1014, %603
  %610 = phi i1 [ %606, %.thread1014 ], [ %605, %603 ]
  %611 = phi i1 [ %607, %.thread1014 ], [ %604, %603 ]
  br i1 %579, label %612, label %618

612:                                              ; preds = %609
  %613 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %613, label %614, label %618

614:                                              ; preds = %612, %.thread1014
  %615 = phi i1 [ %610, %612 ], [ %606, %.thread1014 ]
  %616 = phi i1 [ %611, %612 ], [ %607, %.thread1014 ]
  %617 = xor i1 %71, true
  br label %618

618:                                              ; preds = %614, %612, %609
  %619 = phi i1 [ %610, %612 ], [ %610, %609 ], [ %615, %614 ]
  %620 = phi i1 [ %611, %612 ], [ %611, %609 ], [ %616, %614 ]
  %621 = phi i1 [ false, %612 ], [ false, %609 ], [ %617, %614 ]
  br i1 %556, label %622, label %626

622:                                              ; preds = %618
  %623 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  %not.1039 = xor i1 %71, true
  %624 = and i1 %623, %not.1039
  %spec.select979 = and i1 %74, %624
  %625 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %625, label %630, label %626

626:                                              ; preds = %618, %622
  %627 = phi i1 [ %spec.select979, %622 ], [ false, %618 ]
  br i1 %555, label %628, label %632

628:                                              ; preds = %626
  %629 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 21, i1 noundef zeroext true)
  br i1 %629, label %._crit_edge1074, label %632

._crit_edge1074:                                  ; preds = %628
  %.pre1075 = xor i1 %71, true
  br label %630

630:                                              ; preds = %._crit_edge1074, %622
  %not.1040.pre-phi = phi i1 [ %.pre1075, %._crit_edge1074 ], [ %not.1039, %622 ]
  %631 = phi i1 [ %627, %._crit_edge1074 ], [ %spec.select979, %622 ]
  %spec.select934 = and i1 %74, %not.1040.pre-phi
  br label %632

632:                                              ; preds = %630, %628, %626
  %633 = phi i1 [ %627, %628 ], [ %627, %626 ], [ %631, %630 ]
  %634 = phi i1 [ false, %628 ], [ false, %626 ], [ %spec.select934, %630 ]
  %635 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %635, label %636, label %639

636:                                              ; preds = %632
  %637 = select i1 %558, i32 2097164, i32 2097152
  %spec.select935 = select i1 %557, i32 2097156, i32 %637
  %638 = or disjoint i32 %spec.select935, %499
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %638)
  br label %815

639:                                              ; preds = %632
  %640 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %640, label %641, label %644

641:                                              ; preds = %639
  %642 = select i1 %558, i32 2097165, i32 2097153
  %spec.select936 = select i1 %557, i32 2097157, i32 %642
  %643 = or disjoint i32 %spec.select936, %499
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %643)
  br label %815

644:                                              ; preds = %639
  %645 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  %brmerge939.not = and i1 %60, %645
  br i1 %brmerge939.not, label %646, label %659

646:                                              ; preds = %644
  %647 = load i8, ptr %553, align 8, !tbaa !101, !range !37, !noundef !38
  %648 = trunc nuw i8 %647 to i1
  br i1 %648, label %649, label %656

649:                                              ; preds = %646
  %650 = getelementptr inbounds i8, ptr %.0776, i64 88
  %651 = load float, ptr %650, align 4, !tbaa !139
  %652 = getelementptr inbounds i8, ptr %69, i64 6416
  %653 = load float, ptr %652, align 8, !tbaa !40
  %654 = fsub float %651, %653
  %655 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %654, float noundef 0.000000e+00)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.0776, float noundef %655)
  br label %815

656:                                              ; preds = %646
  %657 = select i1 %557, i32 2097158, i32 2097154
  %658 = or disjoint i32 %657, %499
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %658)
  br label %815

659:                                              ; preds = %644
  %660 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  %brmerge942.demorgan = and i1 %60, %660
  br i1 %brmerge942.demorgan, label %661, label %675

661:                                              ; preds = %659
  %662 = load i8, ptr %553, align 8, !tbaa !101, !range !37, !noundef !38
  %663 = trunc nuw i8 %662 to i1
  br i1 %663, label %664, label %672

664:                                              ; preds = %661
  %665 = getelementptr inbounds i8, ptr %.0776, i64 88
  %666 = load float, ptr %665, align 4, !tbaa !139
  %667 = getelementptr inbounds i8, ptr %69, i64 6416
  %668 = load float, ptr %667, align 8, !tbaa !40
  %669 = fadd float %666, %668
  %670 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %671 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %669, float noundef %670)
  call void @_ZN5ImGui10SetScrollYEP11ImGuiWindowf(ptr noundef %.0776, float noundef %671)
  br label %815

672:                                              ; preds = %661
  %673 = select i1 %557, i32 2097159, i32 2097155
  %674 = or disjoint i32 %673, %499
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %674)
  br label %815

675:                                              ; preds = %659
  %676 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %676, label %677, label %681

677:                                              ; preds = %675
  %678 = load i8, ptr %553, align 8, !tbaa !101, !range !37, !noundef !38
  %679 = trunc nuw i8 %678 to i1
  %.v866 = select i1 %679, i32 2097158, i32 2097156
  %680 = or disjoint i32 %.v866, %499
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %680)
  br label %815

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

683:                                              ; preds = %681
  %684 = load i8, ptr %553, align 8, !tbaa !101, !range !37, !noundef !38
  %685 = trunc nuw i8 %684 to i1
  %.v = select i1 %685, i32 2097159, i32 2097157
  %686 = or disjoint i32 %.v, %499
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %686)
  br label %815

687:                                              ; preds = %681
  %688 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %.not943 = xor i1 %688, true
  %brmerge944 = or i1 %71, %.not943
  br i1 %brmerge944, label %691, label %689

689:                                              ; preds = %687
  %690 = or disjoint i32 %499, 2097160
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %690)
  br label %815

691:                                              ; preds = %687
  %692 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  %.not945 = xor i1 %692, true
  %brmerge946 = or i1 %71, %.not945
  br i1 %brmerge946, label %709, label %693

693:                                              ; preds = %691
  %694 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br i1 %694, label %707, label %695

695:                                              ; preds = %693
  br i1 %558, label %.sink.split, label %696

696:                                              ; preds = %695
  br i1 %502, label %697, label %707

697:                                              ; preds = %696
  %698 = getelementptr inbounds i8, ptr %69, i64 331
  %699 = load i8, ptr %698, align 1, !tbaa !132, !range !37, !noundef !38
  %700 = trunc nuw i8 %699 to i1
  br i1 %700, label %701, label %707

701:                                              ; preds = %697
  %702 = load i8, ptr %554, align 2, !tbaa !131, !range !37, !noundef !38
  %703 = trunc nuw i8 %702 to i1
  br i1 %703, label %707, label %704

704:                                              ; preds = %701
  %705 = load i8, ptr %553, align 8, !tbaa !101, !range !37, !noundef !38
  %706 = trunc nuw i8 %705 to i1
  br i1 %706, label %707, label %.sink.split

.sink.split:                                      ; preds = %704, %695
  %.sink = phi i32 [ 6291468, %695 ], [ 6291460, %704 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %.sink)
  br label %707

707:                                              ; preds = %.sink.split, %704, %701, %697, %696, %693
  %708 = or disjoint i32 %499, 2097161
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %708)
  br label %815

709:                                              ; preds = %691
  %710 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %710, label %713, label %711

711:                                              ; preds = %709
  %712 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %712, label %713, label %724

713:                                              ; preds = %711, %709
  br i1 %60, label %714, label %815

714:                                              ; preds = %713
  %715 = and i32 %5, 2048
  %.not865 = icmp eq i32 %715, 0
  %716 = load i8, ptr %553, align 8, !tbaa !101, !range !37, !noundef !38
  %717 = trunc nuw i8 %716 to i1
  br i1 %.not865, label %.critedge948, label %718

718:                                              ; preds = %714
  %.not1033 = xor i1 %717, true
  %brmerge1034 = or i1 %71, %.not1033
  %.mux = zext i1 %.not1033 to i8
  %.mux1035 = select i1 %717, i8 %.0779994, i8 1
  br i1 %brmerge1034, label %815, label %719

.critedge948:                                     ; preds = %714
  %brmerge949 = or i1 %71, %717
  %.mux951 = select i1 %717, i8 1, i8 %.0779994
  br i1 %brmerge949, label %815, label %719

719:                                              ; preds = %718, %.critedge948
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #14
  store i32 10, ptr %21, align 4, !tbaa !102
  %720 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %21, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %720, label %721, label %723

721:                                              ; preds = %719
  %722 = load i32, ptr %21, align 4, !tbaa !102
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %722)
  br label %723

723:                                              ; preds = %721, %719
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #14
  br label %815

724:                                              ; preds = %711
  %725 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %725, label %815, label %726

726:                                              ; preds = %724
  %brmerge952 = or i1 %633, %634
  br i1 %brmerge952, label %727, label %728

727:                                              ; preds = %726
  %.mux953 = select i1 %633, i32 2097162, i32 2097163
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090, i32 noundef %.mux953)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br label %815

728:                                              ; preds = %726
  br i1 %556, label %729, label %733

729:                                              ; preds = %728
  %730 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %730, label %731, label %733

731:                                              ; preds = %729
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  %732 = getelementptr inbounds i8, ptr %.17781090, i64 3700
  store i8 1, ptr %732, align 4, !tbaa !130
  br label %815

733:                                              ; preds = %729, %728
  %brmerge954 = or i1 %619, %620
  br i1 %brmerge954, label %734, label %781

734:                                              ; preds = %733
  %735 = getelementptr inbounds i8, ptr %69, i64 264
  %736 = load ptr, ptr %735, align 8, !tbaa !140
  %.not864 = icmp eq ptr %736, null
  br i1 %.not864, label %773, label %737

737:                                              ; preds = %734
  %738 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br i1 %738, label %739, label %745

739:                                              ; preds = %737
  %740 = getelementptr inbounds i8, ptr %.17781090, i64 80
  %741 = load i32, ptr %740, align 4, !tbaa !141
  %742 = getelementptr inbounds i8, ptr %.17781090, i64 84
  %743 = load i32, ptr %742, align 4, !tbaa !142
  %744 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %741, i32 noundef %743)
  br label %745

745:                                              ; preds = %737, %739
  %746 = phi i32 [ %744, %739 ], [ 0, %737 ]
  %747 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br i1 %747, label %748, label %754

748:                                              ; preds = %745
  %749 = getelementptr inbounds i8, ptr %.17781090, i64 80
  %750 = load i32, ptr %749, align 4, !tbaa !141
  %751 = getelementptr inbounds i8, ptr %.17781090, i64 84
  %752 = load i32, ptr %751, align 4, !tbaa !142
  %753 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %750, i32 noundef %752)
  br label %757

754:                                              ; preds = %745
  %755 = getelementptr inbounds i8, ptr %.17781090, i64 4
  %756 = load i32, ptr %755, align 4, !tbaa !96
  br label %757

757:                                              ; preds = %754, %748
  %758 = phi i32 [ %753, %748 ], [ %756, %754 ]
  %759 = getelementptr inbounds i8, ptr %.17781090, i64 24
  %760 = load ptr, ptr %759, align 8, !tbaa !95
  %761 = sext i32 %746 to i64
  %762 = getelementptr inbounds i16, ptr %760, i64 %761
  %763 = sext i32 %758 to i64
  %764 = getelementptr inbounds i16, ptr %760, i64 %763
  %765 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %762, ptr noundef %764)
  %766 = add nsw i32 %765, 1
  %767 = sext i32 %766 to i64
  %768 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %767)
  %769 = load ptr, ptr %759, align 8, !tbaa !95
  %770 = getelementptr inbounds i16, ptr %769, i64 %761
  %771 = getelementptr inbounds i16, ptr %769, i64 %763
  %772 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %768, i32 noundef %766, ptr noundef %770, ptr noundef %771)
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %768)
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %768)
  br label %773

773:                                              ; preds = %757, %734
  br i1 %620, label %774, label %815

774:                                              ; preds = %773
  %775 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br i1 %775, label %777, label %776

776:                                              ; preds = %774
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br label %777

777:                                              ; preds = %776, %774
  %778 = getelementptr inbounds i8, ptr %.17781090, i64 3700
  store i8 1, ptr %778, align 4, !tbaa !130
  %779 = getelementptr inbounds i8, ptr %.17781090, i64 76
  %780 = call noundef i32 @_ZN5ImStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %.17781090, ptr noundef nonnull %779)
  br label %815

781:                                              ; preds = %733
  br i1 %621, label %782, label %815

782:                                              ; preds = %781
  %783 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not862 = icmp eq ptr %783, null
  br i1 %.not862, label %815, label %784

784:                                              ; preds = %782
  %785 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %783) #15
  %786 = shl i64 %785, 32
  %sext = add i64 %786, 4294967296
  %787 = ashr exact i64 %sext, 31
  %788 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %787)
  %789 = load i8, ptr %783, align 1, !tbaa !106
  %.not8631048 = icmp eq i8 %789, 0
  br i1 %.not8631048, label %.loopexit1042.thread, label %.lr.ph1051

.loopexit1042.thread:                             ; preds = %784
  store i16 0, ptr %788, align 2, !tbaa !134
  br label %814

.lr.ph1051:                                       ; preds = %784, %805
  %.08061050 = phi i32 [ %.1807, %805 ], [ 0, %784 ]
  %.08091049 = phi ptr [ %792, %805 ], [ %783, %784 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #14
  %790 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %22, ptr noundef nonnull %.08091049, ptr noundef null)
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds i8, ptr %.08091049, i64 %791
  %793 = load i32, ptr %22, align 4, !tbaa !102
  %794 = icmp eq i32 %793, 0
  br i1 %794, label %.thread1016, label %795

.thread1016:                                      ; preds = %.lr.ph1051
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #14
  br label %.loopexit1042

795:                                              ; preds = %.lr.ph1051
  %796 = icmp ugt i32 %793, 65535
  br i1 %796, label %805, label %797, !llvm.loop !143

797:                                              ; preds = %795
  %798 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %22, i32 noundef %5, ptr noundef %6, ptr noundef %7)
  br i1 %798, label %799, label %805, !llvm.loop !143

799:                                              ; preds = %797
  %800 = load i32, ptr %22, align 4, !tbaa !102
  %801 = trunc i32 %800 to i16
  %802 = add nsw i32 %.08061050, 1
  %803 = sext i32 %.08061050 to i64
  %804 = getelementptr inbounds i16, ptr %788, i64 %803
  store i16 %801, ptr %804, align 2, !tbaa !134
  br label %805

805:                                              ; preds = %795, %797, %799
  %.1807 = phi i32 [ %802, %799 ], [ %.08061050, %797 ], [ %.08061050, %795 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #14
  %806 = load i8, ptr %792, align 1, !tbaa !106
  %.not863 = icmp eq i8 %806, 0
  br i1 %.not863, label %.loopexit1042, label %.lr.ph1051

.loopexit1042:                                    ; preds = %805, %.thread1016
  %.08061046 = phi i32 [ %.08061050, %.thread1016 ], [ %.1807, %805 ]
  %807 = sext i32 %.08061046 to i64
  %808 = getelementptr inbounds i16, ptr %788, i64 %807
  store i16 0, ptr %808, align 2, !tbaa !134
  %809 = icmp sgt i32 %.08061046, 0
  br i1 %809, label %810, label %814

810:                                              ; preds = %.loopexit1042
  %811 = getelementptr inbounds i8, ptr %.17781090, i64 76
  %812 = call noundef i32 @_ZN5ImStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %.17781090, ptr noundef nonnull %811, ptr noundef nonnull %788, i32 noundef %.08061046)
  %813 = getelementptr inbounds i8, ptr %.17781090, i64 3700
  store i8 1, ptr %813, align 4, !tbaa !130
  br label %814

814:                                              ; preds = %.loopexit1042.thread, %810, %.loopexit1042
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %788)
  br label %815

815:                                              ; preds = %718, %782, %814, %724, %723, %713, %.critedge948, %641, %672, %664, %683, %707, %731, %781, %773, %777, %727, %689, %677, %649, %656, %636
  %.0804 = phi i1 [ false, %636 ], [ false, %641 ], [ false, %649 ], [ false, %656 ], [ false, %664 ], [ false, %672 ], [ false, %677 ], [ false, %683 ], [ false, %727 ], [ false, %731 ], [ false, %777 ], [ false, %773 ], [ false, %781 ], [ false, %707 ], [ false, %689 ], [ false, %.critedge948 ], [ false, %713 ], [ false, %718 ], [ false, %723 ], [ true, %724 ], [ false, %814 ], [ false, %782 ]
  %.1791 = phi i8 [ 0, %636 ], [ 0, %641 ], [ 0, %649 ], [ 0, %656 ], [ 0, %664 ], [ 0, %672 ], [ 0, %677 ], [ 0, %683 ], [ 0, %727 ], [ 0, %731 ], [ 0, %777 ], [ 0, %773 ], [ 0, %781 ], [ 0, %707 ], [ 0, %689 ], [ %716, %.critedge948 ], [ 1, %713 ], [ %.mux, %718 ], [ 0, %723 ], [ 0, %724 ], [ 0, %814 ], [ 0, %782 ]
  %.2781 = phi i8 [ %.0779994, %636 ], [ %.0779994, %641 ], [ %.0779994, %649 ], [ %.0779994, %656 ], [ %.0779994, %664 ], [ %.0779994, %672 ], [ %.0779994, %677 ], [ %.0779994, %683 ], [ %.0779994, %727 ], [ %.0779994, %731 ], [ %.0779994, %777 ], [ %.0779994, %773 ], [ %.0779994, %781 ], [ %.0779994, %707 ], [ %.0779994, %689 ], [ %.mux951, %.critedge948 ], [ 1, %713 ], [ %.mux1035, %718 ], [ %.0779994, %723 ], [ 1, %724 ], [ %.0779994, %814 ], [ %.0779994, %782 ]
  %816 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  %817 = select i1 %816, i1 %265, i1 %.0786.in
  %.pre1062 = load i32, ptr %159, align 8, !tbaa !88
  br label %818

818:                                              ; preds = %815, %484
  %819 = phi i32 [ %.pre1062, %815 ], [ %485, %484 ]
  %.1805 = phi i1 [ %.0804, %815 ], [ false, %484 ]
  %.2792 = phi i8 [ %.1791, %815 ], [ 0, %484 ]
  %.1787.in = phi i1 [ %817, %815 ], [ %.0786.in, %484 ]
  %.3 = phi i8 [ %.2781, %815 ], [ %.0779994, %484 ]
  %820 = icmp eq i32 %819, %81
  br i1 %820, label %.thread1108, label %994

.thread1108:                                      ; preds = %491, %487, %818
  %.31122 = phi i8 [ %.3, %818 ], [ %.0779994, %487 ], [ %.0779994, %491 ]
  %.1787.in1120 = phi i1 [ %.1787.in, %818 ], [ %.0786.in, %487 ], [ %.0786.in, %491 ]
  %.27921116 = phi i8 [ %.2792, %818 ], [ 0, %487 ], [ 0, %491 ]
  %.18051115 = phi i1 [ %.1805, %818 ], [ false, %487 ], [ false, %491 ]
  br i1 %266, label %822, label %821

821:                                              ; preds = %.thread1108
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 3787, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

822:                                              ; preds = %.thread1108
  %.1805.not = xor i1 %.18051115, true
  %brmerge955 = or i1 %71, %.1805.not
  br i1 %brmerge955, label %831, label %823

823:                                              ; preds = %822
  %824 = getelementptr inbounds i8, ptr %.17781090, i64 56
  %825 = load ptr, ptr %824, align 8, !tbaa !93
  %826 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2, ptr noundef nonnull dereferenceable(1) %825) #15
  %.not867 = icmp eq i32 %826, 0
  br i1 %.not867, label %831, label %827

827:                                              ; preds = %823
  %828 = getelementptr inbounds i8, ptr %.17781090, i64 48
  %829 = load i32, ptr %828, align 8, !tbaa !144
  %830 = add nsw i32 %829, -1
  br label %831

831:                                              ; preds = %822, %823, %827
  %.0812 = phi i32 [ %830, %827 ], [ 0, %823 ], [ 0, %822 ]
  %.0810 = phi ptr [ %825, %827 ], [ null, %823 ], [ null, %822 ]
  br i1 %.18051115, label %832, label %.critedge957

832:                                              ; preds = %831
  %833 = trunc nuw i8 %.27921116 to i1
  %834 = and i32 %5, 32
  %835 = icmp ne i32 %834, 0
  %836 = and i1 %835, %833
  br i1 %836, label %.critedge957, label %966

.critedge957:                                     ; preds = %831, %832
  br i1 %71, label %850, label %837

837:                                              ; preds = %.critedge957
  %838 = getelementptr inbounds i8, ptr %.17781090, i64 64
  store i8 1, ptr %838, align 8, !tbaa !94
  %839 = getelementptr inbounds i8, ptr %.17781090, i64 32
  %840 = getelementptr inbounds i8, ptr %.17781090, i64 16
  %841 = load i32, ptr %840, align 8, !tbaa !104
  %842 = shl nsw i32 %841, 2
  %843 = or disjoint i32 %842, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %839, i32 noundef %843)
  %844 = getelementptr inbounds i8, ptr %.17781090, i64 40
  %845 = load ptr, ptr %844, align 8, !tbaa !105
  %846 = load i32, ptr %839, align 8, !tbaa !145
  %847 = getelementptr inbounds i8, ptr %.17781090, i64 24
  %848 = load ptr, ptr %847, align 8, !tbaa !95
  %849 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %845, i32 noundef %846, ptr noundef %848, ptr noundef null)
  br label %850

850:                                              ; preds = %837, %.critedge957
  %851 = and i32 %5, 448
  %.not868 = icmp eq i32 %851, 0
  br i1 %.not868, label %958, label %852

852:                                              ; preds = %850
  br i1 %76, label %854, label %853

853:                                              ; preds = %852
  call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 3819, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

854:                                              ; preds = %852
  br i1 %.not848, label %857, label %855

855:                                              ; preds = %854
  %856 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %856, label %.thread1020, label %857

857:                                              ; preds = %855, %854
  br i1 %.not846.not, label %862, label %858

858:                                              ; preds = %857
  %859 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %859, label %.thread1020, label %860

860:                                              ; preds = %858
  %861 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %861, label %.thread1020, label %862

862:                                              ; preds = %860, %857
  %863 = and i32 %5, 256
  %.not869 = icmp eq i32 %863, 0
  br i1 %.not869, label %958, label %.thread1020

.thread1020:                                      ; preds = %860, %858, %855, %862
  %.08151025 = phi i32 [ 256, %862 ], [ 128, %860 ], [ 128, %858 ], [ 64, %855 ]
  %.08161024 = phi i32 [ 22, %862 ], [ 4, %860 ], [ 3, %858 ], [ 0, %855 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %23) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %23)
  %864 = getelementptr inbounds i8, ptr %23, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %864, i8 0, i64 40, i1 false)
  store i32 %.08151025, ptr %23, align 8, !tbaa !146
  %865 = getelementptr inbounds i8, ptr %23, i64 4
  store i32 %5, ptr %865, align 4, !tbaa !148
  %866 = getelementptr inbounds i8, ptr %23, i64 8
  store ptr %7, ptr %866, align 8, !tbaa !149
  %867 = getelementptr inbounds i8, ptr %23, i64 20
  store i32 %.08161024, ptr %867, align 4, !tbaa !150
  %868 = getelementptr inbounds i8, ptr %.17781090, i64 40
  %869 = load ptr, ptr %868, align 8, !tbaa !105
  %870 = getelementptr inbounds i8, ptr %23, i64 24
  store ptr %869, ptr %870, align 8, !tbaa !151
  %871 = getelementptr inbounds i8, ptr %.17781090, i64 8
  %872 = load i32, ptr %871, align 8, !tbaa !97
  %873 = getelementptr inbounds i8, ptr %23, i64 32
  store i32 %872, ptr %873, align 8, !tbaa !152
  %874 = getelementptr inbounds i8, ptr %.17781090, i64 68
  %875 = load i32, ptr %874, align 4, !tbaa !115
  %876 = getelementptr inbounds i8, ptr %23, i64 36
  store i32 %875, ptr %876, align 4, !tbaa !153
  %877 = getelementptr inbounds i8, ptr %23, i64 40
  %878 = getelementptr inbounds i8, ptr %.17781090, i64 16
  %879 = getelementptr inbounds i8, ptr %.17781090, i64 24
  %880 = load ptr, ptr %879, align 8, !tbaa !95
  %881 = getelementptr inbounds i8, ptr %.17781090, i64 76
  %882 = load i32, ptr %881, align 4, !tbaa !154
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds i16, ptr %880, i64 %883
  %885 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %880, ptr noundef %884)
  %886 = getelementptr inbounds i8, ptr %23, i64 44
  store i32 %885, ptr %886, align 4, !tbaa !155
  %887 = getelementptr inbounds i8, ptr %.17781090, i64 80
  %888 = load i32, ptr %887, align 4, !tbaa !141
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds i16, ptr %880, i64 %889
  %891 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %880, ptr noundef %890)
  %892 = getelementptr inbounds i8, ptr %23, i64 48
  store i32 %891, ptr %892, align 8, !tbaa !156
  %893 = getelementptr inbounds i8, ptr %.17781090, i64 84
  %894 = load i32, ptr %893, align 4, !tbaa !142
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds i16, ptr %880, i64 %895
  %897 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %880, ptr noundef %896)
  %898 = getelementptr inbounds i8, ptr %23, i64 52
  store i32 %897, ptr %898, align 4, !tbaa !157
  %899 = call noundef i32 %6(ptr noundef nonnull %23)
  %900 = load ptr, ptr %870, align 8, !tbaa !151
  %901 = load ptr, ptr %868, align 8, !tbaa !105
  %902 = icmp eq ptr %900, %901
  br i1 %902, label %904, label %903

903:                                              ; preds = %.thread1020
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.1, i32 noundef 3866, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

904:                                              ; preds = %.thread1020
  %905 = load i32, ptr %876, align 4, !tbaa !153
  %906 = load i32, ptr %874, align 4, !tbaa !115
  %907 = icmp eq i32 %905, %906
  br i1 %907, label %909, label %908

908:                                              ; preds = %904
  call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.1, i32 noundef 3867, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

909:                                              ; preds = %904
  %910 = load i32, ptr %865, align 4, !tbaa !148
  %911 = icmp eq i32 %910, %5
  br i1 %911, label %913, label %912

912:                                              ; preds = %909
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.1, i32 noundef 3868, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

913:                                              ; preds = %909
  %914 = load i32, ptr %886, align 4, !tbaa !155
  %.not871 = icmp eq i32 %914, %885
  br i1 %.not871, label %920, label %915

915:                                              ; preds = %913
  %916 = sext i32 %914 to i64
  %917 = getelementptr inbounds i8, ptr %900, i64 %916
  %918 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %900, ptr noundef %917)
  store i32 %918, ptr %881, align 4, !tbaa !154
  %919 = getelementptr inbounds i8, ptr %.17781090, i64 3700
  store i8 1, ptr %919, align 4, !tbaa !130
  br label %920

920:                                              ; preds = %915, %913
  %921 = load i32, ptr %892, align 8, !tbaa !156
  %.not872 = icmp eq i32 %921, %891
  br i1 %.not872, label %927, label %922

922:                                              ; preds = %920
  %923 = load ptr, ptr %870, align 8, !tbaa !151
  %924 = sext i32 %921 to i64
  %925 = getelementptr inbounds i8, ptr %923, i64 %924
  %926 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %923, ptr noundef %925)
  store i32 %926, ptr %887, align 4, !tbaa !141
  br label %927

927:                                              ; preds = %922, %920
  %928 = load i32, ptr %898, align 4, !tbaa !157
  %.not873 = icmp eq i32 %928, %897
  br i1 %.not873, label %934, label %929

929:                                              ; preds = %927
  %930 = load ptr, ptr %870, align 8, !tbaa !151
  %931 = sext i32 %928 to i64
  %932 = getelementptr inbounds i8, ptr %930, i64 %931
  %933 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %930, ptr noundef %932)
  store i32 %933, ptr %893, align 4, !tbaa !142
  br label %934

934:                                              ; preds = %929, %927
  %935 = load i8, ptr %877, align 8, !tbaa !158, !range !37, !noundef !38
  %936 = trunc nuw i8 %935 to i1
  br i1 %936, label %937, label %957

937:                                              ; preds = %934
  %938 = load i32, ptr %873, align 8, !tbaa !152
  %939 = load ptr, ptr %870, align 8, !tbaa !151
  %940 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %939) #15
  %941 = trunc i64 %940 to i32
  %942 = icmp eq i32 %938, %941
  br i1 %942, label %944, label %943

943:                                              ; preds = %937
  call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.1, i32 noundef 3874, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

944:                                              ; preds = %937
  %945 = icmp sle i32 %938, %.0801
  %brmerge963 = or i1 %.not852, %945
  br i1 %brmerge963, label %950, label %946

946:                                              ; preds = %944
  %947 = load i32, ptr %878, align 8, !tbaa !104
  %948 = sub i32 %938, %.0801
  %949 = add nsw i32 %948, %947
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %878, i32 noundef %949)
  %.pre1063 = load ptr, ptr %870, align 8, !tbaa !151
  br label %950

950:                                              ; preds = %944, %946
  %951 = phi ptr [ %939, %944 ], [ %.pre1063, %946 ]
  %952 = load ptr, ptr %879, align 8, !tbaa !95
  %953 = load i32, ptr %878, align 8, !tbaa !104
  %954 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %952, i32 noundef %953, ptr noundef %951, ptr noundef null, ptr noundef null)
  %955 = getelementptr inbounds i8, ptr %.17781090, i64 4
  store i32 %954, ptr %955, align 4, !tbaa !96
  %956 = load i32, ptr %873, align 8, !tbaa !152
  store i32 %956, ptr %871, align 8, !tbaa !97
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3728) %.17781090)
  br label %957

957:                                              ; preds = %950, %934
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #14
  br label %958

958:                                              ; preds = %862, %957, %850
  br i1 %71, label %966, label %959

959:                                              ; preds = %958
  %960 = getelementptr inbounds i8, ptr %.17781090, i64 40
  %961 = load ptr, ptr %960, align 8, !tbaa !105
  %962 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %961, ptr noundef nonnull dereferenceable(1) %2) #15
  %.not874 = icmp eq i32 %962, 0
  br i1 %.not874, label %966, label %963

963:                                              ; preds = %959
  %964 = getelementptr inbounds i8, ptr %.17781090, i64 8
  %965 = load i32, ptr %964, align 8, !tbaa !97
  br label %966

966:                                              ; preds = %958, %959, %963, %832
  %.1813 = phi i32 [ %.0812, %958 ], [ %965, %963 ], [ %.0812, %959 ], [ %.0812, %832 ]
  %.1811 = phi ptr [ %.0810, %958 ], [ %961, %963 ], [ %.0810, %959 ], [ %.0810, %832 ]
  %.not875 = icmp ne ptr %.1811, null
  br i1 %.not875, label %967, label %991

967:                                              ; preds = %966
  %968 = icmp sgt i32 %.1813, -1
  br i1 %968, label %970, label %969

969:                                              ; preds = %967
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.1, i32 noundef 3895, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

970:                                              ; preds = %967
  %.not876 = icmp eq i32 %.0801, %.1813
  %brmerge964 = or i1 %.not852, %.not876
  br i1 %brmerge964, label %987, label %971

971:                                              ; preds = %970
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %24) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %24)
  store i32 262144, ptr %24, align 8, !tbaa !146
  %972 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 %5, ptr %972, align 4, !tbaa !148
  %973 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %2, ptr %973, align 8, !tbaa !151
  %974 = getelementptr inbounds i8, ptr %24, i64 32
  store i32 %.1813, ptr %974, align 8, !tbaa !152
  %975 = add nuw nsw i32 %.1813, 1
  %976 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %3, i32 noundef %975)
  %977 = getelementptr inbounds i8, ptr %24, i64 36
  store i32 %976, ptr %977, align 4, !tbaa !153
  %978 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %7, ptr %978, align 8, !tbaa !149
  %979 = call noundef i32 %6(ptr noundef nonnull %24)
  %980 = load ptr, ptr %973, align 8, !tbaa !151
  %981 = load i32, ptr %977, align 4, !tbaa !153
  %982 = load i32, ptr %974, align 8, !tbaa !152
  %983 = add nsw i32 %981, -1
  %984 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %982, i32 noundef %983)
  %.not877 = icmp sgt i32 %984, %981
  br i1 %.not877, label %985, label %986

985:                                              ; preds = %971
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.1, i32 noundef 3909, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

986:                                              ; preds = %971
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %24) #14
  br label %987

987:                                              ; preds = %970, %986
  %.2814 = phi i32 [ %984, %986 ], [ %.1813, %970 ]
  %.0774 = phi i32 [ %981, %986 ], [ %3, %970 ]
  %.0771 = phi ptr [ %980, %986 ], [ %2, %970 ]
  %988 = add nsw i32 %.2814, 1
  %989 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %988, i32 noundef %.0774)
  %990 = sext i32 %989 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0771, ptr noundef nonnull %.1811, i64 noundef %990)
  br label %991

991:                                              ; preds = %987, %966
  %.1772 = phi ptr [ %.0771, %987 ], [ %2, %966 ]
  %992 = getelementptr inbounds i8, ptr %.17781090, i64 3704
  store i32 0, ptr %992, align 8, !tbaa !116
  %993 = getelementptr inbounds i8, ptr %.17781090, i64 3712
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %993, i8 0, i64 16, i1 false)
  br label %994

994:                                              ; preds = %991, %818
  %.31121 = phi i8 [ %.31122, %991 ], [ %.3, %818 ]
  %.1787.in1119 = phi i1 [ %.1787.in1120, %991 ], [ %.1787.in, %818 ]
  %.27921117 = phi i8 [ %.27921116, %991 ], [ %.2792, %818 ]
  %.1789 = phi i1 [ %.not875, %991 ], [ false, %818 ]
  %.2773 = phi ptr [ %.1772, %991 ], [ %2, %818 ]
  %995 = trunc nuw i8 %.31121 to i1
  br i1 %995, label %996, label %1000

996:                                              ; preds = %994
  %997 = load i32, ptr %159, align 8, !tbaa !88
  %998 = icmp eq i32 %997, %81
  br i1 %998, label %999, label %1000

999:                                              ; preds = %996
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %1000

1000:                                             ; preds = %999, %996, %994
  br i1 %60, label %1006, label %1001

1001:                                             ; preds = %1000
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %81, i32 noundef 1)
  %.sroa.092.0.copyload = load <2 x float>, ptr %11, align 8
  %1002 = getelementptr inbounds i8, ptr %11, i64 8
  %.sroa.091.0.copyload = load <2 x float>, ptr %1002, align 8
  %1003 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1004 = getelementptr inbounds i8, ptr %69, i64 5528
  %1005 = load float, ptr %1004, align 4, !tbaa !159
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.092.0.copyload, <2 x float> %.sroa.091.0.copyload, i32 noundef %1003, i1 noundef zeroext true, float noundef %1005)
  br label %1006

1006:                                             ; preds = %1001, %1000
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #14
  %1007 = load float, ptr %11, align 8, !tbaa !122
  %1008 = getelementptr inbounds i8, ptr %11, i64 4
  %1009 = load float, ptr %1008, align 4, !tbaa !160
  %1010 = fadd float %.sroa.0427.0, %1007
  %1011 = fadd float %.sroa.11.0.copyload, %1009
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %25, float noundef %1007, float noundef %1009, float noundef %1010, float noundef %1011)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #14
  br i1 %60, label %1012, label %1015

1012:                                             ; preds = %1006
  %1013 = getelementptr inbounds i8, ptr %.0776, i64 208
  %1014 = load i64, ptr %1013, align 8
  br label %1018

1015:                                             ; preds = %1006
  %1016 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %91)
  %1017 = bitcast <2 x float> %1016 to i64
  br label %1018

1018:                                             ; preds = %1015, %1012
  %storemerge878 = phi i64 [ %1014, %1012 ], [ %1017, %1015 ]
  store i64 %storemerge878, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %27, float noundef 0.000000e+00, float noundef 0.000000e+00)
  br i1 %295, label %1019, label %1022

1019:                                             ; preds = %1018
  %1020 = getelementptr inbounds i8, ptr %.17781090, i64 40
  %1021 = load ptr, ptr %1020, align 8, !tbaa !105
  br label %1022

1022:                                             ; preds = %1018, %1019
  %1023 = phi ptr [ %1021, %1019 ], [ %.2773, %1018 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #14
  store ptr null, ptr %28, align 8, !tbaa !39
  br i1 %305, label %1024, label %1027

1024:                                             ; preds = %1022
  %1025 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #15
  %1026 = getelementptr inbounds i8, ptr %1, i64 %1025
  store ptr %1026, ptr %28, align 8, !tbaa !39
  br label %1027

1027:                                             ; preds = %1024, %1022
  %1028 = phi ptr [ %1026, %1024 ], [ null, %1022 ]
  %.0802 = phi ptr [ %1, %1024 ], [ %1023, %1022 ]
  %brmerge965 = select i1 %265, i1 true, i1 %.1787.in1119
  br i1 %brmerge965, label %1029, label %1273

1029:                                             ; preds = %1027
  br i1 %266, label %1031, label %1030

1030:                                             ; preds = %1029
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.1, i32 noundef 3954, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcS1_PciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1031:                                             ; preds = %1029
  br i1 %305, label %1037, label %1032

1032:                                             ; preds = %1031
  %1033 = getelementptr inbounds i8, ptr %.17781090, i64 8
  %1034 = load i32, ptr %1033, align 8, !tbaa !97
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds i8, ptr %.0802, i64 %1035
  store ptr %1036, ptr %28, align 8, !tbaa !39
  br label %1037

1037:                                             ; preds = %1032, %1031
  %.pre10691071 = phi ptr [ %1036, %1032 ], [ %1028, %1031 ]
  %1038 = getelementptr inbounds i8, ptr %.17781090, i64 24
  %1039 = load ptr, ptr %1038, align 8, !tbaa !95
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %29)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %30)
  %.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 %265, label %1040, label %1045

1040:                                             ; preds = %1037
  %1041 = getelementptr inbounds i8, ptr %.17781090, i64 76
  %1042 = load i32, ptr %1041, align 4, !tbaa !154
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds i16, ptr %1039, i64 %1043
  br label %1045

1045:                                             ; preds = %1040, %1037
  %.sroa.069.0 = phi ptr [ %1044, %1040 ], [ null, %1037 ]
  %.sroa.063.0 = phi i32 [ -1, %1040 ], [ %.sroa.063.0.copyload, %1037 ]
  %.0797 = phi i32 [ 1, %1040 ], [ 0, %1037 ]
  br i1 %.1787.in1119, label %1046, label %1055

1046:                                             ; preds = %1045
  %1047 = getelementptr inbounds i8, ptr %.17781090, i64 80
  %1048 = load i32, ptr %1047, align 4, !tbaa !141
  %1049 = getelementptr inbounds i8, ptr %.17781090, i64 84
  %1050 = load i32, ptr %1049, align 4, !tbaa !142
  %1051 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1048, i32 noundef %1050)
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds i16, ptr %1039, i64 %1052
  %1054 = add nuw nsw i32 %.0797, 1
  br label %1055

1055:                                             ; preds = %1046, %1045
  %.sroa.7.0 = phi ptr [ %1053, %1046 ], [ null, %1045 ]
  %.sroa.9.0 = phi i32 [ -1, %1046 ], [ %.sroa.9.0.copyload, %1045 ]
  %.1798 = phi i32 [ %1054, %1046 ], [ %.0797, %1045 ]
  %.lobit = lshr exact i32 %59, 20
  %1056 = add nuw nsw i32 %.1798, %.lobit
  br label %1057

1057:                                             ; preds = %1072, %1055
  %.sroa.9.1 = phi i32 [ %.sroa.9.0, %1055 ], [ %.sroa.9.2, %1072 ]
  %.sroa.063.1 = phi i32 [ %.sroa.063.0, %1055 ], [ %.sroa.063.3, %1072 ]
  %.2799 = phi i32 [ %1056, %1055 ], [ %.4, %1072 ]
  %.0794 = phi i32 [ 0, %1055 ], [ %.1795, %1072 ]
  %.0793 = phi ptr [ %1039, %1055 ], [ %1073, %1072 ]
  %1058 = load i16, ptr %.0793, align 2, !tbaa !134
  switch i16 %1058, label %1072 [
    i16 0, label %1074
    i16 10, label %1059
  ]

1059:                                             ; preds = %1057
  %1060 = add nsw i32 %.0794, 1
  %1061 = icmp eq i32 %.sroa.063.1, -1
  br i1 %1061, label %1062, label %1066

1062:                                             ; preds = %1059
  %.not880 = icmp ult ptr %.0793, %.sroa.069.0
  br i1 %.not880, label %1066, label %1063

1063:                                             ; preds = %1062
  %1064 = add nsw i32 %.2799, -1
  %1065 = icmp slt i32 %.2799, 2
  br i1 %1065, label %1074, label %1066

1066:                                             ; preds = %1063, %1062, %1059
  %.sroa.063.2 = phi i32 [ %1060, %1063 ], [ -1, %1062 ], [ %.sroa.063.1, %1059 ]
  %.3800 = phi i32 [ %1064, %1063 ], [ %.2799, %1062 ], [ %.2799, %1059 ]
  %1067 = icmp eq i32 %.sroa.9.1, -1
  br i1 %1067, label %1068, label %1072

1068:                                             ; preds = %1066
  %.not881 = icmp ult ptr %.0793, %.sroa.7.0
  br i1 %.not881, label %1072, label %1069

1069:                                             ; preds = %1068
  %1070 = add nsw i32 %.3800, -1
  %1071 = icmp slt i32 %.3800, 2
  br i1 %1071, label %1074, label %1072

1072:                                             ; preds = %1057, %1069, %1068, %1066
  %.sroa.9.2 = phi i32 [ %1060, %1069 ], [ -1, %1068 ], [ %.sroa.9.1, %1066 ], [ %.sroa.9.1, %1057 ]
  %.sroa.063.3 = phi i32 [ %.sroa.063.2, %1069 ], [ %.sroa.063.2, %1068 ], [ %.sroa.063.2, %1066 ], [ %.sroa.063.1, %1057 ]
  %.4 = phi i32 [ %1070, %1069 ], [ %.3800, %1068 ], [ %.3800, %1066 ], [ %.2799, %1057 ]
  %.1795 = phi i32 [ %1060, %1069 ], [ %1060, %1068 ], [ %1060, %1066 ], [ %.0794, %1057 ]
  %1073 = getelementptr inbounds i8, ptr %.0793, i64 2
  br label %1057, !llvm.loop !161

1074:                                             ; preds = %1069, %1063, %1057
  %.sroa.9.3 = phi i32 [ %.sroa.9.1, %1057 ], [ %.sroa.9.1, %1063 ], [ %1060, %1069 ]
  %.sroa.063.4 = phi i32 [ %.sroa.063.1, %1057 ], [ %1060, %1063 ], [ %.sroa.063.2, %1069 ]
  %.2796 = phi i32 [ %.0794, %1057 ], [ %1060, %1063 ], [ %1060, %1069 ]
  %1075 = add nsw i32 %.2796, 1
  %1076 = icmp eq i32 %.sroa.063.4, -1
  %spec.select966 = select i1 %1076, i32 %1075, i32 %.sroa.063.4
  %1077 = icmp eq i32 %.sroa.9.3, -1
  %.sroa.9.4 = select i1 %1077, i32 %1075, i32 %.sroa.9.3
  %1078 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.069.0, ptr noundef %1039)
  %1079 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1078, ptr noundef %.sroa.069.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.045.0.vec.extract = extractelement <2 x float> %1079, i64 0
  store float %.sroa.045.0.vec.extract, ptr %29, align 4, !tbaa !162
  %1080 = sitofp i32 %spec.select966 to float
  %1081 = getelementptr inbounds i8, ptr %69, i64 6416
  %1082 = load float, ptr %1081, align 8, !tbaa !40
  %1083 = fmul float %1082, %1080
  %1084 = getelementptr inbounds i8, ptr %29, i64 4
  store float %1083, ptr %1084, align 4, !tbaa !163
  %1085 = icmp sgt i32 %.sroa.9.4, -1
  br i1 %1085, label %1086, label %1093

1086:                                             ; preds = %1074
  %1087 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.7.0, ptr noundef %1039)
  %1088 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1087, ptr noundef %.sroa.7.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.044.0.vec.extract = extractelement <2 x float> %1088, i64 0
  store float %.sroa.044.0.vec.extract, ptr %30, align 4, !tbaa !162
  %1089 = uitofp nneg i32 %.sroa.9.4 to float
  %1090 = load float, ptr %1081, align 8, !tbaa !40
  %1091 = fmul float %1090, %1089
  %1092 = getelementptr inbounds i8, ptr %30, i64 4
  store float %1091, ptr %1092, align 4, !tbaa !163
  br label %1093

1093:                                             ; preds = %1086, %1074
  %1094 = phi float [ %1090, %1086 ], [ %1082, %1074 ]
  br i1 %60, label %1095, label %1099

1095:                                             ; preds = %1093
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %1096 = sitofp i32 %1075 to float
  %1097 = fmul float %1094, %1096
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %31, float noundef %.sroa.0427.0, float noundef %1097)
  %1098 = load i64, ptr %31, align 8
  store i64 %1098, ptr %27, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  br label %1099

1099:                                             ; preds = %1095, %1093
  br i1 %265, label %1100, label %1147

1100:                                             ; preds = %1099
  %1101 = getelementptr inbounds i8, ptr %.17781090, i64 3700
  %1102 = load i8, ptr %1101, align 4, !tbaa !130, !range !37, !noundef !38
  %1103 = trunc nuw i8 %1102 to i1
  br i1 %1103, label %1104, label %1147

1104:                                             ; preds = %1100
  %1105 = and i32 %5, 4096
  %.not882 = icmp eq i32 %1105, 0
  br i1 %.not882, label %1106, label %1124

1106:                                             ; preds = %1104
  %1107 = fmul float %.sroa.0427.0, 2.500000e-01
  %1108 = load float, ptr %29, align 4, !tbaa !162
  %1109 = getelementptr inbounds i8, ptr %.17781090, i64 72
  %1110 = load float, ptr %1109, align 8, !tbaa !99
  %1111 = fcmp olt float %1108, %1110
  br i1 %1111, label %1112, label %1117

1112:                                             ; preds = %1106
  %1113 = fsub float %1108, %1107
  %1114 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1113)
  %1115 = fptosi float %1114 to i32
  %1116 = sitofp i32 %1115 to float
  store float %1116, ptr %1109, align 8, !tbaa !99
  br label %1126

1117:                                             ; preds = %1106
  %1118 = fsub float %1108, %.sroa.0427.0
  %1119 = fcmp ult float %1118, %1110
  br i1 %1119, label %1126, label %1120

1120:                                             ; preds = %1117
  %1121 = fadd float %1107, %1118
  %1122 = fptosi float %1121 to i32
  %1123 = sitofp i32 %1122 to float
  store float %1123, ptr %1109, align 8, !tbaa !99
  br label %1126

1124:                                             ; preds = %1104
  %1125 = getelementptr inbounds i8, ptr %.17781090, i64 72
  store float 0.000000e+00, ptr %1125, align 8, !tbaa !99
  br label %1126

1126:                                             ; preds = %1112, %1120, %1117, %1124
  br i1 %60, label %1127, label %1146

1127:                                             ; preds = %1126
  %1128 = getelementptr inbounds i8, ptr %.0776, i64 88
  %1129 = load float, ptr %1128, align 4, !tbaa !139
  %1130 = load float, ptr %1084, align 4, !tbaa !163
  %1131 = load float, ptr %1081, align 8, !tbaa !40
  %1132 = fsub float %1130, %1131
  %1133 = fcmp olt float %1132, %1129
  br i1 %1133, label %1134, label %1136

1134:                                             ; preds = %1127
  %1135 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1132)
  %.pre1064 = load float, ptr %1128, align 4, !tbaa !139
  br label %1140

1136:                                             ; preds = %1127
  %1137 = fsub float %1130, %.sroa.11.0.copyload
  %1138 = fcmp ult float %1137, %1129
  br i1 %1138, label %1140, label %1139

1139:                                             ; preds = %1136
  br label %1140

1140:                                             ; preds = %1136, %1139, %1134
  %1141 = phi float [ %.pre1064, %1134 ], [ %1129, %1139 ], [ %1129, %1136 ]
  %.0785 = phi float [ %1135, %1134 ], [ %1137, %1139 ], [ %1129, %1136 ]
  %1142 = fsub float %1141, %.0785
  %1143 = getelementptr inbounds i8, ptr %26, i64 4
  %1144 = load float, ptr %1143, align 4, !tbaa !163
  %1145 = fadd float %1144, %1142
  store float %1145, ptr %1143, align 4, !tbaa !163
  store float %.0785, ptr %1128, align 4, !tbaa !139
  br label %1146

1146:                                             ; preds = %1140, %1126
  store i8 0, ptr %1101, align 4, !tbaa !130
  br label %1147

1147:                                             ; preds = %1146, %1100, %1099
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  %1148 = getelementptr inbounds i8, ptr %.17781090, i64 72
  %1149 = load float, ptr %1148, align 8, !tbaa !99
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %32, float noundef %1149, float noundef 0.000000e+00)
  br i1 %.1787.in1119, label %1150, label %1219

1150:                                             ; preds = %1147
  %1151 = getelementptr inbounds i8, ptr %.17781090, i64 80
  %1152 = load i32, ptr %1151, align 4, !tbaa !141
  %1153 = getelementptr inbounds i8, ptr %.17781090, i64 84
  %1154 = load i32, ptr %1153, align 4, !tbaa !142
  %1155 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1152, i32 noundef %1154)
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds i16, ptr %1039, i64 %1156
  %1158 = load i32, ptr %1151, align 4, !tbaa !141
  %1159 = load i32, ptr %1153, align 4, !tbaa !142
  %1160 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1158, i32 noundef %1159)
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds i16, ptr %1039, i64 %1161
  %1163 = select i1 %265, float 1.000000e+00, float 0x3FE3333340000000
  %1164 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 42, float noundef %1163)
  %1165 = select i1 %60, float 0.000000e+00, float -1.000000e+00
  %1166 = select i1 %60, float 0.000000e+00, float 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  %1167 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %1167, ptr %34, align 8
  %1168 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %32)
  store <2 x float> %1168, ptr %33, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  store ptr %1157, ptr %35, align 8, !tbaa !39
  %1169 = getelementptr inbounds i8, ptr %33, i64 4
  %1170 = icmp slt i32 %1155, %1160
  br i1 %1170, label %.lr.ph1052, label %._crit_edge

.lr.ph1052:                                       ; preds = %1150
  %1171 = extractelement <2 x float> %1168, i64 1
  %1172 = getelementptr inbounds i8, ptr %25, i64 12
  %1173 = getelementptr inbounds i8, ptr %25, i64 4
  %1174 = getelementptr inbounds i8, ptr %69, i64 6408
  %1175 = getelementptr inbounds i8, ptr %.0776, i64 680
  %1176 = getelementptr inbounds i8, ptr %36, i64 8
  %.pre1065 = load float, ptr %1081, align 8, !tbaa !40
  br label %1177

1177:                                             ; preds = %.lr.ph1052, %.loopexit
  %1178 = phi ptr [ %1157, %.lr.ph1052 ], [ %1211, %.loopexit ]
  %1179 = phi float [ %1171, %.lr.ph1052 ], [ %1217, %.loopexit ]
  %1180 = phi float [ %.pre1065, %.lr.ph1052 ], [ %1213, %.loopexit ]
  %1181 = load float, ptr %1172, align 4, !tbaa !164
  %1182 = fadd float %1181, %1180
  %1183 = fcmp ogt float %1179, %1182
  br i1 %1183, label %._crit_edge.loopexit, label %1184

1184:                                             ; preds = %1177
  %1185 = load float, ptr %1173, align 4, !tbaa !165
  %1186 = fcmp olt float %1179, %1185
  br i1 %1186, label %.preheader, label %1193

.preheader:                                       ; preds = %1184, %1189
  %1187 = phi ptr [ %1190, %1189 ], [ %1178, %1184 ]
  %1188 = icmp ult ptr %1187, %1162
  br i1 %1188, label %1189, label %.loopexit

1189:                                             ; preds = %.preheader
  %1190 = getelementptr inbounds i8, ptr %1187, i64 2
  store ptr %1190, ptr %35, align 8, !tbaa !39
  %1191 = load i16, ptr %1187, align 2, !tbaa !134
  %1192 = icmp eq i16 %1191, 10
  br i1 %1192, label %.loopexit, label %.preheader, !llvm.loop !166

1193:                                             ; preds = %1184
  %1194 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1178, ptr noundef nonnull %1162, ptr noundef nonnull %35, ptr noundef null, i1 noundef zeroext true)
  %.sroa.028.0.vec.extract = extractelement <2 x float> %1194, i64 0
  %1195 = fcmp ugt float %.sroa.028.0.vec.extract, 0.000000e+00
  br i1 %1195, label %1202, label %1196

1196:                                             ; preds = %1193
  %1197 = load ptr, ptr %1174, align 8, !tbaa !107
  %1198 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(113) %1197, i16 noundef zeroext 32)
  %1199 = fmul float %1198, 5.000000e-01
  %1200 = fptosi float %1199 to i32
  %1201 = sitofp i32 %1200 to float
  br label %1202

1202:                                             ; preds = %1196, %1193
  %.sroa.028.0.vec.extract31.pre-phi = phi float [ %1201, %1196 ], [ %.sroa.028.0.vec.extract, %1193 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #14
  %1203 = load float, ptr %1081, align 8, !tbaa !40
  %1204 = fsub float %1165, %1203
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef 0.000000e+00, float noundef %1204)
  %1205 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %38)
  store <2 x float> %1205, ptr %37, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %.sroa.028.0.vec.extract31.pre-phi, float noundef %1166)
  %1206 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %40)
  store <2 x float> %1206, ptr %39, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %39)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %41, ptr noundef nonnull align 4 dereferenceable(16) %25)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %41)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %42, ptr noundef nonnull align 4 dereferenceable(16) %25)
  %1207 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %42)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #14
  br i1 %1207, label %1208, label %1210

1208:                                             ; preds = %1202
  %1209 = load ptr, ptr %1175, align 8, !tbaa !167
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1209, ptr noundef nonnull align 4 dereferenceable(8) %36, ptr noundef nonnull align 4 dereferenceable(8) %1176, i32 noundef %1164, float noundef 0.000000e+00, i32 noundef 15)
  br label %1210

1210:                                             ; preds = %1208, %1202
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #14
  %.pre1066 = load float, ptr %1081, align 8, !tbaa !40
  %.pre1067 = load float, ptr %1169, align 4, !tbaa !163
  %.pre1068 = load ptr, ptr %35, align 8, !tbaa !39
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1189, %1210
  %1211 = phi ptr [ %.pre1068, %1210 ], [ %1187, %.preheader ], [ %1190, %1189 ]
  %1212 = phi float [ %.pre1067, %1210 ], [ %1179, %1189 ], [ %1179, %.preheader ]
  %1213 = phi float [ %.pre1066, %1210 ], [ %1180, %1189 ], [ %1180, %.preheader ]
  %1214 = load float, ptr %26, align 8, !tbaa !162
  %1215 = load float, ptr %32, align 4, !tbaa !162
  %1216 = fsub float %1214, %1215
  store float %1216, ptr %33, align 8, !tbaa !162
  %1217 = fadd float %1213, %1212
  store float %1217, ptr %1169, align 4, !tbaa !163
  %1218 = icmp ult ptr %1211, %1162
  br i1 %1218, label %1177, label %._crit_edge.loopexit, !llvm.loop !168

._crit_edge.loopexit:                             ; preds = %1177, %.loopexit
  %.pre1069.pre.pre = load ptr, ptr %28, align 8, !tbaa !39
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %1150
  %.pre1069.pre = phi ptr [ %.pre1069.pre.pre, %._crit_edge.loopexit ], [ %.pre10691071, %1150 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #14
  br label %1219

1219:                                             ; preds = %._crit_edge, %1147
  %.pre1069 = phi ptr [ %.pre1069.pre, %._crit_edge ], [ %.pre10691071, %1147 ]
  br i1 %60, label %1225, label %1220

1220:                                             ; preds = %1219
  %1221 = ptrtoint ptr %.pre1069 to i64
  %1222 = ptrtoint ptr %.0802 to i64
  %1223 = sub i64 %1221, %1222
  %1224 = icmp slt i64 %1223, 2097152
  br i1 %1224, label %1225, label %1234

1225:                                             ; preds = %1220, %1219
  %. = phi ptr [ %25, %1220 ], [ null, %1219 ]
  %1226 = zext i1 %305 to i32
  %1227 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1226, float noundef 1.000000e+00)
  %1228 = getelementptr inbounds i8, ptr %.0776, i64 680
  %1229 = load ptr, ptr %1228, align 8, !tbaa !167
  %1230 = getelementptr inbounds i8, ptr %69, i64 6408
  %1231 = load ptr, ptr %1230, align 8, !tbaa !107
  %1232 = load float, ptr %1081, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #14
  %1233 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %32)
  store <2 x float> %1233, ptr %43, align 8
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1229, ptr noundef %1231, float noundef %1232, ptr noundef nonnull align 4 dereferenceable(8) %43, i32 noundef %1227, ptr noundef %.0802, ptr noundef %.pre1069, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #14
  br label %1234

1234:                                             ; preds = %1225, %1220
  br i1 %265, label %1235, label %1272

1235:                                             ; preds = %1234
  %1236 = getelementptr inbounds i8, ptr %69, i64 24
  %1237 = load float, ptr %1236, align 8, !tbaa !169
  %1238 = getelementptr inbounds i8, ptr %.17781090, i64 3696
  %1239 = load float, ptr %1238, align 8, !tbaa !170
  %1240 = fadd float %1237, %1239
  store float %1240, ptr %1238, align 8, !tbaa !170
  %1241 = getelementptr inbounds i8, ptr %69, i64 202
  %1242 = load i8, ptr %1241, align 2, !tbaa !171, !range !37, !noundef !38
  %1243 = trunc nuw i8 %1242 to i1
  %1244 = fcmp ugt float %1240, 0.000000e+00
  %or.cond967 = select i1 %1243, i1 %1244, i1 false
  br i1 %or.cond967, label %1245, label %1248

1245:                                             ; preds = %1235
  %1246 = call noundef float @_ZL6ImFmodff(float noundef %1240, float noundef 0x3FF3333340000000)
  %1247 = fcmp ole float %1246, 0x3FE99999A0000000
  br label %1248

1248:                                             ; preds = %1245, %1235
  %1249 = phi i1 [ true, %1235 ], [ %1247, %1245 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #14
  %1250 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %1250, ptr %44, align 8
  %1251 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %44, ptr noundef nonnull align 4 dereferenceable(8) %32)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #14
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1251, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1251, i64 1
  %1252 = load float, ptr %1081, align 8, !tbaa !40
  %1253 = fsub float %.sroa.0.4.vec.extract, %1252
  %1254 = fadd float %1253, 5.000000e-01
  %1255 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1256 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %45, float noundef %.sroa.0.0.vec.extract, float noundef %1254, float noundef %1255, float noundef %1256)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #14
  br i1 %1249, label %1257, label %.critedge13

1257:                                             ; preds = %1248
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %46, ptr noundef nonnull align 4 dereferenceable(16) %25)
  %1258 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %45, ptr noundef nonnull align 4 dereferenceable(16) %46)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #14
  br i1 %1258, label %1259, label %1264

1259:                                             ; preds = %1257
  %1260 = getelementptr inbounds i8, ptr %.0776, i64 680
  %1261 = load ptr, ptr %1260, align 8, !tbaa !167
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  %1262 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %45)
  store <2 x float> %1262, ptr %47, align 8
  %1263 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1261, ptr noundef nonnull align 4 dereferenceable(8) %45, ptr noundef nonnull align 4 dereferenceable(8) %47, i32 noundef %1263, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #14
  br label %1264

.critedge13:                                      ; preds = %1248
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #14
  br label %1264

1264:                                             ; preds = %.critedge13, %1259, %1257
  br i1 %71, label %1271, label %1265

1265:                                             ; preds = %1264
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  %1266 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1267 = load float, ptr %1081, align 8, !tbaa !40
  %1268 = fsub float %.sroa.0.4.vec.extract, %1267
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %48, float noundef %1266, float noundef %1268)
  %1269 = getelementptr inbounds i8, ptr %69, i64 11996
  %1270 = load i64, ptr %48, align 8
  store i64 %1270, ptr %1269, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #14
  br label %1271

1271:                                             ; preds = %1265, %1264
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #14
  br label %1272

1272:                                             ; preds = %1271, %1234
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #14
  br label %1308

1273:                                             ; preds = %1027
  br i1 %60, label %.critedge969, label %1274

1274:                                             ; preds = %1273
  br i1 %305, label %1292, label %1275

1275:                                             ; preds = %1274
  %1276 = load i32, ptr %159, align 8, !tbaa !88
  %1277 = icmp eq i32 %1276, %81
  br i1 %1277, label %1278, label %1283

1278:                                             ; preds = %1275
  %1279 = getelementptr inbounds i8, ptr %.17781090, i64 8
  %1280 = load i32, ptr %1279, align 8, !tbaa !97
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i8, ptr %.0802, i64 %1281
  store ptr %1282, ptr %28, align 8, !tbaa !39
  br label %1292

1283:                                             ; preds = %1275
  %1284 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0802) #15
  %1285 = getelementptr inbounds i8, ptr %.0802, i64 %1284
  store ptr %1285, ptr %28, align 8, !tbaa !39
  br label %1292

.critedge969:                                     ; preds = %1273
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #14
  %1286 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %.0802, ptr noundef nonnull %28)
  %1287 = sitofp i32 %1286 to float
  %1288 = getelementptr inbounds i8, ptr %69, i64 6416
  %1289 = load float, ptr %1288, align 8, !tbaa !40
  %1290 = fmul float %1289, %1287
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %.sroa.0427.0, float noundef %1290)
  %1291 = load i64, ptr %49, align 8
  store i64 %1291, ptr %27, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #14
  br label %1298

1292:                                             ; preds = %1274, %1278, %1283
  %1293 = phi ptr [ %1028, %1274 ], [ %1282, %1278 ], [ %1285, %1283 ]
  %1294 = ptrtoint ptr %1293 to i64
  %1295 = ptrtoint ptr %.0802 to i64
  %1296 = sub i64 %1294, %1295
  %1297 = icmp slt i64 %1296, 2097152
  br i1 %1297, label %1298, label %.thread1026

1298:                                             ; preds = %.critedge969, %1292
  %.14 = phi ptr [ %25, %1292 ], [ null, %.critedge969 ]
  %1299 = zext i1 %305 to i32
  %1300 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %1299, float noundef 1.000000e+00)
  %1301 = getelementptr inbounds i8, ptr %.0776, i64 680
  %1302 = load ptr, ptr %1301, align 8, !tbaa !167
  %1303 = getelementptr inbounds i8, ptr %69, i64 6408
  %1304 = load ptr, ptr %1303, align 8, !tbaa !107
  %1305 = getelementptr inbounds i8, ptr %69, i64 6416
  %1306 = load float, ptr %1305, align 8, !tbaa !40
  %1307 = load ptr, ptr %28, align 8, !tbaa !39
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1302, ptr noundef %1304, float noundef %1306, ptr noundef nonnull align 4 dereferenceable(8) %26, i32 noundef %1300, ptr noundef %.0802, ptr noundef %1307, float noundef 0.000000e+00, ptr noundef %.14)
  br label %1308

1308:                                             ; preds = %1298, %1272
  br i1 %60, label %1309, label %.thread1026

1309:                                             ; preds = %1308
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #14
  %1310 = getelementptr inbounds i8, ptr %69, i64 6416
  %1311 = load float, ptr %1310, align 8, !tbaa !40
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %51, float noundef 0.000000e+00, float noundef %1311)
  %1312 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(8) %51)
  store <2 x float> %1312, ptr %50, align 8
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %50)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #14
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %.thread1026

.thread1026:                                      ; preds = %1292, %1309, %1308
  br i1 %brmerge898, label %1313, label %.thread1027

.thread1027:                                      ; preds = %.thread1026
  call void @_ZN5ImGui7PopFontEv()
  br label %1319

1313:                                             ; preds = %.thread1026
  %1314 = getelementptr inbounds i8, ptr %69, i64 12072
  %1315 = load i8, ptr %1314, align 8, !tbaa !172, !range !37, !noundef !38
  %1316 = trunc nuw i8 %1315 to i1
  br i1 %1316, label %1317, label %1319

1317:                                             ; preds = %1313
  %1318 = load ptr, ptr %28, align 8, !tbaa !39
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %26, ptr noundef %.0802, ptr noundef %1318)
  br label %1319

1319:                                             ; preds = %.thread1027, %1317, %1313
  br i1 %97, label %1320, label %1330

1320:                                             ; preds = %1319
  %1321 = getelementptr inbounds i8, ptr %11, i64 8
  %1322 = load float, ptr %1321, align 8, !tbaa !173
  %1323 = getelementptr inbounds i8, ptr %69, i64 5544
  %1324 = load float, ptr %1323, align 4, !tbaa !76
  %1325 = fadd float %1322, %1324
  %1326 = load float, ptr %1008, align 4, !tbaa !160
  %1327 = load float, ptr %92, align 4, !tbaa !75
  %1328 = fadd float %1326, %1327
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef %1325, float noundef %1328)
  %1329 = load <2 x float>, ptr %52, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1329, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1330

1330:                                             ; preds = %1320, %1319
  %1331 = and i32 %5, 2097152
  %.not883 = icmp eq i32 %1331, 0
  %or.cond972 = and i1 %.not883, %.1789
  br i1 %or.cond972, label %1332, label %1333

1332:                                             ; preds = %1330
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %81)
  br label %1333

1333:                                             ; preds = %1330, %1332
  %1334 = and i32 %5, 32
  %.not884 = icmp eq i32 %1334, 0
  %1335 = trunc nuw i8 %.27921117 to i1
  %.0 = select i1 %.not884, i1 %.1789, i1 %1335
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #14
  br label %1336

1336:                                             ; preds = %129, %1333, %117, %112
  %.1 = phi i1 [ false, %117 ], [ %.0, %1333 ], [ false, %112 ], [ false, %129 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #14
  br label %1337

1337:                                             ; preds = %8, %1336
  %.2 = phi i1 [ %.1, %1336 ], [ false, %8 ]
  ret i1 %.2
}

; 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 noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef, ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) local_unnamed_addr #6

declare void @_ZN5ImGui13EndChildFrameEv() local_unnamed_addr #6

; 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(113), i16 noundef zeroext) local_unnamed_addr #6

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

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

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

declare void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

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

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #6

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

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

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #6

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #6

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #6

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #6

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

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

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

; 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(113), 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: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL6ImFmodff(float noundef, float noundef) local_unnamed_addr #1

; 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 = { noreturn nounwind }
attributes #14 = { nounwind }
attributes #15 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 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, !8, i64 135, !14, i64 136, !14, i64 138, !14, i64 140, !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, !17, i64 496, !17, i64 512, !17, i64 528, !17, i64 544, !17, i64 560, !17, i64 576, !10, i64 592, !12, i64 596, !12, i64 600, !24, i64 604, !25, i64 640, !27, i64 656, !12, i64 672, !10, i64 676, !7, i64 680, !28, i64 688, !7, i64 856, !7, i64 864, !7, i64 872, !7, i64 880, !7, i64 888, !8, i64 896, !8, i64 904, !13, i64 936, !10, i64 940, !10, i64 944}
!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, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !17, i64 72, !17, i64 88, !18, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !13, i64 120, !13, i64 121, !13, i64 122, !11, i64 124, !19, i64 136, !7, i64 152, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !12, i64 180, !12, i64 184, !20, i64 192, !21, i64 208, !21, i64 224, !22, i64 240, !8, i64 256, !23, i64 268, !23, i64 272, !23, i64 276, !7, i64 280}
!17 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!18 = !{!"_ZTS13ImGuiNavLayer", !8, i64 0}
!19 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!20 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!21 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!23 = !{!"_ZTS6ImVec1", !12, i64 0}
!24 = !{!"_ZTS16ImGuiMenuColumns", !12, i64 0, !12, i64 4, !12, i64 8, !8, i64 12, !8, i64 24}
!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 6416}
!41 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !13, i64 2, !13, i64 3, !42, i64 8, !43, i64 5464, !7, i64 6408, !12, i64 6416, !12, i64 6420, !44, i64 6424, !46, i64 6568, !10, i64 6576, !10, i64 6580, !10, i64 6584, !19, i64 6592, !19, i64 6608, !19, i64 6624, !19, i64 6640, !25, i64 6656, !10, i64 6672, !7, i64 6680, !7, i64 6688, !7, i64 6696, !7, i64 6704, !7, i64 6712, !11, i64 6720, !12, i64 6728, !10, i64 6732, !13, i64 6736, !10, i64 6740, !12, i64 6744, !12, i64 6748, !10, i64 6752, !10, i64 6756, !12, i64 6760, !13, i64 6764, !13, i64 6765, !13, i64 6766, !13, i64 6767, !13, i64 6768, !10, i64 6772, !10, i64 6776, !47, i64 6784, !11, i64 6792, !7, i64 6800, !48, i64 6808, !10, i64 6812, !13, i64 6816, !13, i64 6817, !7, i64 6824, !10, i64 6832, !12, i64 6836, !49, i64 6840, !50, i64 6944, !51, i64 6960, !52, i64 6976, !53, i64 6992, !54, i64 7008, !54, i64 7024, !7, i64 7040, !10, i64 7048, !10, i64 7052, !10, i64 7056, !10, i64 7060, !10, i64 7064, !10, i64 7068, !10, i64 7072, !10, i64 7076, !10, i64 7080, !48, i64 7084, !17, i64 7088, !10, i64 7104, !7, i64 7112, !7, i64 7120, !7, i64 7128, !12, i64 7136, !12, i64 7140, !13, i64 7144, !18, i64 7148, !10, i64 7152, !13, i64 7156, !13, i64 7157, !13, i64 7158, !13, i64 7159, !13, i64 7160, !13, i64 7161, !13, i64 7162, !10, i64 7164, !17, i64 7168, !13, i64 7184, !13, i64 7185, !10, i64 7188, !55, i64 7192, !10, i64 7196, !10, i64 7200, !10, i64 7204, !56, i64 7208, !56, i64 7256, !56, i64 7304, !7, i64 7352, !7, i64 7360, !10, i64 7368, !10, i64 7372, !10, i64 7376, !10, i64 7380, !13, i64 7384, !57, i64 7392, !58, i64 7448, !12, i64 7480, !28, i64 7488, !28, i64 7656, !10, i64 7824, !13, i64 7828, !13, i64 7829, !10, i64 7832, !10, i64 7836, !10, i64 7840, !59, i64 7848, !17, i64 7912, !10, i64 7928, !10, i64 7932, !12, i64 7936, !10, i64 7940, !10, i64 7944, !10, i64 7948, !60, i64 7952, !8, i64 7968, !7, i64 7976, !61, i64 7984, !63, i64 8024, !64, i64 8040, !11, i64 8056, !65, i64 8064, !69, i64 11792, !10, i64 11912, !10, i64 11916, !12, i64 11920, !8, i64 11924, !45, i64 11936, !13, i64 11952, !12, i64 11956, !12, i64 11960, !12, i64 11964, !10, i64 11968, !66, i64 11976, !10, i64 11992, !11, i64 11996, !11, i64 12004, !13, i64 12012, !12, i64 12016, !71, i64 12024, !72, i64 12040, !73, i64 12056, !13, i64 12072, !74, i64 12076, !7, i64 12080, !71, i64 12088, !12, i64 12104, !13, i64 12108, !10, i64 12112, !10, i64 12116, !10, i64 12120, !13, i64 12124, !10, i64 12128, !8, i64 12132, !10, i64 12612, !12, i64 12616, !10, i64 12620, !10, i64 12624, !10, i64 12628, !8, i64 12632}
!42 = !{!"_ZTS7ImGuiIO", !10, i64 0, !10, i64 4, !11, i64 8, !12, i64 16, !12, i64 20, !7, i64 24, !7, i64 32, !12, i64 40, !12, i64 44, !12, i64 48, !8, i64 52, !12, i64 140, !12, i64 144, !7, i64 152, !7, i64 160, !12, i64 168, !13, i64 172, !7, i64 176, !11, i64 184, !13, i64 192, !13, i64 193, !13, i64 194, !13, i64 195, !13, i64 196, !12, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !7, i64 288, !11, i64 296, !8, i64 304, !12, i64 312, !12, i64 316, !13, i64 320, !13, i64 321, !13, i64 322, !13, i64 323, !8, i64 324, !8, i64 836, !13, i64 920, !13, i64 921, !13, i64 922, !13, i64 923, !13, i64 924, !13, i64 925, !13, i64 926, !12, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !10, i64 948, !11, i64 952, !11, i64 960, !8, i64 968, !8, i64 1008, !8, i64 1048, !8, i64 1053, !8, i64 1058, !8, i64 1063, !8, i64 1068, !8, i64 1076, !8, i64 1096, !8, i64 1116, !8, i64 1156, !8, i64 1176, !8, i64 3224, !8, i64 5272, !8, i64 5356, !30, i64 5440}
!43 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !11, i64 4, !12, i64 12, !12, i64 16, !11, i64 20, !11, i64 28, !10, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !11, i64 56, !12, i64 64, !12, i64 68, !11, i64 72, !11, i64 80, !11, i64 88, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !10, i64 128, !11, i64 132, !11, i64 140, !11, i64 148, !11, i64 156, !12, i64 164, !13, i64 168, !13, i64 169, !12, i64 172, !8, i64 176}
!44 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !45, i64 24, !10, i64 40, !8, i64 44}
!45 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!46 = !{!"double", !8, i64 0}
!47 = !{!"long long", !8, i64 0}
!48 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!49 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !13, i64 48, !17, i64 52, !7, i64 72, !7, i64 80, !12, i64 88, !11, i64 92}
!50 = !{!"_ZTS17ImGuiNextItemData", !10, i64 0, !12, i64 4, !13, i64 8, !10, i64 12}
!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", !10, i64 0, !10, i64 4, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !17, 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", !21, 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, !12, i64 96, !12, i64 100, !12, i64 104, !10, i64 108, !13, 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 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !7, i64 8}
!74 = !{!"_ZTS12ImGuiLogType", !8, i64 0}
!75 = !{!43, !12, i64 60}
!76 = !{!43, !12, i64 80}
!77 = !{!12, !12, i64 0}
!78 = !{!41, !7, i64 6680}
!79 = !{!6, !10, i64 316}
!80 = !{!6, !10, i64 324}
!81 = !{!6, !12, i64 116}
!82 = !{!41, !10, i64 7824}
!83 = !{!41, !10, i64 8064}
!84 = !{!41, !7, i64 7352}
!85 = !{!41, !10, i64 7368}
!86 = !{!6, !10, i64 376}
!87 = !{!13, !13, i64 0}
!88 = !{!41, !10, i64 6752}
!89 = !{!41, !10, i64 7064}
!90 = !{!41, !10, i64 7052}
!91 = !{!41, !48, i64 7084}
!92 = !{!41, !10, i64 6812}
!93 = !{!65, !7, i64 56}
!94 = !{!65, !13, i64 64}
!95 = !{!65, !7, i64 24}
!96 = !{!65, !10, i64 4}
!97 = !{!65, !10, i64 8}
!98 = !{!65, !10, i64 0}
!99 = !{!65, !12, i64 72}
!100 = !{!65, !8, i64 88}
!101 = !{!42, !13, i64 320}
!102 = !{!10, !10, i64 0}
!103 = !{!41, !47, i64 6784}
!104 = !{!65, !10, i64 16}
!105 = !{!65, !7, i64 40}
!106 = !{!8, !8, i64 0}
!107 = !{!41, !7, i64 6408}
!108 = !{!69, !12, i64 20}
!109 = !{!69, !12, i64 96}
!110 = !{!69, !7, i64 72}
!111 = !{!69, !7, i64 56}
!112 = !{!113, !12, i64 4}
!113 = !{!"_ZTS11ImFontGlyph", !14, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36}
!114 = !{!69, !12, i64 16}
!115 = !{!65, !10, i64 68}
!116 = !{!65, !10, i64 3704}
!117 = !{!65, !7, i64 3712}
!118 = !{!65, !7, i64 3720}
!119 = !{!41, !13, i64 6765}
!120 = !{!41, !10, i64 12628}
!121 = !{!42, !12, i64 296}
!122 = !{!17, !12, i64 0}
!123 = !{!43, !12, i64 56}
!124 = !{!42, !12, i64 300}
!125 = !{!6, !12, i64 212}
!126 = !{!42, !13, i64 193}
!127 = !{!65, !13, i64 3701}
!128 = !{!42, !12, i64 952}
!129 = !{!42, !12, i64 956}
!130 = !{!65, !13, i64 3700}
!131 = !{!42, !13, i64 322}
!132 = !{!42, !13, i64 323}
!133 = !{!42, !13, i64 321}
!134 = !{!14, !14, i64 0}
!135 = !{!42, !10, i64 5440}
!136 = distinct !{!136, !137}
!137 = !{!"llvm.loop.mustprogress"}
!138 = !{!41, !13, i64 6764}
!139 = !{!6, !12, i64 88}
!140 = !{!42, !7, i64 256}
!141 = !{!65, !10, i64 80}
!142 = !{!65, !10, i64 84}
!143 = distinct !{!143, !137}
!144 = !{!65, !10, i64 48}
!145 = !{!65, !10, i64 32}
!146 = !{!147, !10, i64 0}
!147 = !{!"_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}
!148 = !{!147, !10, i64 4}
!149 = !{!147, !7, i64 8}
!150 = !{!147, !10, i64 20}
!151 = !{!147, !7, i64 24}
!152 = !{!147, !10, i64 32}
!153 = !{!147, !10, i64 36}
!154 = !{!65, !10, i64 76}
!155 = !{!147, !10, i64 44}
!156 = !{!147, !10, i64 48}
!157 = !{!147, !10, i64 52}
!158 = !{!147, !13, i64 40}
!159 = !{!43, !12, i64 64}
!160 = !{!17, !12, i64 4}
!161 = distinct !{!161, !137}
!162 = !{!11, !12, i64 0}
!163 = !{!11, !12, i64 4}
!164 = !{!45, !12, i64 12}
!165 = !{!45, !12, i64 4}
!166 = distinct !{!166, !137}
!167 = !{!6, !7, i64 680}
!168 = distinct !{!168, !137}
!169 = !{!42, !12, i64 16}
!170 = !{!65, !12, i64 3696}
!171 = !{!41, !13, i64 202}
!172 = !{!41, !13, i64 12072}
!173 = !{!17, !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