; LLVM IR from Angold-4/chainsaw :: src/debug/editor.ll (ZN6Editor13RefreshScreenEv)

; 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.buffer = type { ptr, i64, i8, i32 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%class.Editor = type { i8, ptr, ptr, %struct.buffer, ptr, ptr, %struct.editorConfig, %struct.editorConfig }
%struct.editorConfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, ptr, [80 x i8], %"class.std::__cxx11::basic_string", i8, i64 }
%struct.editRow = type { i32, i32, i32, ptr, ptr }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Editor13RefreshScreenEv(ptr noundef nonnull align 8 dereferenceable(448) %0) #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca [32 x i8], align 16
  %6 = alloca %struct.buffer, align 8
  %7 = alloca i32, align 4
  %8 = alloca [80 x i8], align 16
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca [80 x i8], align 16
  %20 = alloca [80 x i8], align 16
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca i32, align 4
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca i32, align 4
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator", align 1
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator", align 1
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.std::allocator", align 1
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca [80 x i8], align 16
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator", align 1
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %56 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #8
  %57 = getelementptr inbounds %struct.buffer, ptr %6, i32 0, i32 0
  store ptr null, ptr %57, align 8, !tbaa !9
  %58 = getelementptr inbounds %struct.buffer, ptr %6, i32 0, i32 1
  store i64 0, ptr %58, align 8, !tbaa !14
  %59 = getelementptr inbounds %struct.buffer, ptr %6, i32 0, i32 2
  store i8 0, ptr %59, align 8, !tbaa !15
  %60 = getelementptr inbounds %struct.buffer, ptr %6, i32 0, i32 3
  store i32 0, ptr %60, align 4, !tbaa !16
  %61 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %61, ptr align 8 %6, i64 24, i1 false), !tbaa.struct !17
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  %62 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 3
  %63 = getelementptr inbounds %struct.buffer, ptr %62, i32 0, i32 3
  store i32 5, ptr %63, align 4, !tbaa !21
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str, i32 noundef 6)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.1, i32 noundef 3)
  store i32 0, ptr %3, align 4, !tbaa !20
  br label %64

64:                                               ; preds = %176, %1
  %65 = load i32, ptr %3, align 4, !tbaa !20
  %66 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %67 = getelementptr inbounds %struct.editorConfig, ptr %66, i32 0, i32 4
  %68 = load i32, ptr %67, align 8, !tbaa !26
  %69 = icmp slt i32 %65, %68
  br i1 %69, label %70, label %179

70:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  %71 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %72 = getelementptr inbounds %struct.editorConfig, ptr %71, i32 0, i32 2
  %73 = load i32, ptr %72, align 8, !tbaa !27
  %74 = load i32, ptr %3, align 4, !tbaa !20
  %75 = add nsw i32 %73, %74
  store i32 %75, ptr %7, align 4, !tbaa !20
  %76 = load i32, ptr %7, align 4, !tbaa !20
  %77 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %78 = getelementptr inbounds %struct.editorConfig, ptr %77, i32 0, i32 8
  %79 = load i32, ptr %78, align 8, !tbaa !28
  %80 = icmp sge i32 %76, %79
  br i1 %80, label %81, label %124

81:                                               ; preds = %70
  %82 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %83 = getelementptr inbounds %struct.editorConfig, ptr %82, i32 0, i32 8
  %84 = load i32, ptr %83, align 8, !tbaa !28
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %86, label %122

86:                                               ; preds = %81
  %87 = load i32, ptr %3, align 4, !tbaa !20
  %88 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %89 = getelementptr inbounds %struct.editorConfig, ptr %88, i32 0, i32 4
  %90 = load i32, ptr %89, align 8, !tbaa !26
  %91 = sdiv i32 %90, 2
  %92 = icmp eq i32 %87, %91
  br i1 %92, label %93, label %122

93:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 80, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  %94 = getelementptr inbounds [80 x i8], ptr %8, i64 0, i64 0
  %95 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %94, i64 noundef 80, ptr noundef @.str.2, ptr noundef @.str.3) #8
  store i32 %95, ptr %9, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  %96 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %97 = getelementptr inbounds %struct.editorConfig, ptr %96, i32 0, i32 5
  %98 = load i32, ptr %97, align 4, !tbaa !29
  %99 = load i32, ptr %9, align 4, !tbaa !20
  %100 = sub nsw i32 %98, %99
  %101 = sdiv i32 %100, 2
  store i32 %101, ptr %10, align 4, !tbaa !20
  %102 = load i32, ptr %10, align 4, !tbaa !20
  %103 = icmp ne i32 %102, 0
  br i1 %103, label %104, label %107

104:                                              ; preds = %93
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.4, i32 noundef 1)
  %105 = load i32, ptr %10, align 4, !tbaa !20
  %106 = add nsw i32 %105, -1
  store i32 %106, ptr %10, align 4, !tbaa !20
  br label %107

107:                                              ; preds = %104, %93
  br label %108

108:                                              ; preds = %112, %107
  %109 = load i32, ptr %10, align 4, !tbaa !20
  %110 = add nsw i32 %109, -1
  store i32 %110, ptr %10, align 4, !tbaa !20
  %111 = icmp ne i32 %109, 0
  br i1 %111, label %112, label %113

112:                                              ; preds = %108
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.5, i32 noundef 1)
  br label %108, !llvm.loop !30

113:                                              ; preds = %108
  %114 = getelementptr inbounds [80 x i8], ptr %8, i64 0, i64 0
  %115 = load i32, ptr %9, align 4, !tbaa !20
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %114, i32 noundef %115)
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #8
  %116 = getelementptr inbounds [80 x i8], ptr %8, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %116, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %117 unwind label %118

117:                                              ; preds = %113
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %8) #8
  br label %123

118:                                              ; preds = %113
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %13, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  br label %680

122:                                              ; preds = %86, %81
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.6, i32 noundef 7)
  br label %123

123:                                              ; preds = %122, %117
  store i32 4, ptr %15, align 4
  br label %173

124:                                              ; preds = %70
  %125 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %126 = getelementptr inbounds %struct.editorConfig, ptr %125, i32 0, i32 10
  %127 = load ptr, ptr %126, align 8, !tbaa !32
  %128 = load i32, ptr %7, align 4, !tbaa !20
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds %struct.editRow, ptr %127, i64 %129
  store ptr %130, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %131 = load ptr, ptr %4, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.editRow, ptr %131, i32 0, i32 2
  %133 = load i32, ptr %132, align 8, !tbaa !33
  %134 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %135 = getelementptr inbounds %struct.editorConfig, ptr %134, i32 0, i32 3
  %136 = load i32, ptr %135, align 4, !tbaa !35
  %137 = sub nsw i32 %133, %136
  store i32 %137, ptr %16, align 4, !tbaa !20
  %138 = load i32, ptr %16, align 4, !tbaa !20
  %139 = icmp sgt i32 %138, 0
  br i1 %139, label %140, label %172

140:                                              ; preds = %124
  %141 = load i32, ptr %16, align 4, !tbaa !20
  %142 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %143 = getelementptr inbounds %struct.editorConfig, ptr %142, i32 0, i32 5
  %144 = load i32, ptr %143, align 4, !tbaa !29
  %145 = icmp sgt i32 %141, %144
  br i1 %145, label %146, label %150

146:                                              ; preds = %140
  %147 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %148 = getelementptr inbounds %struct.editorConfig, ptr %147, i32 0, i32 5
  %149 = load i32, ptr %148, align 4, !tbaa !29
  store i32 %149, ptr %16, align 4, !tbaa !20
  br label %150

150:                                              ; preds = %146, %140
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %151 = load ptr, ptr %4, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.editRow, ptr %151, i32 0, i32 4
  %153 = load ptr, ptr %152, align 8, !tbaa !36
  %154 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %155 = getelementptr inbounds %struct.editorConfig, ptr %154, i32 0, i32 3
  %156 = load i32, ptr %155, align 4, !tbaa !35
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds i8, ptr %153, i64 %157
  store ptr %158, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !20
  br label %159

159:                                              ; preds = %168, %150
  %160 = load i32, ptr %18, align 4, !tbaa !20
  %161 = load i32, ptr %16, align 4, !tbaa !20
  %162 = icmp slt i32 %160, %161
  br i1 %162, label %163, label %171

163:                                              ; preds = %159
  %164 = load ptr, ptr %17, align 8, !tbaa !5
  %165 = load i32, ptr %18, align 4, !tbaa !20
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds i8, ptr %164, i64 %166
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %167, i32 noundef 1)
  br label %168

168:                                              ; preds = %163
  %169 = load i32, ptr %18, align 4, !tbaa !20
  %170 = add nsw i32 %169, 1
  store i32 %170, ptr %18, align 4, !tbaa !20
  br label %159, !llvm.loop !37

171:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %172

172:                                              ; preds = %171, %124
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.7, i32 noundef 5)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.8, i32 noundef 4)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.9, i32 noundef 2)
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  store i32 0, ptr %15, align 4
  br label %173

173:                                              ; preds = %172, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  %174 = load i32, ptr %15, align 4
  switch i32 %174, label %686 [
    i32 0, label %175
    i32 4, label %176
  ]

175:                                              ; preds = %173
  br label %176

176:                                              ; preds = %175, %173
  %177 = load i32, ptr %3, align 4, !tbaa !20
  %178 = add nsw i32 %177, 1
  store i32 %178, ptr %3, align 4, !tbaa !20
  br label %64, !llvm.loop !38

179:                                              ; preds = %64
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.8, i32 noundef 4)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.10, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 80, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %180 = getelementptr inbounds [80 x i8], ptr %19, i64 0, i64 0
  %181 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %182 = getelementptr inbounds %struct.editorConfig, ptr %181, i32 0, i32 12
  %183 = load ptr, ptr %182, align 8, !tbaa !39
  %184 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %185 = getelementptr inbounds %struct.editorConfig, ptr %184, i32 0, i32 8
  %186 = load i32, ptr %185, align 8, !tbaa !28
  %187 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %188 = getelementptr inbounds %struct.editorConfig, ptr %187, i32 0, i32 11
  %189 = load i32, ptr %188, align 8, !tbaa !40
  %190 = icmp ne i32 %189, 0
  %191 = zext i1 %190 to i64
  %192 = select i1 %190, ptr @.str.12, ptr @.str.13
  %193 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %180, i64 noundef 80, ptr noundef @.str.11, ptr noundef %183, i32 noundef %186, ptr noundef %192) #8
  store i32 %193, ptr %21, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %194 = getelementptr inbounds [80 x i8], ptr %20, i64 0, i64 0
  %195 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %196 = getelementptr inbounds %struct.editorConfig, ptr %195, i32 0, i32 2
  %197 = load i32, ptr %196, align 8, !tbaa !27
  %198 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %199 = getelementptr inbounds %struct.editorConfig, ptr %198, i32 0, i32 1
  %200 = load i32, ptr %199, align 4, !tbaa !41
  %201 = add nsw i32 %197, %200
  %202 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %203 = getelementptr inbounds %struct.editorConfig, ptr %202, i32 0, i32 8
  %204 = load i32, ptr %203, align 8, !tbaa !28
  %205 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %194, i64 noundef 80, ptr noundef @.str.14, i32 noundef %201, i32 noundef %204) #8
  store i32 %205, ptr %22, align 4, !tbaa !20
  %206 = load i32, ptr %21, align 4, !tbaa !20
  %207 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %208 = getelementptr inbounds %struct.editorConfig, ptr %207, i32 0, i32 5
  %209 = load i32, ptr %208, align 4, !tbaa !29
  %210 = icmp sgt i32 %206, %209
  br i1 %210, label %211, label %215

211:                                              ; preds = %179
  %212 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %213 = getelementptr inbounds %struct.editorConfig, ptr %212, i32 0, i32 5
  %214 = load i32, ptr %213, align 4, !tbaa !29
  store i32 %214, ptr %21, align 4, !tbaa !20
  br label %215

215:                                              ; preds = %211, %179
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #8
  %216 = getelementptr inbounds [80 x i8], ptr %19, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %216, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %217 unwind label %241

217:                                              ; preds = %215
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #8
  %218 = getelementptr inbounds [80 x i8], ptr %20, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef %218, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %219 unwind label %245

219:                                              ; preds = %217
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  %220 = getelementptr inbounds [80 x i8], ptr %19, i64 0, i64 0
  %221 = load i32, ptr %21, align 4, !tbaa !20
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %220, i32 noundef %221)
          to label %222 unwind label %249

222:                                              ; preds = %219
  br label %223

223:                                              ; preds = %257, %222
  %224 = load i32, ptr %21, align 4, !tbaa !20
  %225 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %226 = getelementptr inbounds %struct.editorConfig, ptr %225, i32 0, i32 5
  %227 = load i32, ptr %226, align 4, !tbaa !29
  %228 = icmp slt i32 %224, %227
  br i1 %228, label %229, label %258

229:                                              ; preds = %223
  %230 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %231 = getelementptr inbounds %struct.editorConfig, ptr %230, i32 0, i32 5
  %232 = load i32, ptr %231, align 4, !tbaa !29
  %233 = load i32, ptr %21, align 4, !tbaa !20
  %234 = sub nsw i32 %232, %233
  %235 = load i32, ptr %22, align 4, !tbaa !20
  %236 = icmp eq i32 %234, %235
  br i1 %236, label %237, label %253

237:                                              ; preds = %229
  %238 = getelementptr inbounds [80 x i8], ptr %20, i64 0, i64 0
  %239 = load i32, ptr %22, align 4, !tbaa !20
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %238, i32 noundef %239)
          to label %240 unwind label %249

240:                                              ; preds = %237
  br label %258

241:                                              ; preds = %215
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %13, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  br label %679

245:                                              ; preds = %217
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %13, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #8
  br label %678

249:                                              ; preds = %259, %258, %253, %237, %219
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %13, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %14, align 4
  br label %677

253:                                              ; preds = %229
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.5, i32 noundef 1)
          to label %254 unwind label %249

254:                                              ; preds = %253
  %255 = load i32, ptr %21, align 4, !tbaa !20
  %256 = add nsw i32 %255, 1
  store i32 %256, ptr %21, align 4, !tbaa !20
  br label %257

257:                                              ; preds = %254
  br label %223, !llvm.loop !42

258:                                              ; preds = %240, %223
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.15, i32 noundef 6)
          to label %259 unwind label %249

259:                                              ; preds = %258
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.8, i32 noundef 4)
          to label %260 unwind label %249

260:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %261 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %262 = getelementptr inbounds %struct.editorConfig, ptr %261, i32 0, i32 13
  %263 = getelementptr inbounds [80 x i8], ptr %262, i64 0, i64 0
  %264 = call i64 @strlen(ptr noundef %263) #9
  %265 = trunc i64 %264 to i32
  store i32 %265, ptr %27, align 4, !tbaa !20
  %266 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %267 = getelementptr inbounds %struct.editorConfig, ptr %266, i32 0, i32 15
  %268 = load i8, ptr %267, align 8, !tbaa !43, !range !44, !noundef !45
  %269 = trunc i8 %268 to i1
  br i1 %269, label %270, label %283

270:                                              ; preds = %260
  %271 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %272 = getelementptr inbounds %struct.editorConfig, ptr %271, i32 0, i32 14
  %273 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %272) #8
  %274 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %275 = getelementptr inbounds %struct.editorConfig, ptr %274, i32 0, i32 14
  %276 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %275) #8
  %277 = trunc i64 %276 to i32
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %273, i32 noundef %277)
          to label %278 unwind label %279

278:                                              ; preds = %270
  br label %325

279:                                              ; preds = %674, %666, %662, %658, %505, %434, %433, %360, %359, %338, %326, %325, %270
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %13, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %14, align 4
  br label %676

283:                                              ; preds = %260
  %284 = load i32, ptr %27, align 4, !tbaa !20
  %285 = icmp ne i32 %284, 0
  br i1 %285, label %286, label %324

286:                                              ; preds = %283
  %287 = call i64 @time(ptr noundef null) #8
  %288 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %289 = getelementptr inbounds %struct.editorConfig, ptr %288, i32 0, i32 16
  %290 = load i64, ptr %289, align 8, !tbaa !46
  %291 = sub nsw i64 %287, %290
  %292 = icmp slt i64 %291, 2
  br i1 %292, label %293, label %324

293:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  %294 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %295 = getelementptr inbounds %struct.editorConfig, ptr %294, i32 0, i32 13
  %296 = getelementptr inbounds [80 x i8], ptr %295, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef %296, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %297 unwind label %315

297:                                              ; preds = %293
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  %298 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %299 = getelementptr inbounds %struct.editorConfig, ptr %298, i32 0, i32 13
  %300 = getelementptr inbounds [80 x i8], ptr %299, i64 0, i64 0
  %301 = load i32, ptr %27, align 4, !tbaa !20
  %302 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %303 = getelementptr inbounds %struct.editorConfig, ptr %302, i32 0, i32 5
  %304 = load i32, ptr %303, align 4, !tbaa !29
  %305 = icmp sle i32 %301, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %297
  %307 = load i32, ptr %27, align 4, !tbaa !20
  br label %312

308:                                              ; preds = %297
  %309 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %310 = getelementptr inbounds %struct.editorConfig, ptr %309, i32 0, i32 5
  %311 = load i32, ptr %310, align 4, !tbaa !29
  br label %312

312:                                              ; preds = %308, %306
  %313 = phi i32 [ %307, %306 ], [ %311, %308 ]
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %300, i32 noundef %313)
          to label %314 unwind label %319

314:                                              ; preds = %312
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  br label %324

315:                                              ; preds = %293
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %13, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  br label %323

319:                                              ; preds = %312
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %13, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %323

323:                                              ; preds = %319, %315
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  br label %676

324:                                              ; preds = %314, %286, %283
  br label %325

325:                                              ; preds = %324, %278
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.15, i32 noundef 6)
          to label %326 unwind label %279

326:                                              ; preds = %325
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.8, i32 noundef 4)
          to label %327 unwind label %279

327:                                              ; preds = %326
  %328 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 4
  %329 = load ptr, ptr %328, align 8, !tbaa !47
  %330 = load i32, ptr %329, align 4, !tbaa !20
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %433, label %332

332:                                              ; preds = %327
  %333 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 5
  %334 = load ptr, ptr %333, align 8, !tbaa !48
  %335 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef 0) #8
  %336 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %335) #8
  %337 = icmp ne i64 %336, 0
  br i1 %337, label %359, label %338

338:                                              ; preds = %332
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.10, i32 noundef 4)
          to label %339 unwind label %279

339:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  %340 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %341 = getelementptr inbounds %struct.editorConfig, ptr %340, i32 0, i32 5
  %342 = load i32, ptr %341, align 4, !tbaa !29
  %343 = sext i32 %342 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, i64 noundef %343, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %344 unwind label %350

344:                                              ; preds = %339
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  %345 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  %346 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %347 = getelementptr inbounds %struct.editorConfig, ptr %346, i32 0, i32 5
  %348 = load i32, ptr %347, align 4, !tbaa !29
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %345, i32 noundef %348)
          to label %349 unwind label %354

349:                                              ; preds = %344
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %432

350:                                              ; preds = %339
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %13, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %358

354:                                              ; preds = %344
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %13, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %358

358:                                              ; preds = %354, %350
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %676

359:                                              ; preds = %332
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.16, i32 noundef 5)
          to label %360 unwind label %279

360:                                              ; preds = %359
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.10, i32 noundef 4)
          to label %361 unwind label %279

361:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #8
  %362 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 5
  %363 = load ptr, ptr %362, align 8, !tbaa !48
  %364 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %363, i64 noundef 2) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef @.str.17, ptr noundef nonnull align 8 dereferenceable(32) %364)
          to label %365 unwind label %398

365:                                              ; preds = %361
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef @.str.18)
          to label %366 unwind label %402

366:                                              ; preds = %365
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  %367 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 5
  %368 = load ptr, ptr %367, align 8, !tbaa !48
  %369 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %368, i64 noundef 1) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef @.str.19, ptr noundef nonnull align 8 dereferenceable(32) %369)
          to label %370 unwind label %407

370:                                              ; preds = %366
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.20)
          to label %371 unwind label %411

371:                                              ; preds = %370
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  %372 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  %373 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  %374 = trunc i64 %373 to i32
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %372, i32 noundef %374)
          to label %375 unwind label %416

375:                                              ; preds = %371
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.21, i32 noundef 4)
          to label %376 unwind label %416

376:                                              ; preds = %375
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.10, i32 noundef 4)
          to label %377 unwind label %416

377:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %378 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %379 = getelementptr inbounds %struct.editorConfig, ptr %378, i32 0, i32 5
  %380 = load i32, ptr %379, align 4, !tbaa !29
  %381 = sext i32 %380 to i64
  %382 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  %383 = sub i64 %381, %382
  %384 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  %385 = sub i64 %383, %384
  %386 = trunc i64 %385 to i32
  store i32 %386, ptr %36, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  %387 = load i32, ptr %36, align 4, !tbaa !20
  %388 = sext i32 %387 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, i64 noundef %388, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %389 unwind label %420

389:                                              ; preds = %377
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  %390 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  %391 = load i32, ptr %36, align 4, !tbaa !20
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %390, i32 noundef %391)
          to label %392 unwind label %424

392:                                              ; preds = %389
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.22, i32 noundef 5)
          to label %393 unwind label %424

393:                                              ; preds = %392
  %394 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  %395 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  %396 = trunc i64 %395 to i32
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %394, i32 noundef %396)
          to label %397 unwind label %424

397:                                              ; preds = %393
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %432

398:                                              ; preds = %361
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %13, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %14, align 4
  br label %406

402:                                              ; preds = %365
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %13, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %406

406:                                              ; preds = %402, %398
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #8
  br label %431

407:                                              ; preds = %366
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %13, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %14, align 4
  br label %415

411:                                              ; preds = %370
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %13, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %415

415:                                              ; preds = %411, %407
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  br label %430

416:                                              ; preds = %376, %375, %371
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %13, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %14, align 4
  br label %429

420:                                              ; preds = %377
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %13, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  br label %428

424:                                              ; preds = %393, %392, %389
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %13, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %428

428:                                              ; preds = %424, %420
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %429

429:                                              ; preds = %428, %416
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %430

430:                                              ; preds = %429, %415
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %431

431:                                              ; preds = %430, %406
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  br label %676

432:                                              ; preds = %397, %349
  br label %505

433:                                              ; preds = %327
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.23, i32 noundef 5)
          to label %434 unwind label %279

434:                                              ; preds = %433
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.10, i32 noundef 4)
          to label %435 unwind label %279

435:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #8
  %436 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %437 = getelementptr inbounds %struct.editorConfig, ptr %436, i32 0, i32 5
  %438 = load i32, ptr %437, align 4, !tbaa !29
  %439 = sdiv i32 %438, 2
  %440 = sub nsw i32 %439, 10
  %441 = sext i32 %440 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, i64 noundef %441, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %442 unwind label %469

442:                                              ; preds = %435
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #8
  %443 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 4
  %444 = load ptr, ptr %443, align 8, !tbaa !47
  %445 = load i32, ptr %444, align 4, !tbaa !20
  %446 = icmp eq i32 %445, 1
  %447 = zext i1 %446 to i64
  %448 = select i1 %446, ptr @.str.24, ptr @.str.25
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef %448, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %449 unwind label %473

449:                                              ; preds = %442
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #8
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef @.str.26, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %450 unwind label %477

450:                                              ; preds = %449
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.27)
          to label %451 unwind label %481

451:                                              ; preds = %450
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  %452 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 4
  %453 = load ptr, ptr %452, align 8, !tbaa !47
  store i32 0, ptr %453, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  %454 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %455 = getelementptr inbounds %struct.editorConfig, ptr %454, i32 0, i32 5
  %456 = load i32, ptr %455, align 4, !tbaa !29
  %457 = sext i32 %456 to i64
  %458 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  %459 = sub i64 %457, %458
  %460 = trunc i64 %459 to i32
  store i32 %460, ptr %45, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  %461 = load i32, ptr %45, align 4, !tbaa !20
  %462 = sdiv i32 %461, 2
  store i32 %462, ptr %46, align 4, !tbaa !20
  %463 = load i32, ptr %45, align 4, !tbaa !20
  %464 = srem i32 %463, 2
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %466, label %486

466:                                              ; preds = %451
  %467 = load i32, ptr %46, align 4, !tbaa !20
  %468 = add nsw i32 %467, 1
  store i32 %468, ptr %46, align 4, !tbaa !20
  br label %486

469:                                              ; preds = %435
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %13, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  br label %504

473:                                              ; preds = %442
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %13, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #8
  br label %503

477:                                              ; preds = %449
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %13, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %14, align 4
  br label %485

481:                                              ; preds = %450
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %13, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  br label %485

485:                                              ; preds = %481, %477
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  br label %502

