; LLVM IR from DarrenSweeney/3D-Physics-Engine :: Physics Engine/Imgui (imgui)

; 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.ImGuiAabb = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImGuiTextEditCallbackData = type { i32, i32, ptr, i16, i32, ptr, i64, i8, i32, i32, i32 }
%struct.ImGuiWindow = type { ptr, i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, i8, i8, i8, i8, i8, i32, i8, i32, i32, i32, %struct.ImGuiDrawContext, %class.ImVector.11, %class.ImVector.12, %struct.ImGuiAabb, i32, float, %struct.ImGuiStorage, float, ptr, ptr, i32, i32, i32, i32, i32, i32 }
%struct.ImGuiDrawContext = type { %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, i32, i32, %struct.ImGuiAabb, i8, %class.ImVector.1, %class.ImVector.9, %class.ImVector.10, %class.ImVector.10, i32, ptr, float, float, i32, i32, %struct.ImVec2, float, float, i8, i32, %class.ImVector.10 }
%class.ImVector.1 = type { i64, i64, ptr }
%class.ImVector.9 = type { i64, i64, ptr }
%class.ImVector.10 = type { i64, i64, ptr }
%class.ImVector.11 = type { i64, i64, ptr }
%class.ImVector.12 = type { i64, i64, ptr }
%struct.ImGuiStorage = type { %class.ImVector.6 }
%class.ImVector.6 = type { i64, i64, ptr }
%struct.ImGuiState = type { i8, [7 x i8], %struct.ImGuiIO, %struct.ImGuiStyle, ptr, float, %struct.ImVec2, float, i32, i32, %class.ImVector.1, ptr, %class.ImVector.1, ptr, ptr, ptr, i32, i32, i32, i8, i8, ptr, float, %class.ImVector.2, %class.ImVector.3, %class.ImVector.4, %class.ImVector, %struct.ImVec2, i32, %struct.ImVec2, i32, i8, i32, i8, i8, i32, %class.ImVector.5, %class.ImVector.1, %struct.ImGuiTextEditState, i32, %struct.ImGuiStorage, i32, [1024 x i8], ptr, i8, ptr, ptr, i32, i32, [120 x float], i32, float }
%struct.ImGuiIO = type <{ %struct.ImVec2, float, float, ptr, ptr, float, float, [17 x i32], [4 x i8], ptr, ptr, float, i8, [3 x i8], %struct.ImVec2, %struct.ImVec2, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], [3 x i8], float, i8, i8, i8, [512 x i8], i8, [17 x i16], i8, i8, float, %struct.ImVec2, %struct.ImVec2, [5 x i8], [3 x i8], [5 x %struct.ImVec2], [5 x float], [5 x i8], [5 x i8], [2 x i8], [5 x float], [512 x float], [4 x i8] }>
%struct.ImGuiStyle = type { float, %struct.ImVec2, %struct.ImVec2, float, float, %struct.ImVec2, float, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, float, float, float, [39 x %struct.ImVec4] }
%struct.ImVec4 = type { float, float, float, float }
%class.ImVector.2 = type { i64, i64, ptr }
%class.ImVector.3 = type { i64, i64, ptr }
%class.ImVector.4 = type { i64, i64, ptr }
%class.ImVector = type { i64, i64, ptr }
%class.ImVector.5 = type { i64, i64, ptr }
%struct.ImGuiTextEditState = type <{ i32, [1024 x i16], [3073 x i8], [3 x i8], i64, float, float, %struct.STB_TexteditState, float, %struct.ImVec2, i8, [7 x i8], ptr, float, [4 x i8] }>
%struct.STB_TexteditState = type { i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, float, %struct.StbUndoState }
%struct.StbUndoState = type { [99 x %struct.StbUndoRecord], [999 x i16], i16, i16, i16, i16 }
%struct.StbUndoRecord = type { i32, i16, i16, i16 }

@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZL6GImGui = external hidden global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [96 x i8], align 1
@_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8 = external hidden global [3073 x i8], align 16
@.str.103 = external hidden unnamed_addr constant [19 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv = external hidden unnamed_addr constant [104 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [29 x i8], align 1

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZL9ImStrlenWPKt(ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZL14ImFormatStringPcmPKcz(ptr noundef, i64 noundef, ptr noundef, ...) #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %0, ptr noundef %1, i64 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5) #4 {
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i64, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImGuiAabb, align 4
  %23 = alloca %struct.ImVec2, align 4
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca %struct.ImVec2, align 4
  %26 = alloca %struct.ImVec2, align 4
  %27 = alloca %struct.ImGuiAabb, align 4
  %28 = alloca %struct.ImVec2, align 4
  %29 = alloca %struct.ImVec2, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i8, align 1
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  %37 = alloca i8, align 1
  %38 = alloca i8, align 1
  %39 = alloca i64, align 8
  %40 = alloca %struct.ImVec2, align 4
  %41 = alloca i8, align 1
  %42 = alloca i8, align 1
  %43 = alloca i8, align 1
  %44 = alloca float, align 4
  %45 = alloca float, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i8, align 1
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca i64, align 8
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca %struct.ImGuiTextEditCallbackData, align 8
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca %struct.ImVec2, align 4
  %65 = alloca %struct.ImVec2, align 4
  %66 = alloca %struct.ImVec2, align 4
  %67 = alloca %struct.ImVec2, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca %struct.ImVec2, align 4
  %71 = alloca %struct.ImVec2, align 4
  %72 = alloca %struct.ImVec2, align 4
  %73 = alloca %struct.ImVec2, align 4
  %74 = alloca %struct.ImVec2, align 4
  %75 = alloca %struct.ImVec2, align 4
  %76 = alloca %struct.ImVec2, align 4
  %77 = alloca %struct.ImVec2, align 4
  %78 = alloca %struct.ImVec2, align 4
  %79 = alloca %struct.ImVec2, align 4
  %80 = alloca %struct.ImVec2, align 4
  %81 = alloca %struct.ImVec2, align 4
  %82 = alloca %struct.ImVec2, align 4
  %83 = alloca %struct.ImVec2, align 4
  %84 = alloca %struct.ImVec2, align 4
  %85 = alloca %struct.ImVec2, align 4
  %86 = alloca %struct.ImVec2, align 4
  %87 = alloca %struct.ImVec2, align 4
  %88 = alloca %struct.ImVec2, align 4
  %89 = alloca %struct.ImVec2, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store i64 %2, ptr %10, align 8, !tbaa !9
  store i32 %3, ptr %11, align 4, !tbaa !11
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #10
  %90 = load ptr, ptr @_ZL6GImGui, align 8, !tbaa !5
  store ptr %90, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %91 = call noundef ptr @_ZL16GetCurrentWindowv()
  store ptr %91, ptr %15, align 8, !tbaa !5
  %92 = load ptr, ptr %15, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.ImGuiWindow, ptr %92, i32 0, i32 14
  %94 = load i8, ptr %93, align 4, !tbaa !13, !range !27, !noundef !28
  %95 = trunc i8 %94 to i1
  br i1 %95, label %96, label %97

96:                                               ; preds = %6
  store i1 false, ptr %7, align 1
  store i32 1, ptr %16, align 4
  br label %1189

97:                                               ; preds = %6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %98 = load ptr, ptr %14, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.ImGuiState, ptr %98, i32 0, i32 2
  store ptr %99, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %100 = load ptr, ptr %14, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.ImGuiState, ptr %100, i32 0, i32 3
  store ptr %101, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %102 = load ptr, ptr %15, align 8, !tbaa !5
  %103 = load ptr, ptr %8, align 8, !tbaa !5
  %104 = call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %102, ptr noundef %103)
  store i32 %104, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  %105 = call noundef float @_ZN5ImGui13CalcItemWidthEv()
  store float %105, ptr %20, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %106 = load ptr, ptr %8, align 8, !tbaa !5
  %107 = call <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef %106, ptr noundef null, i1 noundef zeroext true, float noundef -1.000000e+00)
  store <2 x float> %107, ptr %21, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #10
  %108 = load ptr, ptr %15, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.ImGuiWindow, ptr %108, i32 0, i32 20
  %110 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %109, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %111 = load ptr, ptr %15, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.ImGuiWindow, ptr %111, i32 0, i32 20
  %113 = getelementptr inbounds %struct.ImGuiDrawContext, ptr %112, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  %114 = load float, ptr %20, align 4, !tbaa !29
  %115 = getelementptr inbounds %struct.ImVec2, ptr %21, i32 0, i32 1
  %116 = load float, ptr %115, align 4, !tbaa !30
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %25, float noundef %114, float noundef %116)
  %117 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %113, ptr noundef nonnull align 4 dereferenceable(8) %25)
  store <2 x float> %117, ptr %24, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %118 = load ptr, ptr %18, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.ImGuiStyle, ptr %118, i32 0, i32 5
  %120 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %119, float noundef 2.000000e+00)
  store <2 x float> %120, ptr %26, align 4
  %121 = 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> %121, ptr %23, align 4
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %22, ptr noundef nonnull align 4 dereferenceable(8) %110, ptr noundef nonnull align 4 dereferenceable(8) %23)
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #10
  %122 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %123 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %124 = getelementptr inbounds %struct.ImVec2, ptr %21, i32 0, i32 0
  %125 = load float, ptr %124, align 4, !tbaa !31
  %126 = fcmp ogt float %125, 0.000000e+00
  br i1 %126, label %127, label %135

127:                                              ; preds = %97
  %128 = load ptr, ptr %18, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.ImGuiStyle, ptr %128, i32 0, i32 8
  %130 = getelementptr inbounds %struct.ImVec2, ptr %129, i32 0, i32 0
  %131 = load float, ptr %130, align 4, !tbaa !32
  %132 = getelementptr inbounds %struct.ImVec2, ptr %21, i32 0, i32 0
  %133 = load float, ptr %132, align 4, !tbaa !31
  %134 = fadd float %131, %133
  br label %136

135:                                              ; preds = %97
  br label %136

136:                                              ; preds = %135, %127
  %137 = phi float [ %134, %127 ], [ 0.000000e+00, %135 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %29, float noundef %137, float noundef 0.000000e+00)
  %138 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %123, ptr noundef nonnull align 4 dereferenceable(8) %29)
  store <2 x float> %138, ptr %28, align 4
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %27, ptr noundef nonnull align 4 dereferenceable(8) %122, ptr noundef nonnull align 4 dereferenceable(8) %28)
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @_ZL8ItemSizeRK9ImGuiAabbP6ImVec2(ptr noundef nonnull align 4 dereferenceable(16) %27, ptr noundef null)
  %139 = call noundef zeroext i1 @_ZL7ItemAddRK9ImGuiAabbPKj(ptr noundef nonnull align 4 dereferenceable(16) %22, ptr noundef %19)
  br i1 %139, label %141, label %140

140:                                              ; preds = %136
  store i1 false, ptr %7, align 1
  store i32 1, ptr %16, align 4
  br label %1188

141:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %142 = load ptr, ptr %14, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.ImGuiState, ptr %142, i32 0, i32 38
  store ptr %143, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #10
  %144 = load ptr, ptr %17, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.ImGuiIO, ptr %144, i32 0, i32 28
  %146 = load i8, ptr %145, align 1, !tbaa !34, !range !27, !noundef !28
  %147 = trunc i8 %146 to i1
  %148 = zext i1 %147 to i8
  store i8 %148, ptr %31, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #10
  %149 = load ptr, ptr %17, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.ImGuiIO, ptr %149, i32 0, i32 29
  %151 = load i8, ptr %150, align 2, !tbaa !37, !range !27, !noundef !28
  %152 = trunc i8 %151 to i1
  %153 = zext i1 %152 to i8
  store i8 %153, ptr %32, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #10
  %154 = load ptr, ptr %15, align 8, !tbaa !5
  %155 = load ptr, ptr %14, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.ImGuiState, ptr %155, i32 0, i32 17
  %157 = load i32, ptr %156, align 4, !tbaa !38
  %158 = load i32, ptr %19, align 4, !tbaa !11
  %159 = icmp eq i32 %157, %158
  %160 = load i32, ptr %11, align 4, !tbaa !11
  %161 = and i32 %160, 64
  %162 = icmp eq i32 %161, 0
  %163 = call noundef zeroext i1 @_ZN11ImGuiWindow17FocusItemRegisterEbb(ptr noundef nonnull align 8 dereferenceable(480) %154, i1 noundef zeroext %159, i1 noundef zeroext %162)
  %164 = zext i1 %163 to i8
  store i8 %164, ptr %33, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #10
  %165 = load i8, ptr %33, align 1, !tbaa !36, !range !27, !noundef !28
  %166 = trunc i8 %165 to i1
  br i1 %166, label %167, label %175

167:                                              ; preds = %141
  %168 = load ptr, ptr %15, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.ImGuiWindow, ptr %168, i32 0, i32 30
  %170 = load i32, ptr %169, align 8, !tbaa !49
  %171 = load ptr, ptr %15, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.ImGuiWindow, ptr %171, i32 0, i32 32
  %173 = load i32, ptr %172, align 8, !tbaa !50
  %174 = icmp eq i32 %170, %173
  br label %175

175:                                              ; preds = %167, %141
  %176 = phi i1 [ false, %141 ], [ %174, %167 ]
  %177 = zext i1 %176 to i8
  store i8 %177, ptr %34, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #10
  %178 = load i8, ptr %33, align 1, !tbaa !36, !range !27, !noundef !28
  %179 = trunc i8 %178 to i1
  br i1 %179, label %180, label %184

180:                                              ; preds = %175
  %181 = load i8, ptr %34, align 1, !tbaa !36, !range !27, !noundef !28
  %182 = trunc i8 %181 to i1
  %183 = xor i1 %182, true
  br label %184

184:                                              ; preds = %180, %175
  %185 = phi i1 [ false, %175 ], [ %183, %180 ]
  %186 = zext i1 %185 to i8
  store i8 %186, ptr %35, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #10
  %187 = call noundef zeroext i1 @_ZL9IsHoveredRK9ImGuiAabbRKj(ptr noundef nonnull align 4 dereferenceable(16) %22, ptr noundef nonnull align 4 dereferenceable(4) %19)
  %188 = zext i1 %187 to i8
  store i8 %188, ptr %36, align 1, !tbaa !36
  %189 = load i8, ptr %36, align 1, !tbaa !36, !range !27, !noundef !28
  %190 = trunc i8 %189 to i1
  br i1 %190, label %191, label %195

191:                                              ; preds = %184
  %192 = load i32, ptr %19, align 4, !tbaa !11
  %193 = load ptr, ptr %14, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.ImGuiState, ptr %193, i32 0, i32 16
  store i32 %192, ptr %194, align 8, !tbaa !51
  br label %195

195:                                              ; preds = %191, %184
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #10
  %196 = load i8, ptr %36, align 1, !tbaa !36, !range !27, !noundef !28
  %197 = trunc i8 %196 to i1
  br i1 %197, label %198, label %204

198:                                              ; preds = %195
  %199 = load ptr, ptr %17, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.ImGuiIO, ptr %199, i32 0, i32 38
  %201 = getelementptr inbounds [5 x i8], ptr %200, i64 0, i64 0
  %202 = load i8, ptr %201, align 8, !tbaa !36, !range !27, !noundef !28
  %203 = trunc i8 %202 to i1
  br label %204

204:                                              ; preds = %198, %195
  %205 = phi i1 [ false, %195 ], [ %203, %198 ]
  %206 = zext i1 %205 to i8
  store i8 %206, ptr %37, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #10
  %207 = load ptr, ptr %14, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.ImGuiState, ptr %207, i32 0, i32 17
  %209 = load i32, ptr %208, align 4, !tbaa !38
  %210 = load i32, ptr %19, align 4, !tbaa !11
  %211 = icmp ne i32 %209, %210
  br i1 %211, label %212, label %216

212:                                              ; preds = %204
  %213 = load i32, ptr %11, align 4, !tbaa !11
  %214 = and i32 %213, 16
  %215 = icmp ne i32 %214, 0
  br label %216

216:                                              ; preds = %212, %204
  %217 = phi i1 [ false, %204 ], [ %215, %212 ]
  %218 = zext i1 %217 to i8
  store i8 %218, ptr %38, align 1, !tbaa !36
  %219 = load i8, ptr %33, align 1, !tbaa !36, !range !27, !noundef !28
  %220 = trunc i8 %219 to i1
  br i1 %220, label %224, label %221

221:                                              ; preds = %216
  %222 = load i8, ptr %37, align 1, !tbaa !36, !range !27, !noundef !28
  %223 = trunc i8 %222 to i1
  br i1 %223, label %224, label %309

224:                                              ; preds = %221, %216
  %225 = load ptr, ptr %14, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.ImGuiState, ptr %225, i32 0, i32 17
  %227 = load i32, ptr %226, align 4, !tbaa !38
  %228 = load i32, ptr %19, align 4, !tbaa !11
  %229 = icmp ne i32 %227, %228
  br i1 %229, label %230, label %306

230:                                              ; preds = %224
  %231 = load ptr, ptr %30, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %231, i32 0, i32 2
  %233 = getelementptr inbounds [3073 x i8], ptr %232, i64 0, i64 0
  %234 = load ptr, ptr %9, align 8, !tbaa !5
  %235 = call noundef i64 (ptr, i64, ptr, ...) @_ZL14ImFormatStringPcmPKcz(ptr noundef %233, i64 noundef 3073, ptr noundef @.str.7, ptr noundef %234)
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %236 = load ptr, ptr %30, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %236, i32 0, i32 1
  %238 = getelementptr inbounds [1024 x i16], ptr %237, i64 0, i64 0
  %239 = load ptr, ptr %9, align 8, !tbaa !5
  %240 = call noundef i64 @_ZL17ImTextStrFromUtf8PtmPKcS1_(ptr noundef %238, i64 noundef 1024, ptr noundef %239, ptr noundef null)
  store i64 %240, ptr %39, align 8, !tbaa !9
  %241 = load float, ptr %20, align 4, !tbaa !29
  %242 = load ptr, ptr %30, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %242, i32 0, i32 5
  store float %241, ptr %243, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef -1.000000e+00, float noundef -1.000000e+00)
  %244 = load ptr, ptr %30, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %244, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %245, ptr align 4 %40, i64 8, i1 false), !tbaa.struct !53
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  %246 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396) %246)
  %247 = load ptr, ptr %30, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %247, i32 0, i32 0
  %249 = load i32, ptr %248, align 8, !tbaa !54
  %250 = load i32, ptr %19, align 4, !tbaa !11
  %251 = icmp ne i32 %249, %250
  br i1 %251, label %252, label %264

252:                                              ; preds = %230
  %253 = load i32, ptr %19, align 4, !tbaa !11
  %254 = load ptr, ptr %30, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %254, i32 0, i32 0
  store i32 %253, ptr %255, align 8, !tbaa !54
  %256 = load ptr, ptr %30, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %256, i32 0, i32 6
  store float 0.000000e+00, ptr %257, align 4, !tbaa !55
  %258 = load ptr, ptr %30, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %258, i32 0, i32 7
  call void @_ZL29stb_textedit_initialize_stateP17STB_TexteditStatei(ptr noundef %259, i32 noundef 1)
  %260 = load i8, ptr %34, align 1, !tbaa !36, !range !27, !noundef !28
  %261 = trunc i8 %260 to i1
  br i1 %261, label %262, label %263

262:                                              ; preds = %252
  store i8 1, ptr %38, align 1, !tbaa !36
  br label %263

263:                                              ; preds = %262, %252
  br label %295

264:                                              ; preds = %230
  %265 = load ptr, ptr %30, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %265, i32 0, i32 7
  %267 = getelementptr inbounds %struct.STB_TexteditState, ptr %266, i32 0, i32 0
  %268 = load i32, ptr %267, align 8, !tbaa !56
  %269 = load i64, ptr %39, align 8, !tbaa !9
  %270 = trunc i64 %269 to i32
  %271 = call noundef i32 @_ZL5ImMinii(i32 noundef %268, i32 noundef %270)
  %272 = load ptr, ptr %30, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %272, i32 0, i32 7
  %274 = getelementptr inbounds %struct.STB_TexteditState, ptr %273, i32 0, i32 0
  store i32 %271, ptr %274, align 8, !tbaa !56
  %275 = load ptr, ptr %30, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %275, i32 0, i32 7
  %277 = getelementptr inbounds %struct.STB_TexteditState, ptr %276, i32 0, i32 1
  %278 = load i32, ptr %277, align 4, !tbaa !57
  %279 = load i64, ptr %39, align 8, !tbaa !9
  %280 = trunc i64 %279 to i32
  %281 = call noundef i32 @_ZL5ImMinii(i32 noundef %278, i32 noundef %280)
  %282 = load ptr, ptr %30, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %282, i32 0, i32 7
  %284 = getelementptr inbounds %struct.STB_TexteditState, ptr %283, i32 0, i32 1
  store i32 %281, ptr %284, align 4, !tbaa !57
  %285 = load ptr, ptr %30, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %285, i32 0, i32 7
  %287 = getelementptr inbounds %struct.STB_TexteditState, ptr %286, i32 0, i32 2
  %288 = load i32, ptr %287, align 8, !tbaa !58
  %289 = load i64, ptr %39, align 8, !tbaa !9
  %290 = trunc i64 %289 to i32
  %291 = call noundef i32 @_ZL5ImMinii(i32 noundef %288, i32 noundef %290)
  %292 = load ptr, ptr %30, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %292, i32 0, i32 7
  %294 = getelementptr inbounds %struct.STB_TexteditState, ptr %293, i32 0, i32 2
  store i32 %291, ptr %294, align 8, !tbaa !58
  br label %295

295:                                              ; preds = %264, %263
  %296 = load i8, ptr %35, align 1, !tbaa !36, !range !27, !noundef !28
  %297 = trunc i8 %296 to i1
  br i1 %297, label %304, label %298

298:                                              ; preds = %295
  %299 = load i8, ptr %37, align 1, !tbaa !36, !range !27, !noundef !28
  %300 = trunc i8 %299 to i1
  br i1 %300, label %301, label %305

301:                                              ; preds = %298
  %302 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %303 = trunc i8 %302 to i1
  br i1 %303, label %304, label %305

304:                                              ; preds = %301, %295
  store i8 1, ptr %38, align 1, !tbaa !36
  br label %305

305:                                              ; preds = %304, %301, %298
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %306

306:                                              ; preds = %305, %224
  %307 = load i32, ptr %19, align 4, !tbaa !11
  call void @_ZL11SetActiveIdj(i32 noundef %307)
  %308 = load ptr, ptr %15, align 8, !tbaa !5
  call void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef %308)
  br label %324

309:                                              ; preds = %221
  %310 = load ptr, ptr %17, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.ImGuiIO, ptr %310, i32 0, i32 38
  %312 = getelementptr inbounds [5 x i8], ptr %311, i64 0, i64 0
  %313 = load i8, ptr %312, align 8, !tbaa !36, !range !27, !noundef !28
  %314 = trunc i8 %313 to i1
  br i1 %314, label %315, label %323

315:                                              ; preds = %309
  %316 = load ptr, ptr %14, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.ImGuiState, ptr %316, i32 0, i32 17
  %318 = load i32, ptr %317, align 4, !tbaa !38
  %319 = load i32, ptr %19, align 4, !tbaa !11
  %320 = icmp eq i32 %318, %319
  br i1 %320, label %321, label %322

321:                                              ; preds = %315
  call void @_ZL11SetActiveIdj(i32 noundef 0)
  br label %322

322:                                              ; preds = %321, %315
  br label %323

323:                                              ; preds = %322, %309
  br label %324

324:                                              ; preds = %323, %306
  %325 = load ptr, ptr %14, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.ImGuiState, ptr %325, i32 0, i32 17
  %327 = load i32, ptr %326, align 4, !tbaa !38
  %328 = load i32, ptr %19, align 4, !tbaa !11
  %329 = icmp eq i32 %327, %328
  br i1 %329, label %330, label %340

330:                                              ; preds = %324
  %331 = load ptr, ptr %17, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ImGuiIO, ptr %331, i32 0, i32 24
  %333 = getelementptr inbounds [5 x i8], ptr %332, i64 0, i64 0
  %334 = load i8, ptr %333, align 8, !tbaa !36, !range !27, !noundef !28
  %335 = trunc i8 %334 to i1
  %336 = xor i1 %335, true
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.ImGuiState, ptr %337, i32 0, i32 20
  %339 = zext i1 %336 to i8
  store i8 %339, ptr %338, align 1, !tbaa !59
  br label %340

340:                                              ; preds = %330, %324
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #10
  store i8 0, ptr %41, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #10
  store i8 0, ptr %42, align 1, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #10
  store i8 0, ptr %43, align 1, !tbaa !36
  %341 = load ptr, ptr %14, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.ImGuiState, ptr %341, i32 0, i32 17
  %343 = load i32, ptr %342, align 4, !tbaa !38
  %344 = load i32, ptr %19, align 4, !tbaa !11
  %345 = icmp eq i32 %343, %344
  br i1 %345, label %346, label %1011

346:                                              ; preds = %340
  %347 = load i64, ptr %10, align 8, !tbaa !9
  %348 = icmp ult i64 %347, 1024
  br i1 %348, label %349, label %351

349:                                              ; preds = %346
  %350 = load i64, ptr %10, align 8, !tbaa !9
  br label %352

351:                                              ; preds = %346
  br label %352

352:                                              ; preds = %351, %349
  %353 = phi i64 [ %350, %349 ], [ 1024, %351 ]
  %354 = load ptr, ptr %30, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %354, i32 0, i32 4
  store i64 %353, ptr %355, align 8, !tbaa !60
  %356 = load ptr, ptr %15, align 8, !tbaa !5
  %357 = call noundef ptr @_ZNK11ImGuiWindow4FontEv(ptr noundef nonnull align 8 dereferenceable(480) %356)
  %358 = load ptr, ptr %30, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %358, i32 0, i32 12
  store ptr %357, ptr %359, align 8, !tbaa !61
  %360 = load ptr, ptr %15, align 8, !tbaa !5
  %361 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %360)
  %362 = load ptr, ptr %30, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %362, i32 0, i32 13
  store float %361, ptr %363, align 8, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  %364 = load ptr, ptr %14, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.ImGuiState, ptr %364, i32 0, i32 2
  %366 = getelementptr inbounds %struct.ImGuiIO, ptr %365, i32 0, i32 23
  %367 = getelementptr inbounds %struct.ImVec2, ptr %366, i32 0, i32 0
  %368 = load float, ptr %367, align 8, !tbaa !63
  %369 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 0
  %370 = getelementptr inbounds %struct.ImVec2, ptr %369, i32 0, i32 0
  %371 = load float, ptr %370, align 4, !tbaa !64
  %372 = fsub float %368, %371
  %373 = load ptr, ptr %18, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.ImGuiStyle, ptr %373, i32 0, i32 5
  %375 = getelementptr inbounds %struct.ImVec2, ptr %374, i32 0, i32 0
  %376 = load float, ptr %375, align 4, !tbaa !65
  %377 = fsub float %372, %376
  store float %377, ptr %44, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  %378 = load ptr, ptr %15, align 8, !tbaa !5
  %379 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %378)
  %380 = fmul float %379, 5.000000e-01
  store float %380, ptr %45, align 4, !tbaa !29
  %381 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState18UpdateScrollOffsetEv(ptr noundef nonnull align 8 dereferenceable(8396) %381)
  %382 = load i8, ptr %38, align 1, !tbaa !36, !range !27, !noundef !28
  %383 = trunc i8 %382 to i1
  br i1 %383, label %393, label %384

384:                                              ; preds = %352
  %385 = load i8, ptr %36, align 1, !tbaa !36, !range !27, !noundef !28
  %386 = trunc i8 %385 to i1
  br i1 %386, label %387, label %397

387:                                              ; preds = %384
  %388 = load ptr, ptr %17, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.ImGuiIO, ptr %388, i32 0, i32 42
  %390 = getelementptr inbounds [5 x i8], ptr %389, i64 0, i64 0
  %391 = load i8, ptr %390, align 4, !tbaa !36, !range !27, !noundef !28
  %392 = trunc i8 %391 to i1
  br i1 %392, label %393, label %397

393:                                              ; preds = %387, %352
  %394 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(8396) %394)
  %395 = load ptr, ptr %30, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %395, i32 0, i32 10
  store i8 1, ptr %396, align 8, !tbaa !66
  br label %443

397:                                              ; preds = %387, %384
  %398 = load ptr, ptr %17, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.ImGuiIO, ptr %398, i32 0, i32 38
  %400 = getelementptr inbounds [5 x i8], ptr %399, i64 0, i64 0
  %401 = load i8, ptr %400, align 8, !tbaa !36, !range !27, !noundef !28
  %402 = trunc i8 %401 to i1
  br i1 %402, label %403, label %419

403:                                              ; preds = %397
  %404 = load ptr, ptr %30, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %404, i32 0, i32 10
  %406 = load i8, ptr %405, align 8, !tbaa !66, !range !27, !noundef !28
  %407 = trunc i8 %406 to i1
  br i1 %407, label %419, label %408

408:                                              ; preds = %403
  %409 = load ptr, ptr %30, align 8, !tbaa !5
  %410 = load ptr, ptr %30, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %410, i32 0, i32 7
  %412 = load float, ptr %44, align 4, !tbaa !29
  %413 = load ptr, ptr %30, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %413, i32 0, i32 6
  %415 = load float, ptr %414, align 4, !tbaa !55
  %416 = fadd float %412, %415
  %417 = load float, ptr %45, align 4, !tbaa !29
  call void @_ZL18stb_textedit_clickP18ImGuiTextEditStateP17STB_TexteditStateff(ptr noundef %409, ptr noundef %411, float noundef %416, float noundef %417)
  %418 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396) %418)
  br label %442

419:                                              ; preds = %403, %397
  %420 = load ptr, ptr %17, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.ImGuiIO, ptr %420, i32 0, i32 24
  %422 = getelementptr inbounds [5 x i8], ptr %421, i64 0, i64 0
  %423 = load i8, ptr %422, align 8, !tbaa !36, !range !27, !noundef !28
  %424 = trunc i8 %423 to i1
  br i1 %424, label %425, label %441

425:                                              ; preds = %419
  %426 = load ptr, ptr %30, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %426, i32 0, i32 10
  %428 = load i8, ptr %427, align 8, !tbaa !66, !range !27, !noundef !28
  %429 = trunc i8 %428 to i1
  br i1 %429, label %441, label %430

430:                                              ; preds = %425
  %431 = load ptr, ptr %30, align 8, !tbaa !5
  %432 = load ptr, ptr %30, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %432, i32 0, i32 7
  %434 = load float, ptr %44, align 4, !tbaa !29
  %435 = load ptr, ptr %30, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %435, i32 0, i32 6
  %437 = load float, ptr %436, align 4, !tbaa !55
  %438 = fadd float %434, %437
  %439 = load float, ptr %45, align 4, !tbaa !29
  call void @_ZL17stb_textedit_dragP18ImGuiTextEditStateP17STB_TexteditStateff(ptr noundef %431, ptr noundef %433, float noundef %438, float noundef %439)
  %440 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396) %440)
  br label %441

441:                                              ; preds = %430, %425, %419
  br label %442

442:                                              ; preds = %441, %408
  br label %443

443:                                              ; preds = %442, %393
  %444 = load ptr, ptr %30, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %444, i32 0, i32 10
  %446 = load i8, ptr %445, align 8, !tbaa !66, !range !27, !noundef !28
  %447 = trunc i8 %446 to i1
  br i1 %447, label %448, label %457

448:                                              ; preds = %443
  %449 = load ptr, ptr %17, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.ImGuiIO, ptr %449, i32 0, i32 24
  %451 = getelementptr inbounds [5 x i8], ptr %450, i64 0, i64 0
  %452 = load i8, ptr %451, align 8, !tbaa !36, !range !27, !noundef !28
  %453 = trunc i8 %452 to i1
  br i1 %453, label %457, label %454

454:                                              ; preds = %448
  %455 = load ptr, ptr %30, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %455, i32 0, i32 10
  store i8 0, ptr %456, align 8, !tbaa !66
  br label %457

457:                                              ; preds = %454, %448, %443
  %458 = load ptr, ptr %14, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ImGuiState, ptr %458, i32 0, i32 2
  %460 = getelementptr inbounds %struct.ImGuiIO, ptr %459, i32 0, i32 32
  %461 = getelementptr inbounds [17 x i16], ptr %460, i64 0, i64 0
  %462 = load i16, ptr %461, align 8, !tbaa !67
  %463 = icmp ne i16 %462, 0
  br i1 %463, label %464, label %512

464:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  store i32 0, ptr %46, align 4, !tbaa !11
  br label %465

465:                                              ; preds = %504, %464
  %466 = load i32, ptr %46, align 4, !tbaa !11
  %467 = icmp slt i32 %466, 17
  br i1 %467, label %468, label %477

468:                                              ; preds = %465
  %469 = load ptr, ptr %14, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.ImGuiState, ptr %469, i32 0, i32 2
  %471 = getelementptr inbounds %struct.ImGuiIO, ptr %470, i32 0, i32 32
  %472 = load i32, ptr %46, align 4, !tbaa !11
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds [17 x i16], ptr %471, i64 0, i64 %473
  %475 = load i16, ptr %474, align 2, !tbaa !67
  %476 = icmp ne i16 %475, 0
  br label %477

477:                                              ; preds = %468, %465
  %478 = phi i1 [ false, %465 ], [ %476, %468 ]
  br i1 %478, label %480, label %479

479:                                              ; preds = %477
  store i32 2, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %507

480:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  %481 = load ptr, ptr %14, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.ImGuiState, ptr %481, i32 0, i32 2
  %483 = getelementptr inbounds %struct.ImGuiIO, ptr %482, i32 0, i32 32
  %484 = load i32, ptr %46, align 4, !tbaa !11
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds [17 x i16], ptr %483, i64 0, i64 %485
  %487 = load i16, ptr %486, align 2, !tbaa !67
  %488 = zext i16 %487 to i32
  store i32 %488, ptr %47, align 4, !tbaa !11
  %489 = load i32, ptr %47, align 4, !tbaa !11
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %500

491:                                              ; preds = %480
  %492 = load i32, ptr %11, align 4, !tbaa !11
  %493 = load ptr, ptr %12, align 8, !tbaa !5
  %494 = load ptr, ptr %13, align 8, !tbaa !5
  %495 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %47, i32 noundef %492, ptr noundef %493, ptr noundef %494)
  br i1 %495, label %497, label %496

496:                                              ; preds = %491
  store i32 4, ptr %16, align 4
  br label %501

497:                                              ; preds = %491
  %498 = load ptr, ptr %30, align 8, !tbaa !5
  %499 = load i32, ptr %47, align 4, !tbaa !11
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %498, i32 noundef %499)
  br label %500

500:                                              ; preds = %497, %480
  store i32 0, ptr %16, align 4
  br label %501

501:                                              ; preds = %500, %496
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  %502 = load i32, ptr %16, align 4
  switch i32 %502, label %1191 [
    i32 0, label %503
    i32 4, label %504
  ]

503:                                              ; preds = %501
  br label %504

504:                                              ; preds = %503, %501
  %505 = load i32, ptr %46, align 4, !tbaa !11
  %506 = add nsw i32 %505, 1
  store i32 %506, ptr %46, align 4, !tbaa !11
  br label %465, !llvm.loop !68

507:                                              ; preds = %479
  %508 = load ptr, ptr %14, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.ImGuiState, ptr %508, i32 0, i32 2
  %510 = getelementptr inbounds %struct.ImGuiIO, ptr %509, i32 0, i32 32
  %511 = getelementptr inbounds [17 x i16], ptr %510, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 8 %511, i8 0, i64 34, i1 false)
  br label %512

512:                                              ; preds = %507, %457
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %513 = load i8, ptr %32, align 1, !tbaa !36, !range !27, !noundef !28
  %514 = trunc i8 %513 to i1
  %515 = zext i1 %514 to i64
  %516 = select i1 %514, i32 131072, i32 0
  store i32 %516, ptr %48, align 4, !tbaa !11
  %517 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %517, label %518, label %530

518:                                              ; preds = %512
  %519 = load ptr, ptr %30, align 8, !tbaa !5
  %520 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %521 = trunc i8 %520 to i1
  br i1 %521, label %522, label %525

522:                                              ; preds = %518
  %523 = load i32, ptr %48, align 4, !tbaa !11
  %524 = or i32 65548, %523
  br label %528

525:                                              ; preds = %518
  %526 = load i32, ptr %48, align 4, !tbaa !11
  %527 = or i32 65536, %526
  br label %528

528:                                              ; preds = %525, %522
  %529 = phi i32 [ %524, %522 ], [ %527, %525 ]
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %519, i32 noundef %529)
  br label %789

530:                                              ; preds = %512
  %531 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %531, label %532, label %544

532:                                              ; preds = %530
  %533 = load ptr, ptr %30, align 8, !tbaa !5
  %534 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %535 = trunc i8 %534 to i1
  br i1 %535, label %536, label %539

536:                                              ; preds = %532
  %537 = load i32, ptr %48, align 4, !tbaa !11
  %538 = or i32 65549, %537
  br label %542

539:                                              ; preds = %532
  %540 = load i32, ptr %48, align 4, !tbaa !11
  %541 = or i32 65537, %540
  br label %542

542:                                              ; preds = %539, %536
  %543 = phi i32 [ %538, %536 ], [ %541, %539 ]
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %533, i32 noundef %543)
  br label %788

544:                                              ; preds = %530
  %545 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 5, i1 noundef zeroext true)
  br i1 %545, label %546, label %558

546:                                              ; preds = %544
  %547 = load ptr, ptr %30, align 8, !tbaa !5
  %548 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %549 = trunc i8 %548 to i1
  br i1 %549, label %550, label %553

550:                                              ; preds = %546
  %551 = load i32, ptr %48, align 4, !tbaa !11
  %552 = or i32 65542, %551
  br label %556

553:                                              ; preds = %546
  %554 = load i32, ptr %48, align 4, !tbaa !11
  %555 = or i32 65540, %554
  br label %556

556:                                              ; preds = %553, %550
  %557 = phi i32 [ %552, %550 ], [ %555, %553 ]
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %547, i32 noundef %557)
  br label %787

558:                                              ; preds = %544
  %559 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 6, i1 noundef zeroext true)
  br i1 %559, label %560, label %572

560:                                              ; preds = %558
  %561 = load ptr, ptr %30, align 8, !tbaa !5
  %562 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %563 = trunc i8 %562 to i1
  br i1 %563, label %564, label %567

564:                                              ; preds = %560
  %565 = load i32, ptr %48, align 4, !tbaa !11
  %566 = or i32 65543, %565
  br label %570

567:                                              ; preds = %560
  %568 = load i32, ptr %48, align 4, !tbaa !11
  %569 = or i32 65541, %568
  br label %570

570:                                              ; preds = %567, %564
  %571 = phi i32 [ %566, %564 ], [ %569, %567 ]
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %561, i32 noundef %571)
  br label %786

572:                                              ; preds = %558
  %573 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %573, label %574, label %578

574:                                              ; preds = %572
  %575 = load ptr, ptr %30, align 8, !tbaa !5
  %576 = load i32, ptr %48, align 4, !tbaa !11
  %577 = or i32 65544, %576
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %575, i32 noundef %577)
  br label %785

578:                                              ; preds = %572
  %579 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %579, label %580, label %584

580:                                              ; preds = %578
  %581 = load ptr, ptr %30, align 8, !tbaa !5
  %582 = load i32, ptr %48, align 4, !tbaa !11
  %583 = or i32 65545, %582
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %581, i32 noundef %583)
  br label %784

584:                                              ; preds = %578
  %585 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %585, label %586, label %587

586:                                              ; preds = %584
  call void @_ZL11SetActiveIdj(i32 noundef 0)
  store i8 1, ptr %43, align 1, !tbaa !36
  br label %783

587:                                              ; preds = %584
  %588 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %588, label %589, label %590

589:                                              ; preds = %587
  call void @_ZL11SetActiveIdj(i32 noundef 0)
  store i8 1, ptr %42, align 1, !tbaa !36
  br label %782

590:                                              ; preds = %587
  %591 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %592 = trunc i8 %591 to i1
  br i1 %592, label %593, label %597

593:                                              ; preds = %590
  %594 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %594, label %595, label %597

595:                                              ; preds = %593
  %596 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %596, i32 noundef 65546)
  br label %781

597:                                              ; preds = %593, %590
  %598 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %599 = trunc i8 %598 to i1
  br i1 %599, label %600, label %604

600:                                              ; preds = %597
  %601 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %601, label %602, label %604

602:                                              ; preds = %600
  %603 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %603, i32 noundef 65547)
  br label %780

604:                                              ; preds = %600, %597
  %605 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %606 = trunc i8 %605 to i1
  br i1 %606, label %607, label %611

607:                                              ; preds = %604
  %608 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %608, label %609, label %611

609:                                              ; preds = %607
  %610 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(8396) %610)
  br label %779

611:                                              ; preds = %607, %604
  %612 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %613 = trunc i8 %612 to i1
  br i1 %613, label %614, label %696

614:                                              ; preds = %611
  %615 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %615, label %618, label %616

616:                                              ; preds = %614
  %617 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 12, i1 noundef zeroext true)
  br i1 %617, label %618, label %696

618:                                              ; preds = %616, %614
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #10
  %619 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 14, i1 noundef zeroext true)
  %620 = zext i1 %619 to i8
  store i8 %620, ptr %49, align 1, !tbaa !36
  %621 = load i8, ptr %49, align 1, !tbaa !36, !range !27, !noundef !28
  %622 = trunc i8 %621 to i1
  br i1 %622, label %623, label %628

623:                                              ; preds = %618
  %624 = load ptr, ptr %30, align 8, !tbaa !5
  %625 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(8396) %624)
  br i1 %625, label %628, label %626

626:                                              ; preds = %623
  %627 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(8396) %627)
  br label %628

628:                                              ; preds = %626, %623, %618
  %629 = load ptr, ptr %14, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.ImGuiState, ptr %629, i32 0, i32 2
  %631 = getelementptr inbounds %struct.ImGuiIO, ptr %630, i32 0, i32 18
  %632 = load ptr, ptr %631, align 8, !tbaa !70
  %633 = icmp ne ptr %632, null
  br i1 %633, label %634, label %687

634:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  %635 = load ptr, ptr %30, align 8, !tbaa !5
  %636 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(8396) %635)
  br i1 %636, label %637, label %647

637:                                              ; preds = %634
  %638 = load ptr, ptr %30, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %638, i32 0, i32 7
  %640 = getelementptr inbounds %struct.STB_TexteditState, ptr %639, i32 0, i32 1
  %641 = load i32, ptr %640, align 4, !tbaa !57
  %642 = load ptr, ptr %30, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %642, i32 0, i32 7
  %644 = getelementptr inbounds %struct.STB_TexteditState, ptr %643, i32 0, i32 2
  %645 = load i32, ptr %644, align 8, !tbaa !58
  %646 = call noundef i32 @_ZL5ImMinii(i32 noundef %641, i32 noundef %645)
  br label %648

647:                                              ; preds = %634
  br label %648

648:                                              ; preds = %647, %637
  %649 = phi i32 [ %646, %637 ], [ 0, %647 ]
  store i32 %649, ptr %50, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %650 = load ptr, ptr %30, align 8, !tbaa !5
  %651 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(8396) %650)
  br i1 %651, label %652, label %662

652:                                              ; preds = %648
  %653 = load ptr, ptr %30, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %653, i32 0, i32 7
  %655 = getelementptr inbounds %struct.STB_TexteditState, ptr %654, i32 0, i32 1
  %656 = load i32, ptr %655, align 4, !tbaa !57
  %657 = load ptr, ptr %30, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %657, i32 0, i32 7
  %659 = getelementptr inbounds %struct.STB_TexteditState, ptr %658, i32 0, i32 2
  %660 = load i32, ptr %659, align 8, !tbaa !58
  %661 = call noundef i32 @_ZL5ImMaxii(i32 noundef %656, i32 noundef %660)
  br label %668

662:                                              ; preds = %648
  %663 = load ptr, ptr %30, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %663, i32 0, i32 1
  %665 = getelementptr inbounds [1024 x i16], ptr %664, i64 0, i64 0
  %666 = call noundef i64 @_ZL9ImStrlenWPKt(ptr noundef %665)
  %667 = trunc i64 %666 to i32
  br label %668

668:                                              ; preds = %662, %652
  %669 = phi i32 [ %661, %652 ], [ %667, %662 ]
  store i32 %669, ptr %51, align 4, !tbaa !11
  %670 = load ptr, ptr %30, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %670, i32 0, i32 1
  %672 = getelementptr inbounds [1024 x i16], ptr %671, i64 0, i64 0
  %673 = load i32, ptr %50, align 4, !tbaa !11
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds i16, ptr %672, i64 %674
  %676 = load ptr, ptr %30, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %676, i32 0, i32 1
  %678 = getelementptr inbounds [1024 x i16], ptr %677, i64 0, i64 0
  %679 = load i32, ptr %51, align 4, !tbaa !11
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i16, ptr %678, i64 %680
  %682 = call noundef i64 @_ZL15ImTextStrToUtf8PcmPKtS1_(ptr noundef @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, i64 noundef 3073, ptr noundef %675, ptr noundef %681)
  %683 = load ptr, ptr %14, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.ImGuiState, ptr %683, i32 0, i32 2
  %685 = getelementptr inbounds %struct.ImGuiIO, ptr %684, i32 0, i32 18
  %686 = load ptr, ptr %685, align 8, !tbaa !70
  call void %686(ptr noundef @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8)
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %687

687:                                              ; preds = %668, %628
  %688 = load i8, ptr %49, align 1, !tbaa !36, !range !27, !noundef !28
  %689 = trunc i8 %688 to i1
  br i1 %689, label %690, label %695

690:                                              ; preds = %687
  %691 = load ptr, ptr %30, align 8, !tbaa !5
  %692 = load ptr, ptr %30, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %692, i32 0, i32 7
  %694 = call noundef i32 @_ZL16stb_textedit_cutP18ImGuiTextEditStateP17STB_TexteditState(ptr noundef %691, ptr noundef %693)
  br label %695

695:                                              ; preds = %690, %687
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #10
  br label %778

696:                                              ; preds = %616, %611
  %697 = load i8, ptr %31, align 1, !tbaa !36, !range !27, !noundef !28
  %698 = trunc i8 %697 to i1
  br i1 %698, label %699, label %777

699:                                              ; preds = %696
  %700 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %700, label %701, label %777

701:                                              ; preds = %699
  %702 = load ptr, ptr %14, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.ImGuiState, ptr %702, i32 0, i32 2
  %704 = getelementptr inbounds %struct.ImGuiIO, ptr %703, i32 0, i32 17
  %705 = load ptr, ptr %704, align 8, !tbaa !71
  %706 = icmp ne ptr %705, null
  br i1 %706, label %707, label %776

707:                                              ; preds = %701
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %708 = load ptr, ptr %14, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.ImGuiState, ptr %708, i32 0, i32 2
  %710 = getelementptr inbounds %struct.ImGuiIO, ptr %709, i32 0, i32 17
  %711 = load ptr, ptr %710, align 8, !tbaa !71
  %712 = call noundef ptr %711()
  store ptr %712, ptr %52, align 8, !tbaa !5
  %713 = load ptr, ptr %52, align 8, !tbaa !5
  %714 = icmp ne ptr %713, null
  br i1 %714, label %715, label %775

715:                                              ; preds = %707
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %716 = load ptr, ptr %52, align 8, !tbaa !5
  %717 = call i64 @strlen(ptr noundef %716) #11
  store i64 %717, ptr %53, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  %718 = load i64, ptr %53, align 8, !tbaa !9
  %719 = add i64 %718, 1
  %720 = mul i64 %719, 2
  %721 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %720)
  store ptr %721, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  store i32 0, ptr %55, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  %722 = load ptr, ptr %52, align 8, !tbaa !5
  store ptr %722, ptr %56, align 8, !tbaa !5
  br label %723

723:                                              ; preds = %757, %755, %715
  %724 = load ptr, ptr %56, align 8, !tbaa !5
  %725 = load i8, ptr %724, align 1, !tbaa !72
  %726 = icmp ne i8 %725, 0
  br i1 %726, label %728, label %727

727:                                              ; preds = %723
  store i32 5, ptr %16, align 4
  br label %758

728:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  %729 = load ptr, ptr %56, align 8, !tbaa !5
  %730 = call noundef i32 @_ZL18ImTextCharFromUtf8PjPKcS1_(ptr noundef %57, ptr noundef %729, ptr noundef null)
  %731 = load ptr, ptr %56, align 8, !tbaa !5
  %732 = sext i32 %730 to i64
  %733 = getelementptr inbounds i8, ptr %731, i64 %732
  store ptr %733, ptr %56, align 8, !tbaa !5
  %734 = load i32, ptr %57, align 4, !tbaa !11
  %735 = icmp eq i32 %734, 0
  br i1 %735, label %736, label %737

736:                                              ; preds = %728
  store i32 5, ptr %16, align 4
  br label %755

737:                                              ; preds = %728
  %738 = load i32, ptr %57, align 4, !tbaa !11
  %739 = icmp uge i32 %738, 65536
  br i1 %739, label %740, label %741

740:                                              ; preds = %737
  store i32 6, ptr %16, align 4
  br label %755, !llvm.loop !73

741:                                              ; preds = %737
  %742 = load i32, ptr %11, align 4, !tbaa !11
  %743 = load ptr, ptr %12, align 8, !tbaa !5
  %744 = load ptr, ptr %13, align 8, !tbaa !5
  %745 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %57, i32 noundef %742, ptr noundef %743, ptr noundef %744)
  br i1 %745, label %747, label %746

746:                                              ; preds = %741
  store i32 6, ptr %16, align 4
  br label %755, !llvm.loop !73

747:                                              ; preds = %741
  %748 = load i32, ptr %57, align 4, !tbaa !11
  %749 = trunc i32 %748 to i16
  %750 = load ptr, ptr %54, align 8, !tbaa !5
  %751 = load i32, ptr %55, align 4, !tbaa !11
  %752 = add nsw i32 %751, 1
  store i32 %752, ptr %55, align 4, !tbaa !11
  %753 = sext i32 %751 to i64
  %754 = getelementptr inbounds i16, ptr %750, i64 %753
  store i16 %749, ptr %754, align 2, !tbaa !67
  store i32 0, ptr %16, align 4
  br label %755

755:                                              ; preds = %747, %746, %740, %736
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  %756 = load i32, ptr %16, align 4
  switch i32 %756, label %758 [
    i32 0, label %757
    i32 6, label %723
  ]

757:                                              ; preds = %755
  br label %723, !llvm.loop !73

758:                                              ; preds = %755, %727
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  br label %759

759:                                              ; preds = %758
  %760 = load ptr, ptr %54, align 8, !tbaa !5
  %761 = load i32, ptr %55, align 4, !tbaa !11
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds i16, ptr %760, i64 %762
  store i16 0, ptr %763, align 2, !tbaa !67
  %764 = load i32, ptr %55, align 4, !tbaa !11
  %765 = icmp sgt i32 %764, 0
  br i1 %765, label %766, label %773

766:                                              ; preds = %759
  %767 = load ptr, ptr %30, align 8, !tbaa !5
  %768 = load ptr, ptr %30, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %768, i32 0, i32 7
  %770 = load ptr, ptr %54, align 8, !tbaa !5
  %771 = load i32, ptr %55, align 4, !tbaa !11
  %772 = call noundef i32 @_ZL18stb_textedit_pasteP18ImGuiTextEditStateP17STB_TexteditStatePKti(ptr noundef %767, ptr noundef %769, ptr noundef %770, i32 noundef %771)
  br label %773

773:                                              ; preds = %766, %759
  %774 = load ptr, ptr %54, align 8, !tbaa !5
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef %774)
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %775

775:                                              ; preds = %773, %707
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %776

776:                                              ; preds = %775, %701
  br label %777

777:                                              ; preds = %776, %699, %696
  br label %778

778:                                              ; preds = %777, %695
  br label %779

779:                                              ; preds = %778, %609
  br label %780

780:                                              ; preds = %779, %602
  br label %781

781:                                              ; preds = %780, %595
  br label %782

782:                                              ; preds = %781, %589
  br label %783

783:                                              ; preds = %782, %586
  br label %784

784:                                              ; preds = %783, %580
  br label %785

785:                                              ; preds = %784, %574
  br label %786

786:                                              ; preds = %785, %570
  br label %787

787:                                              ; preds = %786, %556
  br label %788

788:                                              ; preds = %787, %542
  br label %789

789:                                              ; preds = %788, %528
  %790 = load ptr, ptr %14, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.ImGuiState, ptr %790, i32 0, i32 2
  %792 = getelementptr inbounds %struct.ImGuiIO, ptr %791, i32 0, i32 1
  %793 = load float, ptr %792, align 8, !tbaa !74
  %794 = load ptr, ptr %30, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %794, i32 0, i32 8
  %796 = load float, ptr %795, align 4, !tbaa !75
  %797 = fadd float %796, %793
  store float %797, ptr %795, align 4, !tbaa !75
  %798 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState18UpdateScrollOffsetEv(ptr noundef nonnull align 8 dereferenceable(8396) %798)
  %799 = load i8, ptr %42, align 1, !tbaa !36, !range !27, !noundef !28
  %800 = trunc i8 %799 to i1
  br i1 %800, label %801, label %808

801:                                              ; preds = %789
  %802 = load ptr, ptr %9, align 8, !tbaa !5
  %803 = load i64, ptr %10, align 8, !tbaa !9
  %804 = load ptr, ptr %30, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %804, i32 0, i32 2
  %806 = getelementptr inbounds [3073 x i8], ptr %805, i64 0, i64 0
  %807 = call noundef i64 (ptr, i64, ptr, ...) @_ZL14ImFormatStringPcmPKcz(ptr noundef %802, i64 noundef %803, ptr noundef @.str.7, ptr noundef %806)
  store i8 1, ptr %41, align 1, !tbaa !36
  br label %1010

808:                                              ; preds = %789
  %809 = load ptr, ptr %30, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %809, i32 0, i32 1
  %811 = getelementptr inbounds [1024 x i16], ptr %810, i64 0, i64 0
  %812 = call noundef i64 @_ZL15ImTextStrToUtf8PcmPKtS1_(ptr noundef @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, i64 noundef 3073, ptr noundef %811, ptr noundef null)
  %813 = load i32, ptr %11, align 4, !tbaa !11
  %814 = and i32 %813, 448
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %816, label %1001

816:                                              ; preds = %808
  %817 = load ptr, ptr %12, align 8, !tbaa !5
  %818 = icmp ne ptr %817, null
  br i1 %818, label %819, label %820

819:                                              ; preds = %816
  br label %822

820:                                              ; preds = %816
  call void @__assert_fail(ptr noundef @.str.103, ptr noundef @.str.10, i32 noundef 5707, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

821:                                              ; No predecessors!
  br label %822

822:                                              ; preds = %821, %819
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #10
  store i32 0, ptr %58, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  store i32 17, ptr %59, align 4, !tbaa !11
  %823 = load i32, ptr %11, align 4, !tbaa !11
  %824 = and i32 %823, 64
  %825 = icmp ne i32 %824, 0
  br i1 %825, label %826, label %829

826:                                              ; preds = %822
  %827 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %827, label %828, label %829

828:                                              ; preds = %826
  store i32 64, ptr %58, align 4, !tbaa !11
  store i32 0, ptr %59, align 4, !tbaa !11
  br label %845

829:                                              ; preds = %826, %822
  %830 = load i32, ptr %11, align 4, !tbaa !11
  %831 = and i32 %830, 128
  %832 = icmp ne i32 %831, 0
  br i1 %832, label %833, label %836

833:                                              ; preds = %829
  %834 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %834, label %835, label %836

835:                                              ; preds = %833
  store i32 128, ptr %58, align 4, !tbaa !11
  store i32 3, ptr %59, align 4, !tbaa !11
  br label %844

836:                                              ; preds = %833, %829
  %837 = load i32, ptr %11, align 4, !tbaa !11
  %838 = and i32 %837, 128
  %839 = icmp ne i32 %838, 0
  br i1 %839, label %840, label %843

840:                                              ; preds = %836
  %841 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %841, label %842, label %843

842:                                              ; preds = %840
  store i32 128, ptr %58, align 4, !tbaa !11
  store i32 4, ptr %59, align 4, !tbaa !11
  br label %843

843:                                              ; preds = %842, %840, %836
  br label %844

844:                                              ; preds = %843, %835
  br label %845

845:                                              ; preds = %844, %828
  %846 = load i32, ptr %59, align 4, !tbaa !11
  %847 = icmp ne i32 %846, 17
  br i1 %847, label %852, label %848

848:                                              ; preds = %845
  %849 = load i32, ptr %11, align 4, !tbaa !11
  %850 = and i32 %849, 256
  %851 = icmp ne i32 %850, 0
  br i1 %851, label %852, label %1000

852:                                              ; preds = %848, %845
  call void @llvm.lifetime.start.p0(i64 56, ptr %60) #10
  %853 = load i32, ptr %58, align 4, !tbaa !11
  %854 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 0
  store i32 %853, ptr %854, align 8, !tbaa !76
  %855 = load i32, ptr %59, align 4, !tbaa !11
  %856 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 4
  store i32 %855, ptr %856, align 4, !tbaa !78
  %857 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 5
  store ptr @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, ptr %857, align 8, !tbaa !79
  %858 = load ptr, ptr %30, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %858, i32 0, i32 4
  %860 = load i64, ptr %859, align 8, !tbaa !60
  %861 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 6
  store i64 %860, ptr %861, align 8, !tbaa !80
  %862 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 7
  store i8 0, ptr %862, align 8, !tbaa !81
  %863 = load i32, ptr %11, align 4, !tbaa !11
  %864 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 1
  store i32 %863, ptr %864, align 4, !tbaa !82
  %865 = load ptr, ptr %13, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 2
  store ptr %865, ptr %866, align 8, !tbaa !83
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  %867 = load ptr, ptr %30, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %867, i32 0, i32 1
  %869 = getelementptr inbounds [1024 x i16], ptr %868, i64 0, i64 0
  %870 = load ptr, ptr %30, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %870, i32 0, i32 1
  %872 = getelementptr inbounds [1024 x i16], ptr %871, i64 0, i64 0
  %873 = load ptr, ptr %30, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %873, i32 0, i32 7
  %875 = getelementptr inbounds %struct.STB_TexteditState, ptr %874, i32 0, i32 0
  %876 = load i32, ptr %875, align 8, !tbaa !56
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds i16, ptr %872, i64 %877
  %879 = call noundef i32 @_ZL29ImTextCountUtf8BytesFromWcharPKtS0_(ptr noundef %869, ptr noundef %878)
  %880 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 8
  store i32 %879, ptr %880, align 4, !tbaa !84
  store i32 %879, ptr %61, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  %881 = load ptr, ptr %30, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %881, i32 0, i32 1
  %883 = getelementptr inbounds [1024 x i16], ptr %882, i64 0, i64 0
  %884 = load ptr, ptr %30, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %884, i32 0, i32 1
  %886 = getelementptr inbounds [1024 x i16], ptr %885, i64 0, i64 0
  %887 = load ptr, ptr %30, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %887, i32 0, i32 7
  %889 = getelementptr inbounds %struct.STB_TexteditState, ptr %888, i32 0, i32 1
  %890 = load i32, ptr %889, align 4, !tbaa !57
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds i16, ptr %886, i64 %891
  %893 = call noundef i32 @_ZL29ImTextCountUtf8BytesFromWcharPKtS0_(ptr noundef %883, ptr noundef %892)
  %894 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 9
  store i32 %893, ptr %894, align 8, !tbaa !85
  store i32 %893, ptr %62, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  %895 = load ptr, ptr %30, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %895, i32 0, i32 1
  %897 = getelementptr inbounds [1024 x i16], ptr %896, i64 0, i64 0
  %898 = load ptr, ptr %30, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %898, i32 0, i32 1
  %900 = getelementptr inbounds [1024 x i16], ptr %899, i64 0, i64 0
  %901 = load ptr, ptr %30, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %901, i32 0, i32 7
  %903 = getelementptr inbounds %struct.STB_TexteditState, ptr %902, i32 0, i32 2
  %904 = load i32, ptr %903, align 8, !tbaa !58
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds i16, ptr %900, i64 %905
  %907 = call noundef i32 @_ZL29ImTextCountUtf8BytesFromWcharPKtS0_(ptr noundef %897, ptr noundef %906)
  %908 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 10
  store i32 %907, ptr %908, align 4, !tbaa !86
  store i32 %907, ptr %63, align 4, !tbaa !11
  %909 = load ptr, ptr %12, align 8, !tbaa !5
  %910 = call noundef i32 %909(ptr noundef %60)
  %911 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 5
  %912 = load ptr, ptr %911, align 8, !tbaa !79
  %913 = icmp eq ptr %912, @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8
  br i1 %913, label %914, label %915

914:                                              ; preds = %852
  br label %917

915:                                              ; preds = %852
  call void @__assert_fail(ptr noundef @.str.104, ptr noundef @.str.10, i32 noundef 5748, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

916:                                              ; No predecessors!
  br label %917

917:                                              ; preds = %916, %914
  %918 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 6
  %919 = load i64, ptr %918, align 8, !tbaa !80
  %920 = load ptr, ptr %30, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %920, i32 0, i32 4
  %922 = load i64, ptr %921, align 8, !tbaa !60
  %923 = icmp eq i64 %919, %922
  br i1 %923, label %924, label %925

924:                                              ; preds = %917
  br label %927

925:                                              ; preds = %917
  call void @__assert_fail(ptr noundef @.str.105, ptr noundef @.str.10, i32 noundef 5749, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

926:                                              ; No predecessors!
  br label %927

927:                                              ; preds = %926, %924
  %928 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 1
  %929 = load i32, ptr %928, align 4, !tbaa !82
  %930 = load i32, ptr %11, align 4, !tbaa !11
  %931 = icmp eq i32 %929, %930
  br i1 %931, label %932, label %933

932:                                              ; preds = %927
  br label %935

933:                                              ; preds = %927
  call void @__assert_fail(ptr noundef @.str.106, ptr noundef @.str.10, i32 noundef 5750, ptr noundef @__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

934:                                              ; No predecessors!
  br label %935

935:                                              ; preds = %934, %932
  %936 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 8
  %937 = load i32, ptr %936, align 4, !tbaa !84
  %938 = load i32, ptr %61, align 4, !tbaa !11
  %939 = icmp ne i32 %937, %938
  br i1 %939, label %940, label %953

940:                                              ; preds = %935
  %941 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 5
  %942 = load ptr, ptr %941, align 8, !tbaa !79
  %943 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 5
  %944 = load ptr, ptr %943, align 8, !tbaa !79
  %945 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 8
  %946 = load i32, ptr %945, align 4, !tbaa !84
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds i8, ptr %944, i64 %947
  %949 = call noundef i32 @_ZL24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %942, ptr noundef %948)
  %950 = load ptr, ptr %30, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %950, i32 0, i32 7
  %952 = getelementptr inbounds %struct.STB_TexteditState, ptr %951, i32 0, i32 0
  store i32 %949, ptr %952, align 8, !tbaa !56
  br label %953

953:                                              ; preds = %940, %935
  %954 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 9
  %955 = load i32, ptr %954, align 8, !tbaa !85
  %956 = load i32, ptr %62, align 4, !tbaa !11
  %957 = icmp ne i32 %955, %956
  br i1 %957, label %958, label %971

958:                                              ; preds = %953
  %959 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 5
  %960 = load ptr, ptr %959, align 8, !tbaa !79
  %961 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 5
  %962 = load ptr, ptr %961, align 8, !tbaa !79
  %963 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 9
  %964 = load i32, ptr %963, align 8, !tbaa !85
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds i8, ptr %962, i64 %965
  %967 = call noundef i32 @_ZL24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %960, ptr noundef %966)
  %968 = load ptr, ptr %30, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %968, i32 0, i32 7
  %970 = getelementptr inbounds %struct.STB_TexteditState, ptr %969, i32 0, i32 1
  store i32 %967, ptr %970, align 4, !tbaa !57
  br label %971

971:                                              ; preds = %958, %953
  %972 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 10
  %973 = load i32, ptr %972, align 4, !tbaa !86
  %974 = load i32, ptr %63, align 4, !tbaa !11
  %975 = icmp ne i32 %973, %974
  br i1 %975, label %976, label %989

976:                                              ; preds = %971
  %977 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 5
  %978 = load ptr, ptr %977, align 8, !tbaa !79
  %979 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 5
  %980 = load ptr, ptr %979, align 8, !tbaa !79
  %981 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 10
  %982 = load i32, ptr %981, align 4, !tbaa !86
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds i8, ptr %980, i64 %983
  %985 = call noundef i32 @_ZL24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %978, ptr noundef %984)
  %986 = load ptr, ptr %30, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %986, i32 0, i32 7
  %988 = getelementptr inbounds %struct.STB_TexteditState, ptr %987, i32 0, i32 2
  store i32 %985, ptr %988, align 8, !tbaa !58
  br label %989

989:                                              ; preds = %976, %971
  %990 = getelementptr inbounds %struct.ImGuiTextEditCallbackData, ptr %60, i32 0, i32 7
  %991 = load i8, ptr %990, align 8, !tbaa !81, !range !27, !noundef !28
  %992 = trunc i8 %991 to i1
  br i1 %992, label %993, label %999

993:                                              ; preds = %989
  %994 = load ptr, ptr %30, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %994, i32 0, i32 1
  %996 = getelementptr inbounds [1024 x i16], ptr %995, i64 0, i64 0
  %997 = call noundef i64 @_ZL17ImTextStrFromUtf8PtmPKcS1_(ptr noundef %996, i64 noundef 1024, ptr noundef @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, ptr noundef null)
  %998 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396) %998)
  br label %999

999:                                              ; preds = %993, %989
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %60) #10
  br label %1000

1000:                                             ; preds = %999, %848
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #10
  br label %1001

1001:                                             ; preds = %1000, %808
  %1002 = load ptr, ptr %9, align 8, !tbaa !5
  %1003 = call i32 @strcmp(ptr noundef @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, ptr noundef %1002) #11
  %1004 = icmp ne i32 %1003, 0
  br i1 %1004, label %1005, label %1009

1005:                                             ; preds = %1001
  %1006 = load ptr, ptr %9, align 8, !tbaa !5
  %1007 = load i64, ptr %10, align 8, !tbaa !9
  %1008 = call noundef i64 (ptr, i64, ptr, ...) @_ZL14ImFormatStringPcmPKcz(ptr noundef %1006, i64 noundef %1007, ptr noundef @.str.7, ptr noundef @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8)
  store i8 1, ptr %41, align 1, !tbaa !36
  br label %1009

1009:                                             ; preds = %1005, %1001
  br label %1010

1010:                                             ; preds = %1009, %801
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %1011

1011:                                             ; preds = %1010, %340
  %1012 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %1012, i64 8, i1 false), !tbaa.struct !53
  %1013 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 4 %1013, i64 8, i1 false), !tbaa.struct !53
  %1014 = load ptr, ptr %15, align 8, !tbaa !5
  %1015 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1014, i32 noundef 5, float noundef 1.000000e+00)
  %1016 = load ptr, ptr %18, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.ImGuiStyle, ptr %1016, i32 0, i32 6
  %1018 = load float, ptr %1017, align 4, !tbaa !87
  %1019 = load <2 x float>, ptr %64, align 4
  %1020 = load <2 x float>, ptr %65, align 4
  call void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float> %1019, <2 x float> %1020, i32 noundef %1015, i1 noundef zeroext true, float noundef %1018)
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  %1021 = load ptr, ptr %15, align 8, !tbaa !5
  %1022 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %1021)
  %1023 = fadd float %1022, 1.000000e+00
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %66, float noundef 0.000000e+00, float noundef %1023)
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %67, float noundef 0.000000e+00, float noundef 2.000000e+00)
  %1024 = load ptr, ptr %14, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.ImGuiState, ptr %1024, i32 0, i32 17
  %1026 = load i32, ptr %1025, align 4, !tbaa !38
  %1027 = load i32, ptr %19, align 4, !tbaa !11
  %1028 = icmp eq i32 %1026, %1027
  br i1 %1028, label %1029, label %1070

1029:                                             ; preds = %1011
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #10
  %1030 = load ptr, ptr %30, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1030, i32 0, i32 7
  %1032 = getelementptr inbounds %struct.STB_TexteditState, ptr %1031, i32 0, i32 1
  %1033 = load i32, ptr %1032, align 4, !tbaa !57
  store i32 %1033, ptr %68, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #10
  %1034 = load ptr, ptr %30, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1034, i32 0, i32 7
  %1036 = getelementptr inbounds %struct.STB_TexteditState, ptr %1035, i32 0, i32 2
  %1037 = load i32, ptr %1036, align 8, !tbaa !58
  store i32 %1037, ptr %69, align 4, !tbaa !11
  %1038 = load i32, ptr %68, align 4, !tbaa !11
  %1039 = load i32, ptr %69, align 4, !tbaa !11
  %1040 = icmp ne i32 %1038, %1039
  br i1 %1040, label %1041, label %1069

1041:                                             ; preds = %1029
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %1042 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 0
  %1043 = load ptr, ptr %18, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.ImGuiStyle, ptr %1043, i32 0, i32 5
  %1045 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1042, ptr noundef nonnull align 4 dereferenceable(8) %1044)
  store <2 x float> %1045, ptr %71, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  %1046 = load ptr, ptr %30, align 8, !tbaa !5
  %1047 = load i32, ptr %68, align 4, !tbaa !11
  %1048 = load i32, ptr %69, align 4, !tbaa !11
  %1049 = call noundef i32 @_ZL5ImMinii(i32 noundef %1047, i32 noundef %1048)
  %1050 = call <2 x float> @_ZNK18ImGuiTextEditState28CalcDisplayOffsetFromCharIdxEi(ptr noundef nonnull align 8 dereferenceable(8396) %1046, i32 noundef %1049)
  store <2 x float> %1050, ptr %72, align 4
  %1051 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %71, ptr noundef nonnull align 4 dereferenceable(8) %72)
  store <2 x float> %1051, ptr %70, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #10
  %1052 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 0
  %1053 = load ptr, ptr %18, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.ImGuiStyle, ptr %1053, i32 0, i32 5
  %1055 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1052, ptr noundef nonnull align 4 dereferenceable(8) %1054)
  store <2 x float> %1055, ptr %74, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #10
  %1056 = load ptr, ptr %30, align 8, !tbaa !5
  %1057 = load i32, ptr %68, align 4, !tbaa !11
  %1058 = load i32, ptr %69, align 4, !tbaa !11
  %1059 = call noundef i32 @_ZL5ImMaxii(i32 noundef %1057, i32 noundef %1058)
  %1060 = call <2 x float> @_ZNK18ImGuiTextEditState28CalcDisplayOffsetFromCharIdxEi(ptr noundef nonnull align 8 dereferenceable(8396) %1056, i32 noundef %1059)
  store <2 x float> %1060, ptr %75, align 4
  %1061 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %74, ptr noundef nonnull align 4 dereferenceable(8) %75)
  store <2 x float> %1061, ptr %73, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  %1062 = load ptr, ptr %15, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.ImGuiWindow, ptr %1062, i32 0, i32 28
  %1064 = load ptr, ptr %1063, align 8, !tbaa !88
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  %1065 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %70, ptr noundef nonnull align 4 dereferenceable(8) %66)
  store <2 x float> %1065, ptr %76, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #10
  %1066 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %73, ptr noundef nonnull align 4 dereferenceable(8) %67)
  store <2 x float> %1066, ptr %77, align 4
  %1067 = load ptr, ptr %15, align 8, !tbaa !5
  %1068 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1067, i32 noundef 37, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1064, ptr noundef nonnull align 4 dereferenceable(8) %76, ptr noundef nonnull align 4 dereferenceable(8) %77, i32 noundef %1068, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  br label %1069

1069:                                             ; preds = %1041, %1029
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #10
  br label %1070

1070:                                             ; preds = %1069, %1011
  %1071 = load ptr, ptr %15, align 8, !tbaa !5
  %1072 = call noundef ptr @_ZNK11ImGuiWindow4FontEv(ptr noundef nonnull align 8 dereferenceable(480) %1071)
  %1073 = load ptr, ptr %15, align 8, !tbaa !5
  %1074 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %1073)
  %1075 = load ptr, ptr %9, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 0
  %1077 = load ptr, ptr %18, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.ImGuiStyle, ptr %1077, i32 0, i32 5
  %1079 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1076, ptr noundef nonnull align 4 dereferenceable(8) %1078)
  store <2 x float> %1079, ptr %78, align 4
  %1080 = load float, ptr %20, align 4, !tbaa !29
  %1081 = load ptr, ptr %14, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.ImGuiState, ptr %1081, i32 0, i32 17
  %1083 = load i32, ptr %1082, align 4, !tbaa !38
  %1084 = load i32, ptr %19, align 4, !tbaa !11
  %1085 = icmp eq i32 %1083, %1084
  br i1 %1085, label %1086, label %1090

1086:                                             ; preds = %1070
  %1087 = load ptr, ptr %30, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1087, i32 0, i32 6
  %1089 = load float, ptr %1088, align 4, !tbaa !55
  br label %1091

1090:                                             ; preds = %1070
  br label %1091

1091:                                             ; preds = %1090, %1086
  %1092 = phi float [ %1089, %1086 ], [ 0.000000e+00, %1090 ]
  %1093 = load <2 x float>, ptr %78, align 4
  call void @_ZN18ImGuiTextEditState25RenderTextScrolledClippedEP6ImFontfPKc6ImVec2ff(ptr noundef %1072, float noundef %1074, ptr noundef %1075, <2 x float> %1093, float noundef %1080, float noundef %1092)
  %1094 = load ptr, ptr %14, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.ImGuiState, ptr %1094, i32 0, i32 17
  %1096 = load i32, ptr %1095, align 4, !tbaa !38
  %1097 = load i32, ptr %19, align 4, !tbaa !11
  %1098 = icmp eq i32 %1096, %1097
  br i1 %1098, label %1099, label %1154

1099:                                             ; preds = %1091
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #10
  %1100 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 0
  %1101 = load ptr, ptr %18, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.ImGuiStyle, ptr %1101, i32 0, i32 5
  %1103 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1100, ptr noundef nonnull align 4 dereferenceable(8) %1102)
  store <2 x float> %1103, ptr %80, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #10
  %1104 = load ptr, ptr %30, align 8, !tbaa !5
  %1105 = load ptr, ptr %30, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1105, i32 0, i32 7
  %1107 = getelementptr inbounds %struct.STB_TexteditState, ptr %1106, i32 0, i32 0
  %1108 = load i32, ptr %1107, align 8, !tbaa !56
  %1109 = call <2 x float> @_ZNK18ImGuiTextEditState28CalcDisplayOffsetFromCharIdxEi(ptr noundef nonnull align 8 dereferenceable(8396) %1104, i32 noundef %1108)
  store <2 x float> %1109, ptr %81, align 4
  %1110 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %80, ptr noundef nonnull align 4 dereferenceable(8) %81)
  store <2 x float> %1110, ptr %79, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  %1111 = load ptr, ptr %14, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.ImGuiState, ptr %1111, i32 0, i32 38
  %1113 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState15CursorIsVisibleEv(ptr noundef nonnull align 8 dereferenceable(8396) %1112)
  br i1 %1113, label %1114, label %1124

1114:                                             ; preds = %1099
  %1115 = load ptr, ptr %15, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.ImGuiWindow, ptr %1115, i32 0, i32 28
  %1117 = load ptr, ptr %1116, align 8, !tbaa !88
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #10
  %1118 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %79, ptr noundef nonnull align 4 dereferenceable(8) %66)
  store <2 x float> %1118, ptr %83, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %84, float noundef 0.000000e+00, float noundef 2.000000e+00)
  %1119 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %83, ptr noundef nonnull align 4 dereferenceable(8) %84)
  store <2 x float> %1119, ptr %82, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #10
  %1120 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %79, ptr noundef nonnull align 4 dereferenceable(8) %67)
  store <2 x float> %1120, ptr %86, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %87, float noundef 0.000000e+00, float noundef 3.000000e+00)
  %1121 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %86, ptr noundef nonnull align 4 dereferenceable(8) %87)
  store <2 x float> %1121, ptr %85, align 4
  %1122 = load ptr, ptr %15, align 8, !tbaa !5
  %1123 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %1122, i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %1117, ptr noundef nonnull align 4 dereferenceable(8) %82, ptr noundef nonnull align 4 dereferenceable(8) %85, i32 noundef %1123, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  br label %1124

1124:                                             ; preds = %1114, %1099
  %1125 = load ptr, ptr %17, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.ImGuiIO, ptr %1125, i32 0, i32 21
  %1127 = load ptr, ptr %1126, align 8, !tbaa !89
  %1128 = icmp ne ptr %1127, null
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  br i1 %1128, label %1129, label %1135

1129:                                             ; preds = %1124
  %1130 = load ptr, ptr %30, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1130, i32 0, i32 9
  %1132 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %1131, ptr noundef nonnull align 4 dereferenceable(8) %79)
  store <2 x float> %1132, ptr %88, align 4
  %1133 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %88)
  %1134 = fcmp ogt float %1133, 0x3F1A36E2E0000000
  br label %1135

1135:                                             ; preds = %1129, %1124
  %1136 = phi i1 [ false, %1124 ], [ %1134, %1129 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br i1 %1136, label %1137, label %1151

1137:                                             ; preds = %1135
  %1138 = load ptr, ptr %17, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.ImGuiIO, ptr %1138, i32 0, i32 21
  %1140 = load ptr, ptr %1139, align 8, !tbaa !89
  %1141 = getelementptr inbounds %struct.ImVec2, ptr %79, i32 0, i32 0
  %1142 = load float, ptr %1141, align 4, !tbaa !31
  %1143 = fptosi float %1142 to i32
  %1144 = sub nsw i32 %1143, 1
  %1145 = getelementptr inbounds %struct.ImVec2, ptr %79, i32 0, i32 1
  %1146 = load float, ptr %1145, align 4, !tbaa !30
  %1147 = load ptr, ptr %15, align 8, !tbaa !5
  %1148 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %1147)
  %1149 = fsub float %1146, %1148
  %1150 = fptosi float %1149 to i32
  call void %1140(i32 noundef %1144, i32 noundef %1150)
  br label %1151

1151:                                             ; preds = %1137, %1135
  %1152 = load ptr, ptr %30, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.ImGuiTextEditState, ptr %1152, i32 0, i32 9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1153, ptr align 4 %79, i64 8, i1 false), !tbaa.struct !53
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #10
  br label %1154

1154:                                             ; preds = %1151, %1091
  %1155 = getelementptr inbounds %struct.ImVec2, ptr %21, i32 0, i32 0
  %1156 = load float, ptr %1155, align 4, !tbaa !31
  %1157 = fcmp ogt float %1156, 0.000000e+00
  br i1 %1157, label %1158, label %1177

1158:                                             ; preds = %1154
  %1159 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 1
  %1160 = getelementptr inbounds %struct.ImVec2, ptr %1159, i32 0, i32 0
  %1161 = load float, ptr %1160, align 4, !tbaa !90
  %1162 = load ptr, ptr %18, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.ImGuiStyle, ptr %1162, i32 0, i32 8
  %1164 = getelementptr inbounds %struct.ImVec2, ptr %1163, i32 0, i32 0
  %1165 = load float, ptr %1164, align 4, !tbaa !32
  %1166 = fadd float %1161, %1165
  %1167 = getelementptr inbounds %struct.ImGuiAabb, ptr %22, i32 0, i32 0
  %1168 = getelementptr inbounds %struct.ImVec2, ptr %1167, i32 0, i32 1
  %1169 = load float, ptr %1168, align 4, !tbaa !91
  %1170 = load ptr, ptr %18, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.ImGuiStyle, ptr %1170, i32 0, i32 5
  %1172 = getelementptr inbounds %struct.ImVec2, ptr %1171, i32 0, i32 1
  %1173 = load float, ptr %1172, align 4, !tbaa !92
  %1174 = fadd float %1169, %1173
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %89, float noundef %1166, float noundef %1174)
  %1175 = load ptr, ptr %8, align 8, !tbaa !5
  %1176 = load <2 x float>, ptr %89, align 4
  call void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float> %1176, ptr noundef %1175, ptr noundef null, i1 noundef zeroext true)
  br label %1177

1177:                                             ; preds = %1158, %1154
  %1178 = load i32, ptr %11, align 4, !tbaa !11
  %1179 = and i32 %1178, 32
  %1180 = icmp ne i32 %1179, 0
  br i1 %1180, label %1181, label %1184

1181:                                             ; preds = %1177
  %1182 = load i8, ptr %43, align 1, !tbaa !36, !range !27, !noundef !28
  %1183 = trunc i8 %1182 to i1
  store i1 %1183, ptr %7, align 1
  store i32 1, ptr %16, align 4
  br label %1187

1184:                                             ; preds = %1177
  %1185 = load i8, ptr %41, align 1, !tbaa !36, !range !27, !noundef !28
  %1186 = trunc i8 %1185 to i1
  store i1 %1186, ptr %7, align 1
  store i32 1, ptr %16, align 4
  br label %1187

1187:                                             ; preds = %1184, %1181
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %1188

1188:                                             ; preds = %1187, %140
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %1189

1189:                                             ; preds = %1188, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #10
  %1190 = load i1, ptr %7, align 1
  ret i1 %1190

1191:                                             ; preds = %501
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480), ptr noundef) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8)) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui7MemFreeEPv(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11ImGuiWindow17FocusItemRegisterEbb(ptr noundef nonnull align 8 dereferenceable(480), i1 noundef zeroext, i1 noundef zeroext) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL16GetCurrentWindowv() #7

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef, i1 noundef zeroext) #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL11SetActiveIdj(i32 noundef) #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK11ImGuiWindow4FontEv(ptr noundef nonnull align 8 dereferenceable(480)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL7ItemAddRK9ImGuiAabbPKj(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480), i32 noundef, float noundef) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13CalcItemWidthEv() #4

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8ItemSizeRK9ImGuiAabbP6ImVec2(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL9IsHoveredRK9ImGuiAabbRKj(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396), i32 noundef) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK18ImGuiTextEditState28CalcDisplayOffsetFromCharIdxEi(ptr noundef nonnull align 8 dereferenceable(8396), i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18ImGuiTextEditState25RenderTextScrolledClippedEP6ImFontfPKc6ImVec2ff(ptr noundef, float noundef, ptr noundef, <2 x float>, float noundef, float noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZL17ImTextStrFromUtf8PtmPKcS1_(ptr noundef, i64 noundef, ptr noundef, ptr noundef) #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(8396)) #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(8396)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL15ImTextStrToUtf8PcmPKtS1_(ptr noundef, i64 noundef, ptr noundef, ptr noundef) #6

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK18ImGuiTextEditState15CursorIsVisibleEv(ptr noundef nonnull align 8 dereferenceable(8396)) #0 align 2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #5 = { 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 #6 = { 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 #7 = { 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 #8 = { 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 #9 = { 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 #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { noreturn nounwind }

!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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !17, i64 68}
!14 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !12, i64 8, !12, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !16, i64 56, !16, i64 60, !17, i64 64, !17, i64 65, !17, i64 66, !17, i64 67, !17, i64 68, !12, i64 72, !17, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !18, i64 96, !23, i64 336, !24, i64 360, !19, i64 384, !12, i64 400, !16, i64 404, !25, i64 408, !16, i64 432, !6, i64 440, !6, i64 448, !12, i64 456, !12, i64 460, !12, i64 464, !12, i64 468, !12, i64 472, !12, i64 476}
!15 = !{!"_ZTS6ImVec2", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTS16ImGuiDrawContext", !15, i64 0, !15, i64 8, !15, i64 16, !16, i64 24, !16, i64 28, !16, i64 32, !12, i64 36, !12, i64 40, !19, i64 44, !17, i64 60, !20, i64 64, !21, i64 88, !22, i64 112, !22, i64 136, !12, i64 160, !6, i64 168, !16, i64 176, !16, i64 180, !12, i64 184, !12, i64 188, !15, i64 192, !16, i64 200, !16, i64 204, !17, i64 208, !12, i64 212, !22, i64 216}
!19 = !{!"_ZTS9ImGuiAabb", !15, i64 0, !15, i64 8}
!20 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !10, i64 0, !10, i64 8, !6, i64 16}
!21 = !{!"_ZTS8ImVectorIbE", !10, i64 0, !10, i64 8, !6, i64 16}
!22 = !{!"_ZTS8ImVectorIfE", !10, i64 0, !10, i64 8, !6, i64 16}
!23 = !{!"_ZTS8ImVectorIjE", !10, i64 0, !10, i64 8, !6, i64 16}
!24 = !{!"_ZTS8ImVectorI6ImVec4E", !10, i64 0, !10, i64 8, !6, i64 16}
!25 = !{!"_ZTS12ImGuiStorage", !26, i64 0}
!26 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !10, i64 0, !10, i64 8, !6, i64 16}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!16, !16, i64 0}
!30 = !{!15, !16, i64 4}
!31 = !{!15, !16, i64 0}
!32 = !{!33, !16, i64 48}
!33 = !{!"_ZTS10ImGuiStyle", !16, i64 0, !15, i64 4, !15, i64 12, !16, i64 20, !16, i64 24, !15, i64 28, !16, i64 36, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !16, i64 72, !16, i64 76, !16, i64 80, !16, i64 84, !7, i64 88}
!34 = !{!35, !17, i64 229}
!35 = !{!"_ZTS7ImGuiIO", !15, i64 0, !16, i64 8, !16, i64 12, !6, i64 16, !6, i64 24, !16, i64 32, !16, i64 36, !7, i64 40, !6, i64 112, !6, i64 120, !16, i64 128, !17, i64 132, !15, i64 136, !15, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !15, i64 208, !7, i64 216, !16, i64 224, !17, i64 228, !17, i64 229, !17, i64 230, !7, i64 231, !7, i64 744, !17, i64 778, !17, i64 779, !16, i64 780, !15, i64 784, !15, i64 792, !7, i64 800, !7, i64 808, !7, i64 848, !7, i64 868, !7, i64 873, !7, i64 880, !7, i64 900}
!36 = !{!17, !17, i64 0}
!37 = !{!35, !17, i64 230}
!38 = !{!39, !12, i64 3788}
!39 = !{!"_ZTS10ImGuiState", !17, i64 0, !35, i64 8, !33, i64 2960, !6, i64 3672, !16, i64 3680, !15, i64 3684, !16, i64 3692, !12, i64 3696, !12, i64 3700, !20, i64 3704, !6, i64 3728, !20, i64 3736, !6, i64 3760, !6, i64 3768, !6, i64 3776, !12, i64 3784, !12, i64 3788, !12, i64 3792, !17, i64 3796, !17, i64 3797, !6, i64 3800, !16, i64 3808, !40, i64 3816, !41, i64 3840, !42, i64 3864, !43, i64 3888, !15, i64 3912, !12, i64 3920, !15, i64 3924, !12, i64 3932, !17, i64 3936, !12, i64 3940, !17, i64 3944, !17, i64 3945, !12, i64 3948, !44, i64 3952, !20, i64 3976, !45, i64 4000, !12, i64 12400, !25, i64 12408, !12, i64 12432, !7, i64 12436, !6, i64 13464, !17, i64 13472, !6, i64 13480, !6, i64 13488, !12, i64 13496, !12, i64 13500, !7, i64 13504, !12, i64 13984, !16, i64 13988}
!40 = !{!"_ZTS8ImVectorIP12ImGuiIniDataE", !10, i64 0, !10, i64 8, !6, i64 16}
!41 = !{!"_ZTS8ImVectorI11ImGuiColModE", !10, i64 0, !10, i64 8, !6, i64 16}
!42 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !10, i64 0, !10, i64 8, !6, i64 16}
!43 = !{!"_ZTS8ImVectorIP6ImFontE", !10, i64 0, !10, i64 8, !6, i64 16}
!44 = !{!"_ZTS8ImVectorIP10ImDrawListE", !10, i64 0, !10, i64 8, !6, i64 16}
!45 = !{!"_ZTS18ImGuiTextEditState", !12, i64 0, !7, i64 4, !7, i64 2052, !10, i64 5128, !16, i64 5136, !16, i64 5140, !46, i64 5144, !16, i64 8364, !15, i64 8368, !17, i64 8376, !6, i64 8384, !16, i64 8392}
!46 = !{!"_ZTS17STB_TexteditState", !12, i64 0, !12, i64 4, !12, 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, !16, i64 20, !47, i64 24}
!47 = !{!"_ZTS12StbUndoState", !7, i64 0, !7, i64 1188, !48, i64 3186, !48, i64 3188, !48, i64 3190, !48, i64 3192}
!48 = !{!"short", !7, i64 0}
!49 = !{!14, !12, i64 456}
!50 = !{!14, !12, i64 464}
!51 = !{!39, !12, i64 3784}
!52 = !{!45, !16, i64 5136}
!53 = !{i64 0, i64 4, !29, i64 4, i64 4, !29}
!54 = !{!45, !12, i64 0}
!55 = !{!45, !16, i64 5140}
!56 = !{!45, !12, i64 5144}
!57 = !{!45, !12, i64 5148}
!58 = !{!45, !12, i64 5152}
!59 = !{!39, !17, i64 3797}
!60 = !{!45, !10, i64 5128}
!61 = !{!45, !6, i64 8384}
!62 = !{!45, !16, i64 8392}
!63 = !{!39, !16, i64 216}
!64 = !{!19, !16, i64 0}
!65 = !{!33, !16, i64 28}
!66 = !{!45, !17, i64 8376}
!67 = !{!48, !48, i64 0}
!68 = distinct !{!68, !69}
!69 = !{!"llvm.loop.mustprogress"}
!70 = !{!39, !6, i64 176}
!71 = !{!39, !6, i64 168}
!72 = !{!7, !7, i64 0}
!73 = distinct !{!73, !69}
!74 = !{!39, !16, i64 16}
!75 = !{!45, !16, i64 8364}
!76 = !{!77, !12, i64 0}
!77 = !{!"_ZTS25ImGuiTextEditCallbackData", !12, i64 0, !12, i64 4, !6, i64 8, !48, i64 16, !12, i64 20, !6, i64 24, !10, i64 32, !17, i64 40, !12, i64 44, !12, i64 48, !12, i64 52}
!78 = !{!77, !12, i64 20}
!79 = !{!77, !6, i64 24}
!80 = !{!77, !10, i64 32}
!81 = !{!77, !17, i64 40}
!82 = !{!77, !12, i64 4}
!83 = !{!77, !6, i64 8}
!84 = !{!77, !12, i64 44}
!85 = !{!77, !12, i64 48}
!86 = !{!77, !12, i64 52}
!87 = !{!33, !16, i64 36}
!88 = !{!14, !6, i64 440}
!89 = !{!35, !6, i64 192}
!90 = !{!19, !16, i64 8}
!91 = !{!19, !16, i64 4}
!92 = !{!33, !16, i64 32}


; 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.ImGuiAabb = type { %struct.ImVec2, %struct.ImVec2 }
%struct.ImVec2 = type { float, float }
%struct.ImGuiTextEditCallbackData = type { i32, i32, ptr, i16, i32, ptr, i64, i8, i32, i32, i32 }

@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZL6GImGui = external hidden local_unnamed_addr global ptr, align 8
@.str.10 = external hidden unnamed_addr constant [96 x i8], align 1
@_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8 = external hidden global [3073 x i8], align 16
@.str.103 = external hidden unnamed_addr constant [19 x i8], align 1
@__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv = external hidden unnamed_addr constant [104 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [29 x i8], align 1

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZL9ImStrlenWPKt(ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZL14ImFormatStringPcmPKcz(ptr noundef, i64 noundef, ptr noundef, ...) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef %0, ptr noundef %1, i64 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #3 {
  %7 = alloca i32, align 4
  %8 = alloca %struct.ImGuiAabb, align 8
  %9 = alloca %struct.ImVec2, align 8
  %10 = alloca %struct.ImVec2, align 8
  %11 = alloca %struct.ImVec2, align 4
  %12 = alloca %struct.ImVec2, align 8
  %13 = alloca %struct.ImGuiAabb, align 4
  %14 = alloca %struct.ImVec2, align 8
  %15 = alloca %struct.ImVec2, align 4
  %16 = alloca %struct.ImVec2, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %struct.ImGuiTextEditCallbackData, align 8
  %20 = alloca %struct.ImVec2, align 4
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 8
  %23 = alloca %struct.ImVec2, align 8
  %24 = alloca %struct.ImVec2, align 8
  %25 = alloca %struct.ImVec2, align 8
  %26 = alloca %struct.ImVec2, align 8
  %27 = alloca %struct.ImVec2, align 8
  %28 = alloca %struct.ImVec2, align 8
  %29 = alloca %struct.ImVec2, align 8
  %30 = alloca %struct.ImVec2, align 8
  %31 = alloca %struct.ImVec2, align 8
  %32 = alloca %struct.ImVec2, align 8
  %33 = alloca %struct.ImVec2, align 8
  %34 = alloca %struct.ImVec2, align 8
  %35 = alloca %struct.ImVec2, align 4
  %36 = alloca %struct.ImVec2, align 8
  %37 = alloca %struct.ImVec2, align 8
  %38 = alloca %struct.ImVec2, align 4
  %39 = alloca %struct.ImVec2, align 8
  %40 = alloca %struct.ImVec2, align 8
  %41 = load ptr, ptr @_ZL6GImGui, align 8, !tbaa !5
  %42 = tail call noundef ptr @_ZL16GetCurrentWindowv()
  %43 = getelementptr inbounds i8, ptr %42, i64 68
  %44 = load i8, ptr %43, align 4, !tbaa !9, !range !25, !noundef !26
  %45 = trunc nuw i8 %44 to i1
  br i1 %45, label %625, label %46

46:                                               ; preds = %6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  %47 = tail call noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480) %42, ptr noundef %0)
  store i32 %47, ptr %7, align 4, !tbaa !27
  %48 = tail call noundef float @_ZN5ImGui13CalcItemWidthEv()
  %49 = 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 16, ptr nonnull %8) #10
  %50 = getelementptr inbounds i8, ptr %42, i64 96
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %.sroa.0168.4.vec.extract = extractelement <2 x float> %49, i64 1
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef %48, float noundef %.sroa.0168.4.vec.extract)
  %51 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(8) %11)
  store <2 x float> %51, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  %52 = getelementptr inbounds i8, ptr %41, i64 2988
  %53 = call <2 x float> @_ZmlRK6ImVec2f(ptr noundef nonnull align 4 dereferenceable(8) %52, float noundef 2.000000e+00)
  store <2 x float> %53, ptr %12, align 8
  %54 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %10, ptr noundef nonnull align 4 dereferenceable(8) %12)
  store <2 x float> %54, ptr %9, align 8
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %8, ptr noundef nonnull align 4 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(8) %9)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  %55 = getelementptr inbounds i8, ptr %8, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %.sroa.0168.0.vec.extract = extractelement <2 x float> %49, i64 0
  %56 = fcmp ogt float %.sroa.0168.0.vec.extract, 0.000000e+00
  br i1 %56, label %57, label %61

57:                                               ; preds = %46
  %58 = getelementptr inbounds i8, ptr %41, i64 3008
  %59 = load float, ptr %58, align 4, !tbaa !28
  %60 = fadd float %.sroa.0168.0.vec.extract, %59
  br label %61

61:                                               ; preds = %46, %57
  %62 = phi float [ %60, %57 ], [ 0.000000e+00, %46 ]
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %62, float noundef 0.000000e+00)
  %63 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %55, ptr noundef nonnull align 4 dereferenceable(8) %15)
  store <2 x float> %63, ptr %14, align 8
  call void @_ZN9ImGuiAabbC2ERK6ImVec2S2_(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(8) %14)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @_ZL8ItemSizeRK9ImGuiAabbP6ImVec2(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef null)
  %64 = call noundef zeroext i1 @_ZL7ItemAddRK9ImGuiAabbPKj(ptr noundef nonnull align 4 dereferenceable(16) %8, ptr noundef nonnull %7)
  br i1 %64, label %65, label %624

65:                                               ; preds = %61
  %66 = getelementptr inbounds i8, ptr %41, i64 4000
  %67 = getelementptr inbounds i8, ptr %41, i64 237
  %68 = load i8, ptr %67, align 1, !tbaa !30, !range !25, !noundef !26
  %69 = trunc nuw i8 %68 to i1
  %70 = getelementptr inbounds i8, ptr %41, i64 238
  %71 = load i8, ptr %70, align 2, !tbaa !32, !range !25, !noundef !26
  %72 = trunc nuw i8 %71 to i1
  %73 = getelementptr inbounds i8, ptr %41, i64 3788
  %74 = load i32, ptr %73, align 4, !tbaa !33
  %75 = load i32, ptr %7, align 4, !tbaa !27
  %76 = icmp eq i32 %74, %75
  %77 = and i32 %3, 64
  %78 = icmp eq i32 %77, 0
  %79 = call noundef zeroext i1 @_ZN11ImGuiWindow17FocusItemRegisterEbb(ptr noundef nonnull align 8 dereferenceable(480) %42, i1 noundef zeroext %76, i1 noundef zeroext %78)
  br i1 %79, label %80, label %86

80:                                               ; preds = %65
  %81 = getelementptr inbounds i8, ptr %42, i64 456
  %82 = load i32, ptr %81, align 8, !tbaa !44
  %83 = getelementptr inbounds i8, ptr %42, i64 464
  %84 = load i32, ptr %83, align 8, !tbaa !45
  %85 = icmp eq i32 %82, %84
  br label %86

86:                                               ; preds = %80, %65
  %87 = phi i1 [ false, %65 ], [ %85, %80 ]
  %88 = call noundef zeroext i1 @_ZL9IsHoveredRK9ImGuiAabbRKj(ptr noundef nonnull align 4 dereferenceable(16) %8, ptr noundef nonnull align 4 dereferenceable(4) %7)
  %.pre = load i32, ptr %7, align 4, !tbaa !27
  br i1 %88, label %89, label %.critedge328

89:                                               ; preds = %86
  %90 = getelementptr inbounds i8, ptr %41, i64 3784
  store i32 %.pre, ptr %90, align 8, !tbaa !46
  %91 = getelementptr inbounds i8, ptr %41, i64 808
  %92 = load i8, ptr %91, align 8, !tbaa !47, !range !25, !noundef !26
  %93 = trunc nuw i8 %92 to i1
  br label %.critedge328

.critedge328:                                     ; preds = %86, %89
  %94 = phi i1 [ %93, %89 ], [ false, %86 ]
  %95 = load i32, ptr %73, align 4, !tbaa !33
  %96 = icmp ne i32 %95, %.pre
  %97 = and i32 %3, 16
  %98 = icmp ne i32 %97, 0
  %99 = and i1 %98, %96
  %brmerge = select i1 %79, i1 true, i1 %94
  br i1 %brmerge, label %100, label %129

100:                                              ; preds = %.critedge328
  %.not = icmp eq i32 %95, %.pre
  br i1 %.not, label %127, label %101

101:                                              ; preds = %100
  %102 = getelementptr inbounds i8, ptr %41, i64 6052
  %103 = call noundef i64 (ptr, i64, ptr, ...) @_ZL14ImFormatStringPcmPKcz(ptr noundef nonnull %102, i64 noundef 3073, ptr noundef nonnull @.str.7, ptr noundef %1)
  %104 = getelementptr inbounds i8, ptr %41, i64 4004
  %105 = call noundef i64 @_ZL17ImTextStrFromUtf8PtmPKcS1_(ptr noundef nonnull %104, i64 noundef 1024, ptr noundef %1, ptr noundef null)
  %106 = getelementptr inbounds i8, ptr %41, i64 9136
  store float %48, ptr %106, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef -1.000000e+00, float noundef -1.000000e+00)
  %107 = getelementptr inbounds i8, ptr %41, i64 12368
  %108 = load i64, ptr %16, align 8
  store i64 %108, ptr %107, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  %109 = load i32, ptr %66, align 8, !tbaa !49
  %110 = load i32, ptr %7, align 4, !tbaa !27
  %.not303 = icmp eq i32 %109, %110
  br i1 %.not303, label %114, label %111

