program prob2
    implicit none
    character(len=100)::S
    character(len=7)::a
    integer::i,l
    a = "keyence"

    read(*,*) S
    l = len_trim(S)

    do i = 0, 7
        if(S(1:i) .eq. a(1:i) .and. S(l-6+i:l) .eq. a(i+1:7))then
            write(*,*) "YES"
            stop
        end if
    end do

    write(*,*) "NO"
    stop
end program
; 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"

@_QFEs = internal global [100 x i8] undef
@_QQcl.6B6579656E6365 = linkonce local_unnamed_addr constant [7 x i8] c"keyence"
@_QQcl.051dc55d3721044e863695e2a1c7eabb = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_5105/source.f\00"
@_QQcl.594553 = linkonce constant [3 x i8] c"YES"
@_QQcl.4E4F = linkonce constant [2 x i8] c"NO"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

; Function Attrs: noreturn
define void @_QQmain() local_unnamed_addr #0 {
  %1 = alloca [7 x i8], align 1
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %1, ptr noundef nonnull align 1 dereferenceable(7) @_QQcl.6B6579656E6365, i64 7, i1 false)
  %2 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.051dc55d3721044e863695e2a1c7eabb, i32 8)
  %3 = tail call i1 @_FortranAioInputAscii(ptr %2, ptr nonnull @_QFEs, i64 100)
  %4 = tail call i32 @_FortranAioEndIoStatement(ptr %2)
  br label %5

5:                                                ; preds = %0, %5
  %6 = phi i64 [ 99, %0 ], [ %10, %5 ]
  %7 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %6
  %8 = load i8, ptr %7, align 1, !tbaa !3
  %9 = icmp eq i8 %8, 32
  %10 = add nsw i64 %6, -1
  %11 = icmp ne i64 %6, 0
  %12 = and i1 %9, %11
  br i1 %12, label %5, label %13

13:                                               ; preds = %5
  %14 = trunc i64 %6 to i32
  %15 = add i32 %14, 1
  %16 = select i1 %9, i32 0, i32 %15
  %17 = add i32 %16, -6
  %18 = sext i32 %16 to i64
  %19 = call i32 @_FortranACharacterCompareScalar1(ptr nonnull @_QFEs, ptr nonnull %1, i64 0, i64 0)
  %20 = sext i32 %17 to i64
  %21 = add nsw i64 %20, -1
  %22 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %21
  %23 = sub nsw i64 %18, %20
  %24 = call i64 @llvm.smax.i64(i64 %23, i64 -1)
  %25 = add nsw i64 %24, 1
  %26 = call i32 @_FortranACharacterCompareScalar1(ptr %22, ptr nonnull %1, i64 %25, i64 7)
  %27 = or i32 %26, %19
  %28 = icmp eq i32 %27, 0
  br i1 %28, label %120, label %29

29:                                               ; preds = %13
  %30 = call i32 @_FortranACharacterCompareScalar1(ptr nonnull @_QFEs, ptr nonnull %1, i64 1, i64 1)
  %31 = add i32 %16, -5
  %32 = sext i32 %31 to i64
  %33 = add nsw i64 %32, -1
  %34 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %33
  %35 = sub nsw i64 %18, %32
  %36 = call i64 @llvm.smax.i64(i64 %35, i64 -1)
  %37 = add nsw i64 %36, 1
  %38 = getelementptr inbounds [7 x [1 x i8]], ptr %1, i64 0, i64 1
  %39 = call i32 @_FortranACharacterCompareScalar1(ptr %34, ptr nonnull %38, i64 %37, i64 6)
  %40 = or i32 %39, %30
  %41 = icmp eq i32 %40, 0
  br i1 %41, label %120, label %42

42:                                               ; preds = %29
  %43 = call i32 @_FortranACharacterCompareScalar1(ptr nonnull @_QFEs, ptr nonnull %1, i64 2, i64 2)
  %44 = add i32 %16, -4
  %45 = sext i32 %44 to i64
  %46 = add nsw i64 %45, -1
  %47 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %46
  %48 = sub nsw i64 %18, %45
  %49 = call i64 @llvm.smax.i64(i64 %48, i64 -1)
  %50 = add nsw i64 %49, 1
  %51 = getelementptr inbounds [7 x [1 x i8]], ptr %1, i64 0, i64 2
  %52 = call i32 @_FortranACharacterCompareScalar1(ptr %47, ptr nonnull %51, i64 %50, i64 5)
  %53 = or i32 %52, %43
  %54 = icmp eq i32 %53, 0
  br i1 %54, label %120, label %55

55:                                               ; preds = %42
  %56 = call i32 @_FortranACharacterCompareScalar1(ptr nonnull @_QFEs, ptr nonnull %1, i64 3, i64 3)
  %57 = add i32 %16, -3
  %58 = sext i32 %57 to i64
  %59 = add nsw i64 %58, -1
  %60 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %59
  %61 = sub nsw i64 %18, %58
  %62 = call i64 @llvm.smax.i64(i64 %61, i64 -1)
  %63 = add nsw i64 %62, 1
  %64 = getelementptr inbounds [7 x [1 x i8]], ptr %1, i64 0, i64 3
  %65 = call i32 @_FortranACharacterCompareScalar1(ptr %60, ptr nonnull %64, i64 %63, i64 4)
  %66 = or i32 %65, %56
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %120, label %68

68:                                               ; preds = %55
  %69 = call i32 @_FortranACharacterCompareScalar1(ptr nonnull @_QFEs, ptr nonnull %1, i64 4, i64 4)
  %70 = add i32 %16, -2
  %71 = sext i32 %70 to i64
  %72 = add nsw i64 %71, -1
  %73 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %72
  %74 = sub nsw i64 %18, %71
  %75 = call i64 @llvm.smax.i64(i64 %74, i64 -1)
  %76 = add nsw i64 %75, 1
  %77 = getelementptr inbounds [7 x [1 x i8]], ptr %1, i64 0, i64 4
  %78 = call i32 @_FortranACharacterCompareScalar1(ptr %73, ptr nonnull %77, i64 %76, i64 3)
  %79 = or i32 %78, %69
  %80 = icmp eq i32 %79, 0
  br i1 %80, label %120, label %81

81:                                               ; preds = %68
  %82 = call i32 @_FortranACharacterCompareScalar1(ptr nonnull @_QFEs, ptr nonnull %1, i64 5, i64 5)
  %83 = add i32 %16, -1
  %84 = sext i32 %83 to i64
  %85 = add nsw i64 %84, -1
  %86 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %85
  %87 = sub nsw i64 %18, %84
  %88 = call i64 @llvm.smax.i64(i64 %87, i64 -1)
  %89 = add nsw i64 %88, 1
  %90 = getelementptr inbounds [7 x [1 x i8]], ptr %1, i64 0, i64 5
  %91 = call i32 @_FortranACharacterCompareScalar1(ptr %86, ptr nonnull %90, i64 %89, i64 2)
  %92 = or i32 %91, %82
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %120, label %94

94:                                               ; preds = %81
  %95 = call i32 @_FortranACharacterCompareScalar1(ptr nonnull @_QFEs, ptr nonnull %1, i64 6, i64 6)
  %96 = add nsw i64 %18, -1
  %97 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %96
  %98 = getelementptr inbounds [7 x [1 x i8]], ptr %1, i64 0, i64 6
  %99 = call i32 @_FortranACharacterCompareScalar1(ptr %97, ptr nonnull %98, i64 1, i64 1)
  %100 = or i32 %99, %95
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %120, label %102

102:                                              ; preds = %94
  %103 = call i32 @_FortranACharacterCompareScalar1(ptr nonnull @_QFEs, ptr nonnull %1, i64 7, i64 7)
  %104 = add i32 %16, 1
  %105 = sext i32 %104 to i64
  %106 = add nsw i64 %105, -1
  %107 = getelementptr [100 x [1 x i8]], ptr @_QFEs, i64 0, i64 %106
  %108 = sub nsw i64 %18, %105
  %109 = call i64 @llvm.smax.i64(i64 %108, i64 -1)
  %110 = add nsw i64 %109, 1
  %111 = getelementptr inbounds [7 x [1 x i8]], ptr %1, i64 0, i64 7
  %112 = call i32 @_FortranACharacterCompareScalar1(ptr %107, ptr nonnull %111, i64 %110, i64 0)
  %113 = or i32 %112, %103
  %114 = icmp eq i32 %113, 0
  br i1 %114, label %120, label %115

115:                                              ; preds = %102
  %116 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.051dc55d3721044e863695e2a1c7eabb, i32 18)
  %117 = call i1 @_FortranAioOutputAscii(ptr %116, ptr nonnull @_QQcl.4E4F, i64 2)
  %118 = call i32 @_FortranAioEndIoStatement(ptr %116)
  %119 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

120:                                              ; preds = %102, %94, %81, %68, %55, %42, %29, %13
  %121 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.051dc55d3721044e863695e2a1c7eabb, i32 13)
  %122 = call i1 @_FortranAioOutputAscii(ptr %121, ptr nonnull @_QQcl.594553, i64 3)
  %123 = call i32 @_FortranAioEndIoStatement(ptr %121)
  %124 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable
}

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 i32 @_FortranACharacterCompareScalar1(ptr, ptr, i64, i64) local_unnamed_addr

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

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

declare {} @_FortranAStopStatement(i32, i1, i1) local_unnamed_addr

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

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

attributes #0 = { noreturn }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }

!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 = !{!"any data access", !5, i64 0}
!5 = !{!"any access", !6, i64 0}
!6 = !{!"Flang Type TBAA Root"}