486:                                              ; preds = %466, %451
  %487 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  %488 = load i32, ptr %46, align 4, !tbaa !20
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %487, i32 noundef %488)
          to label %489 unwind label %498

489:                                              ; preds = %486
  %490 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  %491 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  %492 = trunc i64 %491 to i32
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %490, i32 noundef %492)
          to label %493 unwind label %498

493:                                              ; preds = %489
  %494 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  %495 = load i32, ptr %46, align 4, !tbaa !20
  %496 = sub nsw i32 %495, 1
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %494, i32 noundef %496)
          to label %497 unwind label %498

497:                                              ; preds = %493
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  br label %505

498:                                              ; preds = %493, %489, %486
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %13, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %502

502:                                              ; preds = %498, %485
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %503

503:                                              ; preds = %502, %473
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  br label %504

504:                                              ; preds = %503, %469
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #8
  br label %676

505:                                              ; preds = %497, %432
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.15, i32 noundef 6)
          to label %506 unwind label %279

506:                                              ; preds = %505
  store i32 0, ptr %3, align 4, !tbaa !20
  br label %507

507:                                              ; preds = %645, %506
  %508 = load i32, ptr %3, align 4, !tbaa !20
  %509 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %510 = getelementptr inbounds %struct.editorConfig, ptr %509, i32 0, i32 4
  %511 = load i32, ptr %510, align 8, !tbaa !49
  %512 = icmp slt i32 %508, %511
  br i1 %512, label %513, label %654

513:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  %514 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %515 = getelementptr inbounds %struct.editorConfig, ptr %514, i32 0, i32 2
  %516 = load i32, ptr %515, align 8, !tbaa !50
  %517 = load i32, ptr %3, align 4, !tbaa !20
  %518 = add nsw i32 %516, %517
  store i32 %518, ptr %47, align 4, !tbaa !20
  %519 = load i32, ptr %47, align 4, !tbaa !20
  %520 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %521 = getelementptr inbounds %struct.editorConfig, ptr %520, i32 0, i32 8
  %522 = load i32, ptr %521, align 8, !tbaa !51
  %523 = icmp sge i32 %519, %522
  br i1 %523, label %524, label %585

524:                                              ; preds = %513
  %525 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %526 = getelementptr inbounds %struct.editorConfig, ptr %525, i32 0, i32 8
  %527 = load i32, ptr %526, align 8, !tbaa !51
  %528 = icmp eq i32 %527, 0
  br i1 %528, label %529, label %578

529:                                              ; preds = %524
  %530 = load i32, ptr %3, align 4, !tbaa !20
  %531 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %532 = getelementptr inbounds %struct.editorConfig, ptr %531, i32 0, i32 4
  %533 = load i32, ptr %532, align 8, !tbaa !49
  %534 = sdiv i32 %533, 2
  %535 = icmp eq i32 %530, %534
  br i1 %535, label %536, label %578

536:                                              ; preds = %529
  call void @llvm.lifetime.start.p0(i64 80, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  %537 = getelementptr inbounds [80 x i8], ptr %48, i64 0, i64 0
  %538 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %537, i64 noundef 80, ptr noundef @.str.28) #8
  store i32 %538, ptr %49, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %539 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %540 = getelementptr inbounds %struct.editorConfig, ptr %539, i32 0, i32 5
  %541 = load i32, ptr %540, align 4, !tbaa !52
  %542 = load i32, ptr %49, align 4, !tbaa !20
  %543 = sub nsw i32 %541, %542
  %544 = sdiv i32 %543, 2
  store i32 %544, ptr %50, align 4, !tbaa !20
  %545 = load i32, ptr %50, align 4, !tbaa !20
  %546 = icmp ne i32 %545, 0
  br i1 %546, label %547, label %555

547:                                              ; preds = %536
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.5, i32 noundef 1)
          to label %548 unwind label %551

548:                                              ; preds = %547
  %549 = load i32, ptr %50, align 4, !tbaa !20
  %550 = add nsw i32 %549, -1
  store i32 %550, ptr %50, align 4, !tbaa !20
  br label %555

551:                                              ; preds = %560, %547
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %13, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %14, align 4
  br label %577

555:                                              ; preds = %548, %536
  br label %556

556:                                              ; preds = %561, %555
  %557 = load i32, ptr %50, align 4, !tbaa !20
  %558 = add nsw i32 %557, -1
  store i32 %558, ptr %50, align 4, !tbaa !20
  %559 = icmp ne i32 %557, 0
  br i1 %559, label %560, label %562

560:                                              ; preds = %556
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.5, i32 noundef 1)
          to label %561 unwind label %551

561:                                              ; preds = %560
  br label %556, !llvm.loop !53

562:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #8
  %563 = getelementptr inbounds [80 x i8], ptr %48, i64 0, i64 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef %563, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %564 unwind label %568

564:                                              ; preds = %562
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #8
  %565 = getelementptr inbounds [80 x i8], ptr %48, i64 0, i64 0
  %566 = load i32, ptr %49, align 4, !tbaa !20
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %565, i32 noundef %566)
          to label %567 unwind label %572

567:                                              ; preds = %564
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %48) #8
  br label %584

568:                                              ; preds = %562
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %13, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #8
  br label %576

572:                                              ; preds = %564
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %13, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  br label %576

576:                                              ; preds = %572, %568
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #8
  br label %577

577:                                              ; preds = %576, %551
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %48) #8
  br label %653

578:                                              ; preds = %529, %524
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.29, i32 noundef 6)
          to label %579 unwind label %580

579:                                              ; preds = %578
  br label %584

580:                                              ; preds = %578
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %13, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %14, align 4
  br label %653

584:                                              ; preds = %579, %567
  store i32 14, ptr %15, align 4
  br label %642

585:                                              ; preds = %513
  %586 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %587 = getelementptr inbounds %struct.editorConfig, ptr %586, i32 0, i32 10
  %588 = load ptr, ptr %587, align 8, !tbaa !54
  %589 = load i32, ptr %47, align 4, !tbaa !20
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds %struct.editRow, ptr %588, i64 %590
  store ptr %591, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #8
  %592 = load ptr, ptr %4, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.editRow, ptr %592, i32 0, i32 2
  %594 = load i32, ptr %593, align 8, !tbaa !33
  %595 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %596 = getelementptr inbounds %struct.editorConfig, ptr %595, i32 0, i32 3
  %597 = load i32, ptr %596, align 4, !tbaa !55
  %598 = sub nsw i32 %594, %597
  store i32 %598, ptr %53, align 4, !tbaa !20
  %599 = load i32, ptr %53, align 4, !tbaa !20
  %600 = icmp sgt i32 %599, 0
  br i1 %600, label %601, label %638

601:                                              ; preds = %585
  %602 = load i32, ptr %53, align 4, !tbaa !20
  %603 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %604 = getelementptr inbounds %struct.editorConfig, ptr %603, i32 0, i32 5
  %605 = load i32, ptr %604, align 4, !tbaa !52
  %606 = icmp sgt i32 %602, %605
  br i1 %606, label %607, label %611

607:                                              ; preds = %601
  %608 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %609 = getelementptr inbounds %struct.editorConfig, ptr %608, i32 0, i32 5
  %610 = load i32, ptr %609, align 4, !tbaa !52
  store i32 %610, ptr %53, align 4, !tbaa !20
  br label %611

611:                                              ; preds = %607, %601
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.editRow, ptr %612, i32 0, i32 4
  %614 = load ptr, ptr %613, align 8, !tbaa !36
  %615 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %616 = getelementptr inbounds %struct.editorConfig, ptr %615, i32 0, i32 3
  %617 = load i32, ptr %616, align 4, !tbaa !55
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds i8, ptr %614, i64 %618
  store ptr %619, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  store i32 0, ptr %55, align 4, !tbaa !20
  br label %620

620:                                              ; preds = %630, %611
  %621 = load i32, ptr %55, align 4, !tbaa !20
  %622 = load i32, ptr %53, align 4, !tbaa !20
  %623 = icmp slt i32 %621, %622
  br i1 %623, label %624, label %637

624:                                              ; preds = %620
  %625 = load ptr, ptr %54, align 8, !tbaa !5
  %626 = load i32, ptr %55, align 4, !tbaa !20
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds i8, ptr %625, i64 %627
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef %628, i32 noundef 1)
          to label %629 unwind label %633

629:                                              ; preds = %624
  br label %630

