program main
      implicit none
      integer(4) :: q, i, j, length, frlen, enlen
      character(10000000) :: s
      character(5) ::inp(2*10**5)
      character(2*10**5) :: fr, en, buff
      logical :: flag = .true.

      read *, s
      read *, q
      do i = 1, q
        read '(a5)', inp(i)
      end do
      length = len(trim(s))

      frlen = 0
      enlen = 0
      do i = 1, q
        if ( inp(i)(1:1) == '1' ) then
          if ( flag ) then
            flag = .false.
          else
            flag = .true.
          end if
        else if ( inp(i)(1:1) == '2' ) then
          if ( inp(i)(3:3) == '1' ) then
            if ( flag ) then
               frlen = frlen + 1
               fr(frlen:frlen) = inp(i)(5:5)
            else
               enlen = enlen + 1
               en(enlen:enlen) = inp(i)(5:5)
            end if
          else
            if ( flag ) then
               enlen = enlen + 1
               en(enlen:enlen) = inp(i)(5:5)
            else
               frlen = frlen + 1
               fr(frlen:frlen) = inp(i)(5:5)
            end if
          end if
        end if
      end do

      if ( flag ) then
        buff = fr
        do i = 1, frlen
          fr(frlen-i+1:frlen-i+1) = buff(i:i) 
        end do
        print *, fr(1:frlen)//s(1:length)//en(1:enlen)
      else
        buff = en
        do i = 1, enlen
          en(enlen-i+1:enlen-i+1) = buff(i:i) 
        end do
        buff = s
        do i = 1, length
          s(length-i+1:length-i+1) = buff(i:i) 
        end do
        print *, en(1:enlen)//s(1:length)//fr(1:frlen)
      end if

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"

@_QFEbuff = internal unnamed_addr global [200000 x i8] undef
@_QFEen = internal unnamed_addr global [200000 x i8] undef
@_QFEflag = internal unnamed_addr global i1 false
@_QFEfr = internal unnamed_addr global [200000 x i8] undef
@_QFEinp = internal global [200000 x [5 x i8]] undef
@_QFEs = internal global [10000000 x i8] undef
@_QQcl.75b671296b08a4e330b4a089c2c29a95 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_2226/source.f\00"
@_QQcl.28613529 = linkonce constant [4 x i8] c"(a5)"
@_QQcl.31 = linkonce constant [1 x i8] c"1"
@_QQcl.32 = linkonce constant [1 x i8] c"2"
@_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 i32, align 4
  %4 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.75b671296b08a4e330b4a089c2c29a95, i32 9)
  %5 = tail call i1 @_FortranAioInputAscii(ptr %4, ptr nonnull @_QFEs, i64 10000000)
  %6 = tail call i32 @_FortranAioEndIoStatement(ptr %4)
  %7 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.75b671296b08a4e330b4a089c2c29a95, i32 10)
  %8 = call i1 @_FortranAioInputInteger(ptr %7, ptr nonnull %3, i32 4)
  %9 = call i32 @_FortranAioEndIoStatement(ptr %7)
  %10 = load i32, ptr %3, align 4, !tbaa !3
  %11 = icmp sgt i32 %10, 0
  br i1 %11, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %0
  %12 = zext i32 %10 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 ]
  %13 = call ptr @_FortranAioBeginExternalFormattedInput(ptr nonnull @_QQcl.28613529, i64 4, ptr null, i32 -1, ptr nonnull @_QQcl.75b671296b08a4e330b4a089c2c29a95, i32 12)
  %14 = add nsw i64 %indvars.iv, -1
  %15 = getelementptr [200000 x [5 x i8]], ptr @_QFEinp, i64 0, i64 %14
  %16 = call i1 @_FortranAioInputAscii(ptr %13, ptr %15, i64 5)
  %17 = call i32 @_FortranAioEndIoStatement(ptr %13)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv, %12
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %0
  store ptr @_QFEs, ptr %1, align 8, !tbaa !7
  %.fca.1.gep44 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 1
  store i64 10000000, ptr %.fca.1.gep44, align 8, !tbaa !7
  %.fca.2.gep45 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep45, align 8, !tbaa !7
  %.fca.3.gep46 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 3
  store i8 0, ptr %.fca.3.gep46, align 4, !tbaa !7
  %.fca.4.gep47 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 4
  store i8 40, ptr %.fca.4.gep47, align 1, !tbaa !7
  %.fca.5.gep48 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep48, align 2, !tbaa !7
  %.fca.6.gep49 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8 }, ptr %1, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep49, align 1, !tbaa !7
  %.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 !7
  %.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 !7
  %.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 !7
  %.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 !7
  %.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 !7
  %18 = call {} @_FortranATrim(ptr nonnull %2, ptr nonnull %1, ptr nonnull @_QQcl.75b671296b08a4e330b4a089c2c29a95, i32 14)
  %.fca.0.load = load ptr, ptr %2, align 8, !tbaa !7
  %.fca.1.load = load i64, ptr %.fca.1.gep, align 8, !tbaa !7
  call void @free(ptr %.fca.0.load)
  %19 = load i32, ptr %3, align 4, !tbaa !3
  %20 = icmp sgt i32 %19, 0
  br i1 %20, label %.lr.ph114.preheader, label %._crit_edge115.thread

.lr.ph114.preheader:                              ; preds = %._crit_edge
  %21 = zext i32 %19 to i64
  br label %.lr.ph114

.lr.ph114:                                        ; preds = %.lr.ph114.preheader, %60
  %indvars.iv142 = phi i64 [ 1, %.lr.ph114.preheader ], [ %indvars.iv.next143, %60 ]
  %.0112 = phi i32 [ 0, %.lr.ph114.preheader ], [ %.1, %60 ]
  %.083111 = phi i32 [ 0, %.lr.ph114.preheader ], [ %.184, %60 ]
  %22 = add nsw i64 %indvars.iv142, -1
  %23 = getelementptr [200000 x [5 x i8]], ptr @_QFEinp, i64 0, i64 %22
  %24 = call i32 @_FortranACharacterCompareScalar1(ptr %23, ptr nonnull @_QQcl.31, i64 1, i64 1)
  %25 = icmp eq i32 %24, 0
  br i1 %25, label %26, label %29

26:                                               ; preds = %.lr.ph114
  %.b = load i1, ptr @_QFEflag, align 1
  br i1 %.b, label %28, label %27

27:                                               ; preds = %26
  store i1 true, ptr @_QFEflag, align 1
  br label %60

28:                                               ; preds = %26
  store i1 false, ptr @_QFEflag, align 1
  br label %60

29:                                               ; preds = %.lr.ph114
  %30 = call i32 @_FortranACharacterCompareScalar1(ptr %23, ptr nonnull @_QQcl.32, i64 1, i64 1)
  %31 = icmp eq i32 %30, 0
  br i1 %31, label %32, label %60

32:                                               ; preds = %29
  %33 = getelementptr [5 x [1 x i8]], ptr %23, i64 0, i64 2
  %34 = call i32 @_FortranACharacterCompareScalar1(ptr %33, ptr nonnull @_QQcl.31, i64 1, i64 1)
  %35 = icmp eq i32 %34, 0
  %.b102 = load i1, ptr @_QFEflag, align 1
  %36 = getelementptr [5 x [1 x i8]], ptr %23, i64 0, i64 4
  %37 = load i8, ptr %36, align 1
  br i1 %35, label %38, label %49

38:                                               ; preds = %32
  br i1 %.b102, label %44, label %39

39:                                               ; preds = %38
  %40 = add i32 %.083111, 1
  %41 = sext i32 %40 to i64
  %42 = add nsw i64 %41, -1
  %43 = getelementptr [200000 x [1 x i8]], ptr @_QFEfr, i64 0, i64 %42
  store i8 %37, ptr %43, align 1
  br label %60

44:                                               ; preds = %38
  %45 = add i32 %.0112, 1
  %46 = sext i32 %45 to i64
  %47 = add nsw i64 %46, -1
  %48 = getelementptr [200000 x [1 x i8]], ptr @_QFEen, i64 0, i64 %47
  store i8 %37, ptr %48, align 1
  br label %60

49:                                               ; preds = %32
  br i1 %.b102, label %55, label %50

50:                                               ; preds = %49
  %51 = add i32 %.0112, 1
  %52 = sext i32 %51 to i64
  %53 = add nsw i64 %52, -1
  %54 = getelementptr [200000 x [1 x i8]], ptr @_QFEen, i64 0, i64 %53
  store i8 %37, ptr %54, align 1
  br label %60

55:                                               ; preds = %49
  %56 = add i32 %.083111, 1
  %57 = sext i32 %56 to i64
  %58 = add nsw i64 %57, -1
  %59 = getelementptr [200000 x [1 x i8]], ptr @_QFEfr, i64 0, i64 %58
  store i8 %37, ptr %59, align 1
  br label %60

60:                                               ; preds = %55, %50, %44, %39, %27, %28, %29
  %.184 = phi i32 [ %.083111, %27 ], [ %.083111, %28 ], [ %40, %39 ], [ %.083111, %44 ], [ %.083111, %50 ], [ %56, %55 ], [ %.083111, %29 ]
  %.1 = phi i32 [ %.0112, %27 ], [ %.0112, %28 ], [ %.0112, %39 ], [ %45, %44 ], [ %51, %50 ], [ %.0112, %55 ], [ %.0112, %29 ]
  %indvars.iv.next143 = add nuw nsw i64 %indvars.iv142, 1
  %exitcond145.not = icmp eq i64 %indvars.iv142, %21
  br i1 %exitcond145.not, label %._crit_edge115, label %.lr.ph114

._crit_edge115:                                   ; preds = %60
  %.b104 = load i1, ptr @_QFEflag, align 1
  br i1 %.b104, label %127, label %61

._crit_edge115.thread:                            ; preds = %._crit_edge
  %.b104166 = load i1, ptr @_QFEflag, align 1
  br i1 %.b104166, label %._crit_edge128, label %.thread

.thread:                                          ; preds = %._crit_edge115.thread
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(200000) @_QFEbuff, ptr noundef nonnull align 16 dereferenceable(200000) @_QFEfr, i64 200000, i1 false)
  br label %._crit_edge119

61:                                               ; preds = %._crit_edge115
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(200000) @_QFEbuff, ptr noundef nonnull align 16 dereferenceable(200000) @_QFEfr, i64 200000, i1 false)
  %62 = sext i32 %.184 to i64
  %63 = icmp sgt i32 %.184, 0
  br i1 %63, label %iter.check, label %._crit_edge119

iter.check:                                       ; preds = %61
  %64 = add nuw i32 %.184, 1
  %min.iters.check = icmp ult i32 %.184, 8
  br i1 %min.iters.check, label %vec.epilog.scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %iter.check
  %65 = add nsw i64 %62, -1
  %66 = trunc i64 %65 to i32
  %67 = sub i32 %.184, %66
  %68 = icmp sgt i32 %67, %.184
  %69 = icmp ugt i64 %65, 4294967295
  %70 = or i1 %68, %69
  br i1 %70, label %vec.epilog.scalar.ph.preheader, label %vector.main.loop.iter.check

vector.main.loop.iter.check:                      ; preds = %vector.scevcheck
  %min.iters.check178 = icmp ult i32 %.184, 32
  br i1 %min.iters.check178, label %vec.epilog.ph, label %vector.ph

vector.ph:                                        ; preds = %vector.main.loop.iter.check
  %n.vec = and i64 %62, -32
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %71 = trunc i64 %index to i32
  %72 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %index
  %73 = sub i32 %.184, %71
  %74 = sext i32 %73 to i64
  %75 = add nsw i64 %74, -1
  %76 = getelementptr [200000 x [1 x i8]], ptr @_QFEfr, i64 0, i64 %75
  %wide.load = load <16 x i8>, ptr %72, align 16
  %77 = getelementptr i8, ptr %72, i64 16
  %wide.load180 = load <16 x i8>, ptr %77, align 16
  %reverse = shufflevector <16 x i8> %wide.load, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %78 = getelementptr i8, ptr %76, i64 -15
  store <16 x i8> %reverse, ptr %78, align 1
  %reverse181 = shufflevector <16 x i8> %wide.load180, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %79 = getelementptr i8, ptr %76, i64 -31
  store <16 x i8> %reverse181, ptr %79, align 1
  %index.next = add nuw i64 %index, 32
  %80 = icmp eq i64 %index.next, %n.vec
  br i1 %80, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %62
  br i1 %cmp.n, label %._crit_edge119, label %vec.epilog.iter.check

vec.epilog.iter.check:                            ; preds = %middle.block
  %ind.end184 = or i64 %n.vec, 1
  %n.vec.remaining = and i64 %62, 24
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  br i1 %min.epilog.iters.check, label %vec.epilog.scalar.ph.preheader, label %vec.epilog.ph

vec.epilog.ph:                                    ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
  %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
  %n.vec183 = and i64 %62, -8
  %ind.end = or i64 %n.vec183, 1
  br label %vec.epilog.vector.body

vec.epilog.vector.body:                           ; preds = %vec.epilog.vector.body, %vec.epilog.ph
  %index186 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next191, %vec.epilog.vector.body ]
  %81 = trunc i64 %index186 to i32
  %82 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %index186
  %83 = sub i32 %.184, %81
  %84 = sext i32 %83 to i64
  %85 = add nsw i64 %84, -1
  %86 = getelementptr [200000 x [1 x i8]], ptr @_QFEfr, i64 0, i64 %85
  %wide.load189 = load <8 x i8>, ptr %82, align 8
  %reverse190 = shufflevector <8 x i8> %wide.load189, <8 x i8> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %87 = getelementptr i8, ptr %86, i64 -7
  store <8 x i8> %reverse190, ptr %87, align 1
  %index.next191 = add nuw i64 %index186, 8
  %88 = icmp eq i64 %index.next191, %n.vec183
  br i1 %88, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !12

vec.epilog.middle.block:                          ; preds = %vec.epilog.vector.body
  %cmp.n185 = icmp eq i64 %n.vec183, %62
  br i1 %cmp.n185, label %._crit_edge119, label %vec.epilog.scalar.ph.preheader

vec.epilog.scalar.ph.preheader:                   ; preds = %vector.scevcheck, %iter.check, %vec.epilog.iter.check, %vec.epilog.middle.block
  %indvars.iv146.ph = phi i64 [ 1, %iter.check ], [ 1, %vector.scevcheck ], [ %ind.end184, %vec.epilog.iter.check ], [ %ind.end, %vec.epilog.middle.block ]
  %xtraiter = and i64 %62, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %vec.epilog.scalar.ph.prol.loopexit, label %vec.epilog.scalar.ph.prol

vec.epilog.scalar.ph.prol:                        ; preds = %vec.epilog.scalar.ph.preheader
  %89 = add nsw i64 %indvars.iv146.ph, -1
  %90 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %89
  %91 = trunc i64 %indvars.iv146.ph to i32
  %92 = sub i32 %64, %91
  %93 = sext i32 %92 to i64
  %94 = add nsw i64 %93, -1
  %95 = getelementptr [200000 x [1 x i8]], ptr @_QFEfr, i64 0, i64 %94
  %96 = load i8, ptr %90, align 2
  store i8 %96, ptr %95, align 1
  %indvars.iv.next147.prol = add nuw nsw i64 %indvars.iv146.ph, 1
  br label %vec.epilog.scalar.ph.prol.loopexit

vec.epilog.scalar.ph.prol.loopexit:               ; preds = %vec.epilog.scalar.ph.prol, %vec.epilog.scalar.ph.preheader
  %indvars.iv146.unr = phi i64 [ %indvars.iv146.ph, %vec.epilog.scalar.ph.preheader ], [ %indvars.iv.next147.prol, %vec.epilog.scalar.ph.prol ]
  %97 = icmp eq i64 %indvars.iv146.ph, %62
  br i1 %97, label %._crit_edge119, label %vec.epilog.scalar.ph

vec.epilog.scalar.ph:                             ; preds = %vec.epilog.scalar.ph.prol.loopexit, %vec.epilog.scalar.ph
  %indvars.iv146 = phi i64 [ %indvars.iv.next147.1, %vec.epilog.scalar.ph ], [ %indvars.iv146.unr, %vec.epilog.scalar.ph.prol.loopexit ]
  %98 = add nsw i64 %indvars.iv146, -1
  %99 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %98
  %100 = trunc i64 %indvars.iv146 to i32
  %101 = sub i32 %64, %100
  %102 = sext i32 %101 to i64
  %103 = add nsw i64 %102, -1
  %104 = getelementptr [200000 x [1 x i8]], ptr @_QFEfr, i64 0, i64 %103
  %105 = load i8, ptr %99, align 1
  store i8 %105, ptr %104, align 1
  %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1
  %106 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %indvars.iv146
  %107 = trunc i64 %indvars.iv.next147 to i32
  %108 = sub i32 %64, %107
  %109 = sext i32 %108 to i64
  %110 = add nsw i64 %109, -1
  %111 = getelementptr [200000 x [1 x i8]], ptr @_QFEfr, i64 0, i64 %110
  %112 = load i8, ptr %106, align 1
  store i8 %112, ptr %111, align 1
  %indvars.iv.next147.1 = add nuw nsw i64 %indvars.iv146, 2
  %exitcond149.not.1 = icmp eq i64 %indvars.iv.next147, %62
  br i1 %exitcond149.not.1, label %._crit_edge119, label %vec.epilog.scalar.ph, !llvm.loop !13

._crit_edge119:                                   ; preds = %vec.epilog.scalar.ph.prol.loopexit, %vec.epilog.scalar.ph, %middle.block, %vec.epilog.middle.block, %.thread, %61
  %113 = phi i64 [ 0, %.thread ], [ %62, %61 ], [ %62, %vec.epilog.middle.block ], [ %62, %middle.block ], [ %62, %vec.epilog.scalar.ph ], [ %62, %vec.epilog.scalar.ph.prol.loopexit ]
  %.0.lcssa170173 = phi i32 [ 0, %.thread ], [ %.1, %61 ], [ %.1, %vec.epilog.middle.block ], [ %.1, %middle.block ], [ %.1, %vec.epilog.scalar.ph ], [ %.1, %vec.epilog.scalar.ph.prol.loopexit ]
  %114 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.75b671296b08a4e330b4a089c2c29a95, i32 51)
  %115 = call i64 @llvm.smax.i64(i64 %113, i64 0)
  %sext106 = shl i64 %.fca.1.load, 32
  %116 = ashr exact i64 %sext106, 32
  %117 = call i64 @llvm.smax.i64(i64 %116, i64 0)
  %118 = add nuw i64 %115, %117
  %119 = alloca i8, i64 %118, align 1
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %119, ptr nonnull align 16 @_QFEfr, i64 %115, i1 false)
  %.not = icmp slt i64 %sext106, 4294967296
  br i1 %.not, label %._crit_edge122, label %.lr.ph121.preheader

.lr.ph121.preheader:                              ; preds = %._crit_edge119
  %uglygep = getelementptr i8, ptr %119, i64 %115
  %120 = call i64 @llvm.smax.i64(i64 %116, i64 1)
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %uglygep, ptr nonnull align 16 @_QFEs, i64 %120, i1 false), !tbaa !3
  br label %._crit_edge122

._crit_edge122:                                   ; preds = %.lr.ph121.preheader, %._crit_edge119
  %121 = call i32 @llvm.smax.i32(i32 %.0.lcssa170173, i32 0)
  %122 = zext i32 %121 to i64
  %123 = add nuw i64 %118, %122
  %124 = alloca i8, i64 %123, align 1
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %124, ptr nonnull align 1 %119, i64 %118, i1 false)
  %.not138 = icmp slt i32 %.0.lcssa170173, 1
  br i1 %.not138, label %._crit_edge125, label %.lr.ph124.preheader

.lr.ph124.preheader:                              ; preds = %._crit_edge122
  %uglygep150 = getelementptr i8, ptr %124, i64 %118
  %125 = call i64 @llvm.smax.i64(i64 %122, i64 1)
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %uglygep150, ptr nonnull align 16 @_QFEen, i64 %125, i1 false), !tbaa !3
  br label %._crit_edge125

._crit_edge125:                                   ; preds = %.lr.ph124.preheader, %._crit_edge122
  %126 = call i1 @_FortranAioOutputAscii(ptr %114, ptr nonnull %124, i64 %123)
  br label %231

127:                                              ; preds = %._crit_edge115
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(200000) @_QFEbuff, ptr noundef nonnull align 16 dereferenceable(200000) @_QFEen, i64 200000, i1 false)
  %128 = sext i32 %.1 to i64
  %129 = icmp sgt i32 %.1, 0
  br i1 %129, label %iter.check199, label %._crit_edge128

iter.check199:                                    ; preds = %127
  %130 = add nuw i32 %.1, 1
  %min.iters.check197 = icmp ult i32 %.1, 8
  br i1 %min.iters.check197, label %vec.epilog.scalar.ph216.preheader, label %vector.scevcheck192

vector.scevcheck192:                              ; preds = %iter.check199
  %131 = add nsw i64 %128, -1
  %132 = trunc i64 %131 to i32
  %133 = sub i32 %.1, %132
  %134 = icmp sgt i32 %133, %.1
  %135 = icmp ugt i64 %131, 4294967295
  %136 = or i1 %134, %135
  br i1 %136, label %vec.epilog.scalar.ph216.preheader, label %vector.main.loop.iter.check201

vector.main.loop.iter.check201:                   ; preds = %vector.scevcheck192
  %min.iters.check200 = icmp ult i32 %.1, 32
  br i1 %min.iters.check200, label %vec.epilog.ph218, label %vector.ph202

vector.ph202:                                     ; preds = %vector.main.loop.iter.check201
  %n.vec204 = and i64 %128, -32
  br label %vector.body206

vector.body206:                                   ; preds = %vector.body206, %vector.ph202
  %index207 = phi i64 [ 0, %vector.ph202 ], [ %index.next214, %vector.body206 ]
  %137 = trunc i64 %index207 to i32
  %138 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %index207
  %139 = sub i32 %.1, %137
  %140 = sext i32 %139 to i64
  %141 = add nsw i64 %140, -1
  %142 = getelementptr [200000 x [1 x i8]], ptr @_QFEen, i64 0, i64 %141
  %wide.load210 = load <16 x i8>, ptr %138, align 16
  %143 = getelementptr i8, ptr %138, i64 16
  %wide.load211 = load <16 x i8>, ptr %143, align 16
  %reverse212 = shufflevector <16 x i8> %wide.load210, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %144 = getelementptr i8, ptr %142, i64 -15
  store <16 x i8> %reverse212, ptr %144, align 1
  %reverse213 = shufflevector <16 x i8> %wide.load211, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %145 = getelementptr i8, ptr %142, i64 -31
  store <16 x i8> %reverse213, ptr %145, align 1
  %index.next214 = add nuw i64 %index207, 32
  %146 = icmp eq i64 %index.next214, %n.vec204
  br i1 %146, label %middle.block196, label %vector.body206, !llvm.loop !14

middle.block196:                                  ; preds = %vector.body206
  %cmp.n205 = icmp eq i64 %n.vec204, %128
  br i1 %cmp.n205, label %._crit_edge128, label %vec.epilog.iter.check217

vec.epilog.iter.check217:                         ; preds = %middle.block196
  %ind.end225 = or i64 %n.vec204, 1
  %n.vec.remaining219 = and i64 %128, 24
  %min.epilog.iters.check220 = icmp eq i64 %n.vec.remaining219, 0
  br i1 %min.epilog.iters.check220, label %vec.epilog.scalar.ph216.preheader, label %vec.epilog.ph218

vec.epilog.ph218:                                 ; preds = %vector.main.loop.iter.check201, %vec.epilog.iter.check217
  %vec.epilog.resume.val221 = phi i64 [ %n.vec204, %vec.epilog.iter.check217 ], [ 0, %vector.main.loop.iter.check201 ]
  %n.vec223 = and i64 %128, -8
  %ind.end224 = or i64 %n.vec223, 1
  br label %vec.epilog.vector.body228

vec.epilog.vector.body228:                        ; preds = %vec.epilog.vector.body228, %vec.epilog.ph218
  %index229 = phi i64 [ %vec.epilog.resume.val221, %vec.epilog.ph218 ], [ %index.next234, %vec.epilog.vector.body228 ]
  %147 = trunc i64 %index229 to i32
  %148 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %index229
  %149 = sub i32 %.1, %147
  %150 = sext i32 %149 to i64
  %151 = add nsw i64 %150, -1
  %152 = getelementptr [200000 x [1 x i8]], ptr @_QFEen, i64 0, i64 %151
  %wide.load232 = load <8 x i8>, ptr %148, align 8
  %reverse233 = shufflevector <8 x i8> %wide.load232, <8 x i8> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %153 = getelementptr i8, ptr %152, i64 -7
  store <8 x i8> %reverse233, ptr %153, align 1
  %index.next234 = add nuw i64 %index229, 8
  %154 = icmp eq i64 %index.next234, %n.vec223
  br i1 %154, label %vec.epilog.middle.block215, label %vec.epilog.vector.body228, !llvm.loop !15

vec.epilog.middle.block215:                       ; preds = %vec.epilog.vector.body228
  %cmp.n227 = icmp eq i64 %n.vec223, %128
  br i1 %cmp.n227, label %._crit_edge128, label %vec.epilog.scalar.ph216.preheader

vec.epilog.scalar.ph216.preheader:                ; preds = %vector.scevcheck192, %iter.check199, %vec.epilog.iter.check217, %vec.epilog.middle.block215
  %indvars.iv152.ph = phi i64 [ 1, %iter.check199 ], [ 1, %vector.scevcheck192 ], [ %ind.end225, %vec.epilog.iter.check217 ], [ %ind.end224, %vec.epilog.middle.block215 ]
  %xtraiter280 = and i64 %128, 1
  %lcmp.mod281.not = icmp eq i64 %xtraiter280, 0
  br i1 %lcmp.mod281.not, label %vec.epilog.scalar.ph216.prol.loopexit, label %vec.epilog.scalar.ph216.prol

vec.epilog.scalar.ph216.prol:                     ; preds = %vec.epilog.scalar.ph216.preheader
  %155 = add nsw i64 %indvars.iv152.ph, -1
  %156 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %155
  %157 = trunc i64 %indvars.iv152.ph to i32
  %158 = sub i32 %130, %157
  %159 = sext i32 %158 to i64
  %160 = add nsw i64 %159, -1
  %161 = getelementptr [200000 x [1 x i8]], ptr @_QFEen, i64 0, i64 %160
  %162 = load i8, ptr %156, align 2
  store i8 %162, ptr %161, align 1
  %indvars.iv.next153.prol = add nuw nsw i64 %indvars.iv152.ph, 1
  br label %vec.epilog.scalar.ph216.prol.loopexit

vec.epilog.scalar.ph216.prol.loopexit:            ; preds = %vec.epilog.scalar.ph216.prol, %vec.epilog.scalar.ph216.preheader
  %indvars.iv152.unr = phi i64 [ %indvars.iv152.ph, %vec.epilog.scalar.ph216.preheader ], [ %indvars.iv.next153.prol, %vec.epilog.scalar.ph216.prol ]
  %163 = icmp eq i64 %indvars.iv152.ph, %128
  br i1 %163, label %._crit_edge128, label %vec.epilog.scalar.ph216

vec.epilog.scalar.ph216:                          ; preds = %vec.epilog.scalar.ph216.prol.loopexit, %vec.epilog.scalar.ph216
  %indvars.iv152 = phi i64 [ %indvars.iv.next153.1, %vec.epilog.scalar.ph216 ], [ %indvars.iv152.unr, %vec.epilog.scalar.ph216.prol.loopexit ]
  %164 = add nsw i64 %indvars.iv152, -1
  %165 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %164
  %166 = trunc i64 %indvars.iv152 to i32
  %167 = sub i32 %130, %166
  %168 = sext i32 %167 to i64
  %169 = add nsw i64 %168, -1
  %170 = getelementptr [200000 x [1 x i8]], ptr @_QFEen, i64 0, i64 %169
  %171 = load i8, ptr %165, align 1
  store i8 %171, ptr %170, align 1
  %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1
  %172 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %indvars.iv152
  %173 = trunc i64 %indvars.iv.next153 to i32
  %174 = sub i32 %130, %173
  %175 = sext i32 %174 to i64
  %176 = add nsw i64 %175, -1
  %177 = getelementptr [200000 x [1 x i8]], ptr @_QFEen, i64 0, i64 %176
  %178 = load i8, ptr %172, align 1
  store i8 %178, ptr %177, align 1
  %indvars.iv.next153.1 = add nuw nsw i64 %indvars.iv152, 2
  %exitcond155.not.1 = icmp eq i64 %indvars.iv.next153, %128
  br i1 %exitcond155.not.1, label %._crit_edge128, label %vec.epilog.scalar.ph216, !llvm.loop !16

._crit_edge128:                                   ; preds = %vec.epilog.scalar.ph216.prol.loopexit, %vec.epilog.scalar.ph216, %middle.block196, %vec.epilog.middle.block215, %._crit_edge115.thread, %127
  %179 = phi i64 [ %128, %127 ], [ 0, %._crit_edge115.thread ], [ %128, %vec.epilog.middle.block215 ], [ %128, %middle.block196 ], [ %128, %vec.epilog.scalar.ph216 ], [ %128, %vec.epilog.scalar.ph216.prol.loopexit ]
  %.083.lcssa168177 = phi i32 [ %.184, %127 ], [ 0, %._crit_edge115.thread ], [ %.184, %vec.epilog.middle.block215 ], [ %.184, %middle.block196 ], [ %.184, %vec.epilog.scalar.ph216 ], [ %.184, %vec.epilog.scalar.ph216.prol.loopexit ]
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(200000) @_QFEbuff, ptr noundef nonnull align 16 dereferenceable(200000) @_QFEs, i64 200000, i1 false)
  %sext = shl i64 %.fca.1.load, 32
  %180 = ashr exact i64 %sext, 32
  %181 = icmp sgt i64 %sext, 0
  br i1 %181, label %iter.check243, label %._crit_edge131

iter.check243:                                    ; preds = %._crit_edge128
  %182 = add i64 %.fca.1.load, 1
  %183 = call i64 @llvm.smax.i64(i64 %180, i64 1)
  %min.iters.check241 = icmp ult i64 %183, 8
  br i1 %min.iters.check241, label %vec.epilog.scalar.ph259.preheader, label %vector.scevcheck235

vector.scevcheck235:                              ; preds = %iter.check243
  %smin = call i64 @llvm.smin.i64(i64 %180, i64 1)
  %184 = sub i64 %180, %smin
  %185 = trunc i64 %.fca.1.load to i32
  %186 = trunc i64 %184 to i32
  %187 = sub i32 %185, %186
  %188 = icmp sgt i32 %187, %185
  %189 = icmp ugt i64 %184, 4294967295
  %190 = or i1 %188, %189
  br i1 %190, label %vec.epilog.scalar.ph259.preheader, label %vector.main.loop.iter.check245

vector.main.loop.iter.check245:                   ; preds = %vector.scevcheck235
  %min.iters.check244 = icmp ult i64 %183, 32
  br i1 %min.iters.check244, label %vec.epilog.ph261, label %vector.ph246

vector.ph246:                                     ; preds = %vector.main.loop.iter.check245
  %n.vec248 = and i64 %183, 9223372036854775776
  br label %vector.body250

vector.body250:                                   ; preds = %vector.body250, %vector.ph246
  %index251 = phi i64 [ 0, %vector.ph246 ], [ %index.next257, %vector.body250 ]
  %191 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %index251
  %192 = sub i64 %.fca.1.load, %index251
  %193 = shl i64 %192, 32
  %194 = ashr exact i64 %193, 32
  %195 = add nsw i64 %194, -1
  %196 = getelementptr [10000000 x [1 x i8]], ptr @_QFEs, i64 0, i64 %195
  %wide.load253 = load <16 x i8>, ptr %191, align 16
  %197 = getelementptr i8, ptr %191, i64 16
  %wide.load254 = load <16 x i8>, ptr %197, align 16
  %reverse255 = shufflevector <16 x i8> %wide.load253, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %198 = getelementptr i8, ptr %196, i64 -15
  store <16 x i8> %reverse255, ptr %198, align 1
  %reverse256 = shufflevector <16 x i8> %wide.load254, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %199 = getelementptr i8, ptr %196, i64 -31
  store <16 x i8> %reverse256, ptr %199, align 1
  %index.next257 = add nuw i64 %index251, 32
  %200 = icmp eq i64 %index.next257, %n.vec248
  br i1 %200, label %middle.block240, label %vector.body250, !llvm.loop !17

middle.block240:                                  ; preds = %vector.body250
  %cmp.n249 = icmp eq i64 %183, %n.vec248
  br i1 %cmp.n249, label %._crit_edge131, label %vec.epilog.iter.check260

vec.epilog.iter.check260:                         ; preds = %middle.block240
  %ind.end271 = sub i64 %180, %n.vec248
  %ind.end268 = or i64 %n.vec248, 1
  %n.vec.remaining262 = and i64 %183, 24
  %min.epilog.iters.check263 = icmp eq i64 %n.vec.remaining262, 0
  br i1 %min.epilog.iters.check263, label %vec.epilog.scalar.ph259.preheader, label %vec.epilog.ph261

vec.epilog.ph261:                                 ; preds = %vector.main.loop.iter.check245, %vec.epilog.iter.check260
  %vec.epilog.resume.val264 = phi i64 [ %n.vec248, %vec.epilog.iter.check260 ], [ 0, %vector.main.loop.iter.check245 ]
  %n.vec266 = and i64 %183, 9223372036854775800
  %ind.end267 = or i64 %n.vec266, 1
  %ind.end270 = sub i64 %180, %n.vec266
  br label %vec.epilog.vector.body274

vec.epilog.vector.body274:                        ; preds = %vec.epilog.vector.body274, %vec.epilog.ph261
  %index275 = phi i64 [ %vec.epilog.resume.val264, %vec.epilog.ph261 ], [ %index.next279, %vec.epilog.vector.body274 ]
  %201 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %index275
  %202 = sub i64 %.fca.1.load, %index275
  %203 = shl i64 %202, 32
  %204 = ashr exact i64 %203, 32
  %205 = add nsw i64 %204, -1
  %206 = getelementptr [10000000 x [1 x i8]], ptr @_QFEs, i64 0, i64 %205
  %wide.load277 = load <8 x i8>, ptr %201, align 8
  %reverse278 = shufflevector <8 x i8> %wide.load277, <8 x i8> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %207 = getelementptr i8, ptr %206, i64 -7
  store <8 x i8> %reverse278, ptr %207, align 1
  %index.next279 = add nuw i64 %index275, 8
  %208 = icmp eq i64 %index.next279, %n.vec266
  br i1 %208, label %vec.epilog.middle.block258, label %vec.epilog.vector.body274, !llvm.loop !18

vec.epilog.middle.block258:                       ; preds = %vec.epilog.vector.body274
  %cmp.n273 = icmp eq i64 %183, %n.vec266
  br i1 %cmp.n273, label %._crit_edge131, label %vec.epilog.scalar.ph259.preheader

vec.epilog.scalar.ph259.preheader:                ; preds = %vector.scevcheck235, %iter.check243, %vec.epilog.iter.check260, %vec.epilog.middle.block258
  %indvars.iv156.ph = phi i64 [ 1, %iter.check243 ], [ 1, %vector.scevcheck235 ], [ %ind.end268, %vec.epilog.iter.check260 ], [ %ind.end267, %vec.epilog.middle.block258 ]
  %.ph = phi i64 [ %180, %iter.check243 ], [ %180, %vector.scevcheck235 ], [ %ind.end271, %vec.epilog.iter.check260 ], [ %ind.end270, %vec.epilog.middle.block258 ]
  br label %vec.epilog.scalar.ph259

vec.epilog.scalar.ph259:                          ; preds = %vec.epilog.scalar.ph259.preheader, %vec.epilog.scalar.ph259
  %indvars.iv156 = phi i64 [ %indvars.iv.next157, %vec.epilog.scalar.ph259 ], [ %indvars.iv156.ph, %vec.epilog.scalar.ph259.preheader ]
  %209 = phi i64 [ %217, %vec.epilog.scalar.ph259 ], [ %.ph, %vec.epilog.scalar.ph259.preheader ]
  %210 = add nsw i64 %indvars.iv156, -1
  %211 = getelementptr [200000 x [1 x i8]], ptr @_QFEbuff, i64 0, i64 %210
  %212 = sub i64 %182, %indvars.iv156
  %sext163 = shl i64 %212, 32
  %213 = ashr exact i64 %sext163, 32
  %214 = add nsw i64 %213, -1
  %215 = getelementptr [10000000 x [1 x i8]], ptr @_QFEs, i64 0, i64 %214
  %216 = load i8, ptr %211, align 1
  store i8 %216, ptr %215, align 1
  %indvars.iv.next157 = add nuw nsw i64 %indvars.iv156, 1
  %217 = add nsw i64 %209, -1
  %218 = icmp sgt i64 %209, 1
  br i1 %218, label %vec.epilog.scalar.ph259, label %._crit_edge131, !llvm.loop !19

._crit_edge131:                                   ; preds = %vec.epilog.scalar.ph259, %middle.block240, %vec.epilog.middle.block258, %._crit_edge128
  %219 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.75b671296b08a4e330b4a089c2c29a95, i32 61)
  %220 = call i64 @llvm.smax.i64(i64 %179, i64 0)
  %221 = call i64 @llvm.smax.i64(i64 %180, i64 0)
  %222 = add nuw i64 %220, %221
  %223 = alloca i8, i64 %222, align 1
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %223, ptr nonnull align 16 @_QFEen, i64 %220, i1 false)
  %.not139 = icmp slt i64 %sext, 4294967296
  br i1 %.not139, label %._crit_edge134, label %.lr.ph133.preheader

.lr.ph133.preheader:                              ; preds = %._crit_edge131
  %uglygep159 = getelementptr i8, ptr %223, i64 %220
  %224 = call i64 @llvm.smax.i64(i64 %180, i64 1)
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %uglygep159, ptr nonnull align 16 @_QFEs, i64 %224, i1 false), !tbaa !3
  br label %._crit_edge134

._crit_edge134:                                   ; preds = %.lr.ph133.preheader, %._crit_edge131
  %225 = call i32 @llvm.smax.i32(i32 %.083.lcssa168177, i32 0)
  %226 = zext i32 %225 to i64
  %227 = add i64 %222, %226
  %228 = alloca i8, i64 %227, align 1
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %228, ptr nonnull align 1 %223, i64 %222, i1 false)
  %.not140 = icmp slt i32 %.083.lcssa168177, 1
  br i1 %.not140, label %._crit_edge137, label %.lr.ph136.preheader

.lr.ph136.preheader:                              ; preds = %._crit_edge134
  %uglygep161 = getelementptr i8, ptr %228, i64 %222
  %229 = call i64 @llvm.smax.i64(i64 %226, i64 1)
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %uglygep161, ptr nonnull align 16 @_QFEfr, i64 %229, i1 false), !tbaa !3
  br label %._crit_edge137

._crit_edge137:                                   ; preds = %.lr.ph136.preheader, %._crit_edge134
  %230 = call i1 @_FortranAioOutputAscii(ptr %219, ptr nonnull %228, i64 %227)
  br label %231

231:                                              ; preds = %._crit_edge125, %._crit_edge137
  %.sink = phi ptr [ %114, %._crit_edge125 ], [ %219, %._crit_edge137 ]
  %232 = 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 i1 @_FortranAioInputInteger(ptr, ptr, i32) local_unnamed_addr

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

declare {} @_FortranATrim(ptr, ptr, ptr, i32) 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

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

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

; 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) #2

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

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

attributes #0 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 = !{!"any data access", !5, i64 0}
!5 = !{!"any access", !6, i64 0}
!6 = !{!"Flang Type TBAA Root"}
!7 = !{!8, !8, i64 0}
!8 = !{!"descriptor member", !5, i64 0}
!9 = distinct !{!9, !10, !11}
!10 = !{!"llvm.loop.isvectorized", i32 1}
!11 = !{!"llvm.loop.unroll.runtime.disable"}
!12 = distinct !{!12, !10, !11}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10, !11}
!15 = distinct !{!15, !10, !11}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10, !11}
!18 = distinct !{!18, !10, !11}
!19 = distinct !{!19, !10}