111:                                              ; preds = %101
  store i32 %110, ptr %66, align 8, !tbaa !49
  %112 = getelementptr inbounds i8, ptr %41, i64 9140
  store float 0.000000e+00, ptr %112, align 4, !tbaa !50
  %113 = getelementptr inbounds i8, ptr %41, i64 9144
  call void @_ZL29stb_textedit_initialize_stateP17STB_TexteditStatei(ptr noundef nonnull %113, i32 noundef 1)
  %spec.select = select i1 %87, i1 true, i1 %99
  br label %125

114:                                              ; preds = %101
  %115 = getelementptr inbounds i8, ptr %41, i64 9144
  %116 = load i32, ptr %115, align 8, !tbaa !51
  %117 = trunc i64 %105 to i32
  %118 = call noundef i32 @_ZL5ImMinii(i32 noundef %116, i32 noundef %117)
  store i32 %118, ptr %115, align 8, !tbaa !51
  %119 = getelementptr inbounds i8, ptr %41, i64 9148
  %120 = load i32, ptr %119, align 4, !tbaa !52
  %121 = call noundef i32 @_ZL5ImMinii(i32 noundef %120, i32 noundef %117)
  store i32 %121, ptr %119, align 4, !tbaa !52
  %122 = getelementptr inbounds i8, ptr %41, i64 9152
  %123 = load i32, ptr %122, align 8, !tbaa !53
  %124 = call noundef i32 @_ZL5ImMinii(i32 noundef %123, i32 noundef %117)
  store i32 %124, ptr %122, align 8, !tbaa !53
  br label %125

125:                                              ; preds = %111, %114
  %.0277 = phi i1 [ %99, %114 ], [ %spec.select, %111 ]
  %.not362 = xor i1 %87, true
  %.not353 = select i1 %79, i1 %.not362, i1 false
  %126 = select i1 %94, i1 %69, i1 false
  %or.cond354 = select i1 %.not353, i1 true, i1 %126
  %spec.select355 = select i1 %or.cond354, i1 true, i1 %.0277
  %.pre365 = load i32, ptr %7, align 4, !tbaa !27
  br label %127

127:                                              ; preds = %125, %100
  %128 = phi i32 [ %.pre, %100 ], [ %.pre365, %125 ]
  %.2279 = phi i1 [ %99, %100 ], [ %spec.select355, %125 ]
  call void @_ZL11SetActiveIdj(i32 noundef %128)
  call void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef nonnull %42)
  br label %135

129:                                              ; preds = %.critedge328
  %130 = getelementptr inbounds i8, ptr %41, i64 808
  %131 = load i8, ptr %130, align 8, !tbaa !47, !range !25, !noundef !26
  %132 = trunc nuw i8 %131 to i1
  %133 = icmp eq i32 %95, %.pre
  %or.cond = select i1 %132, i1 %133, i1 false
  br i1 %or.cond, label %134, label %135

134:                                              ; preds = %129
  call void @_ZL11SetActiveIdj(i32 noundef 0)
  br label %135

135:                                              ; preds = %129, %134, %127
  %.3 = phi i1 [ %.2279, %127 ], [ %99, %134 ], [ %99, %129 ]
  %136 = load i32, ptr %73, align 4, !tbaa !33
  %137 = load i32, ptr %7, align 4, !tbaa !27
  %138 = icmp eq i32 %136, %137
  br i1 %138, label %139, label %531

139:                                              ; preds = %135
  %140 = getelementptr inbounds i8, ptr %41, i64 224
  %141 = load i8, ptr %140, align 8, !tbaa !47, !range !25, !noundef !26
  %142 = xor i8 %141, 1
  %143 = getelementptr inbounds i8, ptr %41, i64 3797
  store i8 %142, ptr %143, align 1, !tbaa !54
  %144 = call i64 @llvm.umin.i64(i64 %2, i64 1024)
  %145 = getelementptr inbounds i8, ptr %41, i64 9128
  store i64 %144, ptr %145, align 8, !tbaa !55
  %146 = call noundef ptr @_ZNK11ImGuiWindow4FontEv(ptr noundef nonnull align 8 dereferenceable(480) %42)
  %147 = getelementptr inbounds i8, ptr %41, i64 12384
  store ptr %146, ptr %147, align 8, !tbaa !56
  %148 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %42)
  %149 = getelementptr inbounds i8, ptr %41, i64 12392
  store float %148, ptr %149, align 8, !tbaa !57
  %150 = getelementptr inbounds i8, ptr %41, i64 216
  %151 = load float, ptr %150, align 8, !tbaa !58
  %152 = load float, ptr %8, align 8, !tbaa !59
  %153 = fsub float %151, %152
  %154 = load float, ptr %52, align 4, !tbaa !60
  %155 = fsub float %153, %154
  %156 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %42)
  %157 = fmul float %156, 5.000000e-01
  call void @_ZN18ImGuiTextEditState18UpdateScrollOffsetEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br i1 %.3, label %163, label %158

158:                                              ; preds = %139
  br i1 %88, label %159, label %165

159:                                              ; preds = %158
  %160 = getelementptr inbounds i8, ptr %41, i64 876
  %161 = load i8, ptr %160, align 4, !tbaa !47, !range !25, !noundef !26
  %162 = trunc nuw i8 %161 to i1
  br i1 %162, label %163, label %165

163:                                              ; preds = %159, %139
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  %164 = getelementptr inbounds i8, ptr %41, i64 12376
  store i8 1, ptr %164, align 8, !tbaa !61
  br label %190

165:                                              ; preds = %159, %158
  %166 = getelementptr inbounds i8, ptr %41, i64 808
  %167 = load i8, ptr %166, align 8, !tbaa !47, !range !25, !noundef !26
  %168 = trunc nuw i8 %167 to i1
  br i1 %168, label %169, label %178

169:                                              ; preds = %165
  %170 = getelementptr inbounds i8, ptr %41, i64 12376
  %171 = load i8, ptr %170, align 8, !tbaa !61, !range !25, !noundef !26
  %172 = trunc nuw i8 %171 to i1
  br i1 %172, label %178, label %173

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %41, i64 9144
  %175 = getelementptr inbounds i8, ptr %41, i64 9140
  %176 = load float, ptr %175, align 4, !tbaa !50
  %177 = fadd float %155, %176
  call void @_ZL18stb_textedit_clickP18ImGuiTextEditStateP17STB_TexteditStateff(ptr noundef nonnull %66, ptr noundef nonnull %174, float noundef %177, float noundef %157)
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br label %190

178:                                              ; preds = %169, %165
  %179 = load i8, ptr %140, align 8, !tbaa !47, !range !25, !noundef !26
  %180 = trunc nuw i8 %179 to i1
  br i1 %180, label %181, label %190

181:                                              ; preds = %178
  %182 = getelementptr inbounds i8, ptr %41, i64 12376
  %183 = load i8, ptr %182, align 8, !tbaa !61, !range !25, !noundef !26
  %184 = trunc nuw i8 %183 to i1
  br i1 %184, label %190, label %185

185:                                              ; preds = %181
  %186 = getelementptr inbounds i8, ptr %41, i64 9144
  %187 = getelementptr inbounds i8, ptr %41, i64 9140
  %188 = load float, ptr %187, align 4, !tbaa !50
  %189 = fadd float %155, %188
  call void @_ZL17stb_textedit_dragP18ImGuiTextEditStateP17STB_TexteditStateff(ptr noundef nonnull %66, ptr noundef nonnull %186, float noundef %189, float noundef %157)
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br label %190

190:                                              ; preds = %173, %185, %181, %178, %163
  %191 = getelementptr inbounds i8, ptr %41, i64 12376
  %192 = load i8, ptr %191, align 8, !tbaa !61, !range !25, !noundef !26
  %193 = trunc nuw i8 %192 to i1
  br i1 %193, label %194, label %198

194:                                              ; preds = %190
  %195 = load i8, ptr %140, align 8, !tbaa !47, !range !25, !noundef !26
  %196 = trunc nuw i8 %195 to i1
  br i1 %196, label %198, label %197

197:                                              ; preds = %194
  store i8 0, ptr %191, align 8, !tbaa !61
  br label %198

198:                                              ; preds = %197, %194, %190
  %199 = getelementptr inbounds i8, ptr %41, i64 752
  %200 = load i16, ptr %199, align 8, !tbaa !62
  %.not304 = icmp eq i16 %200, 0
  br i1 %.not304, label %320, label %.preheader

.preheader:                                       ; preds = %198
  %201 = load i16, ptr %199, align 2, !tbaa !62
  %.not305 = icmp eq i16 %201, 0
  br i1 %.not305, label %.critedge, label %202

.critedge:                                        ; preds = %319, %.preheader.16, %.preheader.15, %.preheader.14, %.preheader.13, %.preheader.12, %.preheader.11, %.preheader.10, %.preheader.9, %.preheader.8, %.preheader.7, %.preheader.6, %.preheader.5, %.preheader.4, %.preheader.3, %.preheader.2, %.preheader.1, %.preheader
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(34) %199, i8 0, i64 34, i1 false)
  br label %320

202:                                              ; preds = %.preheader
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %203 = zext i16 %201 to i32
  store i32 %203, ptr %17, align 4, !tbaa !27
  %204 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %204, label %205, label %.preheader.1

205:                                              ; preds = %202
  %206 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %206)
  br label %.preheader.1

.preheader.1:                                     ; preds = %205, %202
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %207 = getelementptr inbounds i8, ptr %41, i64 754
  %208 = load i16, ptr %207, align 2, !tbaa !62
  %.not305.1 = icmp eq i16 %208, 0
  br i1 %.not305.1, label %.critedge, label %209

209:                                              ; preds = %.preheader.1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %210 = zext i16 %208 to i32
  store i32 %210, ptr %17, align 4, !tbaa !27
  %211 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %211, label %212, label %.preheader.2

212:                                              ; preds = %209
  %213 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %213)
  br label %.preheader.2

.preheader.2:                                     ; preds = %212, %209
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %214 = getelementptr inbounds i8, ptr %41, i64 756
  %215 = load i16, ptr %214, align 2, !tbaa !62
  %.not305.2 = icmp eq i16 %215, 0
  br i1 %.not305.2, label %.critedge, label %216

216:                                              ; preds = %.preheader.2
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %217 = zext i16 %215 to i32
  store i32 %217, ptr %17, align 4, !tbaa !27
  %218 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %218, label %219, label %.preheader.3

219:                                              ; preds = %216
  %220 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %220)
  br label %.preheader.3

.preheader.3:                                     ; preds = %219, %216
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %221 = getelementptr inbounds i8, ptr %41, i64 758
  %222 = load i16, ptr %221, align 2, !tbaa !62
  %.not305.3 = icmp eq i16 %222, 0
  br i1 %.not305.3, label %.critedge, label %223

223:                                              ; preds = %.preheader.3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %224 = zext i16 %222 to i32
  store i32 %224, ptr %17, align 4, !tbaa !27
  %225 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %225, label %226, label %.preheader.4

226:                                              ; preds = %223
  %227 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %227)
  br label %.preheader.4

.preheader.4:                                     ; preds = %226, %223
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %228 = getelementptr inbounds i8, ptr %41, i64 760
  %229 = load i16, ptr %228, align 2, !tbaa !62
  %.not305.4 = icmp eq i16 %229, 0
  br i1 %.not305.4, label %.critedge, label %230

230:                                              ; preds = %.preheader.4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %231 = zext i16 %229 to i32
  store i32 %231, ptr %17, align 4, !tbaa !27
  %232 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %232, label %233, label %.preheader.5

233:                                              ; preds = %230
  %234 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %234)
  br label %.preheader.5

.preheader.5:                                     ; preds = %233, %230
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %235 = getelementptr inbounds i8, ptr %41, i64 762
  %236 = load i16, ptr %235, align 2, !tbaa !62
  %.not305.5 = icmp eq i16 %236, 0
  br i1 %.not305.5, label %.critedge, label %237

237:                                              ; preds = %.preheader.5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %238 = zext i16 %236 to i32
  store i32 %238, ptr %17, align 4, !tbaa !27
  %239 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %239, label %240, label %.preheader.6

240:                                              ; preds = %237
  %241 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %241)
  br label %.preheader.6

.preheader.6:                                     ; preds = %240, %237
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %242 = getelementptr inbounds i8, ptr %41, i64 764
  %243 = load i16, ptr %242, align 2, !tbaa !62
  %.not305.6 = icmp eq i16 %243, 0
  br i1 %.not305.6, label %.critedge, label %244

244:                                              ; preds = %.preheader.6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %245 = zext i16 %243 to i32
  store i32 %245, ptr %17, align 4, !tbaa !27
  %246 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %246, label %247, label %.preheader.7

247:                                              ; preds = %244
  %248 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %248)
  br label %.preheader.7

.preheader.7:                                     ; preds = %247, %244
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %249 = getelementptr inbounds i8, ptr %41, i64 766
  %250 = load i16, ptr %249, align 2, !tbaa !62
  %.not305.7 = icmp eq i16 %250, 0
  br i1 %.not305.7, label %.critedge, label %251

251:                                              ; preds = %.preheader.7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %252 = zext i16 %250 to i32
  store i32 %252, ptr %17, align 4, !tbaa !27
  %253 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %253, label %254, label %.preheader.8

254:                                              ; preds = %251
  %255 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %255)
  br label %.preheader.8

.preheader.8:                                     ; preds = %254, %251
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %256 = getelementptr inbounds i8, ptr %41, i64 768
  %257 = load i16, ptr %256, align 2, !tbaa !62
  %.not305.8 = icmp eq i16 %257, 0
  br i1 %.not305.8, label %.critedge, label %258

258:                                              ; preds = %.preheader.8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %259 = zext i16 %257 to i32
  store i32 %259, ptr %17, align 4, !tbaa !27
  %260 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %260, label %261, label %.preheader.9

261:                                              ; preds = %258
  %262 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %262)
  br label %.preheader.9

.preheader.9:                                     ; preds = %261, %258
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %263 = getelementptr inbounds i8, ptr %41, i64 770
  %264 = load i16, ptr %263, align 2, !tbaa !62
  %.not305.9 = icmp eq i16 %264, 0
  br i1 %.not305.9, label %.critedge, label %265

265:                                              ; preds = %.preheader.9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %266 = zext i16 %264 to i32
  store i32 %266, ptr %17, align 4, !tbaa !27
  %267 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %267, label %268, label %.preheader.10

268:                                              ; preds = %265
  %269 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %269)
  br label %.preheader.10

.preheader.10:                                    ; preds = %268, %265
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %270 = getelementptr inbounds i8, ptr %41, i64 772
  %271 = load i16, ptr %270, align 2, !tbaa !62
  %.not305.10 = icmp eq i16 %271, 0
  br i1 %.not305.10, label %.critedge, label %272

272:                                              ; preds = %.preheader.10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %273 = zext i16 %271 to i32
  store i32 %273, ptr %17, align 4, !tbaa !27
  %274 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %274, label %275, label %.preheader.11

275:                                              ; preds = %272
  %276 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %276)
  br label %.preheader.11

.preheader.11:                                    ; preds = %275, %272
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %277 = getelementptr inbounds i8, ptr %41, i64 774
  %278 = load i16, ptr %277, align 2, !tbaa !62
  %.not305.11 = icmp eq i16 %278, 0
  br i1 %.not305.11, label %.critedge, label %279

279:                                              ; preds = %.preheader.11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %280 = zext i16 %278 to i32
  store i32 %280, ptr %17, align 4, !tbaa !27
  %281 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %281, label %282, label %.preheader.12

282:                                              ; preds = %279
  %283 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %283)
  br label %.preheader.12

.preheader.12:                                    ; preds = %282, %279
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %284 = getelementptr inbounds i8, ptr %41, i64 776
  %285 = load i16, ptr %284, align 2, !tbaa !62
  %.not305.12 = icmp eq i16 %285, 0
  br i1 %.not305.12, label %.critedge, label %286

286:                                              ; preds = %.preheader.12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %287 = zext i16 %285 to i32
  store i32 %287, ptr %17, align 4, !tbaa !27
  %288 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %288, label %289, label %.preheader.13

289:                                              ; preds = %286
  %290 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %290)
  br label %.preheader.13

.preheader.13:                                    ; preds = %289, %286
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %291 = getelementptr inbounds i8, ptr %41, i64 778
  %292 = load i16, ptr %291, align 2, !tbaa !62
  %.not305.13 = icmp eq i16 %292, 0
  br i1 %.not305.13, label %.critedge, label %293

293:                                              ; preds = %.preheader.13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %294 = zext i16 %292 to i32
  store i32 %294, ptr %17, align 4, !tbaa !27
  %295 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %295, label %296, label %.preheader.14

296:                                              ; preds = %293
  %297 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %297)
  br label %.preheader.14

.preheader.14:                                    ; preds = %296, %293
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %298 = getelementptr inbounds i8, ptr %41, i64 780
  %299 = load i16, ptr %298, align 2, !tbaa !62
  %.not305.14 = icmp eq i16 %299, 0
  br i1 %.not305.14, label %.critedge, label %300

300:                                              ; preds = %.preheader.14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %301 = zext i16 %299 to i32
  store i32 %301, ptr %17, align 4, !tbaa !27
  %302 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %302, label %303, label %.preheader.15

303:                                              ; preds = %300
  %304 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %304)
  br label %.preheader.15

.preheader.15:                                    ; preds = %303, %300
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %305 = getelementptr inbounds i8, ptr %41, i64 782
  %306 = load i16, ptr %305, align 2, !tbaa !62
  %.not305.15 = icmp eq i16 %306, 0
  br i1 %.not305.15, label %.critedge, label %307

307:                                              ; preds = %.preheader.15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %308 = zext i16 %306 to i32
  store i32 %308, ptr %17, align 4, !tbaa !27
  %309 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %309, label %310, label %.preheader.16

310:                                              ; preds = %307
  %311 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %311)
  br label %.preheader.16

.preheader.16:                                    ; preds = %310, %307
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %312 = getelementptr inbounds i8, ptr %41, i64 784
  %313 = load i16, ptr %312, align 2, !tbaa !62
  %.not305.16 = icmp eq i16 %313, 0
  br i1 %.not305.16, label %.critedge, label %314

314:                                              ; preds = %.preheader.16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  %315 = zext i16 %313 to i32
  store i32 %315, ptr %17, align 4, !tbaa !27
  %316 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %17, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %316, label %317, label %319

317:                                              ; preds = %314
  %318 = load i32, ptr %17, align 4, !tbaa !27
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %318)
  br label %319

319:                                              ; preds = %317, %314
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  br label %.critedge

320:                                              ; preds = %.critedge, %198
  %321 = select i1 %72, i32 131072, i32 0
  %322 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 1, i1 noundef zeroext true)
  br i1 %322, label %323, label %325

323:                                              ; preds = %320
  %.v312 = select i1 %69, i32 65548, i32 65536
  %324 = or disjoint i32 %321, %.v312
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %324)
  br label %.critedge336

325:                                              ; preds = %320
  %326 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 2, i1 noundef zeroext true)
  br i1 %326, label %327, label %329

327:                                              ; preds = %325
  %.v311 = select i1 %69, i32 65549, i32 65537
  %328 = or disjoint i32 %321, %.v311
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %328)
  br label %.critedge336

329:                                              ; preds = %325
  %330 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 5, i1 noundef zeroext true)
  br i1 %330, label %331, label %333

331:                                              ; preds = %329
  %.v310 = select i1 %69, i32 65542, i32 65540
  %332 = or disjoint i32 %321, %.v310
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %332)
  br label %.critedge336

333:                                              ; preds = %329
  %334 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 6, i1 noundef zeroext true)
  br i1 %334, label %335, label %337

335:                                              ; preds = %333
  %.v = select i1 %69, i32 65543, i32 65541
  %336 = or disjoint i32 %321, %.v
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %336)
  br label %.critedge336

