; LLVM IR from tangjz/acm-icpc :: self_training/2015-01-26 (C)

; 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"

@out = external dso_local global ptr, align 8
@t = external dso_local global i32, align 4
@chess = external dso_local global [8 x [8 x i32]], align 16
@now = external dso_local global i32, align 4
@cnt = external dso_local global [2 x i32], align 4
@rush = external dso_local global i8, align 1
@vis = external dso_local global [8 x [8 x i8]], align 16
@str = external dso_local global [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z5freshv() #0

; 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 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 @_Z5coverii(i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #2 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i8, align 1
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  %12 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef @t)
  br label %13

13:                                               ; preds = %221, %0
  %14 = load i32, ptr @t, align 4, !tbaa !5
  %15 = add nsw i32 %14, -1
  store i32 %15, ptr @t, align 4, !tbaa !5
  %16 = icmp ne i32 %14, 0
  br i1 %16, label %17, label %223

17:                                               ; preds = %13
  store i32 0, ptr getelementptr inbounds ([2 x i32], ptr @cnt, i64 0, i64 1), align 4, !tbaa !5
  store i32 0, ptr @cnt, align 4, !tbaa !5
  store i8 0, ptr @rush, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #5
  store i32 0, ptr %2, align 4, !tbaa !5
  br label %18

18:                                               ; preds = %73, %17
  %19 = load i32, ptr %2, align 4, !tbaa !5
  %20 = icmp slt i32 %19, 8
  br i1 %20, label %22, label %21

21:                                               ; preds = %18
  store i32 4, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #5
  br label %76

22:                                               ; preds = %18
  %23 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.2, ptr noundef @str)
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #5
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %24

24:                                               ; preds = %69, %22
  %25 = load i32, ptr %4, align 4, !tbaa !5
  %26 = icmp slt i32 %25, 8
  br i1 %26, label %28, label %27

27:                                               ; preds = %24
  store i32 7, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #5
  br label %72

28:                                               ; preds = %24
  %29 = load i32, ptr %4, align 4, !tbaa !5
  %30 = sext i32 %29 to i64
  %31 = getelementptr inbounds [10 x i8], ptr @str, i64 0, i64 %30
  %32 = load i8, ptr %31, align 1, !tbaa !11
  %33 = sext i8 %32 to i32
  %34 = icmp eq i32 %33, 66
  br i1 %34, label %35, label %44

35:                                               ; preds = %28
  %36 = load i32, ptr %2, align 4, !tbaa !5
  %37 = sext i32 %36 to i64
  %38 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %37
  %39 = load i32, ptr %4, align 4, !tbaa !5
  %40 = sext i32 %39 to i64
  %41 = getelementptr inbounds [8 x i32], ptr %38, i64 0, i64 %40
  store i32 0, ptr %41, align 4, !tbaa !5
  %42 = load i32, ptr @cnt, align 4, !tbaa !5
  %43 = add nsw i32 %42, 1
  store i32 %43, ptr @cnt, align 4, !tbaa !5
  br label %68

44:                                               ; preds = %28
  %45 = load i32, ptr %4, align 4, !tbaa !5
  %46 = sext i32 %45 to i64
  %47 = getelementptr inbounds [10 x i8], ptr @str, i64 0, i64 %46
  %48 = load i8, ptr %47, align 1, !tbaa !11
  %49 = sext i8 %48 to i32
  %50 = icmp eq i32 %49, 87
  br i1 %50, label %51, label %60

51:                                               ; preds = %44
  %52 = load i32, ptr %2, align 4, !tbaa !5
  %53 = sext i32 %52 to i64
  %54 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %53
  %55 = load i32, ptr %4, align 4, !tbaa !5
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds [8 x i32], ptr %54, i64 0, i64 %56
  store i32 1, ptr %57, align 4, !tbaa !5
  %58 = load i32, ptr getelementptr inbounds ([2 x i32], ptr @cnt, i64 0, i64 1), align 4, !tbaa !5
  %59 = add nsw i32 %58, 1
  store i32 %59, ptr getelementptr inbounds ([2 x i32], ptr @cnt, i64 0, i64 1), align 4, !tbaa !5
  br label %67

60:                                               ; preds = %44
  %61 = load i32, ptr %2, align 4, !tbaa !5
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %62
  %64 = load i32, ptr %4, align 4, !tbaa !5
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %65
  store i32 2, ptr %66, align 4, !tbaa !5
  br label %67

67:                                               ; preds = %60, %51
  br label %68

68:                                               ; preds = %67, %35
  br label %69

69:                                               ; preds = %68
  %70 = load i32, ptr %4, align 4, !tbaa !5
  %71 = add nsw i32 %70, 1
  store i32 %71, ptr %4, align 4, !tbaa !5
  br label %24, !llvm.loop !12

72:                                               ; preds = %27
  br label %73

73:                                               ; preds = %72
  %74 = load i32, ptr %2, align 4, !tbaa !5
  %75 = add nsw i32 %74, 1
  store i32 %75, ptr %2, align 4, !tbaa !5
  br label %18, !llvm.loop !14

76:                                               ; preds = %21
  %77 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.2, ptr noundef @str)
  %78 = load i8, ptr @str, align 1, !tbaa !11
  %79 = sext i8 %78 to i32
  %80 = icmp eq i32 %79, 87
  %81 = zext i1 %80 to i32
  store i32 %81, ptr @now, align 4, !tbaa !5
  br label %82

82:                                               ; preds = %187, %76
  %83 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.2, ptr noundef @str)
  %84 = icmp ne i32 %83, -1
  br i1 %84, label %85, label %89

85:                                               ; preds = %82
  %86 = load i8, ptr @str, align 1, !tbaa !11
  %87 = sext i8 %86 to i32
  %88 = icmp ne i32 %87, 81
  br label %89

89:                                               ; preds = %85, %82
  %90 = phi i1 [ false, %82 ], [ %88, %85 ]
  br i1 %90, label %91, label %188

91:                                               ; preds = %89
  %92 = load i8, ptr @str, align 1, !tbaa !11
  %93 = sext i8 %92 to i32
  %94 = icmp eq i32 %93, 76
  br i1 %94, label %95, label %145

95:                                               ; preds = %91
  %96 = load i8, ptr @rush, align 1, !tbaa !9, !range !15, !noundef !16
  %97 = trunc i8 %96 to i1
  br i1 %97, label %99, label %98

98:                                               ; preds = %95
  call void @_Z5freshv()
  br label %99

99:                                               ; preds = %98, %95
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #5
  store i8 0, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %100

100:                                              ; preds = %135, %99
  %101 = load i32, ptr %6, align 4, !tbaa !5
  %102 = icmp slt i32 %101, 8
  br i1 %102, label %104, label %103

103:                                              ; preds = %100
  store i32 12, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  br label %138

104:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #5
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %105

105:                                              ; preds = %131, %104
  %106 = load i32, ptr %7, align 4, !tbaa !5
  %107 = icmp slt i32 %106, 8
  br i1 %107, label %109, label %108

108:                                              ; preds = %105
  store i32 15, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #5
  br label %134

109:                                              ; preds = %105
  %110 = load i32, ptr %6, align 4, !tbaa !5
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %111
  %113 = load i32, ptr %7, align 4, !tbaa !5
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds [8 x i8], ptr %112, i64 0, i64 %114
  %116 = load i8, ptr %115, align 1, !tbaa !9, !range !15, !noundef !16
  %117 = trunc i8 %116 to i1
  br i1 %117, label %118, label %130

118:                                              ; preds = %109
  %119 = load i8, ptr %5, align 1, !tbaa !9, !range !15, !noundef !16
  %120 = trunc i8 %119 to i1
  br i1 %120, label %121, label %123

121:                                              ; preds = %118
  %122 = call i32 @putchar(i32 noundef 32)
  br label %124

123:                                              ; preds = %118
  store i8 1, ptr %5, align 1, !tbaa !9
  br label %124

124:                                              ; preds = %123, %121
  %125 = load i32, ptr %6, align 4, !tbaa !5
  %126 = add nsw i32 %125, 1
  %127 = load i32, ptr %7, align 4, !tbaa !5
  %128 = add nsw i32 %127, 1
  %129 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, i32 noundef %126, i32 noundef %128)
  br label %130

130:                                              ; preds = %124, %109
  br label %131

131:                                              ; preds = %130
  %132 = load i32, ptr %7, align 4, !tbaa !5
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %7, align 4, !tbaa !5
  br label %105, !llvm.loop !17

134:                                              ; preds = %108
  br label %135

135:                                              ; preds = %134
  %136 = load i32, ptr %6, align 4, !tbaa !5
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr %6, align 4, !tbaa !5
  br label %100, !llvm.loop !18

138:                                              ; preds = %103
  %139 = load i8, ptr %5, align 1, !tbaa !9, !range !15, !noundef !16
  %140 = trunc i8 %139 to i1
  br i1 %140, label %143, label %141

141:                                              ; preds = %138
  %142 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  br label %143

143:                                              ; preds = %141, %138
  %144 = call i32 @putchar(i32 noundef 10)
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #5
  br label %187

145:                                              ; preds = %91
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  %146 = load i8, ptr getelementptr inbounds ([10 x i8], ptr @str, i64 0, i64 1), align 1, !tbaa !11
  %147 = sext i8 %146 to i32
  %148 = sub nsw i32 %147, 49
  store i32 %148, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %149 = load i8, ptr getelementptr inbounds ([10 x i8], ptr @str, i64 0, i64 2), align 1, !tbaa !11
  %150 = sext i8 %149 to i32
  %151 = sub nsw i32 %150, 49
  store i32 %151, ptr %9, align 4, !tbaa !5
  %152 = load i8, ptr @rush, align 1, !tbaa !9, !range !15, !noundef !16
  %153 = trunc i8 %152 to i1
  br i1 %153, label %155, label %154

154:                                              ; preds = %145
  call void @_Z5freshv()
  br label %155

155:                                              ; preds = %154, %145
  %156 = load i32, ptr %8, align 4, !tbaa !5
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %157
  %159 = load i32, ptr %9, align 4, !tbaa !5
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds [8 x i8], ptr %158, i64 0, i64 %160
  %162 = load i8, ptr %161, align 1, !tbaa !9, !range !15, !noundef !16
  %163 = trunc i8 %162 to i1
  br i1 %163, label %167, label %164

164:                                              ; preds = %155
  %165 = load i32, ptr @now, align 4, !tbaa !5
  %166 = xor i32 %165, 1
  store i32 %166, ptr @now, align 4, !tbaa !5
  br label %167

167:                                              ; preds = %164, %155
  %168 = load i32, ptr @now, align 4, !tbaa !5
  %169 = load i32, ptr %8, align 4, !tbaa !5
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %170
  %172 = load i32, ptr %9, align 4, !tbaa !5
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds [8 x i32], ptr %171, i64 0, i64 %173
  store i32 %168, ptr %174, align 4, !tbaa !5
  %175 = load i32, ptr %8, align 4, !tbaa !5
  %176 = load i32, ptr %9, align 4, !tbaa !5
  call void @_Z5coverii(i32 noundef %175, i32 noundef %176)
  %177 = load i32, ptr @now, align 4, !tbaa !5
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds [2 x i32], ptr @cnt, i64 0, i64 %178
  %180 = load i32, ptr %179, align 4, !tbaa !5
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr %179, align 4, !tbaa !5
  store i8 0, ptr @rush, align 1, !tbaa !9
  %182 = load i32, ptr @now, align 4, !tbaa !5
  %183 = xor i32 %182, 1
  store i32 %183, ptr @now, align 4, !tbaa !5
  %184 = load i32, ptr @cnt, align 4, !tbaa !5
  %185 = load i32, ptr getelementptr inbounds ([2 x i32], ptr @cnt, i64 0, i64 1), align 4, !tbaa !5
  %186 = call i32 (ptr, ...) @printf(ptr noundef @.str.5, i32 noundef %184, i32 noundef %185)
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br label %187

187:                                              ; preds = %167, %143
  br label %82, !llvm.loop !19

188:                                              ; preds = %89
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %189

189:                                              ; preds = %218, %188
  %190 = load i32, ptr %10, align 4, !tbaa !5
  %191 = icmp slt i32 %190, 8
  br i1 %191, label %193, label %192

192:                                              ; preds = %189
  store i32 18, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %221

193:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !5
  br label %194

194:                                              ; preds = %213, %193
  %195 = load i32, ptr %11, align 4, !tbaa !5
  %196 = icmp slt i32 %195, 8
  br i1 %196, label %198, label %197

197:                                              ; preds = %194
  store i32 21, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %216

198:                                              ; preds = %194
  %199 = load ptr, ptr @out, align 8, !tbaa !20
  %200 = load i32, ptr %10, align 4, !tbaa !5
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %201
  %203 = load i32, ptr %11, align 4, !tbaa !5
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds [8 x i32], ptr %202, i64 0, i64 %204
  %206 = load i32, ptr %205, align 4, !tbaa !5
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds i8, ptr %199, i64 %207
  %209 = load i8, ptr %208, align 1, !tbaa !11
  %210 = load i32, ptr %11, align 4, !tbaa !5
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds [10 x i8], ptr @str, i64 0, i64 %211
  store i8 %209, ptr %212, align 1, !tbaa !11
  br label %213

213:                                              ; preds = %198
  %214 = load i32, ptr %11, align 4, !tbaa !5
  %215 = add nsw i32 %214, 1
  store i32 %215, ptr %11, align 4, !tbaa !5
  br label %194, !llvm.loop !22

216:                                              ; preds = %197
  store i8 0, ptr getelementptr inbounds ([10 x i8], ptr @str, i64 0, i64 8), align 1, !tbaa !11
  %217 = call i32 @puts(ptr noundef @str)
  br label %218

218:                                              ; preds = %216
  %219 = load i32, ptr %10, align 4, !tbaa !5
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %10, align 4, !tbaa !5
  br label %189, !llvm.loop !23

221:                                              ; preds = %192
  %222 = call i32 @putchar(i32 noundef 10)
  br label %13, !llvm.loop !24

223:                                              ; preds = %13
  ret i32 0
}

declare i32 @__isoc99_scanf(ptr noundef, ...) #3

; Function Attrs: inlinehint mustprogress uwtable
declare i32 @putchar(i32 noundef) #4

declare i32 @printf(ptr noundef, ...) #3

declare i32 @puts(ptr noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = !{!21, !21, i64 0}
!21 = !{!"any pointer", !7, i64 0}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}


; 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"

@out = external dso_local local_unnamed_addr global ptr, align 8
@t = external dso_local global i32, align 4
@chess = external dso_local local_unnamed_addr global [8 x [8 x i32]], align 16
@now = external dso_local local_unnamed_addr global i32, align 4
@cnt = external dso_local local_unnamed_addr global [2 x i32], align 4
@rush = external dso_local local_unnamed_addr global i8, align 1
@vis = external dso_local local_unnamed_addr global [8 x [8 x i8]], align 16
@str = external dso_local global [10 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z5freshv() local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z5coverii(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress norecurse nounwind uwtable
define dso_local noundef i32 @main() local_unnamed_addr #1 {
  %1 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull @t)
  %2 = load i32, ptr @t, align 4, !tbaa !5
  %3 = add nsw i32 %2, -1
  store i32 %3, ptr @t, align 4, !tbaa !5
  %.not53 = icmp eq i32 %2, 0
  br i1 %.not53, label %._crit_edge, label %.lr.ph54

.lr.ph54:                                         ; preds = %0, %.preheader43
  store i32 0, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  store i32 0, ptr @cnt, align 4, !tbaa !5
  store i8 0, ptr @rush, align 1, !tbaa !9
  br label %14

4:                                                ; preds = %93
  %5 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.2, ptr noundef nonnull @str)
  %6 = load i8, ptr @str, align 1, !tbaa !11
  %7 = icmp eq i8 %6, 87
  %8 = zext i1 %7 to i32
  store i32 %8, ptr @now, align 4, !tbaa !5
  %9 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.2, ptr noundef nonnull @str)
  %10 = icmp ne i32 %9, -1
  %11 = load i8, ptr @str, align 1
  %12 = icmp ne i8 %11, 81
  %13 = select i1 %10, i1 %12, i1 false
  br i1 %13, label %.lr.ph, label %.preheader43

14:                                               ; preds = %.lr.ph54, %93
  %indvars.iv = phi i64 [ 0, %.lr.ph54 ], [ %indvars.iv.next, %93 ]
  %15 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.2, ptr noundef nonnull @str)
  %.promoted = load i32, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  %cnt.promoted = load i32, ptr @cnt, align 4, !tbaa !5
  %16 = load i8, ptr @str, align 1, !tbaa !11
  %17 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %indvars.iv, i64 0
  switch i8 %16, label %22 [
    i8 66, label %18
    i8 87, label %20
  ]

18:                                               ; preds = %14
  store i32 0, ptr %17, align 16, !tbaa !5
  %19 = add nsw i32 %cnt.promoted, 1
  store i32 %19, ptr @cnt, align 4, !tbaa !5
  br label %23

20:                                               ; preds = %14
  store i32 1, ptr %17, align 16, !tbaa !5
  %21 = add nsw i32 %.promoted, 1
  store i32 %21, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  br label %23

22:                                               ; preds = %14
  store i32 2, ptr %17, align 16, !tbaa !5
  br label %23

23:                                               ; preds = %18, %22, %20
  %24 = phi i32 [ %19, %18 ], [ %cnt.promoted, %22 ], [ %cnt.promoted, %20 ]
  %25 = phi i32 [ %.promoted, %18 ], [ %.promoted, %22 ], [ %21, %20 ]
  %26 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %27 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %indvars.iv, i64 1
  switch i8 %26, label %32 [
    i8 66, label %30
    i8 87, label %28
  ]

28:                                               ; preds = %23
  store i32 1, ptr %27, align 4, !tbaa !5
  %29 = add nsw i32 %25, 1
  store i32 %29, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  br label %33

30:                                               ; preds = %23
  store i32 0, ptr %27, align 4, !tbaa !5
  %31 = add nsw i32 %24, 1
  store i32 %31, ptr @cnt, align 4, !tbaa !5
  br label %33

32:                                               ; preds = %23
  store i32 2, ptr %27, align 4, !tbaa !5
  br label %33

33:                                               ; preds = %32, %30, %28
  %34 = phi i32 [ %31, %30 ], [ %24, %32 ], [ %24, %28 ]
  %35 = phi i32 [ %25, %30 ], [ %25, %32 ], [ %29, %28 ]
  %36 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %37 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %indvars.iv, i64 2
  switch i8 %36, label %42 [
    i8 66, label %40
    i8 87, label %38
  ]

38:                                               ; preds = %33
  store i32 1, ptr %37, align 8, !tbaa !5
  %39 = add nsw i32 %35, 1
  store i32 %39, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  br label %43

40:                                               ; preds = %33
  store i32 0, ptr %37, align 8, !tbaa !5
  %41 = add nsw i32 %34, 1
  store i32 %41, ptr @cnt, align 4, !tbaa !5
  br label %43

42:                                               ; preds = %33
  store i32 2, ptr %37, align 8, !tbaa !5
  br label %43

43:                                               ; preds = %42, %40, %38
  %44 = phi i32 [ %41, %40 ], [ %34, %42 ], [ %34, %38 ]
  %45 = phi i32 [ %35, %40 ], [ %35, %42 ], [ %39, %38 ]
  %46 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %47 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %indvars.iv, i64 3
  switch i8 %46, label %52 [
    i8 66, label %50
    i8 87, label %48
  ]

48:                                               ; preds = %43
  store i32 1, ptr %47, align 4, !tbaa !5
  %49 = add nsw i32 %45, 1
  store i32 %49, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  br label %53

50:                                               ; preds = %43
  store i32 0, ptr %47, align 4, !tbaa !5
  %51 = add nsw i32 %44, 1
  store i32 %51, ptr @cnt, align 4, !tbaa !5
  br label %53

52:                                               ; preds = %43
  store i32 2, ptr %47, align 4, !tbaa !5
  br label %53

53:                                               ; preds = %52, %50, %48
  %54 = phi i32 [ %51, %50 ], [ %44, %52 ], [ %44, %48 ]
  %55 = phi i32 [ %45, %50 ], [ %45, %52 ], [ %49, %48 ]
  %56 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %57 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %indvars.iv, i64 4
  switch i8 %56, label %62 [
    i8 66, label %60
    i8 87, label %58
  ]

58:                                               ; preds = %53
  store i32 1, ptr %57, align 16, !tbaa !5
  %59 = add nsw i32 %55, 1
  store i32 %59, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  br label %63

60:                                               ; preds = %53
  store i32 0, ptr %57, align 16, !tbaa !5
  %61 = add nsw i32 %54, 1
  store i32 %61, ptr @cnt, align 4, !tbaa !5
  br label %63

62:                                               ; preds = %53
  store i32 2, ptr %57, align 16, !tbaa !5
  br label %63

63:                                               ; preds = %62, %60, %58
  %64 = phi i32 [ %61, %60 ], [ %54, %62 ], [ %54, %58 ]
  %65 = phi i32 [ %55, %60 ], [ %55, %62 ], [ %59, %58 ]
  %66 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %67 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %indvars.iv, i64 5
  switch i8 %66, label %72 [
    i8 66, label %70
    i8 87, label %68
  ]

68:                                               ; preds = %63
  store i32 1, ptr %67, align 4, !tbaa !5
  %69 = add nsw i32 %65, 1
  store i32 %69, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  br label %73

70:                                               ; preds = %63
  store i32 0, ptr %67, align 4, !tbaa !5
  %71 = add nsw i32 %64, 1
  store i32 %71, ptr @cnt, align 4, !tbaa !5
  br label %73

72:                                               ; preds = %63
  store i32 2, ptr %67, align 4, !tbaa !5
  br label %73

73:                                               ; preds = %72, %70, %68
  %74 = phi i32 [ %71, %70 ], [ %64, %72 ], [ %64, %68 ]
  %75 = phi i32 [ %65, %70 ], [ %65, %72 ], [ %69, %68 ]
  %76 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %77 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %indvars.iv, i64 6
  switch i8 %76, label %82 [
    i8 66, label %80
    i8 87, label %78
  ]

78:                                               ; preds = %73
  store i32 1, ptr %77, align 8, !tbaa !5
  %79 = add nsw i32 %75, 1
  store i32 %79, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  br label %83

80:                                               ; preds = %73
  store i32 0, ptr %77, align 8, !tbaa !5
  %81 = add nsw i32 %74, 1
  store i32 %81, ptr @cnt, align 4, !tbaa !5
  br label %83

82:                                               ; preds = %73
  store i32 2, ptr %77, align 8, !tbaa !5
  br label %83

83:                                               ; preds = %82, %80, %78
  %84 = phi i32 [ %81, %80 ], [ %74, %82 ], [ %74, %78 ]
  %85 = phi i32 [ %75, %80 ], [ %75, %82 ], [ %79, %78 ]
  %86 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  %87 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %indvars.iv, i64 7
  switch i8 %86, label %92 [
    i8 66, label %90
    i8 87, label %88
  ]

88:                                               ; preds = %83
  store i32 1, ptr %87, align 4, !tbaa !5
  %89 = add nsw i32 %85, 1
  store i32 %89, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  br label %93

90:                                               ; preds = %83
  store i32 0, ptr %87, align 4, !tbaa !5
  %91 = add nsw i32 %84, 1
  store i32 %91, ptr @cnt, align 4, !tbaa !5
  br label %93

92:                                               ; preds = %83
  store i32 2, ptr %87, align 4, !tbaa !5
  br label %93

93:                                               ; preds = %92, %90, %88
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 8
  br i1 %exitcond.not, label %4, label %14, !llvm.loop !12

.lr.ph:                                           ; preds = %4, %224
  %94 = phi i8 [ %227, %224 ], [ %11, %4 ]
  %95 = icmp eq i8 %94, 76
  br i1 %95, label %96, label %194

96:                                               ; preds = %.lr.ph
  %97 = load i8, ptr @rush, align 1, !tbaa !9, !range !14, !noundef !15
  %98 = trunc nuw i8 %97 to i1
  br i1 %98, label %.preheader.preheader, label %99

99:                                               ; preds = %96
  tail call void @_Z5freshv()
  br label %.preheader.preheader

.preheader.preheader:                             ; preds = %99, %96
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %189
  %indvars.iv60 = phi i64 [ %indvars.iv.next61, %189 ], [ 0, %.preheader.preheader ]
  %.03949 = phi i8 [ %.3.7, %189 ], [ 0, %.preheader.preheader ]
  %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1
  %100 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %indvars.iv60, i64 0
  %101 = load i8, ptr %100, align 8, !tbaa !9, !range !14, !noundef !15
  %102 = trunc nuw i8 %101 to i1
  br i1 %102, label %105, label %112

103:                                              ; preds = %189
  %104 = trunc nuw i8 %.3.7 to i1
  br i1 %104, label %192, label %190

105:                                              ; preds = %.preheader
  %106 = trunc nuw i8 %.03949 to i1
  br i1 %106, label %107, label %109

107:                                              ; preds = %105
  %108 = tail call i32 @putchar(i32 noundef 32)
  br label %109

109:                                              ; preds = %105, %107
  %.2 = phi i8 [ %.03949, %107 ], [ 1, %105 ]
  %110 = trunc nuw nsw i64 %indvars.iv.next61 to i32
  %111 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %110, i32 noundef 1)
  br label %112

112:                                              ; preds = %.preheader, %109
  %.3 = phi i8 [ %.2, %109 ], [ %.03949, %.preheader ]
  %113 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %indvars.iv60, i64 1
  %114 = load i8, ptr %113, align 1, !tbaa !9, !range !14, !noundef !15
  %115 = trunc nuw i8 %114 to i1
  br i1 %115, label %116, label %123

116:                                              ; preds = %112
  %117 = trunc nuw i8 %.3 to i1
  br i1 %117, label %118, label %120

118:                                              ; preds = %116
  %119 = tail call i32 @putchar(i32 noundef 32)
  br label %120

120:                                              ; preds = %118, %116
  %.2.1 = phi i8 [ %.3, %118 ], [ 1, %116 ]
  %121 = trunc nuw nsw i64 %indvars.iv.next61 to i32
  %122 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %121, i32 noundef 2)
  br label %123

123:                                              ; preds = %120, %112
  %.3.1 = phi i8 [ %.2.1, %120 ], [ %.3, %112 ]
  %124 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %indvars.iv60, i64 2
  %125 = load i8, ptr %124, align 2, !tbaa !9, !range !14, !noundef !15
  %126 = trunc nuw i8 %125 to i1
  br i1 %126, label %127, label %134

127:                                              ; preds = %123
  %128 = trunc nuw i8 %.3.1 to i1
  br i1 %128, label %129, label %131

129:                                              ; preds = %127
  %130 = tail call i32 @putchar(i32 noundef 32)
  br label %131

131:                                              ; preds = %129, %127
  %.2.2 = phi i8 [ %.3.1, %129 ], [ 1, %127 ]
  %132 = trunc nuw nsw i64 %indvars.iv.next61 to i32
  %133 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %132, i32 noundef 3)
  br label %134

134:                                              ; preds = %131, %123
  %.3.2 = phi i8 [ %.2.2, %131 ], [ %.3.1, %123 ]
  %135 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %indvars.iv60, i64 3
  %136 = load i8, ptr %135, align 1, !tbaa !9, !range !14, !noundef !15
  %137 = trunc nuw i8 %136 to i1
  br i1 %137, label %138, label %145

138:                                              ; preds = %134
  %139 = trunc nuw i8 %.3.2 to i1
  br i1 %139, label %140, label %142

140:                                              ; preds = %138
  %141 = tail call i32 @putchar(i32 noundef 32)
  br label %142

142:                                              ; preds = %140, %138
  %.2.3 = phi i8 [ %.3.2, %140 ], [ 1, %138 ]
  %143 = trunc nuw nsw i64 %indvars.iv.next61 to i32
  %144 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %143, i32 noundef 4)
  br label %145

145:                                              ; preds = %142, %134
  %.3.3 = phi i8 [ %.2.3, %142 ], [ %.3.2, %134 ]
  %146 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %indvars.iv60, i64 4
  %147 = load i8, ptr %146, align 4, !tbaa !9, !range !14, !noundef !15
  %148 = trunc nuw i8 %147 to i1
  br i1 %148, label %149, label %156

149:                                              ; preds = %145
  %150 = trunc nuw i8 %.3.3 to i1
  br i1 %150, label %151, label %153

151:                                              ; preds = %149
  %152 = tail call i32 @putchar(i32 noundef 32)
  br label %153

153:                                              ; preds = %151, %149
  %.2.4 = phi i8 [ %.3.3, %151 ], [ 1, %149 ]
  %154 = trunc nuw nsw i64 %indvars.iv.next61 to i32
  %155 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %154, i32 noundef 5)
  br label %156

156:                                              ; preds = %153, %145
  %.3.4 = phi i8 [ %.2.4, %153 ], [ %.3.3, %145 ]
  %157 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %indvars.iv60, i64 5
  %158 = load i8, ptr %157, align 1, !tbaa !9, !range !14, !noundef !15
  %159 = trunc nuw i8 %158 to i1
  br i1 %159, label %160, label %167

160:                                              ; preds = %156
  %161 = trunc nuw i8 %.3.4 to i1
  br i1 %161, label %162, label %164

162:                                              ; preds = %160
  %163 = tail call i32 @putchar(i32 noundef 32)
  br label %164

164:                                              ; preds = %162, %160
  %.2.5 = phi i8 [ %.3.4, %162 ], [ 1, %160 ]
  %165 = trunc nuw nsw i64 %indvars.iv.next61 to i32
  %166 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %165, i32 noundef 6)
  br label %167

167:                                              ; preds = %164, %156
  %.3.5 = phi i8 [ %.2.5, %164 ], [ %.3.4, %156 ]
  %168 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %indvars.iv60, i64 6
  %169 = load i8, ptr %168, align 2, !tbaa !9, !range !14, !noundef !15
  %170 = trunc nuw i8 %169 to i1
  br i1 %170, label %171, label %178

171:                                              ; preds = %167
  %172 = trunc nuw i8 %.3.5 to i1
  br i1 %172, label %173, label %175

173:                                              ; preds = %171
  %174 = tail call i32 @putchar(i32 noundef 32)
  br label %175

175:                                              ; preds = %173, %171
  %.2.6 = phi i8 [ %.3.5, %173 ], [ 1, %171 ]
  %176 = trunc nuw nsw i64 %indvars.iv.next61 to i32
  %177 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %176, i32 noundef 7)
  br label %178

