; LLVM IR from drohmer/cgp :: library/third_party/src/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, %struct.ImVec2, float, float, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImGuiWindowTempData, %class.ImVector.3, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, %struct.ImRect, i32, float, %struct.ImGuiMenuColumns, %struct.ImGuiStorage, %class.ImVector.5, float, i32, ptr, %struct.ImDrawList, ptr, ptr, ptr, ptr, ptr, [2 x i32], [2 x %struct.ImRect], i32, i32, i32, i32, i32, i32 }
%struct.ImGuiWindowTempData = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, %struct.ImVec2, float, float, i32, i32, i32, i32, %struct.ImRect, %struct.ImRect, i8, i8, i32, i32, i32, i32, i8, %struct.ImVec2, %class.ImVector, ptr, i32, i32, i32, float, float, %class.ImVector.0, %class.ImVector.1, %class.ImVector.1, %class.ImVector.2, [6 x i32], %struct.ImVec1, %struct.ImVec1, %struct.ImVec1, ptr }
%class.ImVector = type { i32, i32, ptr }
%class.ImVector.0 = type { i32, i32, ptr }
%class.ImVector.1 = type { i32, i32, ptr }
%class.ImVector.2 = type { i32, i32, ptr }
%struct.ImVec1 = type { float }
%class.ImVector.3 = type { i32, i32, ptr }
%struct.ImGuiMenuColumns = type { i32, float, float, float, [4 x float], [4 x float] }
%struct.ImGuiStorage = type { %class.ImVector.4 }
%class.ImVector.4 = type { i32, i32, ptr }
%class.ImVector.5 = type { i32, i32, ptr }
%struct.ImDrawList = type { %class.ImVector.6, %class.ImVector.7, %class.ImVector.8, i32, ptr, ptr, i32, ptr, ptr, %class.ImVector.9, %class.ImVector.10, %class.ImVector.11, i32, i32, %class.ImVector.12 }
%class.ImVector.6 = type { i32, i32, ptr }
%class.ImVector.7 = type { i32, i32, ptr }
%class.ImVector.8 = type { i32, i32, ptr }
%class.ImVector.9 = type { i32, i32, ptr }
%class.ImVector.10 = type { i32, i32, ptr }
%class.ImVector.11 = type { i32, i32, ptr }
%class.ImVector.12 = type { i32, i32, ptr }
%struct.ImGuiContext = type <{ i8, i8, i8, [5 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, float, %struct.ImDrawListSharedData, double, i32, i32, i32, [4 x i8], %class.ImVector, %class.ImVector, %class.ImVector, %class.ImVector, %struct.ImGuiStorage, i32, [4 x i8], ptr, ptr, ptr, i32, i8, [3 x i8], i32, float, float, i32, i32, i32, float, i8, i8, i8, i8, i8, [3 x i8], i32, %struct.ImVec2, ptr, ptr, i32, i32, float, [4 x i8], ptr, %class.ImVector.13, %class.ImVector.14, %class.ImVector.15, %class.ImVector.16, %class.ImVector.16, %struct.ImGuiNextWindowData, i8, [3 x i8], i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.ImRect, i32, 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, %struct.ImDrawData, %struct.ImDrawDataBuilder, float, [4 x i8], %struct.ImDrawList, i32, i8, i8, [2 x i8], i32, i32, i32, [4 x i8], %struct.ImGuiPayload, %struct.ImRect, i32, i32, float, i32, i32, i32, %class.ImVector.18, [8 x i8], %struct.ImGuiInputTextState, %struct.ImFont, i32, i32, %struct.ImVec4, i8, [3 x i8], float, float, %struct.ImVec2, i32, %class.ImVector.19, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], float, %struct.ImGuiTextBuffer, %class.ImVector.21, %class.ImVector.22, i8, [7 x i8], ptr, %struct.ImGuiTextBuffer, i32, i32, [120 x float], i32, float, i32, i32, i32, [3073 x i8], [3 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [21 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, i8, i8, i8, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i8, i8, i8, i8, [512 x i8], [17 x i16], [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 float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float] }
%struct.ImGuiStyle = type { float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, float, float, float, float, %struct.ImVec2, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, float, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, i8, i8, float, [43 x %struct.ImVec4] }
%struct.ImDrawListSharedData = type { %struct.ImVec2, ptr, float, float, %struct.ImVec4, [12 x %struct.ImVec2] }
%class.ImVector.13 = type { i32, i32, ptr }
%class.ImVector.14 = type { i32, i32, ptr }
%class.ImVector.15 = type { i32, i32, ptr }
%class.ImVector.16 = type { i32, i32, ptr }
%struct.ImGuiNextWindowData = type <{ i32, i32, i32, i32, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, i8, [3 x i8], %struct.ImRect, ptr, ptr, float, %struct.ImVec2, [4 x i8] }>
%struct.ImGuiNavMoveResult = type <{ i32, [4 x i8], ptr, float, float, float, %struct.ImRect, [4 x i8] }>
%struct.ImDrawData = type <{ i8, [7 x i8], ptr, i32, i32, i32, %struct.ImVec2, %struct.ImVec2, [4 x i8] }>
%struct.ImDrawDataBuilder = type { [2 x %class.ImVector.17] }
%class.ImVector.17 = type { i32, i32, ptr }
%struct.ImGuiPayload = type <{ ptr, i32, i32, i32, i32, [33 x i8], i8, i8, [5 x i8] }>
%class.ImVector.18 = type { i32, i32, ptr }
%struct.ImGuiInputTextState = type { i32, %class.ImVector.7, %class.ImVector.19, %class.ImVector.19, i32, i32, i32, float, %"struct.ImGuiStb::STB_TexteditState", float, i8, i8, i32, ptr, ptr }
%"struct.ImGuiStb::STB_TexteditState" = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %"struct.ImGuiStb::StbUndoState" }
%"struct.ImGuiStb::StbUndoState" = type { [99 x %"struct.ImGuiStb::StbUndoRecord"], [999 x i16], i16, i16, i32, i32 }
%"struct.ImGuiStb::StbUndoRecord" = type { i32, i32, i32, i32 }
%struct.ImFont = type { float, float, %struct.ImVec2, %class.ImVector.20, %class.ImVector.1, %class.ImVector.7, ptr, float, i16, i16, ptr, ptr, float, float, i8, i32 }
%class.ImVector.20 = type { i32, i32, ptr }
%class.ImVector.19 = type { i32, i32, ptr }
%class.ImVector.21 = type { i32, i32, ptr }
%class.ImVector.22 = type { i32, i32, ptr }
%struct.ImGuiTextBuffer = type { %class.ImVector.19 }
%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 [93 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [120 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_number = 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

declare noundef float @_ZN5ImGui17GetTextLineHeightEv() #5

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

; Function Attrs: 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 <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) #5

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

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

; 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 void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) #5

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

declare noundef float @_ZN5ImGui13CalcItemWidthEv() #5

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

declare void @_ZN5ImGui13ClearActiveIDEv() #5

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) #5

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

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

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984), ptr noundef, ptr noundef) #5

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) #5

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

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

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

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) #5

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

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

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

; 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 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowjb(ptr noundef, i32 noundef, i1 noundef zeroext) #5

declare void @_ZN5ImGui10BeginGroupEv() #5

declare void @_ZN5ImGui8EndGroupEv() #5

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

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

156:                                              ; preds = %7
  store i1 false, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2811

157:                                              ; preds = %7
  %158 = load i32, ptr %13, align 4, !tbaa !9
  %159 = and i32 %158, 128
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %165

161:                                              ; preds = %157
  %162 = load i32, ptr %13, align 4, !tbaa !9
  %163 = and i32 %162, 1048576
  %164 = icmp ne i32 %163, 0
  br label %165

165:                                              ; preds = %161, %157
  %166 = phi i1 [ false, %157 ], [ %164, %161 ]
  %167 = xor i1 %166, true
  br i1 %167, label %168, label %169

168:                                              ; preds = %165
  br label %171

169:                                              ; preds = %165
  call void @__assert_fail(ptr noundef @.str.45, ptr noundef @.str.1, i32 noundef 3120, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

170:                                              ; No predecessors!
  br label %171

171:                                              ; preds = %170, %168
  %172 = load i32, ptr %13, align 4, !tbaa !9
  %173 = and i32 %172, 64
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %179

175:                                              ; preds = %171
  %176 = load i32, ptr %13, align 4, !tbaa !9
  %177 = and i32 %176, 1024
  %178 = icmp ne i32 %177, 0
  br label %179

179:                                              ; preds = %175, %171
  %180 = phi i1 [ false, %171 ], [ %178, %175 ]
  %181 = xor i1 %180, true
  br i1 %181, label %182, label %183

182:                                              ; preds = %179
  br label %185

183:                                              ; preds = %179
  call void @__assert_fail(ptr noundef @.str.46, ptr noundef @.str.1, i32 noundef 3121, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

184:                                              ; No predecessors!
  br label %185

185:                                              ; preds = %184, %182
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #13
  %186 = load ptr, ptr @GImGui, align 8, !tbaa !5
  store ptr %186, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #13
  %187 = load ptr, ptr %18, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.ImGuiContext, ptr %187, i32 0, i32 4
  store ptr %188, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  %189 = load ptr, ptr %18, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.ImGuiContext, ptr %189, i32 0, i32 5
  store ptr %190, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #13
  %191 = load i32, ptr %13, align 4, !tbaa !9
  %192 = and i32 %191, 1048576
  %193 = icmp ne i32 %192, 0
  %194 = zext i1 %193 to i8
  store i8 %194, ptr %21, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #13
  %195 = load i32, ptr %13, align 4, !tbaa !9
  %196 = and i32 %195, 16384
  %197 = icmp eq i32 %196, 0
  %198 = zext i1 %197 to i8
  store i8 %198, ptr %22, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #13
  %199 = load i32, ptr %13, align 4, !tbaa !9
  %200 = and i32 %199, 32768
  %201 = icmp ne i32 %200, 0
  %202 = zext i1 %201 to i8
  store i8 %202, ptr %23, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #13
  %203 = load i32, ptr %13, align 4, !tbaa !9
  %204 = and i32 %203, 65536
  %205 = icmp eq i32 %204, 0
  %206 = zext i1 %205 to i8
  store i8 %206, ptr %24, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #13
  %207 = load i32, ptr %13, align 4, !tbaa !9
  %208 = and i32 %207, 262144
  %209 = icmp ne i32 %208, 0
  %210 = zext i1 %209 to i8
  store i8 %210, ptr %25, align 1, !tbaa !38
  %211 = load i8, ptr %25, align 1, !tbaa !38, !range !36, !noundef !37
  %212 = trunc i8 %211 to i1
  br i1 %212, label %213, label %220

213:                                              ; preds = %185
  %214 = load ptr, ptr %14, align 8, !tbaa !5
  %215 = icmp ne ptr %214, null
  br i1 %215, label %216, label %217

216:                                              ; preds = %213
  br label %219

217:                                              ; preds = %213
  call void @__assert_fail(ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 3133, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

218:                                              ; No predecessors!
  br label %219

219:                                              ; preds = %218, %216
  br label %220

220:                                              ; preds = %219, %185
  %221 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %222 = trunc i8 %221 to i1
  br i1 %222, label %223, label %224

223:                                              ; preds = %220
  call void @_ZN5ImGui10BeginGroupEv()
  br label %224

224:                                              ; preds = %223, %220
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #13
  %225 = load ptr, ptr %16, align 8, !tbaa !5
  %226 = load ptr, ptr %9, align 8, !tbaa !5
  %227 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %225, ptr noundef %226, ptr noundef null)
  store i32 %227, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #13
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %228, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %229, ptr %27, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #13
  %230 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 4 %230, i64 8, i1 false), !tbaa.struct !39
  %231 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %232 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %233 = trunc i8 %232 to i1
  br i1 %233, label %234, label %237

234:                                              ; preds = %224
  %235 = call noundef float @_ZN5ImGui17GetTextLineHeightEv()
  %236 = fmul float %235, 8.000000e+00
  br label %240

237:                                              ; preds = %224
  %238 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 1
  %239 = load float, ptr %238, align 4, !tbaa !41
  br label %240

240:                                              ; preds = %237, %234
  %241 = phi float [ %236, %234 ], [ %239, %237 ]
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.ImGuiStyle, ptr %242, i32 0, i32 10
  %244 = getelementptr inbounds %struct.ImVec2, ptr %243, i32 0, i32 1
  %245 = load float, ptr %244, align 4, !tbaa !42
  %246 = call float @llvm.fmuladd.f32(float %245, float 2.000000e+00, float %241)
  %247 = load <2 x float>, ptr %29, align 4
  %248 = call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %247, float noundef %231, float noundef %246)
  store <2 x float> %248, ptr %28, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #13
  %249 = load ptr, ptr %16, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.ImGuiWindow, ptr %249, i32 0, i32 45
  %251 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %250, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #13
  %252 = load ptr, ptr %16, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.ImGuiWindow, ptr %252, i32 0, i32 45
  %254 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %253, i32 0, i32 0
  %255 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %254, ptr noundef nonnull align 4 dereferenceable(8) %28)
  store <2 x float> %255, ptr %31, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %30, ptr noundef nonnull align 4 dereferenceable(8) %251, ptr noundef nonnull align 4 dereferenceable(8) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #13
  %256 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #13
  %257 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #13
  %258 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %259 = load float, ptr %258, align 4, !tbaa !44
  %260 = fcmp ogt float %259, 0.000000e+00
  br i1 %260, label %261, label %269

261:                                              ; preds = %240
  %262 = load ptr, ptr %20, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.ImGuiStyle, ptr %262, i32 0, i32 14
  %264 = getelementptr inbounds %struct.ImVec2, ptr %263, i32 0, i32 0
  %265 = load float, ptr %264, align 4, !tbaa !45
  %266 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %267 = load float, ptr %266, align 4, !tbaa !44
  %268 = fadd float %265, %267
  br label %270

269:                                              ; preds = %240
  br label %270

270:                                              ; preds = %269, %261
  %271 = phi float [ %268, %261 ], [ 0.000000e+00, %269 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %34, float noundef %271, float noundef 0.000000e+00)
  %272 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %257, ptr noundef nonnull align 4 dereferenceable(8) %34)
  store <2 x float> %272, ptr %33, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(8) %256, ptr noundef nonnull align 4 dereferenceable(8) %33)
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #13
  %273 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %273, ptr %35, align 8, !tbaa !5
  %274 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %275 = trunc i8 %274 to i1
  br i1 %275, label %276, label %302

276:                                              ; preds = %270
  %277 = load i32, ptr %26, align 4, !tbaa !9
  %278 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef %277, ptr noundef %30)
  %279 = load i32, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #13
  %280 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %30)
  store <2 x float> %280, ptr %36, align 4
  %281 = call noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef %279, ptr noundef nonnull align 4 dereferenceable(8) %36, i32 noundef 0)
  %282 = xor i1 %281, true
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #13
  br i1 %282, label %283, label %284

283:                                              ; preds = %276
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  store i1 false, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2810

284:                                              ; preds = %276
  %285 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  store ptr %285, ptr %35, align 8, !tbaa !5
  %286 = load ptr, ptr %35, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.ImGuiWindow, ptr %286, i32 0, i32 45
  %288 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %287, i32 0, i32 18
  %289 = load i32, ptr %288, align 4, !tbaa !46
  %290 = load ptr, ptr %35, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.ImGuiWindow, ptr %290, i32 0, i32 45
  %292 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %291, i32 0, i32 20
  %293 = load i32, ptr %292, align 4, !tbaa !47
  %294 = or i32 %293, %289
  store i32 %294, ptr %292, align 4, !tbaa !47
  %295 = load ptr, ptr %35, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.ImGuiWindow, ptr %295, i32 0, i32 17
  %297 = getelementptr inbounds %struct.ImVec2, ptr %296, i32 0, i32 0
  %298 = load float, ptr %297, align 8, !tbaa !48
  %299 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 0
  %300 = load float, ptr %299, align 4, !tbaa !44
  %301 = fsub float %300, %298
  store float %301, ptr %299, align 4, !tbaa !44
  br label %311

302:                                              ; preds = %270
  %303 = load ptr, ptr %20, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.ImGuiStyle, ptr %303, i32 0, i32 10
  %305 = getelementptr inbounds %struct.ImVec2, ptr %304, i32 0, i32 1
  %306 = load float, ptr %305, align 4, !tbaa !42
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %32, float noundef %306)
  %307 = load i32, ptr %26, align 4, !tbaa !9
  %308 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef %307, ptr noundef %30)
  br i1 %308, label %310, label %309

309:                                              ; preds = %302
  store i1 false, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2810

310:                                              ; preds = %302
  br label %311

311:                                              ; preds = %310, %284
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #13
  %312 = load i32, ptr %26, align 4, !tbaa !9
  %313 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %30, i32 noundef %312)
  %314 = zext i1 %313 to i8
  store i8 %314, ptr %37, align 1, !tbaa !38
  %315 = load i8, ptr %37, align 1, !tbaa !38, !range !36, !noundef !37
  %316 = trunc i8 %315 to i1
  br i1 %316, label %317, label %320

317:                                              ; preds = %311
  %318 = load ptr, ptr %18, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.ImGuiContext, ptr %318, i32 0, i32 106
  store i32 1, ptr %319, align 8, !tbaa !49
  br label %320

320:                                              ; preds = %317, %311
  %321 = load i8, ptr %23, align 1, !tbaa !38, !range !36, !noundef !37
  %322 = trunc i8 %321 to i1
  br i1 %322, label %323, label %397

323:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #13
  %324 = load ptr, ptr %18, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.ImGuiContext, ptr %324, i32 0, i32 6
  %326 = load ptr, ptr %325, align 8, !tbaa !77
  %327 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(112) %326, i16 noundef zeroext 42)
  store ptr %327, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #13
  %328 = load ptr, ptr %18, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.ImGuiContext, ptr %328, i32 0, i32 125
  store ptr %329, ptr %39, align 8, !tbaa !5
  %330 = load ptr, ptr %18, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.ImGuiContext, ptr %330, i32 0, i32 6
  %332 = load ptr, ptr %331, align 8, !tbaa !77
  %333 = getelementptr inbounds %struct.ImFont, ptr %332, i32 0, i32 0
  %334 = load float, ptr %333, align 8, !tbaa !78
  %335 = load ptr, ptr %39, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ImFont, ptr %335, i32 0, i32 0
  store float %334, ptr %336, align 8, !tbaa !78
  %337 = load ptr, ptr %18, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.ImGuiContext, ptr %337, i32 0, i32 6
  %339 = load ptr, ptr %338, align 8, !tbaa !77
  %340 = getelementptr inbounds %struct.ImFont, ptr %339, i32 0, i32 1
  %341 = load float, ptr %340, align 4, !tbaa !79
  %342 = load ptr, ptr %39, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.ImFont, ptr %342, i32 0, i32 1
  store float %341, ptr %343, align 4, !tbaa !79
  %344 = load ptr, ptr %18, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.ImGuiContext, ptr %344, i32 0, i32 6
  %346 = load ptr, ptr %345, align 8, !tbaa !77
  %347 = getelementptr inbounds %struct.ImFont, ptr %346, i32 0, i32 2
  %348 = load ptr, ptr %39, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.ImFont, ptr %348, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %349, ptr align 8 %347, i64 8, i1 false), !tbaa.struct !39
  %350 = load ptr, ptr %18, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.ImGuiContext, ptr %350, i32 0, i32 6
  %352 = load ptr, ptr %351, align 8, !tbaa !77
  %353 = getelementptr inbounds %struct.ImFont, ptr %352, i32 0, i32 12
  %354 = load float, ptr %353, align 8, !tbaa !80
  %355 = load ptr, ptr %39, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.ImFont, ptr %355, i32 0, i32 12
  store float %354, ptr %356, align 8, !tbaa !80
  %357 = load ptr, ptr %18, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.ImGuiContext, ptr %357, i32 0, i32 6
  %359 = load ptr, ptr %358, align 8, !tbaa !77
  %360 = getelementptr inbounds %struct.ImFont, ptr %359, i32 0, i32 13
  %361 = load float, ptr %360, align 4, !tbaa !81
  %362 = load ptr, ptr %39, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.ImFont, ptr %362, i32 0, i32 13
  store float %361, ptr %363, align 4, !tbaa !81
  %364 = load ptr, ptr %18, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiContext, ptr %364, i32 0, i32 6
  %366 = load ptr, ptr %365, align 8, !tbaa !77
  %367 = getelementptr inbounds %struct.ImFont, ptr %366, i32 0, i32 11
  %368 = load ptr, ptr %367, align 8, !tbaa !82
  %369 = load ptr, ptr %39, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.ImFont, ptr %369, i32 0, i32 11
  store ptr %368, ptr %370, align 8, !tbaa !82
  %371 = load ptr, ptr %38, align 8, !tbaa !5
  %372 = load ptr, ptr %39, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.ImFont, ptr %372, i32 0, i32 6
  store ptr %371, ptr %373, align 8, !tbaa !83
  %374 = load ptr, ptr %38, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.ImFontGlyph, ptr %374, i32 0, i32 1
  %376 = load float, ptr %375, align 4, !tbaa !84
  %377 = load ptr, ptr %39, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.ImFont, ptr %377, i32 0, i32 7
  store float %376, ptr %378, align 8, !tbaa !86
  %379 = load ptr, ptr %39, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.ImFont, ptr %379, i32 0, i32 3
  %381 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %380)
  br i1 %381, label %382, label %390

382:                                              ; preds = %323
  %383 = load ptr, ptr %39, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.ImFont, ptr %383, i32 0, i32 4
  %385 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %384)
  br i1 %385, label %386, label %390

386:                                              ; preds = %382
  %387 = load ptr, ptr %39, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.ImFont, ptr %387, i32 0, i32 5
  %389 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %388)
  br label %390

390:                                              ; preds = %386, %382, %323
  %391 = phi i1 [ false, %382 ], [ false, %323 ], [ %389, %386 ]
  br i1 %391, label %392, label %393

392:                                              ; preds = %390
  br label %395

393:                                              ; preds = %390
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str.1, i32 noundef 3180, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

394:                                              ; No predecessors!
  br label %395

395:                                              ; preds = %394, %392
  %396 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef %396)
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #13
  br label %397

397:                                              ; preds = %395, %320
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #13
  %398 = load ptr, ptr %18, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.ImGuiContext, ptr %398, i32 0, i32 124
  store ptr %399, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #13
  %400 = load ptr, ptr %16, align 8, !tbaa !5
  %401 = load i32, ptr %26, align 4, !tbaa !9
  %402 = load i32, ptr %13, align 4, !tbaa !9
  %403 = and i32 %402, 1088
  %404 = icmp eq i32 %403, 0
  %405 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowjb(ptr noundef %400, i32 noundef %401, i1 noundef zeroext %404)
  %406 = zext i1 %405 to i8
  store i8 %406, ptr %41, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #13
  %407 = load i8, ptr %41, align 1, !tbaa !38, !range !36, !noundef !37
  %408 = trunc i8 %407 to i1
  br i1 %408, label %409, label %417

409:                                              ; preds = %397
  %410 = load ptr, ptr %16, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.ImGuiWindow, ptr %410, i32 0, i32 68
  %412 = load i32, ptr %411, align 8, !tbaa !87
  %413 = load ptr, ptr %16, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.ImGuiWindow, ptr %413, i32 0, i32 70
  %415 = load i32, ptr %414, align 8, !tbaa !88
  %416 = icmp eq i32 %412, %415
  br label %417

417:                                              ; preds = %409, %397
  %418 = phi i1 [ false, %397 ], [ %416, %409 ]
  %419 = zext i1 %418 to i8
  store i8 %419, ptr %42, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #13
  %420 = load i8, ptr %41, align 1, !tbaa !38, !range !36, !noundef !37
  %421 = trunc i8 %420 to i1
  br i1 %421, label %422, label %426

422:                                              ; preds = %417
  %423 = load i8, ptr %42, align 1, !tbaa !38, !range !36, !noundef !37
  %424 = trunc i8 %423 to i1
  %425 = xor i1 %424, true
  br label %426

426:                                              ; preds = %422, %417
  %427 = phi i1 [ false, %417 ], [ %425, %422 ]
  %428 = zext i1 %427 to i8
  store i8 %428, ptr %43, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #13
  %429 = load i8, ptr %37, align 1, !tbaa !38, !range !36, !noundef !37
  %430 = trunc i8 %429 to i1
  br i1 %430, label %431, label %437

431:                                              ; preds = %426
  %432 = load ptr, ptr %19, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.ImGuiIO, ptr %432, i32 0, i32 59
  %434 = getelementptr inbounds [5 x i8], ptr %433, i64 0, i64 0
  %435 = load i8, ptr %434, align 8, !tbaa !38, !range !36, !noundef !37
  %436 = trunc i8 %435 to i1
  br label %437

437:                                              ; preds = %431, %426
  %438 = phi i1 [ false, %426 ], [ %436, %431 ]
  %439 = zext i1 %438 to i8
  store i8 %439, ptr %44, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #13
  %440 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %441 = trunc i8 %440 to i1
  br i1 %441, label %442, label %460

442:                                              ; preds = %437
  %443 = load ptr, ptr %18, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.ImGuiContext, ptr %443, i32 0, i32 31
  %445 = load i32, ptr %444, align 4, !tbaa !89
  %446 = icmp eq i32 %445, 0
  br i1 %446, label %447, label %460

447:                                              ; preds = %442
  %448 = load ptr, ptr %40, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %448, i32 0, i32 0
  %450 = load i32, ptr %449, align 8, !tbaa !90
  %451 = load i32, ptr %26, align 4, !tbaa !9
  %452 = icmp eq i32 %450, %451
  br i1 %452, label %453, label %460

453:                                              ; preds = %447
  %454 = load ptr, ptr %18, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.ImGuiContext, ptr %454, i32 0, i32 32
  %456 = load i32, ptr %455, align 8, !tbaa !91
  %457 = load ptr, ptr %35, align 8, !tbaa !5
  %458 = call noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %457, ptr noundef @.str.4, ptr noundef null)
  %459 = icmp eq i32 %456, %458
  br label %460

460:                                              ; preds = %453, %447, %442, %437
  %461 = phi i1 [ false, %447 ], [ false, %442 ], [ false, %437 ], [ %459, %453 ]
  %462 = zext i1 %461 to i8
  store i8 %462, ptr %45, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #13
  %463 = load ptr, ptr %18, align 8, !tbaa !5
  %464 = getelementptr inbounds %struct.ImGuiContext, ptr %463, i32 0, i32 31
  %465 = load i32, ptr %464, align 4, !tbaa !89
  %466 = load i32, ptr %26, align 4, !tbaa !9
  %467 = icmp ne i32 %465, %466
  br i1 %467, label %468, label %489

468:                                              ; preds = %460
  %469 = load ptr, ptr %18, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiContext, ptr %469, i32 0, i32 64
  %471 = load i32, ptr %470, align 8, !tbaa !92
  %472 = load i32, ptr %26, align 4, !tbaa !9
  %473 = icmp eq i32 %471, %472
  br i1 %473, label %487, label %474

474:                                              ; preds = %468
  %475 = load ptr, ptr %18, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.ImGuiContext, ptr %475, i32 0, i32 61
  %477 = load i32, ptr %476, align 4, !tbaa !93
  %478 = load i32, ptr %26, align 4, !tbaa !9
  %479 = icmp eq i32 %477, %478
  br i1 %479, label %480, label %485

480:                                              ; preds = %474
  %481 = load ptr, ptr %18, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.ImGuiContext, ptr %481, i32 0, i32 68
  %483 = load i32, ptr %482, align 8, !tbaa !94
  %484 = icmp eq i32 %483, 3
  br label %485

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

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

489:                                              ; preds = %487, %460
  %490 = phi i1 [ false, %460 ], [ %488, %487 ]
  %491 = zext i1 %490 to i8
  store i8 %491, ptr %46, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #13
  store i8 0, ptr %47, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #13
  %492 = load ptr, ptr %18, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.ImGuiContext, ptr %492, i32 0, i32 31
  %494 = load i32, ptr %493, align 4, !tbaa !89
  %495 = load i32, ptr %26, align 4, !tbaa !9
  %496 = icmp ne i32 %494, %495
  br i1 %496, label %497, label %508

497:                                              ; preds = %489
  %498 = load i32, ptr %13, align 4, !tbaa !9
  %499 = and i32 %498, 16
  %500 = icmp ne i32 %499, 0
  br i1 %500, label %504, label %501

501:                                              ; preds = %497
  %502 = load i8, ptr %46, align 1, !tbaa !38, !range !36, !noundef !37
  %503 = trunc i8 %502 to i1
  br i1 %503, label %504, label %508

504:                                              ; preds = %501, %497
  %505 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %506 = trunc i8 %505 to i1
  %507 = xor i1 %506, true
  br label %508

508:                                              ; preds = %504, %501, %489
  %509 = phi i1 [ false, %501 ], [ false, %489 ], [ %507, %504 ]
  %510 = zext i1 %509 to i8
  store i8 %510, ptr %48, align 1, !tbaa !38
  %511 = load i8, ptr %41, align 1, !tbaa !38, !range !36, !noundef !37
  %512 = trunc i8 %511 to i1
  br i1 %512, label %522, label %513

513:                                              ; preds = %508
  %514 = load i8, ptr %44, align 1, !tbaa !38, !range !36, !noundef !37
  %515 = trunc i8 %514 to i1
  br i1 %515, label %522, label %516

516:                                              ; preds = %513
  %517 = load i8, ptr %45, align 1, !tbaa !38, !range !36, !noundef !37
  %518 = trunc i8 %517 to i1
  br i1 %518, label %522, label %519

519:                                              ; preds = %516
  %520 = load i8, ptr %46, align 1, !tbaa !38, !range !36, !noundef !37
  %521 = trunc i8 %520 to i1
  br i1 %521, label %522, label %648

522:                                              ; preds = %519, %516, %513, %508
  %523 = load ptr, ptr %18, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.ImGuiContext, ptr %523, i32 0, i32 31
  %525 = load i32, ptr %524, align 4, !tbaa !89
  %526 = load i32, ptr %26, align 4, !tbaa !9
  %527 = icmp ne i32 %525, %526
  br i1 %527, label %528, label %630

528:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #13
  %529 = load ptr, ptr %40, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %529, i32 0, i32 5
  %531 = load i32, ptr %530, align 4, !tbaa !95
  store i32 %531, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #13
  %532 = load ptr, ptr %10, align 8, !tbaa !5
  %533 = call i64 @strlen(ptr noundef %532) #15
  %534 = trunc i64 %533 to i32
  store i32 %534, ptr %50, align 4, !tbaa !9
  %535 = load ptr, ptr %40, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %535, i32 0, i32 1
  %537 = load i32, ptr %11, align 4, !tbaa !9
  %538 = add nsw i32 %537, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %536, i32 noundef %538)
  %539 = load ptr, ptr %40, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %539, i32 0, i32 2
  %541 = load i32, ptr %50, align 4, !tbaa !9
  %542 = add nsw i32 %541, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %540, i32 noundef %542)
  %543 = load ptr, ptr %40, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %543, i32 0, i32 2
  %545 = getelementptr inbounds %class.ImVector.19, ptr %544, i32 0, i32 2
  %546 = load ptr, ptr %545, align 8, !tbaa !96
  %547 = load ptr, ptr %10, align 8, !tbaa !5
  %548 = load i32, ptr %50, align 4, !tbaa !9
  %549 = add nsw i32 %548, 1
  %550 = sext i32 %549 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %546, ptr align 1 %547, i64 %550, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #13
  store ptr null, ptr %51, align 8, !tbaa !5
  %551 = load ptr, ptr %40, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %551, i32 0, i32 1
  %553 = getelementptr inbounds %class.ImVector.7, ptr %552, i32 0, i32 2
  %554 = load ptr, ptr %553, align 8, !tbaa !97
  %555 = load i32, ptr %11, align 4, !tbaa !9
  %556 = load ptr, ptr %10, align 8, !tbaa !5
  %557 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %554, i32 noundef %555, ptr noundef %556, ptr noundef null, ptr noundef %51)
  %558 = load ptr, ptr %40, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %558, i32 0, i32 5
  store i32 %557, ptr %559, align 4, !tbaa !95
  %560 = load ptr, ptr %51, align 8, !tbaa !5
  %561 = load ptr, ptr %10, align 8, !tbaa !5
  %562 = ptrtoint ptr %560 to i64
  %563 = ptrtoint ptr %561 to i64
  %564 = sub i64 %562, %563
  %565 = trunc i64 %564 to i32
  %566 = load ptr, ptr %40, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %566, i32 0, i32 4
  store i32 %565, ptr %567, align 8, !tbaa !98
  %568 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3720) %568)
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #13
  %569 = load ptr, ptr %40, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %569, i32 0, i32 0
  %571 = load i32, ptr %570, align 8, !tbaa !90
  %572 = load i32, ptr %26, align 4, !tbaa !9
  %573 = icmp eq i32 %571, %572
  br i1 %573, label %574, label %580

574:                                              ; preds = %528
  %575 = load i32, ptr %49, align 4, !tbaa !9
  %576 = load ptr, ptr %40, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %576, i32 0, i32 5
  %578 = load i32, ptr %577, align 4, !tbaa !95
  %579 = icmp eq i32 %575, %578
  br label %580

580:                                              ; preds = %574, %528
  %581 = phi i1 [ false, %528 ], [ %579, %574 ]
  %582 = zext i1 %581 to i8
  store i8 %582, ptr %52, align 1, !tbaa !38
  %583 = load i8, ptr %52, align 1, !tbaa !38, !range !36, !noundef !37
  %584 = trunc i8 %583 to i1
  br i1 %584, label %585, label %587

585:                                              ; preds = %580
  %586 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3720) %586)
  br label %606

587:                                              ; preds = %580
  %588 = load i32, ptr %26, align 4, !tbaa !9
  %589 = load ptr, ptr %40, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %589, i32 0, i32 0
  store i32 %588, ptr %590, align 8, !tbaa !90
  %591 = load ptr, ptr %40, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %591, i32 0, i32 7
  store float 0.000000e+00, ptr %592, align 4, !tbaa !99
  %593 = load ptr, ptr %40, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %593, i32 0, i32 8
  %595 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %596 = trunc i8 %595 to i1
  %597 = xor i1 %596, true
  %598 = zext i1 %597 to i32
  call void @_ZN8ImGuiStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef %594, i32 noundef %598)
  %599 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %600 = trunc i8 %599 to i1
  br i1 %600, label %605, label %601

601:                                              ; preds = %587
  %602 = load i8, ptr %42, align 1, !tbaa !38, !range !36, !noundef !37
  %603 = trunc i8 %602 to i1
  br i1 %603, label %604, label %605

604:                                              ; preds = %601
  store i8 1, ptr %48, align 1, !tbaa !38
  br label %605

605:                                              ; preds = %604, %601, %587
  br label %606

606:                                              ; preds = %605, %585
  %607 = load i32, ptr %13, align 4, !tbaa !9
  %608 = and i32 %607, 8192
  %609 = icmp ne i32 %608, 0
  br i1 %609, label %610, label %614

610:                                              ; preds = %606
  %611 = load ptr, ptr %40, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %611, i32 0, i32 8
  %613 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %612, i32 0, i32 3
  store i8 1, ptr %613, align 4, !tbaa !100
  br label %614

614:                                              ; preds = %610, %606
  %615 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %616 = trunc i8 %615 to i1
  br i1 %616, label %629, label %617

617:                                              ; preds = %614
  %618 = load i8, ptr %43, align 1, !tbaa !38, !range !36, !noundef !37
  %619 = trunc i8 %618 to i1
  br i1 %619, label %628, label %620

620:                                              ; preds = %617
  %621 = load i8, ptr %44, align 1, !tbaa !38, !range !36, !noundef !37
  %622 = trunc i8 %621 to i1
  br i1 %622, label %623, label %629

623:                                              ; preds = %620
  %624 = load ptr, ptr %19, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.ImGuiIO, ptr %624, i32 0, i32 35
  %626 = load i8, ptr %625, align 8, !tbaa !101, !range !36, !noundef !37
  %627 = trunc i8 %626 to i1
  br i1 %627, label %628, label %629

628:                                              ; preds = %623, %617
  store i8 1, ptr %48, align 1, !tbaa !38
  br label %629

629:                                              ; preds = %628, %623, %620, %614
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #13
  br label %630

630:                                              ; preds = %629, %522
  %631 = load i32, ptr %26, align 4, !tbaa !9
  %632 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %631, ptr noundef %632)
  %633 = load i32, ptr %26, align 4, !tbaa !9
  %634 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %633, ptr noundef %634)
  %635 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef %635)
  %636 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %637 = trunc i8 %636 to i1
  br i1 %637, label %647, label %638

638:                                              ; preds = %630
  %639 = load i32, ptr %13, align 4, !tbaa !9
  %640 = and i32 %639, 128
  %641 = icmp ne i32 %640, 0
  br i1 %641, label %647, label %642

642:                                              ; preds = %638
  %643 = load ptr, ptr %18, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.ImGuiContext, ptr %643, i32 0, i32 41
  %645 = load i32, ptr %644, align 4, !tbaa !102
  %646 = or i32 %645, 12
  store i32 %646, ptr %644, align 4, !tbaa !102
  br label %647

647:                                              ; preds = %642, %638, %630
  br label %656

648:                                              ; preds = %519
  %649 = load ptr, ptr %19, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.ImGuiIO, ptr %649, i32 0, i32 59
  %651 = getelementptr inbounds [5 x i8], ptr %650, i64 0, i64 0
  %652 = load i8, ptr %651, align 8, !tbaa !38, !range !36, !noundef !37
  %653 = trunc i8 %652 to i1
  br i1 %653, label %654, label %655

654:                                              ; preds = %648
  store i8 1, ptr %47, align 1, !tbaa !38
  br label %655

655:                                              ; preds = %654, %648
  br label %656

656:                                              ; preds = %655, %647
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #13
  store i8 0, ptr %53, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #13
  store i8 0, ptr %54, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #13
  store i32 0, ptr %55, align 4, !tbaa !9
  %657 = load ptr, ptr %18, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.ImGuiContext, ptr %657, i32 0, i32 31
  %659 = load i32, ptr %658, align 4, !tbaa !89
  %660 = load i32, ptr %26, align 4, !tbaa !9
  %661 = icmp eq i32 %659, %660
  br i1 %661, label %662, label %952

662:                                              ; preds = %656
  %663 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %664 = trunc i8 %663 to i1
  br i1 %664, label %696, label %665

665:                                              ; preds = %662
  %666 = load ptr, ptr %18, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.ImGuiContext, ptr %666, i32 0, i32 35
  %668 = load i8, ptr %667, align 4, !tbaa !103, !range !36, !noundef !37
  %669 = trunc i8 %668 to i1
  br i1 %669, label %696, label %670

670:                                              ; preds = %665
  %671 = load ptr, ptr %40, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %671, i32 0, i32 1
  %673 = load i32, ptr %11, align 4, !tbaa !9
  %674 = add nsw i32 %673, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %672, i32 noundef %674)
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  store ptr null, ptr %56, align 8, !tbaa !5
  %675 = load ptr, ptr %40, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %675, i32 0, i32 1
  %677 = getelementptr inbounds %class.ImVector.7, ptr %676, i32 0, i32 2
  %678 = load ptr, ptr %677, align 8, !tbaa !97
  %679 = load ptr, ptr %40, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %679, i32 0, i32 1
  %681 = getelementptr inbounds %class.ImVector.7, ptr %680, i32 0, i32 0
  %682 = load i32, ptr %681, align 8, !tbaa !104
  %683 = load ptr, ptr %10, align 8, !tbaa !5
  %684 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %678, i32 noundef %682, ptr noundef %683, ptr noundef null, ptr noundef %56)
  %685 = load ptr, ptr %40, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %685, i32 0, i32 5
  store i32 %684, ptr %686, align 4, !tbaa !95
  %687 = load ptr, ptr %56, align 8, !tbaa !5
  %688 = load ptr, ptr %10, align 8, !tbaa !5
  %689 = ptrtoint ptr %687 to i64
  %690 = ptrtoint ptr %688 to i64
  %691 = sub i64 %689, %690
  %692 = trunc i64 %691 to i32
  %693 = load ptr, ptr %40, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %693, i32 0, i32 4
  store i32 %692, ptr %694, align 8, !tbaa !98
  %695 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3720) %695)
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  br label %696

696:                                              ; preds = %670, %665, %662
  %697 = load ptr, ptr %40, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %697, i32 0, i32 4
  %699 = load i32, ptr %698, align 8, !tbaa !98
  store i32 %699, ptr %55, align 4, !tbaa !9
  %700 = load i32, ptr %11, align 4, !tbaa !9
  %701 = load ptr, ptr %40, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %701, i32 0, i32 6
  store i32 %700, ptr %702, align 8, !tbaa !105
  %703 = load i32, ptr %13, align 4, !tbaa !9
  %704 = load ptr, ptr %40, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %704, i32 0, i32 12
  store i32 %703, ptr %705, align 4, !tbaa !106
  %706 = load ptr, ptr %14, align 8, !tbaa !5
  %707 = load ptr, ptr %40, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %707, i32 0, i32 13
  store ptr %706, ptr %708, align 8, !tbaa !107
  %709 = load ptr, ptr %15, align 8, !tbaa !5
  %710 = load ptr, ptr %40, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %710, i32 0, i32 14
  store ptr %709, ptr %711, align 8, !tbaa !108
  %712 = load ptr, ptr %19, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.ImGuiIO, ptr %712, i32 0, i32 32
  %714 = getelementptr inbounds [5 x i8], ptr %713, i64 0, i64 0
  %715 = load i8, ptr %714, align 8, !tbaa !38, !range !36, !noundef !37
  %716 = trunc i8 %715 to i1
  %717 = xor i1 %716, true
  %718 = load ptr, ptr %18, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.ImGuiContext, ptr %718, i32 0, i32 36
  %720 = zext i1 %717 to i8
  store i8 %720, ptr %719, align 1, !tbaa !109
  %721 = load ptr, ptr %18, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.ImGuiContext, ptr %721, i32 0, i32 155
  store i32 1, ptr %722, align 8, !tbaa !110
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #13
  %723 = load ptr, ptr %19, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.ImGuiIO, ptr %723, i32 0, i32 31
  %725 = getelementptr inbounds %struct.ImVec2, ptr %724, i32 0, i32 0
  %726 = load float, ptr %725, align 8, !tbaa !111
  %727 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %728 = getelementptr inbounds %struct.ImVec2, ptr %727, i32 0, i32 0
  %729 = load float, ptr %728, align 4, !tbaa !112
  %730 = fsub float %726, %729
  %731 = load ptr, ptr %20, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.ImGuiStyle, ptr %731, i32 0, i32 10
  %733 = getelementptr inbounds %struct.ImVec2, ptr %732, i32 0, i32 0
  %734 = load float, ptr %733, align 4, !tbaa !113
  %735 = fsub float %730, %734
  %736 = load ptr, ptr %40, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %736, i32 0, i32 7
  %738 = load float, ptr %737, align 4, !tbaa !99
  %739 = fadd float %735, %738
  store float %739, ptr %57, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #13
  %740 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %741 = trunc i8 %740 to i1
  br i1 %741, label %742, label %758

742:                                              ; preds = %696
  %743 = load ptr, ptr %19, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.ImGuiIO, ptr %743, i32 0, i32 31
  %745 = getelementptr inbounds %struct.ImVec2, ptr %744, i32 0, i32 1
  %746 = load float, ptr %745, align 4, !tbaa !114
  %747 = load ptr, ptr %35, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.ImGuiWindow, ptr %747, i32 0, i32 45
  %749 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %748, i32 0, i32 0
  %750 = getelementptr inbounds %struct.ImVec2, ptr %749, i32 0, i32 1
  %751 = load float, ptr %750, align 4, !tbaa !115
  %752 = fsub float %746, %751
  %753 = load ptr, ptr %20, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.ImGuiStyle, ptr %753, i32 0, i32 10
  %755 = getelementptr inbounds %struct.ImVec2, ptr %754, i32 0, i32 1
  %756 = load float, ptr %755, align 4, !tbaa !42
  %757 = fsub float %752, %756
  br label %763

758:                                              ; preds = %696
  %759 = load ptr, ptr %18, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.ImGuiContext, ptr %759, i32 0, i32 7
  %761 = load float, ptr %760, align 8, !tbaa !116
  %762 = fmul float %761, 5.000000e-01
  br label %763

763:                                              ; preds = %758, %742
  %764 = phi float [ %757, %742 ], [ %762, %758 ]
  store float %764, ptr %58, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #13
  %765 = load ptr, ptr %19, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.ImGuiIO, ptr %765, i32 0, i32 22
  %767 = load i8, ptr %766, align 1, !tbaa !117, !range !36, !noundef !37
  %768 = trunc i8 %767 to i1
  %769 = zext i1 %768 to i8
  store i8 %769, ptr %59, align 1, !tbaa !38
  %770 = load i8, ptr %48, align 1, !tbaa !38, !range !36, !noundef !37
  %771 = trunc i8 %770 to i1
  br i1 %771, label %784, label %772

772:                                              ; preds = %763
  %773 = load i8, ptr %37, align 1, !tbaa !38, !range !36, !noundef !37
  %774 = trunc i8 %773 to i1
  br i1 %774, label %775, label %788

775:                                              ; preds = %772
  %776 = load i8, ptr %59, align 1, !tbaa !38, !range !36, !noundef !37
  %777 = trunc i8 %776 to i1
  br i1 %777, label %788, label %778

778:                                              ; preds = %775
  %779 = load ptr, ptr %19, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.ImGuiIO, ptr %779, i32 0, i32 60
  %781 = getelementptr inbounds [5 x i8], ptr %780, i64 0, i64 0
  %782 = load i8, ptr %781, align 1, !tbaa !38, !range !36, !noundef !37
  %783 = trunc i8 %782 to i1
  br i1 %783, label %784, label %788

784:                                              ; preds = %778, %763
  %785 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3720) %785)
  %786 = load ptr, ptr %40, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %786, i32 0, i32 11
  store i8 1, ptr %787, align 1, !tbaa !118
  br label %860

788:                                              ; preds = %778, %775, %772
  %789 = load i8, ptr %37, align 1, !tbaa !38, !range !36, !noundef !37
  %790 = trunc i8 %789 to i1
  br i1 %790, label %791, label %803

791:                                              ; preds = %788
  %792 = load i8, ptr %59, align 1, !tbaa !38, !range !36, !noundef !37
  %793 = trunc i8 %792 to i1
  br i1 %793, label %794, label %803

794:                                              ; preds = %791
  %795 = load ptr, ptr %19, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.ImGuiIO, ptr %795, i32 0, i32 60
  %797 = getelementptr inbounds [5 x i8], ptr %796, i64 0, i64 0
  %798 = load i8, ptr %797, align 1, !tbaa !38, !range !36, !noundef !37
  %799 = trunc i8 %798 to i1
  br i1 %799, label %800, label %803

800:                                              ; preds = %794
  %801 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %801, i32 noundef 65548)
  %802 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %802, i32 noundef 196621)
  br label %859

803:                                              ; preds = %794, %791, %788
  %804 = load ptr, ptr %19, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.ImGuiIO, ptr %804, i32 0, i32 59
  %806 = getelementptr inbounds [5 x i8], ptr %805, i64 0, i64 0
  %807 = load i8, ptr %806, align 8, !tbaa !38, !range !36, !noundef !37
  %808 = trunc i8 %807 to i1
  br i1 %808, label %809, label %825

809:                                              ; preds = %803
  %810 = load ptr, ptr %40, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %810, i32 0, i32 11
  %812 = load i8, ptr %811, align 1, !tbaa !118, !range !36, !noundef !37
  %813 = trunc i8 %812 to i1
  br i1 %813, label %825, label %814

814:                                              ; preds = %809
  %815 = load i8, ptr %37, align 1, !tbaa !38, !range !36, !noundef !37
  %816 = trunc i8 %815 to i1
  br i1 %816, label %817, label %824

817:                                              ; preds = %814
  %818 = load ptr, ptr %40, align 8, !tbaa !5
  %819 = load ptr, ptr %40, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %819, i32 0, i32 8
  %821 = load float, ptr %57, align 4, !tbaa !40
  %822 = load float, ptr %58, align 4, !tbaa !40
  call void @_ZN8ImGuiStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %818, ptr noundef %820, float noundef %821, float noundef %822)
  %823 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3720) %823)
  br label %824

824:                                              ; preds = %817, %814
  br label %858

825:                                              ; preds = %809, %803
  %826 = load ptr, ptr %19, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.ImGuiIO, ptr %826, i32 0, i32 32
  %828 = getelementptr inbounds [5 x i8], ptr %827, i64 0, i64 0
  %829 = load i8, ptr %828, align 8, !tbaa !38, !range !36, !noundef !37
  %830 = trunc i8 %829 to i1
  br i1 %830, label %831, label %857

831:                                              ; preds = %825
  %832 = load ptr, ptr %40, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %832, i32 0, i32 11
  %834 = load i8, ptr %833, align 1, !tbaa !118, !range !36, !noundef !37
  %835 = trunc i8 %834 to i1
  br i1 %835, label %857, label %836

836:                                              ; preds = %831
  %837 = load ptr, ptr %19, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.ImGuiIO, ptr %837, i32 0, i32 55
  %839 = getelementptr inbounds %struct.ImVec2, ptr %838, i32 0, i32 0
  %840 = load float, ptr %839, align 4, !tbaa !119
  %841 = fcmp une float %840, 0.000000e+00
  br i1 %841, label %848, label %842

842:                                              ; preds = %836
  %843 = load ptr, ptr %19, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.ImGuiIO, ptr %843, i32 0, i32 55
  %845 = getelementptr inbounds %struct.ImVec2, ptr %844, i32 0, i32 1
  %846 = load float, ptr %845, align 4, !tbaa !120
  %847 = fcmp une float %846, 0.000000e+00
  br i1 %847, label %848, label %857

848:                                              ; preds = %842, %836
  %849 = load ptr, ptr %40, align 8, !tbaa !5
  %850 = load ptr, ptr %40, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %850, i32 0, i32 8
  %852 = load float, ptr %57, align 4, !tbaa !40
  %853 = load float, ptr %58, align 4, !tbaa !40
  call void @_ZN8ImGuiStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef %849, ptr noundef %851, float noundef %852, float noundef %853)
  %854 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3720) %854)
  %855 = load ptr, ptr %40, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %855, i32 0, i32 10
  store i8 1, ptr %856, align 8, !tbaa !121
  br label %857

857:                                              ; preds = %848, %842, %831, %825
  br label %858

858:                                              ; preds = %857, %824
  br label %859

859:                                              ; preds = %858, %800
  br label %860

860:                                              ; preds = %859, %784
  %861 = load ptr, ptr %40, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %861, i32 0, i32 11
  %863 = load i8, ptr %862, align 1, !tbaa !118, !range !36, !noundef !37
  %864 = trunc i8 %863 to i1
  br i1 %864, label %865, label %874

865:                                              ; preds = %860
  %866 = load ptr, ptr %19, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.ImGuiIO, ptr %866, i32 0, i32 32
  %868 = getelementptr inbounds [5 x i8], ptr %867, i64 0, i64 0
  %869 = load i8, ptr %868, align 8, !tbaa !38, !range !36, !noundef !37
  %870 = trunc i8 %869 to i1
  br i1 %870, label %874, label %871

871:                                              ; preds = %865
  %872 = load ptr, ptr %40, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %872, i32 0, i32 11
  store i8 0, ptr %873, align 1, !tbaa !118
  br label %874

874:                                              ; preds = %871, %865, %860
  %875 = load ptr, ptr %19, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.ImGuiIO, ptr %875, i32 0, i32 40
  %877 = getelementptr inbounds [17 x i16], ptr %876, i64 0, i64 0
  %878 = load i16, ptr %877, align 4, !tbaa !122
  %879 = icmp ne i16 %878, 0
  br i1 %879, label %880, label %951

880:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #13
  %881 = load ptr, ptr %19, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiIO, ptr %881, i32 0, i32 35
  %883 = load i8, ptr %882, align 8, !tbaa !101, !range !36, !noundef !37
  %884 = trunc i8 %883 to i1
  br i1 %884, label %885, label %890

885:                                              ; preds = %880
  %886 = load ptr, ptr %19, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.ImGuiIO, ptr %886, i32 0, i32 37
  %888 = load i8, ptr %887, align 2, !tbaa !123, !range !36, !noundef !37
  %889 = trunc i8 %888 to i1
  br i1 %889, label %890, label %900

890:                                              ; preds = %885, %880
  %891 = load i8, ptr %59, align 1, !tbaa !38, !range !36, !noundef !37
  %892 = trunc i8 %891 to i1
  br i1 %892, label %893, label %898

893:                                              ; preds = %890
  %894 = load ptr, ptr %19, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.ImGuiIO, ptr %894, i32 0, i32 38
  %896 = load i8, ptr %895, align 1, !tbaa !124, !range !36, !noundef !37
  %897 = trunc i8 %896 to i1
  br label %898

898:                                              ; preds = %893, %890
  %899 = phi i1 [ false, %890 ], [ %897, %893 ]
  br label %900

900:                                              ; preds = %898, %885
  %901 = phi i1 [ true, %885 ], [ %899, %898 ]
  %902 = zext i1 %901 to i8
  store i8 %902, ptr %60, align 1, !tbaa !38
  %903 = load i8, ptr %60, align 1, !tbaa !38, !range !36, !noundef !37
  %904 = trunc i8 %903 to i1
  br i1 %904, label %946, label %905

905:                                              ; preds = %900
  %906 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %907 = trunc i8 %906 to i1
  br i1 %907, label %908, label %946

908:                                              ; preds = %905
  %909 = load i8, ptr %46, align 1, !tbaa !38, !range !36, !noundef !37
  %910 = trunc i8 %909 to i1
  br i1 %910, label %946, label %911

911:                                              ; preds = %908
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  store i32 0, ptr %61, align 4, !tbaa !9
  br label %912

912:                                              ; preds = %942, %911
  %913 = load i32, ptr %61, align 4, !tbaa !9
  %914 = icmp slt i32 %913, 17
  br i1 %914, label %915, label %923

915:                                              ; preds = %912
  %916 = load ptr, ptr %19, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.ImGuiIO, ptr %916, i32 0, i32 40
  %918 = load i32, ptr %61, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds [17 x i16], ptr %917, i64 0, i64 %919
  %921 = load i16, ptr %920, align 2, !tbaa !122
  %922 = icmp ne i16 %921, 0
  br label %923

923:                                              ; preds = %915, %912
  %924 = phi i1 [ false, %912 ], [ %922, %915 ]
  br i1 %924, label %926, label %925

925:                                              ; preds = %923
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  br label %945

926:                                              ; preds = %923
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #13
  %927 = load ptr, ptr %19, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.ImGuiIO, ptr %927, i32 0, i32 40
  %929 = load i32, ptr %61, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds [17 x i16], ptr %928, i64 0, i64 %930
  %932 = load i16, ptr %931, align 2, !tbaa !122
  %933 = zext i16 %932 to i32
  store i32 %933, ptr %62, align 4, !tbaa !9
  %934 = load i32, ptr %13, align 4, !tbaa !9
  %935 = load ptr, ptr %14, align 8, !tbaa !5
  %936 = load ptr, ptr %15, align 8, !tbaa !5
  %937 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %62, i32 noundef %934, ptr noundef %935, ptr noundef %936)
  br i1 %937, label %938, label %941

938:                                              ; preds = %926
  %939 = load ptr, ptr %40, align 8, !tbaa !5
  %940 = load i32, ptr %62, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %939, i32 noundef %940)
  br label %941

941:                                              ; preds = %938, %926
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #13
  br label %942

942:                                              ; preds = %941
  %943 = load i32, ptr %61, align 4, !tbaa !9
  %944 = add nsw i32 %943, 1
  store i32 %944, ptr %61, align 4, !tbaa !9
  br label %912, !llvm.loop !125

945:                                              ; preds = %925
  br label %946

946:                                              ; preds = %945, %908, %905, %900
  %947 = load ptr, ptr %18, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.ImGuiContext, ptr %947, i32 0, i32 4
  %949 = getelementptr inbounds %struct.ImGuiIO, ptr %948, i32 0, i32 40
  %950 = getelementptr inbounds [17 x i16], ptr %949, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 4 %950, i8 0, i64 34, i1 false)
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #13
  br label %951

951:                                              ; preds = %946, %874
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #13
  br label %952

952:                                              ; preds = %951, %656
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #13
  store i8 0, ptr %63, align 1, !tbaa !38
  %953 = load ptr, ptr %18, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.ImGuiContext, ptr %953, i32 0, i32 31
  %955 = load i32, ptr %954, align 4, !tbaa !89
  %956 = load i32, ptr %26, align 4, !tbaa !9
  %957 = icmp eq i32 %955, %956
  br i1 %957, label %958, label %1668

958:                                              ; preds = %952
  %959 = load ptr, ptr %18, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.ImGuiContext, ptr %959, i32 0, i32 35
  %961 = load i8, ptr %960, align 4, !tbaa !103, !range !36, !noundef !37
  %962 = trunc i8 %961 to i1
  br i1 %962, label %1668, label %963

963:                                              ; preds = %958
  %964 = load i8, ptr %47, align 1, !tbaa !38, !range !36, !noundef !37
  %965 = trunc i8 %964 to i1
  br i1 %965, label %1668, label %966

966:                                              ; preds = %963
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #13
  %967 = load ptr, ptr %19, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.ImGuiIO, ptr %967, i32 0, i32 36
  %969 = load i8, ptr %968, align 1, !tbaa !127, !range !36, !noundef !37
  %970 = trunc i8 %969 to i1
  %971 = zext i1 %970 to i64
  %972 = select i1 %970, i32 131072, i32 0
  store i32 %972, ptr %64, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #13
  %973 = load ptr, ptr %19, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.ImGuiIO, ptr %973, i32 0, i32 22
  %975 = load i8, ptr %974, align 1, !tbaa !117, !range !36, !noundef !37
  %976 = trunc i8 %975 to i1
  %977 = zext i1 %976 to i8
  store i8 %977, ptr %65, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #13
  %978 = load i8, ptr %65, align 1, !tbaa !38, !range !36, !noundef !37
  %979 = trunc i8 %978 to i1
  br i1 %979, label %980, label %990

980:                                              ; preds = %966
  %981 = load ptr, ptr %19, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.ImGuiIO, ptr %981, i32 0, i32 38
  %983 = load i8, ptr %982, align 1, !tbaa !124, !range !36, !noundef !37
  %984 = trunc i8 %983 to i1
  br i1 %984, label %985, label %1011

985:                                              ; preds = %980
  %986 = load ptr, ptr %19, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImGuiIO, ptr %986, i32 0, i32 35
  %988 = load i8, ptr %987, align 8, !tbaa !101, !range !36, !noundef !37
  %989 = trunc i8 %988 to i1
  br i1 %989, label %1011, label %1000

990:                                              ; preds = %966
  %991 = load ptr, ptr %19, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.ImGuiIO, ptr %991, i32 0, i32 35
  %993 = load i8, ptr %992, align 8, !tbaa !101, !range !36, !noundef !37
  %994 = trunc i8 %993 to i1
  br i1 %994, label %995, label %1011

995:                                              ; preds = %990
  %996 = load ptr, ptr %19, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.ImGuiIO, ptr %996, i32 0, i32 38
  %998 = load i8, ptr %997, align 1, !tbaa !124, !range !36, !noundef !37
  %999 = trunc i8 %998 to i1
  br i1 %999, label %1011, label %1000

1000:                                             ; preds = %995, %985
  %1001 = load ptr, ptr %19, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.ImGuiIO, ptr %1001, i32 0, i32 37
  %1003 = load i8, ptr %1002, align 2, !tbaa !123, !range !36, !noundef !37
  %1004 = trunc i8 %1003 to i1
  br i1 %1004, label %1011, label %1005

1005:                                             ; preds = %1000
  %1006 = load ptr, ptr %19, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.ImGuiIO, ptr %1006, i32 0, i32 36
  %1008 = load i8, ptr %1007, align 1, !tbaa !127, !range !36, !noundef !37
  %1009 = trunc i8 %1008 to i1
  %1010 = xor i1 %1009, true
  br label %1011

1011:                                             ; preds = %1005, %1000, %995, %990, %985, %980
  %1012 = phi i1 [ false, %1000 ], [ false, %995 ], [ false, %990 ], [ false, %985 ], [ false, %980 ], [ %1010, %1005 ]
  %1013 = zext i1 %1012 to i8
  store i8 %1013, ptr %66, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #13
  %1014 = load i8, ptr %65, align 1, !tbaa !38, !range !36, !noundef !37
  %1015 = trunc i8 %1014 to i1
  br i1 %1015, label %1016, label %1037

1016:                                             ; preds = %1011
  %1017 = load ptr, ptr %19, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.ImGuiIO, ptr %1017, i32 0, i32 38
  %1019 = load i8, ptr %1018, align 1, !tbaa !124, !range !36, !noundef !37
  %1020 = trunc i8 %1019 to i1
  br i1 %1020, label %1021, label %1037

1021:                                             ; preds = %1016
  %1022 = load ptr, ptr %19, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.ImGuiIO, ptr %1022, i32 0, i32 36
  %1024 = load i8, ptr %1023, align 1, !tbaa !127, !range !36, !noundef !37
  %1025 = trunc i8 %1024 to i1
  br i1 %1025, label %1026, label %1037

1026:                                             ; preds = %1021
  %1027 = load ptr, ptr %19, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.ImGuiIO, ptr %1027, i32 0, i32 35
  %1029 = load i8, ptr %1028, align 8, !tbaa !101, !range !36, !noundef !37
  %1030 = trunc i8 %1029 to i1
  br i1 %1030, label %1037, label %1031

1031:                                             ; preds = %1026
  %1032 = load ptr, ptr %19, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.ImGuiIO, ptr %1032, i32 0, i32 37
  %1034 = load i8, ptr %1033, align 2, !tbaa !123, !range !36, !noundef !37
  %1035 = trunc i8 %1034 to i1
  %1036 = xor i1 %1035, true
  br label %1037

1037:                                             ; preds = %1031, %1026, %1021, %1016, %1011
  %1038 = phi i1 [ false, %1026 ], [ false, %1021 ], [ false, %1016 ], [ false, %1011 ], [ %1036, %1031 ]
  %1039 = zext i1 %1038 to i8
  store i8 %1039, ptr %67, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #13
  %1040 = load i8, ptr %65, align 1, !tbaa !38, !range !36, !noundef !37
  %1041 = trunc i8 %1040 to i1
  br i1 %1041, label %1042, label %1047

1042:                                             ; preds = %1037
  %1043 = load ptr, ptr %19, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.ImGuiIO, ptr %1043, i32 0, i32 37
  %1045 = load i8, ptr %1044, align 2, !tbaa !123, !range !36, !noundef !37
  %1046 = trunc i8 %1045 to i1
  br label %1052

1047:                                             ; preds = %1037
  %1048 = load ptr, ptr %19, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.ImGuiIO, ptr %1048, i32 0, i32 35
  %1050 = load i8, ptr %1049, align 8, !tbaa !101, !range !36, !noundef !37
  %1051 = trunc i8 %1050 to i1
  br label %1052

1052:                                             ; preds = %1047, %1042
  %1053 = phi i1 [ %1046, %1042 ], [ %1051, %1047 ]
  %1054 = zext i1 %1053 to i8
  store i8 %1054, ptr %68, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #13
  %1055 = load i8, ptr %65, align 1, !tbaa !38, !range !36, !noundef !37
  %1056 = trunc i8 %1055 to i1
  br i1 %1056, label %1057, label %1073

1057:                                             ; preds = %1052
  %1058 = load ptr, ptr %19, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.ImGuiIO, ptr %1058, i32 0, i32 38
  %1060 = load i8, ptr %1059, align 1, !tbaa !124, !range !36, !noundef !37
  %1061 = trunc i8 %1060 to i1
  br i1 %1061, label %1062, label %1073

1062:                                             ; preds = %1057
  %1063 = load ptr, ptr %19, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.ImGuiIO, ptr %1063, i32 0, i32 35
  %1065 = load i8, ptr %1064, align 8, !tbaa !101, !range !36, !noundef !37
  %1066 = trunc i8 %1065 to i1
  br i1 %1066, label %1073, label %1067

1067:                                             ; preds = %1062
  %1068 = load ptr, ptr %19, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.ImGuiIO, ptr %1068, i32 0, i32 37
  %1070 = load i8, ptr %1069, align 2, !tbaa !123, !range !36, !noundef !37
  %1071 = trunc i8 %1070 to i1
  %1072 = xor i1 %1071, true
  br label %1073

1073:                                             ; preds = %1067, %1062, %1057, %1052
  %1074 = phi i1 [ false, %1062 ], [ false, %1057 ], [ false, %1052 ], [ %1072, %1067 ]
  %1075 = zext i1 %1074 to i8
  store i8 %1075, ptr %69, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #13
  %1076 = load ptr, ptr %19, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.ImGuiIO, ptr %1076, i32 0, i32 35
  %1078 = load i8, ptr %1077, align 8, !tbaa !101, !range !36, !noundef !37
  %1079 = trunc i8 %1078 to i1
  br i1 %1079, label %1080, label %1096

1080:                                             ; preds = %1073
  %1081 = load ptr, ptr %19, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.ImGuiIO, ptr %1081, i32 0, i32 36
  %1083 = load i8, ptr %1082, align 1, !tbaa !127, !range !36, !noundef !37
  %1084 = trunc i8 %1083 to i1
  br i1 %1084, label %1096, label %1085

1085:                                             ; preds = %1080
  %1086 = load ptr, ptr %19, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.ImGuiIO, ptr %1086, i32 0, i32 37
  %1088 = load i8, ptr %1087, align 2, !tbaa !123, !range !36, !noundef !37
  %1089 = trunc i8 %1088 to i1
  br i1 %1089, label %1096, label %1090

1090:                                             ; preds = %1085
  %1091 = load ptr, ptr %19, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.ImGuiIO, ptr %1091, i32 0, i32 38
  %1093 = load i8, ptr %1092, align 1, !tbaa !124, !range !36, !noundef !37
  %1094 = trunc i8 %1093 to i1
  %1095 = xor i1 %1094, true
  br label %1096

1096:                                             ; preds = %1090, %1085, %1080, %1073
  %1097 = phi i1 [ false, %1085 ], [ false, %1080 ], [ false, %1073 ], [ %1095, %1090 ]
  %1098 = zext i1 %1097 to i8
  store i8 %1098, ptr %70, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #13
  %1099 = load ptr, ptr %19, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.ImGuiIO, ptr %1099, i32 0, i32 36
  %1101 = load i8, ptr %1100, align 1, !tbaa !127, !range !36, !noundef !37
  %1102 = trunc i8 %1101 to i1
  br i1 %1102, label %1103, label %1119

1103:                                             ; preds = %1096
  %1104 = load ptr, ptr %19, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.ImGuiIO, ptr %1104, i32 0, i32 35
  %1106 = load i8, ptr %1105, align 8, !tbaa !101, !range !36, !noundef !37
  %1107 = trunc i8 %1106 to i1
  br i1 %1107, label %1119, label %1108

1108:                                             ; preds = %1103
  %1109 = load ptr, ptr %19, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.ImGuiIO, ptr %1109, i32 0, i32 37
  %1111 = load i8, ptr %1110, align 2, !tbaa !123, !range !36, !noundef !37
  %1112 = trunc i8 %1111 to i1
  br i1 %1112, label %1119, label %1113

1113:                                             ; preds = %1108
  %1114 = load ptr, ptr %19, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.ImGuiIO, ptr %1114, i32 0, i32 38
  %1116 = load i8, ptr %1115, align 1, !tbaa !124, !range !36, !noundef !37
  %1117 = trunc i8 %1116 to i1
  %1118 = xor i1 %1117, true
  br label %1119

1119:                                             ; preds = %1113, %1108, %1103, %1096
  %1120 = phi i1 [ false, %1108 ], [ false, %1103 ], [ false, %1096 ], [ %1118, %1113 ]
  %1121 = zext i1 %1120 to i8
  store i8 %1121, ptr %71, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #13
  %1122 = load i8, ptr %66, align 1, !tbaa !38, !range !36, !noundef !37
  %1123 = trunc i8 %1122 to i1
  br i1 %1123, label %1124, label %1126

1124:                                             ; preds = %1119
  %1125 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %1125, label %1131, label %1126

1126:                                             ; preds = %1124, %1119
  %1127 = load i8, ptr %71, align 1, !tbaa !38, !range !36, !noundef !37
  %1128 = trunc i8 %1127 to i1
  br i1 %1128, label %1129, label %1145

1129:                                             ; preds = %1126
  %1130 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1130, label %1131, label %1145

1131:                                             ; preds = %1129, %1124
  %1132 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1133 = trunc i8 %1132 to i1
  br i1 %1133, label %1134, label %1145

1134:                                             ; preds = %1131
  %1135 = load i8, ptr %23, align 1, !tbaa !38, !range !36, !noundef !37
  %1136 = trunc i8 %1135 to i1
  br i1 %1136, label %1145, label %1137

1137:                                             ; preds = %1134
  %1138 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %1139 = trunc i8 %1138 to i1
  br i1 %1139, label %1140, label %1143

1140:                                             ; preds = %1137
  %1141 = load ptr, ptr %40, align 8, !tbaa !5
  %1142 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %1141)
  br label %1143

1143:                                             ; preds = %1140, %1137
  %1144 = phi i1 [ true, %1137 ], [ %1142, %1140 ]
  br label %1145

1145:                                             ; preds = %1143, %1134, %1131, %1129, %1126
  %1146 = phi i1 [ false, %1134 ], [ false, %1131 ], [ false, %1129 ], [ false, %1126 ], [ %1144, %1143 ]
  %1147 = zext i1 %1146 to i8
  store i8 %1147, ptr %72, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #13
  %1148 = load i8, ptr %66, align 1, !tbaa !38, !range !36, !noundef !37
  %1149 = trunc i8 %1148 to i1
  br i1 %1149, label %1150, label %1152

1150:                                             ; preds = %1145
  %1151 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %1151, label %1157, label %1152

1152:                                             ; preds = %1150, %1145
  %1153 = load i8, ptr %70, align 1, !tbaa !38, !range !36, !noundef !37
  %1154 = trunc i8 %1153 to i1
  br i1 %1154, label %1155, label %1168

1155:                                             ; preds = %1152
  %1156 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1156, label %1157, label %1168

1157:                                             ; preds = %1155, %1150
  %1158 = load i8, ptr %23, align 1, !tbaa !38, !range !36, !noundef !37
  %1159 = trunc i8 %1158 to i1
  br i1 %1159, label %1168, label %1160

1160:                                             ; preds = %1157
  %1161 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %1162 = trunc i8 %1161 to i1
  br i1 %1162, label %1163, label %1166

1163:                                             ; preds = %1160
  %1164 = load ptr, ptr %40, align 8, !tbaa !5
  %1165 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %1164)
  br label %1166

1166:                                             ; preds = %1163, %1160
  %1167 = phi i1 [ true, %1160 ], [ %1165, %1163 ]
  br label %1168

1168:                                             ; preds = %1166, %1157, %1155, %1152
  %1169 = phi i1 [ false, %1157 ], [ false, %1155 ], [ false, %1152 ], [ %1167, %1166 ]
  %1170 = zext i1 %1169 to i8
  store i8 %1170, ptr %73, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #13
  %1171 = load i8, ptr %66, align 1, !tbaa !38, !range !36, !noundef !37
  %1172 = trunc i8 %1171 to i1
  br i1 %1172, label %1173, label %1175

1173:                                             ; preds = %1168
  %1174 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %1174, label %1180, label %1175

1175:                                             ; preds = %1173, %1168
  %1176 = load i8, ptr %71, align 1, !tbaa !38, !range !36, !noundef !37
  %1177 = trunc i8 %1176 to i1
  br i1 %1177, label %1178, label %1183

1178:                                             ; preds = %1175
  %1179 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %1179, label %1180, label %1183

1180:                                             ; preds = %1178, %1173
  %1181 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1182 = trunc i8 %1181 to i1
  br label %1183

1183:                                             ; preds = %1180, %1178, %1175
  %1184 = phi i1 [ false, %1178 ], [ false, %1175 ], [ %1182, %1180 ]
  %1185 = zext i1 %1184 to i8
  store i8 %1185, ptr %74, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #13
  %1186 = load i8, ptr %66, align 1, !tbaa !38, !range !36, !noundef !37
  %1187 = trunc i8 %1186 to i1
  br i1 %1187, label %1188, label %1196

1188:                                             ; preds = %1183
  %1189 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1189, label %1190, label %1196

1190:                                             ; preds = %1188
  %1191 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1192 = trunc i8 %1191 to i1
  br i1 %1192, label %1193, label %1196

1193:                                             ; preds = %1190
  %1194 = load i8, ptr %24, align 1, !tbaa !38, !range !36, !noundef !37
  %1195 = trunc i8 %1194 to i1
  br label %1196

1196:                                             ; preds = %1193, %1190, %1188, %1183
  %1197 = phi i1 [ false, %1190 ], [ false, %1188 ], [ false, %1183 ], [ %1195, %1193 ]
  %1198 = zext i1 %1197 to i8
  store i8 %1198, ptr %75, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #13
  %1199 = load i8, ptr %66, align 1, !tbaa !38, !range !36, !noundef !37
  %1200 = trunc i8 %1199 to i1
  br i1 %1200, label %1201, label %1203

1201:                                             ; preds = %1196
  %1202 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %1202, label %1208, label %1203

1203:                                             ; preds = %1201, %1196
  %1204 = load i8, ptr %67, align 1, !tbaa !38, !range !36, !noundef !37
  %1205 = trunc i8 %1204 to i1
  br i1 %1205, label %1206, label %1214

1206:                                             ; preds = %1203
  %1207 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %1207, label %1208, label %1214

1208:                                             ; preds = %1206, %1201
  %1209 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1210 = trunc i8 %1209 to i1
  br i1 %1210, label %1211, label %1214

1211:                                             ; preds = %1208
  %1212 = load i8, ptr %24, align 1, !tbaa !38, !range !36, !noundef !37
  %1213 = trunc i8 %1212 to i1
  br label %1214

1214:                                             ; preds = %1211, %1208, %1206, %1203
  %1215 = phi i1 [ false, %1208 ], [ false, %1206 ], [ false, %1203 ], [ %1213, %1211 ]
  %1216 = zext i1 %1215 to i8
  store i8 %1216, ptr %76, align 1, !tbaa !38
  %1217 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %1217, label %1218, label %1232

1218:                                             ; preds = %1214
  %1219 = load ptr, ptr %40, align 8, !tbaa !5
  %1220 = load i8, ptr %69, align 1, !tbaa !38, !range !36, !noundef !37
  %1221 = trunc i8 %1220 to i1
  br i1 %1221, label %1222, label %1223

1222:                                             ; preds = %1218
  br label %1228

1223:                                             ; preds = %1218
  %1224 = load i8, ptr %68, align 1, !tbaa !38, !range !36, !noundef !37
  %1225 = trunc i8 %1224 to i1
  %1226 = zext i1 %1225 to i64
  %1227 = select i1 %1225, i32 65548, i32 65536
  br label %1228

1228:                                             ; preds = %1223, %1222
  %1229 = phi i32 [ 65540, %1222 ], [ %1227, %1223 ]
  %1230 = load i32, ptr %64, align 4, !tbaa !9
  %1231 = or i32 %1229, %1230
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1219, i32 noundef %1231)
  br label %1667

1232:                                             ; preds = %1214
  %1233 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %1233, label %1234, label %1248

1234:                                             ; preds = %1232
  %1235 = load ptr, ptr %40, align 8, !tbaa !5
  %1236 = load i8, ptr %69, align 1, !tbaa !38, !range !36, !noundef !37
  %1237 = trunc i8 %1236 to i1
  br i1 %1237, label %1238, label %1239

1238:                                             ; preds = %1234
  br label %1244

1239:                                             ; preds = %1234
  %1240 = load i8, ptr %68, align 1, !tbaa !38, !range !36, !noundef !37
  %1241 = trunc i8 %1240 to i1
  %1242 = zext i1 %1241 to i64
  %1243 = select i1 %1241, i32 65549, i32 65537
  br label %1244

1244:                                             ; preds = %1239, %1238
  %1245 = phi i32 [ 65541, %1238 ], [ %1243, %1239 ]
  %1246 = load i32, ptr %64, align 4, !tbaa !9
  %1247 = or i32 %1245, %1246
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1235, i32 noundef %1247)
  br label %1666

1248:                                             ; preds = %1232
  %1249 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1249, label %1250, label %1278

1250:                                             ; preds = %1248
  %1251 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %1252 = trunc i8 %1251 to i1
  br i1 %1252, label %1253, label %1278

1253:                                             ; preds = %1250
  %1254 = load ptr, ptr %19, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.ImGuiIO, ptr %1254, i32 0, i32 35
  %1256 = load i8, ptr %1255, align 8, !tbaa !101, !range !36, !noundef !37
  %1257 = trunc i8 %1256 to i1
  br i1 %1257, label %1258, label %1269

1258:                                             ; preds = %1253
  %1259 = load ptr, ptr %35, align 8, !tbaa !5
  %1260 = load ptr, ptr %35, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.ImGuiWindow, ptr %1260, i32 0, i32 14
  %1262 = getelementptr inbounds %struct.ImVec2, ptr %1261, i32 0, i32 1
  %1263 = load float, ptr %1262, align 4, !tbaa !128
  %1264 = load ptr, ptr %18, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.ImGuiContext, ptr %1264, i32 0, i32 7
  %1266 = load float, ptr %1265, align 8, !tbaa !116
  %1267 = fsub float %1263, %1266
  %1268 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %1267, float noundef 0.000000e+00)
  call void @_ZN5ImGui16SetWindowScrollYEP11ImGuiWindowf(ptr noundef %1259, float noundef %1268)
  br label %1277

1269:                                             ; preds = %1253
  %1270 = load ptr, ptr %40, align 8, !tbaa !5
  %1271 = load i8, ptr %69, align 1, !tbaa !38, !range !36, !noundef !37
  %1272 = trunc i8 %1271 to i1
  %1273 = zext i1 %1272 to i64
  %1274 = select i1 %1272, i32 65542, i32 65538
  %1275 = load i32, ptr %64, align 4, !tbaa !9
  %1276 = or i32 %1274, %1275
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1270, i32 noundef %1276)
  br label %1277

1277:                                             ; preds = %1269, %1258
  br label %1665

1278:                                             ; preds = %1250, %1248
  %1279 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1279, label %1280, label %1309

1280:                                             ; preds = %1278
  %1281 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %1282 = trunc i8 %1281 to i1
  br i1 %1282, label %1283, label %1309

1283:                                             ; preds = %1280
  %1284 = load ptr, ptr %19, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.ImGuiIO, ptr %1284, i32 0, i32 35
  %1286 = load i8, ptr %1285, align 8, !tbaa !101, !range !36, !noundef !37
  %1287 = trunc i8 %1286 to i1
  br i1 %1287, label %1288, label %1300

1288:                                             ; preds = %1283
  %1289 = load ptr, ptr %35, align 8, !tbaa !5
  %1290 = load ptr, ptr %35, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.ImGuiWindow, ptr %1290, i32 0, i32 14
  %1292 = getelementptr inbounds %struct.ImVec2, ptr %1291, i32 0, i32 1
  %1293 = load float, ptr %1292, align 4, !tbaa !128
  %1294 = load ptr, ptr %18, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.ImGuiContext, ptr %1294, i32 0, i32 7
  %1296 = load float, ptr %1295, align 8, !tbaa !116
  %1297 = fadd float %1293, %1296
  %1298 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %1299 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %1297, float noundef %1298)
  call void @_ZN5ImGui16SetWindowScrollYEP11ImGuiWindowf(ptr noundef %1289, float noundef %1299)
  br label %1308

1300:                                             ; preds = %1283
  %1301 = load ptr, ptr %40, align 8, !tbaa !5
  %1302 = load i8, ptr %69, align 1, !tbaa !38, !range !36, !noundef !37
  %1303 = trunc i8 %1302 to i1
  %1304 = zext i1 %1303 to i64
  %1305 = select i1 %1303, i32 65543, i32 65539
  %1306 = load i32, ptr %64, align 4, !tbaa !9
  %1307 = or i32 %1305, %1306
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1301, i32 noundef %1307)
  br label %1308

1308:                                             ; preds = %1300, %1288
  br label %1664

1309:                                             ; preds = %1280, %1278
  %1310 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %1310, label %1311, label %1325

1311:                                             ; preds = %1309
  %1312 = load ptr, ptr %40, align 8, !tbaa !5
  %1313 = load ptr, ptr %19, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.ImGuiIO, ptr %1313, i32 0, i32 35
  %1315 = load i8, ptr %1314, align 8, !tbaa !101, !range !36, !noundef !37
  %1316 = trunc i8 %1315 to i1
  br i1 %1316, label %1317, label %1320

1317:                                             ; preds = %1311
  %1318 = load i32, ptr %64, align 4, !tbaa !9
  %1319 = or i32 65542, %1318
  br label %1323

1320:                                             ; preds = %1311
  %1321 = load i32, ptr %64, align 4, !tbaa !9
  %1322 = or i32 65540, %1321
  br label %1323

1323:                                             ; preds = %1320, %1317
  %1324 = phi i32 [ %1319, %1317 ], [ %1322, %1320 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1312, i32 noundef %1324)
  br label %1663

1325:                                             ; preds = %1309
  %1326 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %1326, label %1327, label %1341

1327:                                             ; preds = %1325
  %1328 = load ptr, ptr %40, align 8, !tbaa !5
  %1329 = load ptr, ptr %19, align 8, !tbaa !5
  %1330 = getelementptr inbounds %struct.ImGuiIO, ptr %1329, i32 0, i32 35
  %1331 = load i8, ptr %1330, align 8, !tbaa !101, !range !36, !noundef !37
  %1332 = trunc i8 %1331 to i1
  br i1 %1332, label %1333, label %1336

1333:                                             ; preds = %1327
  %1334 = load i32, ptr %64, align 4, !tbaa !9
  %1335 = or i32 65543, %1334
  br label %1339

1336:                                             ; preds = %1327
  %1337 = load i32, ptr %64, align 4, !tbaa !9
  %1338 = or i32 65541, %1337
  br label %1339

1339:                                             ; preds = %1336, %1333
  %1340 = phi i32 [ %1335, %1333 ], [ %1338, %1336 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1328, i32 noundef %1340)
  br label %1662

1341:                                             ; preds = %1325
  %1342 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %1342, label %1343, label %1350

1343:                                             ; preds = %1341
  %1344 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1345 = trunc i8 %1344 to i1
  br i1 %1345, label %1346, label %1350

1346:                                             ; preds = %1343
  %1347 = load ptr, ptr %40, align 8, !tbaa !5
  %1348 = load i32, ptr %64, align 4, !tbaa !9
  %1349 = or i32 65544, %1348
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1347, i32 noundef %1349)
  br label %1661

1350:                                             ; preds = %1343, %1341
  %1351 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %1351, label %1352, label %1389

1352:                                             ; preds = %1350
  %1353 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1354 = trunc i8 %1353 to i1
  br i1 %1354, label %1355, label %1389

1355:                                             ; preds = %1352
  %1356 = load ptr, ptr %40, align 8, !tbaa !5
  %1357 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %1356)
  br i1 %1357, label %1385, label %1358

1358:                                             ; preds = %1355
  %1359 = load i8, ptr %68, align 1, !tbaa !38, !range !36, !noundef !37
  %1360 = trunc i8 %1359 to i1
  br i1 %1360, label %1361, label %1363

1361:                                             ; preds = %1358
  %1362 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1362, i32 noundef 196620)
  br label %1384

1363:                                             ; preds = %1358
  %1364 = load i8, ptr %65, align 1, !tbaa !38, !range !36, !noundef !37
  %1365 = trunc i8 %1364 to i1
  br i1 %1365, label %1366, label %1383

1366:                                             ; preds = %1363
  %1367 = load ptr, ptr %19, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct.ImGuiIO, ptr %1367, i32 0, i32 38
  %1369 = load i8, ptr %1368, align 1, !tbaa !124, !range !36, !noundef !37
  %1370 = trunc i8 %1369 to i1
  br i1 %1370, label %1371, label %1383

1371:                                             ; preds = %1366
  %1372 = load ptr, ptr %19, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct.ImGuiIO, ptr %1372, i32 0, i32 37
  %1374 = load i8, ptr %1373, align 2, !tbaa !123, !range !36, !noundef !37
  %1375 = trunc i8 %1374 to i1
  br i1 %1375, label %1383, label %1376

1376:                                             ; preds = %1371
  %1377 = load ptr, ptr %19, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.ImGuiIO, ptr %1377, i32 0, i32 35
  %1379 = load i8, ptr %1378, align 8, !tbaa !101, !range !36, !noundef !37
  %1380 = trunc i8 %1379 to i1
  br i1 %1380, label %1383, label %1381

1381:                                             ; preds = %1376
  %1382 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1382, i32 noundef 196612)
  br label %1383

1383:                                             ; preds = %1381, %1376, %1371, %1366, %1363
  br label %1384

1384:                                             ; preds = %1383, %1361
  br label %1385

1385:                                             ; preds = %1384, %1355
  %1386 = load ptr, ptr %40, align 8, !tbaa !5
  %1387 = load i32, ptr %64, align 4, !tbaa !9
  %1388 = or i32 65545, %1387
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1386, i32 noundef %1388)
  br label %1660

1389:                                             ; preds = %1352, %1350
  %1390 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %1390, label %1391, label %1429

1391:                                             ; preds = %1389
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #13
  %1392 = load i32, ptr %13, align 4, !tbaa !9
  %1393 = and i32 %1392, 2048
  %1394 = icmp ne i32 %1393, 0
  %1395 = zext i1 %1394 to i8
  store i8 %1395, ptr %77, align 1, !tbaa !38
  %1396 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %1397 = trunc i8 %1396 to i1
  br i1 %1397, label %1398, label %1414

1398:                                             ; preds = %1391
  %1399 = load i8, ptr %77, align 1, !tbaa !38, !range !36, !noundef !37
  %1400 = trunc i8 %1399 to i1
  br i1 %1400, label %1401, label %1406

1401:                                             ; preds = %1398
  %1402 = load ptr, ptr %19, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.ImGuiIO, ptr %1402, i32 0, i32 35
  %1404 = load i8, ptr %1403, align 8, !tbaa !101, !range !36, !noundef !37
  %1405 = trunc i8 %1404 to i1
  br i1 %1405, label %1406, label %1414

1406:                                             ; preds = %1401, %1398
  %1407 = load i8, ptr %77, align 1, !tbaa !38, !range !36, !noundef !37
  %1408 = trunc i8 %1407 to i1
  br i1 %1408, label %1415, label %1409

1409:                                             ; preds = %1406
  %1410 = load ptr, ptr %19, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.ImGuiIO, ptr %1410, i32 0, i32 35
  %1412 = load i8, ptr %1411, align 8, !tbaa !101, !range !36, !noundef !37
  %1413 = trunc i8 %1412 to i1
  br i1 %1413, label %1414, label %1415

1414:                                             ; preds = %1409, %1401, %1391
  store i8 1, ptr %47, align 1, !tbaa !38
  store i8 1, ptr %54, align 1, !tbaa !38
  br label %1428

1415:                                             ; preds = %1409, %1406
  %1416 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1417 = trunc i8 %1416 to i1
  br i1 %1417, label %1418, label %1427

1418:                                             ; preds = %1415
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #13
  store i32 10, ptr %78, align 4, !tbaa !9
  %1419 = load i32, ptr %13, align 4, !tbaa !9
  %1420 = load ptr, ptr %14, align 8, !tbaa !5
  %1421 = load ptr, ptr %15, align 8, !tbaa !5
  %1422 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %78, i32 noundef %1419, ptr noundef %1420, ptr noundef %1421)
  br i1 %1422, label %1423, label %1426

1423:                                             ; preds = %1418
  %1424 = load ptr, ptr %40, align 8, !tbaa !5
  %1425 = load i32, ptr %78, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1424, i32 noundef %1425)
  br label %1426

1426:                                             ; preds = %1423, %1418
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #13
  br label %1427

1427:                                             ; preds = %1426, %1415
  br label %1428

1428:                                             ; preds = %1427, %1414
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #13
  br label %1659

1429:                                             ; preds = %1389
  %1430 = load i32, ptr %13, align 4, !tbaa !9
  %1431 = and i32 %1430, 1024
  %1432 = icmp ne i32 %1431, 0
  br i1 %1432, label %1433, label %1462

1433:                                             ; preds = %1429
  %1434 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1434, label %1435, label %1462

1435:                                             ; preds = %1433
  %1436 = load ptr, ptr %19, align 8, !tbaa !5
  %1437 = getelementptr inbounds %struct.ImGuiIO, ptr %1436, i32 0, i32 35
  %1438 = load i8, ptr %1437, align 8, !tbaa !101, !range !36, !noundef !37
  %1439 = trunc i8 %1438 to i1
  br i1 %1439, label %1462, label %1440

1440:                                             ; preds = %1435
  %1441 = load ptr, ptr %19, align 8, !tbaa !5
  %1442 = getelementptr inbounds %struct.ImGuiIO, ptr %1441, i32 0, i32 36
  %1443 = load i8, ptr %1442, align 1, !tbaa !127, !range !36, !noundef !37
  %1444 = trunc i8 %1443 to i1
  br i1 %1444, label %1462, label %1445

1445:                                             ; preds = %1440
  %1446 = load ptr, ptr %19, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.ImGuiIO, ptr %1446, i32 0, i32 37
  %1448 = load i8, ptr %1447, align 2, !tbaa !123, !range !36, !noundef !37
  %1449 = trunc i8 %1448 to i1
  br i1 %1449, label %1462, label %1450

1450:                                             ; preds = %1445
  %1451 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1452 = trunc i8 %1451 to i1
  br i1 %1452, label %1453, label %1462

1453:                                             ; preds = %1450
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #13
  store i32 9, ptr %79, align 4, !tbaa !9
  %1454 = load i32, ptr %13, align 4, !tbaa !9
  %1455 = load ptr, ptr %14, align 8, !tbaa !5
  %1456 = load ptr, ptr %15, align 8, !tbaa !5
  %1457 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %79, i32 noundef %1454, ptr noundef %1455, ptr noundef %1456)
  br i1 %1457, label %1458, label %1461

1458:                                             ; preds = %1453
  %1459 = load ptr, ptr %40, align 8, !tbaa !5
  %1460 = load i32, ptr %79, align 4, !tbaa !9
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1459, i32 noundef %1460)
  br label %1461

1461:                                             ; preds = %1458, %1453
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #13
  br label %1658

1462:                                             ; preds = %1450, %1445, %1440, %1435, %1433, %1429
  %1463 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %1463, label %1464, label %1465

1464:                                             ; preds = %1462
  store i8 1, ptr %63, align 1, !tbaa !38
  store i8 1, ptr %47, align 1, !tbaa !38
  br label %1657

1465:                                             ; preds = %1462
  %1466 = load i8, ptr %75, align 1, !tbaa !38, !range !36, !noundef !37
  %1467 = trunc i8 %1466 to i1
  br i1 %1467, label %1471, label %1468

1468:                                             ; preds = %1465
  %1469 = load i8, ptr %76, align 1, !tbaa !38, !range !36, !noundef !37
  %1470 = trunc i8 %1469 to i1
  br i1 %1470, label %1471, label %1478

1471:                                             ; preds = %1468, %1465
  %1472 = load ptr, ptr %40, align 8, !tbaa !5
  %1473 = load i8, ptr %75, align 1, !tbaa !38, !range !36, !noundef !37
  %1474 = trunc i8 %1473 to i1
  %1475 = zext i1 %1474 to i64
  %1476 = select i1 %1474, i32 65546, i32 65547
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %1472, i32 noundef %1476)
  %1477 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %1477)
  br label %1656

1478:                                             ; preds = %1468
  %1479 = load i8, ptr %66, align 1, !tbaa !38, !range !36, !noundef !37
  %1480 = trunc i8 %1479 to i1
  br i1 %1480, label %1481, label %1487

1481:                                             ; preds = %1478
  %1482 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %1482, label %1483, label %1487

1483:                                             ; preds = %1481
  %1484 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3720) %1484)
  %1485 = load ptr, ptr %40, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1485, i32 0, i32 10
  store i8 1, ptr %1486, align 8, !tbaa !121
  br label %1655

1487:                                             ; preds = %1481, %1478
  %1488 = load i8, ptr %72, align 1, !tbaa !38, !range !36, !noundef !37
  %1489 = trunc i8 %1488 to i1
  br i1 %1489, label %1493, label %1490

1490:                                             ; preds = %1487
  %1491 = load i8, ptr %73, align 1, !tbaa !38, !range !36, !noundef !37
  %1492 = trunc i8 %1491 to i1
  br i1 %1492, label %1493, label %1582

1493:                                             ; preds = %1490, %1487
  %1494 = load ptr, ptr %19, align 8, !tbaa !5
  %1495 = getelementptr inbounds %struct.ImGuiIO, ptr %1494, i32 0, i32 26
  %1496 = load ptr, ptr %1495, align 8, !tbaa !129
  %1497 = icmp ne ptr %1496, null
  br i1 %1497, label %1498, label %1566

1498:                                             ; preds = %1493
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  %1499 = load ptr, ptr %40, align 8, !tbaa !5
  %1500 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %1499)
  br i1 %1500, label %1501, label %1511

1501:                                             ; preds = %1498
  %1502 = load ptr, ptr %40, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1502, i32 0, i32 8
  %1504 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1503, i32 0, i32 1
  %1505 = load i32, ptr %1504, align 4, !tbaa !130
  %1506 = load ptr, ptr %40, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1506, i32 0, i32 8
  %1508 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1507, i32 0, i32 2
  %1509 = load i32, ptr %1508, align 8, !tbaa !131
  %1510 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1505, i32 noundef %1509)
  br label %1512

1511:                                             ; preds = %1498
  br label %1512

1512:                                             ; preds = %1511, %1501
  %1513 = phi i32 [ %1510, %1501 ], [ 0, %1511 ]
  store i32 %1513, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #13
  %1514 = load ptr, ptr %40, align 8, !tbaa !5
  %1515 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %1514)
  br i1 %1515, label %1516, label %1526

1516:                                             ; preds = %1512
  %1517 = load ptr, ptr %40, align 8, !tbaa !5
  %1518 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1517, i32 0, i32 8
  %1519 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1518, i32 0, i32 1
  %1520 = load i32, ptr %1519, align 4, !tbaa !130
  %1521 = load ptr, ptr %40, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1521, i32 0, i32 8
  %1523 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1522, i32 0, i32 2
  %1524 = load i32, ptr %1523, align 8, !tbaa !131
  %1525 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1520, i32 noundef %1524)
  br label %1530

1526:                                             ; preds = %1512
  %1527 = load ptr, ptr %40, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1527, i32 0, i32 5
  %1529 = load i32, ptr %1528, align 4, !tbaa !95
  br label %1530

1530:                                             ; preds = %1526, %1516
  %1531 = phi i32 [ %1525, %1516 ], [ %1529, %1526 ]
  store i32 %1531, ptr %81, align 4, !tbaa !9
  %1532 = load ptr, ptr %40, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1532, i32 0, i32 3
  %1534 = load i32, ptr %81, align 4, !tbaa !9
  %1535 = load i32, ptr %80, align 4, !tbaa !9
  %1536 = sub nsw i32 %1534, %1535
  %1537 = mul nsw i32 %1536, 4
  %1538 = add nsw i32 %1537, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1533, i32 noundef %1538)
  %1539 = load ptr, ptr %40, align 8, !tbaa !5
  %1540 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1539, i32 0, i32 3
  %1541 = getelementptr inbounds %class.ImVector.19, ptr %1540, i32 0, i32 2
  %1542 = load ptr, ptr %1541, align 8, !tbaa !132
  %1543 = load ptr, ptr %40, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1543, i32 0, i32 3
  %1545 = getelementptr inbounds %class.ImVector.19, ptr %1544, i32 0, i32 0
  %1546 = load i32, ptr %1545, align 8, !tbaa !133
  %1547 = load ptr, ptr %40, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1547, i32 0, i32 1
  %1549 = getelementptr inbounds %class.ImVector.7, ptr %1548, i32 0, i32 2
  %1550 = load ptr, ptr %1549, align 8, !tbaa !97
  %1551 = load i32, ptr %80, align 4, !tbaa !9
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds i16, ptr %1550, i64 %1552
  %1554 = load ptr, ptr %40, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1554, i32 0, i32 1
  %1556 = getelementptr inbounds %class.ImVector.7, ptr %1555, i32 0, i32 2
  %1557 = load ptr, ptr %1556, align 8, !tbaa !97
  %1558 = load i32, ptr %81, align 4, !tbaa !9
  %1559 = sext i32 %1558 to i64
  %1560 = getelementptr inbounds i16, ptr %1557, i64 %1559
  %1561 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1542, i32 noundef %1546, ptr noundef %1553, ptr noundef %1560)
  %1562 = load ptr, ptr %40, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1562, i32 0, i32 3
  %1564 = getelementptr inbounds %class.ImVector.19, ptr %1563, i32 0, i32 2
  %1565 = load ptr, ptr %1564, align 8, !tbaa !132
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %1565)
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  br label %1566

1566:                                             ; preds = %1530, %1493
  %1567 = load i8, ptr %72, align 1, !tbaa !38, !range !36, !noundef !37
  %1568 = trunc i8 %1567 to i1
  br i1 %1568, label %1569, label %1581

1569:                                             ; preds = %1566
  %1570 = load ptr, ptr %40, align 8, !tbaa !5
  %1571 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %1570)
  br i1 %1571, label %1574, label %1572

1572:                                             ; preds = %1569
  %1573 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3720) %1573)
  br label %1574

1574:                                             ; preds = %1572, %1569
  %1575 = load ptr, ptr %40, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1575, i32 0, i32 10
  store i8 1, ptr %1576, align 8, !tbaa !121
  %1577 = load ptr, ptr %40, align 8, !tbaa !5
  %1578 = load ptr, ptr %40, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1578, i32 0, i32 8
  %1580 = call noundef i32 @_ZN8ImGuiStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef %1577, ptr noundef %1579)
  br label %1581

1581:                                             ; preds = %1574, %1566
  br label %1654

1582:                                             ; preds = %1490
  %1583 = load i8, ptr %74, align 1, !tbaa !38, !range !36, !noundef !37
  %1584 = trunc i8 %1583 to i1
  br i1 %1584, label %1585, label %1653

1585:                                             ; preds = %1582
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #13
  %1586 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  store ptr %1586, ptr %82, align 8, !tbaa !5
  %1587 = load ptr, ptr %82, align 8, !tbaa !5
  %1588 = icmp ne ptr %1587, null
  br i1 %1588, label %1589, label %1652

1589:                                             ; preds = %1585
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #13
  %1590 = load ptr, ptr %82, align 8, !tbaa !5
  %1591 = call i64 @strlen(ptr noundef %1590) #15
  %1592 = trunc i64 %1591 to i32
  store i32 %1592, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #13
  %1593 = load i32, ptr %83, align 4, !tbaa !9
  %1594 = add nsw i32 %1593, 1
  %1595 = sext i32 %1594 to i64
  %1596 = mul i64 %1595, 2
  %1597 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %1596)
  store ptr %1597, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #13
  store i32 0, ptr %85, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #13
  %1598 = load ptr, ptr %82, align 8, !tbaa !5
  store ptr %1598, ptr %86, align 8, !tbaa !5
  br label %1599

1599:                                             ; preds = %1632, %1630, %1589
  %1600 = load ptr, ptr %86, align 8, !tbaa !5
  %1601 = load i8, ptr %1600, align 1, !tbaa !134
  %1602 = icmp ne i8 %1601, 0
  br i1 %1602, label %1604, label %1603

1603:                                             ; preds = %1599
  store i32 5, ptr %17, align 4
  br label %1633

1604:                                             ; preds = %1599
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #13
  %1605 = load ptr, ptr %86, align 8, !tbaa !5
  %1606 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef %87, ptr noundef %1605, ptr noundef null)
  %1607 = load ptr, ptr %86, align 8, !tbaa !5
  %1608 = sext i32 %1606 to i64
  %1609 = getelementptr inbounds i8, ptr %1607, i64 %1608
  store ptr %1609, ptr %86, align 8, !tbaa !5
  %1610 = load i32, ptr %87, align 4, !tbaa !9
  %1611 = icmp eq i32 %1610, 0
  br i1 %1611, label %1612, label %1613

1612:                                             ; preds = %1604
  store i32 5, ptr %17, align 4
  br label %1630

1613:                                             ; preds = %1604
  %1614 = load i32, ptr %87, align 4, !tbaa !9
  %1615 = icmp uge i32 %1614, 65536
  br i1 %1615, label %1621, label %1616

1616:                                             ; preds = %1613
  %1617 = load i32, ptr %13, align 4, !tbaa !9
  %1618 = load ptr, ptr %14, align 8, !tbaa !5
  %1619 = load ptr, ptr %15, align 8, !tbaa !5
  %1620 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef %87, i32 noundef %1617, ptr noundef %1618, ptr noundef %1619)
  br i1 %1620, label %1622, label %1621

1621:                                             ; preds = %1616, %1613
  store i32 6, ptr %17, align 4
  br label %1630, !llvm.loop !135

1622:                                             ; preds = %1616
  %1623 = load i32, ptr %87, align 4, !tbaa !9
  %1624 = trunc i32 %1623 to i16
  %1625 = load ptr, ptr %84, align 8, !tbaa !5
  %1626 = load i32, ptr %85, align 4, !tbaa !9
  %1627 = add nsw i32 %1626, 1
  store i32 %1627, ptr %85, align 4, !tbaa !9
  %1628 = sext i32 %1626 to i64
  %1629 = getelementptr inbounds i16, ptr %1625, i64 %1628
  store i16 %1624, ptr %1629, align 2, !tbaa !122
  store i32 0, ptr %17, align 4
  br label %1630

1630:                                             ; preds = %1622, %1621, %1612
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #13
  %1631 = load i32, ptr %17, align 4
  switch i32 %1631, label %1633 [
    i32 0, label %1632
    i32 6, label %1599
  ]

1632:                                             ; preds = %1630
  br label %1599, !llvm.loop !135

1633:                                             ; preds = %1630, %1603
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #13
  br label %1634

1634:                                             ; preds = %1633
  %1635 = load ptr, ptr %84, align 8, !tbaa !5
  %1636 = load i32, ptr %85, align 4, !tbaa !9
  %1637 = sext i32 %1636 to i64
  %1638 = getelementptr inbounds i16, ptr %1635, i64 %1637
  store i16 0, ptr %1638, align 2, !tbaa !122
  %1639 = load i32, ptr %85, align 4, !tbaa !9
  %1640 = icmp sgt i32 %1639, 0
  br i1 %1640, label %1641, label %1650

1641:                                             ; preds = %1634
  %1642 = load ptr, ptr %40, align 8, !tbaa !5
  %1643 = load ptr, ptr %40, align 8, !tbaa !5
  %1644 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1643, i32 0, i32 8
  %1645 = load ptr, ptr %84, align 8, !tbaa !5
  %1646 = load i32, ptr %85, align 4, !tbaa !9
  %1647 = call noundef i32 @_ZN8ImGuiStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef %1642, ptr noundef %1644, ptr noundef %1645, i32 noundef %1646)
  %1648 = load ptr, ptr %40, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1648, i32 0, i32 10
  store i8 1, ptr %1649, align 8, !tbaa !121
  br label %1650

1650:                                             ; preds = %1641, %1634
  %1651 = load ptr, ptr %84, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %1651)
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #13
  br label %1652

1652:                                             ; preds = %1650, %1585
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #13
  br label %1653

1653:                                             ; preds = %1652, %1582
  br label %1654

1654:                                             ; preds = %1653, %1581
  br label %1655

1655:                                             ; preds = %1654, %1483
  br label %1656

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

1657:                                             ; preds = %1656, %1464
  br label %1658

1658:                                             ; preds = %1657, %1461
  br label %1659

1659:                                             ; preds = %1658, %1428
  br label %1660

1660:                                             ; preds = %1659, %1385
  br label %1661

1661:                                             ; preds = %1660, %1346
  br label %1662

1662:                                             ; preds = %1661, %1339
  br label %1663

1663:                                             ; preds = %1662, %1323
  br label %1664

1664:                                             ; preds = %1663, %1308
  br label %1665

1665:                                             ; preds = %1664, %1277
  br label %1666

1666:                                             ; preds = %1665, %1244
  br label %1667

1667:                                             ; preds = %1666, %1228
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #13
  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 1, ptr %68) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #13
  br label %1668

1668:                                             ; preds = %1667, %963, %958, %952
  %1669 = load ptr, ptr %18, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct.ImGuiContext, ptr %1669, i32 0, i32 31
  %1671 = load i32, ptr %1670, align 4, !tbaa !89
  %1672 = load i32, ptr %26, align 4, !tbaa !9
  %1673 = icmp eq i32 %1671, %1672
  br i1 %1673, label %1674, label %2069

1674:                                             ; preds = %1668
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #13
  store ptr null, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #13
  store i32 0, ptr %89, align 4, !tbaa !9
  %1675 = load i8, ptr %63, align 1, !tbaa !38, !range !36, !noundef !37
  %1676 = trunc i8 %1675 to i1
  br i1 %1676, label %1677, label %1699

1677:                                             ; preds = %1674
  %1678 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1679 = trunc i8 %1678 to i1
  br i1 %1679, label %1680, label %1698

1680:                                             ; preds = %1677
  %1681 = load ptr, ptr %10, align 8, !tbaa !5
  %1682 = load ptr, ptr %40, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1682, i32 0, i32 2
  %1684 = getelementptr inbounds %class.ImVector.19, ptr %1683, i32 0, i32 2
  %1685 = load ptr, ptr %1684, align 8, !tbaa !96
  %1686 = call i32 @strcmp(ptr noundef %1681, ptr noundef %1685) #15
  %1687 = icmp ne i32 %1686, 0
  br i1 %1687, label %1688, label %1698

1688:                                             ; preds = %1680
  %1689 = load ptr, ptr %40, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1689, i32 0, i32 2
  %1691 = getelementptr inbounds %class.ImVector.19, ptr %1690, i32 0, i32 2
  %1692 = load ptr, ptr %1691, align 8, !tbaa !96
  store ptr %1692, ptr %88, align 8, !tbaa !5
  %1693 = load ptr, ptr %40, align 8, !tbaa !5
  %1694 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1693, i32 0, i32 2
  %1695 = getelementptr inbounds %class.ImVector.19, ptr %1694, i32 0, i32 0
  %1696 = load i32, ptr %1695, align 8, !tbaa !136
  %1697 = sub nsw i32 %1696, 1
  store i32 %1697, ptr %89, align 4, !tbaa !9
  br label %1698

1698:                                             ; preds = %1688, %1680, %1677
  br label %1699

1699:                                             ; preds = %1698, %1674
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #13
  %1700 = load i8, ptr %63, align 1, !tbaa !38, !range !36, !noundef !37
  %1701 = trunc i8 %1700 to i1
  br i1 %1701, label %1702, label %1711

1702:                                             ; preds = %1699
  %1703 = load i8, ptr %54, align 1, !tbaa !38, !range !36, !noundef !37
  %1704 = trunc i8 %1703 to i1
  br i1 %1704, label %1705, label %1709

1705:                                             ; preds = %1702
  %1706 = load i32, ptr %13, align 4, !tbaa !9
  %1707 = and i32 %1706, 32
  %1708 = icmp ne i32 %1707, 0
  br label %1709

1709:                                             ; preds = %1705, %1702
  %1710 = phi i1 [ false, %1702 ], [ %1708, %1705 ]
  br label %1711

1711:                                             ; preds = %1709, %1699
  %1712 = phi i1 [ true, %1699 ], [ %1710, %1709 ]
  %1713 = zext i1 %1712 to i8
  store i8 %1713, ptr %90, align 1, !tbaa !38
  %1714 = load i8, ptr %90, align 1, !tbaa !38, !range !36, !noundef !37
  %1715 = trunc i8 %1714 to i1
  br i1 %1715, label %1716, label %2002

1716:                                             ; preds = %1711
  %1717 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1718 = trunc i8 %1717 to i1
  br i1 %1718, label %1719, label %1741

1719:                                             ; preds = %1716
  %1720 = load ptr, ptr %40, align 8, !tbaa !5
  %1721 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1720, i32 0, i32 3
  %1722 = load ptr, ptr %40, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1722, i32 0, i32 1
  %1724 = getelementptr inbounds %class.ImVector.7, ptr %1723, i32 0, i32 0
  %1725 = load i32, ptr %1724, align 8, !tbaa !104
  %1726 = mul nsw i32 %1725, 4
  %1727 = add nsw i32 %1726, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1721, i32 noundef %1727)
  %1728 = load ptr, ptr %40, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1728, i32 0, i32 3
  %1730 = getelementptr inbounds %class.ImVector.19, ptr %1729, i32 0, i32 2
  %1731 = load ptr, ptr %1730, align 8, !tbaa !132
  %1732 = load ptr, ptr %40, align 8, !tbaa !5
  %1733 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1732, i32 0, i32 3
  %1734 = getelementptr inbounds %class.ImVector.19, ptr %1733, i32 0, i32 0
  %1735 = load i32, ptr %1734, align 8, !tbaa !133
  %1736 = load ptr, ptr %40, align 8, !tbaa !5
  %1737 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1736, i32 0, i32 1
  %1738 = getelementptr inbounds %class.ImVector.7, ptr %1737, i32 0, i32 2
  %1739 = load ptr, ptr %1738, align 8, !tbaa !97
  %1740 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %1731, i32 noundef %1735, ptr noundef %1739, ptr noundef null)
  br label %1741

1741:                                             ; preds = %1719, %1716
  %1742 = load i32, ptr %13, align 4, !tbaa !9
  %1743 = and i32 %1742, 448
  %1744 = icmp ne i32 %1743, 0
  br i1 %1744, label %1745, label %1982

1745:                                             ; preds = %1741
  %1746 = load ptr, ptr %14, align 8, !tbaa !5
  %1747 = icmp ne ptr %1746, null
  br i1 %1747, label %1748, label %1749

1748:                                             ; preds = %1745
  br label %1751

1749:                                             ; preds = %1745
  call void @__assert_fail(ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 3477, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1750:                                             ; No predecessors!
  br label %1751

1751:                                             ; preds = %1750, %1748
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #13
  store i32 0, ptr %91, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #13
  store i32 21, ptr %92, align 4, !tbaa !9
  %1752 = load i32, ptr %13, align 4, !tbaa !9
  %1753 = and i32 %1752, 64
  %1754 = icmp ne i32 %1753, 0
  br i1 %1754, label %1755, label %1758

1755:                                             ; preds = %1751
  %1756 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %1756, label %1757, label %1758

1757:                                             ; preds = %1755
  store i32 64, ptr %91, align 4, !tbaa !9
  store i32 0, ptr %92, align 4, !tbaa !9
  br label %1780

1758:                                             ; preds = %1755, %1751
  %1759 = load i32, ptr %13, align 4, !tbaa !9
  %1760 = and i32 %1759, 128
  %1761 = icmp ne i32 %1760, 0
  br i1 %1761, label %1762, label %1765

1762:                                             ; preds = %1758
  %1763 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %1763, label %1764, label %1765

1764:                                             ; preds = %1762
  store i32 128, ptr %91, align 4, !tbaa !9
  store i32 3, ptr %92, align 4, !tbaa !9
  br label %1779

1765:                                             ; preds = %1762, %1758
  %1766 = load i32, ptr %13, align 4, !tbaa !9
  %1767 = and i32 %1766, 128
  %1768 = icmp ne i32 %1767, 0
  br i1 %1768, label %1769, label %1772

1769:                                             ; preds = %1765
  %1770 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %1770, label %1771, label %1772

1771:                                             ; preds = %1769
  store i32 128, ptr %91, align 4, !tbaa !9
  store i32 4, ptr %92, align 4, !tbaa !9
  br label %1778

1772:                                             ; preds = %1769, %1765
  %1773 = load i32, ptr %13, align 4, !tbaa !9
  %1774 = and i32 %1773, 256
  %1775 = icmp ne i32 %1774, 0
  br i1 %1775, label %1776, label %1777

1776:                                             ; preds = %1772
  store i32 256, ptr %91, align 4, !tbaa !9
  br label %1777

1777:                                             ; preds = %1776, %1772
  br label %1778

1778:                                             ; preds = %1777, %1771
  br label %1779

1779:                                             ; preds = %1778, %1764
  br label %1780

1780:                                             ; preds = %1779, %1757
  %1781 = load i32, ptr %91, align 4, !tbaa !9
  %1782 = icmp ne i32 %1781, 0
  br i1 %1782, label %1783, label %1981

1783:                                             ; preds = %1780
  call void @llvm.lifetime.start.p0(i64 56, ptr %93) #13
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %93)
  call void @llvm.memset.p0.i64(ptr align 8 %93, i8 0, i64 56, i1 false)
  %1784 = load i32, ptr %91, align 4, !tbaa !9
  %1785 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 0
  store i32 %1784, ptr %1785, align 8, !tbaa !137
  %1786 = load i32, ptr %13, align 4, !tbaa !9
  %1787 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 1
  store i32 %1786, ptr %1787, align 4, !tbaa !139
  %1788 = load ptr, ptr %15, align 8, !tbaa !5
  %1789 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 2
  store ptr %1788, ptr %1789, align 8, !tbaa !140
  %1790 = load i32, ptr %92, align 4, !tbaa !9
  %1791 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 4
  store i32 %1790, ptr %1791, align 4, !tbaa !141
  %1792 = load ptr, ptr %40, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1792, i32 0, i32 3
  %1794 = getelementptr inbounds %class.ImVector.19, ptr %1793, i32 0, i32 2
  %1795 = load ptr, ptr %1794, align 8, !tbaa !132
  %1796 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  store ptr %1795, ptr %1796, align 8, !tbaa !142
  %1797 = load ptr, ptr %40, align 8, !tbaa !5
  %1798 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1797, i32 0, i32 4
  %1799 = load i32, ptr %1798, align 8, !tbaa !98
  %1800 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 6
  store i32 %1799, ptr %1800, align 8, !tbaa !143
  %1801 = load ptr, ptr %40, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1801, i32 0, i32 6
  %1803 = load i32, ptr %1802, align 8, !tbaa !105
  %1804 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 7
  store i32 %1803, ptr %1804, align 4, !tbaa !144
  %1805 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 8
  store i8 0, ptr %1805, align 8, !tbaa !145
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #13
  %1806 = load ptr, ptr %40, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1806, i32 0, i32 1
  %1808 = getelementptr inbounds %class.ImVector.7, ptr %1807, i32 0, i32 2
  %1809 = load ptr, ptr %1808, align 8, !tbaa !97
  store ptr %1809, ptr %94, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #13
  %1810 = load ptr, ptr %94, align 8, !tbaa !5
  %1811 = load ptr, ptr %94, align 8, !tbaa !5
  %1812 = load ptr, ptr %40, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1812, i32 0, i32 8
  %1814 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1813, i32 0, i32 0
  %1815 = load i32, ptr %1814, align 8, !tbaa !146
  %1816 = sext i32 %1815 to i64
  %1817 = getelementptr inbounds i16, ptr %1811, i64 %1816
  %1818 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1810, ptr noundef %1817)
  %1819 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 9
  store i32 %1818, ptr %1819, align 4, !tbaa !147
  store i32 %1818, ptr %95, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #13
  %1820 = load ptr, ptr %94, align 8, !tbaa !5
  %1821 = load ptr, ptr %94, align 8, !tbaa !5
  %1822 = load ptr, ptr %40, align 8, !tbaa !5
  %1823 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1822, i32 0, i32 8
  %1824 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1823, i32 0, i32 1
  %1825 = load i32, ptr %1824, align 4, !tbaa !130
  %1826 = sext i32 %1825 to i64
  %1827 = getelementptr inbounds i16, ptr %1821, i64 %1826
  %1828 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1820, ptr noundef %1827)
  %1829 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 10
  store i32 %1828, ptr %1829, align 8, !tbaa !148
  store i32 %1828, ptr %96, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #13
  %1830 = load ptr, ptr %94, align 8, !tbaa !5
  %1831 = load ptr, ptr %94, align 8, !tbaa !5
  %1832 = load ptr, ptr %40, align 8, !tbaa !5
  %1833 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1832, i32 0, i32 8
  %1834 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1833, i32 0, i32 2
  %1835 = load i32, ptr %1834, align 8, !tbaa !131
  %1836 = sext i32 %1835 to i64
  %1837 = getelementptr inbounds i16, ptr %1831, i64 %1836
  %1838 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %1830, ptr noundef %1837)
  %1839 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 11
  store i32 %1838, ptr %1839, align 4, !tbaa !149
  store i32 %1838, ptr %97, align 4, !tbaa !9
  %1840 = load ptr, ptr %14, align 8, !tbaa !5
  %1841 = call noundef i32 %1840(ptr noundef %93)
  %1842 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1843 = load ptr, ptr %1842, align 8, !tbaa !142
  %1844 = load ptr, ptr %40, align 8, !tbaa !5
  %1845 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1844, i32 0, i32 3
  %1846 = getelementptr inbounds %class.ImVector.19, ptr %1845, i32 0, i32 2
  %1847 = load ptr, ptr %1846, align 8, !tbaa !132
  %1848 = icmp eq ptr %1843, %1847
  br i1 %1848, label %1849, label %1850

1849:                                             ; preds = %1783
  br label %1852

1850:                                             ; preds = %1783
  call void @__assert_fail(ptr noundef @.str.49, ptr noundef @.str.1, i32 noundef 3524, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1851:                                             ; No predecessors!
  br label %1852

1852:                                             ; preds = %1851, %1849
  %1853 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 7
  %1854 = load i32, ptr %1853, align 4, !tbaa !144
  %1855 = load ptr, ptr %40, align 8, !tbaa !5
  %1856 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1855, i32 0, i32 6
  %1857 = load i32, ptr %1856, align 8, !tbaa !105
  %1858 = icmp eq i32 %1854, %1857
  br i1 %1858, label %1859, label %1860

1859:                                             ; preds = %1852
  br label %1862

1860:                                             ; preds = %1852
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str.1, i32 noundef 3525, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1861:                                             ; No predecessors!
  br label %1862

1862:                                             ; preds = %1861, %1859
  %1863 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 1
  %1864 = load i32, ptr %1863, align 4, !tbaa !139
  %1865 = load i32, ptr %13, align 4, !tbaa !9
  %1866 = icmp eq i32 %1864, %1865
  br i1 %1866, label %1867, label %1868

1867:                                             ; preds = %1862
  br label %1870

1868:                                             ; preds = %1862
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.1, i32 noundef 3526, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1869:                                             ; No predecessors!
  br label %1870

1870:                                             ; preds = %1869, %1867
  %1871 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 9
  %1872 = load i32, ptr %1871, align 4, !tbaa !147
  %1873 = load i32, ptr %95, align 4, !tbaa !9
  %1874 = icmp ne i32 %1872, %1873
  br i1 %1874, label %1875, label %1890

1875:                                             ; preds = %1870
  %1876 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1877 = load ptr, ptr %1876, align 8, !tbaa !142
  %1878 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1879 = load ptr, ptr %1878, align 8, !tbaa !142
  %1880 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 9
  %1881 = load i32, ptr %1880, align 4, !tbaa !147
  %1882 = sext i32 %1881 to i64
  %1883 = getelementptr inbounds i8, ptr %1879, i64 %1882
  %1884 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1877, ptr noundef %1883)
  %1885 = load ptr, ptr %40, align 8, !tbaa !5
  %1886 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1885, i32 0, i32 8
  %1887 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1886, i32 0, i32 0
  store i32 %1884, ptr %1887, align 8, !tbaa !146
  %1888 = load ptr, ptr %40, align 8, !tbaa !5
  %1889 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1888, i32 0, i32 10
  store i8 1, ptr %1889, align 8, !tbaa !121
  br label %1890

1890:                                             ; preds = %1875, %1870
  %1891 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 10
  %1892 = load i32, ptr %1891, align 8, !tbaa !148
  %1893 = load i32, ptr %96, align 4, !tbaa !9
  %1894 = icmp ne i32 %1892, %1893
  br i1 %1894, label %1895, label %1908

1895:                                             ; preds = %1890
  %1896 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1897 = load ptr, ptr %1896, align 8, !tbaa !142
  %1898 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1899 = load ptr, ptr %1898, align 8, !tbaa !142
  %1900 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 10
  %1901 = load i32, ptr %1900, align 8, !tbaa !148
  %1902 = sext i32 %1901 to i64
  %1903 = getelementptr inbounds i8, ptr %1899, i64 %1902
  %1904 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1897, ptr noundef %1903)
  %1905 = load ptr, ptr %40, align 8, !tbaa !5
  %1906 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1905, i32 0, i32 8
  %1907 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1906, i32 0, i32 1
  store i32 %1904, ptr %1907, align 4, !tbaa !130
  br label %1908

1908:                                             ; preds = %1895, %1890
  %1909 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 11
  %1910 = load i32, ptr %1909, align 4, !tbaa !149
  %1911 = load i32, ptr %97, align 4, !tbaa !9
  %1912 = icmp ne i32 %1910, %1911
  br i1 %1912, label %1913, label %1926

1913:                                             ; preds = %1908
  %1914 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1915 = load ptr, ptr %1914, align 8, !tbaa !142
  %1916 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1917 = load ptr, ptr %1916, align 8, !tbaa !142
  %1918 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 11
  %1919 = load i32, ptr %1918, align 4, !tbaa !149
  %1920 = sext i32 %1919 to i64
  %1921 = getelementptr inbounds i8, ptr %1917, i64 %1920
  %1922 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %1915, ptr noundef %1921)
  %1923 = load ptr, ptr %40, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1923, i32 0, i32 8
  %1925 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %1924, i32 0, i32 2
  store i32 %1922, ptr %1925, align 8, !tbaa !131
  br label %1926

1926:                                             ; preds = %1913, %1908
  %1927 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 8
  %1928 = load i8, ptr %1927, align 8, !tbaa !145, !range !36, !noundef !37
  %1929 = trunc i8 %1928 to i1
  br i1 %1929, label %1930, label %1980

1930:                                             ; preds = %1926
  %1931 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 6
  %1932 = load i32, ptr %1931, align 8, !tbaa !143
  %1933 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1934 = load ptr, ptr %1933, align 8, !tbaa !142
  %1935 = call i64 @strlen(ptr noundef %1934) #15
  %1936 = trunc i64 %1935 to i32
  %1937 = icmp eq i32 %1932, %1936
  br i1 %1937, label %1938, label %1939

1938:                                             ; preds = %1930
  br label %1941

1939:                                             ; preds = %1930
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str.1, i32 noundef 3532, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

1940:                                             ; No predecessors!
  br label %1941

1941:                                             ; preds = %1940, %1938
  %1942 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 6
  %1943 = load i32, ptr %1942, align 8, !tbaa !143
  %1944 = load i32, ptr %55, align 4, !tbaa !9
  %1945 = icmp sgt i32 %1943, %1944
  br i1 %1945, label %1946, label %1961

1946:                                             ; preds = %1941
  %1947 = load i8, ptr %25, align 1, !tbaa !38, !range !36, !noundef !37
  %1948 = trunc i8 %1947 to i1
  br i1 %1948, label %1949, label %1961

1949:                                             ; preds = %1946
  %1950 = load ptr, ptr %40, align 8, !tbaa !5
  %1951 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1950, i32 0, i32 1
  %1952 = load ptr, ptr %40, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1952, i32 0, i32 1
  %1954 = getelementptr inbounds %class.ImVector.7, ptr %1953, i32 0, i32 0
  %1955 = load i32, ptr %1954, align 8, !tbaa !104
  %1956 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 6
  %1957 = load i32, ptr %1956, align 8, !tbaa !143
  %1958 = load i32, ptr %55, align 4, !tbaa !9
  %1959 = sub nsw i32 %1957, %1958
  %1960 = add nsw i32 %1955, %1959
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %1951, i32 noundef %1960)
  br label %1961

1961:                                             ; preds = %1949, %1946, %1941
  %1962 = load ptr, ptr %40, align 8, !tbaa !5
  %1963 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1962, i32 0, i32 1
  %1964 = getelementptr inbounds %class.ImVector.7, ptr %1963, i32 0, i32 2
  %1965 = load ptr, ptr %1964, align 8, !tbaa !97
  %1966 = load ptr, ptr %40, align 8, !tbaa !5
  %1967 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1966, i32 0, i32 1
  %1968 = getelementptr inbounds %class.ImVector.7, ptr %1967, i32 0, i32 0
  %1969 = load i32, ptr %1968, align 8, !tbaa !104
  %1970 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 5
  %1971 = load ptr, ptr %1970, align 8, !tbaa !142
  %1972 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1965, i32 noundef %1969, ptr noundef %1971, ptr noundef null, ptr noundef null)
  %1973 = load ptr, ptr %40, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1973, i32 0, i32 5
  store i32 %1972, ptr %1974, align 4, !tbaa !95
  %1975 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %93, i32 0, i32 6
  %1976 = load i32, ptr %1975, align 8, !tbaa !143
  %1977 = load ptr, ptr %40, align 8, !tbaa !5
  %1978 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1977, i32 0, i32 4
  store i32 %1976, ptr %1978, align 8, !tbaa !98
  %1979 = load ptr, ptr %40, align 8, !tbaa !5
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3720) %1979)
  br label %1980

1980:                                             ; preds = %1961, %1926
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr %93) #13
  br label %1981

1981:                                             ; preds = %1980, %1780
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #13
  br label %1982

1982:                                             ; preds = %1981, %1741
  %1983 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1985, label %2001

1985:                                             ; preds = %1982
  %1986 = load ptr, ptr %40, align 8, !tbaa !5
  %1987 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1986, i32 0, i32 3
  %1988 = getelementptr inbounds %class.ImVector.19, ptr %1987, i32 0, i32 2
  %1989 = load ptr, ptr %1988, align 8, !tbaa !132
  %1990 = load ptr, ptr %10, align 8, !tbaa !5
  %1991 = call i32 @strcmp(ptr noundef %1989, ptr noundef %1990) #15
  %1992 = icmp ne i32 %1991, 0
  br i1 %1992, label %1993, label %2001

1993:                                             ; preds = %1985
  %1994 = load ptr, ptr %40, align 8, !tbaa !5
  %1995 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1994, i32 0, i32 3
  %1996 = getelementptr inbounds %class.ImVector.19, ptr %1995, i32 0, i32 2
  %1997 = load ptr, ptr %1996, align 8, !tbaa !132
  store ptr %1997, ptr %88, align 8, !tbaa !5
  %1998 = load ptr, ptr %40, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %1998, i32 0, i32 4
  %2000 = load i32, ptr %1999, align 8, !tbaa !98
  store i32 %2000, ptr %89, align 4, !tbaa !9
  br label %2001

2001:                                             ; preds = %1993, %1985, %1982
  br label %2002

2002:                                             ; preds = %2001, %1711
  %2003 = load ptr, ptr %88, align 8, !tbaa !5
  %2004 = icmp ne ptr %2003, null
  br i1 %2004, label %2005, label %2062

2005:                                             ; preds = %2002
  %2006 = load i32, ptr %89, align 4, !tbaa !9
  %2007 = icmp sge i32 %2006, 0
  br i1 %2007, label %2008, label %2009

2008:                                             ; preds = %2005
  br label %2011

2009:                                             ; preds = %2005
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.1, i32 noundef 3553, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2010:                                             ; No predecessors!
  br label %2011

2011:                                             ; preds = %2010, %2008
  %2012 = load i32, ptr %55, align 4, !tbaa !9
  %2013 = load i32, ptr %89, align 4, !tbaa !9
  %2014 = icmp ne i32 %2012, %2013
  br i1 %2014, label %2015, label %2051

2015:                                             ; preds = %2011
  %2016 = load i8, ptr %25, align 1, !tbaa !38, !range !36, !noundef !37
  %2017 = trunc i8 %2016 to i1
  br i1 %2017, label %2018, label %2051

2018:                                             ; preds = %2015
  call void @llvm.lifetime.start.p0(i64 56, ptr %98) #13
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %98)
  %2019 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 0
  store i32 262144, ptr %2019, align 8, !tbaa !137
  %2020 = load i32, ptr %13, align 4, !tbaa !9
  %2021 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 1
  store i32 %2020, ptr %2021, align 4, !tbaa !139
  %2022 = load ptr, ptr %10, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 5
  store ptr %2022, ptr %2023, align 8, !tbaa !142
  %2024 = load i32, ptr %89, align 4, !tbaa !9
  %2025 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 6
  store i32 %2024, ptr %2025, align 8, !tbaa !143
  %2026 = load i32, ptr %11, align 4, !tbaa !9
  %2027 = load i32, ptr %89, align 4, !tbaa !9
  %2028 = add nsw i32 %2027, 1
  %2029 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2026, i32 noundef %2028)
  %2030 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 7
  store i32 %2029, ptr %2030, align 4, !tbaa !144
  %2031 = load ptr, ptr %15, align 8, !tbaa !5
  %2032 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 2
  store ptr %2031, ptr %2032, align 8, !tbaa !140
  %2033 = load ptr, ptr %14, align 8, !tbaa !5
  %2034 = call noundef i32 %2033(ptr noundef %98)
  %2035 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 5
  %2036 = load ptr, ptr %2035, align 8, !tbaa !142
  store ptr %2036, ptr %10, align 8, !tbaa !5
  %2037 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 7
  %2038 = load i32, ptr %2037, align 4, !tbaa !144
  store i32 %2038, ptr %11, align 4, !tbaa !9
  %2039 = getelementptr inbounds %struct.ImGuiInputTextCallbackData, ptr %98, i32 0, i32 6
  %2040 = load i32, ptr %2039, align 8, !tbaa !143
  %2041 = load i32, ptr %11, align 4, !tbaa !9
  %2042 = sub nsw i32 %2041, 1
  %2043 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2040, i32 noundef %2042)
  store i32 %2043, ptr %89, align 4, !tbaa !9
  %2044 = load i32, ptr %89, align 4, !tbaa !9
  %2045 = load i32, ptr %11, align 4, !tbaa !9
  %2046 = icmp sle i32 %2044, %2045
  br i1 %2046, label %2047, label %2048

2047:                                             ; preds = %2018
  br label %2050

2048:                                             ; preds = %2018
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str.1, i32 noundef 3567, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #14
  unreachable

2049:                                             ; No predecessors!
  br label %2050

2050:                                             ; preds = %2049, %2047
  call void @llvm.lifetime.end.p0(i64 56, ptr %98) #13
  br label %2051

2051:                                             ; preds = %2050, %2015, %2011
  %2052 = load ptr, ptr %10, align 8, !tbaa !5
  %2053 = load ptr, ptr %40, align 8, !tbaa !5
  %2054 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2053, i32 0, i32 3
  %2055 = getelementptr inbounds %class.ImVector.19, ptr %2054, i32 0, i32 2
  %2056 = load ptr, ptr %2055, align 8, !tbaa !132
  %2057 = load i32, ptr %89, align 4, !tbaa !9
  %2058 = add nsw i32 %2057, 1
  %2059 = load i32, ptr %11, align 4, !tbaa !9
  %2060 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2058, i32 noundef %2059)
  %2061 = sext i32 %2060 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %2052, ptr noundef %2056, i64 noundef %2061)
  store i8 1, ptr %53, align 1, !tbaa !38
  br label %2062

2062:                                             ; preds = %2051, %2002
  %2063 = load ptr, ptr %40, align 8, !tbaa !5
  %2064 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2063, i32 0, i32 12
  store i32 0, ptr %2064, align 4, !tbaa !106
  %2065 = load ptr, ptr %40, align 8, !tbaa !5
  %2066 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2065, i32 0, i32 13
  store ptr null, ptr %2066, align 8, !tbaa !107
  %2067 = load ptr, ptr %40, align 8, !tbaa !5
  %2068 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2067, i32 0, i32 14
  store ptr null, ptr %2068, align 8, !tbaa !108
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #13
  br label %2069

2069:                                             ; preds = %2062, %1668
  %2070 = load i8, ptr %47, align 1, !tbaa !38, !range !36, !noundef !37
  %2071 = trunc i8 %2070 to i1
  br i1 %2071, label %2072, label %2079

2072:                                             ; preds = %2069
  %2073 = load ptr, ptr %18, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.ImGuiContext, ptr %2073, i32 0, i32 31
  %2075 = load i32, ptr %2074, align 4, !tbaa !89
  %2076 = load i32, ptr %26, align 4, !tbaa !9
  %2077 = icmp eq i32 %2075, %2076
  br i1 %2077, label %2078, label %2079

2078:                                             ; preds = %2072
  call void @_ZN5ImGui13ClearActiveIDEv()
  br label %2079

2079:                                             ; preds = %2078, %2072, %2069
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #13
  %2080 = load ptr, ptr %18, align 8, !tbaa !5
  %2081 = getelementptr inbounds %struct.ImGuiContext, ptr %2080, i32 0, i32 31
  %2082 = load i32, ptr %2081, align 4, !tbaa !89
  %2083 = load i32, ptr %26, align 4, !tbaa !9
  %2084 = icmp eq i32 %2082, %2083
  br i1 %2084, label %2085, label %2093

2085:                                             ; preds = %2079
  %2086 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %2087 = trunc i8 %2086 to i1
  br i1 %2087, label %2088, label %2093

2088:                                             ; preds = %2085
  %2089 = load ptr, ptr %40, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2089, i32 0, i32 3
  %2091 = getelementptr inbounds %class.ImVector.19, ptr %2090, i32 0, i32 2
  %2092 = load ptr, ptr %2091, align 8, !tbaa !132
  br label %2095

2093:                                             ; preds = %2085, %2079
  %2094 = load ptr, ptr %10, align 8, !tbaa !5
  br label %2095

2095:                                             ; preds = %2093, %2088
  %2096 = phi ptr [ %2092, %2088 ], [ %2094, %2093 ]
  store ptr %2096, ptr %99, align 8, !tbaa !5
  store ptr null, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #13
  store i32 2097152, ptr %100, align 4, !tbaa !9
  %2097 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2098 = trunc i8 %2097 to i1
  br i1 %2098, label %2109, label %2099

2099:                                             ; preds = %2095
  %2100 = load i32, ptr %26, align 4, !tbaa !9
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %30, i32 noundef %2100, i32 noundef 1)
  %2101 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %101, ptr align 4 %2101, i64 8, i1 false), !tbaa.struct !39
  %2102 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %102, ptr align 4 %2102, i64 8, i1 false), !tbaa.struct !39
  %2103 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %2104 = load ptr, ptr %20, align 8, !tbaa !5
  %2105 = getelementptr inbounds %struct.ImGuiStyle, ptr %2104, i32 0, i32 11
  %2106 = load float, ptr %2105, align 4, !tbaa !150
  %2107 = load <2 x float>, ptr %101, align 4
  %2108 = load <2 x float>, ptr %102, align 4
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %2107, <2 x float> %2108, i32 noundef %2103, i1 noundef zeroext true, float noundef %2106)
  br label %2109

2109:                                             ; preds = %2099, %2095
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #13
  %2110 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2111 = getelementptr inbounds %struct.ImVec2, ptr %2110, i32 0, i32 0
  %2112 = load float, ptr %2111, align 4, !tbaa !112
  %2113 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2114 = getelementptr inbounds %struct.ImVec2, ptr %2113, i32 0, i32 1
  %2115 = load float, ptr %2114, align 4, !tbaa !151
  %2116 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2117 = getelementptr inbounds %struct.ImVec2, ptr %2116, i32 0, i32 0
  %2118 = load float, ptr %2117, align 4, !tbaa !112
  %2119 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 0
  %2120 = load float, ptr %2119, align 4, !tbaa !44
  %2121 = fadd float %2118, %2120
  %2122 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2123 = getelementptr inbounds %struct.ImVec2, ptr %2122, i32 0, i32 1
  %2124 = load float, ptr %2123, align 4, !tbaa !151
  %2125 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 1
  %2126 = load float, ptr %2125, align 4, !tbaa !41
  %2127 = fadd float %2124, %2126
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %103, float noundef %2112, float noundef %2115, float noundef %2121, float noundef %2127)
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #13
  %2128 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2129 = trunc i8 %2128 to i1
  br i1 %2129, label %2130, label %2134

2130:                                             ; preds = %2109
  %2131 = load ptr, ptr %35, align 8, !tbaa !5
  %2132 = getelementptr inbounds %struct.ImGuiWindow, ptr %2131, i32 0, i32 45
  %2133 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2132, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %104, ptr align 8 %2133, i64 8, i1 false), !tbaa.struct !39
  br label %2139

2134:                                             ; preds = %2109
  %2135 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2136 = load ptr, ptr %20, align 8, !tbaa !5
  %2137 = getelementptr inbounds %struct.ImGuiStyle, ptr %2136, i32 0, i32 10
  %2138 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %2135, ptr noundef nonnull align 4 dereferenceable(8) %2137)
  store <2 x float> %2138, ptr %104, align 4
  br label %2139

2139:                                             ; preds = %2134, %2130
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #13
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %105, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #13
  %2140 = load ptr, ptr %40, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2140, i32 0, i32 0
  %2142 = load i32, ptr %2141, align 8, !tbaa !90
  %2143 = load i32, ptr %26, align 4, !tbaa !9
  %2144 = icmp eq i32 %2142, %2143
  br i1 %2144, label %2145, label %2155

2145:                                             ; preds = %2139
  %2146 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2147 = trunc i8 %2146 to i1
  br i1 %2147, label %2148, label %2155

2148:                                             ; preds = %2145
  %2149 = load ptr, ptr %18, align 8, !tbaa !5
  %2150 = getelementptr inbounds %struct.ImGuiContext, ptr %2149, i32 0, i32 31
  %2151 = load i32, ptr %2150, align 4, !tbaa !89
  %2152 = load ptr, ptr %35, align 8, !tbaa !5
  %2153 = call noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %2152, ptr noundef @.str.4, ptr noundef null)
  %2154 = icmp eq i32 %2151, %2153
  br label %2155

2155:                                             ; preds = %2148, %2145, %2139
  %2156 = phi i1 [ false, %2145 ], [ false, %2139 ], [ %2154, %2148 ]
  %2157 = zext i1 %2156 to i8
  store i8 %2157, ptr %106, align 1, !tbaa !38
  %2158 = load ptr, ptr %18, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct.ImGuiContext, ptr %2158, i32 0, i32 31
  %2160 = load i32, ptr %2159, align 4, !tbaa !89
  %2161 = load i32, ptr %26, align 4, !tbaa !9
  %2162 = icmp eq i32 %2160, %2161
  br i1 %2162, label %2166, label %2163

2163:                                             ; preds = %2155
  %2164 = load i8, ptr %106, align 1, !tbaa !38, !range !36, !noundef !37
  %2165 = trunc i8 %2164 to i1
  br i1 %2165, label %2166, label %2701

2166:                                             ; preds = %2163, %2155
  %2167 = load ptr, ptr %19, align 8, !tbaa !5
  %2168 = getelementptr inbounds %struct.ImGuiIO, ptr %2167, i32 0, i32 3
  %2169 = load float, ptr %2168, align 8, !tbaa !152
  %2170 = load ptr, ptr %40, align 8, !tbaa !5
  %2171 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2170, i32 0, i32 9
  %2172 = load float, ptr %2171, align 4, !tbaa !153
  %2173 = fadd float %2172, %2169
  store float %2173, ptr %2171, align 4, !tbaa !153
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #13
  %2174 = load ptr, ptr %40, align 8, !tbaa !5
  %2175 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2174, i32 0, i32 1
  %2176 = getelementptr inbounds %class.ImVector.7, ptr %2175, i32 0, i32 2
  %2177 = load ptr, ptr %2176, align 8, !tbaa !97
  store ptr %2177, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %108)
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #13
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %109)
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #13
  %2178 = load ptr, ptr %107, align 8, !tbaa !5
  %2179 = load ptr, ptr %40, align 8, !tbaa !5
  %2180 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2179, i32 0, i32 8
  %2181 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2180, i32 0, i32 0
  %2182 = load i32, ptr %2181, align 8, !tbaa !146
  %2183 = sext i32 %2182 to i64
  %2184 = getelementptr inbounds i16, ptr %2178, i64 %2183
  %2185 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 0
  store ptr %2184, ptr %2185, align 16, !tbaa !5
  %2186 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 1
  store ptr null, ptr %2186, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #13
  store i32 1, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %112, ptr align 4 @__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_number, i64 8, i1 false)
  %2187 = load ptr, ptr %40, align 8, !tbaa !5
  %2188 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2187, i32 0, i32 8
  %2189 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2188, i32 0, i32 1
  %2190 = load i32, ptr %2189, align 4, !tbaa !130
  %2191 = load ptr, ptr %40, align 8, !tbaa !5
  %2192 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2191, i32 0, i32 8
  %2193 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2192, i32 0, i32 2
  %2194 = load i32, ptr %2193, align 8, !tbaa !131
  %2195 = icmp ne i32 %2190, %2194
  br i1 %2195, label %2196, label %2213

2196:                                             ; preds = %2166
  %2197 = load ptr, ptr %107, align 8, !tbaa !5
  %2198 = load ptr, ptr %40, align 8, !tbaa !5
  %2199 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2198, i32 0, i32 8
  %2200 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2199, i32 0, i32 1
  %2201 = load i32, ptr %2200, align 4, !tbaa !130
  %2202 = load ptr, ptr %40, align 8, !tbaa !5
  %2203 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2202, i32 0, i32 8
  %2204 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2203, i32 0, i32 2
  %2205 = load i32, ptr %2204, align 8, !tbaa !131
  %2206 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2201, i32 noundef %2205)
  %2207 = sext i32 %2206 to i64
  %2208 = getelementptr inbounds i16, ptr %2197, i64 %2207
  %2209 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 1
  store ptr %2208, ptr %2209, align 8, !tbaa !5
  %2210 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 1
  store i32 -1, ptr %2210, align 4, !tbaa !9
  %2211 = load i32, ptr %111, align 4, !tbaa !9
  %2212 = add nsw i32 %2211, 1
  store i32 %2212, ptr %111, align 4, !tbaa !9
  br label %2213

2213:                                             ; preds = %2196, %2166
  %2214 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2215 = trunc i8 %2214 to i1
  %2216 = zext i1 %2215 to i64
  %2217 = select i1 %2215, i32 1, i32 0
  %2218 = load i32, ptr %111, align 4, !tbaa !9
  %2219 = add nsw i32 %2218, %2217
  store i32 %2219, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #13
  store i32 0, ptr %113, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #13
  %2220 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %2220, ptr %114, align 8, !tbaa !5
  br label %2221

2221:                                             ; preds = %2270, %2213
  %2222 = load ptr, ptr %114, align 8, !tbaa !5
  %2223 = load i16, ptr %2222, align 2, !tbaa !122
  %2224 = zext i16 %2223 to i32
  %2225 = icmp ne i32 %2224, 0
  br i1 %2225, label %2227, label %2226

2226:                                             ; preds = %2221
  store i32 7, ptr %17, align 4
  br label %2273

2227:                                             ; preds = %2221
  %2228 = load ptr, ptr %114, align 8, !tbaa !5
  %2229 = load i16, ptr %2228, align 2, !tbaa !122
  %2230 = zext i16 %2229 to i32
  %2231 = icmp eq i32 %2230, 10
  br i1 %2231, label %2232, label %2269

2232:                                             ; preds = %2227
  %2233 = load i32, ptr %113, align 4, !tbaa !9
  %2234 = add nsw i32 %2233, 1
  store i32 %2234, ptr %113, align 4, !tbaa !9
  %2235 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 0
  %2236 = load i32, ptr %2235, align 4, !tbaa !9
  %2237 = icmp eq i32 %2236, -1
  br i1 %2237, label %2238, label %2251

2238:                                             ; preds = %2232
  %2239 = load ptr, ptr %114, align 8, !tbaa !5
  %2240 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 0
  %2241 = load ptr, ptr %2240, align 16, !tbaa !5
  %2242 = icmp uge ptr %2239, %2241
  br i1 %2242, label %2243, label %2251

2243:                                             ; preds = %2238
  %2244 = load i32, ptr %113, align 4, !tbaa !9
  %2245 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 0
  store i32 %2244, ptr %2245, align 4, !tbaa !9
  %2246 = load i32, ptr %111, align 4, !tbaa !9
  %2247 = add nsw i32 %2246, -1
  store i32 %2247, ptr %111, align 4, !tbaa !9
  %2248 = icmp sle i32 %2247, 0
  br i1 %2248, label %2249, label %2250

2249:                                             ; preds = %2243
  store i32 7, ptr %17, align 4
  br label %2273

2250:                                             ; preds = %2243
  br label %2251

2251:                                             ; preds = %2250, %2238, %2232
  %2252 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 1
  %2253 = load i32, ptr %2252, align 4, !tbaa !9
  %2254 = icmp eq i32 %2253, -1
  br i1 %2254, label %2255, label %2268

2255:                                             ; preds = %2251
  %2256 = load ptr, ptr %114, align 8, !tbaa !5
  %2257 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 1
  %2258 = load ptr, ptr %2257, align 8, !tbaa !5
  %2259 = icmp uge ptr %2256, %2258
  br i1 %2259, label %2260, label %2268

2260:                                             ; preds = %2255
  %2261 = load i32, ptr %113, align 4, !tbaa !9
  %2262 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 1
  store i32 %2261, ptr %2262, align 4, !tbaa !9
  %2263 = load i32, ptr %111, align 4, !tbaa !9
  %2264 = add nsw i32 %2263, -1
  store i32 %2264, ptr %111, align 4, !tbaa !9
  %2265 = icmp sle i32 %2264, 0
  br i1 %2265, label %2266, label %2267

2266:                                             ; preds = %2260
  store i32 7, ptr %17, align 4
  br label %2273

2267:                                             ; preds = %2260
  br label %2268

2268:                                             ; preds = %2267, %2255, %2251
  br label %2269

2269:                                             ; preds = %2268, %2227
  br label %2270

2270:                                             ; preds = %2269
  %2271 = load ptr, ptr %114, align 8, !tbaa !5
  %2272 = getelementptr inbounds i16, ptr %2271, i32 1
  store ptr %2272, ptr %114, align 8, !tbaa !5
  br label %2221, !llvm.loop !154

2273:                                             ; preds = %2266, %2249, %2226
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #13
  br label %2274

2274:                                             ; preds = %2273
  %2275 = load i32, ptr %113, align 4, !tbaa !9
  %2276 = add nsw i32 %2275, 1
  store i32 %2276, ptr %113, align 4, !tbaa !9
  %2277 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 0
  %2278 = load i32, ptr %2277, align 4, !tbaa !9
  %2279 = icmp eq i32 %2278, -1
  br i1 %2279, label %2280, label %2283

2280:                                             ; preds = %2274
  %2281 = load i32, ptr %113, align 4, !tbaa !9
  %2282 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 0
  store i32 %2281, ptr %2282, align 4, !tbaa !9
  br label %2283

2283:                                             ; preds = %2280, %2274
  %2284 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 1
  %2285 = load i32, ptr %2284, align 4, !tbaa !9
  %2286 = icmp eq i32 %2285, -1
  br i1 %2286, label %2287, label %2290

2287:                                             ; preds = %2283
  %2288 = load i32, ptr %113, align 4, !tbaa !9
  %2289 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 1
  store i32 %2288, ptr %2289, align 4, !tbaa !9
  br label %2290

2290:                                             ; preds = %2287, %2283
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #13
  %2291 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 0
  %2292 = load ptr, ptr %2291, align 16, !tbaa !5
  %2293 = load ptr, ptr %107, align 8, !tbaa !5
  %2294 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2292, ptr noundef %2293)
  %2295 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 0
  %2296 = load ptr, ptr %2295, align 16, !tbaa !5
  %2297 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2294, ptr noundef %2296, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2297, ptr %115, align 4
  %2298 = getelementptr inbounds %struct.ImVec2, ptr %115, i32 0, i32 0
  %2299 = load float, ptr %2298, align 4, !tbaa !44
  %2300 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 0
  store float %2299, ptr %2300, align 4, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #13
  %2301 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 0
  %2302 = load i32, ptr %2301, align 4, !tbaa !9
  %2303 = sitofp i32 %2302 to float
  %2304 = load ptr, ptr %18, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.ImGuiContext, ptr %2304, i32 0, i32 7
  %2306 = load float, ptr %2305, align 8, !tbaa !116
  %2307 = fmul float %2303, %2306
  %2308 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 1
  store float %2307, ptr %2308, align 4, !tbaa !41
  %2309 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 1
  %2310 = load i32, ptr %2309, align 4, !tbaa !9
  %2311 = icmp sge i32 %2310, 0
  br i1 %2311, label %2312, label %2331

2312:                                             ; preds = %2290
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #13
  %2313 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 1
  %2314 = load ptr, ptr %2313, align 8, !tbaa !5
  %2315 = load ptr, ptr %107, align 8, !tbaa !5
  %2316 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %2314, ptr noundef %2315)
  %2317 = getelementptr inbounds [2 x ptr], ptr %110, i64 0, i64 1
  %2318 = load ptr, ptr %2317, align 8, !tbaa !5
  %2319 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2316, ptr noundef %2318, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  store <2 x float> %2319, ptr %116, align 4
  %2320 = getelementptr inbounds %struct.ImVec2, ptr %116, i32 0, i32 0
  %2321 = load float, ptr %2320, align 4, !tbaa !44
  %2322 = getelementptr inbounds %struct.ImVec2, ptr %109, i32 0, i32 0
  store float %2321, ptr %2322, align 4, !tbaa !44
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #13
  %2323 = getelementptr inbounds [2 x i32], ptr %112, i64 0, i64 1
  %2324 = load i32, ptr %2323, align 4, !tbaa !9
  %2325 = sitofp i32 %2324 to float
  %2326 = load ptr, ptr %18, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct.ImGuiContext, ptr %2326, i32 0, i32 7
  %2328 = load float, ptr %2327, align 8, !tbaa !116
  %2329 = fmul float %2325, %2328
  %2330 = getelementptr inbounds %struct.ImVec2, ptr %109, i32 0, i32 1
  store float %2329, ptr %2330, align 4, !tbaa !41
  br label %2331

2331:                                             ; preds = %2312, %2290
  %2332 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2333 = trunc i8 %2332 to i1
  br i1 %2333, label %2334, label %2343

2334:                                             ; preds = %2331
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #13
  %2335 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 0
  %2336 = load float, ptr %2335, align 4, !tbaa !44
  %2337 = load i32, ptr %113, align 4, !tbaa !9
  %2338 = sitofp i32 %2337 to float
  %2339 = load ptr, ptr %18, align 8, !tbaa !5
  %2340 = getelementptr inbounds %struct.ImGuiContext, ptr %2339, i32 0, i32 7
  %2341 = load float, ptr %2340, align 8, !tbaa !116
  %2342 = fmul float %2338, %2341
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %117, float noundef %2336, float noundef %2342)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %105, ptr align 4 %117, i64 8, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #13
  br label %2343

2343:                                             ; preds = %2334, %2331
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #13
  %2344 = load ptr, ptr %40, align 8, !tbaa !5
  %2345 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2344, i32 0, i32 10
  %2346 = load i8, ptr %2345, align 8, !tbaa !121, !range !36, !noundef !37
  %2347 = trunc i8 %2346 to i1
  br i1 %2347, label %2348, label %2462

2348:                                             ; preds = %2343
  %2349 = load i32, ptr %13, align 4, !tbaa !9
  %2350 = and i32 %2349, 4096
  %2351 = icmp ne i32 %2350, 0
  br i1 %2351, label %2396, label %2352

2352:                                             ; preds = %2348
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #13
  %2353 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 0
  %2354 = load float, ptr %2353, align 4, !tbaa !44
  %2355 = fmul float %2354, 2.500000e-01
  store float %2355, ptr %118, align 4, !tbaa !40
  %2356 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 0
  %2357 = load float, ptr %2356, align 4, !tbaa !44
  %2358 = load ptr, ptr %40, align 8, !tbaa !5
  %2359 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2358, i32 0, i32 7
  %2360 = load float, ptr %2359, align 4, !tbaa !99
  %2361 = fcmp olt float %2357, %2360
  br i1 %2361, label %2362, label %2372

2362:                                             ; preds = %2352
  %2363 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 0
  %2364 = load float, ptr %2363, align 4, !tbaa !44
  %2365 = load float, ptr %118, align 4, !tbaa !40
  %2366 = fsub float %2364, %2365
  %2367 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2366)
  %2368 = fptosi float %2367 to i32
  %2369 = sitofp i32 %2368 to float
  %2370 = load ptr, ptr %40, align 8, !tbaa !5
  %2371 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2370, i32 0, i32 7
  store float %2369, ptr %2371, align 4, !tbaa !99
  br label %2395

2372:                                             ; preds = %2352
  %2373 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 0
  %2374 = load float, ptr %2373, align 4, !tbaa !44
  %2375 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 0
  %2376 = load float, ptr %2375, align 4, !tbaa !44
  %2377 = fsub float %2374, %2376
  %2378 = load ptr, ptr %40, align 8, !tbaa !5
  %2379 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2378, i32 0, i32 7
  %2380 = load float, ptr %2379, align 4, !tbaa !99
  %2381 = fcmp oge float %2377, %2380
  br i1 %2381, label %2382, label %2394

2382:                                             ; preds = %2372
  %2383 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 0
  %2384 = load float, ptr %2383, align 4, !tbaa !44
  %2385 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 0
  %2386 = load float, ptr %2385, align 4, !tbaa !44
  %2387 = fsub float %2384, %2386
  %2388 = load float, ptr %118, align 4, !tbaa !40
  %2389 = fadd float %2387, %2388
  %2390 = fptosi float %2389 to i32
  %2391 = sitofp i32 %2390 to float
  %2392 = load ptr, ptr %40, align 8, !tbaa !5
  %2393 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2392, i32 0, i32 7
  store float %2391, ptr %2393, align 4, !tbaa !99
  br label %2394

2394:                                             ; preds = %2382, %2372
  br label %2395

2395:                                             ; preds = %2394, %2362
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #13
  br label %2399

2396:                                             ; preds = %2348
  %2397 = load ptr, ptr %40, align 8, !tbaa !5
  %2398 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2397, i32 0, i32 7
  store float 0.000000e+00, ptr %2398, align 4, !tbaa !99
  br label %2399

2399:                                             ; preds = %2396, %2395
  %2400 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2401 = trunc i8 %2400 to i1
  br i1 %2401, label %2402, label %2461

2402:                                             ; preds = %2399
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #13
  %2403 = load ptr, ptr %35, align 8, !tbaa !5
  %2404 = getelementptr inbounds %struct.ImGuiWindow, ptr %2403, i32 0, i32 14
  %2405 = getelementptr inbounds %struct.ImVec2, ptr %2404, i32 0, i32 1
  %2406 = load float, ptr %2405, align 4, !tbaa !128
  store float %2406, ptr %119, align 4, !tbaa !40
  %2407 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 1
  %2408 = load float, ptr %2407, align 4, !tbaa !41
  %2409 = load ptr, ptr %18, align 8, !tbaa !5
  %2410 = getelementptr inbounds %struct.ImGuiContext, ptr %2409, i32 0, i32 7
  %2411 = load float, ptr %2410, align 8, !tbaa !116
  %2412 = fsub float %2408, %2411
  %2413 = load float, ptr %119, align 4, !tbaa !40
  %2414 = fcmp olt float %2412, %2413
  br i1 %2414, label %2415, label %2423

2415:                                             ; preds = %2402
  %2416 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 1
  %2417 = load float, ptr %2416, align 4, !tbaa !41
  %2418 = load ptr, ptr %18, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.ImGuiContext, ptr %2418, i32 0, i32 7
  %2420 = load float, ptr %2419, align 8, !tbaa !116
  %2421 = fsub float %2417, %2420
  %2422 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %2421)
  store float %2422, ptr %119, align 4, !tbaa !40
  br label %2438

2423:                                             ; preds = %2402
  %2424 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 1
  %2425 = load float, ptr %2424, align 4, !tbaa !41
  %2426 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 1
  %2427 = load float, ptr %2426, align 4, !tbaa !41
  %2428 = fsub float %2425, %2427
  %2429 = load float, ptr %119, align 4, !tbaa !40
  %2430 = fcmp oge float %2428, %2429
  br i1 %2430, label %2431, label %2437

2431:                                             ; preds = %2423
  %2432 = getelementptr inbounds %struct.ImVec2, ptr %108, i32 0, i32 1
  %2433 = load float, ptr %2432, align 4, !tbaa !41
  %2434 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 1
  %2435 = load float, ptr %2434, align 4, !tbaa !41
  %2436 = fsub float %2433, %2435
  store float %2436, ptr %119, align 4, !tbaa !40
  br label %2437

2437:                                             ; preds = %2431, %2423
  br label %2438

2438:                                             ; preds = %2437, %2415
  %2439 = load ptr, ptr %35, align 8, !tbaa !5
  %2440 = getelementptr inbounds %struct.ImGuiWindow, ptr %2439, i32 0, i32 14
  %2441 = getelementptr inbounds %struct.ImVec2, ptr %2440, i32 0, i32 1
  %2442 = load float, ptr %2441, align 4, !tbaa !128
  %2443 = load float, ptr %119, align 4, !tbaa !40
  %2444 = fsub float %2442, %2443
  %2445 = load ptr, ptr %35, align 8, !tbaa !5
  %2446 = getelementptr inbounds %struct.ImGuiWindow, ptr %2445, i32 0, i32 45
  %2447 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2446, i32 0, i32 0
  %2448 = getelementptr inbounds %struct.ImVec2, ptr %2447, i32 0, i32 1
  %2449 = load float, ptr %2448, align 4, !tbaa !115
  %2450 = fadd float %2449, %2444
  store float %2450, ptr %2448, align 4, !tbaa !115
  %2451 = load float, ptr %119, align 4, !tbaa !40
  %2452 = load ptr, ptr %35, align 8, !tbaa !5
  %2453 = getelementptr inbounds %struct.ImGuiWindow, ptr %2452, i32 0, i32 14
  %2454 = getelementptr inbounds %struct.ImVec2, ptr %2453, i32 0, i32 1
  store float %2451, ptr %2454, align 4, !tbaa !128
  %2455 = load ptr, ptr %35, align 8, !tbaa !5
  %2456 = getelementptr inbounds %struct.ImGuiWindow, ptr %2455, i32 0, i32 45
  %2457 = getelementptr inbounds %struct.ImGuiWindowTempData, ptr %2456, i32 0, i32 0
  %2458 = getelementptr inbounds %struct.ImVec2, ptr %2457, i32 0, i32 1
  %2459 = load float, ptr %2458, align 4, !tbaa !115
  %2460 = getelementptr inbounds %struct.ImVec2, ptr %104, i32 0, i32 1
  store float %2459, ptr %2460, align 4, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #13
  br label %2461

2461:                                             ; preds = %2438, %2399
  br label %2462

2462:                                             ; preds = %2461, %2343
  %2463 = load ptr, ptr %40, align 8, !tbaa !5
  %2464 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2463, i32 0, i32 10
  store i8 0, ptr %2464, align 8, !tbaa !121
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #13
  %2465 = load ptr, ptr %40, align 8, !tbaa !5
  %2466 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2465, i32 0, i32 7
  %2467 = load float, ptr %2466, align 4, !tbaa !99
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %120, float noundef %2467, float noundef 0.000000e+00)
  %2468 = load ptr, ptr %40, align 8, !tbaa !5
  %2469 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2468, i32 0, i32 8
  %2470 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2469, i32 0, i32 1
  %2471 = load i32, ptr %2470, align 4, !tbaa !130
  %2472 = load ptr, ptr %40, align 8, !tbaa !5
  %2473 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2472, i32 0, i32 8
  %2474 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2473, i32 0, i32 2
  %2475 = load i32, ptr %2474, align 8, !tbaa !131
  %2476 = icmp ne i32 %2471, %2475
  br i1 %2476, label %2477, label %2601

2477:                                             ; preds = %2462
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #13
  %2478 = load ptr, ptr %107, align 8, !tbaa !5
  %2479 = load ptr, ptr %40, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2479, i32 0, i32 8
  %2481 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2480, i32 0, i32 1
  %2482 = load i32, ptr %2481, align 4, !tbaa !130
  %2483 = load ptr, ptr %40, align 8, !tbaa !5
  %2484 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2483, i32 0, i32 8
  %2485 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2484, i32 0, i32 2
  %2486 = load i32, ptr %2485, align 8, !tbaa !131
  %2487 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %2482, i32 noundef %2486)
  %2488 = sext i32 %2487 to i64
  %2489 = getelementptr inbounds i16, ptr %2478, i64 %2488
  store ptr %2489, ptr %121, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #13
  %2490 = load ptr, ptr %107, align 8, !tbaa !5
  %2491 = load ptr, ptr %40, align 8, !tbaa !5
  %2492 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2491, i32 0, i32 8
  %2493 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2492, i32 0, i32 1
  %2494 = load i32, ptr %2493, align 4, !tbaa !130
  %2495 = load ptr, ptr %40, align 8, !tbaa !5
  %2496 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2495, i32 0, i32 8
  %2497 = getelementptr inbounds %"struct.ImGuiStb::STB_TexteditState", ptr %2496, i32 0, i32 2
  %2498 = load i32, ptr %2497, align 8, !tbaa !131
  %2499 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2494, i32 noundef %2498)
  %2500 = sext i32 %2499 to i64
  %2501 = getelementptr inbounds i16, ptr %2490, i64 %2500
  store ptr %2501, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #13
  %2502 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2503 = trunc i8 %2502 to i1
  %2504 = zext i1 %2503 to i64
  %2505 = select i1 %2503, float 0.000000e+00, float -1.000000e+00
  store float %2505, ptr %123, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #13
  %2506 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2507 = trunc i8 %2506 to i1
  %2508 = zext i1 %2507 to i64
  %2509 = select i1 %2507, float 0.000000e+00, float 2.000000e+00
  store float %2509, ptr %124, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #13
  %2510 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 37, float noundef 1.000000e+00)
  store i32 %2510, ptr %125, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #13
  %2511 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %109)
  store <2 x float> %2511, ptr %127, align 4
  %2512 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %127, ptr noundef nonnull align 4 dereferenceable(8) %120)
  store <2 x float> %2512, ptr %126, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #13
  %2513 = load ptr, ptr %121, align 8, !tbaa !5
  store ptr %2513, ptr %128, align 8, !tbaa !5
  br label %2514

2514:                                             ; preds = %2586, %2477
  %2515 = load ptr, ptr %128, align 8, !tbaa !5
  %2516 = load ptr, ptr %122, align 8, !tbaa !5
  %2517 = icmp ult ptr %2515, %2516
  br i1 %2517, label %2519, label %2518

2518:                                             ; preds = %2514
  store i32 10, ptr %17, align 4
  br label %2599

2519:                                             ; preds = %2514
  %2520 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 1
  %2521 = load float, ptr %2520, align 4, !tbaa !41
  %2522 = getelementptr inbounds %struct.ImVec4, ptr %103, i32 0, i32 3
  %2523 = load float, ptr %2522, align 4, !tbaa !155
  %2524 = load ptr, ptr %18, align 8, !tbaa !5
  %2525 = getelementptr inbounds %struct.ImGuiContext, ptr %2524, i32 0, i32 7
  %2526 = load float, ptr %2525, align 8, !tbaa !116
  %2527 = fadd float %2523, %2526
  %2528 = fcmp ogt float %2521, %2527
  br i1 %2528, label %2529, label %2530

2529:                                             ; preds = %2519
  store i32 10, ptr %17, align 4
  br label %2599

2530:                                             ; preds = %2519
  %2531 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 1
  %2532 = load float, ptr %2531, align 4, !tbaa !41
  %2533 = getelementptr inbounds %struct.ImVec4, ptr %103, i32 0, i32 1
  %2534 = load float, ptr %2533, align 4, !tbaa !156
  %2535 = fcmp olt float %2532, %2534
  br i1 %2535, label %2536, label %2550

2536:                                             ; preds = %2530
  br label %2537

2537:                                             ; preds = %2548, %2536
  %2538 = load ptr, ptr %128, align 8, !tbaa !5
  %2539 = load ptr, ptr %122, align 8, !tbaa !5
  %2540 = icmp ult ptr %2538, %2539
  br i1 %2540, label %2541, label %2549

2541:                                             ; preds = %2537
  %2542 = load ptr, ptr %128, align 8, !tbaa !5
  %2543 = getelementptr inbounds i16, ptr %2542, i32 1
  store ptr %2543, ptr %128, align 8, !tbaa !5
  %2544 = load i16, ptr %2542, align 2, !tbaa !122
  %2545 = zext i16 %2544 to i32
  %2546 = icmp eq i32 %2545, 10
  br i1 %2546, label %2547, label %2548

2547:                                             ; preds = %2541
  br label %2549

2548:                                             ; preds = %2541
  br label %2537, !llvm.loop !157

2549:                                             ; preds = %2547, %2537
  br label %2586

2550:                                             ; preds = %2530
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #13
  %2551 = load ptr, ptr %128, align 8, !tbaa !5
  %2552 = load ptr, ptr %122, align 8, !tbaa !5
  %2553 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %2551, ptr noundef %2552, ptr noundef %128, ptr noundef null, i1 noundef zeroext true)
  store <2 x float> %2553, ptr %129, align 4
  %2554 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  %2555 = load float, ptr %2554, align 4, !tbaa !44
  %2556 = fcmp ole float %2555, 0.000000e+00
  br i1 %2556, label %2557, label %2566

2557:                                             ; preds = %2550
  %2558 = load ptr, ptr %18, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ImGuiContext, ptr %2558, i32 0, i32 6
  %2560 = load ptr, ptr %2559, align 8, !tbaa !77
  %2561 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(112) %2560, i16 noundef zeroext 32)
  %2562 = fmul float %2561, 5.000000e-01
  %2563 = fptosi float %2562 to i32
  %2564 = sitofp i32 %2563 to float
  %2565 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  store float %2564, ptr %2565, align 4, !tbaa !44
  br label %2566

2566:                                             ; preds = %2557, %2550
  call void @llvm.lifetime.start.p0(i64 16, ptr %130) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #13
  %2567 = load float, ptr %123, align 4, !tbaa !40
  %2568 = load ptr, ptr %18, align 8, !tbaa !5
  %2569 = getelementptr inbounds %struct.ImGuiContext, ptr %2568, i32 0, i32 7
  %2570 = load float, ptr %2569, align 8, !tbaa !116
  %2571 = fsub float %2567, %2570
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %132, float noundef 0.000000e+00, float noundef %2571)
  %2572 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %126, ptr noundef nonnull align 4 dereferenceable(8) %132)
  store <2 x float> %2572, ptr %131, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #13
  %2573 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  %2574 = load float, ptr %2573, align 4, !tbaa !44
  %2575 = load float, ptr %124, align 4, !tbaa !40
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %134, float noundef %2574, float noundef %2575)
  %2576 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %126, ptr noundef nonnull align 4 dereferenceable(8) %134)
  store <2 x float> %2576, ptr %133, align 4
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %130, ptr noundef nonnull align 4 dereferenceable(8) %131, ptr noundef nonnull align 4 dereferenceable(8) %133)
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %135) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %135, ptr noundef nonnull align 4 dereferenceable(16) %103)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %130, ptr noundef nonnull align 4 dereferenceable(16) %135)
  call void @llvm.lifetime.end.p0(i64 16, ptr %135) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %136) #13
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %136, ptr noundef nonnull align 4 dereferenceable(16) %103)
  %2577 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %130, ptr noundef nonnull align 4 dereferenceable(16) %136)
  call void @llvm.lifetime.end.p0(i64 16, ptr %136) #13
  br i1 %2577, label %2578, label %2585

2578:                                             ; preds = %2566
  %2579 = load ptr, ptr %35, align 8, !tbaa !5
  %2580 = getelementptr inbounds %struct.ImGuiWindow, ptr %2579, i32 0, i32 59
  %2581 = load ptr, ptr %2580, align 8, !tbaa !158
  %2582 = getelementptr inbounds %struct.ImRect, ptr %130, i32 0, i32 0
  %2583 = getelementptr inbounds %struct.ImRect, ptr %130, i32 0, i32 1
  %2584 = load i32, ptr %125, align 4, !tbaa !9
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %2581, ptr noundef nonnull align 4 dereferenceable(8) %2582, ptr noundef nonnull align 4 dereferenceable(8) %2583, i32 noundef %2584, float noundef 0.000000e+00, i32 noundef 15)
  br label %2585

2585:                                             ; preds = %2578, %2566
  call void @llvm.lifetime.end.p0(i64 16, ptr %130) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #13
  br label %2586

2586:                                             ; preds = %2585, %2549
  %2587 = getelementptr inbounds %struct.ImVec2, ptr %104, i32 0, i32 0
  %2588 = load float, ptr %2587, align 4, !tbaa !44
  %2589 = getelementptr inbounds %struct.ImVec2, ptr %120, i32 0, i32 0
  %2590 = load float, ptr %2589, align 4, !tbaa !44
  %2591 = fsub float %2588, %2590
  %2592 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 0
  store float %2591, ptr %2592, align 4, !tbaa !44
  %2593 = load ptr, ptr %18, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.ImGuiContext, ptr %2593, i32 0, i32 7
  %2595 = load float, ptr %2594, align 8, !tbaa !116
  %2596 = getelementptr inbounds %struct.ImVec2, ptr %126, i32 0, i32 1
  %2597 = load float, ptr %2596, align 4, !tbaa !41
  %2598 = fadd float %2597, %2595
  store float %2598, ptr %2596, align 4, !tbaa !41
  br label %2514, !llvm.loop !159

2599:                                             ; preds = %2529, %2518
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #13
  br label %2600

2600:                                             ; preds = %2599
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #13
  br label %2601

2601:                                             ; preds = %2600, %2462
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #13
  %2602 = load ptr, ptr %40, align 8, !tbaa !5
  %2603 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2602, i32 0, i32 4
  %2604 = load i32, ptr %2603, align 8, !tbaa !98
  store i32 %2604, ptr %137, align 4, !tbaa !9
  %2605 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2606 = trunc i8 %2605 to i1
  br i1 %2606, label %2610, label %2607

2607:                                             ; preds = %2601
  %2608 = load i32, ptr %137, align 4, !tbaa !9
  %2609 = icmp slt i32 %2608, 2097152
  br i1 %2609, label %2610, label %2633

2610:                                             ; preds = %2607, %2601
  %2611 = load ptr, ptr %35, align 8, !tbaa !5
  %2612 = getelementptr inbounds %struct.ImGuiWindow, ptr %2611, i32 0, i32 59
  %2613 = load ptr, ptr %2612, align 8, !tbaa !158
  %2614 = load ptr, ptr %18, align 8, !tbaa !5
  %2615 = getelementptr inbounds %struct.ImGuiContext, ptr %2614, i32 0, i32 6
  %2616 = load ptr, ptr %2615, align 8, !tbaa !77
  %2617 = load ptr, ptr %18, align 8, !tbaa !5
  %2618 = getelementptr inbounds %struct.ImGuiContext, ptr %2617, i32 0, i32 7
  %2619 = load float, ptr %2618, align 8, !tbaa !116
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #13
  %2620 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %120)
  store <2 x float> %2620, ptr %138, align 4
  %2621 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  %2622 = load ptr, ptr %99, align 8, !tbaa !5
  %2623 = load ptr, ptr %99, align 8, !tbaa !5
  %2624 = load i32, ptr %137, align 4, !tbaa !9
  %2625 = sext i32 %2624 to i64
  %2626 = getelementptr inbounds i8, ptr %2623, i64 %2625
  %2627 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2628 = trunc i8 %2627 to i1
  br i1 %2628, label %2629, label %2630

2629:                                             ; preds = %2610
  br label %2631

2630:                                             ; preds = %2610
  br label %2631

2631:                                             ; preds = %2630, %2629
  %2632 = phi ptr [ null, %2629 ], [ %103, %2630 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %2613, ptr noundef %2616, float noundef %2619, ptr noundef nonnull align 4 dereferenceable(8) %138, i32 noundef %2621, ptr noundef %2622, ptr noundef %2626, float noundef 0.000000e+00, ptr noundef %2632)
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #13
  br label %2633

2633:                                             ; preds = %2631, %2607
  call void @llvm.lifetime.start.p0(i64 1, ptr %139) #13
  %2634 = load ptr, ptr %18, align 8, !tbaa !5
  %2635 = getelementptr inbounds %struct.ImGuiContext, ptr %2634, i32 0, i32 4
  %2636 = getelementptr inbounds %struct.ImGuiIO, ptr %2635, i32 0, i32 23
  %2637 = load i8, ptr %2636, align 2, !tbaa !160, !range !36, !noundef !37
  %2638 = trunc i8 %2637 to i1
  br i1 %2638, label %2639, label %2652

2639:                                             ; preds = %2633
  %2640 = load ptr, ptr %18, align 8, !tbaa !5
  %2641 = getelementptr inbounds %struct.ImGuiContext, ptr %2640, i32 0, i32 124
  %2642 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2641, i32 0, i32 9
  %2643 = load float, ptr %2642, align 4, !tbaa !161
  %2644 = fcmp ole float %2643, 0.000000e+00
  br i1 %2644, label %2652, label %2645

2645:                                             ; preds = %2639
  %2646 = load ptr, ptr %18, align 8, !tbaa !5
  %2647 = getelementptr inbounds %struct.ImGuiContext, ptr %2646, i32 0, i32 124
  %2648 = getelementptr inbounds %struct.ImGuiInputTextState, ptr %2647, i32 0, i32 9
  %2649 = load float, ptr %2648, align 4, !tbaa !161
  %2650 = call noundef float @_ZL6ImFmodff(float noundef %2649, float noundef 0x3FF3333340000000)
  %2651 = fcmp ole float %2650, 0x3FE99999A0000000
  br label %2652

2652:                                             ; preds = %2645, %2639, %2633
  %2653 = phi i1 [ true, %2639 ], [ true, %2633 ], [ %2651, %2645 ]
  %2654 = zext i1 %2653 to i8
  store i8 %2654, ptr %139, align 1, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #13
  %2655 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %104, ptr noundef nonnull align 4 dereferenceable(8) %108)
  store <2 x float> %2655, ptr %141, align 4
  %2656 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %141, ptr noundef nonnull align 4 dereferenceable(8) %120)
  store <2 x float> %2656, ptr %140, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %142) #13
  %2657 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  %2658 = load float, ptr %2657, align 4, !tbaa !44
  %2659 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 1
  %2660 = load float, ptr %2659, align 4, !tbaa !41
  %2661 = load ptr, ptr %18, align 8, !tbaa !5
  %2662 = getelementptr inbounds %struct.ImGuiContext, ptr %2661, i32 0, i32 7
  %2663 = load float, ptr %2662, align 8, !tbaa !116
  %2664 = fsub float %2660, %2663
  %2665 = fadd float %2664, 5.000000e-01
  %2666 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  %2667 = load float, ptr %2666, align 4, !tbaa !44
  %2668 = fadd float %2667, 1.000000e+00
  %2669 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 1
  %2670 = load float, ptr %2669, align 4, !tbaa !41
  %2671 = fsub float %2670, 1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %142, float noundef %2658, float noundef %2665, float noundef %2668, float noundef %2671)
  %2672 = load i8, ptr %139, align 1, !tbaa !38, !range !36, !noundef !37
  %2673 = trunc i8 %2672 to i1
  call void @llvm.lifetime.start.p0(i64 16, ptr %143) #13
  br i1 %2673, label %2674, label %2676

2674:                                             ; preds = %2652
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %143, ptr noundef nonnull align 4 dereferenceable(16) %103)
  %2675 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %142, ptr noundef nonnull align 4 dereferenceable(16) %143)
  br label %2676

2676:                                             ; preds = %2674, %2652
  %2677 = phi i1 [ false, %2652 ], [ %2675, %2674 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #13
  br i1 %2677, label %2678, label %2685

2678:                                             ; preds = %2676
  %2679 = load ptr, ptr %35, align 8, !tbaa !5
  %2680 = getelementptr inbounds %struct.ImGuiWindow, ptr %2679, i32 0, i32 59
  %2681 = load ptr, ptr %2680, align 8, !tbaa !158
  %2682 = getelementptr inbounds %struct.ImRect, ptr %142, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #13
  %2683 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %142)
  store <2 x float> %2683, ptr %144, align 4
  %2684 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %2681, ptr noundef nonnull align 4 dereferenceable(8) %2682, ptr noundef nonnull align 4 dereferenceable(8) %144, i32 noundef %2684, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #13
  br label %2685

2685:                                             ; preds = %2678, %2676
  %2686 = load i8, ptr %22, align 1, !tbaa !38, !range !36, !noundef !37
  %2687 = trunc i8 %2686 to i1
  br i1 %2687, label %2688, label %2700

2688:                                             ; preds = %2685
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #13
  %2689 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 0
  %2690 = load float, ptr %2689, align 4, !tbaa !44
  %2691 = fsub float %2690, 1.000000e+00
  %2692 = getelementptr inbounds %struct.ImVec2, ptr %140, i32 0, i32 1
  %2693 = load float, ptr %2692, align 4, !tbaa !41
  %2694 = load ptr, ptr %18, align 8, !tbaa !5
  %2695 = getelementptr inbounds %struct.ImGuiContext, ptr %2694, i32 0, i32 7
  %2696 = load float, ptr %2695, align 8, !tbaa !116
  %2697 = fsub float %2693, %2696
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %145, float noundef %2691, float noundef %2697)
  %2698 = load ptr, ptr %18, align 8, !tbaa !5
  %2699 = getelementptr inbounds %struct.ImGuiContext, ptr %2698, i32 0, i32 136
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %2699, ptr align 4 %145, i64 8, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #13
  br label %2700

2700:                                             ; preds = %2688, %2685
  call void @llvm.lifetime.end.p0(i64 16, ptr %142) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %139) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  br label %2749

2701:                                             ; preds = %2163
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #13
  store ptr null, ptr %146, align 8, !tbaa !5
  %2702 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2703 = trunc i8 %2702 to i1
  br i1 %2703, label %2704, label %2714

2704:                                             ; preds = %2701
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #13
  %2705 = getelementptr inbounds %struct.ImVec2, ptr %28, i32 0, i32 0
  %2706 = load float, ptr %2705, align 4, !tbaa !44
  %2707 = load ptr, ptr %99, align 8, !tbaa !5
  %2708 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %2707, ptr noundef %146)
  %2709 = sitofp i32 %2708 to float
  %2710 = load ptr, ptr %18, align 8, !tbaa !5
  %2711 = getelementptr inbounds %struct.ImGuiContext, ptr %2710, i32 0, i32 7
  %2712 = load float, ptr %2711, align 8, !tbaa !116
  %2713 = fmul float %2709, %2712
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %147, float noundef %2706, float noundef %2713)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %105, ptr align 4 %147, i64 8, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #13
  br label %2719

2714:                                             ; preds = %2701
  %2715 = load ptr, ptr %99, align 8, !tbaa !5
  %2716 = load ptr, ptr %99, align 8, !tbaa !5
  %2717 = call i64 @strlen(ptr noundef %2716) #15
  %2718 = getelementptr inbounds i8, ptr %2715, i64 %2717
  store ptr %2718, ptr %146, align 8, !tbaa !5
  br label %2719

2719:                                             ; preds = %2714, %2704
  %2720 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2721 = trunc i8 %2720 to i1
  br i1 %2721, label %2729, label %2722

2722:                                             ; preds = %2719
  %2723 = load ptr, ptr %146, align 8, !tbaa !5
  %2724 = load ptr, ptr %99, align 8, !tbaa !5
  %2725 = ptrtoint ptr %2723 to i64
  %2726 = ptrtoint ptr %2724 to i64
  %2727 = sub i64 %2725, %2726
  %2728 = icmp slt i64 %2727, 2097152
  br i1 %2728, label %2729, label %2748

2729:                                             ; preds = %2722, %2719
  %2730 = load ptr, ptr %35, align 8, !tbaa !5
  %2731 = getelementptr inbounds %struct.ImGuiWindow, ptr %2730, i32 0, i32 59
  %2732 = load ptr, ptr %2731, align 8, !tbaa !158
  %2733 = load ptr, ptr %18, align 8, !tbaa !5
  %2734 = getelementptr inbounds %struct.ImGuiContext, ptr %2733, i32 0, i32 6
  %2735 = load ptr, ptr %2734, align 8, !tbaa !77
  %2736 = load ptr, ptr %18, align 8, !tbaa !5
  %2737 = getelementptr inbounds %struct.ImGuiContext, ptr %2736, i32 0, i32 7
  %2738 = load float, ptr %2737, align 8, !tbaa !116
  %2739 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  %2740 = load ptr, ptr %99, align 8, !tbaa !5
  %2741 = load ptr, ptr %146, align 8, !tbaa !5
  %2742 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2743 = trunc i8 %2742 to i1
  br i1 %2743, label %2744, label %2745

2744:                                             ; preds = %2729
  br label %2746

2745:                                             ; preds = %2729
  br label %2746

2746:                                             ; preds = %2745, %2744
  %2747 = phi ptr [ null, %2744 ], [ %103, %2745 ]
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %2732, ptr noundef %2735, float noundef %2738, ptr noundef nonnull align 4 dereferenceable(8) %104, i32 noundef %2739, ptr noundef %2740, ptr noundef %2741, float noundef 0.000000e+00, ptr noundef %2747)
  br label %2748

2748:                                             ; preds = %2746, %2722
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #13
  br label %2749

2749:                                             ; preds = %2748, %2700
  %2750 = load i8, ptr %21, align 1, !tbaa !38, !range !36, !noundef !37
  %2751 = trunc i8 %2750 to i1
  br i1 %2751, label %2752, label %2757

2752:                                             ; preds = %2749
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #13
  %2753 = load ptr, ptr %18, align 8, !tbaa !5
  %2754 = getelementptr inbounds %struct.ImGuiContext, ptr %2753, i32 0, i32 7
  %2755 = load float, ptr %2754, align 8, !tbaa !116
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %149, float noundef 0.000000e+00, float noundef %2755)
  %2756 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %105, ptr noundef nonnull align 4 dereferenceable(8) %149)
  store <2 x float> %2756, ptr %148, align 4
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %148)
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #13
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %2757

2757:                                             ; preds = %2752, %2749
  %2758 = load i8, ptr %23, align 1, !tbaa !38, !range !36, !noundef !37
  %2759 = trunc i8 %2758 to i1
  br i1 %2759, label %2760, label %2761

2760:                                             ; preds = %2757
  call void @_ZN5ImGui7PopFontEv()
  br label %2761

2761:                                             ; preds = %2760, %2757
  %2762 = load ptr, ptr %18, align 8, !tbaa !5
  %2763 = getelementptr inbounds %struct.ImGuiContext, ptr %2762, i32 0, i32 144
  %2764 = load i8, ptr %2763, align 8, !tbaa !162, !range !36, !noundef !37
  %2765 = trunc i8 %2764 to i1
  br i1 %2765, label %2766, label %2771

2766:                                             ; preds = %2761
  %2767 = load i8, ptr %23, align 1, !tbaa !38, !range !36, !noundef !37
  %2768 = trunc i8 %2767 to i1
  br i1 %2768, label %2771, label %2769

2769:                                             ; preds = %2766
  %2770 = load ptr, ptr %99, align 8, !tbaa !5
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef %104, ptr noundef %2770, ptr noundef null)
  br label %2771

2771:                                             ; preds = %2769, %2766, %2761
  %2772 = getelementptr inbounds %struct.ImVec2, ptr %27, i32 0, i32 0
  %2773 = load float, ptr %2772, align 4, !tbaa !44
  %2774 = fcmp ogt float %2773, 0.000000e+00
  br i1 %2774, label %2775, label %2794

2775:                                             ; preds = %2771
  %2776 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 1
  %2777 = getelementptr inbounds %struct.ImVec2, ptr %2776, i32 0, i32 0
  %2778 = load float, ptr %2777, align 4, !tbaa !163
  %2779 = load ptr, ptr %20, align 8, !tbaa !5
  %2780 = getelementptr inbounds %struct.ImGuiStyle, ptr %2779, i32 0, i32 14
  %2781 = getelementptr inbounds %struct.ImVec2, ptr %2780, i32 0, i32 0
  %2782 = load float, ptr %2781, align 4, !tbaa !45
  %2783 = fadd float %2778, %2782
  %2784 = getelementptr inbounds %struct.ImRect, ptr %30, i32 0, i32 0
  %2785 = getelementptr inbounds %struct.ImVec2, ptr %2784, i32 0, i32 1
  %2786 = load float, ptr %2785, align 4, !tbaa !151
  %2787 = load ptr, ptr %20, align 8, !tbaa !5
  %2788 = getelementptr inbounds %struct.ImGuiStyle, ptr %2787, i32 0, i32 10
  %2789 = getelementptr inbounds %struct.ImVec2, ptr %2788, i32 0, i32 1
  %2790 = load float, ptr %2789, align 4, !tbaa !42
  %2791 = fadd float %2786, %2790
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %150, float noundef %2783, float noundef %2791)
  %2792 = load ptr, ptr %9, align 8, !tbaa !5
  %2793 = load <2 x float>, ptr %150, align 4
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %2793, ptr noundef %2792, ptr noundef null, i1 noundef zeroext true)
  br label %2794

2794:                                             ; preds = %2775, %2771
  %2795 = load i8, ptr %53, align 1, !tbaa !38, !range !36, !noundef !37
  %2796 = trunc i8 %2795 to i1
  br i1 %2796, label %2797, label %2799

2797:                                             ; preds = %2794
  %2798 = load i32, ptr %26, align 4, !tbaa !9
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %2798)
  br label %2799

2799:                                             ; preds = %2797, %2794
  %2800 = load i32, ptr %13, align 4, !tbaa !9
  %2801 = and i32 %2800, 32
  %2802 = icmp ne i32 %2801, 0
  br i1 %2802, label %2803, label %2806

2803:                                             ; preds = %2799
  %2804 = load i8, ptr %54, align 1, !tbaa !38, !range !36, !noundef !37
  %2805 = trunc i8 %2804 to i1
  store i1 %2805, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2809

2806:                                             ; preds = %2799
  %2807 = load i8, ptr %53, align 1, !tbaa !38, !range !36, !noundef !37
  %2808 = trunc i8 %2807 to i1
  store i1 %2808, ptr %8, align 1
  store i32 1, ptr %17, align 4
  br label %2809

2809:                                             ; preds = %2806, %2803
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #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 1, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #13
  br label %2810

2810:                                             ; preds = %2809, %309, %283
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 4, 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 1, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #13
  br label %2811

2811:                                             ; preds = %2810, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #13
  %2812 = load i1, ptr %8, align 1
  ret i1 %2812
}

; 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(3720), i32 noundef) #9 align 2

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

declare void @_ZN5ImGui13EndChildFrameEv() #5

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(112), i16 noundef zeroext) #5

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

declare noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984), ptr noundef, ptr noundef) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN8ImVectorIcE6resizeEi(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) #5

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

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

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

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

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

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

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

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

declare void @_ZN5ImGui16SetWindowScrollYEP11ImGuiWindowf(ptr noundef, float noundef) #5

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() #5

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

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

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) #5

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() #5

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #5

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

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

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) #5

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

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

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

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

; 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() #5

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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 127}
!12 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !10, i64 8, !10, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !14, i64 72, !14, i64 76, !10, i64 80, !10, i64 84, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !15, i64 120, !15, i64 121, !15, i64 122, !15, i64 123, !15, i64 124, !15, i64 125, !15, i64 126, !15, i64 127, !15, i64 128, !15, i64 129, !15, i64 130, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !15, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !13, i64 188, !13, i64 196, !16, i64 208, !23, i64 512, !17, i64 528, !17, i64 544, !17, i64 560, !17, i64 576, !17, i64 592, !10, i64 608, !14, i64 612, !24, i64 616, !25, i64 664, !27, i64 680, !14, i64 696, !10, i64 700, !6, i64 704, !28, i64 712, !6, i64 880, !6, i64 888, !6, i64 896, !6, i64 904, !6, i64 912, !7, i64 920, !7, i64 928, !10, i64 960, !10, i64 964, !10, i64 968, !10, i64 972, !10, i64 976, !10, i64 980}
!13 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!14 = !{!"float", !7, i64 0}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTS19ImGuiWindowTempData", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !14, i64 40, !13, i64 44, !14, i64 52, !14, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !17, i64 76, !17, i64 92, !15, i64 108, !15, i64 109, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !15, i64 128, !13, i64 132, !18, i64 144, !6, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !14, i64 180, !14, i64 184, !19, i64 192, !20, i64 208, !20, i64 224, !21, i64 240, !7, i64 256, !22, i64 280, !22, i64 284, !22, i64 288, !6, i64 296}
!17 = !{!"_ZTS6ImRect", !13, i64 0, !13, i64 8}
!18 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !6, i64 8}
!19 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !6, i64 8}
!20 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !6, i64 8}
!21 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !6, i64 8}
!22 = !{!"_ZTS6ImVec1", !14, i64 0}
!23 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !6, i64 8}
!24 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !7, i64 16, !7, i64 32}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !10, i64 0, !10, i64 4, !6, i64 8}
!27 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !10, i64 0, !10, i64 4, !6, i64 8}
!28 = !{!"_ZTS10ImDrawList", !29, i64 0, !30, i64 16, !31, i64 32, !10, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !6, i64 80, !6, i64 88, !32, i64 96, !33, i64 112, !34, i64 128, !10, i64 144, !10, i64 148, !35, i64 152}
!29 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !6, i64 8}
!30 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !6, i64 8}
!31 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !6, i64 8}
!32 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !6, i64 8}
!33 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !6, i64 8}
!34 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !6, i64 8}
!35 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !6, i64 8}
!36 = !{i8 0, i8 2}
!37 = !{}
!38 = !{!15, !15, i64 0}
!39 = !{i64 0, i64 4, !40, i64 4, i64 4, !40}
!40 = !{!14, !14, i64 0}
!41 = !{!13, !14, i64 4}
!42 = !{!43, !14, i64 56}
!43 = !{!"_ZTS10ImGuiStyle", !14, i64 0, !13, i64 4, !14, i64 12, !14, i64 16, !13, i64 20, !13, i64 28, !14, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !13, i64 52, !14, i64 60, !14, i64 64, !13, i64 68, !13, i64 76, !13, i64 84, !14, i64 92, !14, i64 96, !14, i64 100, !14, i64 104, !14, i64 108, !14, i64 112, !13, i64 116, !13, i64 124, !13, i64 132, !14, i64 140, !15, i64 144, !15, i64 145, !14, i64 148, !7, i64 152}
!44 = !{!13, !14, i64 0}
!45 = !{!43, !14, i64 76}
!46 = !{!12, !10, i64 324}
!47 = !{!12, !10, i64 332}
!48 = !{!12, !14, i64 112}
!49 = !{!50, !10, i64 7424}
!50 = !{!"_ZTS12ImGuiContext", !15, i64 0, !15, i64 1, !15, i64 2, !51, i64 8, !43, i64 5440, !6, i64 6280, !14, i64 6288, !14, i64 6292, !52, i64 6296, !54, i64 6432, !10, i64 6440, !10, i64 6444, !10, i64 6448, !18, i64 6456, !18, i64 6472, !18, i64 6488, !18, i64 6504, !25, i64 6520, !10, i64 6536, !6, i64 6544, !6, i64 6552, !6, i64 6560, !10, i64 6568, !15, i64 6572, !10, i64 6576, !14, i64 6580, !14, i64 6584, !10, i64 6588, !10, i64 6592, !10, i64 6596, !14, i64 6600, !15, i64 6604, !15, i64 6605, !15, i64 6606, !15, i64 6607, !15, i64 6608, !10, i64 6612, !13, i64 6616, !6, i64 6624, !6, i64 6632, !55, i64 6640, !10, i64 6644, !14, i64 6648, !6, i64 6656, !56, i64 6664, !57, i64 6680, !58, i64 6696, !59, i64 6712, !59, i64 6728, !60, i64 6744, !15, i64 6856, !10, i64 6860, !6, i64 6864, !10, i64 6872, !10, i64 6876, !10, i64 6880, !10, i64 6884, !10, i64 6888, !10, i64 6892, !10, i64 6896, !10, i64 6900, !55, i64 6904, !17, i64 6908, !10, i64 6924, !6, i64 6928, !6, i64 6936, !6, i64 6944, !14, i64 6952, !14, i64 6956, !15, i64 6960, !10, i64 6964, !10, i64 6968, !15, i64 6972, !15, i64 6973, !15, i64 6974, !15, i64 6975, !15, i64 6976, !15, i64 6977, !15, i64 6978, !10, i64 6980, !17, i64 6984, !15, i64 7000, !15, i64 7001, !10, i64 7004, !61, i64 7008, !10, i64 7012, !10, i64 7016, !10, i64 7020, !62, i64 7024, !62, i64 7072, !62, i64 7120, !63, i64 7168, !64, i64 7216, !14, i64 7248, !28, i64 7256, !10, i64 7424, !15, i64 7428, !15, i64 7429, !10, i64 7432, !10, i64 7436, !10, i64 7440, !65, i64 7448, !17, i64 7512, !10, i64 7528, !10, i64 7532, !14, i64 7536, !10, i64 7540, !10, i64 7544, !10, i64 7548, !66, i64 7552, !7, i64 7568, !67, i64 7576, !72, i64 11296, !10, i64 11408, !10, i64 11412, !53, i64 11416, !15, i64 11432, !14, i64 11436, !14, i64 11440, !13, i64 11444, !10, i64 11452, !68, i64 11456, !13, i64 11472, !13, i64 11480, !15, i64 11488, !14, i64 11492, !74, i64 11496, !75, i64 11512, !76, i64 11528, !15, i64 11544, !6, i64 11552, !74, i64 11560, !10, i64 11576, !10, i64 11580, !7, i64 11584, !10, i64 12064, !14, i64 12068, !10, i64 12072, !10, i64 12076, !10, i64 12080, !7, i64 12084}
!51 = !{!"_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 136, !14, i64 140, !6, i64 144, !6, i64 152, !14, i64 160, !15, i64 164, !6, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !15, i64 200, !15, i64 201, !15, i64 202, !15, i64 203, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !13, i64 256, !7, i64 264, !14, i64 272, !14, i64 276, !15, i64 280, !15, i64 281, !15, i64 282, !15, i64 283, !7, i64 284, !7, i64 796, !7, i64 832, !15, i64 916, !15, i64 917, !15, i64 918, !15, i64 919, !15, i64 920, !15, i64 921, !15, i64 922, !14, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !13, i64 948, !13, i64 956, !7, i64 964, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1088, !7, i64 1108, !7, i64 1148, !7, i64 1168, !7, i64 3216, !7, i64 5264, !7, i64 5348}
!52 = !{!"_ZTS20ImDrawListSharedData", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !53, i64 24, !7, i64 40}
!53 = !{!"_ZTS6ImVec4", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12}
!54 = !{!"double", !7, i64 0}
!55 = !{!"_ZTS16ImGuiInputSource", !7, i64 0}
!56 = !{!"_ZTS8ImVectorI13ImGuiColorModE", !10, i64 0, !10, i64 4, !6, i64 8}
!57 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 4, !6, i64 8}
!58 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 4, !6, i64 8}
!59 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !10, i64 0, !10, i64 4, !6, i64 8}
!60 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !13, i64 28, !13, i64 36, !13, i64 44, !13, i64 52, !15, i64 60, !17, i64 64, !6, i64 80, !6, i64 88, !14, i64 96, !13, i64 100}
!61 = !{!"_ZTS15ImGuiNavForward", !7, i64 0}
!62 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !6, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !17, i64 28}
!63 = !{!"_ZTS10ImDrawData", !15, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !13, i64 28, !13, i64 36}
!64 = !{!"_ZTS17ImDrawDataBuilder", !7, i64 0}
!65 = !{!"_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}
!66 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !6, i64 8}
!67 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !30, i64 8, !68, i64 24, !68, i64 40, !10, i64 56, !10, i64 60, !10, i64 64, !14, i64 68, !69, i64 72, !14, i64 3692, !15, i64 3696, !15, i64 3697, !10, i64 3700, !6, i64 3704, !6, i64 3712}
!68 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !6, i64 8}
!69 = !{!"_ZTSN8ImGuiStb17STB_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, !70, i64 24}
!70 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !7, i64 0, !7, i64 1584, !71, i64 3582, !71, i64 3584, !10, i64 3588, !10, i64 3592}
!71 = !{!"short", !7, i64 0}
!72 = !{!"_ZTS6ImFont", !14, i64 0, !14, i64 4, !13, i64 8, !73, i64 16, !20, i64 32, !30, i64 48, !6, i64 64, !14, i64 72, !71, i64 76, !71, i64 78, !6, i64 80, !6, i64 88, !14, i64 96, !14, i64 100, !15, i64 104, !10, i64 108}
!73 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !6, i64 8}
!74 = !{!"_ZTS15ImGuiTextBuffer", !68, i64 0}
!75 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !6, i64 8}
!76 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !6, i64 8}
!77 = !{!50, !6, i64 6280}
!78 = !{!72, !14, i64 0}
!79 = !{!72, !14, i64 4}
!80 = !{!72, !14, i64 96}
!81 = !{!72, !14, i64 100}
!82 = !{!72, !6, i64 88}
!83 = !{!72, !6, i64 64}
!84 = !{!85, !14, i64 4}
!85 = !{!"_ZTS11ImFontGlyph", !71, 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}
!86 = !{!72, !14, i64 72}
!87 = !{!12, !10, i64 960}
!88 = !{!12, !10, i64 968}
!89 = !{!50, !10, i64 6588}
!90 = !{!67, !10, i64 0}
!91 = !{!50, !10, i64 6592}
!92 = !{!50, !10, i64 6888}
!93 = !{!50, !10, i64 6876}
!94 = !{!50, !55, i64 6904}
!95 = !{!67, !10, i64 60}
!96 = !{!67, !6, i64 32}
!97 = !{!67, !6, i64 16}
!98 = !{!67, !10, i64 56}
!99 = !{!67, !14, i64 68}
!100 = !{!67, !7, i64 84}
!101 = !{!51, !15, i64 280}
!102 = !{!50, !10, i64 6612}
!103 = !{!50, !15, i64 6604}
!104 = !{!67, !10, i64 8}
!105 = !{!67, !10, i64 64}
!106 = !{!67, !10, i64 3700}
!107 = !{!67, !6, i64 3704}
!108 = !{!67, !6, i64 3712}
!109 = !{!50, !15, i64 6605}
!110 = !{!50, !10, i64 12080}
!111 = !{!51, !14, i64 256}
!112 = !{!17, !14, i64 0}
!113 = !{!43, !14, i64 52}
!114 = !{!51, !14, i64 260}
!115 = !{!12, !14, i64 212}
!116 = !{!50, !14, i64 6288}
!117 = !{!51, !15, i64 201}
!118 = !{!67, !15, i64 3697}
!119 = !{!51, !14, i64 948}
!120 = !{!51, !14, i64 952}
!121 = !{!67, !15, i64 3696}
!122 = !{!71, !71, i64 0}
!123 = !{!51, !15, i64 282}
!124 = !{!51, !15, i64 283}
!125 = distinct !{!125, !126}
!126 = !{!"llvm.loop.mustprogress"}
!127 = !{!51, !15, i64 281}
!128 = !{!12, !14, i64 92}
!129 = !{!51, !6, i64 216}
!130 = !{!67, !10, i64 76}
!131 = !{!67, !10, i64 80}
!132 = !{!67, !6, i64 48}
!133 = !{!67, !10, i64 40}
!134 = !{!7, !7, i64 0}
!135 = distinct !{!135, !126}
!136 = !{!67, !10, i64 24}
!137 = !{!138, !10, i64 0}
!138 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !6, i64 8, !71, 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}
!139 = !{!138, !10, i64 4}
!140 = !{!138, !6, i64 8}
!141 = !{!138, !10, i64 20}
!142 = !{!138, !6, i64 24}
!143 = !{!138, !10, i64 32}
!144 = !{!138, !10, i64 36}
!145 = !{!138, !15, i64 40}
!146 = !{!67, !10, i64 72}
!147 = !{!138, !10, i64 44}
!148 = !{!138, !10, i64 48}
!149 = !{!138, !10, i64 52}
!150 = !{!43, !14, i64 60}
!151 = !{!17, !14, i64 4}
!152 = !{!51, !14, i64 16}
!153 = !{!67, !14, i64 3692}
!154 = distinct !{!154, !126}
!155 = !{!53, !14, i64 12}
!156 = !{!53, !14, i64 4}
!157 = distinct !{!157, !126}
!158 = !{!12, !6, i64 704}
!159 = distinct !{!159, !126}
!160 = !{!50, !15, i64 210}
!161 = !{!50, !14, i64 11268}
!162 = !{!50, !15, i64 11544}
!163 = !{!17, !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 [93 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [92 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv = external hidden unnamed_addr constant [120 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [99 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [108 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [34 x i8], align 1
@__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_number = 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

declare noundef float @_ZN5ImGui17GetTextLineHeightEv() local_unnamed_addr #5

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

; Function Attrs: 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 <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #5

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

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

; 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 void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) local_unnamed_addr #5

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

declare noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #5

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

declare void @_ZN5ImGui13ClearActiveIDEv() local_unnamed_addr #5

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

declare void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef) local_unnamed_addr #5

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

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

declare noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984), ptr noundef, ptr noundef) local_unnamed_addr #5

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

declare void @_ZN5ImGui14MarkItemEditedEj(i32 noundef) local_unnamed_addr #5

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

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

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

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

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

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

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

; 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 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowjb(ptr noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #5

declare void @_ZN5ImGui10BeginGroupEv() local_unnamed_addr #5

declare void @_ZN5ImGui8EndGroupEv() local_unnamed_addr #5

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

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

55:                                               ; preds = %7
  %56 = and i32 %4, 128
  %.not750.not = icmp eq i32 %56, 0
  %57 = and i32 %4, 1048576
  %58 = icmp ne i32 %57, 0
  %59 = and i32 %4, 1048704
  %.not751 = icmp eq i32 %59, 1048704
  br i1 %.not751, label %60, label %61

60:                                               ; preds = %55
  tail call void @__assert_fail(ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.1, i32 noundef 3120, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

61:                                               ; preds = %55
  %62 = and i32 %4, 64
  %.not752 = icmp eq i32 %62, 0
  %63 = and i32 %4, 1024
  %.not753 = icmp eq i32 %63, 0
  %64 = and i32 %4, 1088
  %.not754 = icmp eq i32 %64, 1088
  br i1 %.not754, label %65, label %66

65:                                               ; preds = %61
  tail call void @__assert_fail(ptr noundef nonnull @.str.46, ptr noundef nonnull @.str.1, i32 noundef 3121, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

66:                                               ; preds = %61
  %67 = load ptr, ptr @GImGui, align 8, !tbaa !36
  %68 = and i32 %4, 16384
  %69 = icmp eq i32 %68, 0
  %70 = and i32 %4, 32768
  %.not755 = icmp ne i32 %70, 0
  %71 = and i32 %4, 262144
  %.not756 = icmp eq i32 %71, 0
  %72 = icmp ne ptr %5, null
  %or.cond8 = or i1 %.not756, %72
  br i1 %or.cond8, label %74, label %73

73:                                               ; preds = %66
  tail call void @__assert_fail(ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.1, i32 noundef 3133, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

74:                                               ; preds = %66
  br i1 %58, label %75, label %76

75:                                               ; preds = %74
  tail call void @_ZN5ImGui10BeginGroupEv()
  br label %76

76:                                               ; preds = %75, %74
  %77 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %51, ptr noundef %0, ptr noundef null)
  %78 = 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 %8) #14
  %.sroa.0384.0.copyload = load <2 x float>, ptr %3, align 4
  %79 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  br i1 %58, label %80, label %83

80:                                               ; preds = %76
  %81 = tail call noundef float @_ZN5ImGui17GetTextLineHeightEv()
  %82 = fmul float %81, 8.000000e+00
  br label %84

83:                                               ; preds = %76
  %.sroa.0385.4.vec.extract = extractelement <2 x float> %78, i64 1
  br label %84

84:                                               ; preds = %83, %80
  %85 = phi float [ %82, %80 ], [ %.sroa.0385.4.vec.extract, %83 ]
  %86 = getelementptr inbounds i8, ptr %67, i64 5492
  %87 = getelementptr inbounds i8, ptr %67, i64 5496
  %88 = load float, ptr %87, align 4, !tbaa !37
  %89 = tail call float @llvm.fmuladd.f32(float %88, float 2.000000e+00, float %85)
  %90 = tail call <2 x float> @_ZN5ImGui12CalcItemSizeE6ImVec2ff(<2 x float> %.sroa.0384.0.copyload, float noundef %79, float noundef %89)
  store <2 x float> %90, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #14
  %91 = getelementptr inbounds i8, ptr %51, i64 208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #14
  %92 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %91, ptr noundef nonnull align 4 dereferenceable(8) %8)
  store <2 x float> %92, ptr %10, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %9, ptr noundef nonnull align 4 dereferenceable(8) %91, ptr noundef nonnull align 4 dereferenceable(8) %10)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #14
  %93 = getelementptr inbounds i8, ptr %9, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #14
  %.sroa.0385.0.vec.extract = extractelement <2 x float> %78, i64 0
  %94 = fcmp ogt float %.sroa.0385.0.vec.extract, 0.000000e+00
  br i1 %94, label %95, label %99

95:                                               ; preds = %84
  %96 = getelementptr inbounds i8, ptr %67, i64 5516
  %97 = load float, ptr %96, align 4, !tbaa !39
  %98 = fadd float %.sroa.0385.0.vec.extract, %97
  br label %99

99:                                               ; preds = %84, %95
  %100 = phi float [ %98, %95 ], [ 0.000000e+00, %84 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %13, float noundef %100, float noundef 0.000000e+00)
  %101 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %93, ptr noundef nonnull align 4 dereferenceable(8) %13)
  store <2 x float> %101, ptr %12, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #14
  br i1 %58, label %102, label %118

102:                                              ; preds = %99
  %103 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %77, ptr noundef nonnull %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #14
  %104 = call <2 x float> @_ZNK6ImRect7GetSizeEv(ptr noundef nonnull align 4 dereferenceable(16) %9)
  store <2 x float> %104, ptr %14, align 8
  %105 = call noundef zeroext i1 @_ZN5ImGui15BeginChildFrameEjRK6ImVec2i(i32 noundef %77, ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #14
  br i1 %105, label %107, label %106

106:                                              ; preds = %102
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1365

107:                                              ; preds = %102
  %108 = call noundef ptr @_ZN5ImGui16GetCurrentWindowEv()
  %109 = getelementptr inbounds i8, ptr %108, i64 324
  %110 = load i32, ptr %109, align 4, !tbaa !40
  %111 = getelementptr inbounds i8, ptr %108, i64 332
  %112 = load i32, ptr %111, align 4, !tbaa !41
  %113 = or i32 %112, %110
  store i32 %113, ptr %111, align 4, !tbaa !41
  %114 = getelementptr inbounds i8, ptr %108, i64 112
  %115 = load float, ptr %114, align 8, !tbaa !42
  %116 = load float, ptr %8, align 8, !tbaa !43
  %117 = fsub float %116, %115
  store float %117, ptr %8, align 8, !tbaa !43
  br label %121

118:                                              ; preds = %99
  %119 = load float, ptr %87, align 4, !tbaa !37
  call void @_ZN5ImGui8ItemSizeERK6ImRectf(ptr noundef nonnull align 4 dereferenceable(16) %11, float noundef %119)
  %120 = call noundef zeroext i1 @_ZN5ImGui7ItemAddERK6ImRectjPS1_(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef %77, ptr noundef nonnull %9)
  br i1 %120, label %121, label %1365

121:                                              ; preds = %118, %107
  %.0682 = phi ptr [ %108, %107 ], [ %51, %118 ]
  %122 = call noundef zeroext i1 @_ZN5ImGui13ItemHoverableERK6ImRectj(ptr noundef nonnull align 4 dereferenceable(16) %9, i32 noundef %77)
  br i1 %122, label %123, label %125

123:                                              ; preds = %121
  %124 = getelementptr inbounds i8, ptr %67, i64 7424
  store i32 1, ptr %124, align 8, !tbaa !44
  br label %125

125:                                              ; preds = %123, %121
  br i1 %.not755, label %126, label %155

126:                                              ; preds = %125
  %127 = getelementptr inbounds i8, ptr %67, i64 6280
  %128 = load ptr, ptr %127, align 8, !tbaa !72
  %129 = call noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(112) %128, i16 noundef zeroext 42)
  %130 = getelementptr inbounds i8, ptr %67, i64 11296
  %131 = load ptr, ptr %127, align 8, !tbaa !72
  %132 = load <2 x float>, ptr %131, align 8, !tbaa !73
  store <2 x float> %132, ptr %130, align 8, !tbaa !73
  %133 = getelementptr inbounds i8, ptr %131, i64 8
  %134 = getelementptr inbounds i8, ptr %67, i64 11304
  %135 = load i64, ptr %133, align 8
  store i64 %135, ptr %134, align 8
  %136 = getelementptr inbounds i8, ptr %131, i64 96
  %137 = getelementptr inbounds i8, ptr %67, i64 11392
  %138 = load <2 x float>, ptr %136, align 8, !tbaa !73
  store <2 x float> %138, ptr %137, align 8, !tbaa !73
  %139 = getelementptr inbounds i8, ptr %131, i64 88
  %140 = load ptr, ptr %139, align 8, !tbaa !74
  %141 = getelementptr inbounds i8, ptr %67, i64 11384
  store ptr %140, ptr %141, align 8, !tbaa !74
  %142 = getelementptr inbounds i8, ptr %67, i64 11360
  store ptr %129, ptr %142, align 8, !tbaa !75
  %143 = getelementptr inbounds i8, ptr %129, i64 4
  %144 = load float, ptr %143, align 4, !tbaa !76
  %145 = getelementptr inbounds i8, ptr %67, i64 11368
  store float %144, ptr %145, align 8, !tbaa !78
  %146 = getelementptr inbounds i8, ptr %67, i64 11312
  %147 = call noundef zeroext i1 @_ZNK8ImVectorI11ImFontGlyphE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %146)
  br i1 %147, label %148, label %.critedge

148:                                              ; preds = %126
  %149 = getelementptr inbounds i8, ptr %67, i64 11328
  %150 = call noundef zeroext i1 @_ZNK8ImVectorIfE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %149)
  br i1 %150, label %151, label %.critedge

151:                                              ; preds = %148
  %152 = getelementptr inbounds i8, ptr %67, i64 11344
  %153 = call noundef zeroext i1 @_ZNK8ImVectorItE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %152)
  br i1 %153, label %154, label %.critedge

.critedge:                                        ; preds = %148, %126, %151
  call void @__assert_fail(ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.1, i32 noundef 3180, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

154:                                              ; preds = %151
  call void @_ZN5ImGui8PushFontEP6ImFont(ptr noundef nonnull %130)
  br label %155

155:                                              ; preds = %154, %125
  %156 = getelementptr inbounds i8, ptr %67, i64 7576
  %157 = icmp eq i32 %64, 0
  %158 = call noundef zeroext i1 @_ZN5ImGui21FocusableItemRegisterEP11ImGuiWindowjb(ptr noundef nonnull %51, i32 noundef %77, i1 noundef zeroext %157)
  br i1 %158, label %159, label %165

159:                                              ; preds = %155
  %160 = getelementptr inbounds i8, ptr %51, i64 960
  %161 = load i32, ptr %160, align 8, !tbaa !79
  %162 = getelementptr inbounds i8, ptr %51, i64 968
  %163 = load i32, ptr %162, align 8, !tbaa !80
  %164 = icmp eq i32 %161, %163
  br label %165

165:                                              ; preds = %159, %155
  %166 = phi i1 [ false, %155 ], [ %164, %159 ]
  br i1 %122, label %167, label %171

167:                                              ; preds = %165
  %168 = getelementptr inbounds i8, ptr %67, i64 1056
  %169 = load i8, ptr %168, align 8, !tbaa !81, !range !34, !noundef !35
  %170 = trunc nuw i8 %169 to i1
  br label %171

171:                                              ; preds = %167, %165
  %172 = phi i1 [ false, %165 ], [ %170, %167 ]
  br i1 %58, label %173, label %185

173:                                              ; preds = %171
  %174 = getelementptr inbounds i8, ptr %67, i64 6588
  %175 = load i32, ptr %174, align 4, !tbaa !82
  %176 = icmp eq i32 %175, 0
  br i1 %176, label %177, label %185

177:                                              ; preds = %173
  %178 = load i32, ptr %156, align 8, !tbaa !83
  %179 = icmp eq i32 %178, %77
  br i1 %179, label %180, label %185

180:                                              ; preds = %177
  %181 = getelementptr inbounds i8, ptr %67, i64 6592
  %182 = load i32, ptr %181, align 8, !tbaa !84
  %183 = call noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %.0682, ptr noundef nonnull @.str.4, ptr noundef null)
  %184 = icmp eq i32 %182, %183
  br label %185

185:                                              ; preds = %180, %177, %173, %171
  %186 = phi i1 [ false, %177 ], [ false, %173 ], [ false, %171 ], [ %184, %180 ]
  %187 = getelementptr inbounds i8, ptr %67, i64 6588
  %188 = load i32, ptr %187, align 4, !tbaa !82
  %.not = icmp eq i32 %188, %77
  br i1 %.not, label %201, label %189

189:                                              ; preds = %185
  %190 = getelementptr inbounds i8, ptr %67, i64 6888
  %191 = load i32, ptr %190, align 8, !tbaa !85
  %192 = icmp eq i32 %191, %77
  br i1 %192, label %.thread883, label %193

193:                                              ; preds = %189
  %194 = getelementptr inbounds i8, ptr %67, i64 6876
  %195 = load i32, ptr %194, align 4, !tbaa !86
  %196 = icmp eq i32 %195, %77
  br i1 %196, label %197, label %.thread883

197:                                              ; preds = %193
  %198 = getelementptr inbounds i8, ptr %67, i64 6904
  %199 = load i32, ptr %198, align 8, !tbaa !87
  %200 = icmp eq i32 %199, 3
  br label %.thread883

201:                                              ; preds = %185
  %brmerge786 = select i1 %158, i1 true, i1 %172
  %brmerge787 = select i1 %brmerge786, i1 true, i1 %186
  br i1 %brmerge787, label %248, label %254

.thread883:                                       ; preds = %193, %197, %189
  %.ph = phi i1 [ %200, %197 ], [ false, %193 ], [ true, %189 ]
  %202 = and i32 %4, 16
  %.not758 = icmp ne i32 %202, 0
  %brmerge = select i1 %.not758, i1 true, i1 %.ph
  %203 = xor i1 %58, true
  %spec.select880 = and i1 %brmerge, %203
  %brmerge786884 = select i1 %158, i1 true, i1 %172
  %brmerge787885 = select i1 %brmerge786884, i1 true, i1 %186
  %brmerge788886 = select i1 %brmerge787885, i1 true, i1 %.ph
  br i1 %brmerge788886, label %204, label %254

204:                                              ; preds = %.thread883
  %205 = getelementptr inbounds i8, ptr %67, i64 7636
  %206 = load i32, ptr %205, align 4, !tbaa !88
  %207 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #15
  %208 = trunc i64 %207 to i32
  %209 = getelementptr inbounds i8, ptr %67, i64 7584
  %210 = add nsw i32 %2, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %209, i32 noundef %210)
  %211 = getelementptr inbounds i8, ptr %67, i64 7600
  %212 = add nsw i32 %208, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %211, i32 noundef %212)
  %213 = getelementptr inbounds i8, ptr %67, i64 7608
  %214 = load ptr, ptr %213, align 8, !tbaa !89
  %215 = sext i32 %212 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %214, ptr align 1 %1, i64 %215, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #14
  store ptr null, ptr %15, align 8, !tbaa !36
  %216 = getelementptr inbounds i8, ptr %67, i64 7592
  %217 = load ptr, ptr %216, align 8, !tbaa !90
  %218 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %217, i32 noundef %2, ptr noundef %1, ptr noundef null, ptr noundef nonnull %15)
  store i32 %218, ptr %205, align 4, !tbaa !88
  %219 = load ptr, ptr %15, align 8, !tbaa !36
  %220 = ptrtoint ptr %219 to i64
  %221 = ptrtoint ptr %1 to i64
  %222 = sub i64 %220, %221
  %223 = trunc i64 %222 to i32
  %224 = getelementptr inbounds i8, ptr %67, i64 7632
  store i32 %223, ptr %224, align 8, !tbaa !91
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  %225 = load i32, ptr %156, align 8, !tbaa !83
  %226 = icmp eq i32 %225, %77
  br i1 %226, label %227, label %.critedge790

227:                                              ; preds = %204
  %228 = load i32, ptr %205, align 4, !tbaa !88
  %229 = icmp eq i32 %206, %228
  br i1 %229, label %230, label %.critedge790

230:                                              ; preds = %227
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br label %234

.critedge790:                                     ; preds = %204, %227
  store i32 %77, ptr %156, align 8, !tbaa !83
  %231 = getelementptr inbounds i8, ptr %67, i64 7644
  store float 0.000000e+00, ptr %231, align 4, !tbaa !92
  %232 = getelementptr inbounds i8, ptr %67, i64 7648
  %233 = zext i1 %203 to i32
  call void @_ZN8ImGuiStbL29stb_textedit_initialize_stateEPNS_17STB_TexteditStateEi(ptr noundef nonnull %232, i32 noundef %233)
  %spec.select = select i1 %166, i1 true, i1 %spec.select880
  %spec.select881 = select i1 %203, i1 %spec.select, i1 false
  br label %234

234:                                              ; preds = %.critedge790, %230
  %.0686 = phi i1 [ %spec.select880, %230 ], [ %spec.select881, %.critedge790 ]
  %235 = and i32 %4, 8192
  %.not760 = icmp eq i32 %235, 0
  br i1 %.not760, label %238, label %236

236:                                              ; preds = %234
  %237 = getelementptr inbounds i8, ptr %67, i64 7660
  store i8 1, ptr %237, align 4, !tbaa !93
  br label %238

238:                                              ; preds = %236, %234
  br i1 %58, label %247, label %239

239:                                              ; preds = %238
  %not. = xor i1 %158, true
  %240 = select i1 %not., i1 true, i1 %166
  br i1 %240, label %241, label %246

241:                                              ; preds = %239
  br i1 %172, label %242, label %247

242:                                              ; preds = %241
  %243 = getelementptr inbounds i8, ptr %67, i64 288
  %244 = load i8, ptr %243, align 8, !tbaa !94, !range !34, !noundef !35
  %245 = trunc nuw i8 %244 to i1
  br i1 %245, label %246, label %247

246:                                              ; preds = %242, %239
  br label %247

247:                                              ; preds = %246, %242, %241, %238
  %.1687 = phi i1 [ %.0686, %238 ], [ true, %246 ], [ %.0686, %242 ], [ %.0686, %241 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #14
  br label %248

248:                                              ; preds = %201, %247
  %249 = phi i1 [ %.ph, %247 ], [ false, %201 ]
  %.2688 = phi i1 [ %.1687, %247 ], [ false, %201 ]
  call void @_ZN5ImGui11SetActiveIDEjP11ImGuiWindow(i32 noundef %77, ptr noundef nonnull %51)
  call void @_ZN5ImGui10SetFocusIDEjP11ImGuiWindow(i32 noundef %77, ptr noundef nonnull %51)
  call void @_ZN5ImGui11FocusWindowEP11ImGuiWindow(ptr noundef nonnull %51)
  %brmerge791.not = icmp eq i32 %59, 0
  br i1 %brmerge791.not, label %250, label %258

250:                                              ; preds = %248
  %251 = getelementptr inbounds i8, ptr %67, i64 6612
  %252 = load i32, ptr %251, align 4, !tbaa !95
  %253 = or i32 %252, 12
  store i32 %253, ptr %251, align 4, !tbaa !95
  br label %258

254:                                              ; preds = %.thread883, %201
  %255 = phi i1 [ %spec.select880, %.thread883 ], [ false, %201 ]
  %256 = getelementptr inbounds i8, ptr %67, i64 1056
  %257 = load i8, ptr %256, align 8, !tbaa !81, !range !34, !noundef !35
  br label %258

258:                                              ; preds = %254, %248, %250
  %259 = phi i1 [ %249, %248 ], [ %249, %250 ], [ false, %254 ]
  %.3689 = phi i1 [ %.2688, %248 ], [ %.2688, %250 ], [ %255, %254 ]
  %.0683 = phi i8 [ 0, %248 ], [ 0, %250 ], [ %257, %254 ]
  %260 = load i32, ptr %187, align 4, !tbaa !82
  %261 = icmp eq i32 %260, %77
  br i1 %261, label %262, label %522

262:                                              ; preds = %258
  br i1 %69, label %281, label %263

263:                                              ; preds = %262
  %264 = getelementptr inbounds i8, ptr %67, i64 6604
  %265 = load i8, ptr %264, align 4, !tbaa !96, !range !34, !noundef !35
  %266 = trunc nuw i8 %265 to i1
  br i1 %266, label %281, label %267

267:                                              ; preds = %263
  %268 = getelementptr inbounds i8, ptr %67, i64 7584
  %269 = add nsw i32 %2, 1
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %268, i32 noundef %269)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #14
  store ptr null, ptr %16, align 8, !tbaa !36
  %270 = getelementptr inbounds i8, ptr %67, i64 7592
  %271 = load ptr, ptr %270, align 8, !tbaa !90
  %272 = load i32, ptr %268, align 8, !tbaa !97
  %273 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %271, i32 noundef %272, ptr noundef %1, ptr noundef null, ptr noundef nonnull %16)
  %274 = getelementptr inbounds i8, ptr %67, i64 7636
  store i32 %273, ptr %274, align 4, !tbaa !88
  %275 = load ptr, ptr %16, align 8, !tbaa !36
  %276 = ptrtoint ptr %275 to i64
  %277 = ptrtoint ptr %1 to i64
  %278 = sub i64 %276, %277
  %279 = trunc i64 %278 to i32
  %280 = getelementptr inbounds i8, ptr %67, i64 7632
  store i32 %279, ptr %280, align 8, !tbaa !91
  call void @_ZN19ImGuiInputTextState11CursorClampEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #14
  br label %281

281:                                              ; preds = %267, %263, %262
  %282 = getelementptr inbounds i8, ptr %67, i64 7632
  %283 = load i32, ptr %282, align 8, !tbaa !91
  %284 = getelementptr inbounds i8, ptr %67, i64 7640
  store i32 %2, ptr %284, align 8, !tbaa !98
  %285 = getelementptr inbounds i8, ptr %67, i64 11276
  store i32 %4, ptr %285, align 4, !tbaa !99
  %286 = getelementptr inbounds i8, ptr %67, i64 11280
  store ptr %5, ptr %286, align 8, !tbaa !100
  %287 = getelementptr inbounds i8, ptr %67, i64 11288
  store ptr %6, ptr %287, align 8, !tbaa !101
  %288 = getelementptr inbounds i8, ptr %67, i64 272
  %289 = load i8, ptr %288, align 8, !tbaa !81, !range !34, !noundef !35
  %290 = xor i8 %289, 1
  %291 = getelementptr inbounds i8, ptr %67, i64 6605
  store i8 %290, ptr %291, align 1, !tbaa !102
  %292 = getelementptr inbounds i8, ptr %67, i64 12080
  store i32 1, ptr %292, align 8, !tbaa !103
  %293 = getelementptr inbounds i8, ptr %67, i64 264
  %294 = load float, ptr %293, align 8, !tbaa !104
  %295 = load float, ptr %9, align 8, !tbaa !105
  %296 = fsub float %294, %295
  %297 = load float, ptr %86, align 4, !tbaa !106
  %298 = fsub float %296, %297
  %299 = getelementptr inbounds i8, ptr %67, i64 7644
  %300 = load float, ptr %299, align 4, !tbaa !92
  %301 = fadd float %298, %300
  br i1 %58, label %302, label %310

302:                                              ; preds = %281
  %303 = getelementptr inbounds i8, ptr %67, i64 268
  %304 = load float, ptr %303, align 4, !tbaa !107
  %305 = getelementptr inbounds i8, ptr %.0682, i64 212
  %306 = load float, ptr %305, align 4, !tbaa !108
  %307 = fsub float %304, %306
  %308 = load float, ptr %87, align 4, !tbaa !37
  %309 = fsub float %307, %308
  br label %314

310:                                              ; preds = %281
  %311 = getelementptr inbounds i8, ptr %67, i64 6288
  %312 = load float, ptr %311, align 8, !tbaa !109
  %313 = fmul float %312, 5.000000e-01
  br label %314

314:                                              ; preds = %310, %302
  %315 = phi float [ %309, %302 ], [ %313, %310 ]
  %316 = getelementptr inbounds i8, ptr %67, i64 209
  %317 = load i8, ptr %316, align 1, !tbaa !110, !range !34, !noundef !35
  %318 = trunc nuw i8 %317 to i1
  br i1 %.3689, label %324, label %319

319:                                              ; preds = %314
  %.not793 = xor i1 %122, true
  %brmerge794 = select i1 %.not793, i1 true, i1 %318
  br i1 %brmerge794, label %326, label %320

320:                                              ; preds = %319
  %321 = getelementptr inbounds i8, ptr %67, i64 1061
  %322 = load i8, ptr %321, align 1, !tbaa !81, !range !34, !noundef !35
  %323 = trunc nuw i8 %322 to i1
  br i1 %323, label %324, label %326

324:                                              ; preds = %320, %314
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  %325 = getelementptr inbounds i8, ptr %67, i64 11273
  store i8 1, ptr %325, align 1, !tbaa !111
  br label %361

326:                                              ; preds = %319, %320
  %327 = select i1 %122, i1 %318, i1 false
  br i1 %327, label %328, label %333

328:                                              ; preds = %326
  %329 = getelementptr inbounds i8, ptr %67, i64 1061
  %330 = load i8, ptr %329, align 1, !tbaa !81, !range !34, !noundef !35
  %331 = trunc nuw i8 %330 to i1
  br i1 %331, label %332, label %333

332:                                              ; preds = %328
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef 65548)
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef 196621)
  br label %361

333:                                              ; preds = %326, %328
  %334 = getelementptr inbounds i8, ptr %67, i64 1056
  %335 = load i8, ptr %334, align 8, !tbaa !81, !range !34, !noundef !35
  %336 = trunc nuw i8 %335 to i1
  br i1 %336, label %337, label %344

337:                                              ; preds = %333
  %338 = getelementptr inbounds i8, ptr %67, i64 11273
  %339 = load i8, ptr %338, align 1, !tbaa !111, !range !34, !noundef !35
  %340 = trunc nuw i8 %339 to i1
  br i1 %340, label %344, label %341

341:                                              ; preds = %337
  br i1 %122, label %342, label %361

342:                                              ; preds = %341
  %343 = getelementptr inbounds i8, ptr %67, i64 7648
  call void @_ZN8ImGuiStbL18stb_textedit_clickEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %156, ptr noundef nonnull %343, float noundef %301, float noundef %315)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br label %361

344:                                              ; preds = %337, %333
  %345 = trunc nuw i8 %289 to i1
  br i1 %345, label %346, label %361

346:                                              ; preds = %344
  %347 = getelementptr inbounds i8, ptr %67, i64 11273
  %348 = load i8, ptr %347, align 1, !tbaa !111, !range !34, !noundef !35
  %349 = trunc nuw i8 %348 to i1
  br i1 %349, label %361, label %350

350:                                              ; preds = %346
  %351 = getelementptr inbounds i8, ptr %67, i64 956
  %352 = load float, ptr %351, align 4, !tbaa !112
  %353 = fcmp une float %352, 0.000000e+00
  br i1 %353, label %358, label %354

354:                                              ; preds = %350
  %355 = getelementptr inbounds i8, ptr %67, i64 960
  %356 = load float, ptr %355, align 4, !tbaa !113
  %357 = fcmp une float %356, 0.000000e+00
  br i1 %357, label %358, label %361

358:                                              ; preds = %354, %350
  %359 = getelementptr inbounds i8, ptr %67, i64 7648
  call void @_ZN8ImGuiStbL17stb_textedit_dragEP19ImGuiInputTextStatePNS_17STB_TexteditStateEff(ptr noundef nonnull %156, ptr noundef nonnull %359, float noundef %301, float noundef %315)
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  %360 = getelementptr inbounds i8, ptr %67, i64 11272
  store i8 1, ptr %360, align 8, !tbaa !114
  br label %361

361:                                              ; preds = %332, %344, %346, %354, %358, %341, %342, %324
  %362 = getelementptr inbounds i8, ptr %67, i64 11273
  %363 = load i8, ptr %362, align 1, !tbaa !111, !range !34, !noundef !35
  %364 = trunc nuw i8 %363 to i1
  br i1 %364, label %365, label %369

365:                                              ; preds = %361
  %366 = load i8, ptr %288, align 8, !tbaa !81, !range !34, !noundef !35
  %367 = trunc nuw i8 %366 to i1
  br i1 %367, label %369, label %368

368:                                              ; preds = %365
  store i8 0, ptr %362, align 1, !tbaa !111
  br label %369

369:                                              ; preds = %368, %365, %361
  %370 = getelementptr inbounds i8, ptr %67, i64 804
  %371 = load i16, ptr %370, align 4, !tbaa !115
  %.not761 = icmp eq i16 %371, 0
  br i1 %.not761, label %522, label %372

372:                                              ; preds = %369
  %373 = getelementptr inbounds i8, ptr %67, i64 288
  %374 = load i8, ptr %373, align 8, !tbaa !94, !range !34, !noundef !35
  %375 = trunc nuw i8 %374 to i1
  br i1 %375, label %376, label %381

376:                                              ; preds = %372
  %377 = getelementptr inbounds i8, ptr %67, i64 290
  %378 = load i8, ptr %377, align 2, !tbaa !116, !range !34, !noundef !35
  %379 = trunc nuw i8 %378 to i1
  %.not798 = xor i1 %379, true
  %380 = select i1 %379, i1 %318, i1 false
  br i1 %380, label %382, label %386

381:                                              ; preds = %372
  br i1 %318, label %382, label %.critedge802

382:                                              ; preds = %376, %381
  %383 = getelementptr inbounds i8, ptr %67, i64 291
  %384 = load i8, ptr %383, align 1, !tbaa !117, !range !34, !noundef !35
  %385 = trunc nuw i8 %384 to i1
  br label %386

386:                                              ; preds = %376, %382
  %387 = phi i1 [ %.not798, %376 ], [ %385, %382 ]
  %.not803 = xor i1 %69, true
  %brmerge804 = or i1 %387, %.not803
  %brmerge805 = select i1 %brmerge804, i1 true, i1 %259
  br i1 %brmerge805, label %.critedge2, label %388

.critedge802:                                     ; preds = %381
  %.not806 = xor i1 %69, true
  %brmerge807 = select i1 %.not806, i1 true, i1 %259
  br i1 %brmerge807, label %.critedge2, label %388

388:                                              ; preds = %386, %.critedge802
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %389 = zext i16 %371 to i32
  store i32 %389, ptr %17, align 4, !tbaa !118
  %390 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %390, label %391, label %393

391:                                              ; preds = %388
  %392 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %392)
  br label %393

393:                                              ; preds = %391, %388
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %394 = getelementptr inbounds i8, ptr %67, i64 806
  %395 = load i16, ptr %394, align 2, !tbaa !115
  %.not762.1 = icmp eq i16 %395, 0
  br i1 %.not762.1, label %.critedge2, label %396

396:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %397 = zext i16 %395 to i32
  store i32 %397, ptr %17, align 4, !tbaa !118
  %398 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %398, label %399, label %401

399:                                              ; preds = %396
  %400 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %400)
  br label %401

401:                                              ; preds = %399, %396
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %402 = getelementptr inbounds i8, ptr %67, i64 808
  %403 = load i16, ptr %402, align 2, !tbaa !115
  %.not762.2 = icmp eq i16 %403, 0
  br i1 %.not762.2, label %.critedge2, label %404

404:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %405 = zext i16 %403 to i32
  store i32 %405, ptr %17, align 4, !tbaa !118
  %406 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %406, label %407, label %409

407:                                              ; preds = %404
  %408 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %408)
  br label %409

409:                                              ; preds = %407, %404
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %410 = getelementptr inbounds i8, ptr %67, i64 810
  %411 = load i16, ptr %410, align 2, !tbaa !115
  %.not762.3 = icmp eq i16 %411, 0
  br i1 %.not762.3, label %.critedge2, label %412

412:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %413 = zext i16 %411 to i32
  store i32 %413, ptr %17, align 4, !tbaa !118
  %414 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %414, label %415, label %417

415:                                              ; preds = %412
  %416 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %416)
  br label %417

417:                                              ; preds = %415, %412
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %418 = getelementptr inbounds i8, ptr %67, i64 812
  %419 = load i16, ptr %418, align 2, !tbaa !115
  %.not762.4 = icmp eq i16 %419, 0
  br i1 %.not762.4, label %.critedge2, label %420

420:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %421 = zext i16 %419 to i32
  store i32 %421, ptr %17, align 4, !tbaa !118
  %422 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %422, label %423, label %425

423:                                              ; preds = %420
  %424 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %424)
  br label %425

425:                                              ; preds = %423, %420
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %426 = getelementptr inbounds i8, ptr %67, i64 814
  %427 = load i16, ptr %426, align 2, !tbaa !115
  %.not762.5 = icmp eq i16 %427, 0
  br i1 %.not762.5, label %.critedge2, label %428

428:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %429 = zext i16 %427 to i32
  store i32 %429, ptr %17, align 4, !tbaa !118
  %430 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %430, label %431, label %433

431:                                              ; preds = %428
  %432 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %432)
  br label %433

433:                                              ; preds = %431, %428
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %434 = getelementptr inbounds i8, ptr %67, i64 816
  %435 = load i16, ptr %434, align 2, !tbaa !115
  %.not762.6 = icmp eq i16 %435, 0
  br i1 %.not762.6, label %.critedge2, label %436

436:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %437 = zext i16 %435 to i32
  store i32 %437, ptr %17, align 4, !tbaa !118
  %438 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %438, label %439, label %441

439:                                              ; preds = %436
  %440 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %440)
  br label %441

441:                                              ; preds = %439, %436
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %442 = getelementptr inbounds i8, ptr %67, i64 818
  %443 = load i16, ptr %442, align 2, !tbaa !115
  %.not762.7 = icmp eq i16 %443, 0
  br i1 %.not762.7, label %.critedge2, label %444

444:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %445 = zext i16 %443 to i32
  store i32 %445, ptr %17, align 4, !tbaa !118
  %446 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %446, label %447, label %449

447:                                              ; preds = %444
  %448 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %448)
  br label %449

449:                                              ; preds = %447, %444
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %450 = getelementptr inbounds i8, ptr %67, i64 820
  %451 = load i16, ptr %450, align 2, !tbaa !115
  %.not762.8 = icmp eq i16 %451, 0
  br i1 %.not762.8, label %.critedge2, label %452

452:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %453 = zext i16 %451 to i32
  store i32 %453, ptr %17, align 4, !tbaa !118
  %454 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %454, label %455, label %457

455:                                              ; preds = %452
  %456 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %456)
  br label %457

457:                                              ; preds = %455, %452
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %458 = getelementptr inbounds i8, ptr %67, i64 822
  %459 = load i16, ptr %458, align 2, !tbaa !115
  %.not762.9 = icmp eq i16 %459, 0
  br i1 %.not762.9, label %.critedge2, label %460

460:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %461 = zext i16 %459 to i32
  store i32 %461, ptr %17, align 4, !tbaa !118
  %462 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %462, label %463, label %465

463:                                              ; preds = %460
  %464 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %464)
  br label %465

465:                                              ; preds = %463, %460
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %466 = getelementptr inbounds i8, ptr %67, i64 824
  %467 = load i16, ptr %466, align 2, !tbaa !115
  %.not762.10 = icmp eq i16 %467, 0
  br i1 %.not762.10, label %.critedge2, label %468

468:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %469 = zext i16 %467 to i32
  store i32 %469, ptr %17, align 4, !tbaa !118
  %470 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %470, label %471, label %473

471:                                              ; preds = %468
  %472 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %472)
  br label %473

473:                                              ; preds = %471, %468
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %474 = getelementptr inbounds i8, ptr %67, i64 826
  %475 = load i16, ptr %474, align 2, !tbaa !115
  %.not762.11 = icmp eq i16 %475, 0
  br i1 %.not762.11, label %.critedge2, label %476

476:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %477 = zext i16 %475 to i32
  store i32 %477, ptr %17, align 4, !tbaa !118
  %478 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %478, label %479, label %481

479:                                              ; preds = %476
  %480 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %480)
  br label %481

481:                                              ; preds = %479, %476
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %482 = getelementptr inbounds i8, ptr %67, i64 828
  %483 = load i16, ptr %482, align 2, !tbaa !115
  %.not762.12 = icmp eq i16 %483, 0
  br i1 %.not762.12, label %.critedge2, label %484

484:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %485 = zext i16 %483 to i32
  store i32 %485, ptr %17, align 4, !tbaa !118
  %486 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %486, label %487, label %489

487:                                              ; preds = %484
  %488 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %488)
  br label %489

489:                                              ; preds = %487, %484
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %490 = getelementptr inbounds i8, ptr %67, i64 830
  %491 = load i16, ptr %490, align 2, !tbaa !115
  %.not762.13 = icmp eq i16 %491, 0
  br i1 %.not762.13, label %.critedge2, label %492

492:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %493 = zext i16 %491 to i32
  store i32 %493, ptr %17, align 4, !tbaa !118
  %494 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %494, label %495, label %497

495:                                              ; preds = %492
  %496 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %496)
  br label %497

497:                                              ; preds = %495, %492
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %498 = getelementptr inbounds i8, ptr %67, i64 832
  %499 = load i16, ptr %498, align 2, !tbaa !115
  %.not762.14 = icmp eq i16 %499, 0
  br i1 %.not762.14, label %.critedge2, label %500

500:                                              ; preds = %497
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %501 = zext i16 %499 to i32
  store i32 %501, ptr %17, align 4, !tbaa !118
  %502 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %502, label %503, label %505

503:                                              ; preds = %500
  %504 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %504)
  br label %505

505:                                              ; preds = %503, %500
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %506 = getelementptr inbounds i8, ptr %67, i64 834
  %507 = load i16, ptr %506, align 2, !tbaa !115
  %.not762.15 = icmp eq i16 %507, 0
  br i1 %.not762.15, label %.critedge2, label %508

508:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %509 = zext i16 %507 to i32
  store i32 %509, ptr %17, align 4, !tbaa !118
  %510 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %510, label %511, label %513

511:                                              ; preds = %508
  %512 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %512)
  br label %513

513:                                              ; preds = %511, %508
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  %514 = getelementptr inbounds i8, ptr %67, i64 836
  %515 = load i16, ptr %514, align 2, !tbaa !115
  %.not762.16 = icmp eq i16 %515, 0
  br i1 %.not762.16, label %.critedge2, label %516

516:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %517 = zext i16 %515 to i32
  store i32 %517, ptr %17, align 4, !tbaa !118
  %518 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %518, label %519, label %521

519:                                              ; preds = %516
  %520 = load i32, ptr %17, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %520)
  br label %521

521:                                              ; preds = %519, %516
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  br label %.critedge2

.critedge2:                                       ; preds = %393, %401, %409, %417, %425, %433, %441, %449, %457, %465, %473, %481, %489, %497, %505, %513, %521, %.critedge802, %386
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(34) %370, i8 0, i64 34, i1 false)
  br label %522

522:                                              ; preds = %369, %.critedge2, %258
  %.0696 = phi i32 [ 0, %258 ], [ %283, %.critedge2 ], [ %283, %369 ]
  %523 = load i32, ptr %187, align 4, !tbaa !82
  %524 = icmp eq i32 %523, %77
  br i1 %524, label %525, label %869

525:                                              ; preds = %522
  %526 = getelementptr inbounds i8, ptr %67, i64 6604
  %527 = load i8, ptr %526, align 4, !tbaa !96, !range !34, !noundef !35
  %528 = trunc nuw i8 %527 to i1
  br i1 %528, label %869, label %529

529:                                              ; preds = %525
  %530 = trunc nuw i8 %.0683 to i1
  br i1 %530, label %869, label %531

531:                                              ; preds = %529
  %532 = getelementptr inbounds i8, ptr %67, i64 289
  %533 = load i8, ptr %532, align 1, !tbaa !119, !range !34, !noundef !35
  %534 = trunc nuw i8 %533 to i1
  %535 = select i1 %534, i32 131072, i32 0
  %536 = getelementptr inbounds i8, ptr %67, i64 209
  %537 = load i8, ptr %536, align 1, !tbaa !110, !range !34, !noundef !35
  %538 = trunc nuw i8 %537 to i1
  br i1 %538, label %539, label %551

539:                                              ; preds = %531
  %540 = getelementptr inbounds i8, ptr %67, i64 291
  %541 = load i8, ptr %540, align 1, !tbaa !117, !range !34, !noundef !35
  %542 = trunc nuw i8 %541 to i1
  br i1 %542, label %543, label %.thread889

543:                                              ; preds = %539
  %544 = getelementptr inbounds i8, ptr %67, i64 288
  %545 = load i8, ptr %544, align 8, !tbaa !81, !range !34, !noundef !35
  %546 = trunc nuw i8 %545 to i1
  br i1 %546, label %.thread889, label %.thread

.thread:                                          ; preds = %543
  %547 = getelementptr inbounds i8, ptr %67, i64 290
  %548 = load i8, ptr %547, align 2, !tbaa !116, !range !34, !noundef !35
  %549 = trunc nuw i8 %548 to i1
  %550 = select i1 %549, i1 true, i1 %534
  %spec.select921963 = xor i1 %550, true
  br label %.thread889

551:                                              ; preds = %531
  %552 = getelementptr inbounds i8, ptr %67, i64 288
  %553 = load i8, ptr %552, align 8, !tbaa !81, !range !34, !noundef !35
  %554 = trunc nuw i8 %553 to i1
  br i1 %554, label %555, label %.thread891

555:                                              ; preds = %551
  %556 = getelementptr inbounds i8, ptr %67, i64 291
  %557 = load i8, ptr %556, align 1, !tbaa !117, !range !34, !noundef !35
  %558 = trunc nuw i8 %557 to i1
  br i1 %558, label %.thread891, label %559

559:                                              ; preds = %555
  %560 = getelementptr inbounds i8, ptr %67, i64 290
  %561 = load i8, ptr %560, align 2, !tbaa !116, !range !34, !noundef !35
  %562 = trunc nuw i8 %561 to i1
  %563 = select i1 %562, i1 true, i1 %534
  %spec.select921 = xor i1 %563, true
  br label %.thread891

.thread889:                                       ; preds = %.thread, %539, %543
  %564 = phi i1 [ false, %543 ], [ false, %539 ], [ %spec.select921963, %.thread ]
  %565 = trunc nuw i8 %541 to i1
  %566 = select i1 %565, i1 %534, i1 false
  br i1 %566, label %567, label %579

567:                                              ; preds = %.thread889
  %568 = getelementptr inbounds i8, ptr %67, i64 288
  %569 = load i8, ptr %568, align 8, !tbaa !94, !range !34, !noundef !35
  %570 = trunc nuw i8 %569 to i1
  br i1 %570, label %579, label %571

571:                                              ; preds = %567
  %572 = getelementptr inbounds i8, ptr %67, i64 290
  %573 = load i8, ptr %572, align 2, !tbaa !116, !range !34, !noundef !35
  %574 = trunc nuw i8 %573 to i1
  %575 = xor i1 %574, true
  br label %579

.thread891:                                       ; preds = %559, %551, %555
  %576 = phi i1 [ %spec.select921, %559 ], [ false, %555 ], [ false, %551 ]
  %577 = getelementptr inbounds i8, ptr %67, i64 290
  %578 = getelementptr inbounds i8, ptr %67, i64 288
  br label %._crit_edge948

579:                                              ; preds = %.thread889, %571, %567
  %.ph893 = phi i1 [ %575, %571 ], [ false, %.thread889 ], [ false, %567 ]
  %580 = getelementptr inbounds i8, ptr %67, i64 290
  %581 = getelementptr inbounds i8, ptr %67, i64 288
  %.in896 = load i8, ptr %580, align 2, !tbaa !81, !range !34, !noundef !35
  %582 = load i8, ptr %581, align 8, !tbaa !94, !range !34
  br i1 %565, label %583, label %._crit_edge948

583:                                              ; preds = %579
  %584 = trunc nuw i8 %582 to i1
  br i1 %584, label %._crit_edge948, label %585

585:                                              ; preds = %583
  %586 = trunc nuw i8 %.in896 to i1
  %587 = xor i1 %586, true
  br label %._crit_edge948

._crit_edge948:                                   ; preds = %579, %.thread891, %585, %583
  %588 = phi i8 [ %582, %583 ], [ %553, %.thread891 ], [ %582, %585 ], [ %582, %579 ]
  %.in931 = phi i8 [ %.in896, %583 ], [ %553, %.thread891 ], [ %.in896, %585 ], [ %.in896, %579 ]
  %589 = phi ptr [ %581, %583 ], [ %578, %.thread891 ], [ %581, %585 ], [ %581, %579 ]
  %590 = phi ptr [ %580, %583 ], [ %577, %.thread891 ], [ %580, %585 ], [ %580, %579 ]
  %591 = phi i1 [ %.ph893, %583 ], [ false, %.thread891 ], [ %.ph893, %585 ], [ %.ph893, %579 ]
  %592 = phi i1 [ %564, %583 ], [ %576, %.thread891 ], [ %564, %585 ], [ %564, %579 ]
  %593 = phi i1 [ false, %583 ], [ false, %.thread891 ], [ %587, %585 ], [ false, %579 ]
  %594 = trunc nuw i8 %.in931 to i1
  %595 = trunc nuw i8 %588 to i1
  br i1 %595, label %596, label %605

596:                                              ; preds = %._crit_edge948
  br i1 %534, label %.thread901, label %597

597:                                              ; preds = %596
  %598 = load i8, ptr %590, align 2, !tbaa !116, !range !34, !noundef !35
  %599 = trunc nuw i8 %598 to i1
  br i1 %599, label %.thread901, label %600

600:                                              ; preds = %597
  %601 = getelementptr inbounds i8, ptr %67, i64 291
  %602 = load i8, ptr %601, align 1, !tbaa !117, !range !34, !noundef !35
  %603 = trunc nuw i8 %602 to i1
  %604 = xor i1 %603, true
  br label %.thread901

605:                                              ; preds = %._crit_edge948
  br i1 %534, label %606, label %.thread901

606:                                              ; preds = %605
  %607 = load i8, ptr %590, align 2, !tbaa !116, !range !34, !noundef !35
  %608 = trunc nuw i8 %607 to i1
  br i1 %608, label %.thread901, label %609

609:                                              ; preds = %606
  %610 = getelementptr inbounds i8, ptr %67, i64 291
  %611 = load i8, ptr %610, align 1, !tbaa !117, !range !34, !noundef !35
  %612 = trunc nuw i8 %611 to i1
  %613 = xor i1 %612, true
  br label %.thread901

.thread901:                                       ; preds = %597, %600, %596, %609, %606, %605
  %614 = phi i1 [ false, %606 ], [ false, %605 ], [ false, %609 ], [ false, %596 ], [ %604, %600 ], [ false, %597 ]
  %615 = phi i1 [ false, %606 ], [ false, %605 ], [ %613, %609 ], [ false, %596 ], [ false, %600 ], [ false, %597 ]
  br i1 %592, label %616, label %618

616:                                              ; preds = %.thread901
  %617 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 18, i1 noundef zeroext true)
  br i1 %617, label %621, label %618

618:                                              ; preds = %616, %.thread901
  br i1 %615, label %619, label %624

619:                                              ; preds = %618
  %620 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %brmerge810.demorgan = and i1 %69, %620
  %brmerge810 = xor i1 %brmerge810.demorgan, true
  %brmerge811 = or i1 %.not755, %brmerge810
  %.not818 = xor i1 %58, true
  %brmerge819 = or i1 %brmerge811, %.not818
  %not.brmerge811 = xor i1 %brmerge811, true
  br i1 %brmerge819, label %624, label %622

621:                                              ; preds = %616
  %.not812 = xor i1 %69, true
  %brmerge814 = or i1 %.not755, %.not812
  %.not815 = xor i1 %58, true
  %brmerge816 = or i1 %brmerge814, %.not815
  %not.brmerge814 = xor i1 %brmerge814, true
  br i1 %brmerge816, label %.thread902, label %622

622:                                              ; preds = %619, %621
  %623 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br label %624

624:                                              ; preds = %619, %622, %618
  %625 = phi i1 [ %not.brmerge811, %619 ], [ false, %618 ], [ %623, %622 ]
  br i1 %592, label %.thread902, label %628

.thread902:                                       ; preds = %621, %624
  %626 = phi i1 [ %625, %624 ], [ %not.brmerge814, %621 ]
  %627 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %627, label %632, label %628

628:                                              ; preds = %.thread902, %624
  %629 = phi i1 [ %626, %.thread902 ], [ %625, %624 ]
  br i1 %614, label %630, label %636

630:                                              ; preds = %628
  %631 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %.not821 = xor i1 %631, true
  %brmerge823 = or i1 %.not755, %.not821
  %.not824 = xor i1 %58, true
  %brmerge825 = or i1 %brmerge823, %.not824
  %not.brmerge823 = xor i1 %brmerge823, true
  br i1 %brmerge825, label %636, label %633

632:                                              ; preds = %.thread902
  %.not828 = xor i1 %58, true
  %brmerge829 = or i1 %.not755, %.not828
  %not..not755 = xor i1 %.not755, true
  br i1 %brmerge829, label %.thread903, label %633

633:                                              ; preds = %632, %630
  %634 = phi i1 [ %626, %632 ], [ %629, %630 ]
  %635 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br label %636

636:                                              ; preds = %630, %633, %628
  %637 = phi i1 [ %629, %630 ], [ %629, %628 ], [ %634, %633 ]
  %638 = phi i1 [ %not.brmerge823, %630 ], [ false, %628 ], [ %635, %633 ]
  br i1 %592, label %.thread903, label %642

.thread903:                                       ; preds = %632, %636
  %639 = phi i1 [ %638, %636 ], [ %not..not755, %632 ]
  %640 = phi i1 [ %637, %636 ], [ %626, %632 ]
  %641 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 17, i1 noundef zeroext true)
  br i1 %641, label %.thread904, label %642

642:                                              ; preds = %.thread903, %636
  %643 = phi i1 [ %639, %.thread903 ], [ %638, %636 ]
  %644 = phi i1 [ %640, %.thread903 ], [ %637, %636 ]
  br i1 %615, label %645, label %647

645:                                              ; preds = %642
  %646 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 9, i1 noundef zeroext true)
  %spec.select925 = and i1 %69, %646
  br label %647

647:                                              ; preds = %645, %642
  %648 = phi i1 [ false, %642 ], [ %spec.select925, %645 ]
  br i1 %592, label %.thread904, label %655

.thread904:                                       ; preds = %.thread903, %647
  %649 = phi i1 [ %648, %647 ], [ %69, %.thread903 ]
  %650 = phi i1 [ %644, %647 ], [ %640, %.thread903 ]
  %651 = phi i1 [ %643, %647 ], [ %639, %.thread903 ]
  %652 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  %653 = and i32 %4, 81920
  %spec.select831 = icmp eq i32 %653, 0
  %spec.select882 = and i1 %spec.select831, %652
  %654 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 19, i1 noundef zeroext true)
  br i1 %654, label %662, label %655

655:                                              ; preds = %647, %.thread904
  %656 = phi i1 [ %spec.select882, %.thread904 ], [ false, %647 ]
  %657 = phi i1 [ %651, %.thread904 ], [ %643, %647 ]
  %658 = phi i1 [ %650, %.thread904 ], [ %644, %647 ]
  %659 = phi i1 [ %649, %.thread904 ], [ %648, %647 ]
  br i1 %591, label %660, label %667

660:                                              ; preds = %655
  %661 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 20, i1 noundef zeroext true)
  br i1 %661, label %._crit_edge959, label %667

._crit_edge959:                                   ; preds = %660
  %.pre960 = and i32 %4, 81920
  br label %662

662:                                              ; preds = %._crit_edge959, %.thread904
  %.pre-phi = phi i32 [ %.pre960, %._crit_edge959 ], [ %653, %.thread904 ]
  %663 = phi i1 [ %656, %._crit_edge959 ], [ %spec.select882, %.thread904 ]
  %664 = phi i1 [ %657, %._crit_edge959 ], [ %651, %.thread904 ]
  %665 = phi i1 [ %658, %._crit_edge959 ], [ %650, %.thread904 ]
  %666 = phi i1 [ %659, %._crit_edge959 ], [ %649, %.thread904 ]
  %spec.select832 = icmp eq i32 %.pre-phi, 0
  br label %667

667:                                              ; preds = %662, %660, %655
  %668 = phi i1 [ %656, %660 ], [ %656, %655 ], [ %663, %662 ]
  %669 = phi i1 [ %657, %660 ], [ %657, %655 ], [ %664, %662 ]
  %670 = phi i1 [ %658, %660 ], [ %658, %655 ], [ %665, %662 ]
  %671 = phi i1 [ %659, %660 ], [ %659, %655 ], [ %666, %662 ]
  %672 = phi i1 [ false, %660 ], [ false, %655 ], [ %spec.select832, %662 ]
  %673 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %673, label %674, label %677

674:                                              ; preds = %667
  %675 = select i1 %594, i32 65548, i32 65536
  %spec.select833 = select i1 %593, i32 65540, i32 %675
  %676 = or disjoint i32 %spec.select833, %535
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %676)
  br label %869

677:                                              ; preds = %667
  %678 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %678, label %679, label %682

679:                                              ; preds = %677
  %680 = select i1 %594, i32 65549, i32 65537
  %spec.select834 = select i1 %593, i32 65541, i32 %680
  %681 = or disjoint i32 %spec.select834, %535
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %681)
  br label %869

682:                                              ; preds = %677
  %683 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  %brmerge837.not = and i1 %58, %683
  br i1 %brmerge837.not, label %684, label %697

684:                                              ; preds = %682
  %685 = load i8, ptr %589, align 8, !tbaa !94, !range !34, !noundef !35
  %686 = trunc nuw i8 %685 to i1
  br i1 %686, label %687, label %694

687:                                              ; preds = %684
  %688 = getelementptr inbounds i8, ptr %.0682, i64 92
  %689 = load float, ptr %688, align 4, !tbaa !120
  %690 = getelementptr inbounds i8, ptr %67, i64 6288
  %691 = load float, ptr %690, align 8, !tbaa !109
  %692 = fsub float %689, %691
  %693 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef %692, float noundef 0.000000e+00)
  call void @_ZN5ImGui16SetWindowScrollYEP11ImGuiWindowf(ptr noundef nonnull %.0682, float noundef %693)
  br label %869

694:                                              ; preds = %684
  %695 = select i1 %593, i32 65542, i32 65538
  %696 = or disjoint i32 %695, %535
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %696)
  br label %869

697:                                              ; preds = %682
  %698 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  %brmerge840.demorgan = and i1 %58, %698
  br i1 %brmerge840.demorgan, label %699, label %713

699:                                              ; preds = %697
  %700 = load i8, ptr %589, align 8, !tbaa !94, !range !34, !noundef !35
  %701 = trunc nuw i8 %700 to i1
  br i1 %701, label %702, label %710

702:                                              ; preds = %699
  %703 = getelementptr inbounds i8, ptr %.0682, i64 92
  %704 = load float, ptr %703, align 4, !tbaa !120
  %705 = getelementptr inbounds i8, ptr %67, i64 6288
  %706 = load float, ptr %705, align 8, !tbaa !109
  %707 = fadd float %704, %706
  %708 = call noundef float @_ZN5ImGui13GetScrollMaxYEv()
  %709 = call noundef float @_ZL5ImMinIfET_S0_S0_(float noundef %707, float noundef %708)
  call void @_ZN5ImGui16SetWindowScrollYEP11ImGuiWindowf(ptr noundef nonnull %.0682, float noundef %709)
  br label %869

710:                                              ; preds = %699
  %711 = select i1 %593, i32 65543, i32 65539
  %712 = or disjoint i32 %711, %535
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %712)
  br label %869

713:                                              ; preds = %697
  %714 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %714, label %715, label %719

715:                                              ; preds = %713
  %716 = load i8, ptr %589, align 8, !tbaa !94, !range !34, !noundef !35
  %717 = trunc nuw i8 %716 to i1
  %.v767 = select i1 %717, i32 65542, i32 65540
  %718 = or disjoint i32 %.v767, %535
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %718)
  br label %869

719:                                              ; preds = %713
  %720 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %720, label %721, label %725

721:                                              ; preds = %719
  %722 = load i8, ptr %589, align 8, !tbaa !94, !range !34, !noundef !35
  %723 = trunc nuw i8 %722 to i1
  %.v = select i1 %723, i32 65543, i32 65541
  %724 = or disjoint i32 %.v, %535
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %724)
  br label %869

725:                                              ; preds = %719
  %726 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 10, i1 noundef zeroext true)
  %.not842 = xor i1 %69, true
  %brmerge843.not = and i1 %69, %726
  br i1 %brmerge843.not, label %727, label %729

727:                                              ; preds = %725
  %728 = or disjoint i32 %535, 65544
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %728)
  br label %869

729:                                              ; preds = %725
  %730 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 11, i1 noundef zeroext true)
  %brmerge846.not = and i1 %69, %730
  br i1 %brmerge846.not, label %731, label %747

731:                                              ; preds = %729
  %732 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br i1 %732, label %745, label %733

733:                                              ; preds = %731
  br i1 %594, label %.sink.split, label %734

734:                                              ; preds = %733
  br i1 %538, label %735, label %745

735:                                              ; preds = %734
  %736 = getelementptr inbounds i8, ptr %67, i64 291
  %737 = load i8, ptr %736, align 1, !tbaa !117, !range !34, !noundef !35
  %738 = trunc nuw i8 %737 to i1
  br i1 %738, label %739, label %745

739:                                              ; preds = %735
  %740 = load i8, ptr %590, align 2, !tbaa !116, !range !34, !noundef !35
  %741 = trunc nuw i8 %740 to i1
  br i1 %741, label %745, label %742

742:                                              ; preds = %739
  %743 = load i8, ptr %589, align 8, !tbaa !94, !range !34, !noundef !35
  %744 = trunc nuw i8 %743 to i1
  br i1 %744, label %745, label %.sink.split

.sink.split:                                      ; preds = %742, %733
  %.sink = phi i32 [ 196620, %733 ], [ 196612, %742 ]
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %.sink)
  br label %745

745:                                              ; preds = %.sink.split, %742, %739, %735, %734, %731
  %746 = or disjoint i32 %535, 65545
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %746)
  br label %869

747:                                              ; preds = %729
  %748 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %748, label %749, label %760

749:                                              ; preds = %747
  br i1 %58, label %750, label %869

750:                                              ; preds = %749
  %751 = and i32 %4, 2048
  %.not766 = icmp eq i32 %751, 0
  %752 = load i8, ptr %589, align 8, !tbaa !94, !range !34, !noundef !35
  %753 = trunc nuw i8 %752 to i1
  br i1 %.not766, label %.critedge848, label %754

754:                                              ; preds = %750
  %.not926 = xor i8 %752, 1
  %brmerge928.not = and i1 %69, %753
  %.mux929 = select i1 %753, i8 %.0683, i8 1
  br i1 %brmerge928.not, label %755, label %869

.critedge848:                                     ; preds = %750
  %brmerge850 = or i1 %.not842, %753
  %.mux852 = select i1 %753, i8 1, i8 %.0683
  br i1 %brmerge850, label %869, label %755

755:                                              ; preds = %754, %.critedge848
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #14
  store i32 10, ptr %18, align 4, !tbaa !118
  %756 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %18, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %756, label %757, label %759

757:                                              ; preds = %755
  %758 = load i32, ptr %18, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %758)
  br label %759

759:                                              ; preds = %757, %755
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #14
  br label %869

760:                                              ; preds = %747
  br i1 %.not753, label %777, label %761

761:                                              ; preds = %760
  %762 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %762, label %763, label %777

763:                                              ; preds = %761
  %764 = load i8, ptr %589, align 8, !tbaa !94, !range !34, !noundef !35
  %765 = trunc nuw i8 %764 to i1
  br i1 %765, label %777, label %766

766:                                              ; preds = %763
  %767 = load i8, ptr %532, align 1, !tbaa !119, !range !34, !noundef !35
  %768 = trunc nuw i8 %767 to i1
  br i1 %768, label %777, label %769

769:                                              ; preds = %766
  %770 = load i8, ptr %590, align 2, !tbaa !116, !range !34, !noundef !35
  %771 = trunc nuw i8 %770 to i1
  %brmerge854 = or i1 %.not842, %771
  br i1 %brmerge854, label %777, label %772

772:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #14
  store i32 9, ptr %19, align 4, !tbaa !118
  %773 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %19, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %773, label %774, label %776

774:                                              ; preds = %772
  %775 = load i32, ptr %19, align 4, !tbaa !118
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %775)
  br label %776

776:                                              ; preds = %774, %772
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #14
  br label %869

777:                                              ; preds = %769, %766, %763, %761, %760
  %778 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %778, label %869, label %779

779:                                              ; preds = %777
  %brmerge855 = or i1 %668, %672
  br i1 %brmerge855, label %780, label %781

780:                                              ; preds = %779
  %.mux856 = select i1 %668, i32 65546, i32 65547
  call void @_ZN19ImGuiInputTextState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(3720) %156, i32 noundef %.mux856)
  call void @_ZN19ImGuiInputTextState14ClearSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br label %869

781:                                              ; preds = %779
  br i1 %592, label %782, label %786

782:                                              ; preds = %781
  %783 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %783, label %784, label %786

784:                                              ; preds = %782
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  %785 = getelementptr inbounds i8, ptr %67, i64 11272
  store i8 1, ptr %785, align 8, !tbaa !114
  br label %869

786:                                              ; preds = %782, %781
  %brmerge857 = or i1 %669, %670
  br i1 %brmerge857, label %787, label %835

787:                                              ; preds = %786
  %788 = getelementptr inbounds i8, ptr %67, i64 224
  %789 = load ptr, ptr %788, align 8, !tbaa !121
  %.not765 = icmp eq ptr %789, null
  br i1 %.not765, label %827, label %790

790:                                              ; preds = %787
  %791 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br i1 %791, label %792, label %798

792:                                              ; preds = %790
  %793 = getelementptr inbounds i8, ptr %67, i64 7652
  %794 = load i32, ptr %793, align 4, !tbaa !122
  %795 = getelementptr inbounds i8, ptr %67, i64 7656
  %796 = load i32, ptr %795, align 8, !tbaa !123
  %797 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %794, i32 noundef %796)
  br label %798

798:                                              ; preds = %790, %792
  %799 = phi i32 [ %797, %792 ], [ 0, %790 ]
  %800 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br i1 %800, label %801, label %807

801:                                              ; preds = %798
  %802 = getelementptr inbounds i8, ptr %67, i64 7652
  %803 = load i32, ptr %802, align 4, !tbaa !122
  %804 = getelementptr inbounds i8, ptr %67, i64 7656
  %805 = load i32, ptr %804, align 8, !tbaa !123
  %806 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %803, i32 noundef %805)
  br label %810

807:                                              ; preds = %798
  %808 = getelementptr inbounds i8, ptr %67, i64 7636
  %809 = load i32, ptr %808, align 4, !tbaa !88
  br label %810

810:                                              ; preds = %807, %801
  %811 = phi i32 [ %806, %801 ], [ %809, %807 ]
  %812 = getelementptr inbounds i8, ptr %67, i64 7616
  %813 = sub nsw i32 %811, %799
  %814 = shl nsw i32 %813, 2
  %815 = or disjoint i32 %814, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %812, i32 noundef %815)
  %816 = getelementptr inbounds i8, ptr %67, i64 7624
  %817 = load ptr, ptr %816, align 8, !tbaa !124
  %818 = load i32, ptr %812, align 8, !tbaa !125
  %819 = getelementptr inbounds i8, ptr %67, i64 7592
  %820 = load ptr, ptr %819, align 8, !tbaa !90
  %821 = sext i32 %799 to i64
  %822 = getelementptr inbounds i16, ptr %820, i64 %821
  %823 = sext i32 %811 to i64
  %824 = getelementptr inbounds i16, ptr %820, i64 %823
  %825 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %817, i32 noundef %818, ptr noundef %822, ptr noundef %824)
  %826 = load ptr, ptr %816, align 8, !tbaa !124
  call void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef %826)
  br label %827

827:                                              ; preds = %810, %787
  br i1 %670, label %828, label %869

828:                                              ; preds = %827
  %829 = call noundef zeroext i1 @_ZNK19ImGuiInputTextState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br i1 %829, label %831, label %830

830:                                              ; preds = %828
  call void @_ZN19ImGuiInputTextState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br label %831

831:                                              ; preds = %830, %828
  %832 = getelementptr inbounds i8, ptr %67, i64 11272
  store i8 1, ptr %832, align 8, !tbaa !114
  %833 = getelementptr inbounds i8, ptr %67, i64 7648
  %834 = call noundef i32 @_ZN8ImGuiStbL16stb_textedit_cutEP19ImGuiInputTextStatePNS_17STB_TexteditStateE(ptr noundef nonnull %156, ptr noundef nonnull %833)
  br label %869

835:                                              ; preds = %786
  br i1 %671, label %836, label %869

836:                                              ; preds = %835
  %837 = call noundef ptr @_ZN5ImGui16GetClipboardTextEv()
  %.not763 = icmp eq ptr %837, null
  br i1 %.not763, label %869, label %838

838:                                              ; preds = %836
  %839 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %837) #15
  %840 = shl i64 %839, 32
  %sext = add i64 %840, 4294967296
  %841 = ashr exact i64 %sext, 31
  %842 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %841)
  %843 = load i8, ptr %837, align 1, !tbaa !126
  %.not764938 = icmp eq i8 %843, 0
  br i1 %.not764938, label %.loopexit934.thread, label %.lr.ph

.loopexit934.thread:                              ; preds = %838
  store i16 0, ptr %842, align 2, !tbaa !115
  br label %868

.lr.ph:                                           ; preds = %838, %859
  %.0708940 = phi i32 [ %.1709, %859 ], [ 0, %838 ]
  %.0711939 = phi ptr [ %846, %859 ], [ %837, %838 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #14
  %844 = call noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %20, ptr noundef nonnull %.0711939, ptr noundef null)
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds i8, ptr %.0711939, i64 %845
  %847 = load i32, ptr %20, align 4, !tbaa !118
  %848 = icmp eq i32 %847, 0
  br i1 %848, label %.thread906, label %849

.thread906:                                       ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #14
  br label %.loopexit934

849:                                              ; preds = %.lr.ph
  %850 = icmp ugt i32 %847, 65535
  br i1 %850, label %859, label %851, !llvm.loop !127

851:                                              ; preds = %849
  %852 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP26ImGuiInputTextCallbackDataEPv(ptr noundef nonnull %20, i32 noundef %4, ptr noundef %5, ptr noundef %6)
  br i1 %852, label %853, label %859, !llvm.loop !127

853:                                              ; preds = %851
  %854 = load i32, ptr %20, align 4, !tbaa !118
  %855 = trunc i32 %854 to i16
  %856 = add nsw i32 %.0708940, 1
  %857 = sext i32 %.0708940 to i64
  %858 = getelementptr inbounds i16, ptr %842, i64 %857
  store i16 %855, ptr %858, align 2, !tbaa !115
  br label %859

859:                                              ; preds = %849, %851, %853
  %.1709 = phi i32 [ %856, %853 ], [ %.0708940, %851 ], [ %.0708940, %849 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #14
  %860 = load i8, ptr %846, align 1, !tbaa !126
  %.not764 = icmp eq i8 %860, 0
  br i1 %.not764, label %.loopexit934, label %.lr.ph

.loopexit934:                                     ; preds = %859, %.thread906
  %.0708936 = phi i32 [ %.0708940, %.thread906 ], [ %.1709, %859 ]
  %861 = sext i32 %.0708936 to i64
  %862 = getelementptr inbounds i16, ptr %842, i64 %861
  store i16 0, ptr %862, align 2, !tbaa !115
  %863 = icmp sgt i32 %.0708936, 0
  br i1 %863, label %864, label %868

864:                                              ; preds = %.loopexit934
  %865 = getelementptr inbounds i8, ptr %67, i64 7648
  %866 = call noundef i32 @_ZN8ImGuiStbL18stb_textedit_pasteEP19ImGuiInputTextStatePNS_17STB_TexteditStateEPKti(ptr noundef nonnull %156, ptr noundef nonnull %865, ptr noundef nonnull %842, i32 noundef %.0708936)
  %867 = getelementptr inbounds i8, ptr %67, i64 11272
  store i8 1, ptr %867, align 8, !tbaa !114
  br label %868

868:                                              ; preds = %.loopexit934.thread, %864, %.loopexit934
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %842)
  br label %869

869:                                              ; preds = %754, %674, %694, %687, %715, %727, %784, %835, %827, %831, %780, %776, %745, %721, %702, %710, %679, %.critedge848, %749, %759, %777, %868, %836, %529, %525, %522
  %.1707 = phi i1 [ false, %525 ], [ false, %529 ], [ false, %522 ], [ false, %674 ], [ false, %679 ], [ false, %687 ], [ false, %694 ], [ false, %702 ], [ false, %710 ], [ false, %715 ], [ false, %721 ], [ false, %727 ], [ false, %745 ], [ false, %780 ], [ false, %784 ], [ false, %831 ], [ false, %827 ], [ false, %835 ], [ false, %776 ], [ false, %.critedge848 ], [ false, %749 ], [ false, %754 ], [ false, %759 ], [ true, %777 ], [ false, %868 ], [ false, %836 ]
  %.2695 = phi i8 [ 0, %525 ], [ 0, %529 ], [ 0, %522 ], [ 0, %674 ], [ 0, %679 ], [ 0, %687 ], [ 0, %694 ], [ 0, %702 ], [ 0, %710 ], [ 0, %715 ], [ 0, %721 ], [ 0, %727 ], [ 0, %745 ], [ 0, %780 ], [ 0, %784 ], [ 0, %831 ], [ 0, %827 ], [ 0, %835 ], [ 0, %776 ], [ %752, %.critedge848 ], [ 1, %749 ], [ %.not926, %754 ], [ 0, %759 ], [ 0, %777 ], [ 0, %868 ], [ 0, %836 ]
  %.3 = phi i8 [ %.0683, %525 ], [ %.0683, %529 ], [ %.0683, %522 ], [ %.0683, %674 ], [ %.0683, %679 ], [ %.0683, %687 ], [ %.0683, %694 ], [ %.0683, %702 ], [ %.0683, %710 ], [ %.0683, %715 ], [ %.0683, %721 ], [ %.0683, %727 ], [ %.0683, %745 ], [ %.0683, %780 ], [ %.0683, %784 ], [ %.0683, %831 ], [ %.0683, %827 ], [ %.0683, %835 ], [ %.0683, %776 ], [ %.mux852, %.critedge848 ], [ 1, %749 ], [ %.mux929, %754 ], [ %.0683, %759 ], [ 1, %777 ], [ %.0683, %868 ], [ %.0683, %836 ]
  %870 = load i32, ptr %187, align 4, !tbaa !82
  %871 = icmp eq i32 %870, %77
  br i1 %871, label %872, label %1044

872:                                              ; preds = %869
  %brmerge859.demorgan = and i1 %69, %.1707
  br i1 %brmerge859.demorgan, label %873, label %881

873:                                              ; preds = %872
  %874 = getelementptr inbounds i8, ptr %67, i64 7608
  %875 = load ptr, ptr %874, align 8, !tbaa !89
  %876 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(1) %875) #15
  %.not768 = icmp eq i32 %876, 0
  br i1 %.not768, label %881, label %877

877:                                              ; preds = %873
  %878 = getelementptr inbounds i8, ptr %67, i64 7600
  %879 = load i32, ptr %878, align 8, !tbaa !129
  %880 = add nsw i32 %879, -1
  br label %881

881:                                              ; preds = %872, %873, %877
  %.0714 = phi i32 [ %880, %877 ], [ 0, %873 ], [ 0, %872 ]
  %.0712 = phi ptr [ %875, %877 ], [ null, %873 ], [ null, %872 ]
  br i1 %.1707, label %882, label %.critedge861

882:                                              ; preds = %881
  %883 = trunc nuw i8 %.2695 to i1
  %884 = and i32 %4, 32
  %885 = icmp ne i32 %884, 0
  %886 = and i1 %885, %883
  br i1 %886, label %.critedge861, label %1015

.critedge861:                                     ; preds = %881, %882
  br i1 %69, label %887, label %899

887:                                              ; preds = %.critedge861
  %888 = getelementptr inbounds i8, ptr %67, i64 7616
  %889 = getelementptr inbounds i8, ptr %67, i64 7584
  %890 = load i32, ptr %889, align 8, !tbaa !97
  %891 = shl nsw i32 %890, 2
  %892 = or disjoint i32 %891, 1
  call void @_ZN8ImVectorIcE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %888, i32 noundef %892)
  %893 = getelementptr inbounds i8, ptr %67, i64 7624
  %894 = load ptr, ptr %893, align 8, !tbaa !124
  %895 = load i32, ptr %888, align 8, !tbaa !125
  %896 = getelementptr inbounds i8, ptr %67, i64 7592
  %897 = load ptr, ptr %896, align 8, !tbaa !90
  %898 = call noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %894, i32 noundef %895, ptr noundef %897, ptr noundef null)
  br label %899

899:                                              ; preds = %887, %.critedge861
  %900 = and i32 %4, 448
  %.not769 = icmp eq i32 %900, 0
  br i1 %.not769, label %1007, label %901

901:                                              ; preds = %899
  br i1 %72, label %903, label %902

902:                                              ; preds = %901
  call void @__assert_fail(ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.1, i32 noundef 3477, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

903:                                              ; preds = %901
  br i1 %.not752, label %906, label %904

904:                                              ; preds = %903
  %905 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %905, label %.thread910, label %906

906:                                              ; preds = %904, %903
  br i1 %.not750.not, label %911, label %907

907:                                              ; preds = %906
  %908 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %908, label %.thread910, label %909

909:                                              ; preds = %907
  %910 = call noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %910, label %.thread910, label %911

911:                                              ; preds = %909, %906
  %912 = and i32 %4, 256
  %.not770 = icmp eq i32 %912, 0
  br i1 %.not770, label %1007, label %.thread910

.thread910:                                       ; preds = %909, %907, %904, %911
  %.0717915 = phi i32 [ 256, %911 ], [ 128, %909 ], [ 128, %907 ], [ 64, %904 ]
  %.0718914 = phi i32 [ 21, %911 ], [ 4, %909 ], [ 3, %907 ], [ 0, %904 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %21) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %21)
  %913 = getelementptr inbounds i8, ptr %21, i64 16
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %913, i8 0, i64 40, i1 false)
  store i32 %.0717915, ptr %21, align 8, !tbaa !130
  %914 = getelementptr inbounds i8, ptr %21, i64 4
  store i32 %4, ptr %914, align 4, !tbaa !132
  %915 = getelementptr inbounds i8, ptr %21, i64 8
  store ptr %6, ptr %915, align 8, !tbaa !133
  %916 = getelementptr inbounds i8, ptr %21, i64 20
  store i32 %.0718914, ptr %916, align 4, !tbaa !134
  %917 = getelementptr inbounds i8, ptr %67, i64 7624
  %918 = load ptr, ptr %917, align 8, !tbaa !124
  %919 = getelementptr inbounds i8, ptr %21, i64 24
  store ptr %918, ptr %919, align 8, !tbaa !135
  %920 = getelementptr inbounds i8, ptr %67, i64 7632
  %921 = load i32, ptr %920, align 8, !tbaa !91
  %922 = getelementptr inbounds i8, ptr %21, i64 32
  store i32 %921, ptr %922, align 8, !tbaa !136
  %923 = getelementptr inbounds i8, ptr %67, i64 7640
  %924 = load i32, ptr %923, align 8, !tbaa !98
  %925 = getelementptr inbounds i8, ptr %21, i64 36
  store i32 %924, ptr %925, align 4, !tbaa !137
  %926 = getelementptr inbounds i8, ptr %21, i64 40
  %927 = getelementptr inbounds i8, ptr %67, i64 7584
  %928 = getelementptr inbounds i8, ptr %67, i64 7592
  %929 = load ptr, ptr %928, align 8, !tbaa !90
  %930 = getelementptr inbounds i8, ptr %67, i64 7648
  %931 = load i32, ptr %930, align 8, !tbaa !138
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds i16, ptr %929, i64 %932
  %934 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %929, ptr noundef %933)
  %935 = getelementptr inbounds i8, ptr %21, i64 44
  store i32 %934, ptr %935, align 4, !tbaa !139
  %936 = getelementptr inbounds i8, ptr %67, i64 7652
  %937 = load i32, ptr %936, align 4, !tbaa !122
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds i16, ptr %929, i64 %938
  %940 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %929, ptr noundef %939)
  %941 = getelementptr inbounds i8, ptr %21, i64 48
  store i32 %940, ptr %941, align 8, !tbaa !140
  %942 = getelementptr inbounds i8, ptr %67, i64 7656
  %943 = load i32, ptr %942, align 8, !tbaa !123
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds i16, ptr %929, i64 %944
  %946 = call noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef %929, ptr noundef %945)
  %947 = getelementptr inbounds i8, ptr %21, i64 52
  store i32 %946, ptr %947, align 4, !tbaa !141
  %948 = call noundef i32 %5(ptr noundef nonnull %21)
  %949 = load ptr, ptr %919, align 8, !tbaa !135
  %950 = load ptr, ptr %917, align 8, !tbaa !124
  %951 = icmp eq ptr %949, %950
  br i1 %951, label %953, label %952

952:                                              ; preds = %.thread910
  call void @__assert_fail(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.1, i32 noundef 3524, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

953:                                              ; preds = %.thread910
  %954 = load i32, ptr %925, align 4, !tbaa !137
  %955 = load i32, ptr %923, align 8, !tbaa !98
  %956 = icmp eq i32 %954, %955
  br i1 %956, label %958, label %957

957:                                              ; preds = %953
  call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.1, i32 noundef 3525, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

958:                                              ; preds = %953
  %959 = load i32, ptr %914, align 4, !tbaa !132
  %960 = icmp eq i32 %959, %4
  br i1 %960, label %962, label %961

961:                                              ; preds = %958
  call void @__assert_fail(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.1, i32 noundef 3526, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

962:                                              ; preds = %958
  %963 = load i32, ptr %935, align 4, !tbaa !139
  %.not772 = icmp eq i32 %963, %934
  br i1 %.not772, label %969, label %964

964:                                              ; preds = %962
  %965 = sext i32 %963 to i64
  %966 = getelementptr inbounds i8, ptr %949, i64 %965
  %967 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %949, ptr noundef %966)
  store i32 %967, ptr %930, align 8, !tbaa !138
  %968 = getelementptr inbounds i8, ptr %67, i64 11272
  store i8 1, ptr %968, align 8, !tbaa !114
  br label %969

969:                                              ; preds = %964, %962
  %970 = load i32, ptr %941, align 8, !tbaa !140
  %.not773 = icmp eq i32 %970, %940
  br i1 %.not773, label %976, label %971

971:                                              ; preds = %969
  %972 = load ptr, ptr %919, align 8, !tbaa !135
  %973 = sext i32 %970 to i64
  %974 = getelementptr inbounds i8, ptr %972, i64 %973
  %975 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %972, ptr noundef %974)
  store i32 %975, ptr %936, align 4, !tbaa !122
  br label %976

976:                                              ; preds = %971, %969
  %977 = load i32, ptr %947, align 4, !tbaa !141
  %.not774 = icmp eq i32 %977, %946
  br i1 %.not774, label %983, label %978

978:                                              ; preds = %976
  %979 = load ptr, ptr %919, align 8, !tbaa !135
  %980 = sext i32 %977 to i64
  %981 = getelementptr inbounds i8, ptr %979, i64 %980
  %982 = call noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %979, ptr noundef %981)
  store i32 %982, ptr %942, align 8, !tbaa !123
  br label %983

983:                                              ; preds = %978, %976
  %984 = load i8, ptr %926, align 8, !tbaa !142, !range !34, !noundef !35
  %985 = trunc nuw i8 %984 to i1
  br i1 %985, label %986, label %1006

986:                                              ; preds = %983
  %987 = load i32, ptr %922, align 8, !tbaa !136
  %988 = load ptr, ptr %919, align 8, !tbaa !135
  %989 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %988) #15
  %990 = trunc i64 %989 to i32
  %991 = icmp eq i32 %987, %990
  br i1 %991, label %993, label %992

992:                                              ; preds = %986
  call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.1, i32 noundef 3532, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

993:                                              ; preds = %986
  %994 = icmp sle i32 %987, %.0696
  %brmerge867 = or i1 %.not756, %994
  br i1 %brmerge867, label %999, label %995

995:                                              ; preds = %993
  %996 = load i32, ptr %927, align 8, !tbaa !97
  %997 = sub i32 %987, %.0696
  %998 = add nsw i32 %997, %996
  call void @_ZN8ImVectorItE6resizeEi(ptr noundef nonnull align 8 dereferenceable(16) %927, i32 noundef %998)
  %.pre949 = load ptr, ptr %919, align 8, !tbaa !135
  br label %999

999:                                              ; preds = %993, %995
  %1000 = phi ptr [ %988, %993 ], [ %.pre949, %995 ]
  %1001 = load ptr, ptr %928, align 8, !tbaa !90
  %1002 = load i32, ptr %927, align 8, !tbaa !97
  %1003 = call noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %1001, i32 noundef %1002, ptr noundef %1000, ptr noundef null, ptr noundef null)
  %1004 = getelementptr inbounds i8, ptr %67, i64 7636
  store i32 %1003, ptr %1004, align 4, !tbaa !88
  %1005 = load i32, ptr %922, align 8, !tbaa !136
  store i32 %1005, ptr %920, align 8, !tbaa !91
  call void @_ZN19ImGuiInputTextState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(3720) %156)
  br label %1006

1006:                                             ; preds = %999, %983
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %21) #14
  br label %1007

1007:                                             ; preds = %911, %1006, %899
  br i1 %69, label %1008, label %1015

1008:                                             ; preds = %1007
  %1009 = getelementptr inbounds i8, ptr %67, i64 7624
  %1010 = load ptr, ptr %1009, align 8, !tbaa !124
  %1011 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %1010, ptr noundef nonnull dereferenceable(1) %1) #15
  %.not775 = icmp eq i32 %1011, 0
  br i1 %.not775, label %1015, label %1012

1012:                                             ; preds = %1008
  %1013 = getelementptr inbounds i8, ptr %67, i64 7632
  %1014 = load i32, ptr %1013, align 8, !tbaa !91
  br label %1015

1015:                                             ; preds = %1007, %1008, %1012, %882
  %.1715 = phi i32 [ %1014, %1012 ], [ %.0714, %1008 ], [ %.0714, %1007 ], [ %.0714, %882 ]
  %.1713 = phi ptr [ %1010, %1012 ], [ %.0712, %1008 ], [ %.0712, %1007 ], [ %.0712, %882 ]
  %.not776 = icmp ne ptr %.1713, null
  br i1 %.not776, label %1016, label %1042

1016:                                             ; preds = %1015
  %1017 = icmp sgt i32 %.1715, -1
  br i1 %1017, label %1019, label %1018

1018:                                             ; preds = %1016
  call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.1, i32 noundef 3553, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1019:                                             ; preds = %1016
  %.not777 = icmp eq i32 %.0696, %.1715
  %brmerge868 = or i1 %.not756, %.not777
  br i1 %brmerge868, label %1036, label %1020

1020:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %22) #14
  call void @_ZN26ImGuiInputTextCallbackDataC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %22)
  store i32 262144, ptr %22, align 8, !tbaa !130
  %1021 = getelementptr inbounds i8, ptr %22, i64 4
  store i32 %4, ptr %1021, align 4, !tbaa !132
  %1022 = getelementptr inbounds i8, ptr %22, i64 24
  store ptr %1, ptr %1022, align 8, !tbaa !135
  %1023 = getelementptr inbounds i8, ptr %22, i64 32
  store i32 %.1715, ptr %1023, align 8, !tbaa !136
  %1024 = add nuw nsw i32 %.1715, 1
  %1025 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %2, i32 noundef %1024)
  %1026 = getelementptr inbounds i8, ptr %22, i64 36
  store i32 %1025, ptr %1026, align 4, !tbaa !137
  %1027 = getelementptr inbounds i8, ptr %22, i64 8
  store ptr %6, ptr %1027, align 8, !tbaa !133
  %1028 = call noundef i32 %5(ptr noundef nonnull %22)
  %1029 = load ptr, ptr %1022, align 8, !tbaa !135
  %1030 = load i32, ptr %1026, align 4, !tbaa !137
  %1031 = load i32, ptr %1023, align 8, !tbaa !136
  %1032 = add nsw i32 %1030, -1
  %1033 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1031, i32 noundef %1032)
  %.not778 = icmp sgt i32 %1033, %1030
  br i1 %.not778, label %1034, label %1035

1034:                                             ; preds = %1020
  call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.1, i32 noundef 3567, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv) #13
  unreachable

1035:                                             ; preds = %1020
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %22) #14
  br label %1036

1036:                                             ; preds = %1019, %1035
  %.2716 = phi i32 [ %1033, %1035 ], [ %.1715, %1019 ]
  %.0680 = phi i32 [ %1030, %1035 ], [ %2, %1019 ]
  %.0677 = phi ptr [ %1029, %1035 ], [ %1, %1019 ]
  %1037 = getelementptr inbounds i8, ptr %67, i64 7624
  %1038 = load ptr, ptr %1037, align 8, !tbaa !124
  %1039 = add nsw i32 %.2716, 1
  %1040 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1039, i32 noundef %.0680)
  %1041 = sext i32 %1040 to i64
  call void @_Z9ImStrncpyPcPKcm(ptr noundef %.0677, ptr noundef %1038, i64 noundef %1041)
  br label %1042

1042:                                             ; preds = %1036, %1015
  %.1678 = phi ptr [ %.0677, %1036 ], [ %1, %1015 ]
  %1043 = getelementptr inbounds i8, ptr %67, i64 11276
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %1043, i8 0, i64 20, i1 false)
  %.pre951.pre = load i32, ptr %187, align 4, !tbaa !82
  br label %1044

1044:                                             ; preds = %1042, %869
  %.pre951 = phi i32 [ %.pre951.pre, %1042 ], [ %870, %869 ]
  %.1691 = phi i1 [ %.not776, %1042 ], [ false, %869 ]
  %.2679 = phi ptr [ %.1678, %1042 ], [ %1, %869 ]
  %1045 = trunc nuw i8 %.3 to i1
  %1046 = icmp eq i32 %.pre951, %77
  %or.cond967 = select i1 %1045, i1 %1046, i1 false
  br i1 %or.cond967, label %1047, label %1048

1047:                                             ; preds = %1044
  call void @_ZN5ImGui13ClearActiveIDEv()
  %.pre950 = load i32, ptr %187, align 4, !tbaa !82
  br label %1048

1048:                                             ; preds = %1047, %1044
  %1049 = phi i32 [ %.pre950, %1047 ], [ %.pre951, %1044 ]
  %1050 = icmp eq i32 %1049, %77
  %brmerge871.not = and i1 %69, %1050
  br i1 %brmerge871.not, label %1051, label %1054

1051:                                             ; preds = %1048
  %1052 = getelementptr inbounds i8, ptr %67, i64 7624
  %1053 = load ptr, ptr %1052, align 8, !tbaa !124
  br label %1054

1054:                                             ; preds = %1048, %1051
  %1055 = phi ptr [ %1053, %1051 ], [ %.2679, %1048 ]
  br i1 %58, label %1060, label %1056

1056:                                             ; preds = %1054
  call void @_ZN5ImGui18RenderNavHighlightERK6ImRectji(ptr noundef nonnull align 4 dereferenceable(16) %9, i32 noundef %77, i32 noundef 1)
  %.sroa.073.0.copyload = load <2 x float>, ptr %9, align 8
  %.sroa.072.0.copyload = load <2 x float>, ptr %93, align 8
  %1057 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 7, float noundef 1.000000e+00)
  %1058 = getelementptr inbounds i8, ptr %67, i64 5500
  %1059 = load float, ptr %1058, align 4, !tbaa !143
  call void @_ZN5ImGui11RenderFrameE6ImVec2S0_jbf(<2 x float> %.sroa.073.0.copyload, <2 x float> %.sroa.072.0.copyload, i32 noundef %1057, i1 noundef zeroext true, float noundef %1059)
  br label %1060

1060:                                             ; preds = %1056, %1054
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #14
  %1061 = load float, ptr %9, align 8, !tbaa !105
  %1062 = getelementptr inbounds i8, ptr %9, i64 4
  %1063 = load float, ptr %1062, align 4, !tbaa !144
  %1064 = load float, ptr %8, align 8, !tbaa !43
  %1065 = fadd float %1061, %1064
  %1066 = getelementptr inbounds i8, ptr %8, i64 4
  %1067 = load float, ptr %1066, align 4, !tbaa !145
  %1068 = fadd float %1063, %1067
  call void @_ZN6ImVec4C2Effff(ptr noundef nonnull align 4 dereferenceable(16) %23, float noundef %1061, float noundef %1063, float noundef %1065, float noundef %1068)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #14
  br i1 %58, label %1069, label %1072

1069:                                             ; preds = %1060
  %1070 = getelementptr inbounds i8, ptr %.0682, i64 208
  %1071 = load i64, ptr %1070, align 8
  br label %1075

1072:                                             ; preds = %1060
  %1073 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %86)
  %1074 = bitcast <2 x float> %1073 to i64
  br label %1075

1075:                                             ; preds = %1072, %1069
  %storemerge = phi i64 [ %1071, %1069 ], [ %1074, %1072 ]
  store i64 %storemerge, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %1076 = load i32, ptr %156, align 8, !tbaa !83
  %1077 = icmp eq i32 %1076, %77
  %brmerge874.not = and i1 %58, %1077
  br i1 %brmerge874.not, label %1078, label %1082

1078:                                             ; preds = %1075
  %1079 = load i32, ptr %187, align 4, !tbaa !82
  %1080 = call noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984) %.0682, ptr noundef nonnull @.str.4, ptr noundef null)
  %1081 = icmp eq i32 %1079, %1080
  br label %1082

1082:                                             ; preds = %1075, %1078
  %1083 = phi i1 [ false, %1075 ], [ %1081, %1078 ]
  %1084 = load i32, ptr %187, align 4, !tbaa !82
  %1085 = icmp eq i32 %1084, %77
  %brmerge875 = select i1 %1085, i1 true, i1 %1083
  br i1 %brmerge875, label %1086, label %1317

1086:                                             ; preds = %1082
  %1087 = getelementptr inbounds i8, ptr %67, i64 24
  %1088 = load float, ptr %1087, align 8, !tbaa !146
  %1089 = getelementptr inbounds i8, ptr %67, i64 11268
  %1090 = load float, ptr %1089, align 4, !tbaa !147
  %1091 = fadd float %1088, %1090
  store float %1091, ptr %1089, align 4, !tbaa !147
  %1092 = getelementptr inbounds i8, ptr %67, i64 7592
  %1093 = load ptr, ptr %1092, align 8, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %26)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #14
  call void @_ZN6ImVec2C2Ev(ptr noundef nonnull align 4 dereferenceable(8) %27)
  %1094 = getelementptr inbounds i8, ptr %67, i64 7648
  %1095 = load i32, ptr %1094, align 8, !tbaa !138
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds i16, ptr %1093, i64 %1096
  %.sroa.049.0.copyload = load i32, ptr @__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_number, align 4
  %.sroa.8.0.copyload = load i32, ptr getelementptr inbounds (i8, ptr @__const._ZN5ImGui11InputTextExEPKcPciRK6ImVec2iPFiP26ImGuiInputTextCallbackDataEPv.searches_result_line_number, i64 4), align 4
  %1098 = getelementptr inbounds i8, ptr %67, i64 7652
  %1099 = load i32, ptr %1098, align 4, !tbaa !122
  %1100 = getelementptr inbounds i8, ptr %67, i64 7656
  %1101 = load i32, ptr %1100, align 8, !tbaa !123
  %.not779 = icmp eq i32 %1099, %1101
  br i1 %.not779, label %1106, label %1102

1102:                                             ; preds = %1086
  %1103 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1099, i32 noundef %1101)
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds i16, ptr %1093, i64 %1104
  br label %1106

1106:                                             ; preds = %1102, %1086
  %.sroa.6.0 = phi ptr [ %1105, %1102 ], [ null, %1086 ]
  %.0702 = phi i32 [ 2, %1102 ], [ 1, %1086 ]
  %.sroa.8.0 = phi i32 [ -1, %1102 ], [ %.sroa.8.0.copyload, %1086 ]
  %.lobit = lshr exact i32 %57, 20
  %1107 = add nuw nsw i32 %.0702, %.lobit
  br label %1108

1108:                                             ; preds = %1123, %1106
  %.1703 = phi i32 [ %1107, %1106 ], [ %.3705, %1123 ]
  %.sroa.8.1 = phi i32 [ %.sroa.8.0, %1106 ], [ %.sroa.8.2, %1123 ]
  %.sroa.049.0 = phi i32 [ %.sroa.049.0.copyload, %1106 ], [ %.sroa.049.2, %1123 ]
  %.0699 = phi i32 [ 0, %1106 ], [ %.1700, %1123 ]
  %.0698 = phi ptr [ %1093, %1106 ], [ %1124, %1123 ]
  %1109 = load i16, ptr %.0698, align 2, !tbaa !115
  switch i16 %1109, label %1123 [
    i16 0, label %1125
    i16 10, label %1110
  ]

1110:                                             ; preds = %1108
  %1111 = add nsw i32 %.0699, 1
  %1112 = icmp eq i32 %.sroa.049.0, -1
  br i1 %1112, label %1113, label %1117

1113:                                             ; preds = %1110
  %.not781 = icmp ult ptr %.0698, %1097
  br i1 %.not781, label %1117, label %1114

1114:                                             ; preds = %1113
  %1115 = add nsw i32 %.1703, -1
  %1116 = icmp slt i32 %.1703, 2
  br i1 %1116, label %1125, label %1117

1117:                                             ; preds = %1114, %1113, %1110
  %.2704 = phi i32 [ %1115, %1114 ], [ %.1703, %1113 ], [ %.1703, %1110 ]
  %.sroa.049.1 = phi i32 [ %1111, %1114 ], [ -1, %1113 ], [ %.sroa.049.0, %1110 ]
  %1118 = icmp eq i32 %.sroa.8.1, -1
  br i1 %1118, label %1119, label %1123

1119:                                             ; preds = %1117
  %.not782 = icmp ult ptr %.0698, %.sroa.6.0
  br i1 %.not782, label %1123, label %1120

1120:                                             ; preds = %1119
  %1121 = add nsw i32 %.2704, -1
  %1122 = icmp slt i32 %.2704, 2
  br i1 %1122, label %1125, label %1123

1123:                                             ; preds = %1108, %1120, %1119, %1117
  %.3705 = phi i32 [ %1121, %1120 ], [ %.2704, %1119 ], [ %.2704, %1117 ], [ %.1703, %1108 ]
  %.sroa.8.2 = phi i32 [ %1111, %1120 ], [ -1, %1119 ], [ %.sroa.8.1, %1117 ], [ %.sroa.8.1, %1108 ]
  %.sroa.049.2 = phi i32 [ %.sroa.049.1, %1120 ], [ %.sroa.049.1, %1119 ], [ %.sroa.049.1, %1117 ], [ %.sroa.049.0, %1108 ]
  %.1700 = phi i32 [ %1111, %1120 ], [ %1111, %1119 ], [ %1111, %1117 ], [ %.0699, %1108 ]
  %1124 = getelementptr inbounds i8, ptr %.0698, i64 2
  br label %1108, !llvm.loop !148

1125:                                             ; preds = %1120, %1114, %1108
  %.sroa.8.3 = phi i32 [ %.sroa.8.1, %1108 ], [ %.sroa.8.1, %1114 ], [ %1111, %1120 ]
  %.sroa.049.3 = phi i32 [ %.sroa.049.0, %1108 ], [ %1111, %1114 ], [ %.sroa.049.1, %1120 ]
  %.2701 = phi i32 [ %.0699, %1108 ], [ %1111, %1114 ], [ %1111, %1120 ]
  %1126 = add nsw i32 %.2701, 1
  %1127 = icmp eq i32 %.sroa.049.3, -1
  %spec.select876 = select i1 %1127, i32 %1126, i32 %.sroa.049.3
  %1128 = icmp eq i32 %.sroa.8.3, -1
  %.sroa.8.4 = select i1 %1128, i32 %1126, i32 %.sroa.8.3
  %1129 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %1097, ptr noundef %1093)
  %1130 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1129, ptr noundef %1097, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.036.0.vec.extract = extractelement <2 x float> %1130, i64 0
  store float %.sroa.036.0.vec.extract, ptr %26, align 4, !tbaa !43
  %1131 = sitofp i32 %spec.select876 to float
  %1132 = getelementptr inbounds i8, ptr %67, i64 6288
  %1133 = load float, ptr %1132, align 8, !tbaa !109
  %1134 = fmul float %1133, %1131
  %1135 = getelementptr inbounds i8, ptr %26, i64 4
  store float %1134, ptr %1135, align 4, !tbaa !145
  %1136 = icmp sgt i32 %.sroa.8.4, -1
  br i1 %1136, label %1137, label %1144

1137:                                             ; preds = %1125
  %1138 = call noundef ptr @_Z9ImStrbolWPKtS0_(ptr noundef %.sroa.6.0, ptr noundef %1093)
  %1139 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1138, ptr noundef %.sroa.6.0, ptr noundef null, ptr noundef null, i1 noundef zeroext false)
  %.sroa.035.0.vec.extract = extractelement <2 x float> %1139, i64 0
  store float %.sroa.035.0.vec.extract, ptr %27, align 4, !tbaa !43
  %1140 = uitofp nneg i32 %.sroa.8.4 to float
  %1141 = load float, ptr %1132, align 8, !tbaa !109
  %1142 = fmul float %1141, %1140
  %1143 = getelementptr inbounds i8, ptr %27, i64 4
  store float %1142, ptr %1143, align 4, !tbaa !145
  br label %1144

1144:                                             ; preds = %1137, %1125
  %1145 = phi float [ %1141, %1137 ], [ %1133, %1125 ]
  br i1 %58, label %1146, label %1151

1146:                                             ; preds = %1144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #14
  %1147 = load float, ptr %8, align 8, !tbaa !43
  %1148 = sitofp i32 %1126 to float
  %1149 = fmul float %1145, %1148
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %28, float noundef %1147, float noundef %1149)
  %1150 = load i64, ptr %28, align 8
  store i64 %1150, ptr %25, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #14
  br label %1151

1151:                                             ; preds = %1146, %1144
  %1152 = getelementptr inbounds i8, ptr %67, i64 11272
  %1153 = load i8, ptr %1152, align 8, !tbaa !114, !range !34, !noundef !35
  %1154 = trunc nuw i8 %1153 to i1
  br i1 %1154, label %1155, label %1200

1155:                                             ; preds = %1151
  %1156 = and i32 %4, 4096
  %.not783 = icmp eq i32 %1156, 0
  br i1 %.not783, label %1157, label %1176

1157:                                             ; preds = %1155
  %1158 = load float, ptr %8, align 8, !tbaa !43
  %1159 = fmul float %1158, 2.500000e-01
  %1160 = load float, ptr %26, align 4, !tbaa !43
  %1161 = getelementptr inbounds i8, ptr %67, i64 7644
  %1162 = load float, ptr %1161, align 4, !tbaa !92
  %1163 = fcmp olt float %1160, %1162
  br i1 %1163, label %1164, label %1169

1164:                                             ; preds = %1157
  %1165 = fsub float %1160, %1159
  %1166 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1165)
  %1167 = fptosi float %1166 to i32
  %1168 = sitofp i32 %1167 to float
  store float %1168, ptr %1161, align 4, !tbaa !92
  br label %1178

1169:                                             ; preds = %1157
  %1170 = fsub float %1160, %1158
  %1171 = fcmp ult float %1170, %1162
  br i1 %1171, label %1178, label %1172

1172:                                             ; preds = %1169
  %1173 = fadd float %1159, %1170
  %1174 = fptosi float %1173 to i32
  %1175 = sitofp i32 %1174 to float
  store float %1175, ptr %1161, align 4, !tbaa !92
  br label %1178

1176:                                             ; preds = %1155
  %1177 = getelementptr inbounds i8, ptr %67, i64 7644
  store float 0.000000e+00, ptr %1177, align 4, !tbaa !92
  br label %1178

1178:                                             ; preds = %1164, %1172, %1169, %1176
  br i1 %58, label %1179, label %1200

1179:                                             ; preds = %1178
  %1180 = getelementptr inbounds i8, ptr %.0682, i64 92
  %1181 = load float, ptr %1180, align 4, !tbaa !120
  %1182 = load float, ptr %1135, align 4, !tbaa !145
  %1183 = load float, ptr %1132, align 8, !tbaa !109
  %1184 = fsub float %1182, %1183
  %1185 = fcmp olt float %1184, %1181
  br i1 %1185, label %1186, label %1188

1186:                                             ; preds = %1179
  %1187 = call noundef float @_ZL5ImMaxIfET_S0_S0_(float noundef 0.000000e+00, float noundef %1184)
  %.pre952 = load float, ptr %1180, align 4, !tbaa !120
  br label %1193

1188:                                             ; preds = %1179
  %1189 = load float, ptr %1066, align 4, !tbaa !145
  %1190 = fsub float %1182, %1189
  %1191 = fcmp ult float %1190, %1181
  br i1 %1191, label %1193, label %1192

1192:                                             ; preds = %1188
  br label %1193

1193:                                             ; preds = %1188, %1192, %1186
  %1194 = phi float [ %.pre952, %1186 ], [ %1181, %1192 ], [ %1181, %1188 ]
  %.0692 = phi float [ %1187, %1186 ], [ %1190, %1192 ], [ %1181, %1188 ]
  %1195 = fsub float %1194, %.0692
  %1196 = getelementptr inbounds i8, ptr %.0682, i64 212
  %1197 = load float, ptr %1196, align 4, !tbaa !108
  %1198 = fadd float %1197, %1195
  store float %1198, ptr %1196, align 4, !tbaa !108
  store float %.0692, ptr %1180, align 4, !tbaa !120
  %1199 = getelementptr inbounds i8, ptr %24, i64 4
  store float %1198, ptr %1199, align 4, !tbaa !145
  br label %1200

1200:                                             ; preds = %1178, %1193, %1151
  store i8 0, ptr %1152, align 8, !tbaa !114
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #14
  %1201 = getelementptr inbounds i8, ptr %67, i64 7644
  %1202 = load float, ptr %1201, align 4, !tbaa !92
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef %1202, float noundef 0.000000e+00)
  %1203 = load i32, ptr %1098, align 4, !tbaa !122
  %1204 = load i32, ptr %1100, align 8, !tbaa !123
  %.not784 = icmp eq i32 %1203, %1204
  br i1 %.not784, label %1269, label %1205

1205:                                             ; preds = %1200
  %1206 = call noundef i32 @_ZL5ImMinIiET_S0_S0_(i32 noundef %1203, i32 noundef %1204)
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds i16, ptr %1093, i64 %1207
  %1209 = load i32, ptr %1098, align 4, !tbaa !122
  %1210 = load i32, ptr %1100, align 8, !tbaa !123
  %1211 = call noundef i32 @_ZL5ImMaxIiET_S0_S0_(i32 noundef %1209, i32 noundef %1210)
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds i16, ptr %1093, i64 %1212
  %1214 = select i1 %58, float 0.000000e+00, float -1.000000e+00
  %1215 = select i1 %58, float 0.000000e+00, float 2.000000e+00
  %1216 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 37, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #14
  %1217 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %1217, ptr %31, align 8
  %1218 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %31, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %1218, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #14
  store ptr %1208, ptr %32, align 8, !tbaa !36
  %1219 = getelementptr inbounds i8, ptr %30, i64 4
  %1220 = icmp slt i32 %1206, %1211
  br i1 %1220, label %.lr.ph941, label %._crit_edge

.lr.ph941:                                        ; preds = %1205
  %1221 = extractelement <2 x float> %1218, i64 1
  %1222 = getelementptr inbounds i8, ptr %23, i64 12
  %1223 = getelementptr inbounds i8, ptr %23, i64 4
  %1224 = getelementptr inbounds i8, ptr %67, i64 6280
  %1225 = getelementptr inbounds i8, ptr %.0682, i64 704
  %1226 = getelementptr inbounds i8, ptr %33, i64 8
  %.pre953 = load float, ptr %1132, align 8, !tbaa !109
  br label %1227

1227:                                             ; preds = %.lr.ph941, %.loopexit
  %1228 = phi ptr [ %1208, %.lr.ph941 ], [ %1261, %.loopexit ]
  %1229 = phi float [ %1221, %.lr.ph941 ], [ %1267, %.loopexit ]
  %1230 = phi float [ %.pre953, %.lr.ph941 ], [ %1263, %.loopexit ]
  %1231 = load float, ptr %1222, align 4, !tbaa !149
  %1232 = fadd float %1231, %1230
  %1233 = fcmp ogt float %1229, %1232
  br i1 %1233, label %._crit_edge, label %1234

1234:                                             ; preds = %1227
  %1235 = load float, ptr %1223, align 4, !tbaa !150
  %1236 = fcmp olt float %1229, %1235
  br i1 %1236, label %.preheader, label %1243

.preheader:                                       ; preds = %1234, %1239
  %1237 = phi ptr [ %1240, %1239 ], [ %1228, %1234 ]
  %1238 = icmp ult ptr %1237, %1213
  br i1 %1238, label %1239, label %.loopexit

1239:                                             ; preds = %.preheader
  %1240 = getelementptr inbounds i8, ptr %1237, i64 2
  store ptr %1240, ptr %32, align 8, !tbaa !36
  %1241 = load i16, ptr %1237, align 2, !tbaa !115
  %1242 = icmp eq i16 %1241, 10
  br i1 %1242, label %.loopexit, label %.preheader, !llvm.loop !151

1243:                                             ; preds = %1234
  %1244 = call <2 x float> @_ZL22InputTextCalcTextSizeWPKtS0_PS0_P6ImVec2b(ptr noundef %1228, ptr noundef nonnull %1213, ptr noundef nonnull %32, ptr noundef null, i1 noundef zeroext true)
  %.sroa.019.0.vec.extract = extractelement <2 x float> %1244, i64 0
  %1245 = fcmp ugt float %.sroa.019.0.vec.extract, 0.000000e+00
  br i1 %1245, label %1252, label %1246

1246:                                             ; preds = %1243
  %1247 = load ptr, ptr %1224, align 8, !tbaa !72
  %1248 = call noundef float @_ZNK6ImFont14GetCharAdvanceEt(ptr noundef nonnull align 8 dereferenceable(112) %1247, i16 noundef zeroext 32)
  %1249 = fmul float %1248, 5.000000e-01
  %1250 = fptosi float %1249 to i32
  %1251 = sitofp i32 %1250 to float
  br label %1252

1252:                                             ; preds = %1246, %1243
  %.sroa.019.0.vec.extract22.pre-phi = phi float [ %1251, %1246 ], [ %.sroa.019.0.vec.extract, %1243 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #14
  %1253 = load float, ptr %1132, align 8, !tbaa !109
  %1254 = fsub float %1214, %1253
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0.000000e+00, float noundef %1254)
  %1255 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %1255, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #14
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef %.sroa.019.0.vec.extract22.pre-phi, float noundef %1215)
  %1256 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %37)
  store <2 x float> %1256, ptr %36, align 8
  call void @_ZN6ImRectC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %36)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %38, ptr noundef nonnull align 4 dereferenceable(16) %23)
  call void @_ZN6ImRect8ClipWithERKS_(ptr noundef nonnull align 4 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(16) %38)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #14
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %23)
  %1257 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(16) %39)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #14
  br i1 %1257, label %1258, label %1260

1258:                                             ; preds = %1252
  %1259 = load ptr, ptr %1225, align 8, !tbaa !152
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(168) %1259, ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %1226, i32 noundef %1216, float noundef 0.000000e+00, i32 noundef 15)
  br label %1260

1260:                                             ; preds = %1258, %1252
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #14
  %.pre954 = load float, ptr %1132, align 8, !tbaa !109
  %.pre955 = load float, ptr %1219, align 4, !tbaa !145
  %.pre956 = load ptr, ptr %32, align 8, !tbaa !36
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader, %1239, %1260
  %1261 = phi ptr [ %.pre956, %1260 ], [ %1237, %.preheader ], [ %1240, %1239 ]
  %1262 = phi float [ %.pre955, %1260 ], [ %1229, %1239 ], [ %1229, %.preheader ]
  %1263 = phi float [ %.pre954, %1260 ], [ %1230, %1239 ], [ %1230, %.preheader ]
  %1264 = load float, ptr %24, align 8, !tbaa !43
  %1265 = load float, ptr %29, align 4, !tbaa !43
  %1266 = fsub float %1264, %1265
  store float %1266, ptr %30, align 8, !tbaa !43
  %1267 = fadd float %1263, %1262
  store float %1267, ptr %1219, align 4, !tbaa !145
  %1268 = icmp ult ptr %1261, %1213
  br i1 %1268, label %1227, label %._crit_edge, !llvm.loop !153

._crit_edge:                                      ; preds = %.loopexit, %1227, %1205
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #14
  br label %1269

1269:                                             ; preds = %._crit_edge, %1200
  %1270 = getelementptr inbounds i8, ptr %67, i64 7632
  %1271 = load i32, ptr %1270, align 8, !tbaa !91
  %1272 = icmp slt i32 %1271, 2097152
  %or.cond = select i1 %58, i1 true, i1 %1272
  br i1 %or.cond, label %1273, label %1283

1273:                                             ; preds = %1269
  %1274 = getelementptr inbounds i8, ptr %.0682, i64 704
  %1275 = load ptr, ptr %1274, align 8, !tbaa !152
  %1276 = getelementptr inbounds i8, ptr %67, i64 6280
  %1277 = load ptr, ptr %1276, align 8, !tbaa !72
  %1278 = load float, ptr %1132, align 8, !tbaa !109
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #14
  %1279 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %1279, ptr %40, align 8
  %1280 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  %1281 = sext i32 %1271 to i64
  %1282 = getelementptr inbounds i8, ptr %1055, i64 %1281
  %. = select i1 %58, ptr null, ptr %23
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1275, ptr noundef %1277, float noundef %1278, ptr noundef nonnull align 4 dereferenceable(8) %40, i32 noundef %1280, ptr noundef %1055, ptr noundef %1282, float noundef 0.000000e+00, ptr noundef %.)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #14
  br label %1283

1283:                                             ; preds = %1269, %1273
  %1284 = getelementptr inbounds i8, ptr %67, i64 210
  %1285 = load i8, ptr %1284, align 2, !tbaa !154, !range !34, !noundef !35
  %1286 = trunc nuw i8 %1285 to i1
  br i1 %1286, label %1287, label %1293

1287:                                             ; preds = %1283
  %1288 = load float, ptr %1089, align 4, !tbaa !155
  %1289 = fcmp ugt float %1288, 0.000000e+00
  br i1 %1289, label %1290, label %1293

1290:                                             ; preds = %1287
  %1291 = call noundef float @_ZL6ImFmodff(float noundef %1288, float noundef 0x3FF3333340000000)
  %1292 = fcmp ole float %1291, 0x3FE99999A0000000
  br label %1293

1293:                                             ; preds = %1290, %1287, %1283
  %1294 = phi i1 [ true, %1287 ], [ true, %1283 ], [ %1292, %1290 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #14
  %1295 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %24, ptr noundef nonnull align 4 dereferenceable(8) %26)
  store <2 x float> %1295, ptr %41, align 8
  %1296 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %41, ptr noundef nonnull align 4 dereferenceable(8) %29)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #14
  %.sroa.0.0.vec.extract = extractelement <2 x float> %1296, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %1296, i64 1
  %1297 = load float, ptr %1132, align 8, !tbaa !109
  %1298 = fsub float %.sroa.0.4.vec.extract, %1297
  %1299 = fadd float %1298, 5.000000e-01
  %1300 = fadd float %.sroa.0.0.vec.extract, 1.000000e+00
  %1301 = fadd float %.sroa.0.4.vec.extract, -1.500000e+00
  call void @_ZN6ImRectC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %42, float noundef %.sroa.0.0.vec.extract, float noundef %1299, float noundef %1300, float noundef %1301)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #14
  br i1 %1294, label %1302, label %.critedge5

1302:                                             ; preds = %1293
  call void @_ZN6ImRectC2ERK6ImVec4(ptr noundef nonnull align 4 dereferenceable(16) %43, ptr noundef nonnull align 4 dereferenceable(16) %23)
  %1303 = call noundef zeroext i1 @_ZNK6ImRect8OverlapsERKS_(ptr noundef nonnull align 4 dereferenceable(16) %42, ptr noundef nonnull align 4 dereferenceable(16) %43)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #14
  br i1 %1303, label %1304, label %1309

1304:                                             ; preds = %1302
  %1305 = getelementptr inbounds i8, ptr %.0682, i64 704
  %1306 = load ptr, ptr %1305, align 8, !tbaa !152
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #14
  %1307 = call <2 x float> @_ZNK6ImRect5GetBLEv(ptr noundef nonnull align 4 dereferenceable(16) %42)
  store <2 x float> %1307, ptr %44, align 8
  %1308 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddLineERK6ImVec2S2_jf(ptr noundef nonnull align 8 dereferenceable(168) %1306, ptr noundef nonnull align 4 dereferenceable(8) %42, ptr noundef nonnull align 4 dereferenceable(8) %44, i32 noundef %1308, float noundef 1.000000e+00)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #14
  br label %1309

.critedge5:                                       ; preds = %1293
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #14
  br label %1309

1309:                                             ; preds = %.critedge5, %1304, %1302
  br i1 %69, label %1310, label %1316

1310:                                             ; preds = %1309
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #14
  %1311 = fadd float %.sroa.0.0.vec.extract, -1.000000e+00
  %1312 = load float, ptr %1132, align 8, !tbaa !109
  %1313 = fsub float %.sroa.0.4.vec.extract, %1312
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %45, float noundef %1311, float noundef %1313)
  %1314 = getelementptr inbounds i8, ptr %67, i64 11472
  %1315 = load i64, ptr %45, align 8
  store i64 %1315, ptr %1314, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #14
  br label %1316

1316:                                             ; preds = %1310, %1309
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #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
  br label %1339

1317:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #14
  store ptr null, ptr %46, align 8, !tbaa !36
  br i1 %58, label %.thread916, label %1325

.thread916:                                       ; preds = %1317
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #14
  %1318 = load float, ptr %8, align 8, !tbaa !43
  %1319 = call noundef i32 @_ZL32InputTextCalcTextLenAndLineCountPKcPS0_(ptr noundef %1055, ptr noundef nonnull %46)
  %1320 = sitofp i32 %1319 to float
  %1321 = getelementptr inbounds i8, ptr %67, i64 6288
  %1322 = load float, ptr %1321, align 8, !tbaa !109
  %1323 = fmul float %1322, %1320
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %47, float noundef %1318, float noundef %1323)
  %1324 = load i64, ptr %47, align 8
  store i64 %1324, ptr %25, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #14
  br label %1329

1325:                                             ; preds = %1317
  %1326 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1055) #15
  %1327 = getelementptr inbounds i8, ptr %1055, i64 %1326
  store ptr %1327, ptr %46, align 8, !tbaa !36
  %1328 = icmp slt i64 %1326, 2097152
  br i1 %1328, label %1329, label %1338

1329:                                             ; preds = %.thread916, %1325
  %.6 = phi ptr [ %23, %1325 ], [ null, %.thread916 ]
  %1330 = getelementptr inbounds i8, ptr %.0682, i64 704
  %1331 = load ptr, ptr %1330, align 8, !tbaa !152
  %1332 = getelementptr inbounds i8, ptr %67, i64 6280
  %1333 = load ptr, ptr %1332, align 8, !tbaa !72
  %1334 = getelementptr inbounds i8, ptr %67, i64 6288
  %1335 = load float, ptr %1334, align 8, !tbaa !109
  %1336 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef 0, float noundef 1.000000e+00)
  %1337 = load ptr, ptr %46, align 8, !tbaa !36
  call void @_ZN10ImDrawList7AddTextEPK6ImFontfRK6ImVec2jPKcS7_fPK6ImVec4(ptr noundef nonnull align 8 dereferenceable(168) %1331, ptr noundef %1333, float noundef %1335, ptr noundef nonnull align 4 dereferenceable(8) %24, i32 noundef %1336, ptr noundef %1055, ptr noundef %1337, float noundef 0.000000e+00, ptr noundef %.6)
  br label %1338

1338:                                             ; preds = %1329, %1325
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #14
  br label %1339

1339:                                             ; preds = %1338, %1316
  br i1 %58, label %1340, label %1344

1340:                                             ; preds = %1339
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #14
  %1341 = getelementptr inbounds i8, ptr %67, i64 6288
  %1342 = load float, ptr %1341, align 8, !tbaa !109
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef 0.000000e+00, float noundef %1342)
  %1343 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(8) %49)
  store <2 x float> %1343, ptr %48, align 8
  call void @_ZN5ImGui5DummyERK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %48)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #14
  call void @_ZN5ImGui13EndChildFrameEv()
  call void @_ZN5ImGui8EndGroupEv()
  br label %1344

1344:                                             ; preds = %1340, %1339
  br i1 %.not755, label %.thread917, label %1345

.thread917:                                       ; preds = %1344
  call void @_ZN5ImGui7PopFontEv()
  br label %1350

1345:                                             ; preds = %1344
  %1346 = getelementptr inbounds i8, ptr %67, i64 11544
  %1347 = load i8, ptr %1346, align 8, !tbaa !156, !range !34, !noundef !35
  %1348 = trunc nuw i8 %1347 to i1
  br i1 %1348, label %1349, label %1350

1349:                                             ; preds = %1345
  call void @_ZN5ImGui15LogRenderedTextEPK6ImVec2PKcS4_(ptr noundef nonnull %24, ptr noundef %1055, ptr noundef null)
  br label %1350

1350:                                             ; preds = %.thread917, %1345, %1349
  br i1 %94, label %1351, label %1360

1351:                                             ; preds = %1350
  %1352 = load float, ptr %93, align 8, !tbaa !157
  %1353 = getelementptr inbounds i8, ptr %67, i64 5516
  %1354 = load float, ptr %1353, align 4, !tbaa !39
  %1355 = fadd float %1352, %1354
  %1356 = load float, ptr %1062, align 4, !tbaa !144
  %1357 = load float, ptr %87, align 4, !tbaa !37
  %1358 = fadd float %1356, %1357
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %50, float noundef %1355, float noundef %1358)
  %1359 = load <2 x float>, ptr %50, align 8
  call void @_ZN5ImGui10RenderTextE6ImVec2PKcS2_b(<2 x float> %1359, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %1360

1360:                                             ; preds = %1351, %1350
  br i1 %.1691, label %1361, label %1362

1361:                                             ; preds = %1360
  call void @_ZN5ImGui14MarkItemEditedEj(i32 noundef %77)
  br label %1362

1362:                                             ; preds = %1361, %1360
  %1363 = and i32 %4, 32
  %.not785 = icmp eq i32 %1363, 0
  %1364 = trunc nuw i8 %.2695 to i1
  %.0 = select i1 %.not785, i1 %.1691, i1 %1364
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #14
  br label %1365

1365:                                             ; preds = %118, %1362, %106
  %.1 = phi i1 [ false, %106 ], [ %.0, %1362 ], [ false, %118 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #14
  br label %1366

1366:                                             ; preds = %7, %1365
  %.2 = phi i1 [ %.1, %1365 ], [ false, %7 ]
  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(3720), i32 noundef) local_unnamed_addr #9 align 2

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

declare void @_ZN5ImGui13EndChildFrameEv() local_unnamed_addr #5

declare noundef ptr @_ZNK6ImFont9FindGlyphEt(ptr noundef nonnull align 8 dereferenceable(112), i16 noundef zeroext) local_unnamed_addr #5

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

declare noundef i32 @_ZN11ImGuiWindow16GetIDNoKeepAliveEPKcS1_(ptr noundef nonnull align 8 dereferenceable(984), ptr noundef, ptr noundef) local_unnamed_addr #5

; 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

; 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

declare noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

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

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

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

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

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

; 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 uwtable
declare dso_local noundef zeroext i1 @_ZN5ImGui15IsKeyPressedMapEib(i32 noundef, i1 noundef zeroext) local_unnamed_addr #12

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

declare void @_ZN5ImGui16SetWindowScrollYEP11ImGuiWindowf(ptr noundef, float noundef) local_unnamed_addr #5

declare noundef float @_ZN5ImGui13GetScrollMaxYEv() local_unnamed_addr #5

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

declare noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

declare void @_ZN5ImGui16SetClipboardTextEPKc(ptr noundef) local_unnamed_addr #5

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

declare noundef ptr @_ZN5ImGui16GetClipboardTextEv() local_unnamed_addr #5

declare noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #5

declare noundef i32 @_Z18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

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

declare void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #5

declare noundef i32 @_Z27ImTextCountUtf8BytesFromStrPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #5

declare noundef i32 @_Z24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #5

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

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

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

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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 127}
!6 = !{!"_ZTS11ImGuiWindow", !7, i64 0, !10, i64 8, !10, i64 12, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !12, i64 76, !10, i64 80, !10, i64 84, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !13, i64 120, !13, i64 121, !13, i64 122, !13, i64 123, !13, i64 124, !13, i64 125, !13, i64 126, !13, i64 127, !13, i64 128, !13, i64 129, !13, i64 130, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !13, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !11, i64 188, !11, i64 196, !14, i64 208, !21, i64 512, !15, i64 528, !15, i64 544, !15, i64 560, !15, i64 576, !15, i64 592, !10, i64 608, !12, i64 612, !22, i64 616, !23, i64 664, !25, i64 680, !12, i64 696, !10, i64 700, !7, i64 704, !26, i64 712, !7, i64 880, !7, i64 888, !7, i64 896, !7, i64 904, !7, i64 912, !8, i64 920, !8, i64 928, !10, i64 960, !10, i64 964, !10, i64 968, !10, i64 972, !10, i64 976, !10, i64 980}
!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 = !{!"_ZTS19ImGuiWindowTempData", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !12, i64 40, !11, i64 44, !12, i64 52, !12, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !15, i64 76, !15, i64 92, !13, i64 108, !13, i64 109, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !13, i64 128, !11, i64 132, !16, i64 144, !7, i64 160, !10, i64 168, !10, i64 172, !10, i64 176, !12, i64 180, !12, i64 184, !17, i64 192, !18, i64 208, !18, i64 224, !19, i64 240, !8, i64 256, !20, i64 280, !20, i64 284, !20, i64 288, !7, i64 296}
!15 = !{!"_ZTS6ImRect", !11, i64 0, !11, i64 8}
!16 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 4, !7, i64 8}
!17 = !{!"_ZTS8ImVectorIiE", !10, i64 0, !10, i64 4, !7, i64 8}
!18 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 4, !7, i64 8}
!19 = !{!"_ZTS8ImVectorI14ImGuiGroupDataE", !10, i64 0, !10, i64 4, !7, i64 8}
!20 = !{!"_ZTS6ImVec1", !12, i64 0}
!21 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 4, !7, i64 8}
!22 = !{!"_ZTS16ImGuiMenuColumns", !10, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !8, i64 16, !8, i64 32}
!23 = !{!"_ZTS12ImGuiStorage", !24, i64 0}
!24 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !10, i64 0, !10, i64 4, !7, i64 8}
!25 = !{!"_ZTS8ImVectorI15ImGuiColumnsSetE", !10, i64 0, !10, i64 4, !7, i64 8}
!26 = !{!"_ZTS10ImDrawList", !27, i64 0, !28, i64 16, !29, i64 32, !10, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !7, i64 80, !7, i64 88, !30, i64 96, !31, i64 112, !32, i64 128, !10, i64 144, !10, i64 148, !33, i64 152}
!27 = !{!"_ZTS8ImVectorI9ImDrawCmdE", !10, i64 0, !10, i64 4, !7, i64 8}
!28 = !{!"_ZTS8ImVectorItE", !10, i64 0, !10, i64 4, !7, i64 8}
!29 = !{!"_ZTS8ImVectorI10ImDrawVertE", !10, i64 0, !10, i64 4, !7, i64 8}
!30 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 4, !7, i64 8}
!31 = !{!"_ZTS8ImVectorIPvE", !10, i64 0, !10, i64 4, !7, i64 8}
!32 = !{!"_ZTS8ImVectorI6ImVec2E", !10, i64 0, !10, i64 4, !7, i64 8}
!33 = !{!"_ZTS8ImVectorI13ImDrawChannelE", !10, i64 0, !10, i64 4, !7, i64 8}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!7, !7, i64 0}
!37 = !{!38, !12, i64 56}
!38 = !{!"_ZTS10ImGuiStyle", !12, i64 0, !11, i64 4, !12, i64 12, !12, i64 16, !11, i64 20, !11, i64 28, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !11, i64 52, !12, i64 60, !12, i64 64, !11, i64 68, !11, i64 76, !11, i64 84, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !11, i64 116, !11, i64 124, !11, i64 132, !12, i64 140, !13, i64 144, !13, i64 145, !12, i64 148, !8, i64 152}
!39 = !{!38, !12, i64 76}
!40 = !{!6, !10, i64 324}
!41 = !{!6, !10, i64 332}
!42 = !{!6, !12, i64 112}
!43 = !{!11, !12, i64 0}
!44 = !{!45, !10, i64 7424}
!45 = !{!"_ZTS12ImGuiContext", !13, i64 0, !13, i64 1, !13, i64 2, !46, i64 8, !38, i64 5440, !7, i64 6280, !12, i64 6288, !12, i64 6292, !47, i64 6296, !49, i64 6432, !10, i64 6440, !10, i64 6444, !10, i64 6448, !16, i64 6456, !16, i64 6472, !16, i64 6488, !16, i64 6504, !23, i64 6520, !10, i64 6536, !7, i64 6544, !7, i64 6552, !7, i64 6560, !10, i64 6568, !13, i64 6572, !10, i64 6576, !12, i64 6580, !12, i64 6584, !10, i64 6588, !10, i64 6592, !10, i64 6596, !12, i64 6600, !13, i64 6604, !13, i64 6605, !13, i64 6606, !13, i64 6607, !13, i64 6608, !10, i64 6612, !11, i64 6616, !7, i64 6624, !7, i64 6632, !50, i64 6640, !10, i64 6644, !12, i64 6648, !7, i64 6656, !51, i64 6664, !52, i64 6680, !53, i64 6696, !54, i64 6712, !54, i64 6728, !55, i64 6744, !13, i64 6856, !10, i64 6860, !7, i64 6864, !10, i64 6872, !10, i64 6876, !10, i64 6880, !10, i64 6884, !10, i64 6888, !10, i64 6892, !10, i64 6896, !10, i64 6900, !50, i64 6904, !15, i64 6908, !10, i64 6924, !7, i64 6928, !7, i64 6936, !7, i64 6944, !12, i64 6952, !12, i64 6956, !13, i64 6960, !10, i64 6964, !10, i64 6968, !13, i64 6972, !13, i64 6973, !13, i64 6974, !13, i64 6975, !13, i64 6976, !13, i64 6977, !13, i64 6978, !10, i64 6980, !15, i64 6984, !13, i64 7000, !13, i64 7001, !10, i64 7004, !56, i64 7008, !10, i64 7012, !10, i64 7016, !10, i64 7020, !57, i64 7024, !57, i64 7072, !57, i64 7120, !58, i64 7168, !59, i64 7216, !12, i64 7248, !26, i64 7256, !10, i64 7424, !13, i64 7428, !13, i64 7429, !10, i64 7432, !10, i64 7436, !10, i64 7440, !60, i64 7448, !15, i64 7512, !10, i64 7528, !10, i64 7532, !12, i64 7536, !10, i64 7540, !10, i64 7544, !10, i64 7548, !61, i64 7552, !8, i64 7568, !62, i64 7576, !67, i64 11296, !10, i64 11408, !10, i64 11412, !48, i64 11416, !13, i64 11432, !12, i64 11436, !12, i64 11440, !11, i64 11444, !10, i64 11452, !63, i64 11456, !11, i64 11472, !11, i64 11480, !13, i64 11488, !12, i64 11492, !69, i64 11496, !70, i64 11512, !71, i64 11528, !13, i64 11544, !7, i64 11552, !69, i64 11560, !10, i64 11576, !10, i64 11580, !8, i64 11584, !10, i64 12064, !12, i64 12068, !10, i64 12072, !10, i64 12076, !10, i64 12080, !8, i64 12084}
!46 = !{!"_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 136, !12, i64 140, !7, i64 144, !7, i64 152, !12, i64 160, !13, i64 164, !7, i64 168, !11, i64 176, !11, i64 184, !11, i64 192, !13, i64 200, !13, i64 201, !13, i64 202, !13, i64 203, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !11, i64 256, !8, i64 264, !12, i64 272, !12, i64 276, !13, i64 280, !13, i64 281, !13, i64 282, !13, i64 283, !8, i64 284, !8, i64 796, !8, i64 832, !13, i64 916, !13, i64 917, !13, i64 918, !13, i64 919, !13, i64 920, !13, i64 921, !13, i64 922, !12, i64 924, !10, i64 928, !10, i64 932, !10, i64 936, !10, i64 940, !10, i64 944, !11, i64 948, !11, i64 956, !8, i64 964, !8, i64 1008, !8, i64 1048, !8, i64 1053, !8, i64 1058, !8, i64 1063, !8, i64 1068, !8, i64 1088, !8, i64 1108, !8, i64 1148, !8, i64 1168, !8, i64 3216, !8, i64 5264, !8, i64 5348}
!47 = !{!"_ZTS20ImDrawListSharedData", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !48, i64 24, !8, i64 40}
!48 = !{!"_ZTS6ImVec4", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12}
!49 = !{!"double", !8, i64 0}
!50 = !{!"_ZTS16ImGuiInputSource", !8, i64 0}
!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 = !{!"_ZTS8ImVectorI13ImGuiPopupRefE", !10, i64 0, !10, i64 4, !7, i64 8}
!55 = !{!"_ZTS19ImGuiNextWindowData", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !11, i64 28, !11, i64 36, !11, i64 44, !11, i64 52, !13, i64 60, !15, i64 64, !7, i64 80, !7, i64 88, !12, i64 96, !11, i64 100}
!56 = !{!"_ZTS15ImGuiNavForward", !8, i64 0}
!57 = !{!"_ZTS18ImGuiNavMoveResult", !10, i64 0, !7, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !15, i64 28}
!58 = !{!"_ZTS10ImDrawData", !13, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !11, i64 28, !11, i64 36}
!59 = !{!"_ZTS17ImDrawDataBuilder", !8, i64 0}
!60 = !{!"_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}
!61 = !{!"_ZTS8ImVectorIhE", !10, i64 0, !10, i64 4, !7, i64 8}
!62 = !{!"_ZTS19ImGuiInputTextState", !10, i64 0, !28, i64 8, !63, i64 24, !63, i64 40, !10, i64 56, !10, i64 60, !10, i64 64, !12, i64 68, !64, i64 72, !12, i64 3692, !13, i64 3696, !13, i64 3697, !10, i64 3700, !7, i64 3704, !7, i64 3712}
!63 = !{!"_ZTS8ImVectorIcE", !10, i64 0, !10, i64 4, !7, i64 8}
!64 = !{!"_ZTSN8ImGuiStb17STB_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, !65, i64 24}
!65 = !{!"_ZTSN8ImGuiStb12StbUndoStateE", !8, i64 0, !8, i64 1584, !66, i64 3582, !66, i64 3584, !10, i64 3588, !10, i64 3592}
!66 = !{!"short", !8, i64 0}
!67 = !{!"_ZTS6ImFont", !12, i64 0, !12, i64 4, !11, i64 8, !68, i64 16, !18, i64 32, !28, i64 48, !7, i64 64, !12, i64 72, !66, i64 76, !66, i64 78, !7, i64 80, !7, i64 88, !12, i64 96, !12, i64 100, !13, i64 104, !10, i64 108}
!68 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !10, i64 0, !10, i64 4, !7, i64 8}
!69 = !{!"_ZTS15ImGuiTextBuffer", !63, i64 0}
!70 = !{!"_ZTS8ImVectorI20ImGuiSettingsHandlerE", !10, i64 0, !10, i64 4, !7, i64 8}
!71 = !{!"_ZTS8ImVectorI19ImGuiWindowSettingsE", !10, i64 0, !10, i64 4, !7, i64 8}
!72 = !{!45, !7, i64 6280}
!73 = !{!12, !12, i64 0}
!74 = !{!67, !7, i64 88}
!75 = !{!67, !7, i64 64}
!76 = !{!77, !12, i64 4}
!77 = !{!"_ZTS11ImFontGlyph", !66, 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}
!78 = !{!67, !12, i64 72}
!79 = !{!6, !10, i64 960}
!80 = !{!6, !10, i64 968}
!81 = !{!13, !13, i64 0}
!82 = !{!45, !10, i64 6588}
!83 = !{!62, !10, i64 0}
!84 = !{!45, !10, i64 6592}
!85 = !{!45, !10, i64 6888}
!86 = !{!45, !10, i64 6876}
!87 = !{!45, !50, i64 6904}
!88 = !{!62, !10, i64 60}
!89 = !{!62, !7, i64 32}
!90 = !{!62, !7, i64 16}
!91 = !{!62, !10, i64 56}
!92 = !{!62, !12, i64 68}
!93 = !{!62, !8, i64 84}
!94 = !{!46, !13, i64 280}
!95 = !{!45, !10, i64 6612}
!96 = !{!45, !13, i64 6604}
!97 = !{!62, !10, i64 8}
!98 = !{!62, !10, i64 64}
!99 = !{!62, !10, i64 3700}
!100 = !{!62, !7, i64 3704}
!101 = !{!62, !7, i64 3712}
!102 = !{!45, !13, i64 6605}
!103 = !{!45, !10, i64 12080}
!104 = !{!46, !12, i64 256}
!105 = !{!15, !12, i64 0}
!106 = !{!38, !12, i64 52}
!107 = !{!46, !12, i64 260}
!108 = !{!6, !12, i64 212}
!109 = !{!45, !12, i64 6288}
!110 = !{!46, !13, i64 201}
!111 = !{!62, !13, i64 3697}
!112 = !{!46, !12, i64 948}
!113 = !{!46, !12, i64 952}
!114 = !{!62, !13, i64 3696}
!115 = !{!66, !66, i64 0}
!116 = !{!46, !13, i64 282}
!117 = !{!46, !13, i64 283}
!118 = !{!10, !10, i64 0}
!119 = !{!46, !13, i64 281}
!120 = !{!6, !12, i64 92}
!121 = !{!46, !7, i64 216}
!122 = !{!62, !10, i64 76}
!123 = !{!62, !10, i64 80}
!124 = !{!62, !7, i64 48}
!125 = !{!62, !10, i64 40}
!126 = !{!8, !8, i64 0}
!127 = distinct !{!127, !128}
!128 = !{!"llvm.loop.mustprogress"}
!129 = !{!62, !10, i64 24}
!130 = !{!131, !10, i64 0}
!131 = !{!"_ZTS26ImGuiInputTextCallbackData", !10, i64 0, !10, i64 4, !7, i64 8, !66, 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}
!132 = !{!131, !10, i64 4}
!133 = !{!131, !7, i64 8}
!134 = !{!131, !10, i64 20}
!135 = !{!131, !7, i64 24}
!136 = !{!131, !10, i64 32}
!137 = !{!131, !10, i64 36}
!138 = !{!62, !10, i64 72}
!139 = !{!131, !10, i64 44}
!140 = !{!131, !10, i64 48}
!141 = !{!131, !10, i64 52}
!142 = !{!131, !13, i64 40}
!143 = !{!38, !12, i64 60}
!144 = !{!15, !12, i64 4}
!145 = !{!11, !12, i64 4}
!146 = !{!46, !12, i64 16}
!147 = !{!62, !12, i64 3692}
!148 = distinct !{!148, !128}
!149 = !{!48, !12, i64 12}
!150 = !{!48, !12, i64 4}
!151 = distinct !{!151, !128}
!152 = !{!6, !7, i64 704}
!153 = distinct !{!153, !128}
!154 = !{!45, !13, i64 210}
!155 = !{!45, !12, i64 11268}
!156 = !{!45, !13, i64 11544}
!157 = !{!15, !12, i64 8}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass