#include <stdio.h>
#include <string.h>
void rev(char *s){
	int l=strlen(s),i;
	for(i=0;i<l/2;i++){
		char t=s[i];
		s[i]=s[l-1-i];
		s[l-1-i]=t;
	}
}
char T[4][8]={"dream","dreamer","erase","eraser"};
int main(){
	int i=0,c,l;
	char s[100001];
	for(i=0;i<4;i++)rev(T[i]);
	scanf("%s",s);
	l=strlen(s);
	rev(s);
	for(;c<l;){
		int k=-1;
		for(i=0;i<4;i++){
			if(!strncmp(s+c,T[i],strlen(T[i]))){
				k=strlen(T[i]);
				break;
			}
		}
		if(k<0){
			puts("NO");
			return 0;
		}
		c+=k;
	}
	puts("YES");
	return 0;
}

; ModuleID = '/data/TheStack_IR/OJ_Samples/Collated/ObjectiveC/Source_866/source.m'
source_filename = "/data/TheStack_IR/OJ_Samples/Collated/ObjectiveC/Source_866/source.m"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@T = dso_local global [4 x [8 x i8]] [[8 x i8] c"dream\00\00\00", [8 x i8] c"dreamer\00", [8 x i8] c"erase\00\00\00", [8 x i8] c"eraser\00\00"], align 16
@.str = private unnamed_addr constant [3 x i8] c"%s\00", align 1
@.str.2 = private unnamed_addr constant [4 x i8] c"YES\00", align 1

; Function Attrs: nofree nounwind memory(argmem: readwrite) uwtable
define dso_local void @rev(ptr nocapture noundef %s) local_unnamed_addr #0 {
entry:
  %call = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %s) #5
  %conv = trunc i64 %call to i32
  %cmp22 = icmp sgt i32 %conv, 1
  br i1 %cmp22, label %for.body.preheader, label %for.end

for.body.preheader:                               ; preds = %entry
  %div2526 = lshr i64 %call, 1
  %wide.trip.count = and i64 %div2526, 2147483647
  %xtraiter = and i64 %div2526, 1
  %0 = icmp eq i64 %wide.trip.count, 1
  br i1 %0, label %for.end.loopexit.unr-lcssa, label %for.body.preheader.new

for.body.preheader.new:                           ; preds = %for.body.preheader
  %unroll_iter = sub nsw i64 %wide.trip.count, %xtraiter
  br label %for.body

for.body:                                         ; preds = %for.body, %for.body.preheader.new
  %indvars.iv = phi i64 [ 0, %for.body.preheader.new ], [ %indvars.iv.next.1, %for.body ]
  %niter = phi i64 [ 0, %for.body.preheader.new ], [ %niter.next.1, %for.body ]
  %arrayidx = getelementptr inbounds i8, ptr %s, i64 %indvars.iv
  %1 = load i8, ptr %arrayidx, align 1, !tbaa !5
  %2 = xor i64 %indvars.iv, -1
  %sub2 = add i64 %call, %2
  %sext = shl i64 %sub2, 32
  %idxprom3 = ashr exact i64 %sext, 32
  %arrayidx4 = getelementptr inbounds i8, ptr %s, i64 %idxprom3
  %3 = load i8, ptr %arrayidx4, align 1, !tbaa !5
  store i8 %3, ptr %arrayidx, align 1, !tbaa !5
  store i8 %1, ptr %arrayidx4, align 1, !tbaa !5
  %indvars.iv.next = or i64 %indvars.iv, 1
  %arrayidx.1 = getelementptr inbounds i8, ptr %s, i64 %indvars.iv.next
  %4 = load i8, ptr %arrayidx.1, align 1, !tbaa !5
  %5 = xor i64 %indvars.iv, 4294967294
  %sub2.1 = add i64 %call, %5
  %sext.1 = shl i64 %sub2.1, 32
  %idxprom3.1 = ashr exact i64 %sext.1, 32
  %arrayidx4.1 = getelementptr inbounds i8, ptr %s, i64 %idxprom3.1
  %6 = load i8, ptr %arrayidx4.1, align 1, !tbaa !5
  store i8 %6, ptr %arrayidx.1, align 1, !tbaa !5
  store i8 %4, ptr %arrayidx4.1, align 1, !tbaa !5
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %for.end.loopexit.unr-lcssa, label %for.body

for.end.loopexit.unr-lcssa:                       ; preds = %for.body, %for.body.preheader
  %indvars.iv.unr = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next.1, %for.body ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %for.end, label %for.body.epil

for.body.epil:                                    ; preds = %for.end.loopexit.unr-lcssa
  %arrayidx.epil = getelementptr inbounds i8, ptr %s, i64 %indvars.iv.unr
  %7 = load i8, ptr %arrayidx.epil, align 1, !tbaa !5
  %8 = xor i64 %indvars.iv.unr, -1
  %sub2.epil = add i64 %call, %8
  %sext.epil = shl i64 %sub2.epil, 32
  %idxprom3.epil = ashr exact i64 %sext.epil, 32
  %arrayidx4.epil = getelementptr inbounds i8, ptr %s, i64 %idxprom3.epil
  %9 = load i8, ptr %arrayidx4.epil, align 1, !tbaa !5
  store i8 %9, ptr %arrayidx.epil, align 1, !tbaa !5
  store i8 %7, ptr %arrayidx4.epil, align 1, !tbaa !5
  br label %for.end

for.end:                                          ; preds = %for.body.epil, %for.end.loopexit.unr-lcssa, %entry
  ret void
}

; 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 nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #2

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

; Function Attrs: nofree nounwind uwtable
define dso_local i32 @main() local_unnamed_addr #3 {
entry:
  %s = alloca [100001 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 100001, ptr nonnull %s) #6
  %call.i = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) @T) #5
  %conv.i = trunc i64 %call.i to i32
  %cmp22.i = icmp sgt i32 %conv.i, 1
  br i1 %cmp22.i, label %for.body.preheader.i, label %rev.exit

for.body.preheader.i:                             ; preds = %entry
  %div2526.i = lshr i64 %call.i, 1
  %wide.trip.count.i = and i64 %div2526.i, 2147483647
  %xtraiter = and i64 %div2526.i, 1
  %0 = icmp eq i64 %wide.trip.count.i, 1
  br i1 %0, label %rev.exit.loopexit.unr-lcssa, label %for.body.preheader.i.new

for.body.preheader.i.new:                         ; preds = %for.body.preheader.i
  %unroll_iter = sub nsw i64 %wide.trip.count.i, %xtraiter
  br label %for.body.i

for.body.i:                                       ; preds = %for.body.i, %for.body.preheader.i.new
  %indvars.iv.i = phi i64 [ 0, %for.body.preheader.i.new ], [ %indvars.iv.next.i.184, %for.body.i ]
  %niter = phi i64 [ 0, %for.body.preheader.i.new ], [ %niter.next.1, %for.body.i ]
  %arrayidx.i = getelementptr inbounds i8, ptr @T, i64 %indvars.iv.i
  %1 = load i8, ptr %arrayidx.i, align 2, !tbaa !5
  %2 = xor i64 %indvars.iv.i, -1
  %sub2.i = add i64 %call.i, %2
  %sext.i = shl i64 %sub2.i, 32
  %idxprom3.i = ashr exact i64 %sext.i, 32
  %arrayidx4.i = getelementptr inbounds i8, ptr @T, i64 %idxprom3.i
  %3 = load i8, ptr %arrayidx4.i, align 1, !tbaa !5
  store i8 %3, ptr %arrayidx.i, align 2, !tbaa !5
  store i8 %1, ptr %arrayidx4.i, align 1, !tbaa !5
  %indvars.iv.next.i = or i64 %indvars.iv.i, 1
  %arrayidx.i.179 = getelementptr inbounds i8, ptr @T, i64 %indvars.iv.next.i
  %4 = load i8, ptr %arrayidx.i.179, align 1, !tbaa !5
  %5 = xor i64 %indvars.iv.i, 4294967294
  %sub2.i.180 = add i64 %call.i, %5
  %sext.i.181 = shl i64 %sub2.i.180, 32
  %idxprom3.i.182 = ashr exact i64 %sext.i.181, 32
  %arrayidx4.i.183 = getelementptr inbounds i8, ptr @T, i64 %idxprom3.i.182
  %6 = load i8, ptr %arrayidx4.i.183, align 1, !tbaa !5
  store i8 %6, ptr %arrayidx.i.179, align 1, !tbaa !5
  store i8 %4, ptr %arrayidx4.i.183, align 1, !tbaa !5
  %indvars.iv.next.i.184 = add nuw nsw i64 %indvars.iv.i, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %rev.exit.loopexit.unr-lcssa, label %for.body.i

rev.exit.loopexit.unr-lcssa:                      ; preds = %for.body.i, %for.body.preheader.i
  %indvars.iv.i.unr = phi i64 [ 0, %for.body.preheader.i ], [ %indvars.iv.next.i.184, %for.body.i ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %rev.exit, label %for.body.i.epil

for.body.i.epil:                                  ; preds = %rev.exit.loopexit.unr-lcssa
  %arrayidx.i.epil = getelementptr inbounds i8, ptr @T, i64 %indvars.iv.i.unr
  %7 = load i8, ptr %arrayidx.i.epil, align 1, !tbaa !5
  %8 = xor i64 %indvars.iv.i.unr, -1
  %sub2.i.epil = add i64 %call.i, %8
  %sext.i.epil = shl i64 %sub2.i.epil, 32
  %idxprom3.i.epil = ashr exact i64 %sext.i.epil, 32
  %arrayidx4.i.epil = getelementptr inbounds i8, ptr @T, i64 %idxprom3.i.epil
  %9 = load i8, ptr %arrayidx4.i.epil, align 1, !tbaa !5
  store i8 %9, ptr %arrayidx.i.epil, align 1, !tbaa !5
  store i8 %7, ptr %arrayidx4.i.epil, align 1, !tbaa !5
  br label %rev.exit

rev.exit:                                         ; preds = %for.body.i.epil, %rev.exit.loopexit.unr-lcssa, %entry
  %call.i.1 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 1)) #5
  %conv.i.1 = trunc i64 %call.i.1 to i32
  %cmp22.i.1 = icmp sgt i32 %conv.i.1, 1
  br i1 %cmp22.i.1, label %for.body.preheader.i.1, label %rev.exit.1

for.body.preheader.i.1:                           ; preds = %rev.exit
  %div2526.i.1 = lshr i64 %call.i.1, 1
  %wide.trip.count.i.1 = and i64 %div2526.i.1, 2147483647
  %xtraiter87 = and i64 %div2526.i.1, 1
  %10 = icmp eq i64 %wide.trip.count.i.1, 1
  br i1 %10, label %rev.exit.1.loopexit.unr-lcssa, label %for.body.preheader.i.1.new

for.body.preheader.i.1.new:                       ; preds = %for.body.preheader.i.1
  %unroll_iter89 = sub nsw i64 %wide.trip.count.i.1, %xtraiter87
  br label %for.body.i.1

for.body.i.1:                                     ; preds = %for.body.i.1, %for.body.preheader.i.1.new
  %indvars.iv.i.1 = phi i64 [ 0, %for.body.preheader.i.1.new ], [ %indvars.iv.next.i.1.1, %for.body.i.1 ]
  %niter90 = phi i64 [ 0, %for.body.preheader.i.1.new ], [ %niter90.next.1, %for.body.i.1 ]
  %arrayidx.i.1 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 1), i64 %indvars.iv.i.1
  %11 = load i8, ptr %arrayidx.i.1, align 2, !tbaa !5
  %12 = xor i64 %indvars.iv.i.1, -1
  %sub2.i.1 = add i64 %call.i.1, %12
  %sext.i.1 = shl i64 %sub2.i.1, 32
  %idxprom3.i.1 = ashr exact i64 %sext.i.1, 32
  %arrayidx4.i.1 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 1), i64 %idxprom3.i.1
  %13 = load i8, ptr %arrayidx4.i.1, align 1, !tbaa !5
  store i8 %13, ptr %arrayidx.i.1, align 2, !tbaa !5
  store i8 %11, ptr %arrayidx4.i.1, align 1, !tbaa !5
  %indvars.iv.next.i.1 = or i64 %indvars.iv.i.1, 1
  %arrayidx.i.1.1 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 1), i64 %indvars.iv.next.i.1
  %14 = load i8, ptr %arrayidx.i.1.1, align 1, !tbaa !5
  %15 = xor i64 %indvars.iv.i.1, 4294967294
  %sub2.i.1.1 = add i64 %call.i.1, %15
  %sext.i.1.1 = shl i64 %sub2.i.1.1, 32
  %idxprom3.i.1.1 = ashr exact i64 %sext.i.1.1, 32
  %arrayidx4.i.1.1 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 1), i64 %idxprom3.i.1.1
  %16 = load i8, ptr %arrayidx4.i.1.1, align 1, !tbaa !5
  store i8 %16, ptr %arrayidx.i.1.1, align 1, !tbaa !5
  store i8 %14, ptr %arrayidx4.i.1.1, align 1, !tbaa !5
  %indvars.iv.next.i.1.1 = add nuw nsw i64 %indvars.iv.i.1, 2
  %niter90.next.1 = add i64 %niter90, 2
  %niter90.ncmp.1 = icmp eq i64 %niter90.next.1, %unroll_iter89
  br i1 %niter90.ncmp.1, label %rev.exit.1.loopexit.unr-lcssa, label %for.body.i.1

rev.exit.1.loopexit.unr-lcssa:                    ; preds = %for.body.i.1, %for.body.preheader.i.1
  %indvars.iv.i.1.unr = phi i64 [ 0, %for.body.preheader.i.1 ], [ %indvars.iv.next.i.1.1, %for.body.i.1 ]
  %lcmp.mod88.not = icmp eq i64 %xtraiter87, 0
  br i1 %lcmp.mod88.not, label %rev.exit.1, label %for.body.i.1.epil

for.body.i.1.epil:                                ; preds = %rev.exit.1.loopexit.unr-lcssa
  %arrayidx.i.1.epil = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 1), i64 %indvars.iv.i.1.unr
  %17 = load i8, ptr %arrayidx.i.1.epil, align 1, !tbaa !5
  %18 = xor i64 %indvars.iv.i.1.unr, -1
  %sub2.i.1.epil = add i64 %call.i.1, %18
  %sext.i.1.epil = shl i64 %sub2.i.1.epil, 32
  %idxprom3.i.1.epil = ashr exact i64 %sext.i.1.epil, 32
  %arrayidx4.i.1.epil = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 1), i64 %idxprom3.i.1.epil
  %19 = load i8, ptr %arrayidx4.i.1.epil, align 1, !tbaa !5
  store i8 %19, ptr %arrayidx.i.1.epil, align 1, !tbaa !5
  store i8 %17, ptr %arrayidx4.i.1.epil, align 1, !tbaa !5
  br label %rev.exit.1

rev.exit.1:                                       ; preds = %for.body.i.1.epil, %rev.exit.1.loopexit.unr-lcssa, %rev.exit
  %call.i.2 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 2)) #5
  %conv.i.2 = trunc i64 %call.i.2 to i32
  %cmp22.i.2 = icmp sgt i32 %conv.i.2, 1
  br i1 %cmp22.i.2, label %for.body.preheader.i.2, label %rev.exit.2

for.body.preheader.i.2:                           ; preds = %rev.exit.1
  %div2526.i.2 = lshr i64 %call.i.2, 1
  %wide.trip.count.i.2 = and i64 %div2526.i.2, 2147483647
  %xtraiter91 = and i64 %div2526.i.2, 1
  %20 = icmp eq i64 %wide.trip.count.i.2, 1
  br i1 %20, label %rev.exit.2.loopexit.unr-lcssa, label %for.body.preheader.i.2.new

for.body.preheader.i.2.new:                       ; preds = %for.body.preheader.i.2
  %unroll_iter93 = sub nsw i64 %wide.trip.count.i.2, %xtraiter91
  br label %for.body.i.2

for.body.i.2:                                     ; preds = %for.body.i.2, %for.body.preheader.i.2.new
  %indvars.iv.i.2 = phi i64 [ 0, %for.body.preheader.i.2.new ], [ %indvars.iv.next.i.2.1, %for.body.i.2 ]
  %niter94 = phi i64 [ 0, %for.body.preheader.i.2.new ], [ %niter94.next.1, %for.body.i.2 ]
  %arrayidx.i.2 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 2), i64 %indvars.iv.i.2
  %21 = load i8, ptr %arrayidx.i.2, align 2, !tbaa !5
  %22 = xor i64 %indvars.iv.i.2, -1
  %sub2.i.2 = add i64 %call.i.2, %22
  %sext.i.2 = shl i64 %sub2.i.2, 32
  %idxprom3.i.2 = ashr exact i64 %sext.i.2, 32
  %arrayidx4.i.2 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 2), i64 %idxprom3.i.2
  %23 = load i8, ptr %arrayidx4.i.2, align 1, !tbaa !5
  store i8 %23, ptr %arrayidx.i.2, align 2, !tbaa !5
  store i8 %21, ptr %arrayidx4.i.2, align 1, !tbaa !5
  %indvars.iv.next.i.2 = or i64 %indvars.iv.i.2, 1
  %arrayidx.i.2.1 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 2), i64 %indvars.iv.next.i.2
  %24 = load i8, ptr %arrayidx.i.2.1, align 1, !tbaa !5
  %25 = xor i64 %indvars.iv.i.2, 4294967294
  %sub2.i.2.1 = add i64 %call.i.2, %25
  %sext.i.2.1 = shl i64 %sub2.i.2.1, 32
  %idxprom3.i.2.1 = ashr exact i64 %sext.i.2.1, 32
  %arrayidx4.i.2.1 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 2), i64 %idxprom3.i.2.1
  %26 = load i8, ptr %arrayidx4.i.2.1, align 1, !tbaa !5
  store i8 %26, ptr %arrayidx.i.2.1, align 1, !tbaa !5
  store i8 %24, ptr %arrayidx4.i.2.1, align 1, !tbaa !5
  %indvars.iv.next.i.2.1 = add nuw nsw i64 %indvars.iv.i.2, 2
  %niter94.next.1 = add i64 %niter94, 2
  %niter94.ncmp.1 = icmp eq i64 %niter94.next.1, %unroll_iter93
  br i1 %niter94.ncmp.1, label %rev.exit.2.loopexit.unr-lcssa, label %for.body.i.2

rev.exit.2.loopexit.unr-lcssa:                    ; preds = %for.body.i.2, %for.body.preheader.i.2
  %indvars.iv.i.2.unr = phi i64 [ 0, %for.body.preheader.i.2 ], [ %indvars.iv.next.i.2.1, %for.body.i.2 ]
  %lcmp.mod92.not = icmp eq i64 %xtraiter91, 0
  br i1 %lcmp.mod92.not, label %rev.exit.2, label %for.body.i.2.epil

for.body.i.2.epil:                                ; preds = %rev.exit.2.loopexit.unr-lcssa
  %arrayidx.i.2.epil = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 2), i64 %indvars.iv.i.2.unr
  %27 = load i8, ptr %arrayidx.i.2.epil, align 1, !tbaa !5
  %28 = xor i64 %indvars.iv.i.2.unr, -1
  %sub2.i.2.epil = add i64 %call.i.2, %28
  %sext.i.2.epil = shl i64 %sub2.i.2.epil, 32
  %idxprom3.i.2.epil = ashr exact i64 %sext.i.2.epil, 32
  %arrayidx4.i.2.epil = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 2), i64 %idxprom3.i.2.epil
  %29 = load i8, ptr %arrayidx4.i.2.epil, align 1, !tbaa !5
  store i8 %29, ptr %arrayidx.i.2.epil, align 1, !tbaa !5
  store i8 %27, ptr %arrayidx4.i.2.epil, align 1, !tbaa !5
  br label %rev.exit.2

rev.exit.2:                                       ; preds = %for.body.i.2.epil, %rev.exit.2.loopexit.unr-lcssa, %rev.exit.1
  %call.i.3 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 3)) #5
  %conv.i.3 = trunc i64 %call.i.3 to i32
  %cmp22.i.3 = icmp sgt i32 %conv.i.3, 1
  br i1 %cmp22.i.3, label %for.body.preheader.i.3, label %rev.exit.3

for.body.preheader.i.3:                           ; preds = %rev.exit.2
  %div2526.i.3 = lshr i64 %call.i.3, 1
  %wide.trip.count.i.3 = and i64 %div2526.i.3, 2147483647
  %xtraiter95 = and i64 %div2526.i.3, 1
  %30 = icmp eq i64 %wide.trip.count.i.3, 1
  br i1 %30, label %rev.exit.3.loopexit.unr-lcssa, label %for.body.preheader.i.3.new

for.body.preheader.i.3.new:                       ; preds = %for.body.preheader.i.3
  %unroll_iter97 = sub nsw i64 %wide.trip.count.i.3, %xtraiter95
  br label %for.body.i.3

for.body.i.3:                                     ; preds = %for.body.i.3, %for.body.preheader.i.3.new
  %indvars.iv.i.3 = phi i64 [ 0, %for.body.preheader.i.3.new ], [ %indvars.iv.next.i.3.1, %for.body.i.3 ]
  %niter98 = phi i64 [ 0, %for.body.preheader.i.3.new ], [ %niter98.next.1, %for.body.i.3 ]
  %arrayidx.i.3 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 3), i64 %indvars.iv.i.3
  %31 = load i8, ptr %arrayidx.i.3, align 2, !tbaa !5
  %32 = xor i64 %indvars.iv.i.3, -1
  %sub2.i.3 = add i64 %call.i.3, %32
  %sext.i.3 = shl i64 %sub2.i.3, 32
  %idxprom3.i.3 = ashr exact i64 %sext.i.3, 32
  %arrayidx4.i.3 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 3), i64 %idxprom3.i.3
  %33 = load i8, ptr %arrayidx4.i.3, align 1, !tbaa !5
  store i8 %33, ptr %arrayidx.i.3, align 2, !tbaa !5
  store i8 %31, ptr %arrayidx4.i.3, align 1, !tbaa !5
  %indvars.iv.next.i.3 = or i64 %indvars.iv.i.3, 1
  %arrayidx.i.3.1 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 3), i64 %indvars.iv.next.i.3
  %34 = load i8, ptr %arrayidx.i.3.1, align 1, !tbaa !5
  %35 = xor i64 %indvars.iv.i.3, 4294967294
  %sub2.i.3.1 = add i64 %call.i.3, %35
  %sext.i.3.1 = shl i64 %sub2.i.3.1, 32
  %idxprom3.i.3.1 = ashr exact i64 %sext.i.3.1, 32
  %arrayidx4.i.3.1 = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 3), i64 %idxprom3.i.3.1
  %36 = load i8, ptr %arrayidx4.i.3.1, align 1, !tbaa !5
  store i8 %36, ptr %arrayidx.i.3.1, align 1, !tbaa !5
  store i8 %34, ptr %arrayidx4.i.3.1, align 1, !tbaa !5
  %indvars.iv.next.i.3.1 = add nuw nsw i64 %indvars.iv.i.3, 2
  %niter98.next.1 = add i64 %niter98, 2
  %niter98.ncmp.1 = icmp eq i64 %niter98.next.1, %unroll_iter97
  br i1 %niter98.ncmp.1, label %rev.exit.3.loopexit.unr-lcssa, label %for.body.i.3

rev.exit.3.loopexit.unr-lcssa:                    ; preds = %for.body.i.3, %for.body.preheader.i.3
  %indvars.iv.i.3.unr = phi i64 [ 0, %for.body.preheader.i.3 ], [ %indvars.iv.next.i.3.1, %for.body.i.3 ]
  %lcmp.mod96.not = icmp eq i64 %xtraiter95, 0
  br i1 %lcmp.mod96.not, label %rev.exit.3, label %for.body.i.3.epil

for.body.i.3.epil:                                ; preds = %rev.exit.3.loopexit.unr-lcssa
  %arrayidx.i.3.epil = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 3), i64 %indvars.iv.i.3.unr
  %37 = load i8, ptr %arrayidx.i.3.epil, align 1, !tbaa !5
  %38 = xor i64 %indvars.iv.i.3.unr, -1
  %sub2.i.3.epil = add i64 %call.i.3, %38
  %sext.i.3.epil = shl i64 %sub2.i.3.epil, 32
  %idxprom3.i.3.epil = ashr exact i64 %sext.i.3.epil, 32
  %arrayidx4.i.3.epil = getelementptr inbounds i8, ptr getelementptr inbounds ([4 x [8 x i8]], ptr @T, i64 0, i64 3), i64 %idxprom3.i.3.epil
  %39 = load i8, ptr %arrayidx4.i.3.epil, align 1, !tbaa !5
  store i8 %39, ptr %arrayidx.i.3.epil, align 1, !tbaa !5
  store i8 %37, ptr %arrayidx4.i.3.epil, align 1, !tbaa !5
  br label %rev.exit.3

rev.exit.3:                                       ; preds = %for.body.i.3.epil, %rev.exit.3.loopexit.unr-lcssa, %rev.exit.2
  %call = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull %s)
  %call3 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %s) #5
  %conv = trunc i64 %call3 to i32
  %cmp22.i53 = icmp sgt i32 %conv, 1
  br i1 %cmp22.i53, label %for.body.preheader.i54, label %for.end35

for.body.preheader.i54:                           ; preds = %rev.exit.3
  %div2526.i55 = lshr i64 %call3, 1
  %wide.trip.count.i56 = and i64 %div2526.i55, 2147483647
  %xtraiter99 = and i64 %div2526.i55, 1
  %40 = icmp eq i64 %wide.trip.count.i56, 1
  br i1 %40, label %for.end35.loopexit.unr-lcssa, label %for.body.preheader.i54.new

for.body.preheader.i54.new:                       ; preds = %for.body.preheader.i54
  %unroll_iter101 = sub nsw i64 %wide.trip.count.i56, %xtraiter99
  br label %for.body.i57