178:                                              ; preds = %175, %167
  %.3.6 = phi i8 [ %.2.6, %175 ], [ %.3.5, %167 ]
  %179 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %indvars.iv60, i64 7
  %180 = load i8, ptr %179, align 1, !tbaa !9, !range !14, !noundef !15
  %181 = trunc nuw i8 %180 to i1
  br i1 %181, label %182, label %189

182:                                              ; preds = %178
  %183 = trunc nuw i8 %.3.6 to i1
  br i1 %183, label %184, label %186

184:                                              ; preds = %182
  %185 = tail call i32 @putchar(i32 noundef 32)
  br label %186

186:                                              ; preds = %184, %182
  %.2.7 = phi i8 [ %.3.6, %184 ], [ 1, %182 ]
  %187 = trunc nuw nsw i64 %indvars.iv.next61 to i32
  %188 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %187, i32 noundef 8)
  br label %189

189:                                              ; preds = %186, %178
  %.3.7 = phi i8 [ %.2.7, %186 ], [ %.3.6, %178 ]
  %exitcond62.not = icmp eq i64 %indvars.iv.next61, 8
  br i1 %exitcond62.not, label %103, label %.preheader, !llvm.loop !16

190:                                              ; preds = %103
  %191 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  br label %192

192:                                              ; preds = %190, %103
  %193 = tail call i32 @putchar(i32 noundef 10)
  br label %224

194:                                              ; preds = %.lr.ph
  %195 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %196 = sext i8 %195 to i32
  %197 = add nsw i32 %196, -49
  %198 = load i8, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %199 = sext i8 %198 to i32
  %200 = add nsw i32 %199, -49
  %201 = load i8, ptr @rush, align 1, !tbaa !9, !range !14, !noundef !15
  %202 = trunc nuw i8 %201 to i1
  br i1 %202, label %204, label %203

203:                                              ; preds = %194
  tail call void @_Z5freshv()
  br label %204

204:                                              ; preds = %203, %194
  %205 = sext i32 %197 to i64
  %206 = sext i32 %200 to i64
  %207 = getelementptr inbounds [8 x [8 x i8]], ptr @vis, i64 0, i64 %205, i64 %206
  %208 = load i8, ptr %207, align 1, !tbaa !9, !range !14, !noundef !15
  %209 = trunc nuw i8 %208 to i1
  %.pre = load i32, ptr @now, align 4, !tbaa !5
  br i1 %209, label %212, label %210

210:                                              ; preds = %204
  %211 = xor i32 %.pre, 1
  store i32 %211, ptr @now, align 4, !tbaa !5
  br label %212

212:                                              ; preds = %210, %204
  %213 = phi i32 [ %211, %210 ], [ %.pre, %204 ]
  %214 = getelementptr inbounds [8 x [8 x i32]], ptr @chess, i64 0, i64 %205, i64 %206
  store i32 %213, ptr %214, align 4, !tbaa !5
  tail call void @_Z5coverii(i32 noundef %197, i32 noundef %200)
  %215 = load i32, ptr @now, align 4, !tbaa !5
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds [2 x i32], ptr @cnt, i64 0, i64 %216
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr %217, align 4, !tbaa !5
  store i8 0, ptr @rush, align 1, !tbaa !9
  %220 = xor i32 %215, 1
  store i32 %220, ptr @now, align 4, !tbaa !5
  %221 = load i32, ptr @cnt, align 4, !tbaa !5
  %222 = load i32, ptr getelementptr inbounds (i8, ptr @cnt, i64 4), align 4, !tbaa !5
  %223 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %221, i32 noundef %222)
  br label %224

224:                                              ; preds = %212, %192
  %225 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.2, ptr noundef nonnull @str)
  %226 = icmp ne i32 %225, -1
  %227 = load i8, ptr @str, align 1
  %228 = icmp ne i8 %227, 81
  %229 = select i1 %226, i1 %228, i1 false
  br i1 %229, label %.lr.ph, label %.preheader43, !llvm.loop !17