337:                                              ; preds = %333
  %338 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 7, i1 noundef zeroext true)
  br i1 %338, label %339, label %341

339:                                              ; preds = %337
  %340 = or disjoint i32 %321, 65544
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %340)
  br label %.critedge336

341:                                              ; preds = %337
  %342 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 8, i1 noundef zeroext true)
  br i1 %342, label %343, label %345

343:                                              ; preds = %341
  %344 = or disjoint i32 %321, 65545
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %344)
  br label %.critedge336

345:                                              ; preds = %341
  %346 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 9, i1 noundef zeroext true)
  br i1 %346, label %347, label %348

347:                                              ; preds = %345
  call void @_ZL11SetActiveIdj(i32 noundef 0)
  br label %.critedge336

348:                                              ; preds = %345
  %349 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 10, i1 noundef zeroext true)
  br i1 %349, label %350, label %351

350:                                              ; preds = %348
  call void @_ZL11SetActiveIdj(i32 noundef 0)
  br label %.critedge336

351:                                              ; preds = %348
  br i1 %69, label %352, label %.critedge336

352:                                              ; preds = %351
  %353 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 16, i1 noundef zeroext true)
  br i1 %353, label %354, label %355

354:                                              ; preds = %352
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef 65546)
  br label %.critedge336

355:                                              ; preds = %352
  %356 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 15, i1 noundef zeroext true)
  br i1 %356, label %357, label %.critedge333

357:                                              ; preds = %355
  call void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef 65547)
  br label %.critedge336

.critedge333:                                     ; preds = %355
  %358 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 11, i1 noundef zeroext true)
  br i1 %358, label %359, label %.critedge334

359:                                              ; preds = %.critedge333
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br label %.critedge336

.critedge334:                                     ; preds = %.critedge333
  %360 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %360, label %363, label %361

361:                                              ; preds = %.critedge334
  %362 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 12, i1 noundef zeroext true)
  br i1 %362, label %363, label %.critedge335

363:                                              ; preds = %361, %.critedge334
  %364 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 14, i1 noundef zeroext true)
  br i1 %364, label %365, label %368

365:                                              ; preds = %363
  %366 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br i1 %366, label %368, label %367

367:                                              ; preds = %365
  call void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br label %368

368:                                              ; preds = %367, %365, %363
  %369 = getelementptr inbounds i8, ptr %41, i64 176
  %370 = load ptr, ptr %369, align 8, !tbaa !63
  %.not309 = icmp eq ptr %370, null
  br i1 %.not309, label %401, label %371

371:                                              ; preds = %368
  %372 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br i1 %372, label %373, label %379

373:                                              ; preds = %371
  %374 = getelementptr inbounds i8, ptr %41, i64 9148
  %375 = load i32, ptr %374, align 4, !tbaa !52
  %376 = getelementptr inbounds i8, ptr %41, i64 9152
  %377 = load i32, ptr %376, align 8, !tbaa !53
  %378 = call noundef i32 @_ZL5ImMinii(i32 noundef %375, i32 noundef %377)
  br label %379

379:                                              ; preds = %371, %373
  %380 = phi i32 [ %378, %373 ], [ 0, %371 ]
  %381 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br i1 %381, label %382, label %388

382:                                              ; preds = %379
  %383 = getelementptr inbounds i8, ptr %41, i64 9148
  %384 = load i32, ptr %383, align 4, !tbaa !52
  %385 = getelementptr inbounds i8, ptr %41, i64 9152
  %386 = load i32, ptr %385, align 8, !tbaa !53
  %387 = call noundef i32 @_ZL5ImMaxii(i32 noundef %384, i32 noundef %386)
  br label %392

388:                                              ; preds = %379
  %389 = getelementptr inbounds i8, ptr %41, i64 4004
  %390 = call noundef i64 @_ZL9ImStrlenWPKt(ptr noundef nonnull %389)
  %391 = trunc i64 %390 to i32
  br label %392

392:                                              ; preds = %388, %382
  %393 = phi i32 [ %387, %382 ], [ %391, %388 ]
  %394 = getelementptr inbounds i8, ptr %41, i64 4004
  %395 = sext i32 %380 to i64
  %396 = getelementptr inbounds i16, ptr %394, i64 %395
  %397 = sext i32 %393 to i64
  %398 = getelementptr inbounds i16, ptr %394, i64 %397
  %399 = call noundef i64 @_ZL15ImTextStrToUtf8PcmPKtS1_(ptr noundef nonnull @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, i64 noundef 3073, ptr noundef nonnull %396, ptr noundef nonnull %398)
  %400 = load ptr, ptr %369, align 8, !tbaa !63
  call void %400(ptr noundef nonnull @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8)
  br label %401

401:                                              ; preds = %392, %368
  br i1 %364, label %402, label %.critedge336

402:                                              ; preds = %401
  %403 = getelementptr inbounds i8, ptr %41, i64 9144
  %404 = call noundef i32 @_ZL16stb_textedit_cutP18ImGuiTextEditStateP17STB_TexteditState(ptr noundef nonnull %66, ptr noundef nonnull %403)
  br label %.critedge336

.critedge335:                                     ; preds = %361
  %405 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 13, i1 noundef zeroext true)
  br i1 %405, label %406, label %.critedge336

406:                                              ; preds = %.critedge335
  %407 = getelementptr inbounds i8, ptr %41, i64 168
  %408 = load ptr, ptr %407, align 8, !tbaa !64
  %.not306 = icmp eq ptr %408, null
  br i1 %.not306, label %.critedge336, label %409

409:                                              ; preds = %406
  %410 = call noundef ptr %408()
  %.not307 = icmp eq ptr %410, null
  br i1 %.not307, label %.critedge336, label %411

411:                                              ; preds = %409
  %412 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %410) #11
  %413 = shl i64 %412, 1
  %414 = add i64 %413, 2
  %415 = call noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef %414)
  %416 = load i8, ptr %410, align 1, !tbaa !65
  %.not308359 = icmp eq i8 %416, 0
  br i1 %.not308359, label %.loopexit.thread, label %.lr.ph

.loopexit.thread:                                 ; preds = %411
  store i16 0, ptr %415, align 2, !tbaa !62
  br label %440

.lr.ph:                                           ; preds = %411, %432
  %.0286361 = phi i32 [ %.1287, %432 ], [ 0, %411 ]
  %.0291360 = phi ptr [ %419, %432 ], [ %410, %411 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #10
  %417 = call noundef i32 @_ZL18ImTextCharFromUtf8PjPKcS1_(ptr noundef nonnull %18, ptr noundef nonnull %.0291360, ptr noundef null)
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i8, ptr %.0291360, i64 %418
  %420 = load i32, ptr %18, align 4, !tbaa !27
  %421 = icmp eq i32 %420, 0
  br i1 %421, label %.thread343, label %422

.thread343:                                       ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #10
  br label %.loopexit

422:                                              ; preds = %.lr.ph
  %423 = icmp ugt i32 %420, 65535
  br i1 %423, label %432, label %424, !llvm.loop !66

424:                                              ; preds = %422
  %425 = call noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef nonnull %18, i32 noundef %3, ptr noundef %4, ptr noundef %5)
  br i1 %425, label %426, label %432, !llvm.loop !66

426:                                              ; preds = %424
  %427 = load i32, ptr %18, align 4, !tbaa !27
  %428 = trunc i32 %427 to i16
  %429 = add nsw i32 %.0286361, 1
  %430 = sext i32 %.0286361 to i64
  %431 = getelementptr inbounds i16, ptr %415, i64 %430
  store i16 %428, ptr %431, align 2, !tbaa !62
  br label %432

432:                                              ; preds = %424, %422, %426
  %.1287 = phi i32 [ %429, %426 ], [ %.0286361, %422 ], [ %.0286361, %424 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #10
  %433 = load i8, ptr %419, align 1, !tbaa !65
  %.not308 = icmp eq i8 %433, 0
  br i1 %.not308, label %.loopexit, label %.lr.ph

.loopexit:                                        ; preds = %432, %.thread343
  %.0286357 = phi i32 [ %.0286361, %.thread343 ], [ %.1287, %432 ]
  %434 = sext i32 %.0286357 to i64
  %435 = getelementptr inbounds i16, ptr %415, i64 %434
  store i16 0, ptr %435, align 2, !tbaa !62
  %436 = icmp sgt i32 %.0286357, 0
  br i1 %436, label %437, label %440

437:                                              ; preds = %.loopexit
  %438 = getelementptr inbounds i8, ptr %41, i64 9144
  %439 = call noundef i32 @_ZL18stb_textedit_pasteP18ImGuiTextEditStateP17STB_TexteditStatePKti(ptr noundef nonnull %66, ptr noundef nonnull %438, ptr noundef nonnull %415, i32 noundef %.0286357)
  br label %440

440:                                              ; preds = %.loopexit.thread, %437, %.loopexit
  call void @_ZN5ImGui7MemFreeEPv(ptr noundef nonnull %415)
  br label %.critedge336

.critedge336:                                     ; preds = %351, %409, %440, %401, %402, %327, %335, %343, %350, %357, %406, %.critedge335, %359, %354, %347, %339, %331, %323
  %.0283 = phi i1 [ false, %323 ], [ false, %327 ], [ false, %331 ], [ false, %335 ], [ false, %339 ], [ false, %343 ], [ true, %347 ], [ false, %350 ], [ false, %354 ], [ false, %357 ], [ false, %359 ], [ false, %406 ], [ false, %.critedge335 ], [ false, %402 ], [ false, %401 ], [ false, %440 ], [ false, %409 ], [ false, %351 ]
  %.0282 = phi i1 [ false, %323 ], [ false, %327 ], [ false, %331 ], [ false, %335 ], [ false, %339 ], [ false, %343 ], [ false, %347 ], [ true, %350 ], [ false, %354 ], [ false, %357 ], [ false, %359 ], [ false, %406 ], [ false, %.critedge335 ], [ false, %402 ], [ false, %401 ], [ false, %440 ], [ false, %409 ], [ false, %351 ]
  %441 = getelementptr inbounds i8, ptr %41, i64 16
  %442 = load float, ptr %441, align 8, !tbaa !68
  %443 = getelementptr inbounds i8, ptr %41, i64 12364
  %444 = load float, ptr %443, align 4, !tbaa !69
  %445 = fadd float %442, %444
  store float %445, ptr %443, align 4, !tbaa !69
  call void @_ZN18ImGuiTextEditState18UpdateScrollOffsetEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br i1 %.0282, label %446, label %448

446:                                              ; preds = %.critedge336
  %447 = getelementptr inbounds i8, ptr %41, i64 6052
  br label %.sink.split

448:                                              ; preds = %.critedge336
  %449 = getelementptr inbounds i8, ptr %41, i64 4004
  %450 = call noundef i64 @_ZL15ImTextStrToUtf8PcmPKtS1_(ptr noundef nonnull @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, i64 noundef 3073, ptr noundef nonnull %449, ptr noundef null)
  %451 = and i32 %3, 448
  %.not313 = icmp eq i32 %451, 0
  br i1 %.not313, label %528, label %452

452:                                              ; preds = %448
  %.not314 = icmp eq ptr %4, null
  br i1 %.not314, label %453, label %454

453:                                              ; preds = %452
  call void @__assert_fail(ptr noundef nonnull @.str.103, ptr noundef nonnull @.str.10, i32 noundef 5707, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

454:                                              ; preds = %452
  br i1 %78, label %457, label %455

455:                                              ; preds = %454
  %456 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 0, i1 noundef zeroext true)
  br i1 %456, label %.critedge338.thread, label %457

457:                                              ; preds = %455, %454
  %458 = and i32 %3, 128
  %.not316 = icmp eq i32 %458, 0
  br i1 %.not316, label %.critedge338, label %459

459:                                              ; preds = %457
  %460 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 3, i1 noundef zeroext true)
  br i1 %460, label %.critedge338.thread, label %461

461:                                              ; preds = %459
  %462 = call noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef 4, i1 noundef zeroext true)
  br i1 %462, label %.critedge338.thread, label %.critedge338

.critedge338:                                     ; preds = %457, %461
  %463 = and i32 %3, 256
  %.not318 = icmp eq i32 %463, 0
  br i1 %.not318, label %528, label %.critedge338.thread

.critedge338.thread:                              ; preds = %459, %461, %455, %.critedge338
  %.0289352 = phi i32 [ 17, %.critedge338 ], [ 0, %455 ], [ 4, %461 ], [ 3, %459 ]
  %.0290351 = phi i32 [ 0, %.critedge338 ], [ 64, %455 ], [ 128, %461 ], [ 128, %459 ]
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %19) #10
  store i32 %.0290351, ptr %19, align 8, !tbaa !70
  %464 = getelementptr inbounds i8, ptr %19, i64 20
  store i32 %.0289352, ptr %464, align 4, !tbaa !72
  %465 = getelementptr inbounds i8, ptr %19, i64 24
  store ptr @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, ptr %465, align 8, !tbaa !73
  %466 = load i64, ptr %145, align 8, !tbaa !55
  %467 = getelementptr inbounds i8, ptr %19, i64 32
  store i64 %466, ptr %467, align 8, !tbaa !74
  %468 = getelementptr inbounds i8, ptr %19, i64 40
  store i8 0, ptr %468, align 8, !tbaa !75
  %469 = getelementptr inbounds i8, ptr %19, i64 4
  store i32 %3, ptr %469, align 4, !tbaa !76
  %470 = getelementptr inbounds i8, ptr %19, i64 8
  store ptr %5, ptr %470, align 8, !tbaa !77
  %471 = getelementptr inbounds i8, ptr %41, i64 9144
  %472 = load i32, ptr %471, align 8, !tbaa !51
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds i16, ptr %449, i64 %473
  %475 = call noundef i32 @_ZL29ImTextCountUtf8BytesFromWcharPKtS0_(ptr noundef nonnull %449, ptr noundef nonnull %474)
  %476 = getelementptr inbounds i8, ptr %19, i64 44
  store i32 %475, ptr %476, align 4, !tbaa !78
  %477 = getelementptr inbounds i8, ptr %41, i64 9148
  %478 = load i32, ptr %477, align 4, !tbaa !52
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds i16, ptr %449, i64 %479
  %481 = call noundef i32 @_ZL29ImTextCountUtf8BytesFromWcharPKtS0_(ptr noundef nonnull %449, ptr noundef nonnull %480)
  %482 = getelementptr inbounds i8, ptr %19, i64 48
  store i32 %481, ptr %482, align 8, !tbaa !79
  %483 = getelementptr inbounds i8, ptr %41, i64 9152
  %484 = load i32, ptr %483, align 8, !tbaa !53
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds i16, ptr %449, i64 %485
  %487 = call noundef i32 @_ZL29ImTextCountUtf8BytesFromWcharPKtS0_(ptr noundef nonnull %449, ptr noundef nonnull %486)
  %488 = getelementptr inbounds i8, ptr %19, i64 52
  store i32 %487, ptr %488, align 4, !tbaa !80
  %489 = call noundef i32 %4(ptr noundef nonnull %19)
  %490 = load ptr, ptr %465, align 8, !tbaa !73
  %491 = icmp eq ptr %490, @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8
  br i1 %491, label %493, label %492

492:                                              ; preds = %.critedge338.thread
  call void @__assert_fail(ptr noundef nonnull @.str.104, ptr noundef nonnull @.str.10, i32 noundef 5748, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

493:                                              ; preds = %.critedge338.thread
  %494 = load i64, ptr %467, align 8, !tbaa !74
  %495 = load i64, ptr %145, align 8, !tbaa !55
  %496 = icmp eq i64 %494, %495
  br i1 %496, label %498, label %497

497:                                              ; preds = %493
  call void @__assert_fail(ptr noundef nonnull @.str.105, ptr noundef nonnull @.str.10, i32 noundef 5749, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

498:                                              ; preds = %493
  %499 = load i32, ptr %469, align 4, !tbaa !76
  %500 = icmp eq i32 %499, %3
  br i1 %500, label %502, label %501

501:                                              ; preds = %498
  call void @__assert_fail(ptr noundef nonnull @.str.106, ptr noundef nonnull @.str.10, i32 noundef 5750, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPv) #12
  unreachable

502:                                              ; preds = %498
  %503 = load i32, ptr %476, align 4, !tbaa !78
  %.not319 = icmp eq i32 %503, %475
  br i1 %.not319, label %508, label %504

504:                                              ; preds = %502
  %505 = sext i32 %503 to i64
  %506 = getelementptr inbounds i8, ptr @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, i64 %505
  %507 = call noundef i32 @_ZL24ImTextCountCharsFromUtf8PKcS0_(ptr noundef nonnull @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, ptr noundef nonnull %506)
  store i32 %507, ptr %471, align 8, !tbaa !51
  br label %508

508:                                              ; preds = %504, %502
  %509 = load i32, ptr %482, align 8, !tbaa !79
  %.not320 = icmp eq i32 %509, %481
  br i1 %.not320, label %515, label %510

510:                                              ; preds = %508
  %511 = load ptr, ptr %465, align 8, !tbaa !73
  %512 = sext i32 %509 to i64
  %513 = getelementptr inbounds i8, ptr %511, i64 %512
  %514 = call noundef i32 @_ZL24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %511, ptr noundef %513)
  store i32 %514, ptr %477, align 4, !tbaa !52
  br label %515

515:                                              ; preds = %510, %508
  %516 = load i32, ptr %488, align 4, !tbaa !80
  %.not321 = icmp eq i32 %516, %487
  br i1 %.not321, label %522, label %517

517:                                              ; preds = %515
  %518 = load ptr, ptr %465, align 8, !tbaa !73
  %519 = sext i32 %516 to i64
  %520 = getelementptr inbounds i8, ptr %518, i64 %519
  %521 = call noundef i32 @_ZL24ImTextCountCharsFromUtf8PKcS0_(ptr noundef %518, ptr noundef %520)
  store i32 %521, ptr %483, align 8, !tbaa !53
  br label %522

522:                                              ; preds = %517, %515
  %523 = load i8, ptr %468, align 8, !tbaa !75, !range !25, !noundef !26
  %524 = trunc nuw i8 %523 to i1
  br i1 %524, label %525, label %527

525:                                              ; preds = %522
  %526 = call noundef i64 @_ZL17ImTextStrFromUtf8PtmPKcS1_(ptr noundef nonnull %449, i64 noundef 1024, ptr noundef nonnull @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, ptr noundef null)
  call void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br label %527

527:                                              ; preds = %525, %522
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %19) #10
  br label %528

528:                                              ; preds = %527, %.critedge338, %448
  %529 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, ptr noundef nonnull dereferenceable(1) %1) #11
  %.not322 = icmp eq i32 %529, 0
  br i1 %.not322, label %531, label %.sink.split

.sink.split:                                      ; preds = %528, %446
  %.sink = phi ptr [ %447, %446 ], [ @_ZZN5ImGui9InputTextEPKcPcmiPFiP25ImGuiTextEditCallbackDataEPvE13text_tmp_utf8, %528 ]
  %530 = call noundef i64 (ptr, i64, ptr, ...) @_ZL14ImFormatStringPcmPKcz(ptr noundef %1, i64 noundef %2, ptr noundef nonnull @.str.7, ptr noundef nonnull %.sink)
  br label %531

531:                                              ; preds = %.sink.split, %135, %528
  %.1284 = phi i1 [ %.0283, %528 ], [ false, %135 ], [ %.0283, %.sink.split ]
  %.1281 = phi i1 [ false, %528 ], [ false, %135 ], [ true, %.sink.split ]
  %.sroa.09.0.copyload = load <2 x float>, ptr %8, align 8
  %.sroa.08.0.copyload = load <2 x float>, ptr %55, align 8
  %532 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %42, i32 noundef 5, float noundef 1.000000e+00)
  %533 = getelementptr inbounds i8, ptr %41, i64 2996
  %534 = load float, ptr %533, align 4, !tbaa !81
  call void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float> %.sroa.09.0.copyload, <2 x float> %.sroa.08.0.copyload, i32 noundef %532, i1 noundef zeroext true, float noundef %534)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  %535 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %42)
  %536 = fadd float %535, 1.000000e+00
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef 0.000000e+00, float noundef %536)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef 0.000000e+00, float noundef 2.000000e+00)
  %537 = load i32, ptr %73, align 4, !tbaa !33
  %538 = load i32, ptr %7, align 4, !tbaa !27
  %539 = icmp eq i32 %537, %538
  br i1 %539, label %540, label %559