for.body.i57:                                     ; preds = %for.body.i57, %for.body.preheader.i54.new
  %indvars.iv.i58 = phi i64 [ 0, %for.body.preheader.i54.new ], [ %indvars.iv.next.i64.1, %for.body.i57 ]
  %niter102 = phi i64 [ 0, %for.body.preheader.i54.new ], [ %niter102.next.1, %for.body.i57 ]
  %arrayidx.i59 = getelementptr inbounds i8, ptr %s, i64 %indvars.iv.i58
  %41 = load i8, ptr %arrayidx.i59, align 2, !tbaa !5
  %42 = xor i64 %indvars.iv.i58, -1
  %sub2.i60 = add i64 %call3, %42
  %sext.i61 = shl i64 %sub2.i60, 32
  %idxprom3.i62 = ashr exact i64 %sext.i61, 32
  %arrayidx4.i63 = getelementptr inbounds i8, ptr %s, i64 %idxprom3.i62
  %43 = load i8, ptr %arrayidx4.i63, align 1, !tbaa !5
  store i8 %43, ptr %arrayidx.i59, align 2, !tbaa !5
  store i8 %41, ptr %arrayidx4.i63, align 1, !tbaa !5
  %indvars.iv.next.i64 = or i64 %indvars.iv.i58, 1
  %arrayidx.i59.1 = getelementptr inbounds i8, ptr %s, i64 %indvars.iv.next.i64
  %44 = load i8, ptr %arrayidx.i59.1, align 1, !tbaa !5
  %45 = xor i64 %indvars.iv.i58, 4294967294
  %sub2.i60.1 = add i64 %call3, %45
  %sext.i61.1 = shl i64 %sub2.i60.1, 32
  %idxprom3.i62.1 = ashr exact i64 %sext.i61.1, 32
  %arrayidx4.i63.1 = getelementptr inbounds i8, ptr %s, i64 %idxprom3.i62.1
  %46 = load i8, ptr %arrayidx4.i63.1, align 1, !tbaa !5
  store i8 %46, ptr %arrayidx.i59.1, align 1, !tbaa !5
  store i8 %44, ptr %arrayidx4.i63.1, align 1, !tbaa !5
  %indvars.iv.next.i64.1 = add nuw nsw i64 %indvars.iv.i58, 2
  %niter102.next.1 = add i64 %niter102, 2
  %niter102.ncmp.1 = icmp eq i64 %niter102.next.1, %unroll_iter101
  br i1 %niter102.ncmp.1, label %for.end35.loopexit.unr-lcssa, label %for.body.i57

for.end35.loopexit.unr-lcssa:                     ; preds = %for.body.i57, %for.body.preheader.i54
  %indvars.iv.i58.unr = phi i64 [ 0, %for.body.preheader.i54 ], [ %indvars.iv.next.i64.1, %for.body.i57 ]
  %lcmp.mod100.not = icmp eq i64 %xtraiter99, 0
  br i1 %lcmp.mod100.not, label %for.end35, label %for.body.i57.epil

for.body.i57.epil:                                ; preds = %for.end35.loopexit.unr-lcssa
  %arrayidx.i59.epil = getelementptr inbounds i8, ptr %s, i64 %indvars.iv.i58.unr
  %47 = load i8, ptr %arrayidx.i59.epil, align 1, !tbaa !5
  %48 = xor i64 %indvars.iv.i58.unr, -1
  %sub2.i60.epil = add i64 %call3, %48
  %sext.i61.epil = shl i64 %sub2.i60.epil, 32
  %idxprom3.i62.epil = ashr exact i64 %sext.i61.epil, 32
  %arrayidx4.i63.epil = getelementptr inbounds i8, ptr %s, i64 %idxprom3.i62.epil
  %49 = load i8, ptr %arrayidx4.i63.epil, align 1, !tbaa !5
  store i8 %49, ptr %arrayidx.i59.epil, align 1, !tbaa !5
  store i8 %47, ptr %arrayidx4.i63.epil, align 1, !tbaa !5
  br label %for.end35

for.end35:                                        ; preds = %for.body.i57.epil, %for.end35.loopexit.unr-lcssa, %rev.exit.3
  %call36 = call i32 @puts(ptr noundef nonnull dereferenceable(1) @.str.2)
  call void @llvm.lifetime.end.p0(i64 100001, ptr nonnull %s) #6
  ret i32 0
}

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

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

attributes #0 = { nofree nounwind memory(argmem: readwrite) 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 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 #3 = { 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" }
attributes #4 = { 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 #5 = { nounwind willreturn memory(read) }
attributes #6 = { nounwind }

!llvm.linker.options = !{}
!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 = !{!"Ubuntu clang version 18.0.0 (++20231007042255+8abb2ace888b-1~exp1~20231007042414.1230)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
