module mod_t_list
  implicit none
  type :: t_list
    integer :: vol
    integer, pointer :: arr(:)
  end type t_list
  private
  public :: t_list, init_list, release_list, push_back
  public :: pop_back, poll_back, get_at, size_of_list
contains
  subroutine init_list(list)
    implicit none
    type(t_list), intent(inout) :: list
    list%vol = 0
    nullify(list%arr)
    allocate(list%arr(1))
    return
  end subroutine init_list
  subroutine release_list(list)
    implicit none
    type(t_list), intent(inout) :: list
    if (associated(list%arr)) deallocate(list%arr)
    return
  end subroutine release_list
  subroutine push_back(list,n)
    implicit none
    type(t_list), intent(inout) :: list
    integer, intent(in) :: n
    integer, allocatable :: tmp(:)
    if (size(list%arr).eq.list%vol) then
      allocate(tmp(list%vol))
      tmp = list%arr
      deallocate(list%arr)
      allocate(list%arr(2*list%vol))
      list%arr(1:list%vol) = tmp
      deallocate(tmp)
    end if
    list%vol = list%vol+1
    list%arr(list%vol) = n
    return
  end subroutine push_back
  function pop_back(list) result(n)
    implicit none
    type(t_list), intent(inout) :: list
    integer :: n
    n = list%arr(list%vol)
    list%vol = list%vol-1
    return
  end function pop_back
  subroutine poll_back(list)
    implicit none
    type(t_list), intent(inout) :: list
    list%vol = list%vol-1
    return
  end subroutine poll_back
  function get_at(list,i) result(n)
    implicit none
    type(t_list), intent(in) :: list
    integer, intent(in) :: i
    integer :: n
    n = list%arr(i)
    return
  end function get_at
  function size_of_list(list) result(s)
    implicit none
    type(t_list), intent(in) :: list
    integer :: s
    s = list%vol
    return
  end function size_of_list
end module mod_t_list
program crossing
  use mod_t_list
  implicit none
  type(t_list) :: ilist(0:450), jlist(0:450)
  integer :: n, m, i, j, s
  s = 0
  read(*,*) n
  m = (nint(sqrt(8.d0*real(n,8)+1.d0))-1)/2
  if (n.ne.m*(m+1)/2) then
    write(*,'(a)') "No"
    stop
  end if
  do i = 0, 450
    call init_list(ilist(i))
    call init_list(jlist(i))
  end do
  write(*,'(a)') "Yes"
  write(*,'(i0)') m+1
  s = 0
  write(*,'(i0)',advance='no') m
  do i = 1, m
    do j = 1, i
      call push_back(ilist(i),s+j)
      if (j.ne.i) call push_back(jlist(j),s+j)
    end do
    s = s+i
    write(*,'(x,i0)',advance='no') s
  end do
  write(*,*)
  do i = 1, m
    write(*,'(i0)',advance='no') m
    do j = 1, size_of_list(ilist(i))
      write(*,'(x,i0)',advance='no') get_at(ilist(i),j)
    end do
    do j = 1, size_of_list(jlist(i))
      write(*,'(x,i0)',advance='no') get_at(jlist(i),j)
    end do
    write(*,*)
  end do
  do i = 0, 450
    call release_list(ilist(i))
    call release_list(jlist(i))
  end do
  stop
end program crossing
; 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"

%_QMmod_t_listTt_list = type { i32, { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] } }

@_QQcl.654ef1768042738e39c7b0ee30987008 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_5399/source.f\00"
@_QFEilist = internal global [451 x %_QMmod_t_listTt_list] undef
@_QFEjlist = internal global [451 x %_QMmod_t_listTt_list] undef
@_QQcl.286129 = linkonce constant [3 x i8] c"(a)"
@_QQcl.4E6F = linkonce constant [2 x i8] c"No"
@_QQcl.596573 = linkonce constant [3 x i8] c"Yes"
@_QQcl.28693029 = linkonce constant [4 x i8] c"(i0)"
@_QQcl.6E6F = linkonce constant [2 x i8] c"no"
@_QQcl.28782C693029 = linkonce constant [6 x i8] c"(x,i0)"
@_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: mustprogress nofree nounwind willreturn memory(argmem: write, inaccessiblemem: readwrite)
define void @_QMmod_t_listPinit_list(ptr nocapture writeonly %0) local_unnamed_addr #2 {
  store i32 0, ptr %0, align 4, !tbaa !3
  %2 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1
  %.repack41 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 1
  %.repack42 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 2
  %.repack43 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 3
  %.repack44 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 4
  %.repack45 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 5
  %.repack46 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 6
  %.repack47 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7
  %.repack47.repack48 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 1
  %.repack47.repack49 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 2
  %3 = tail call dereferenceable_or_null(4) ptr @malloc(i64 4)
  store ptr %3, ptr %2, align 8, !tbaa !7
  store i64 4, ptr %.repack41, align 8, !tbaa !7
  store i32 20180515, ptr %.repack42, align 8, !tbaa !7
  store i8 1, ptr %.repack43, align 4, !tbaa !7
  store i8 9, ptr %.repack44, align 1, !tbaa !7
  store i8 1, ptr %.repack45, align 2, !tbaa !7
  store i8 0, ptr %.repack46, align 1, !tbaa !7
  store i64 1, ptr %.repack47, align 8, !tbaa !7
  store i64 1, ptr %.repack47.repack48, align 8, !tbaa !7
  store i64 4, ptr %.repack47.repack49, align 8, !tbaa !7
  ret void
}

; Function Attrs: mustprogress nounwind willreturn
define void @_QMmod_t_listPrelease_list(ptr nocapture %0) local_unnamed_addr #3 {
  %2 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1
  %.unpack = load ptr, ptr %2, align 8, !tbaa !7
  %.not = icmp eq ptr %.unpack, null
  br i1 %.not, label %4, label %3

3:                                                ; preds = %1
  tail call void @free(ptr nonnull %.unpack)
  store ptr null, ptr %2, align 8, !tbaa !7
  %.repack57 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 1
  store i64 4, ptr %.repack57, align 8, !tbaa !7
  %.repack58 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 2
  store i32 20180515, ptr %.repack58, align 8, !tbaa !7
  %.repack59 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 3
  store i8 1, ptr %.repack59, align 4, !tbaa !7
  %.repack60 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 4
  store i8 9, ptr %.repack60, align 1, !tbaa !7
  %.repack61 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 5
  store i8 1, ptr %.repack61, align 2, !tbaa !7
  %.repack62 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 6
  store i8 0, ptr %.repack62, align 1, !tbaa !7
  %.repack63 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7
  store i64 1, ptr %.repack63, align 8, !tbaa !7
  %.repack63.repack64 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 1
  store i64 0, ptr %.repack63.repack64, align 8, !tbaa !7
  %.repack63.repack65 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 2
  store i64 4, ptr %.repack63.repack65, align 8, !tbaa !7
  br label %4

4:                                                ; preds = %3, %1
  ret void
}

; Function Attrs: nounwind
define void @_QMmod_t_listPpush_back(ptr nocapture %0, ptr nocapture readonly %1) local_unnamed_addr #4 {
  %3 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1
  %.unpack171.unpack.elt173 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 1
  %.unpack171.unpack.unpack174 = load i64, ptr %.unpack171.unpack.elt173, align 8, !tbaa !7
  %4 = trunc i64 %.unpack171.unpack.unpack174 to i32
  %5 = load i32, ptr %0, align 4, !tbaa !3
  %6 = icmp eq i32 %5, %4
  br i1 %6, label %7, label %138

7:                                                ; preds = %2
  %8 = tail call i32 @llvm.smax.i32(i32 %4, i32 0)
  %9 = zext i32 %8 to i64
  %10 = shl nuw nsw i64 %9, 2
  %11 = tail call ptr @malloc(i64 %10)
  %.unpack198 = load ptr, ptr %3, align 8, !tbaa !7
  %.unpack212.unpack.elt216 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 2
  %.unpack212.unpack.unpack217 = load i64, ptr %.unpack212.unpack.elt216, align 8, !tbaa !7
  %.not = icmp eq ptr %11, null
  br i1 %.not, label %68, label %12

12:                                               ; preds = %7
  %.not267 = icmp eq i64 %.unpack171.unpack.unpack174, %9
  %13 = shl i64 %.unpack171.unpack.unpack174, 2
  %14 = tail call ptr @malloc(i64 %13)
  %15 = icmp sgt i64 %.unpack171.unpack.unpack174, 0
  br i1 %.not267, label %39, label %16

16:                                               ; preds = %12
  br i1 %15, label %.lr.ph.preheader, label %.loopexit.thread290

.lr.ph.preheader:                                 ; preds = %16
  %xtraiter = and i64 %.unpack171.unpack.unpack174, 3
  %17 = icmp ult i64 %.unpack171.unpack.unpack174, 4
  br i1 %17, label %.loopexit.loopexit298.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %.unpack171.unpack.unpack174, -4
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %18 = phi i64 [ 0, %.lr.ph.preheader.new ], [ %37, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %19 = mul i64 %18, %.unpack212.unpack.unpack217
  %20 = getelementptr i8, ptr %.unpack198, i64 %19
  %21 = load i32, ptr %20, align 4, !tbaa !3
  %22 = or i64 %18, 1
  %23 = getelementptr i32, ptr %14, i64 %18
  store i32 %21, ptr %23, align 4, !tbaa !3
  %24 = mul i64 %22, %.unpack212.unpack.unpack217
  %25 = getelementptr i8, ptr %.unpack198, i64 %24
  %26 = load i32, ptr %25, align 4, !tbaa !3
  %27 = or i64 %18, 2
  %28 = getelementptr i32, ptr %14, i64 %22
  store i32 %26, ptr %28, align 4, !tbaa !3
  %29 = mul i64 %27, %.unpack212.unpack.unpack217
  %30 = getelementptr i8, ptr %.unpack198, i64 %29
  %31 = load i32, ptr %30, align 4, !tbaa !3
  %32 = or i64 %18, 3
  %33 = getelementptr i32, ptr %14, i64 %27
  store i32 %31, ptr %33, align 4, !tbaa !3
  %34 = mul i64 %32, %.unpack212.unpack.unpack217
  %35 = getelementptr i8, ptr %.unpack198, i64 %34
  %36 = load i32, ptr %35, align 4, !tbaa !3
  %37 = add nuw nsw i64 %18, 4
  %38 = getelementptr i32, ptr %14, i64 %32
  store i32 %36, ptr %38, align 4, !tbaa !3
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit.loopexit298.unr-lcssa, label %.lr.ph

39:                                               ; preds = %12
  br i1 %15, label %.lr.ph277.preheader, label %.thread

.lr.ph277.preheader:                              ; preds = %39
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr nonnull align 4 %11, i64 %13, i1 false), !tbaa !3
  %xtraiter299 = and i64 %.unpack171.unpack.unpack174, 3
  %40 = icmp ult i64 %.unpack171.unpack.unpack174, 4
  br i1 %40, label %.preheader273.unr-lcssa, label %.lr.ph277.preheader.new

.lr.ph277.preheader.new:                          ; preds = %.lr.ph277.preheader
  %unroll_iter303 = and i64 %.unpack171.unpack.unpack174, -4
  br label %.lr.ph277

.preheader273.unr-lcssa:                          ; preds = %.lr.ph277, %.lr.ph277.preheader
  %.unr301 = phi i64 [ 0, %.lr.ph277.preheader ], [ %66, %.lr.ph277 ]
  %lcmp.mod302.not = icmp eq i64 %xtraiter299, 0
  br i1 %lcmp.mod302.not, label %.preheader273, label %.lr.ph277.epil

.lr.ph277.epil:                                   ; preds = %.preheader273.unr-lcssa, %.lr.ph277.epil
  %41 = phi i64 [ %45, %.lr.ph277.epil ], [ %.unr301, %.preheader273.unr-lcssa ]
  %epil.iter300 = phi i64 [ %epil.iter300.next, %.lr.ph277.epil ], [ 0, %.preheader273.unr-lcssa ]
  %42 = mul i64 %41, %.unpack212.unpack.unpack217
  %43 = getelementptr i8, ptr %.unpack198, i64 %42
  %44 = load i32, ptr %43, align 4, !tbaa !3
  %45 = add nuw nsw i64 %41, 1
  %46 = getelementptr i32, ptr %14, i64 %41
  store i32 %44, ptr %46, align 4, !tbaa !3
  %epil.iter300.next = add i64 %epil.iter300, 1
  %epil.iter300.cmp.not = icmp eq i64 %epil.iter300.next, %xtraiter299
  br i1 %epil.iter300.cmp.not, label %.preheader273, label %.lr.ph277.epil, !llvm.loop !9

.preheader273:                                    ; preds = %.lr.ph277.epil, %.preheader273.unr-lcssa
  br i1 %15, label %.lr.ph278.preheader, label %.thread

.lr.ph278.preheader:                              ; preds = %.preheader273
  tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %11, ptr nonnull align 4 %14, i64 %13, i1 false), !tbaa !3
  br label %.thread

.lr.ph277:                                        ; preds = %.lr.ph277, %.lr.ph277.preheader.new
  %47 = phi i64 [ 0, %.lr.ph277.preheader.new ], [ %66, %.lr.ph277 ]
  %niter304 = phi i64 [ 0, %.lr.ph277.preheader.new ], [ %niter304.next.3, %.lr.ph277 ]
  %48 = mul i64 %47, %.unpack212.unpack.unpack217
  %49 = getelementptr i8, ptr %.unpack198, i64 %48
  %50 = load i32, ptr %49, align 4, !tbaa !3
  %51 = or i64 %47, 1
  %52 = getelementptr i32, ptr %14, i64 %47
  store i32 %50, ptr %52, align 4, !tbaa !3
  %53 = mul i64 %51, %.unpack212.unpack.unpack217
  %54 = getelementptr i8, ptr %.unpack198, i64 %53
  %55 = load i32, ptr %54, align 4, !tbaa !3
  %56 = or i64 %47, 2
  %57 = getelementptr i32, ptr %14, i64 %51
  store i32 %55, ptr %57, align 4, !tbaa !3
  %58 = mul i64 %56, %.unpack212.unpack.unpack217
  %59 = getelementptr i8, ptr %.unpack198, i64 %58
  %60 = load i32, ptr %59, align 4, !tbaa !3
  %61 = or i64 %47, 3
  %62 = getelementptr i32, ptr %14, i64 %56
  store i32 %60, ptr %62, align 4, !tbaa !3
  %63 = mul i64 %61, %.unpack212.unpack.unpack217
  %64 = getelementptr i8, ptr %.unpack198, i64 %63
  %65 = load i32, ptr %64, align 4, !tbaa !3
  %66 = add nuw nsw i64 %47, 4
  %67 = getelementptr i32, ptr %14, i64 %61
  store i32 %65, ptr %67, align 4, !tbaa !3
  %niter304.next.3 = add i64 %niter304, 4
  %niter304.ncmp.3 = icmp eq i64 %niter304.next.3, %unroll_iter303
  br i1 %niter304.ncmp.3, label %.preheader273.unr-lcssa, label %.lr.ph277

.thread:                                          ; preds = %39, %.lr.ph278.preheader, %.preheader273
  tail call void @free(ptr %14)
  br label %.loopexit.thread

68:                                               ; preds = %7
  %69 = shl i64 %.unpack171.unpack.unpack174, 2
  %70 = tail call ptr @malloc(i64 %69)
  %71 = icmp sgt i64 %.unpack171.unpack.unpack174, 0
  br i1 %71, label %.lr.ph279.preheader, label %.loopexit.thread

.lr.ph279.preheader:                              ; preds = %68
  %xtraiter305 = and i64 %.unpack171.unpack.unpack174, 3
  %72 = icmp ult i64 %.unpack171.unpack.unpack174, 4
  br i1 %72, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph279.preheader.new

.lr.ph279.preheader.new:                          ; preds = %.lr.ph279.preheader
  %unroll_iter309 = and i64 %.unpack171.unpack.unpack174, -4
  br label %.lr.ph279

.lr.ph279:                                        ; preds = %.lr.ph279, %.lr.ph279.preheader.new
  %73 = phi i64 [ 0, %.lr.ph279.preheader.new ], [ %92, %.lr.ph279 ]
  %niter310 = phi i64 [ 0, %.lr.ph279.preheader.new ], [ %niter310.next.3, %.lr.ph279 ]
  %74 = mul i64 %73, %.unpack212.unpack.unpack217
  %75 = getelementptr i8, ptr %.unpack198, i64 %74
  %76 = load i32, ptr %75, align 4, !tbaa !3
  %77 = or i64 %73, 1
  %78 = getelementptr i32, ptr %70, i64 %73
  store i32 %76, ptr %78, align 4, !tbaa !3
  %79 = mul i64 %77, %.unpack212.unpack.unpack217
  %80 = getelementptr i8, ptr %.unpack198, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !3
  %82 = or i64 %73, 2
  %83 = getelementptr i32, ptr %70, i64 %77
  store i32 %81, ptr %83, align 4, !tbaa !3
  %84 = mul i64 %82, %.unpack212.unpack.unpack217
  %85 = getelementptr i8, ptr %.unpack198, i64 %84
  %86 = load i32, ptr %85, align 4, !tbaa !3
  %87 = or i64 %73, 3
  %88 = getelementptr i32, ptr %70, i64 %82
  store i32 %86, ptr %88, align 4, !tbaa !3
  %89 = mul i64 %87, %.unpack212.unpack.unpack217
  %90 = getelementptr i8, ptr %.unpack198, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !3
  %92 = add nuw nsw i64 %73, 4
  %93 = getelementptr i32, ptr %70, i64 %87
  store i32 %91, ptr %93, align 4, !tbaa !3
  %niter310.next.3 = add i64 %niter310, 4
  %niter310.ncmp.3 = icmp eq i64 %niter310.next.3, %unroll_iter309
  br i1 %niter310.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph279

.loopexit.loopexit.unr-lcssa:                     ; preds = %.lr.ph279, %.lr.ph279.preheader
  %.unr307 = phi i64 [ 0, %.lr.ph279.preheader ], [ %92, %.lr.ph279 ]
  %lcmp.mod308.not = icmp eq i64 %xtraiter305, 0
  br i1 %lcmp.mod308.not, label %.loopexit, label %.lr.ph279.epil

.lr.ph279.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa, %.lr.ph279.epil
  %94 = phi i64 [ %98, %.lr.ph279.epil ], [ %.unr307, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter306 = phi i64 [ %epil.iter306.next, %.lr.ph279.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %95 = mul i64 %94, %.unpack212.unpack.unpack217
  %96 = getelementptr i8, ptr %.unpack198, i64 %95
  %97 = load i32, ptr %96, align 4, !tbaa !3
  %98 = add nuw nsw i64 %94, 1
  %99 = getelementptr i32, ptr %70, i64 %94
  store i32 %97, ptr %99, align 4, !tbaa !3
  %epil.iter306.next = add i64 %epil.iter306, 1
  %epil.iter306.cmp.not = icmp eq i64 %epil.iter306.next, %xtraiter305
  br i1 %epil.iter306.cmp.not, label %.loopexit, label %.lr.ph279.epil, !llvm.loop !11

.loopexit.loopexit298.unr-lcssa:                  ; preds = %.lr.ph, %.lr.ph.preheader
  %.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %37, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %.loopexit.loopexit298.unr-lcssa, %.lr.ph.epil
  %100 = phi i64 [ %104, %.lr.ph.epil ], [ %.unr, %.loopexit.loopexit298.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %.loopexit.loopexit298.unr-lcssa ]
  %101 = mul i64 %100, %.unpack212.unpack.unpack217
  %102 = getelementptr i8, ptr %.unpack198, i64 %101
  %103 = load i32, ptr %102, align 4, !tbaa !3
  %104 = add nuw nsw i64 %100, 1
  %105 = getelementptr i32, ptr %14, i64 %100
  store i32 %103, ptr %105, align 4, !tbaa !3
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.lr.ph.epil, !llvm.loop !12

.loopexit:                                        ; preds = %.loopexit.loopexit298.unr-lcssa, %.lr.ph.epil, %.loopexit.loopexit.unr-lcssa, %.lr.ph279.epil
  %106 = phi ptr [ %70, %.lr.ph279.epil ], [ %70, %.loopexit.loopexit.unr-lcssa ], [ %14, %.lr.ph.epil ], [ %14, %.loopexit.loopexit298.unr-lcssa ]
  br i1 %.not, label %.loopexit.thread, label %.loopexit.thread290

.loopexit.thread290:                              ; preds = %16, %.loopexit
  %107 = phi ptr [ %106, %.loopexit ], [ %14, %16 ]
  tail call void @free(ptr nonnull %11)
  br label %.loopexit.thread

.loopexit.thread:                                 ; preds = %68, %.thread, %.loopexit, %.loopexit.thread290
  %.0148 = phi ptr [ %106, %.loopexit ], [ %107, %.loopexit.thread290 ], [ %11, %.thread ], [ %70, %68 ]
  %.0148293 = ptrtoint ptr %.0148 to i64
  tail call void @free(ptr %.unpack198)
  %.repack240 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 1
  %.repack241 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 2
  %.repack242 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 3
  %.repack243 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 4
  %.repack244 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 5
  %.repack245 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 6
  %.repack246 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7
  %108 = load i32, ptr %0, align 4, !tbaa !3
  %109 = shl i32 %108, 1
  %110 = tail call i32 @llvm.smax.i32(i32 %109, i32 0)
  %111 = zext i32 %110 to i64
  %112 = shl nuw nsw i64 %111, 2
  %113 = tail call ptr @malloc(i64 %112)
  store ptr %113, ptr %3, align 8, !tbaa !7
  store i64 4, ptr %.repack240, align 8, !tbaa !7
  store i32 20180515, ptr %.repack241, align 8, !tbaa !7
  store i8 1, ptr %.repack242, align 4, !tbaa !7
  store i8 9, ptr %.repack243, align 1, !tbaa !7
  store i8 1, ptr %.repack244, align 2, !tbaa !7
  store i8 0, ptr %.repack245, align 1, !tbaa !7
  store i64 1, ptr %.repack246, align 8, !tbaa !7
  store i64 %111, ptr %.unpack171.unpack.elt173, align 8, !tbaa !7
  store i64 4, ptr %.unpack212.unpack.elt216, align 8, !tbaa !7
  %114 = tail call i32 @llvm.smax.i32(i32 %108, i32 0)
  %115 = zext i32 %114 to i64
  %116 = tail call ptr @malloc(i64 %112)
  %117 = ptrtoint ptr %116 to i64
  %.not283 = icmp slt i32 %109, 1
  br i1 %.not283, label %.preheader272, label %.lr.ph280.preheader

.lr.ph280.preheader:                              ; preds = %.loopexit.thread
  %118 = or i64 %111, 1
  %smin = tail call i64 @llvm.smin.i64(i64 %111, i64 1)
  %119 = sub nuw nsw i64 %118, %smin
  %120 = shl nuw nsw i64 %119, 2
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %116, ptr align 4 %113, i64 %120, i1 false), !tbaa !3
  br label %.preheader272

.preheader272:                                    ; preds = %.lr.ph280.preheader, %.loopexit.thread
  %.not284 = icmp slt i32 %108, 1
  br i1 %.not284, label %.preheader, label %.lr.ph281.preheader

.lr.ph281.preheader:                              ; preds = %.preheader272
  %min.iters.check = icmp ult i32 %114, 8
  %121 = sub i64 %117, %.0148293
  %diff.check = icmp ult i64 %121, 32
  %or.cond = or i1 %min.iters.check, %diff.check
  br i1 %or.cond, label %.lr.ph281.preheader296, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph281.preheader
  %n.vec = and i64 %115, 2147483640
  %ind.end = and i64 %115, 7
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %122 = getelementptr i32, ptr %.0148, i64 %index
  %wide.load = load <4 x i32>, ptr %122, align 4, !tbaa !3
  %123 = getelementptr i32, ptr %122, i64 4
  %wide.load295 = load <4 x i32>, ptr %123, align 4, !tbaa !3
  %124 = getelementptr i32, ptr %116, i64 %index
  store <4 x i32> %wide.load, ptr %124, align 4, !tbaa !3
  %125 = getelementptr i32, ptr %124, i64 4
  store <4 x i32> %wide.load295, ptr %125, align 4, !tbaa !3
  %index.next = add nuw i64 %index, 8
  %126 = icmp eq i64 %index.next, %n.vec
  br i1 %126, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %115
  br i1 %cmp.n, label %.preheader, label %.lr.ph281.preheader296

.lr.ph281.preheader296:                           ; preds = %.lr.ph281.preheader, %middle.block
  %.ph = phi i64 [ %115, %.lr.ph281.preheader ], [ %ind.end, %middle.block ]
  %.ph297 = phi i64 [ 0, %.lr.ph281.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph281

.preheader:                                       ; preds = %.lr.ph281, %middle.block, %.preheader272
  br i1 %.not283, label %._crit_edge, label %.lr.ph282.preheader

.lr.ph282.preheader:                              ; preds = %.preheader
  %127 = or i64 %111, 1
  %smin289 = tail call i64 @llvm.smin.i64(i64 %111, i64 1)
  %128 = sub nuw nsw i64 %127, %smin289
  %129 = shl nuw nsw i64 %128, 2
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %113, ptr align 4 %116, i64 %129, i1 false), !tbaa !3
  br label %._crit_edge

.lr.ph281:                                        ; preds = %.lr.ph281.preheader296, %.lr.ph281
  %130 = phi i64 [ %136, %.lr.ph281 ], [ %.ph, %.lr.ph281.preheader296 ]
  %131 = phi i64 [ %135, %.lr.ph281 ], [ %.ph297, %.lr.ph281.preheader296 ]
  %132 = getelementptr i32, ptr %.0148, i64 %131
  %133 = load i32, ptr %132, align 4, !tbaa !3
  %134 = getelementptr i32, ptr %116, i64 %131
  store i32 %133, ptr %134, align 4, !tbaa !3
  %135 = add nuw nsw i64 %131, 1
  %136 = add nsw i64 %130, -1
  %137 = icmp ugt i64 %130, 1
  br i1 %137, label %.lr.ph281, label %.preheader, !llvm.loop !16

._crit_edge:                                      ; preds = %.lr.ph282.preheader, %.preheader
  tail call void @free(ptr %116)
  tail call void @free(ptr %.0148)
  %.pre = load i32, ptr %0, align 4, !tbaa !3
  br label %138

138:                                              ; preds = %._crit_edge, %2
  %139 = phi i32 [ %.pre, %._crit_edge ], [ %5, %2 ]
  %140 = add i32 %139, 1
  store i32 %140, ptr %0, align 4, !tbaa !3
  %141 = load i32, ptr %1, align 4, !tbaa !3
  %.unpack = load ptr, ptr %3, align 8, !tbaa !7
  %.elt190 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7
  %.unpack191.unpack.unpack = load i64, ptr %.elt190, align 8, !tbaa !7
  %.unpack191.unpack.elt195 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 2
  %.unpack191.unpack.unpack196 = load i64, ptr %.unpack191.unpack.elt195, align 8, !tbaa !7
  %142 = sext i32 %140 to i64
  %143 = sub i64 %142, %.unpack191.unpack.unpack
  %144 = mul i64 %143, %.unpack191.unpack.unpack196
  %145 = getelementptr i8, ptr %.unpack, i64 %144
  store i32 %141, ptr %145, align 4, !tbaa !3
  ret void
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none)
define i32 @_QMmod_t_listPpop_back(ptr nocapture %0) local_unnamed_addr #5 {
  %2 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1
  %.unpack = load ptr, ptr %2, align 8, !tbaa !7
  %.elt14 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7
  %.unpack15.unpack.unpack = load i64, ptr %.elt14, align 8, !tbaa !7
  %.unpack15.unpack.elt19 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 2
  %.unpack15.unpack.unpack20 = load i64, ptr %.unpack15.unpack.elt19, align 8, !tbaa !7
  %3 = load i32, ptr %0, align 4, !tbaa !3
  %4 = sext i32 %3 to i64
  %5 = sub i64 %4, %.unpack15.unpack.unpack
  %6 = mul i64 %5, %.unpack15.unpack.unpack20
  %7 = getelementptr i8, ptr %.unpack, i64 %6
  %8 = load i32, ptr %7, align 4, !tbaa !3
  %9 = add i32 %3, -1
  store i32 %9, ptr %0, align 4, !tbaa !3
  ret i32 %8
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
define void @_QMmod_t_listPpoll_back(ptr nocapture %0) local_unnamed_addr #6 {
  %2 = load i32, ptr %0, align 4, !tbaa !3
  %3 = add i32 %2, -1
  store i32 %3, ptr %0, align 4, !tbaa !3
  ret void
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none)
define i32 @_QMmod_t_listPget_at(ptr nocapture readonly %0, ptr nocapture readonly %1) local_unnamed_addr #7 {
  %3 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1
  %.unpack = load ptr, ptr %3, align 8, !tbaa !7
  %.elt14 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7
  %.unpack15.unpack.unpack = load i64, ptr %.elt14, align 8, !tbaa !7
  %.unpack15.unpack.elt19 = getelementptr %_QMmod_t_listTt_list, ptr %0, i64 0, i32 1, i32 7, i64 0, i64 2
  %.unpack15.unpack.unpack20 = load i64, ptr %.unpack15.unpack.elt19, align 8, !tbaa !7
  %4 = load i32, ptr %1, align 4, !tbaa !3
  %5 = sext i32 %4 to i64
  %6 = sub i64 %5, %.unpack15.unpack.unpack
  %7 = mul i64 %6, %.unpack15.unpack.unpack20
  %8 = getelementptr i8, ptr %.unpack, i64 %7
  %9 = load i32, ptr %8, align 4, !tbaa !3
  ret i32 %9
}

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read)
define i32 @_QMmod_t_listPsize_of_list(ptr nocapture readonly %0) local_unnamed_addr #8 {
  %2 = load i32, ptr %0, align 4, !tbaa !3
  ret i32 %2
}