540:                                              ; preds = %531
  %541 = getelementptr inbounds i8, ptr %41, i64 9148
  %542 = load i32, ptr %541, align 4, !tbaa !52
  %543 = getelementptr inbounds i8, ptr %41, i64 9152
  %544 = load i32, ptr %543, align 8, !tbaa !53
  %.not323 = icmp eq i32 %542, %544
  br i1 %.not323, label %559, label %545

545:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  %546 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(8) %52)
  store <2 x float> %546, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  %547 = call noundef i32 @_ZL5ImMinii(i32 noundef %542, i32 noundef %544)
  %548 = call <2 x float> @_ZNK18ImGuiTextEditState28CalcDisplayOffsetFromCharIdxEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %547)
  store <2 x float> %548, ptr %24, align 8
  %549 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %23, ptr noundef nonnull align 4 dereferenceable(8) %24)
  store <2 x float> %549, ptr %22, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #10
  %550 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(8) %52)
  store <2 x float> %550, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #10
  %551 = call noundef i32 @_ZL5ImMaxii(i32 noundef %542, i32 noundef %544)
  %552 = call <2 x float> @_ZNK18ImGuiTextEditState28CalcDisplayOffsetFromCharIdxEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %551)
  store <2 x float> %552, ptr %27, align 8
  %553 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %27)
  store <2 x float> %553, ptr %25, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  %554 = getelementptr inbounds i8, ptr %42, i64 440
  %555 = load ptr, ptr %554, align 8, !tbaa !82
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #10
  %556 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %22, ptr noundef nonnull align 4 dereferenceable(8) %20)
  store <2 x float> %556, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #10
  %557 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %25, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %557, ptr %29, align 8
  %558 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %42, i32 noundef 37, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %555, ptr noundef nonnull align 4 dereferenceable(8) %28, ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef %558, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  br label %559

559:                                              ; preds = %540, %545, %531
  %560 = call noundef ptr @_ZNK11ImGuiWindow4FontEv(ptr noundef nonnull align 8 dereferenceable(480) %42)
  %561 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %42)
  %562 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(8) %52)
  %563 = load i32, ptr %73, align 4, !tbaa !33
  %564 = load i32, ptr %7, align 4, !tbaa !27
  %565 = icmp eq i32 %563, %564
  br i1 %565, label %566, label %569

566:                                              ; preds = %559
  %567 = getelementptr inbounds i8, ptr %41, i64 9140
  %568 = load float, ptr %567, align 4, !tbaa !50
  br label %569

569:                                              ; preds = %559, %566
  %570 = phi float [ %568, %566 ], [ 0.000000e+00, %559 ]
  call void @_ZN18ImGuiTextEditState25RenderTextScrolledClippedEP6ImFontfPKc6ImVec2ff(ptr noundef %560, float noundef %561, ptr noundef %1, <2 x float> %562, float noundef %48, float noundef %570)
  %571 = load i32, ptr %73, align 4, !tbaa !33
  %572 = load i32, ptr %7, align 4, !tbaa !27
  %573 = icmp eq i32 %571, %572
  br i1 %573, label %574, label %610

574:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #10
  %575 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(8) %52)
  store <2 x float> %575, ptr %31, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #10
  %576 = getelementptr inbounds i8, ptr %41, i64 9144
  %577 = load i32, ptr %576, align 8, !tbaa !51
  %578 = call <2 x float> @_ZNK18ImGuiTextEditState28CalcDisplayOffsetFromCharIdxEi(ptr noundef nonnull align 8 dereferenceable(8396) %66, i32 noundef %577)
  store <2 x float> %578, ptr %32, align 8
  %579 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %31, ptr noundef nonnull align 4 dereferenceable(8) %32)
  store <2 x float> %579, ptr %30, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  %580 = call noundef zeroext i1 @_ZNK18ImGuiTextEditState15CursorIsVisibleEv(ptr noundef nonnull align 8 dereferenceable(8396) %66)
  br i1 %580, label %581, label %589

581:                                              ; preds = %574
  %582 = getelementptr inbounds i8, ptr %42, i64 440
  %583 = load ptr, ptr %582, align 8, !tbaa !82
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #10
  %584 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %20)
  store <2 x float> %584, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %35, float noundef 0.000000e+00, float noundef 2.000000e+00)
  %585 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %34, ptr noundef nonnull align 4 dereferenceable(8) %35)
  store <2 x float> %585, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #10
  %586 = call <2 x float> @_ZplRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %30, ptr noundef nonnull align 4 dereferenceable(8) %21)
  store <2 x float> %586, ptr %37, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %38, float noundef 0.000000e+00, float noundef 3.000000e+00)
  %587 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %37, ptr noundef nonnull align 4 dereferenceable(8) %38)
  store <2 x float> %587, ptr %36, align 8
  %588 = call noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480) %42, i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104) %583, ptr noundef nonnull align 4 dereferenceable(8) %33, ptr noundef nonnull align 4 dereferenceable(8) %36, i32 noundef %588, float noundef 0.000000e+00, i32 noundef 15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #10
  br label %589

589:                                              ; preds = %581, %574
  %590 = getelementptr inbounds i8, ptr %41, i64 200
  %591 = load ptr, ptr %590, align 8, !tbaa !83
  %.not324 = icmp eq ptr %591, null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #10
  br i1 %.not324, label %.critedge2, label %592

592:                                              ; preds = %589
  %593 = getelementptr inbounds i8, ptr %41, i64 12368
  %594 = call <2 x float> @_ZmiRK6ImVec2S1_(ptr noundef nonnull align 4 dereferenceable(8) %593, ptr noundef nonnull align 4 dereferenceable(8) %30)
  store <2 x float> %594, ptr %39, align 8
  %595 = call noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8) %39)
  %596 = fcmp ogt float %595, 0x3F1A36E2E0000000
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #10
  br i1 %596, label %597, label %607

597:                                              ; preds = %592
  %598 = load ptr, ptr %590, align 8, !tbaa !83
  %599 = load float, ptr %30, align 8, !tbaa !84
  %600 = fptosi float %599 to i32
  %601 = add nsw i32 %600, -1
  %602 = getelementptr inbounds i8, ptr %30, i64 4
  %603 = load float, ptr %602, align 4, !tbaa !85
  %604 = call noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480) %42)
  %605 = fsub float %603, %604
  %606 = fptosi float %605 to i32
  call void %598(i32 noundef %601, i32 noundef %606)
  br label %607

.critedge2:                                       ; preds = %589
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #10
  br label %607

607:                                              ; preds = %.critedge2, %597, %592
  %608 = getelementptr inbounds i8, ptr %41, i64 12368
  %609 = load i64, ptr %30, align 8
  store i64 %609, ptr %608, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  br label %610

610:                                              ; preds = %607, %569
  br i1 %56, label %611, label %622

611:                                              ; preds = %610
  %612 = load float, ptr %55, align 8, !tbaa !86
  %613 = getelementptr inbounds i8, ptr %41, i64 3008
  %614 = load float, ptr %613, align 4, !tbaa !28
  %615 = fadd float %612, %614
  %616 = getelementptr inbounds i8, ptr %8, i64 4
  %617 = load float, ptr %616, align 4, !tbaa !87
  %618 = getelementptr inbounds i8, ptr %41, i64 2992
  %619 = load float, ptr %618, align 4, !tbaa !88
  %620 = fadd float %617, %619
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %40, float noundef %615, float noundef %620)
  %621 = load <2 x float>, ptr %40, align 8
  call void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float> %621, ptr noundef %0, ptr noundef null, i1 noundef zeroext true)
  br label %622

622:                                              ; preds = %611, %610
  %623 = and i32 %3, 32
  %.not325 = icmp eq i32 %623, 0
  %.1281..1284 = select i1 %.not325, i1 %.1281, i1 %.1284
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  br label %624

624:                                              ; preds = %61, %622
  %.1 = phi i1 [ %.1281..1284, %622 ], [ false, %61 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  br label %625

625:                                              ; preds = %6, %624
  %.2 = phi i1 [ %.1, %624 ], [ false, %6 ]
  ret i1 %.2
}

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11ImGuiWindow5GetIDEPKc(ptr noundef nonnull align 8 dereferenceable(480), ptr noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef float @_ZL11ImLengthSqrRK6ImVec2(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5ImGui8MemAllocEm(i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5ImGui7MemFreeEPv(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11ImGuiWindow17FocusItemRegisterEbb(ptr noundef nonnull align 8 dereferenceable(480), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef ptr @_ZL16GetCurrentWindowv() local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL15IsKeyPressedMapib(i32 noundef, i1 noundef zeroext) local_unnamed_addr #0

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

; 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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL11SetActiveIdj(i32 noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK11ImGuiWindow8FontSizeEv(ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #0 align 2

; 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 uwtable
declare dso_local <2 x float> @_ZN5ImGui12CalcTextSizeEPKcS1_bf(ptr noundef, ptr noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK11ImGuiWindow4FontEv(ptr noundef nonnull align 8 dereferenceable(480)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL7ItemAddRK9ImGuiAabbPKj(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11FocusWindowP11ImGuiWindow(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK11ImGuiWindow5ColorEif(ptr noundef nonnull align 8 dereferenceable(480), i32 noundef, float noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10ImDrawList7AddRectERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8), i32 noundef, float noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZN5ImGui13CalcItemWidthEv() local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL10RenderText6ImVec2PKcS1_b(<2 x float>, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL8ItemSizeRK9ImGuiAabbP6ImVec2(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL11RenderFrame6ImVec2S_jbf(<2 x float>, <2 x float>, i32 noundef, i1 noundef zeroext, float noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL9IsHoveredRK9ImGuiAabbRKj(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18ImGuiTextEditState12OnKeyPressedEi(ptr noundef nonnull align 8 dereferenceable(8396), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18ImGuiTextEditState15CursorAnimResetEv(ptr noundef nonnull align 8 dereferenceable(8396)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18ImGuiTextEditState18UpdateScrollOffsetEv(ptr noundef nonnull align 8 dereferenceable(8396)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK18ImGuiTextEditState28CalcDisplayOffsetFromCharIdxEi(ptr noundef nonnull align 8 dereferenceable(8396), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18ImGuiTextEditState25RenderTextScrolledClippedEP6ImFontfPKc6ImVec2ff(ptr noundef, float noundef, ptr noundef, <2 x float>, float noundef, float noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i64 @_ZL17ImTextStrFromUtf8PtmPKcS1_(ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL29stb_textedit_initialize_stateP17STB_TexteditStatei(ptr noundef, i32 noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN18ImGuiTextEditState9SelectAllEv(ptr noundef nonnull align 8 dereferenceable(8396)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL18stb_textedit_clickP18ImGuiTextEditStateP17STB_TexteditStateff(ptr noundef, ptr noundef, float noundef, float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL17stb_textedit_dragP18ImGuiTextEditStateP17STB_TexteditStateff(ptr noundef, ptr noundef, float noundef, float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL24InputTextFilterCharacterPjiPFiP25ImGuiTextEditCallbackDataEPv(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK18ImGuiTextEditState12HasSelectionEv(ptr noundef nonnull align 8 dereferenceable(8396)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i64 @_ZL15ImTextStrToUtf8PcmPKtS1_(ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL16stb_textedit_cutP18ImGuiTextEditStateP17STB_TexteditState(ptr noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL18ImTextCharFromUtf8PjPKcS1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL18stb_textedit_pasteP18ImGuiTextEditStateP17STB_TexteditStatePKti(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL29ImTextCountUtf8BytesFromWcharPKtS0_(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL24ImTextCountCharsFromUtf8PKcS0_(ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK18ImGuiTextEditState15CursorIsVisibleEv(ptr noundef nonnull align 8 dereferenceable(8396)) local_unnamed_addr #0 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umin.i64(i64, i64) #9

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #6 = { 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 #7 = { 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 #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(read) }
attributes #12 = { noreturn nounwind }

!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, !14, i64 68}
!10 = !{!"_ZTS11ImGuiWindow", !6, i64 0, !11, i64 8, !11, i64 12, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !13, i64 56, !13, i64 60, !14, i64 64, !14, i64 65, !14, i64 66, !14, i64 67, !14, i64 68, !11, i64 72, !14, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !15, i64 96, !21, i64 336, !22, i64 360, !16, i64 384, !11, i64 400, !13, i64 404, !23, i64 408, !13, i64 432, !6, i64 440, !6, i64 448, !11, i64 456, !11, i64 460, !11, i64 464, !11, i64 468, !11, i64 472, !11, i64 476}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS6ImVec2", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTS16ImGuiDrawContext", !12, i64 0, !12, i64 8, !12, i64 16, !13, i64 24, !13, i64 28, !13, i64 32, !11, i64 36, !11, i64 40, !16, i64 44, !14, i64 60, !17, i64 64, !19, i64 88, !20, i64 112, !20, i64 136, !11, i64 160, !6, i64 168, !13, i64 176, !13, i64 180, !11, i64 184, !11, i64 188, !12, i64 192, !13, i64 200, !13, i64 204, !14, i64 208, !11, i64 212, !20, i64 216}
!16 = !{!"_ZTS9ImGuiAabb", !12, i64 0, !12, i64 8}
!17 = !{!"_ZTS8ImVectorIP11ImGuiWindowE", !18, i64 0, !18, i64 8, !6, i64 16}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTS8ImVectorIbE", !18, i64 0, !18, i64 8, !6, i64 16}
!20 = !{!"_ZTS8ImVectorIfE", !18, i64 0, !18, i64 8, !6, i64 16}
!21 = !{!"_ZTS8ImVectorIjE", !18, i64 0, !18, i64 8, !6, i64 16}
!22 = !{!"_ZTS8ImVectorI6ImVec4E", !18, i64 0, !18, i64 8, !6, i64 16}
!23 = !{!"_ZTS12ImGuiStorage", !24, i64 0}
!24 = !{!"_ZTS8ImVectorIN12ImGuiStorage4PairEE", !18, i64 0, !18, i64 8, !6, i64 16}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = !{!11, !11, i64 0}
!28 = !{!29, !13, i64 48}
!29 = !{!"_ZTS10ImGuiStyle", !13, i64 0, !12, i64 4, !12, i64 12, !13, i64 20, !13, i64 24, !12, i64 28, !13, i64 36, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !13, i64 72, !13, i64 76, !13, i64 80, !13, i64 84, !7, i64 88}
!30 = !{!31, !14, i64 229}
!31 = !{!"_ZTS7ImGuiIO", !12, i64 0, !13, i64 8, !13, i64 12, !6, i64 16, !6, i64 24, !13, i64 32, !13, i64 36, !7, i64 40, !6, i64 112, !6, i64 120, !13, i64 128, !14, i64 132, !12, i64 136, !12, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !12, i64 208, !7, i64 216, !13, i64 224, !14, i64 228, !14, i64 229, !14, i64 230, !7, i64 231, !7, i64 744, !14, i64 778, !14, i64 779, !13, i64 780, !12, i64 784, !12, i64 792, !7, i64 800, !7, i64 808, !7, i64 848, !7, i64 868, !7, i64 873, !7, i64 880, !7, i64 900}
!32 = !{!31, !14, i64 230}
!33 = !{!34, !11, i64 3788}
!34 = !{!"_ZTS10ImGuiState", !14, i64 0, !31, i64 8, !29, i64 2960, !6, i64 3672, !13, i64 3680, !12, i64 3684, !13, i64 3692, !11, i64 3696, !11, i64 3700, !17, i64 3704, !6, i64 3728, !17, i64 3736, !6, i64 3760, !6, i64 3768, !6, i64 3776, !11, i64 3784, !11, i64 3788, !11, i64 3792, !14, i64 3796, !14, i64 3797, !6, i64 3800, !13, i64 3808, !35, i64 3816, !36, i64 3840, !37, i64 3864, !38, i64 3888, !12, i64 3912, !11, i64 3920, !12, i64 3924, !11, i64 3932, !14, i64 3936, !11, i64 3940, !14, i64 3944, !14, i64 3945, !11, i64 3948, !39, i64 3952, !17, i64 3976, !40, i64 4000, !11, i64 12400, !23, i64 12408, !11, i64 12432, !7, i64 12436, !6, i64 13464, !14, i64 13472, !6, i64 13480, !6, i64 13488, !11, i64 13496, !11, i64 13500, !7, i64 13504, !11, i64 13984, !13, i64 13988}
!35 = !{!"_ZTS8ImVectorIP12ImGuiIniDataE", !18, i64 0, !18, i64 8, !6, i64 16}
!36 = !{!"_ZTS8ImVectorI11ImGuiColModE", !18, i64 0, !18, i64 8, !6, i64 16}
!37 = !{!"_ZTS8ImVectorI13ImGuiStyleModE", !18, i64 0, !18, i64 8, !6, i64 16}
!38 = !{!"_ZTS8ImVectorIP6ImFontE", !18, i64 0, !18, i64 8, !6, i64 16}
!39 = !{!"_ZTS8ImVectorIP10ImDrawListE", !18, i64 0, !18, i64 8, !6, i64 16}
!40 = !{!"_ZTS18ImGuiTextEditState", !11, i64 0, !7, i64 4, !7, i64 2052, !18, i64 5128, !13, i64 5136, !13, i64 5140, !41, i64 5144, !13, i64 8364, !12, i64 8368, !14, i64 8376, !6, i64 8384, !13, i64 8392}
!41 = !{!"_ZTS17STB_TexteditState", !11, i64 0, !11, i64 4, !11, 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, !13, i64 20, !42, i64 24}
!42 = !{!"_ZTS12StbUndoState", !7, i64 0, !7, i64 1188, !43, i64 3186, !43, i64 3188, !43, i64 3190, !43, i64 3192}
!43 = !{!"short", !7, i64 0}
!44 = !{!10, !11, i64 456}
!45 = !{!10, !11, i64 464}
!46 = !{!34, !11, i64 3784}
!47 = !{!14, !14, i64 0}
!48 = !{!40, !13, i64 5136}
!49 = !{!40, !11, i64 0}
!50 = !{!40, !13, i64 5140}
!51 = !{!40, !11, i64 5144}
!52 = !{!40, !11, i64 5148}
!53 = !{!40, !11, i64 5152}
!54 = !{!34, !14, i64 3797}
!55 = !{!40, !18, i64 5128}
!56 = !{!40, !6, i64 8384}
!57 = !{!40, !13, i64 8392}
!58 = !{!34, !13, i64 216}
!59 = !{!16, !13, i64 0}
!60 = !{!29, !13, i64 28}
!61 = !{!40, !14, i64 8376}
!62 = !{!43, !43, i64 0}
!63 = !{!34, !6, i64 176}
!64 = !{!34, !6, i64 168}
!65 = !{!7, !7, i64 0}
!66 = distinct !{!66, !67}
!67 = !{!"llvm.loop.mustprogress"}
!68 = !{!34, !13, i64 16}
!69 = !{!40, !13, i64 8364}
!70 = !{!71, !11, i64 0}
!71 = !{!"_ZTS25ImGuiTextEditCallbackData", !11, i64 0, !11, i64 4, !6, i64 8, !43, i64 16, !11, i64 20, !6, i64 24, !18, i64 32, !14, i64 40, !11, i64 44, !11, i64 48, !11, i64 52}
!72 = !{!71, !11, i64 20}
!73 = !{!71, !6, i64 24}
!74 = !{!71, !18, i64 32}
!75 = !{!71, !14, i64 40}
!76 = !{!71, !11, i64 4}
!77 = !{!71, !6, i64 8}
!78 = !{!71, !11, i64 44}
!79 = !{!71, !11, i64 48}
!80 = !{!71, !11, i64 52}
!81 = !{!29, !13, i64 36}
!82 = !{!10, !6, i64 440}
!83 = !{!31, !6, i64 192}
!84 = !{!12, !13, i64 0}
!85 = !{!12, !13, i64 4}
!86 = !{!16, !13, i64 8}
!87 = !{!16, !13, i64 4}
!88 = !{!29, !13, i64 32}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass