program varied
  implicit none
  character(26) :: s
  integer       :: n, i, m(26), c
  read(*,*) s
  s = adjustl(s)
  n = len_trim(s)
  m = 0
  do i = 1, n
    c = ichar(s(i:i)) - 96
    m(c) = m(c) + 1
  end do
  if (maxval(m) > 1) then
    write(*,'(a)') "no"
  else
    write(*,'(a)') "yes"
  end if
end program varied

; ModuleID = 'FIRModule'
source_filename = "FIRModule"
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"

@_QFEm = internal unnamed_addr global [26 x i32] undef
@_QQcl.56fa93f8e3714d7cca2b4fb12ac4ee11 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_7240/source.f\00"
@_QQcl.286129 = linkonce constant [3 x i8] c"(a)"
@_QQcl.6E6F = linkonce constant [2 x i8] c"no"
@_QQcl.796573 = linkonce constant [3 x i8] c"yes"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #0

define void @_QQmain() local_unnamed_addr {
  %1 = alloca { ptr, i64, i32, i8, i8, i8, i8 }, align 8
  %2 = alloca { ptr, i64, i32, i8, i8, i8, i8 }, align 8
  %3 = alloca [26 x i8], align 1
  %4 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.56fa93f8e3714d7cca2b4fb12ac4ee11, i32 5)
  %5 = call i1 @_FortranAioInputAscii(ptr %4, ptr nonnull %3, i64 26)
  %6 = call i32 @_FortranAioEndIoStatement(ptr %4)
  store ptr %3, ptr %1, align 8, !tbaa !3
  %.fca.1.gep18 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 1
  store i64 26, ptr %.fca.1.gep18, align 8, !tbaa !3
  %.fca.2.gep20 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep20, align 8, !tbaa !3
  %.fca.3.gep22 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 3
  store i8 0, ptr %.fca.3.gep22, align 4, !tbaa !3
  %.fca.4.gep24 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 4
  store i8 40, ptr %.fca.4.gep24, align 1, !tbaa !3
  %.fca.5.gep26 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep26, align 2, !tbaa !3
  %.fca.6.gep28 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep28, align 1, !tbaa !3
  %.fca.1.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %2, i64 0, i32 1
  %.fca.2.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %2, i64 0, i32 2
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %2, i8 0, i64 16, i1 false)
  store i32 20180515, ptr %.fca.2.gep, align 8, !tbaa !3
  %.fca.3.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %2, i64 0, i32 3
  store i8 0, ptr %.fca.3.gep, align 4, !tbaa !3
  %.fca.4.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %2, i64 0, i32 4
  store i8 40, ptr %.fca.4.gep, align 1, !tbaa !3
  %.fca.5.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %2, i64 0, i32 5
  store i8 2, ptr %.fca.5.gep, align 2, !tbaa !3
  %.fca.6.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %2, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep, align 1, !tbaa !3
  %7 = call {} @_FortranAAdjustl(ptr nonnull %2, ptr nonnull %1, ptr nonnull @_QQcl.56fa93f8e3714d7cca2b4fb12ac4ee11, i32 6)
  %.fca.0.load7 = load ptr, ptr %2, align 8, !tbaa !3
  %.fca.1.load = load i64, ptr %.fca.1.gep, align 8, !tbaa !3
  %8 = call i64 @llvm.smin.i64(i64 %.fca.1.load, i64 26)
  call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %3, ptr align 1 %.fca.0.load7, i64 %8, i1 false)
  %9 = sub i64 26, %8
  %10 = icmp sgt i64 %9, 0
  br i1 %10, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %0
  %uglygep = getelementptr i8, ptr %3, i64 %8
  call void @llvm.memset.p0.i64(ptr align 1 %uglygep, i8 32, i64 %9, i1 false), !tbaa !7
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %0
  call void @free(ptr %.fca.0.load7)
  br label %15

.preheader:                                       ; preds = %15
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(104) @_QFEm, i8 0, i64 104, i1 false), !tbaa !7
  %11 = shl i64 %16, 32
  %sext = add i64 %11, 4294967296
  %12 = ashr exact i64 %sext, 32
  %spec.select = select i1 %19, i64 0, i64 %12
  %13 = icmp sgt i64 %spec.select, 0
  br i1 %13, label %select.unfold.preheader, label %.lr.ph.i.preheader

select.unfold.preheader:                          ; preds = %.preheader
  %xtraiter = and i64 %spec.select, 1
  %14 = icmp eq i64 %spec.select, 1
  br i1 %14, label %.lr.ph.i.preheader.loopexit.unr-lcssa, label %select.unfold.preheader.new

select.unfold.preheader.new:                      ; preds = %select.unfold.preheader
  %unroll_iter = and i64 %spec.select, -2
  br label %select.unfold

15:                                               ; preds = %._crit_edge, %15
  %16 = phi i64 [ 25, %._crit_edge ], [ %20, %15 ]
  %17 = getelementptr [26 x [1 x i8]], ptr %3, i64 0, i64 %16
  %18 = load i8, ptr %17, align 1, !tbaa !7
  %19 = icmp eq i8 %18, 32
  %20 = add nsw i64 %16, -1
  %21 = icmp ne i64 %16, 0
  %22 = and i1 %19, %21
  br i1 %22, label %15, label %.preheader

.lr.ph.i.preheader.loopexit.unr-lcssa.loopexit:   ; preds = %select.unfold
  %23 = add nuw nsw i64 %indvars.iv, 1
  br label %.lr.ph.i.preheader.loopexit.unr-lcssa

.lr.ph.i.preheader.loopexit.unr-lcssa:            ; preds = %.lr.ph.i.preheader.loopexit.unr-lcssa.loopexit, %select.unfold.preheader
  %indvars.iv.unr = phi i64 [ 0, %select.unfold.preheader ], [ %23, %.lr.ph.i.preheader.loopexit.unr-lcssa.loopexit ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.i.preheader.loopexit, label %select.unfold.epil

select.unfold.epil:                               ; preds = %.lr.ph.i.preheader.loopexit.unr-lcssa
  %24 = getelementptr [26 x [1 x i8]], ptr %3, i64 0, i64 %indvars.iv.unr
  %.fca.0.load.epil = load i8, ptr %24, align 1, !tbaa !7
  %25 = zext i8 %.fca.0.load.epil to i64
  %26 = add nsw i64 %25, -97
  %27 = getelementptr [26 x i32], ptr @_QFEm, i64 0, i64 %26
  %28 = load i32, ptr %27, align 4, !tbaa !7
  %29 = add i32 %28, 1
  store i32 %29, ptr %27, align 4, !tbaa !7
  br label %.lr.ph.i.preheader.loopexit

.lr.ph.i.preheader.loopexit:                      ; preds = %.lr.ph.i.preheader.loopexit.unr-lcssa, %select.unfold.epil
  %.pre = load i32, ptr @_QFEm, align 16, !tbaa !7
  %.pre79 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 1), align 4, !tbaa !7
  %.pre80 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 2), align 8, !tbaa !7
  %.pre81 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 3), align 4, !tbaa !7
  %.pre82 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 4), align 16, !tbaa !7
  %.pre83 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 5), align 4, !tbaa !7
  %.pre84 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 6), align 8, !tbaa !7
  %.pre85 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 7), align 4, !tbaa !7
  %.pre86 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 8), align 16, !tbaa !7
  %.pre87 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 9), align 4, !tbaa !7
  %.pre88 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 10), align 8, !tbaa !7
  %.pre89 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 11), align 4, !tbaa !7
  %.pre90 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 12), align 16, !tbaa !7
  %.pre91 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 13), align 4, !tbaa !7
  %.pre92 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 14), align 8, !tbaa !7
  %.pre93 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 15), align 4, !tbaa !7
  %.pre94 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 16), align 16, !tbaa !7
  %.pre95 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 17), align 4, !tbaa !7
  %.pre96 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 18), align 8, !tbaa !7
  %.pre97 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 19), align 4, !tbaa !7
  %.pre98 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 20), align 16, !tbaa !7
  %.pre99 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 21), align 4, !tbaa !7
  %.pre100 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 22), align 8, !tbaa !7
  %.pre101 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 23), align 4, !tbaa !7
  %.pre102 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 24), align 16, !tbaa !7
  %.pre103 = load i32, ptr getelementptr inbounds ([26 x i32], ptr @_QFEm, i64 0, i64 25), align 4, !tbaa !7
  br label %.lr.ph.i.preheader

.lr.ph.i.preheader:                               ; preds = %.lr.ph.i.preheader.loopexit, %.preheader
  %30 = phi i32 [ %.pre103, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %31 = phi i32 [ %.pre102, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %32 = phi i32 [ %.pre101, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %33 = phi i32 [ %.pre100, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %34 = phi i32 [ %.pre99, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %35 = phi i32 [ %.pre98, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %36 = phi i32 [ %.pre97, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %37 = phi i32 [ %.pre96, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %38 = phi i32 [ %.pre95, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %39 = phi i32 [ %.pre94, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %40 = phi i32 [ %.pre93, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %41 = phi i32 [ %.pre92, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %42 = phi i32 [ %.pre91, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %43 = phi i32 [ %.pre90, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %44 = phi i32 [ %.pre89, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %45 = phi i32 [ %.pre88, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %46 = phi i32 [ %.pre87, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %47 = phi i32 [ %.pre86, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %48 = phi i32 [ %.pre85, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %49 = phi i32 [ %.pre84, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %50 = phi i32 [ %.pre83, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %51 = phi i32 [ %.pre82, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %52 = phi i32 [ %.pre81, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %53 = phi i32 [ %.pre80, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %54 = phi i32 [ %.pre79, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %55 = phi i32 [ %.pre, %.lr.ph.i.preheader.loopexit ], [ 0, %.preheader ]
  %56 = call i32 @llvm.smax.i32(i32 %54, i32 %55)
  %57 = call i32 @llvm.smax.i32(i32 %53, i32 %56)
  %58 = call i32 @llvm.smax.i32(i32 %52, i32 %57)
  %59 = call i32 @llvm.smax.i32(i32 %51, i32 %58)
  %60 = call i32 @llvm.smax.i32(i32 %50, i32 %59)
  %61 = call i32 @llvm.smax.i32(i32 %49, i32 %60)
  %62 = call i32 @llvm.smax.i32(i32 %48, i32 %61)
  %63 = call i32 @llvm.smax.i32(i32 %47, i32 %62)
  %64 = call i32 @llvm.smax.i32(i32 %46, i32 %63)
  %65 = call i32 @llvm.smax.i32(i32 %45, i32 %64)
  %66 = call i32 @llvm.smax.i32(i32 %44, i32 %65)
  %67 = call i32 @llvm.smax.i32(i32 %43, i32 %66)
  %68 = call i32 @llvm.smax.i32(i32 %42, i32 %67)
  %69 = call i32 @llvm.smax.i32(i32 %41, i32 %68)
  %70 = call i32 @llvm.smax.i32(i32 %40, i32 %69)
  %71 = call i32 @llvm.smax.i32(i32 %39, i32 %70)
  %72 = call i32 @llvm.smax.i32(i32 %38, i32 %71)
  %73 = call i32 @llvm.smax.i32(i32 %37, i32 %72)
  %74 = call i32 @llvm.smax.i32(i32 %36, i32 %73)
  %75 = call i32 @llvm.smax.i32(i32 %35, i32 %74)
  %76 = call i32 @llvm.smax.i32(i32 %34, i32 %75)
  %77 = call i32 @llvm.smax.i32(i32 %33, i32 %76)
  %78 = call i32 @llvm.smax.i32(i32 %32, i32 %77)
  %79 = call i32 @llvm.smax.i32(i32 %31, i32 %78)
  %80 = call i32 @llvm.smax.i32(i32 %30, i32 %79)
  %81 = icmp sgt i32 %80, 1
  br i1 %81, label %95, label %98

select.unfold:                                    ; preds = %select.unfold, %select.unfold.preheader.new
  %indvars.iv = phi i64 [ 1, %select.unfold.preheader.new ], [ %indvars.iv.next.1, %select.unfold ]
  %niter = phi i64 [ 0, %select.unfold.preheader.new ], [ %niter.next.1, %select.unfold ]
  %82 = add nsw i64 %indvars.iv, -1
  %83 = getelementptr [26 x [1 x i8]], ptr %3, i64 0, i64 %82
  %.fca.0.load = load i8, ptr %83, align 1, !tbaa !7
  %84 = zext i8 %.fca.0.load to i64
  %85 = add nsw i64 %84, -97
  %86 = getelementptr [26 x i32], ptr @_QFEm, i64 0, i64 %85
  %87 = load i32, ptr %86, align 4, !tbaa !7
  %88 = add i32 %87, 1
  store i32 %88, ptr %86, align 4, !tbaa !7
  %89 = getelementptr [26 x [1 x i8]], ptr %3, i64 0, i64 %indvars.iv
  %.fca.0.load.1 = load i8, ptr %89, align 1, !tbaa !7
  %90 = zext i8 %.fca.0.load.1 to i64
  %91 = add nsw i64 %90, -97
  %92 = getelementptr [26 x i32], ptr @_QFEm, i64 0, i64 %91
  %93 = load i32, ptr %92, align 4, !tbaa !7
  %94 = add i32 %93, 1
  store i32 %94, ptr %92, align 4, !tbaa !7
  %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 %.lr.ph.i.preheader.loopexit.unr-lcssa.loopexit, label %select.unfold

95:                                               ; preds = %.lr.ph.i.preheader
  %96 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.56fa93f8e3714d7cca2b4fb12ac4ee11, i32 14)
  %97 = call i1 @_FortranAioOutputAscii(ptr %96, ptr nonnull @_QQcl.6E6F, i64 2)
  br label %101

98:                                               ; preds = %.lr.ph.i.preheader
  %99 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.56fa93f8e3714d7cca2b4fb12ac4ee11, i32 16)
  %100 = call i1 @_FortranAioOutputAscii(ptr %99, ptr nonnull @_QQcl.796573, i64 3)
  br label %101

101:                                              ; preds = %95, %98
  %.sink = phi ptr [ %96, %95 ], [ %99, %98 ]
  %102 = call i32 @_FortranAioEndIoStatement(ptr %.sink)
  ret void
}

declare ptr @_FortranAioBeginExternalListInput(i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioInputAscii(ptr, ptr, i64) local_unnamed_addr

declare i32 @_FortranAioEndIoStatement(ptr) local_unnamed_addr

declare {} @_FortranAAdjustl(ptr, ptr, ptr, i32) local_unnamed_addr

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

declare ptr @_FortranAioBeginExternalFormattedOutput(ptr, i64, ptr, i32, ptr, i32) local_unnamed_addr

declare i1 @_FortranAioOutputAscii(ptr, ptr, i64) local_unnamed_addr

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

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

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

attributes #0 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }

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

!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!4, !4, i64 0}
!4 = !{!"descriptor member", !5, i64 0}
!5 = !{!"any access", !6, i64 0}
!6 = !{!"Flang Type TBAA Root"}
!7 = !{!8, !8, i64 0}
!8 = !{!"any data access", !5, i64 0}