630:                                              ; preds = %629
  %631 = load i32, ptr %55, align 4, !tbaa !20
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr %55, align 4, !tbaa !20
  br label %620, !llvm.loop !56

633:                                              ; preds = %624
  %634 = landingpad { ptr, i32 }
          cleanup
  %635 = extractvalue { ptr, i32 } %634, 0
  store ptr %635, ptr %13, align 8
  %636 = extractvalue { ptr, i32 } %634, 1
  store i32 %636, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %652

637:                                              ; preds = %620
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %638

638:                                              ; preds = %637, %585
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.7, i32 noundef 5)
          to label %639 unwind label %648

639:                                              ; preds = %638
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.8, i32 noundef 4)
          to label %640 unwind label %648

640:                                              ; preds = %639
  invoke void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef @.str.9, i32 noundef 2)
          to label %641 unwind label %648

641:                                              ; preds = %640
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  store i32 0, ptr %15, align 4
  br label %642

642:                                              ; preds = %641, %584
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  %643 = load i32, ptr %15, align 4
  switch i32 %643, label %686 [
    i32 0, label %644
    i32 14, label %645
  ]

644:                                              ; preds = %642
  br label %645

645:                                              ; preds = %644, %642
  %646 = load i32, ptr %3, align 4, !tbaa !20
  %647 = add nsw i32 %646, 1
  store i32 %647, ptr %3, align 4, !tbaa !20
  br label %507, !llvm.loop !57

648:                                              ; preds = %640, %639, %638
  %649 = landingpad { ptr, i32 }
          cleanup
  %650 = extractvalue { ptr, i32 } %649, 0
  store ptr %650, ptr %13, align 8
  %651 = extractvalue { ptr, i32 } %649, 1
  store i32 %651, ptr %14, align 4
  br label %652

652:                                              ; preds = %648, %633
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #8
  br label %653

653:                                              ; preds = %652, %580, %577
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  br label %676

654:                                              ; preds = %507
  %655 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 0
  %656 = load i8, ptr %655, align 8, !tbaa !58, !range !44, !noundef !45
  %657 = trunc i8 %656 to i1
  br i1 %657, label %658, label %662

658:                                              ; preds = %654
  %659 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 7
  %660 = getelementptr inbounds [32 x i8], ptr %5, i64 0, i64 0
  invoke void @_ZN6Editor10set_cursorER12editorConfigPc(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef nonnull align 8 dereferenceable(192) %659, ptr noundef %660)
          to label %661 unwind label %279

661:                                              ; preds = %658
  br label %666

662:                                              ; preds = %654
  %663 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 6
  %664 = getelementptr inbounds [32 x i8], ptr %5, i64 0, i64 0
  invoke void @_ZN6Editor10set_cursorER12editorConfigPc(ptr noundef nonnull align 8 dereferenceable(448) %56, ptr noundef nonnull align 8 dereferenceable(192) %663, ptr noundef %664)
          to label %665 unwind label %279

665:                                              ; preds = %662
  br label %666

666:                                              ; preds = %665, %661
  %667 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 3
  %668 = getelementptr inbounds %struct.buffer, ptr %667, i32 0, i32 0
  %669 = load ptr, ptr %668, align 8, !tbaa !59
  %670 = getelementptr inbounds %class.Editor, ptr %56, i32 0, i32 3
  %671 = getelementptr inbounds %struct.buffer, ptr %670, i32 0, i32 1
  %672 = load i64, ptr %671, align 8, !tbaa !60
  %673 = invoke i64 @write(i32 noundef 1, ptr noundef %669, i64 noundef %672)
          to label %674 unwind label %279

674:                                              ; preds = %666
  invoke void @_ZN6Editor11displayFreeEv(ptr noundef nonnull align 8 dereferenceable(448) %56)
          to label %675 unwind label %279

675:                                              ; preds = %674
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #8
  ret void

676:                                              ; preds = %653, %504, %431, %358, %323, %279
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %677

677:                                              ; preds = %676, %249
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %678

678:                                              ; preds = %677, %245
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %679

679:                                              ; preds = %678, %241
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %19) #8
  br label %680

680:                                              ; preds = %679, %118
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #8
  br label %681

681:                                              ; preds = %680
  %682 = load ptr, ptr %13, align 8
  %683 = load i32, ptr %14, align 4
  %684 = insertvalue { ptr, i32 } poison, ptr %682, 0
  %685 = insertvalue { ptr, i32 } %684, i32 %683, 1
  resume { ptr, i32 } %685

686:                                              ; preds = %642, %173
  unreachable
}

; 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: mustprogress nounwind uwtable
declare dso_local void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448), ptr noundef, i32 noundef) #3 align 2

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #4

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

; Function Attrs: nounwind
declare i64 @time(ptr noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i8 noundef signext, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Editor10set_cursorER12editorConfigPc(ptr noundef nonnull align 8 dereferenceable(448), ptr noundef nonnull align 8 dereferenceable(192), ptr noundef) #3 align 2

declare i64 @write(i32 noundef, ptr noundef, i64 noundef) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Editor11displayFreeEv(ptr noundef nonnull align 8 dereferenceable(448)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { "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 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTS6buffer", !6, i64 0, !11, i64 8, !12, i64 16, !13, i64 20}
!11 = !{!"long", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!10, !11, i64 8}
!15 = !{!10, !12, i64 16}
!16 = !{!10, !13, i64 20}
!17 = !{i64 0, i64 8, !5, i64 8, i64 8, !18, i64 16, i64 1, !19, i64 20, i64 4, !20}
!18 = !{!11, !11, i64 0}
!19 = !{!12, !12, i64 0}
!20 = !{!13, !13, i64 0}
!21 = !{!22, !13, i64 44}
!22 = !{!"_ZTS6Editor", !12, i64 0, !6, i64 8, !6, i64 16, !10, i64 24, !6, i64 48, !6, i64 56, !23, i64 64, !23, i64 256}
!23 = !{!"_ZTS12editorConfig", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !6, i64 40, !13, i64 48, !6, i64 56, !7, i64 64, !24, i64 144, !12, i64 176, !11, i64 184}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !25, i64 0, !11, i64 8, !7, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!26 = !{!22, !13, i64 80}
!27 = !{!22, !13, i64 72}
!28 = !{!22, !13, i64 96}
!29 = !{!22, !13, i64 84}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!22, !6, i64 104}
!33 = !{!34, !13, i64 8}
!34 = !{!"_ZTS7editRow", !13, i64 0, !13, i64 4, !13, i64 8, !6, i64 16, !6, i64 24}
!35 = !{!22, !13, i64 76}
!36 = !{!34, !6, i64 24}
!37 = distinct !{!37, !31}
!38 = distinct !{!38, !31}
!39 = !{!22, !6, i64 120}
!40 = !{!22, !13, i64 112}
!41 = !{!22, !13, i64 68}
!42 = distinct !{!42, !31}
!43 = !{!22, !12, i64 240}
!44 = !{i8 0, i8 2}
!45 = !{}
!46 = !{!22, !11, i64 248}
!47 = !{!22, !6, i64 48}
!48 = !{!22, !6, i64 56}
!49 = !{!22, !13, i64 272}
!50 = !{!22, !13, i64 264}
!51 = !{!22, !13, i64 288}
!52 = !{!22, !13, i64 276}
!53 = distinct !{!53, !31}
!54 = !{!22, !6, i64 296}
!55 = !{!22, !13, i64 268}
!56 = distinct !{!56, !31}
!57 = distinct !{!57, !31}
!58 = !{!22, !12, i64 0}
!59 = !{!22, !6, i64 24}
!60 = !{!22, !11, 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"

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%struct.editRow = type { i32, i32, i32, ptr, ptr }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Editor13RefreshScreenEv(ptr noundef nonnull align 8 dereferenceable(448) %0) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca [32 x i8], align 16
  %3 = alloca [80 x i8], align 16
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca [80 x i8], align 16
  %7 = alloca [80 x i8], align 16
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca [80 x i8], align 16
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #10
  %31 = getelementptr inbounds i8, ptr %0, i64 24
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %31, i8 0, i64 17, i1 false)
  %.sroa.646.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 44
  store i32 5, ptr %.sroa.646.0..sroa_idx, align 4, !tbaa !5
  tail call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str, i32 noundef 6)
  tail call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.1, i32 noundef 3)
  %32 = getelementptr inbounds i8, ptr %0, i64 80
  %33 = load i32, ptr %32, align 8, !tbaa !17
  %34 = icmp sgt i32 %33, 0
  br i1 %34, label %.lr.ph150, label %._crit_edge151

