program main
implicit none
integer,dimension(11)::p
integer::h,hp,n,i,x,total

read(*,*) n

do i=1,n
read(*,*) p(i)
end do
if (n<10) then
do i=n+1,11
p(i)=0
end do
end if
hp=p(1)
x=1
do i=1,n
if (hp<p(i)) then
hp=p(i)
x=i
end if
end do

total=0

do i=1,n
total=total+p(i)
end do

total= total-p(x)+0.5*p(x)

write(*,*) total

end program main



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

@_QFEp = internal global [11 x i32] undef
@_QQcl.cc406aba5d8f4d4b3005e1869f094853 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_5299/source.f\00"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
  %1 = alloca i32, align 4
  %2 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.cc406aba5d8f4d4b3005e1869f094853, i32 6)
  %3 = call i1 @_FortranAioInputInteger(ptr %2, ptr nonnull %1, i32 4)
  %4 = call i32 @_FortranAioEndIoStatement(ptr %2)
  %5 = load i32, ptr %1, align 4, !tbaa !3
  %6 = icmp sgt i32 %5, 0
  br i1 %6, label %.lr.ph.preheader, label %.lr.ph26.preheader

.lr.ph.preheader:                                 ; preds = %0
  %7 = zext i32 %5 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %8 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.cc406aba5d8f4d4b3005e1869f094853, i32 9)
  %9 = add nsw i64 %indvars.iv, -1
  %10 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %9
  %11 = call i1 @_FortranAioInputInteger(ptr %8, ptr %10, i32 4)
  %12 = call i32 @_FortranAioEndIoStatement(ptr %8)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv, %7
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph
  %.pre = load i32, ptr %1, align 4, !tbaa !3
  %13 = icmp slt i32 %.pre, 10
  br i1 %13, label %.lr.ph26.preheader, label %.lr.ph30.preheader

.lr.ph26.preheader:                               ; preds = %0, %._crit_edge
  %14 = phi i32 [ %.pre, %._crit_edge ], [ %5, %0 ]
  %15 = add i32 %14, 1
  %16 = sext i32 %15 to i64
  %17 = sub nsw i64 12, %16
  %.not = icmp eq i32 %15, 12
  %18 = select i1 %.not, i64 13, i64 12
  %19 = sub nsw i64 %18, %16
  %min.iters.check = icmp ult i64 %19, 12
  br i1 %min.iters.check, label %.lr.ph26.preheader68, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph26.preheader
  %.not65 = icmp eq i32 %15, 12
  %20 = select i1 %.not65, i64 12, i64 11
  %21 = sub nsw i64 %20, %16
  %22 = trunc i64 %21 to i32
  %23 = add i32 %15, %22
  %24 = icmp slt i32 %23, %15
  %25 = icmp ugt i64 %21, 4294967295
  %26 = or i1 %24, %25
  br i1 %26, label %.lr.ph26.preheader68, label %vector.ph

vector.ph:                                        ; preds = %vector.scevcheck
  %n.vec = and i64 %19, -8
  %ind.end = sub nsw i64 %17, %n.vec
  %.cast = trunc i64 %n.vec to i32
  %ind.end47 = add i32 %15, %.cast
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %.cast49 = trunc i64 %index to i32
  %offset.idx = add i32 %15, %.cast49
  %27 = sext i32 %offset.idx to i64
  %28 = add nsw i64 %27, -1
  %29 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %28
  store <4 x i32> zeroinitializer, ptr %29, align 4, !tbaa !3
  %30 = getelementptr i32, ptr %29, i64 4
  store <4 x i32> zeroinitializer, ptr %30, align 4, !tbaa !3
  %index.next = add nuw i64 %index, 8
  %31 = icmp eq i64 %index.next, %n.vec
  br i1 %31, label %middle.block, label %vector.body, !llvm.loop !7

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %19, %n.vec
  br i1 %cmp.n, label %.loopexit, label %.lr.ph26.preheader68

.lr.ph26.preheader68:                             ; preds = %vector.scevcheck, %.lr.ph26.preheader, %middle.block
  %.ph = phi i64 [ %17, %vector.scevcheck ], [ %17, %.lr.ph26.preheader ], [ %ind.end, %middle.block ]
  %.ph69 = phi i32 [ %15, %vector.scevcheck ], [ %15, %.lr.ph26.preheader ], [ %ind.end47, %middle.block ]
  br label %.lr.ph26

.lr.ph26:                                         ; preds = %.lr.ph26.preheader68, %.lr.ph26
  %32 = phi i64 [ %38, %.lr.ph26 ], [ %.ph, %.lr.ph26.preheader68 ]
  %33 = phi i32 [ %37, %.lr.ph26 ], [ %.ph69, %.lr.ph26.preheader68 ]
  %34 = sext i32 %33 to i64
  %35 = add nsw i64 %34, -1
  %36 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %35
  store i32 0, ptr %36, align 4, !tbaa !3
  %37 = add i32 %33, 1
  %38 = add nsw i64 %32, -1
  %39 = icmp ugt i64 %32, 1
  br i1 %39, label %.lr.ph26, label %.loopexit, !llvm.loop !10

.loopexit:                                        ; preds = %.lr.ph26, %middle.block
  %40 = icmp sgt i32 %14, 0
  br i1 %40, label %.lr.ph30.preheader, label %._crit_edge33

.lr.ph30.preheader:                               ; preds = %._crit_edge, %.loopexit
  %.in = phi i32 [ %14, %.loopexit ], [ %.pre, %._crit_edge ]
  %41 = zext i32 %.in to i64
  %42 = load i32, ptr @_QFEp, align 16, !tbaa !3
  %xtraiter = and i64 %41, 1
  %43 = icmp eq i32 %.in, 1
  br i1 %43, label %.preheader.unr-lcssa, label %.lr.ph30.preheader.new

.lr.ph30.preheader.new:                           ; preds = %.lr.ph30.preheader
  %unroll_iter = and i64 %41, 4294967294
  br label %.lr.ph30

.preheader.unr-lcssa:                             ; preds = %.lr.ph30, %.lr.ph30.preheader
  %spec.select24.lcssa.ph = phi i32 [ undef, %.lr.ph30.preheader ], [ %spec.select24.1, %.lr.ph30 ]
  %indvars.iv36.unr = phi i64 [ 1, %.lr.ph30.preheader ], [ %indvars.iv.next37.1, %.lr.ph30 ]
  %.028.unr = phi i32 [ 1, %.lr.ph30.preheader ], [ %spec.select24.1, %.lr.ph30 ]
  %.01627.unr = phi i32 [ %42, %.lr.ph30.preheader ], [ %spec.select.1, %.lr.ph30 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader, label %.lr.ph30.epil

.lr.ph30.epil:                                    ; preds = %.preheader.unr-lcssa
  %44 = add nsw i64 %indvars.iv36.unr, -1
  %45 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %44
  %46 = load i32, ptr %45, align 4, !tbaa !3
  %47 = icmp slt i32 %.01627.unr, %46
  %48 = trunc i64 %indvars.iv36.unr to i32
  %spec.select24.epil = select i1 %47, i32 %48, i32 %.028.unr
  br label %.preheader

.preheader:                                       ; preds = %.preheader.unr-lcssa, %.lr.ph30.epil
  %spec.select24.lcssa = phi i32 [ %spec.select24.lcssa.ph, %.preheader.unr-lcssa ], [ %spec.select24.epil, %.lr.ph30.epil ]
  %49 = sext i32 %spec.select24.lcssa to i64
  %50 = add nsw i64 %49, -1
  %min.iters.check52 = icmp ult i32 %.in, 8
  br i1 %min.iters.check52, label %.lr.ph32.preheader, label %vector.ph53

vector.ph53:                                      ; preds = %.preheader
  %n.vec55 = and i64 %41, 4294967288
  %ind.end56 = or i64 %n.vec55, 1
  br label %vector.body59

vector.body59:                                    ; preds = %vector.body59, %vector.ph53
  %index60 = phi i64 [ 0, %vector.ph53 ], [ %index.next64, %vector.body59 ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph53 ], [ %53, %vector.body59 ]
  %vec.phi61 = phi <4 x i32> [ zeroinitializer, %vector.ph53 ], [ %54, %vector.body59 ]
  %51 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %index60
  %wide.load = load <4 x i32>, ptr %51, align 16, !tbaa !3
  %52 = getelementptr i32, ptr %51, i64 4
  %wide.load63 = load <4 x i32>, ptr %52, align 16, !tbaa !3
  %53 = add <4 x i32> %wide.load, %vec.phi
  %54 = add <4 x i32> %wide.load63, %vec.phi61
  %index.next64 = add nuw i64 %index60, 8
  %55 = icmp eq i64 %index.next64, %n.vec55
  br i1 %55, label %middle.block50, label %vector.body59, !llvm.loop !11

middle.block50:                                   ; preds = %vector.body59
  %bin.rdx = add <4 x i32> %54, %53
  %56 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  %cmp.n58 = icmp eq i64 %n.vec55, %41
  br i1 %cmp.n58, label %._crit_edge33, label %.lr.ph32.preheader

.lr.ph32.preheader:                               ; preds = %.preheader, %middle.block50
  %indvars.iv40.ph = phi i64 [ 1, %.preheader ], [ %ind.end56, %middle.block50 ]
  %.01531.ph = phi i32 [ 0, %.preheader ], [ %56, %middle.block50 ]
  br label %.lr.ph32

.lr.ph30:                                         ; preds = %.lr.ph30, %.lr.ph30.preheader.new
  %indvars.iv36 = phi i64 [ 1, %.lr.ph30.preheader.new ], [ %indvars.iv.next37.1, %.lr.ph30 ]
  %.028 = phi i32 [ 1, %.lr.ph30.preheader.new ], [ %spec.select24.1, %.lr.ph30 ]
  %.01627 = phi i32 [ %42, %.lr.ph30.preheader.new ], [ %spec.select.1, %.lr.ph30 ]
  %niter = phi i64 [ 0, %.lr.ph30.preheader.new ], [ %niter.next.1, %.lr.ph30 ]
  %57 = add nsw i64 %indvars.iv36, -1
  %58 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %57
  %59 = load i32, ptr %58, align 4, !tbaa !3
  %60 = icmp slt i32 %.01627, %59
  %spec.select = call i32 @llvm.smax.i32(i32 %.01627, i32 %59)
  %61 = trunc i64 %indvars.iv36 to i32
  %spec.select24 = select i1 %60, i32 %61, i32 %.028
  %62 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %indvars.iv36
  %63 = load i32, ptr %62, align 4, !tbaa !3
  %64 = icmp slt i32 %spec.select, %63
  %spec.select.1 = call i32 @llvm.smax.i32(i32 %spec.select, i32 %63)
  %65 = trunc i64 %indvars.iv36 to i32
  %66 = add i32 %65, 1
  %spec.select24.1 = select i1 %64, i32 %66, i32 %spec.select24
  %indvars.iv.next37.1 = add nuw nsw i64 %indvars.iv36, 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 %.preheader.unr-lcssa, label %.lr.ph30

.lr.ph32:                                         ; preds = %.lr.ph32.preheader, %.lr.ph32
  %indvars.iv40 = phi i64 [ %indvars.iv.next41, %.lr.ph32 ], [ %indvars.iv40.ph, %.lr.ph32.preheader ]
  %.01531 = phi i32 [ %70, %.lr.ph32 ], [ %.01531.ph, %.lr.ph32.preheader ]
  %67 = add nsw i64 %indvars.iv40, -1
  %68 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %67
  %69 = load i32, ptr %68, align 4, !tbaa !3
  %70 = add i32 %69, %.01531
  %indvars.iv.next41 = add nuw nsw i64 %indvars.iv40, 1
  %exitcond43.not = icmp eq i64 %indvars.iv40, %41
  br i1 %exitcond43.not, label %._crit_edge33, label %.lr.ph32, !llvm.loop !12

._crit_edge33:                                    ; preds = %.lr.ph32, %middle.block50, %.loopexit
  %.0.lcssa45 = phi i64 [ 0, %.loopexit ], [ %50, %middle.block50 ], [ %50, %.lr.ph32 ]
  %.015.lcssa = phi i32 [ 0, %.loopexit ], [ %56, %middle.block50 ], [ %70, %.lr.ph32 ]
  %71 = getelementptr [11 x i32], ptr @_QFEp, i64 0, i64 %.0.lcssa45
  %72 = load i32, ptr %71, align 4, !tbaa !3
  %73 = sub i32 %.015.lcssa, %72
  %74 = sitofp i32 %73 to float
  %75 = sitofp i32 %72 to float
  %76 = fmul contract float %75, 5.000000e-01
  %77 = fadd contract float %76, %74
  %78 = fptosi float %77 to i32
  %79 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.cc406aba5d8f4d4b3005e1869f094853, i32 33)
  %80 = call i1 @_FortranAioOutputInteger32(ptr %79, i32 %78)
  %81 = call i32 @_FortranAioEndIoStatement(ptr %79)
  ret void
}

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

declare i1 @_FortranAioInputInteger(ptr, ptr, i32) local_unnamed_addr

declare i32 @_FortranAioEndIoStatement(ptr) local_unnamed_addr

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

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #1

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { nocallback nofree nosync nounwind 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"}
!7 = distinct !{!7, !8, !9}
!8 = !{!"llvm.loop.isvectorized", i32 1}
!9 = !{!"llvm.loop.unroll.runtime.disable"}
!10 = distinct !{!10, !8}
!11 = distinct !{!11, !8, !9}
!12 = distinct !{!12, !9, !8}