; Function Attrs: noreturn
define void @_QQmain() local_unnamed_addr #9 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 78)
  %5 = call i1 @_FortranAioInputInteger(ptr %4, ptr nonnull %3, i32 4)
  %6 = call i32 @_FortranAioEndIoStatement(ptr %4)
  %7 = load i32, ptr %3, align 4, !tbaa !3
  %8 = sitofp i32 %7 to double
  %9 = fmul contract double %8, 8.000000e+00
  %10 = fadd contract double %9, 1.000000e+00
  %11 = call contract double @llvm.sqrt.f64(double %10)
  %12 = call i32 @llvm.lround.i32.f64(double %11)
  %13 = add i32 %12, -1
  %14 = sdiv i32 %13, 2
  %15 = add nsw i32 %14, 1
  %16 = mul i32 %15, %14
  %17 = sdiv i32 %16, 2
  %.not = icmp eq i32 %7, %17
  br i1 %.not, label %.preheader67, label %18

18:                                               ; preds = %0
  %19 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 81)
  %20 = call i1 @_FortranAioOutputAscii(ptr %19, ptr nonnull @_QQcl.4E6F, i64 2)
  %21 = call i32 @_FortranAioEndIoStatement(ptr %19)
  %22 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

.preheader67:                                     ; preds = %0, %.preheader67
  %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader67 ], [ 0, %0 ]
  %23 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv
  store i32 0, ptr %23, align 8, !tbaa !3
  %24 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1
  %.repack41.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 1
  %.repack42.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 2
  %.repack43.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 3
  %.repack44.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 4
  %.repack45.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 5
  %.repack46.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 6
  %.repack47.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 7
  %.repack47.repack48.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 7, i64 0, i64 1
  %.repack47.repack49.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv, i32 1, i32 7, i64 0, i64 2
  %25 = call dereferenceable_or_null(4) ptr @malloc(i64 4)
  store ptr %25, ptr %24, align 8, !tbaa !7
  store i64 4, ptr %.repack41.i, align 8, !tbaa !7
  store i32 20180515, ptr %.repack42.i, align 8, !tbaa !7
  store i8 1, ptr %.repack43.i, align 4, !tbaa !7
  store i8 9, ptr %.repack44.i, align 1, !tbaa !7
  store i8 1, ptr %.repack45.i, align 2, !tbaa !7
  store i8 0, ptr %.repack46.i, align 1, !tbaa !7
  store i64 1, ptr %.repack47.i, align 8, !tbaa !7
  store i64 1, ptr %.repack47.repack48.i, align 8, !tbaa !7
  store i64 4, ptr %.repack47.repack49.i, align 8, !tbaa !7
  %26 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv
  store i32 0, ptr %26, align 8, !tbaa !3
  %27 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1
  %.repack41.i35 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 1
  %.repack42.i36 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 2
  %.repack43.i37 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 3
  %.repack44.i38 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 4
  %.repack45.i39 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 5
  %.repack46.i40 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 6
  %.repack47.i41 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 7
  %.repack47.repack48.i42 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 7, i64 0, i64 1
  %.repack47.repack49.i43 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv, i32 1, i32 7, i64 0, i64 2
  %28 = call dereferenceable_or_null(4) ptr @malloc(i64 4)
  store ptr %28, ptr %27, align 8, !tbaa !7
  store i64 4, ptr %.repack41.i35, align 8, !tbaa !7
  store i32 20180515, ptr %.repack42.i36, align 8, !tbaa !7
  store i8 1, ptr %.repack43.i37, align 4, !tbaa !7
  store i8 9, ptr %.repack44.i38, align 1, !tbaa !7
  store i8 1, ptr %.repack45.i39, align 2, !tbaa !7
  store i8 0, ptr %.repack46.i40, align 1, !tbaa !7
  store i64 1, ptr %.repack47.i41, align 8, !tbaa !7
  store i64 1, ptr %.repack47.repack48.i42, align 8, !tbaa !7
  store i64 4, ptr %.repack47.repack49.i43, align 8, !tbaa !7
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 451
  br i1 %exitcond.not, label %29, label %.preheader67

29:                                               ; preds = %.preheader67
  %30 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.286129, i64 3, ptr null, i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 88)
  %31 = call i1 @_FortranAioOutputAscii(ptr %30, ptr nonnull @_QQcl.596573, i64 3)
  %32 = call i32 @_FortranAioEndIoStatement(ptr %30)
  %33 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28693029, i64 4, ptr null, i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 89)
  %34 = call i1 @_FortranAioOutputInteger32(ptr %33, i32 %15)
  %35 = call i32 @_FortranAioEndIoStatement(ptr %33)
  %36 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28693029, i64 4, ptr null, i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 91)
  %37 = call i1 @_FortranAioSetAdvance(ptr %36, ptr nonnull @_QQcl.6E6F, i64 2)
  %38 = call i1 @_FortranAioOutputInteger32(ptr %36, i32 %14)
  %39 = call i32 @_FortranAioEndIoStatement(ptr %36)
  %40 = sext i32 %14 to i64
  %41 = icmp sgt i32 %13, 1
  br i1 %41, label %.lr.ph, label %.preheader.critedge

.lr.ph:                                           ; preds = %29, %._crit_edge
  %indvars.iv87 = phi i64 [ %indvars.iv.next88, %._crit_edge ], [ 1, %29 ]
  %indvars.iv84 = phi i64 [ %indvars.iv.next85, %._crit_edge ], [ 2, %29 ]
  %.068 = phi i32 [ %50, %._crit_edge ], [ 0, %29 ]
  %42 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv87
  br label %43

43:                                               ; preds = %.lr.ph, %48
  %indvars.iv81 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next82, %48 ]
  %44 = trunc i64 %indvars.iv81 to i32
  %45 = add i32 %.068, %44
  store i32 %45, ptr %2, align 4, !tbaa !3
  call void @_QMmod_t_listPpush_back(ptr %42, ptr nonnull %2)
  %.not34 = icmp eq i64 %indvars.iv81, %indvars.iv87
  br i1 %.not34, label %48, label %46

46:                                               ; preds = %43
  %47 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv81
  store i32 %45, ptr %1, align 4, !tbaa !3
  call void @_QMmod_t_listPpush_back(ptr %47, ptr nonnull %1)
  br label %48

48:                                               ; preds = %46, %43
  %indvars.iv.next82 = add nuw nsw i64 %indvars.iv81, 1
  %exitcond86.not = icmp eq i64 %indvars.iv.next82, %indvars.iv84
  br i1 %exitcond86.not, label %._crit_edge, label %43

._crit_edge:                                      ; preds = %48
  %49 = trunc i64 %indvars.iv87 to i32
  %50 = add i32 %.068, %49
  %51 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28782C693029, i64 6, ptr null, i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 98)
  %52 = call i1 @_FortranAioSetAdvance(ptr %51, ptr nonnull @_QQcl.6E6F, i64 2)
  %53 = call i1 @_FortranAioOutputInteger32(ptr %51, i32 %50)
  %54 = call i32 @_FortranAioEndIoStatement(ptr %51)
  %indvars.iv.next88 = add nuw nsw i64 %indvars.iv87, 1
  %indvars.iv.next85 = add nuw nsw i64 %indvars.iv84, 1
  %exitcond90.not = icmp eq i64 %indvars.iv87, %40
  br i1 %exitcond90.not, label %._crit_edge71, label %.lr.ph

._crit_edge71:                                    ; preds = %._crit_edge
  %55 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 100)
  %56 = call i32 @_FortranAioEndIoStatement(ptr %55)
  br i1 %41, label %.lr.ph79, label %.preheader.preheader

.preheader.critedge:                              ; preds = %29
  %57 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 100)
  %58 = call i32 @_FortranAioEndIoStatement(ptr %57)
  br label %.preheader.preheader

.lr.ph79:                                         ; preds = %._crit_edge71, %._crit_edge77
  %indvars.iv99 = phi i64 [ %indvars.iv.next100, %._crit_edge77 ], [ 1, %._crit_edge71 ]
  %59 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28693029, i64 4, ptr null, i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 102)
  %60 = call i1 @_FortranAioSetAdvance(ptr %59, ptr nonnull @_QQcl.6E6F, i64 2)
  %61 = call i1 @_FortranAioOutputInteger32(ptr %59, i32 %14)
  %62 = call i32 @_FortranAioEndIoStatement(ptr %59)
  %63 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv99
  %64 = load i32, ptr %63, align 8, !tbaa !3
  %65 = icmp sgt i32 %64, 0
  br i1 %65, label %.lr.ph73, label %._crit_edge74

.lr.ph73:                                         ; preds = %.lr.ph79
  %66 = zext i32 %64 to i64
  %67 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv99, i32 1
  %.elt14.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv99, i32 1, i32 7
  %.unpack15.unpack.elt19.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv99, i32 1, i32 7, i64 0, i64 2
  br label %68

68:                                               ; preds = %.lr.ph73, %68
  %indvars.iv91 = phi i64 [ 1, %.lr.ph73 ], [ %indvars.iv.next92, %68 ]
  %69 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28782C693029, i64 6, ptr null, i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 104)
  %70 = call i1 @_FortranAioSetAdvance(ptr %69, ptr nonnull @_QQcl.6E6F, i64 2)
  %.unpack.i = load ptr, ptr %67, align 8, !tbaa !7
  %.unpack15.unpack.unpack.i = load i64, ptr %.elt14.i, align 8, !tbaa !7
  %.unpack15.unpack.unpack20.i = load i64, ptr %.unpack15.unpack.elt19.i, align 8, !tbaa !7
  %71 = sub i64 %indvars.iv91, %.unpack15.unpack.unpack.i
  %72 = mul i64 %71, %.unpack15.unpack.unpack20.i
  %73 = getelementptr i8, ptr %.unpack.i, i64 %72
  %74 = load i32, ptr %73, align 4, !tbaa !3
  %75 = call i1 @_FortranAioOutputInteger32(ptr %69, i32 %74)
  %76 = call i32 @_FortranAioEndIoStatement(ptr %69)
  %indvars.iv.next92 = add nuw nsw i64 %indvars.iv91, 1
  %exitcond94.not = icmp eq i64 %indvars.iv91, %66
  br i1 %exitcond94.not, label %._crit_edge74, label %68

._crit_edge74:                                    ; preds = %68, %.lr.ph79
  %77 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv99
  %78 = load i32, ptr %77, align 8, !tbaa !3
  %79 = icmp sgt i32 %78, 0
  br i1 %79, label %.lr.ph76, label %._crit_edge77

.lr.ph76:                                         ; preds = %._crit_edge74
  %80 = zext i32 %78 to i64
  %81 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv99, i32 1
  %.elt14.i45 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv99, i32 1, i32 7
  %.unpack15.unpack.elt19.i47 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv99, i32 1, i32 7, i64 0, i64 2
  br label %82

82:                                               ; preds = %.lr.ph76, %82
  %indvars.iv95 = phi i64 [ 1, %.lr.ph76 ], [ %indvars.iv.next96, %82 ]
  %83 = call ptr @_FortranAioBeginExternalFormattedOutput(ptr nonnull @_QQcl.28782C693029, i64 6, ptr null, i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 107)
  %84 = call i1 @_FortranAioSetAdvance(ptr %83, ptr nonnull @_QQcl.6E6F, i64 2)
  %.unpack.i44 = load ptr, ptr %81, align 8, !tbaa !7
  %.unpack15.unpack.unpack.i46 = load i64, ptr %.elt14.i45, align 8, !tbaa !7
  %.unpack15.unpack.unpack20.i48 = load i64, ptr %.unpack15.unpack.elt19.i47, align 8, !tbaa !7
  %85 = sub i64 %indvars.iv95, %.unpack15.unpack.unpack.i46
  %86 = mul i64 %85, %.unpack15.unpack.unpack20.i48
  %87 = getelementptr i8, ptr %.unpack.i44, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !3
  %89 = call i1 @_FortranAioOutputInteger32(ptr %83, i32 %88)
  %90 = call i32 @_FortranAioEndIoStatement(ptr %83)
  %indvars.iv.next96 = add nuw nsw i64 %indvars.iv95, 1
  %exitcond98.not = icmp eq i64 %indvars.iv95, %80
  br i1 %exitcond98.not, label %._crit_edge77, label %82

._crit_edge77:                                    ; preds = %82, %._crit_edge74
  %91 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.654ef1768042738e39c7b0ee30987008, i32 109)
  %92 = call i32 @_FortranAioEndIoStatement(ptr %91)
  %indvars.iv.next100 = add nuw nsw i64 %indvars.iv99, 1
  %exitcond102.not = icmp eq i64 %indvars.iv99, %40
  br i1 %exitcond102.not, label %.preheader.preheader, label %.lr.ph79

.preheader.preheader:                             ; preds = %._crit_edge77, %.preheader.critedge, %._crit_edge71
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %_QMmod_t_listPrelease_list.exit61
  %indvars.iv103 = phi i64 [ %indvars.iv.next104, %_QMmod_t_listPrelease_list.exit61 ], [ 0, %.preheader.preheader ]
  %93 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1
  %.unpack.i49 = load ptr, ptr %93, align 8, !tbaa !7
  %.not.i = icmp eq ptr %.unpack.i49, null
  br i1 %.not.i, label %_QMmod_t_listPrelease_list.exit, label %94

94:                                               ; preds = %.preheader
  call void @free(ptr nonnull %.unpack.i49)
  store ptr null, ptr %93, align 8, !tbaa !7
  %.repack57.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 1
  store i64 4, ptr %.repack57.i, align 8, !tbaa !7
  %.repack58.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 2
  store i32 20180515, ptr %.repack58.i, align 8, !tbaa !7
  %.repack59.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 3
  store i8 1, ptr %.repack59.i, align 4, !tbaa !7
  %.repack60.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 4
  store i8 9, ptr %.repack60.i, align 1, !tbaa !7
  %.repack61.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 5
  store i8 1, ptr %.repack61.i, align 2, !tbaa !7
  %.repack62.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 6
  store i8 0, ptr %.repack62.i, align 1, !tbaa !7
  %.repack63.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 7
  store i64 1, ptr %.repack63.i, align 8, !tbaa !7
  %.repack63.repack64.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 7, i64 0, i64 1
  store i64 0, ptr %.repack63.repack64.i, align 8, !tbaa !7
  %.repack63.repack65.i = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEilist, i64 0, i64 %indvars.iv103, i32 1, i32 7, i64 0, i64 2
  store i64 4, ptr %.repack63.repack65.i, align 8, !tbaa !7
  br label %_QMmod_t_listPrelease_list.exit

_QMmod_t_listPrelease_list.exit:                  ; preds = %.preheader, %94
  %95 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1
  %.unpack.i50 = load ptr, ptr %95, align 8, !tbaa !7
  %.not.i51 = icmp eq ptr %.unpack.i50, null
  br i1 %.not.i51, label %_QMmod_t_listPrelease_list.exit61, label %96

96:                                               ; preds = %_QMmod_t_listPrelease_list.exit
  call void @free(ptr nonnull %.unpack.i50)
  store ptr null, ptr %95, align 8, !tbaa !7
  %.repack57.i52 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 1
  store i64 4, ptr %.repack57.i52, align 8, !tbaa !7
  %.repack58.i53 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 2
  store i32 20180515, ptr %.repack58.i53, align 8, !tbaa !7
  %.repack59.i54 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 3
  store i8 1, ptr %.repack59.i54, align 4, !tbaa !7
  %.repack60.i55 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 4
  store i8 9, ptr %.repack60.i55, align 1, !tbaa !7
  %.repack61.i56 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 5
  store i8 1, ptr %.repack61.i56, align 2, !tbaa !7
  %.repack62.i57 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 6
  store i8 0, ptr %.repack62.i57, align 1, !tbaa !7
  %.repack63.i58 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 7
  store i64 1, ptr %.repack63.i58, align 8, !tbaa !7
  %.repack63.repack64.i59 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 7, i64 0, i64 1
  store i64 0, ptr %.repack63.repack64.i59, align 8, !tbaa !7
  %.repack63.repack65.i60 = getelementptr [451 x %_QMmod_t_listTt_list], ptr @_QFEjlist, i64 0, i64 %indvars.iv103, i32 1, i32 7, i64 0, i64 2
  store i64 4, ptr %.repack63.repack65.i60, align 8, !tbaa !7
  br label %_QMmod_t_listPrelease_list.exit61

_QMmod_t_listPrelease_list.exit61:                ; preds = %_QMmod_t_listPrelease_list.exit, %96
  %indvars.iv.next104 = add nuw nsw i64 %indvars.iv103, 1
  %exitcond106.not = icmp eq i64 %indvars.iv.next104, 451
  br i1 %exitcond106.not, label %97, label %.preheader

97:                                               ; preds = %_QMmod_t_listPrelease_list.exit61
  %98 = 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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.lround.i32.f64(double) #10

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

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

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

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.sqrt.f64(double) #10

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

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

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

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 = { mustprogress nofree nounwind willreturn memory(argmem: write, inaccessiblemem: readwrite) }
attributes #3 = { mustprogress nounwind willreturn }
attributes #4 = { nounwind }
attributes #5 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: readwrite, inaccessiblemem: none) }
attributes #6 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) }
attributes #8 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) }
attributes #9 = { noreturn }
attributes #10 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #12 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }

!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}
!10 = !{!"llvm.loop.unroll.disable"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !14, !15}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !14}