.lr.ph150:                                        ; preds = %1
  %35 = getelementptr inbounds i8, ptr %0, i64 72
  %36 = getelementptr inbounds i8, ptr %0, i64 96
  %37 = getelementptr inbounds i8, ptr %0, i64 84
  %38 = getelementptr inbounds i8, ptr %0, i64 104
  %39 = getelementptr inbounds i8, ptr %0, i64 76
  br label %40

40:                                               ; preds = %.lr.ph150, %79
  %41 = phi i32 [ %33, %.lr.ph150 ], [ %81, %79 ]
  %.060148 = phi i32 [ 0, %.lr.ph150 ], [ %80, %79 ]
  %42 = load i32, ptr %35, align 8, !tbaa !18
  %43 = add nsw i32 %42, %.060148
  %44 = load i32, ptr %36, align 8, !tbaa !19
  %.not126 = icmp slt i32 %43, %44
  br i1 %.not126, label %61, label %45

45:                                               ; preds = %40
  %46 = icmp eq i32 %44, 0
  %47 = sdiv i32 %41, 2
  %48 = icmp eq i32 %.060148, %47
  %or.cond = and i1 %48, %46
  br i1 %or.cond, label %49, label %60

49:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %3) #10
  %50 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 80, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3) #10
  %51 = load i32, ptr %37, align 4, !tbaa !20
  %52 = sub nsw i32 %51, %50
  %.off128 = add i32 %52, 1
  %.not127 = icmp ult i32 %.off128, 3
  br i1 %.not127, label %._crit_edge, label %53

53:                                               ; preds = %49
  %54 = sdiv i32 %52, 2
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.4, i32 noundef 1)
  %55 = add nsw i32 %54, -1
  %.not129143 = icmp eq i32 %55, 0
  br i1 %.not129143, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %53, %.lr.ph
  %.165144 = phi i32 [ %56, %.lr.ph ], [ %55, %53 ]
  %56 = add nsw i32 %.165144, -1
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.5, i32 noundef 1)
  %.not129 = icmp eq i32 %56, 0
  br i1 %.not129, label %._crit_edge, label %.lr.ph, !llvm.loop !21

._crit_edge:                                      ; preds = %.lr.ph, %49, %53
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull %3, i32 noundef %50)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull %3, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %57 unwind label %58

57:                                               ; preds = %._crit_edge
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %3) #10
  br label %79

58:                                               ; preds = %._crit_edge
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %3) #10
  br label %294

60:                                               ; preds = %45
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.6, i32 noundef 7)
  br label %79

61:                                               ; preds = %40
  %62 = load ptr, ptr %38, align 8, !tbaa !23
  %63 = sext i32 %43 to i64
  %64 = getelementptr inbounds %struct.editRow, ptr %62, i64 %63
  %65 = getelementptr inbounds i8, ptr %64, i64 8
  %66 = load i32, ptr %65, align 8, !tbaa !24
  %67 = load i32, ptr %39, align 4, !tbaa !26
  %68 = sub nsw i32 %66, %67
  %69 = icmp sgt i32 %68, 0
  br i1 %69, label %70, label %.loopexit139

70:                                               ; preds = %61
  %71 = load i32, ptr %37, align 4, !tbaa !20
  %72 = getelementptr inbounds i8, ptr %64, i64 24
  %73 = load ptr, ptr %72, align 8, !tbaa !27
  %74 = sext i32 %67 to i64
  %75 = getelementptr inbounds i8, ptr %73, i64 %74
  %76 = icmp sgt i32 %71, 0
  br i1 %76, label %.lr.ph147.preheader, label %.loopexit139

.lr.ph147.preheader:                              ; preds = %70
  %77 = call i32 @llvm.umin.i32(i32 %68, i32 %71)
  %wide.trip.count = zext nneg i32 %77 to i64
  br label %.lr.ph147

.lr.ph147:                                        ; preds = %.lr.ph147.preheader, %.lr.ph147
  %indvars.iv = phi i64 [ 0, %.lr.ph147.preheader ], [ %indvars.iv.next, %.lr.ph147 ]
  %78 = getelementptr inbounds i8, ptr %75, i64 %indvars.iv
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %78, i32 noundef 1)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit139, label %.lr.ph147, !llvm.loop !28

.loopexit139:                                     ; preds = %.lr.ph147, %70, %61
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.7, i32 noundef 5)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.8, i32 noundef 4)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.9, i32 noundef 2)
  br label %79

79:                                               ; preds = %57, %60, %.loopexit139
  %80 = add nuw nsw i32 %.060148, 1
  %81 = load i32, ptr %32, align 8, !tbaa !17
  %82 = icmp slt i32 %80, %81
  br i1 %82, label %40, label %._crit_edge151, !llvm.loop !29

._crit_edge151:                                   ; preds = %79, %1
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.8, i32 noundef 4)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.10, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %7) #10
  %83 = getelementptr inbounds i8, ptr %0, i64 120
  %84 = load ptr, ptr %83, align 8, !tbaa !30
  %85 = getelementptr inbounds i8, ptr %0, i64 96
  %86 = load i32, ptr %85, align 8, !tbaa !19
  %87 = getelementptr inbounds i8, ptr %0, i64 112
  %88 = load i32, ptr %87, align 8, !tbaa !31
  %.not = icmp eq i32 %88, 0
  %89 = select i1 %.not, ptr @.str.13, ptr @.str.12
  %90 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %6, i64 noundef 80, ptr noundef nonnull @.str.11, ptr noundef %84, i32 noundef %86, ptr noundef nonnull %89) #10
  %91 = getelementptr inbounds i8, ptr %0, i64 72
  %92 = load i32, ptr %91, align 8, !tbaa !18
  %93 = getelementptr inbounds i8, ptr %0, i64 68
  %94 = load i32, ptr %93, align 4, !tbaa !32
  %95 = add nsw i32 %94, %92
  %96 = load i32, ptr %85, align 8, !tbaa !19
  %97 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %7, i64 noundef 80, ptr noundef nonnull @.str.14, i32 noundef %95, i32 noundef %96) #10
  %98 = getelementptr inbounds i8, ptr %0, i64 84
  %99 = load i32, ptr %98, align 4, !tbaa !20
  %spec.select133 = call i32 @llvm.smin.i32(i32 %90, i32 %99)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull %6, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %100 unwind label %108

100:                                              ; preds = %._crit_edge151
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %7, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %101 unwind label %110

101:                                              ; preds = %100
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull %6, i32 noundef %spec.select133)
  %102 = load i32, ptr %98, align 4, !tbaa !20
  %103 = icmp slt i32 %spec.select133, %102
  br i1 %103, label %.lr.ph154, label %.loopexit138

.lr.ph154:                                        ; preds = %101, %112
  %104 = phi i32 [ %114, %112 ], [ %102, %101 ]
  %.182152 = phi i32 [ %113, %112 ], [ %spec.select133, %101 ]
  %105 = sub nsw i32 %104, %.182152
  %106 = icmp eq i32 %105, %97
  br i1 %106, label %107, label %112

107:                                              ; preds = %.lr.ph154
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull %7, i32 noundef %97)
  br label %.loopexit138

108:                                              ; preds = %._crit_edge151
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #10
  br label %293

110:                                              ; preds = %100
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  br label %292

112:                                              ; preds = %.lr.ph154
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.5, i32 noundef 1)
  %113 = add nsw i32 %.182152, 1
  %114 = load i32, ptr %98, align 4, !tbaa !20
  %115 = icmp slt i32 %113, %114
  br i1 %115, label %.lr.ph154, label %.loopexit138, !llvm.loop !33

.loopexit138:                                     ; preds = %112, %101, %107
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.15, i32 noundef 6)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.8, i32 noundef 4)
  %116 = getelementptr inbounds i8, ptr %0, i64 128
  %117 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %116) #11
  %118 = trunc i64 %117 to i32
  %119 = getelementptr inbounds i8, ptr %0, i64 240
  %120 = load i8, ptr %119, align 8, !tbaa !34, !range !35, !noundef !36
  %121 = trunc nuw i8 %120 to i1
  br i1 %121, label %122, label %129

122:                                              ; preds = %.loopexit138
  %123 = getelementptr inbounds i8, ptr %0, i64 208
  %124 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %123) #10
  %125 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %123) #10
  %126 = trunc i64 %125 to i32
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %124, i32 noundef %126)
  br label %141

