program sample
	implicit none
    integer ::x,y,z,e,f,i,k,l
    integer,allocatable :: a(:),b(:),c(:,:),d(:)
    
    read(*,*) x,y,z
    
    allocate(a(x))
    allocate(b(y))
    allocate(c(3,z))
    allocate(d(z+1))
    
    do i=1,size(d)+1
    	d(i)=0
    end do
    
    read(*,*) a
    read(*,*) b
    read(*,*) c
    
    e=minval(a)
    f=minval(b)
    d(1) = e+f
    
    do i=2,z+1
    	!k,lは何番目の冷蔵庫と電子レンジが割引になるか示す。
    	k=c(1,i-1)
        l=c(2,i-1)
        d(i)= a(k) +b(l)-c(3,i-1)
    end do

    write(*,*) minval(d)
    
    deallocate(a)
    deallocate(b)
    deallocate(c)
    deallocate(d)
    
    stop
end program sample

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

@_QFEa.0 = internal unnamed_addr global ptr null
@_QFEa.8 = internal unnamed_addr global i64 0
@_QFEb.0 = internal unnamed_addr global ptr null
@_QFEb.8 = internal unnamed_addr global i64 0
@_QFEc = internal unnamed_addr global { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] } { ptr null, i64 ptrtoint (ptr getelementptr (i32, ptr null, i32 1) to i64), i32 20180515, i8 2, i8 9, i8 2, i8 0, [2 x [3 x i64]] [[3 x i64] [i64 1, i64 0, i64 ptrtoint (ptr getelementptr (i32, ptr null, i32 1) to i64)], [3 x i64] [i64 1, i64 0, i64 0]] }
@_QFEd.0 = internal unnamed_addr global ptr null
@_QFEd.8 = internal unnamed_addr global i64 0
@_QQcl.b6309b44344902b4fb78d703ce67f353 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_2144/source.f\00"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #0

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

; Function Attrs: noreturn
define void @_QQmain() local_unnamed_addr #2 {
  %1 = alloca { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, align 8
  %2 = alloca { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, align 8
  %3 = alloca { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, align 8
  %4 = alloca { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, align 8
  %5 = alloca { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, align 8
  %6 = alloca { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.b6309b44344902b4fb78d703ce67f353, i32 6)
  %11 = call i1 @_FortranAioInputInteger(ptr %10, ptr nonnull %7, i32 4)
  %12 = call i1 @_FortranAioInputInteger(ptr %10, ptr nonnull %8, i32 4)
  %13 = call i1 @_FortranAioInputInteger(ptr %10, ptr nonnull %9, i32 4)
  %14 = call i32 @_FortranAioEndIoStatement(ptr %10)
  %15 = load i32, ptr %7, align 4, !tbaa !3
  %16 = call i32 @llvm.smax.i32(i32 %15, i32 0)
  %17 = zext i32 %16 to i64
  %18 = shl nuw nsw i64 %17, 2
  %19 = call ptr @malloc(i64 %18)
  store ptr %19, ptr @_QFEa.0, align 8, !tbaa !7
  store i64 %17, ptr @_QFEa.8, align 8, !tbaa !7
  %20 = load i32, ptr %8, align 4, !tbaa !3
  %21 = call i32 @llvm.smax.i32(i32 %20, i32 0)
  %22 = zext i32 %21 to i64
  %23 = shl nuw nsw i64 %22, 2
  %24 = call ptr @malloc(i64 %23)
  store ptr %24, ptr @_QFEb.0, align 8, !tbaa !7
  store i64 %22, ptr @_QFEb.8, align 8, !tbaa !7
  %25 = load i32, ptr %9, align 4, !tbaa !3
  %26 = call i32 @llvm.smax.i32(i32 %25, i32 0)
  %27 = zext i32 %26 to i64
  %28 = mul nuw nsw i64 %27, 12
  %29 = call ptr @malloc(i64 %28)
  store ptr %29, ptr @_QFEc, align 16, !tbaa !7
  store i64 4, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 1), align 8, !tbaa !7
  store i32 20180515, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 2), align 16, !tbaa !7
  store i8 2, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 3), align 4, !tbaa !7
  store i8 9, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 4), align 1, !tbaa !7
  store i8 2, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 5), align 2, !tbaa !7
  store i8 0, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 6), align 1, !tbaa !7
  store i64 1, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7), align 8, !tbaa !7
  store i64 3, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 0, i64 1), align 16, !tbaa !7
  store i64 4, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 0, i64 2), align 8, !tbaa !7
  store i64 1, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 1), align 16, !tbaa !7
  store i64 %27, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 1, i64 1), align 8, !tbaa !7
  store i64 12, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 1, i64 2), align 16, !tbaa !7
  %30 = add i32 %25, 1
  %31 = call i32 @llvm.smax.i32(i32 %30, i32 0)
  %32 = zext i32 %31 to i64
  %33 = shl nuw nsw i64 %32, 2
  %34 = call ptr @malloc(i64 %33)
  store ptr %34, ptr @_QFEd.0, align 8, !tbaa !7
  store i64 %32, ptr @_QFEd.8, align 8, !tbaa !7
  %.not = icmp eq i32 %31, 2147483647
  br i1 %.not, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %0
  %35 = add nuw nsw i32 %31, 1
  %36 = zext i32 %35 to i64
  %37 = shl nuw nsw i64 %36, 2
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %34, i8 0, i64 %37, i1 false), !tbaa !3
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %0
  %38 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.b6309b44344902b4fb78d703ce67f353, i32 17)
  %.unpack = load ptr, ptr @_QFEa.0, align 8, !tbaa !7
  %.unpack1052.unpack.unpack1054 = load i64, ptr @_QFEa.8, align 8, !tbaa !7
  store ptr %.unpack, ptr %6, align 8, !tbaa !7
  %.fca.1.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 1
  store i64 4, ptr %.fca.1.gep, align 8, !tbaa !7
  %.fca.2.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep, align 8, !tbaa !7
  %.fca.3.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 3
  store i8 1, ptr %.fca.3.gep, align 4, !tbaa !7
  %.fca.4.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 4
  store i8 9, ptr %.fca.4.gep, align 1, !tbaa !7
  %.fca.5.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep, align 2, !tbaa !7
  %.fca.6.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep, align 1, !tbaa !7
  %.fca.7.0.0.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 7, i64 0, i64 0
  store i64 1, ptr %.fca.7.0.0.gep, align 8, !tbaa !7
  %.fca.7.0.1.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 7, i64 0, i64 1
  store i64 %.unpack1052.unpack.unpack1054, ptr %.fca.7.0.1.gep, align 8, !tbaa !7
  %.fca.7.0.2.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %6, i64 0, i32 7, i64 0, i64 2
  store i64 4, ptr %.fca.7.0.2.gep, align 8, !tbaa !7
  %39 = call i1 @_FortranAioInputDescriptor(ptr %38, ptr nonnull %6)
  %40 = call i32 @_FortranAioEndIoStatement(ptr %38)
  %41 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.b6309b44344902b4fb78d703ce67f353, i32 18)
  %.unpack1057 = load ptr, ptr @_QFEb.0, align 8, !tbaa !7
  %.unpack1064.unpack.unpack1066 = load i64, ptr @_QFEb.8, align 8, !tbaa !7
  store ptr %.unpack1057, ptr %5, align 8, !tbaa !7
  %.fca.1.gep220 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 1
  store i64 4, ptr %.fca.1.gep220, align 8, !tbaa !7
  %.fca.2.gep222 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep222, align 8, !tbaa !7
  %.fca.3.gep224 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 3
  store i8 1, ptr %.fca.3.gep224, align 4, !tbaa !7
  %.fca.4.gep226 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 4
  store i8 9, ptr %.fca.4.gep226, align 1, !tbaa !7
  %.fca.5.gep228 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep228, align 2, !tbaa !7
  %.fca.6.gep230 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep230, align 1, !tbaa !7
  %.fca.7.0.0.gep232 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 7, i64 0, i64 0
  store i64 1, ptr %.fca.7.0.0.gep232, align 8, !tbaa !7
  %.fca.7.0.1.gep234 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 7, i64 0, i64 1
  store i64 %.unpack1064.unpack.unpack1066, ptr %.fca.7.0.1.gep234, align 8, !tbaa !7
  %.fca.7.0.2.gep236 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %5, i64 0, i32 7, i64 0, i64 2
  store i64 4, ptr %.fca.7.0.2.gep236, align 8, !tbaa !7
  %42 = call i1 @_FortranAioInputDescriptor(ptr %41, ptr nonnull %5)
  %43 = call i32 @_FortranAioEndIoStatement(ptr %41)
  %44 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.b6309b44344902b4fb78d703ce67f353, i32 19)
  %.unpack1069 = load ptr, ptr @_QFEc, align 16, !tbaa !7
  %.unpack1076.unpack.unpack = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7), align 8, !tbaa !7
  %.unpack1076.unpack.unpack1079 = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 0, i64 1), align 16, !tbaa !7
  %.unpack1076.unpack1077.unpack = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 1), align 16, !tbaa !7
  %.unpack1076.unpack1077.unpack1082 = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 1, i64 1), align 8, !tbaa !7
  %45 = icmp eq i64 %.unpack1076.unpack.unpack1079, 0
  %46 = select i1 %45, i64 1, i64 %.unpack1076.unpack.unpack
  %47 = shl i64 %.unpack1076.unpack.unpack1079, 2
  %48 = icmp eq i64 %.unpack1076.unpack1077.unpack1082, 0
  %49 = select i1 %48, i64 1, i64 %.unpack1076.unpack1077.unpack
  store ptr %.unpack1069, ptr %4, align 8, !tbaa !7
  %.fca.1.gep276 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 1
  store i64 4, ptr %.fca.1.gep276, align 8, !tbaa !7
  %.fca.2.gep278 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep278, align 8, !tbaa !7
  %.fca.3.gep280 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 3
  store i8 2, ptr %.fca.3.gep280, align 4, !tbaa !7
  %.fca.4.gep282 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 4
  store i8 9, ptr %.fca.4.gep282, align 1, !tbaa !7
  %.fca.5.gep284 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep284, align 2, !tbaa !7
  %.fca.6.gep286 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep286, align 1, !tbaa !7
  %.fca.7.0.0.gep288 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 7, i64 0, i64 0
  store i64 %46, ptr %.fca.7.0.0.gep288, align 8, !tbaa !7
  %.fca.7.0.1.gep290 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 7, i64 0, i64 1
  store i64 %.unpack1076.unpack.unpack1079, ptr %.fca.7.0.1.gep290, align 8, !tbaa !7
  %.fca.7.0.2.gep292 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 7, i64 0, i64 2
  store i64 4, ptr %.fca.7.0.2.gep292, align 8, !tbaa !7
  %.fca.7.1.0.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 7, i64 1, i64 0
  store i64 %49, ptr %.fca.7.1.0.gep, align 8, !tbaa !7
  %.fca.7.1.1.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 7, i64 1, i64 1
  store i64 %.unpack1076.unpack1077.unpack1082, ptr %.fca.7.1.1.gep, align 8, !tbaa !7
  %.fca.7.1.2.gep = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr %4, i64 0, i32 7, i64 1, i64 2
  store i64 %47, ptr %.fca.7.1.2.gep, align 8, !tbaa !7
  %50 = call i1 @_FortranAioInputDescriptor(ptr %44, ptr nonnull %4)
  %51 = call i32 @_FortranAioEndIoStatement(ptr %44)
  %.unpack1085 = load ptr, ptr @_QFEa.0, align 8, !tbaa !7
  %.unpack1092.unpack.unpack1094 = load i64, ptr @_QFEa.8, align 8, !tbaa !7
  store ptr %.unpack1085, ptr %3, align 8, !tbaa !7
  %.fca.1.gep329 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 1
  store i64 4, ptr %.fca.1.gep329, align 8, !tbaa !7
  %.fca.2.gep331 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep331, align 8, !tbaa !7
  %.fca.3.gep333 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 3
  store i8 1, ptr %.fca.3.gep333, align 4, !tbaa !7
  %.fca.4.gep335 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 4
  store i8 9, ptr %.fca.4.gep335, align 1, !tbaa !7
  %.fca.5.gep337 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep337, align 2, !tbaa !7
  %.fca.6.gep339 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep339, align 1, !tbaa !7
  %.fca.7.0.0.gep341 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 7, i64 0, i64 0
  store i64 1, ptr %.fca.7.0.0.gep341, align 8, !tbaa !7
  %.fca.7.0.1.gep343 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 7, i64 0, i64 1
  store i64 %.unpack1092.unpack.unpack1094, ptr %.fca.7.0.1.gep343, align 8, !tbaa !7
  %.fca.7.0.2.gep345 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %3, i64 0, i32 7, i64 0, i64 2
  store i64 4, ptr %.fca.7.0.2.gep345, align 8, !tbaa !7
  %52 = call i32 @_FortranAMinvalInteger4(ptr nonnull %3, ptr nonnull @_QQcl.b6309b44344902b4fb78d703ce67f353, i32 21, i32 0, ptr null)
  %.unpack1097 = load ptr, ptr @_QFEb.0, align 8, !tbaa !7
  %.unpack1104.unpack.unpack1106 = load i64, ptr @_QFEb.8, align 8, !tbaa !7
  store ptr %.unpack1097, ptr %2, align 8, !tbaa !7
  %.fca.1.gep379 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 1
  store i64 4, ptr %.fca.1.gep379, align 8, !tbaa !7
  %.fca.2.gep381 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep381, align 8, !tbaa !7
  %.fca.3.gep383 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 3
  store i8 1, ptr %.fca.3.gep383, align 4, !tbaa !7
  %.fca.4.gep385 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 4
  store i8 9, ptr %.fca.4.gep385, align 1, !tbaa !7
  %.fca.5.gep387 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep387, align 2, !tbaa !7
  %.fca.6.gep389 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep389, align 1, !tbaa !7
  %.fca.7.0.0.gep391 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 7, i64 0, i64 0
  store i64 1, ptr %.fca.7.0.0.gep391, align 8, !tbaa !7
  %.fca.7.0.1.gep393 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 7, i64 0, i64 1
  store i64 %.unpack1104.unpack.unpack1106, ptr %.fca.7.0.1.gep393, align 8, !tbaa !7
  %.fca.7.0.2.gep395 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %2, i64 0, i32 7, i64 0, i64 2
  store i64 4, ptr %.fca.7.0.2.gep395, align 8, !tbaa !7
  %53 = call i32 @_FortranAMinvalInteger4(ptr nonnull %2, ptr nonnull @_QQcl.b6309b44344902b4fb78d703ce67f353, i32 22, i32 0, ptr null)
  %54 = add i32 %53, %52
  %.unpack1109 = load ptr, ptr @_QFEd.0, align 8, !tbaa !7
  store i32 %54, ptr %.unpack1109, align 4, !tbaa !3
  %55 = load i32, ptr %9, align 4, !tbaa !3
  %56 = add i32 %55, 1
  %57 = icmp sgt i32 %56, 1
  br i1 %57, label %.lr.ph1250, label %._crit_edge1251

.lr.ph1250:                                       ; preds = %._crit_edge
  %58 = zext i32 %56 to i64
  %.unpack1185 = load ptr, ptr @_QFEc, align 16, !tbaa !7
  %.unpack1192.unpack.unpack = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7), align 8, !tbaa !7
  %.unpack1192.unpack.unpack1195 = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 0, i64 1), align 16, !tbaa !7
  %.unpack1192.unpack1193.unpack = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 1), align 16, !tbaa !7
  %59 = sub i64 1, %.unpack1192.unpack.unpack
  %60 = sub i64 2, %.unpack1192.unpack.unpack
  %.unpack1201 = load ptr, ptr @_QFEa.0, align 8, !tbaa !7
  %.unpack1213 = load ptr, ptr @_QFEb.0, align 8, !tbaa !7
  %61 = sub i64 3, %.unpack1192.unpack.unpack
  %62 = xor i64 %.unpack1192.unpack1193.unpack, -1
  br label %63

63:                                               ; preds = %.lr.ph1250, %63
  %indvars.iv = phi i64 [ 2, %.lr.ph1250 ], [ %indvars.iv.next, %63 ]
  %64 = add i64 %indvars.iv, %62
  %65 = mul i64 %64, %.unpack1192.unpack.unpack1195
  %66 = add i64 %59, %65
  %67 = getelementptr i32, ptr %.unpack1185, i64 %66
  %68 = load i32, ptr %67, align 4, !tbaa !3
  %69 = add i64 %60, %65
  %70 = getelementptr i32, ptr %.unpack1185, i64 %69
  %71 = load i32, ptr %70, align 4, !tbaa !3
  %72 = sext i32 %68 to i64
  %73 = add nsw i64 %72, -1
  %74 = getelementptr i32, ptr %.unpack1201, i64 %73
  %75 = load i32, ptr %74, align 4, !tbaa !3
  %76 = sext i32 %71 to i64
  %77 = add nsw i64 %76, -1
  %78 = getelementptr i32, ptr %.unpack1213, i64 %77
  %79 = load i32, ptr %78, align 4, !tbaa !3
  %80 = add i32 %79, %75
  %81 = add i64 %61, %65
  %82 = getelementptr i32, ptr %.unpack1185, i64 %81
  %83 = load i32, ptr %82, align 4, !tbaa !3
  %84 = sub i32 %80, %83
  %85 = add nsw i64 %indvars.iv, -1
  %86 = getelementptr i32, ptr %.unpack1109, i64 %85
  store i32 %84, ptr %86, align 4, !tbaa !3
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv, %58
  br i1 %exitcond.not, label %._crit_edge1251, label %63

._crit_edge1251:                                  ; preds = %63, %._crit_edge
  %87 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.b6309b44344902b4fb78d703ce67f353, i32 32)
  %.unpack1121 = load ptr, ptr @_QFEd.0, align 8, !tbaa !7
  %.unpack1128.unpack.unpack1130 = load i64, ptr @_QFEd.8, align 8, !tbaa !7
  store ptr %.unpack1121, ptr %1, align 8, !tbaa !7
  %.fca.1.gep459 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 1
  store i64 4, ptr %.fca.1.gep459, align 8, !tbaa !7
  %.fca.2.gep461 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 2
  store i32 20180515, ptr %.fca.2.gep461, align 8, !tbaa !7
  %.fca.3.gep463 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 3
  store i8 1, ptr %.fca.3.gep463, align 4, !tbaa !7
  %.fca.4.gep465 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 4
  store i8 9, ptr %.fca.4.gep465, align 1, !tbaa !7
  %.fca.5.gep467 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 5
  store i8 0, ptr %.fca.5.gep467, align 2, !tbaa !7
  %.fca.6.gep469 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 6
  store i8 0, ptr %.fca.6.gep469, align 1, !tbaa !7
  %.fca.7.0.0.gep471 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 7, i64 0, i64 0
  store i64 1, ptr %.fca.7.0.0.gep471, align 8, !tbaa !7
  %.fca.7.0.1.gep473 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 7, i64 0, i64 1
  store i64 %.unpack1128.unpack.unpack1130, ptr %.fca.7.0.1.gep473, align 8, !tbaa !7
  %.fca.7.0.2.gep475 = getelementptr inbounds { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr %1, i64 0, i32 7, i64 0, i64 2
  store i64 4, ptr %.fca.7.0.2.gep475, align 8, !tbaa !7
  %88 = call i32 @_FortranAMinvalInteger4(ptr nonnull %1, ptr nonnull @_QQcl.b6309b44344902b4fb78d703ce67f353, i32 32, i32 0, ptr null)
  %89 = call i1 @_FortranAioOutputInteger32(ptr %87, i32 %88)
  %90 = call i32 @_FortranAioEndIoStatement(ptr %87)
  %.unpack1133 = load ptr, ptr @_QFEa.0, align 8, !tbaa !7
  call void @free(ptr %.unpack1133)
  store ptr null, ptr @_QFEa.0, align 8, !tbaa !7
  store i64 0, ptr @_QFEa.8, align 8, !tbaa !7
  %.unpack1145 = load ptr, ptr @_QFEb.0, align 8, !tbaa !7
  call void @free(ptr %.unpack1145)
  store ptr null, ptr @_QFEb.0, align 8, !tbaa !7
  store i64 0, ptr @_QFEb.8, align 8, !tbaa !7
  %.unpack1157 = load ptr, ptr @_QFEc, align 16, !tbaa !7
  call void @free(ptr %.unpack1157)
  store ptr null, ptr @_QFEc, align 16, !tbaa !7
  store i64 4, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 1), align 8, !tbaa !7
  store i32 20180515, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 2), align 16, !tbaa !7
  store i8 2, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 3), align 4, !tbaa !7
  store i8 9, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 4), align 1, !tbaa !7
  store i8 2, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 5), align 2, !tbaa !7
  store i8 0, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 6), align 1, !tbaa !7
  store i64 1, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7), align 8, !tbaa !7
  store i64 0, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 0, i64 1), align 16, !tbaa !7
  store i64 4, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 0, i64 2), align 8, !tbaa !7
  store i64 1, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 1), align 16, !tbaa !7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [2 x [3 x i64]] }, ptr @_QFEc, i64 0, i32 7, i64 1, i64 1), i8 0, i64 16, i1 false)
  %.unpack1173 = load ptr, ptr @_QFEd.0, align 8, !tbaa !7
  call void @free(ptr %.unpack1173)
  store ptr null, ptr @_QFEd.0, align 8, !tbaa !7
  store i64 0, ptr @_QFEd.8, align 8, !tbaa !7
  %91 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable
}

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 i1 @_FortranAioInputDescriptor(ptr, ptr) local_unnamed_addr

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

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

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #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 nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #1 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #2 = { noreturn }
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 = !{!"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}