.preheader43:                                     ; preds = %4, %224
  %230 = load ptr, ptr @out, align 8, !tbaa !18
  %231 = load i32, ptr @chess, align 16, !tbaa !5
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds i8, ptr %230, i64 %232
  %234 = load i8, ptr %233, align 1, !tbaa !11
  store i8 %234, ptr @str, align 1, !tbaa !11
  %235 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 4), align 4, !tbaa !5
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds i8, ptr %230, i64 %236
  %238 = load i8, ptr %237, align 1, !tbaa !11
  store i8 %238, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %239 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 8), align 8, !tbaa !5
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds i8, ptr %230, i64 %240
  %242 = load i8, ptr %241, align 1, !tbaa !11
  store i8 %242, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %243 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 12), align 4, !tbaa !5
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds i8, ptr %230, i64 %244
  %246 = load i8, ptr %245, align 1, !tbaa !11
  store i8 %246, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %247 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 16), align 16, !tbaa !5
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds i8, ptr %230, i64 %248
  %250 = load i8, ptr %249, align 1, !tbaa !11
  store i8 %250, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %251 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 20), align 4, !tbaa !5
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i8, ptr %230, i64 %252
  %254 = load i8, ptr %253, align 1, !tbaa !11
  store i8 %254, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %255 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 24), align 8, !tbaa !5
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds i8, ptr %230, i64 %256
  %258 = load i8, ptr %257, align 1, !tbaa !11
  store i8 %258, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %259 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 28), align 4, !tbaa !5
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i8, ptr %230, i64 %260
  %262 = load i8, ptr %261, align 1, !tbaa !11
  store i8 %262, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  store i8 0, ptr getelementptr inbounds (i8, ptr @str, i64 8), align 1, !tbaa !11
  %263 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
  %264 = load ptr, ptr @out, align 8, !tbaa !18
  %265 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 32), align 16, !tbaa !5
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds i8, ptr %264, i64 %266
  %268 = load i8, ptr %267, align 1, !tbaa !11
  store i8 %268, ptr @str, align 1, !tbaa !11
  %269 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 36), align 4, !tbaa !5
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds i8, ptr %264, i64 %270
  %272 = load i8, ptr %271, align 1, !tbaa !11
  store i8 %272, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %273 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 40), align 8, !tbaa !5
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds i8, ptr %264, i64 %274
  %276 = load i8, ptr %275, align 1, !tbaa !11
  store i8 %276, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %277 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 44), align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds i8, ptr %264, i64 %278
  %280 = load i8, ptr %279, align 1, !tbaa !11
  store i8 %280, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %281 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 48), align 16, !tbaa !5
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i8, ptr %264, i64 %282
  %284 = load i8, ptr %283, align 1, !tbaa !11
  store i8 %284, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %285 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 52), align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds i8, ptr %264, i64 %286
  %288 = load i8, ptr %287, align 1, !tbaa !11
  store i8 %288, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %289 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 56), align 8, !tbaa !5
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i8, ptr %264, i64 %290
  %292 = load i8, ptr %291, align 1, !tbaa !11
  store i8 %292, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %293 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 60), align 4, !tbaa !5
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds i8, ptr %264, i64 %294
  %296 = load i8, ptr %295, align 1, !tbaa !11
  store i8 %296, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  store i8 0, ptr getelementptr inbounds (i8, ptr @str, i64 8), align 1, !tbaa !11
  %297 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
  %298 = load ptr, ptr @out, align 8, !tbaa !18
  %299 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 64), align 16, !tbaa !5
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds i8, ptr %298, i64 %300
  %302 = load i8, ptr %301, align 1, !tbaa !11
  store i8 %302, ptr @str, align 1, !tbaa !11
  %303 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 68), align 4, !tbaa !5
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds i8, ptr %298, i64 %304
  %306 = load i8, ptr %305, align 1, !tbaa !11
  store i8 %306, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %307 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 72), align 8, !tbaa !5
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds i8, ptr %298, i64 %308
  %310 = load i8, ptr %309, align 1, !tbaa !11
  store i8 %310, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %311 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 76), align 4, !tbaa !5
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds i8, ptr %298, i64 %312
  %314 = load i8, ptr %313, align 1, !tbaa !11
  store i8 %314, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %315 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 80), align 16, !tbaa !5
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds i8, ptr %298, i64 %316
  %318 = load i8, ptr %317, align 1, !tbaa !11
  store i8 %318, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %319 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 84), align 4, !tbaa !5
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i8, ptr %298, i64 %320
  %322 = load i8, ptr %321, align 1, !tbaa !11
  store i8 %322, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %323 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 88), align 8, !tbaa !5
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds i8, ptr %298, i64 %324
  %326 = load i8, ptr %325, align 1, !tbaa !11
  store i8 %326, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %327 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 92), align 4, !tbaa !5
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds i8, ptr %298, i64 %328
  %330 = load i8, ptr %329, align 1, !tbaa !11
  store i8 %330, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  store i8 0, ptr getelementptr inbounds (i8, ptr @str, i64 8), align 1, !tbaa !11
  %331 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
  %332 = load ptr, ptr @out, align 8, !tbaa !18
  %333 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 96), align 16, !tbaa !5
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds i8, ptr %332, i64 %334
  %336 = load i8, ptr %335, align 1, !tbaa !11
  store i8 %336, ptr @str, align 1, !tbaa !11
  %337 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 100), align 4, !tbaa !5
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds i8, ptr %332, i64 %338
  %340 = load i8, ptr %339, align 1, !tbaa !11
  store i8 %340, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %341 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 104), align 8, !tbaa !5
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds i8, ptr %332, i64 %342
  %344 = load i8, ptr %343, align 1, !tbaa !11
  store i8 %344, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %345 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 108), align 4, !tbaa !5
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds i8, ptr %332, i64 %346
  %348 = load i8, ptr %347, align 1, !tbaa !11
  store i8 %348, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %349 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 112), align 16, !tbaa !5
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds i8, ptr %332, i64 %350
  %352 = load i8, ptr %351, align 1, !tbaa !11
  store i8 %352, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %353 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 116), align 4, !tbaa !5
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds i8, ptr %332, i64 %354
  %356 = load i8, ptr %355, align 1, !tbaa !11
  store i8 %356, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %357 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 120), align 8, !tbaa !5
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds i8, ptr %332, i64 %358
  %360 = load i8, ptr %359, align 1, !tbaa !11
  store i8 %360, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %361 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 124), align 4, !tbaa !5
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds i8, ptr %332, i64 %362
  %364 = load i8, ptr %363, align 1, !tbaa !11
  store i8 %364, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  store i8 0, ptr getelementptr inbounds (i8, ptr @str, i64 8), align 1, !tbaa !11
  %365 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
  %366 = load ptr, ptr @out, align 8, !tbaa !18
  %367 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 128), align 16, !tbaa !5
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds i8, ptr %366, i64 %368
  %370 = load i8, ptr %369, align 1, !tbaa !11
  store i8 %370, ptr @str, align 1, !tbaa !11
  %371 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 132), align 4, !tbaa !5
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i8, ptr %366, i64 %372
  %374 = load i8, ptr %373, align 1, !tbaa !11
  store i8 %374, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %375 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 136), align 8, !tbaa !5
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds i8, ptr %366, i64 %376
  %378 = load i8, ptr %377, align 1, !tbaa !11
  store i8 %378, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %379 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 140), align 4, !tbaa !5
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i8, ptr %366, i64 %380
  %382 = load i8, ptr %381, align 1, !tbaa !11
  store i8 %382, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %383 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 144), align 16, !tbaa !5
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds i8, ptr %366, i64 %384
  %386 = load i8, ptr %385, align 1, !tbaa !11
  store i8 %386, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %387 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 148), align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i8, ptr %366, i64 %388
  %390 = load i8, ptr %389, align 1, !tbaa !11
  store i8 %390, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %391 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 152), align 8, !tbaa !5
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds i8, ptr %366, i64 %392
  %394 = load i8, ptr %393, align 1, !tbaa !11
  store i8 %394, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %395 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 156), align 4, !tbaa !5
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds i8, ptr %366, i64 %396
  %398 = load i8, ptr %397, align 1, !tbaa !11
  store i8 %398, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  store i8 0, ptr getelementptr inbounds (i8, ptr @str, i64 8), align 1, !tbaa !11
  %399 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
  %400 = load ptr, ptr @out, align 8, !tbaa !18
  %401 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 160), align 16, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds i8, ptr %400, i64 %402
  %404 = load i8, ptr %403, align 1, !tbaa !11
  store i8 %404, ptr @str, align 1, !tbaa !11
  %405 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 164), align 4, !tbaa !5
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds i8, ptr %400, i64 %406
  %408 = load i8, ptr %407, align 1, !tbaa !11
  store i8 %408, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %409 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 168), align 8, !tbaa !5
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds i8, ptr %400, i64 %410
  %412 = load i8, ptr %411, align 1, !tbaa !11
  store i8 %412, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %413 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 172), align 4, !tbaa !5
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds i8, ptr %400, i64 %414
  %416 = load i8, ptr %415, align 1, !tbaa !11
  store i8 %416, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %417 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 176), align 16, !tbaa !5
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i8, ptr %400, i64 %418
  %420 = load i8, ptr %419, align 1, !tbaa !11
  store i8 %420, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %421 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 180), align 4, !tbaa !5
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i8, ptr %400, i64 %422
  %424 = load i8, ptr %423, align 1, !tbaa !11
  store i8 %424, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %425 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 184), align 8, !tbaa !5
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds i8, ptr %400, i64 %426
  %428 = load i8, ptr %427, align 1, !tbaa !11
  store i8 %428, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %429 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 188), align 4, !tbaa !5
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds i8, ptr %400, i64 %430
  %432 = load i8, ptr %431, align 1, !tbaa !11
  store i8 %432, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  store i8 0, ptr getelementptr inbounds (i8, ptr @str, i64 8), align 1, !tbaa !11
  %433 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
  %434 = load ptr, ptr @out, align 8, !tbaa !18
  %435 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 192), align 16, !tbaa !5
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i8, ptr %434, i64 %436
  %438 = load i8, ptr %437, align 1, !tbaa !11
  store i8 %438, ptr @str, align 1, !tbaa !11
  %439 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 196), align 4, !tbaa !5
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds i8, ptr %434, i64 %440
  %442 = load i8, ptr %441, align 1, !tbaa !11
  store i8 %442, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %443 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 200), align 8, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i8, ptr %434, i64 %444
  %446 = load i8, ptr %445, align 1, !tbaa !11
  store i8 %446, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %447 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 204), align 4, !tbaa !5
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds i8, ptr %434, i64 %448
  %450 = load i8, ptr %449, align 1, !tbaa !11
  store i8 %450, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %451 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 208), align 16, !tbaa !5
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds i8, ptr %434, i64 %452
  %454 = load i8, ptr %453, align 1, !tbaa !11
  store i8 %454, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %455 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 212), align 4, !tbaa !5
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds i8, ptr %434, i64 %456
  %458 = load i8, ptr %457, align 1, !tbaa !11
  store i8 %458, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %459 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 216), align 8, !tbaa !5
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds i8, ptr %434, i64 %460
  %462 = load i8, ptr %461, align 1, !tbaa !11
  store i8 %462, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %463 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 220), align 4, !tbaa !5
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds i8, ptr %434, i64 %464
  %466 = load i8, ptr %465, align 1, !tbaa !11
  store i8 %466, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  store i8 0, ptr getelementptr inbounds (i8, ptr @str, i64 8), align 1, !tbaa !11
  %467 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
  %468 = load ptr, ptr @out, align 8, !tbaa !18
  %469 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 224), align 16, !tbaa !5
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds i8, ptr %468, i64 %470
  %472 = load i8, ptr %471, align 1, !tbaa !11
  store i8 %472, ptr @str, align 1, !tbaa !11
  %473 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 228), align 4, !tbaa !5
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds i8, ptr %468, i64 %474
  %476 = load i8, ptr %475, align 1, !tbaa !11
  store i8 %476, ptr getelementptr inbounds (i8, ptr @str, i64 1), align 1, !tbaa !11
  %477 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 232), align 8, !tbaa !5
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds i8, ptr %468, i64 %478
  %480 = load i8, ptr %479, align 1, !tbaa !11
  store i8 %480, ptr getelementptr inbounds (i8, ptr @str, i64 2), align 1, !tbaa !11
  %481 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 236), align 4, !tbaa !5
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds i8, ptr %468, i64 %482
  %484 = load i8, ptr %483, align 1, !tbaa !11
  store i8 %484, ptr getelementptr inbounds (i8, ptr @str, i64 3), align 1, !tbaa !11
  %485 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 240), align 16, !tbaa !5
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds i8, ptr %468, i64 %486
  %488 = load i8, ptr %487, align 1, !tbaa !11
  store i8 %488, ptr getelementptr inbounds (i8, ptr @str, i64 4), align 1, !tbaa !11
  %489 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 244), align 4, !tbaa !5
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i8, ptr %468, i64 %490
  %492 = load i8, ptr %491, align 1, !tbaa !11
  store i8 %492, ptr getelementptr inbounds (i8, ptr @str, i64 5), align 1, !tbaa !11
  %493 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 248), align 8, !tbaa !5
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds i8, ptr %468, i64 %494
  %496 = load i8, ptr %495, align 1, !tbaa !11
  store i8 %496, ptr getelementptr inbounds (i8, ptr @str, i64 6), align 1, !tbaa !11
  %497 = load i32, ptr getelementptr inbounds (i8, ptr @chess, i64 252), align 4, !tbaa !5
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds i8, ptr %468, i64 %498
  %500 = load i8, ptr %499, align 1, !tbaa !11
  store i8 %500, ptr getelementptr inbounds (i8, ptr @str, i64 7), align 1, !tbaa !11
  store i8 0, ptr getelementptr inbounds (i8, ptr @str, i64 8), align 1, !tbaa !11
  %501 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
  %502 = tail call i32 @putchar(i32 noundef 10)
  %503 = load i32, ptr @t, align 4, !tbaa !5
  %504 = add nsw i32 %503, -1
  store i32 %504, ptr @t, align 4, !tbaa !5
  %.not = icmp eq i32 %503, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph54, !llvm.loop !20

._crit_edge:                                      ; preds = %.preheader43, %0
  ret i32 0
}

; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_scanf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nofree nounwind uwtable
declare noundef i32 @putchar(i32 noundef) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @puts(ptr nocapture noundef readonly) local_unnamed_addr #2

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

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{i8 0, i8 2}
!15 = !{}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = !{!19, !19, i64 0}
!19 = !{!"any pointer", !7, i64 0}
!20 = distinct !{!20, !13}


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