127:                                              ; preds = %._crit_edge166
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %291

129:                                              ; preds = %.loopexit138
  %.not104 = icmp eq i32 %118, 0
  br i1 %.not104, label %141, label %130

130:                                              ; preds = %129
  %131 = call i64 @time(ptr noundef null) #10
  %132 = getelementptr inbounds i8, ptr %0, i64 248
  %133 = load i64, ptr %132, align 8, !tbaa !37
  %134 = sub nsw i64 %131, %133
  %135 = icmp slt i64 %134, 2
  br i1 %135, label %136, label %141

136:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull %116, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %137 unwind label %139

137:                                              ; preds = %136
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  %138 = load i32, ptr %98, align 4, !tbaa !20
  %. = call i32 @llvm.smin.i32(i32 %138, i32 %118)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull %116, i32 noundef %.)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  br label %141

139:                                              ; preds = %136
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  br label %291

141:                                              ; preds = %129, %130, %137, %122
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.15, i32 noundef 6)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.8, i32 noundef 4)
  %142 = getelementptr inbounds i8, ptr %0, i64 48
  %143 = load ptr, ptr %142, align 8, !tbaa !38
  %144 = load i32, ptr %143, align 4, !tbaa !39
  %.not106 = icmp eq i32 %144, 0
  br i1 %.not106, label %145, label %196

145:                                              ; preds = %141
  %146 = getelementptr inbounds i8, ptr %0, i64 56
  %147 = load ptr, ptr %146, align 8, !tbaa !40
  %148 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %147, i64 noundef 0) #10
  %149 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %148) #10
  %.not107 = icmp eq i64 %149, 0
  br i1 %.not107, label %150, label %158

150:                                              ; preds = %145
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.10, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #10
  %151 = load i32, ptr %98, align 4, !tbaa !20
  %152 = sext i32 %151 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, i64 noundef %152, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %153 unwind label %156

153:                                              ; preds = %150
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #10
  %154 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  %155 = load i32, ptr %98, align 4, !tbaa !20
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %154, i32 noundef %155)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #10
  br label %233

156:                                              ; preds = %150
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #10
  br label %291

158:                                              ; preds = %145
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.16, i32 noundef 5)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.10, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #10
  %159 = load ptr, ptr %146, align 8, !tbaa !40
  %160 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef 2) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull @.str.17, ptr noundef nonnull align 8 dereferenceable(32) %160)
          to label %161 unwind label %182

161:                                              ; preds = %158
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.18)
          to label %162 unwind label %184

162:                                              ; preds = %161
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #10
  %163 = load ptr, ptr %146, align 8, !tbaa !40
  %164 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %163, i64 noundef 1) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull @.str.19, ptr noundef nonnull align 8 dereferenceable(32) %164)
          to label %165 unwind label %187

165:                                              ; preds = %162
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.20)
          to label %166 unwind label %189

166:                                              ; preds = %165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #10
  %167 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  %168 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  %169 = trunc i64 %168 to i32
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %167, i32 noundef %169)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.21, i32 noundef 4)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.10, i32 noundef 4)
  %170 = load i32, ptr %98, align 4, !tbaa !20
  %171 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  %172 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  %173 = add i64 %172, %171
  %174 = trunc i64 %173 to i32
  %175 = sub i32 %170, %174
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #10
  %176 = sext i32 %175 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, i64 noundef %176, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %177 unwind label %192

177:                                              ; preds = %166
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #10
  %178 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %178, i32 noundef %175)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.22, i32 noundef 5)
  %179 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  %180 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  %181 = trunc i64 %180 to i32
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %179, i32 noundef %181)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #10
  br label %233

182:                                              ; preds = %158
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %186

184:                                              ; preds = %161
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  br label %186

186:                                              ; preds = %184, %182
  %.pn = phi { ptr, i32 } [ %185, %184 ], [ %183, %182 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  br label %195

187:                                              ; preds = %162
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %191

189:                                              ; preds = %165
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  br label %191

191:                                              ; preds = %189, %187
  %.pn109 = phi { ptr, i32 } [ %190, %189 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #10
  br label %194

192:                                              ; preds = %166
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  br label %194

194:                                              ; preds = %192, %191
  %.pn111 = phi { ptr, i32 } [ %193, %192 ], [ %.pn109, %191 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  br label %195

195:                                              ; preds = %194, %186
  %.pn111.pn = phi { ptr, i32 } [ %.pn111, %194 ], [ %.pn, %186 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #10
  br label %291

196:                                              ; preds = %141
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.23, i32 noundef 5)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.10, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #10
  %197 = load i32, ptr %98, align 4, !tbaa !20
  %198 = sdiv i32 %197, 2
  %199 = add nsw i32 %198, -10
  %200 = sext i32 %199 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, i64 noundef %200, i8 noundef signext 32, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %201 unwind label %222

201:                                              ; preds = %196
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #10
  %202 = load ptr, ptr %142, align 8, !tbaa !38
  %203 = load i32, ptr %202, align 4, !tbaa !39
  %204 = icmp eq i32 %203, 1
  %205 = select i1 %204, ptr @.str.24, ptr @.str.25
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull %205, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %206 unwind label %224

206:                                              ; preds = %201
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull @.str.26, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %207 unwind label %226

207:                                              ; preds = %206
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.27)
          to label %208 unwind label %228

208:                                              ; preds = %207
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #10
  %209 = load ptr, ptr %142, align 8, !tbaa !38
  store i32 0, ptr %209, align 4, !tbaa !39
  %210 = load i32, ptr %98, align 4, !tbaa !20
  %211 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  %212 = trunc i64 %211 to i32
  %213 = sub i32 %210, %212
  %214 = sdiv i32 %213, 2
  %215 = and i32 %213, 1
  %spec.select134 = add nsw i32 %214, %215
  %216 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %216, i32 noundef %spec.select134)
  %217 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  %218 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  %219 = trunc i64 %218 to i32
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %217, i32 noundef %219)
  %220 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  %221 = add nsw i32 %spec.select134, -1
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %220, i32 noundef %221)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #10
  br label %233

222:                                              ; preds = %196
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #10
  br label %232

224:                                              ; preds = %201
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #10
  br label %231

226:                                              ; preds = %206
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %230

228:                                              ; preds = %207
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  br label %230

230:                                              ; preds = %228, %226
  %.pn114 = phi { ptr, i32 } [ %229, %228 ], [ %227, %226 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  br label %231

231:                                              ; preds = %230, %224
  %.pn114.pn = phi { ptr, i32 } [ %.pn114, %230 ], [ %225, %224 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  br label %232

232:                                              ; preds = %231, %222
  %.pn114.pn.pn = phi { ptr, i32 } [ %.pn114.pn, %231 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #10
  br label %291

233:                                              ; preds = %153, %177, %208
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.15, i32 noundef 6)
  %234 = getelementptr inbounds i8, ptr %0, i64 272
  %235 = load i32, ptr %234, align 8, !tbaa !41
  %236 = icmp sgt i32 %235, 0
  br i1 %236, label %.lr.ph165, label %._crit_edge166

.lr.ph165:                                        ; preds = %233
  %237 = getelementptr inbounds i8, ptr %0, i64 264
  %238 = getelementptr inbounds i8, ptr %0, i64 288
  %239 = getelementptr inbounds i8, ptr %0, i64 276
  %240 = getelementptr inbounds i8, ptr %0, i64 296
  %241 = getelementptr inbounds i8, ptr %0, i64 268
  br label %242

242:                                              ; preds = %.lr.ph165, %281
  %243 = phi i32 [ %235, %.lr.ph165 ], [ %283, %281 ]
  %.1163 = phi i32 [ 0, %.lr.ph165 ], [ %282, %281 ]
  %244 = load i32, ptr %237, align 8, !tbaa !42
  %245 = add nsw i32 %244, %.1163
  %246 = load i32, ptr %238, align 8, !tbaa !43
  %.not119 = icmp slt i32 %245, %246
  br i1 %.not119, label %263, label %247

247:                                              ; preds = %242
  %248 = icmp eq i32 %246, 0
  %249 = sdiv i32 %243, 2
  %250 = icmp eq i32 %.1163, %249
  %or.cond136 = and i1 %250, %248
  br i1 %or.cond136, label %251, label %262

251:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %28) #10
  %252 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %28, i64 noundef 80, ptr noundef nonnull @.str.28) #10
  %253 = load i32, ptr %239, align 4, !tbaa !44
  %254 = sub nsw i32 %253, %252
  %.off = add i32 %254, 1
  %.not120 = icmp ult i32 %.off, 3
  br i1 %.not120, label %._crit_edge159, label %255

255:                                              ; preds = %251
  %256 = sdiv i32 %254, 2
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.5, i32 noundef 1)
  %257 = add nsw i32 %256, -1
  %.not121155 = icmp eq i32 %257, 0
  br i1 %.not121155, label %._crit_edge159, label %.lr.ph158

.lr.ph158:                                        ; preds = %255, %.lr.ph158
  %.163156 = phi i32 [ %258, %.lr.ph158 ], [ %257, %255 ]
  %258 = add nsw i32 %.163156, -1
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.5, i32 noundef 1)
  %.not121 = icmp eq i32 %258, 0
  br i1 %.not121, label %._crit_edge159, label %.lr.ph158, !llvm.loop !45

._crit_edge159:                                   ; preds = %.lr.ph158, %251, %255
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull %28, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %259 unwind label %260

259:                                              ; preds = %._crit_edge159
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #10
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull %28, i32 noundef %252)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %28) #10
  br label %281

260:                                              ; preds = %._crit_edge159
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %28) #10
  br label %291

262:                                              ; preds = %247
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.29, i32 noundef 6)
  br label %281

263:                                              ; preds = %242
  %264 = load ptr, ptr %240, align 8, !tbaa !46
  %265 = sext i32 %245 to i64
  %266 = getelementptr inbounds %struct.editRow, ptr %264, i64 %265
  %267 = getelementptr inbounds i8, ptr %266, i64 8
  %268 = load i32, ptr %267, align 8, !tbaa !24
  %269 = load i32, ptr %241, align 4, !tbaa !47
  %270 = sub nsw i32 %268, %269
  %271 = icmp sgt i32 %270, 0
  br i1 %271, label %272, label %.loopexit

272:                                              ; preds = %263
  %273 = load i32, ptr %239, align 4, !tbaa !44
  %274 = getelementptr inbounds i8, ptr %266, i64 24
  %275 = load ptr, ptr %274, align 8, !tbaa !27
  %276 = sext i32 %269 to i64
  %277 = getelementptr inbounds i8, ptr %275, i64 %276
  %278 = icmp sgt i32 %273, 0
  br i1 %278, label %.lr.ph162.preheader, label %.loopexit

.lr.ph162.preheader:                              ; preds = %272
  %279 = call i32 @llvm.umin.i32(i32 %270, i32 %273)
  %wide.trip.count172 = zext nneg i32 %279 to i64
  br label %.lr.ph162

.lr.ph162:                                        ; preds = %.lr.ph162.preheader, %.lr.ph162
  %indvars.iv168 = phi i64 [ 0, %.lr.ph162.preheader ], [ %indvars.iv.next169, %.lr.ph162 ]
  %280 = getelementptr inbounds i8, ptr %277, i64 %indvars.iv168
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef %280, i32 noundef 1)
  %indvars.iv.next169 = add nuw nsw i64 %indvars.iv168, 1
  %exitcond173.not = icmp eq i64 %indvars.iv.next169, %wide.trip.count172
  br i1 %exitcond173.not, label %.loopexit, label %.lr.ph162, !llvm.loop !48

.loopexit:                                        ; preds = %.lr.ph162, %272, %263
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.7, i32 noundef 5)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.8, i32 noundef 4)
  call void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull @.str.9, i32 noundef 2)
  br label %281

281:                                              ; preds = %259, %262, %.loopexit
  %282 = add nuw nsw i32 %.1163, 1
  %283 = load i32, ptr %234, align 8, !tbaa !41
  %284 = icmp slt i32 %282, %283
  br i1 %284, label %242, label %._crit_edge166, !llvm.loop !49

._crit_edge166:                                   ; preds = %281, %233
  %285 = load i8, ptr %0, align 8, !tbaa !50, !range !35, !noundef !36
  %286 = trunc nuw i8 %285 to i1
  %.sink.v = select i1 %286, i64 256, i64 64
  %.sink = getelementptr inbounds i8, ptr %0, i64 %.sink.v
  call void @_ZN6Editor10set_cursorER12editorConfigPc(ptr noundef nonnull align 8 dereferenceable(448) %0, ptr noundef nonnull align 8 dereferenceable(192) %.sink, ptr noundef nonnull %2)
  %287 = load ptr, ptr %31, align 8, !tbaa !51
  %288 = load i64, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !52
  %289 = invoke i64 @write(i32 noundef 1, ptr noundef %287, i64 noundef %288)
          to label %290 unwind label %127

290:                                              ; preds = %._crit_edge166
  call void @_ZN6Editor11displayFreeEv(ptr noundef nonnull align 8 dereferenceable(448) %0)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #10
  ret void

291:                                              ; preds = %260, %232, %195, %156, %139, %127
  %.pn122 = phi { ptr, i32 } [ %261, %260 ], [ %128, %127 ], [ %.pn114.pn.pn, %232 ], [ %.pn111.pn, %195 ], [ %157, %156 ], [ %140, %139 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  br label %292

292:                                              ; preds = %291, %110
  %.pn122.pn = phi { ptr, i32 } [ %.pn122, %291 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  br label %293

293:                                              ; preds = %292, %108
  %.pn122.pn.pn = phi { ptr, i32 } [ %.pn122.pn, %292 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %6) #10
  br label %294

294:                                              ; preds = %293, %58
  %.pn130 = phi { ptr, i32 } [ %59, %58 ], [ %.pn122.pn.pn, %293 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #10
  resume { ptr, i32 } %.pn130
}

; 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 nounwind uwtable
declare dso_local void @_ZN6Editor13displayAppendEPKci(ptr noundef nonnull align 8 dereferenceable(448), ptr noundef, i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: nounwind
declare i64 @time(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef, i8 noundef signext, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Editor10set_cursorER12editorConfigPc(ptr noundef nonnull align 8 dereferenceable(448), ptr noundef nonnull align 8 dereferenceable(192), ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: nofree
declare noundef i64 @write(i32 noundef, ptr nocapture noundef readonly, i64 noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #8

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { nofree 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 #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 = { 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 #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nofree "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { nounwind }
attributes #11 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !13, i64 44}
!6 = !{!"_ZTS6Editor", !7, i64 0, !10, i64 8, !10, i64 16, !11, i64 24, !10, i64 48, !10, i64 56, !14, i64 64, !14, i64 256}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"_ZTS6buffer", !10, i64 0, !12, i64 8, !7, i64 16, !13, i64 20}
!12 = !{!"long", !8, i64 0}
!13 = !{!"int", !8, i64 0}
!14 = !{!"_ZTS12editorConfig", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !10, i64 40, !13, i64 48, !10, i64 56, !8, i64 64, !15, i64 144, !7, i64 176, !12, i64 184}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !16, i64 0, !12, i64 8, !8, i64 16}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!17 = !{!6, !13, i64 80}
!18 = !{!6, !13, i64 72}
!19 = !{!6, !13, i64 96}
!20 = !{!6, !13, i64 84}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!6, !10, i64 104}
!24 = !{!25, !13, i64 8}
!25 = !{!"_ZTS7editRow", !13, i64 0, !13, i64 4, !13, i64 8, !10, i64 16, !10, i64 24}
!26 = !{!6, !13, i64 76}
!27 = !{!25, !10, i64 24}
!28 = distinct !{!28, !22}
!29 = distinct !{!29, !22}
!30 = !{!6, !10, i64 120}
!31 = !{!6, !13, i64 112}
!32 = !{!6, !13, i64 68}
!33 = distinct !{!33, !22}
!34 = !{!6, !7, i64 240}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!6, !12, i64 248}
!38 = !{!6, !10, i64 48}
!39 = !{!13, !13, i64 0}
!40 = !{!6, !10, i64 56}
!41 = !{!6, !13, i64 272}
!42 = !{!6, !13, i64 264}
!43 = !{!6, !13, i64 288}
!44 = !{!6, !13, i64 276}
!45 = distinct !{!45, !22}
!46 = !{!6, !10, i64 296}
!47 = !{!6, !13, i64 268}
!48 = distinct !{!48, !22}
!49 = distinct !{!49, !22}
!50 = !{!6, !7, i64 0}
!51 = !{!6, !10, i64 24}
!52 = !{!6, !12, i64 32}


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