program abc131b
  integer :: n, l, i
  integer,dimension(:),allocatable :: a
  read *, n, l
  a = [(i,i=l,l+n-1)]
  print *, sum(a)-merge(maxval(a),minval(abs(a)),maxval(a)<0)
end program abc131b

; 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
@_QQcl.cafb68c73610e26d46e4fcd65cf1683d = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_3918/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

define void @_QQmain() local_unnamed_addr {
  %1 = alloca { ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, align 8
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.cafb68c73610e26d46e4fcd65cf1683d, i32 4)
  %5 = call i1 @_FortranAioInputInteger(ptr %4, ptr nonnull %3, i32 4)
  %6 = call i1 @_FortranAioInputInteger(ptr %4, ptr nonnull %2, i32 4)
  %7 = call i32 @_FortranAioEndIoStatement(ptr %4)
  %8 = call dereferenceable_or_null(128) ptr @malloc(i64 128)
  %9 = load i32, ptr %2, align 4, !tbaa !3
  %10 = sext i32 %9 to i64
  %11 = load i32, ptr %3, align 4, !tbaa !3
  %12 = add i32 %9, -1
  %13 = add i32 %12, %11
  %14 = sext i32 %13 to i64
  %15 = sub nsw i64 1, %10
  %16 = add nsw i64 %15, %14
  %17 = icmp sgt i64 %16, 0
  br i1 %17, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %0, %25
  %18 = phi ptr [ %26, %25 ], [ %8, %0 ]
  %19 = phi i32 [ %28, %25 ], [ %9, %0 ]
  %.0335 = phi i64 [ %.1, %25 ], [ 32, %0 ]
  %.0220334 = phi i64 [ %20, %25 ], [ 0, %0 ]
  %20 = add nuw nsw i64 %.0220334, 1
  %.not295 = icmp sgt i64 %.0335, %20
  br i1 %.not295, label %25, label %21

21:                                               ; preds = %.lr.ph
  %22 = shl nuw i64 %20, 1
  %23 = shl i64 %20, 3
  %24 = call ptr @realloc(ptr %18, i64 %23)
  br label %25

25:                                               ; preds = %21, %.lr.ph
  %.1 = phi i64 [ %22, %21 ], [ %.0335, %.lr.ph ]
  %26 = phi ptr [ %24, %21 ], [ %18, %.lr.ph ]
  %27 = getelementptr i32, ptr %26, i64 %.0220334
  store i32 %19, ptr %27, align 4, !tbaa !3
  %28 = add i32 %19, 1
  %exitcond.not = icmp eq i64 %20, %16
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %25, %0
  %.0220.lcssa = phi i64 [ 0, %0 ], [ %16, %25 ]
  %.lcssa333 = phi ptr [ %8, %0 ], [ %26, %25 ]
  %.lcssa333371 = ptrtoint ptr %.lcssa333 to i64
  %.unpack = load ptr, ptr @_QFEa.0, align 8, !tbaa !7
  %.unpack374 = ptrtoint ptr %.unpack to i64
  %.not = icmp eq ptr %.unpack, null
  br i1 %.not, label %98, label %29

29:                                               ; preds = %._crit_edge
  %.unpack233.unpack.unpack235 = load i64, ptr @_QFEa.8, align 8, !tbaa !7
  %.not328 = icmp eq i64 %.unpack233.unpack.unpack235, %.0220.lcssa
  br i1 %.not328, label %.preheader, label %45

.preheader:                                       ; preds = %29
  %30 = icmp sgt i64 %.0220.lcssa, 0
  br i1 %30, label %.lr.ph339.preheader, label %._crit_edge340

.lr.ph339.preheader:                              ; preds = %.preheader
  %min.iters.check378 = icmp ult i64 %.0220.lcssa, 8
  %31 = sub i64 %.unpack374, %.lcssa333371
  %diff.check375 = icmp ult i64 %31, 32
  %or.cond = select i1 %min.iters.check378, i1 true, i1 %diff.check375
  br i1 %or.cond, label %.lr.ph339.preheader493, label %vector.ph379

vector.ph379:                                     ; preds = %.lr.ph339.preheader
  %n.vec381 = and i64 %.0220.lcssa, -8
  br label %vector.body384

vector.body384:                                   ; preds = %vector.body384, %vector.ph379
  %index385 = phi i64 [ 0, %vector.ph379 ], [ %index.next388, %vector.body384 ]
  %32 = getelementptr i32, ptr %.lcssa333, i64 %index385
  %wide.load386 = load <4 x i32>, ptr %32, align 4, !tbaa !3
  %33 = getelementptr i32, ptr %32, i64 4
  %wide.load387 = load <4 x i32>, ptr %33, align 4, !tbaa !3
  %34 = getelementptr i32, ptr %.unpack, i64 %index385
  store <4 x i32> %wide.load386, ptr %34, align 4, !tbaa !3
  %35 = getelementptr i32, ptr %34, i64 4
  store <4 x i32> %wide.load387, ptr %35, align 4, !tbaa !3
  %index.next388 = add nuw i64 %index385, 8
  %36 = icmp eq i64 %index.next388, %n.vec381
  br i1 %36, label %middle.block376, label %vector.body384, !llvm.loop !9

middle.block376:                                  ; preds = %vector.body384
  %cmp.n383 = icmp eq i64 %.0220.lcssa, %n.vec381
  br i1 %cmp.n383, label %._crit_edge340, label %.lr.ph339.preheader493

.lr.ph339.preheader493:                           ; preds = %.lr.ph339.preheader, %middle.block376
  %.ph494 = phi i64 [ 0, %.lr.ph339.preheader ], [ %n.vec381, %middle.block376 ]
  %37 = xor i64 %.ph494, -1
  %38 = add i64 %.0220.lcssa, %37
  %xtraiter499 = and i64 %.0220.lcssa, 3
  %lcmp.mod500.not = icmp eq i64 %xtraiter499, 0
  br i1 %lcmp.mod500.not, label %.lr.ph339.prol.loopexit, label %.lr.ph339.prol

.lr.ph339.prol:                                   ; preds = %.lr.ph339.preheader493, %.lr.ph339.prol
  %39 = phi i64 [ %40, %.lr.ph339.prol ], [ %.ph494, %.lr.ph339.preheader493 ]
  %prol.iter501 = phi i64 [ %prol.iter501.next, %.lr.ph339.prol ], [ 0, %.lr.ph339.preheader493 ]
  %40 = add nuw nsw i64 %39, 1
  %41 = getelementptr i32, ptr %.lcssa333, i64 %39
  %42 = load i32, ptr %41, align 4, !tbaa !3
  %43 = getelementptr i32, ptr %.unpack, i64 %39
  store i32 %42, ptr %43, align 4, !tbaa !3
  %prol.iter501.next = add i64 %prol.iter501, 1
  %prol.iter501.cmp.not = icmp eq i64 %prol.iter501.next, %xtraiter499
  br i1 %prol.iter501.cmp.not, label %.lr.ph339.prol.loopexit, label %.lr.ph339.prol, !llvm.loop !12

.lr.ph339.prol.loopexit:                          ; preds = %.lr.ph339.prol, %.lr.ph339.preheader493
  %.unr502 = phi i64 [ %.ph494, %.lr.ph339.preheader493 ], [ %40, %.lr.ph339.prol ]
  %44 = icmp ult i64 %38, 3
  br i1 %44, label %._crit_edge340, label %.lr.ph339

45:                                               ; preds = %29
  %46 = shl nsw i64 %.0220.lcssa, 2
  %47 = call ptr @malloc(i64 %46)
  %48 = icmp sgt i64 %.0220.lcssa, 0
  br i1 %48, label %.lr.ph338.preheader, label %.thread323

.lr.ph338.preheader:                              ; preds = %45
  %49 = ptrtoint ptr %47 to i64
  %min.iters.check = icmp ult i64 %.0220.lcssa, 8
  %50 = sub i64 %49, %.lcssa333371
  %diff.check = icmp ult i64 %50, 32
  %or.cond468 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond468, label %.lr.ph338.preheader495, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph338.preheader
  %n.vec = and i64 %.0220.lcssa, -8
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %51 = getelementptr i32, ptr %.lcssa333, i64 %index
  %wide.load = load <4 x i32>, ptr %51, align 4, !tbaa !3
  %52 = getelementptr i32, ptr %51, i64 4
  %wide.load372 = load <4 x i32>, ptr %52, align 4, !tbaa !3
  %53 = getelementptr i32, ptr %47, i64 %index
  store <4 x i32> %wide.load, ptr %53, align 4, !tbaa !3
  %54 = getelementptr i32, ptr %53, i64 4
  store <4 x i32> %wide.load372, ptr %54, align 4, !tbaa !3
  %index.next = add nuw i64 %index, 8
  %55 = icmp eq i64 %index.next, %n.vec
  br i1 %55, label %middle.block, label %vector.body, !llvm.loop !14

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %.0220.lcssa, %n.vec
  br i1 %cmp.n, label %.loopexit, label %.lr.ph338.preheader495

.lr.ph338.preheader495:                           ; preds = %.lr.ph338.preheader, %middle.block
  %.ph496 = phi i64 [ 0, %.lr.ph338.preheader ], [ %n.vec, %middle.block ]
  %56 = xor i64 %.ph496, -1
  %57 = add i64 %.0220.lcssa, %56
  %xtraiter = and i64 %.0220.lcssa, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph338.prol.loopexit, label %.lr.ph338.prol

.lr.ph338.prol:                                   ; preds = %.lr.ph338.preheader495, %.lr.ph338.prol
  %58 = phi i64 [ %59, %.lr.ph338.prol ], [ %.ph496, %.lr.ph338.preheader495 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph338.prol ], [ 0, %.lr.ph338.preheader495 ]
  %59 = add nuw nsw i64 %58, 1
  %60 = getelementptr i32, ptr %.lcssa333, i64 %58
  %61 = load i32, ptr %60, align 4, !tbaa !3
  %62 = getelementptr i32, ptr %47, i64 %58
  store i32 %61, ptr %62, align 4, !tbaa !3
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph338.prol.loopexit, label %.lr.ph338.prol, !llvm.loop !15

.lr.ph338.prol.loopexit:                          ; preds = %.lr.ph338.prol, %.lr.ph338.preheader495
  %.unr = phi i64 [ %.ph496, %.lr.ph338.preheader495 ], [ %59, %.lr.ph338.prol ]
  %63 = icmp ult i64 %57, 3
  br i1 %63, label %.loopexit, label %.lr.ph338

.lr.ph338:                                        ; preds = %.lr.ph338.prol.loopexit, %.lr.ph338
  %64 = phi i64 [ %77, %.lr.ph338 ], [ %.unr, %.lr.ph338.prol.loopexit ]
  %65 = add nuw nsw i64 %64, 1
  %66 = getelementptr i32, ptr %.lcssa333, i64 %64
  %67 = load i32, ptr %66, align 4, !tbaa !3
  %68 = getelementptr i32, ptr %47, i64 %64
  store i32 %67, ptr %68, align 4, !tbaa !3
  %69 = add nuw nsw i64 %64, 2
  %70 = getelementptr i32, ptr %.lcssa333, i64 %65
  %71 = load i32, ptr %70, align 4, !tbaa !3
  %72 = getelementptr i32, ptr %47, i64 %65
  store i32 %71, ptr %72, align 4, !tbaa !3
  %73 = add nuw nsw i64 %64, 3
  %74 = getelementptr i32, ptr %.lcssa333, i64 %69
  %75 = load i32, ptr %74, align 4, !tbaa !3
  %76 = getelementptr i32, ptr %47, i64 %69
  store i32 %75, ptr %76, align 4, !tbaa !3
  %77 = add nuw nsw i64 %64, 4
  %78 = getelementptr i32, ptr %.lcssa333, i64 %73
  %79 = load i32, ptr %78, align 4, !tbaa !3
  %80 = getelementptr i32, ptr %47, i64 %73
  store i32 %79, ptr %80, align 4, !tbaa !3
  %exitcond350.not.3 = icmp eq i64 %77, %.0220.lcssa
  br i1 %exitcond350.not.3, label %.loopexit, label %.lr.ph338, !llvm.loop !16

.lr.ph339:                                        ; preds = %.lr.ph339.prol.loopexit, %.lr.ph339
  %81 = phi i64 [ %94, %.lr.ph339 ], [ %.unr502, %.lr.ph339.prol.loopexit ]
  %82 = add nuw nsw i64 %81, 1
  %83 = getelementptr i32, ptr %.lcssa333, i64 %81
  %84 = load i32, ptr %83, align 4, !tbaa !3
  %85 = getelementptr i32, ptr %.unpack, i64 %81
  store i32 %84, ptr %85, align 4, !tbaa !3
  %86 = add nuw nsw i64 %81, 2
  %87 = getelementptr i32, ptr %.lcssa333, i64 %82
  %88 = load i32, ptr %87, align 4, !tbaa !3
  %89 = getelementptr i32, ptr %.unpack, i64 %82
  store i32 %88, ptr %89, align 4, !tbaa !3
  %90 = add nuw nsw i64 %81, 3
  %91 = getelementptr i32, ptr %.lcssa333, i64 %86
  %92 = load i32, ptr %91, align 4, !tbaa !3
  %93 = getelementptr i32, ptr %.unpack, i64 %86
  store i32 %92, ptr %93, align 4, !tbaa !3
  %94 = add nuw nsw i64 %81, 4
  %95 = getelementptr i32, ptr %.lcssa333, i64 %90
  %96 = load i32, ptr %95, align 4, !tbaa !3
  %97 = getelementptr i32, ptr %.unpack, i64 %90
  store i32 %96, ptr %97, align 4, !tbaa !3
  %exitcond351.not.3 = icmp eq i64 %94, %.0220.lcssa
  br i1 %exitcond351.not.3, label %._crit_edge340, label %.lr.ph339, !llvm.loop !17

98:                                               ; preds = %._crit_edge
  %99 = shl nsw i64 %.0220.lcssa, 2
  %100 = call ptr @malloc(i64 %99)
  %101 = icmp sgt i64 %.0220.lcssa, 0
  br i1 %101, label %.lr.ph342.preheader, label %.loopexit.thread

.lr.ph342.preheader:                              ; preds = %98
  %102 = ptrtoint ptr %100 to i64
  %min.iters.check393 = icmp ult i64 %.0220.lcssa, 8
  %103 = sub i64 %102, %.lcssa333371
  %diff.check390 = icmp ult i64 %103, 32
  %or.cond469 = select i1 %min.iters.check393, i1 true, i1 %diff.check390
  br i1 %or.cond469, label %.lr.ph342.preheader491, label %vector.ph394

vector.ph394:                                     ; preds = %.lr.ph342.preheader
  %n.vec396 = and i64 %.0220.lcssa, -8
  br label %vector.body399

vector.body399:                                   ; preds = %vector.body399, %vector.ph394
  %index400 = phi i64 [ 0, %vector.ph394 ], [ %index.next403, %vector.body399 ]
  %104 = getelementptr i32, ptr %.lcssa333, i64 %index400
  %wide.load401 = load <4 x i32>, ptr %104, align 4, !tbaa !3
  %105 = getelementptr i32, ptr %104, i64 4
  %wide.load402 = load <4 x i32>, ptr %105, align 4, !tbaa !3
  %106 = getelementptr i32, ptr %100, i64 %index400
  store <4 x i32> %wide.load401, ptr %106, align 4, !tbaa !3
  %107 = getelementptr i32, ptr %106, i64 4
  store <4 x i32> %wide.load402, ptr %107, align 4, !tbaa !3
  %index.next403 = add nuw i64 %index400, 8
  %108 = icmp eq i64 %index.next403, %n.vec396
  br i1 %108, label %middle.block391, label %vector.body399, !llvm.loop !18

middle.block391:                                  ; preds = %vector.body399
  %cmp.n398 = icmp eq i64 %.0220.lcssa, %n.vec396
  br i1 %cmp.n398, label %.loopexit, label %.lr.ph342.preheader491

.lr.ph342.preheader491:                           ; preds = %.lr.ph342.preheader, %middle.block391
  %.ph492 = phi i64 [ 0, %.lr.ph342.preheader ], [ %n.vec396, %middle.block391 ]
  %109 = xor i64 %.ph492, -1
  %110 = add i64 %.0220.lcssa, %109
  %xtraiter503 = and i64 %.0220.lcssa, 3
  %lcmp.mod504.not = icmp eq i64 %xtraiter503, 0
  br i1 %lcmp.mod504.not, label %.lr.ph342.prol.loopexit, label %.lr.ph342.prol

.lr.ph342.prol:                                   ; preds = %.lr.ph342.preheader491, %.lr.ph342.prol
  %111 = phi i64 [ %112, %.lr.ph342.prol ], [ %.ph492, %.lr.ph342.preheader491 ]
  %prol.iter505 = phi i64 [ %prol.iter505.next, %.lr.ph342.prol ], [ 0, %.lr.ph342.preheader491 ]
  %112 = add nuw nsw i64 %111, 1
  %113 = getelementptr i32, ptr %.lcssa333, i64 %111
  %114 = load i32, ptr %113, align 4, !tbaa !3
  %115 = getelementptr i32, ptr %100, i64 %111
  store i32 %114, ptr %115, align 4, !tbaa !3
  %prol.iter505.next = add i64 %prol.iter505, 1
  %prol.iter505.cmp.not = icmp eq i64 %prol.iter505.next, %xtraiter503
  br i1 %prol.iter505.cmp.not, label %.lr.ph342.prol.loopexit, label %.lr.ph342.prol, !llvm.loop !19

.lr.ph342.prol.loopexit:                          ; preds = %.lr.ph342.prol, %.lr.ph342.preheader491
  %.unr506 = phi i64 [ %.ph492, %.lr.ph342.preheader491 ], [ %112, %.lr.ph342.prol ]
  %116 = icmp ult i64 %110, 3
  br i1 %116, label %.loopexit, label %.lr.ph342

.lr.ph342:                                        ; preds = %.lr.ph342.prol.loopexit, %.lr.ph342
  %117 = phi i64 [ %130, %.lr.ph342 ], [ %.unr506, %.lr.ph342.prol.loopexit ]
  %118 = add nuw nsw i64 %117, 1
  %119 = getelementptr i32, ptr %.lcssa333, i64 %117
  %120 = load i32, ptr %119, align 4, !tbaa !3
  %121 = getelementptr i32, ptr %100, i64 %117
  store i32 %120, ptr %121, align 4, !tbaa !3
  %122 = add nuw nsw i64 %117, 2
  %123 = getelementptr i32, ptr %.lcssa333, i64 %118
  %124 = load i32, ptr %123, align 4, !tbaa !3
  %125 = getelementptr i32, ptr %100, i64 %118
  store i32 %124, ptr %125, align 4, !tbaa !3
  %126 = add nuw nsw i64 %117, 3
  %127 = getelementptr i32, ptr %.lcssa333, i64 %122
  %128 = load i32, ptr %127, align 4, !tbaa !3
  %129 = getelementptr i32, ptr %100, i64 %122
  store i32 %128, ptr %129, align 4, !tbaa !3
  %130 = add nuw nsw i64 %117, 4
  %131 = getelementptr i32, ptr %.lcssa333, i64 %126
  %132 = load i32, ptr %131, align 4, !tbaa !3
  %133 = getelementptr i32, ptr %100, i64 %126
  store i32 %132, ptr %133, align 4, !tbaa !3
  %exitcond352.not.3 = icmp eq i64 %130, %.0220.lcssa
  br i1 %exitcond352.not.3, label %.loopexit, label %.lr.ph342, !llvm.loop !20

.loopexit:                                        ; preds = %.lr.ph338.prol.loopexit, %.lr.ph338, %.lr.ph342.prol.loopexit, %.lr.ph342, %middle.block, %middle.block391
  %.ph = phi ptr [ %100, %middle.block391 ], [ %47, %middle.block ], [ %100, %.lr.ph342 ], [ %100, %.lr.ph342.prol.loopexit ], [ %47, %.lr.ph338 ], [ %47, %.lr.ph338.prol.loopexit ]
  br i1 %.not, label %.loopexit.thread, label %.thread323

.thread323:                                       ; preds = %45, %.loopexit
  %.ph358 = phi ptr [ %.ph, %.loopexit ], [ %47, %45 ]
  call void @free(ptr nonnull %.unpack)
  br label %.loopexit.thread

.loopexit.thread:                                 ; preds = %98, %.thread323, %.loopexit
  %.ph355 = phi ptr [ %.ph358, %.thread323 ], [ %.ph, %.loopexit ], [ %100, %98 ]
  store ptr %.ph355, ptr @_QFEa.0, align 8, !tbaa !7
  store i64 %.0220.lcssa, ptr @_QFEa.8, align 8, !tbaa !7
  br label %._crit_edge340

._crit_edge340:                                   ; preds = %.lr.ph339.prol.loopexit, %.lr.ph339, %middle.block376, %.preheader, %.loopexit.thread
  call void @free(ptr %.lcssa333)
  %134 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.cafb68c73610e26d46e4fcd65cf1683d, i32 6)
  %.unpack238 = load ptr, ptr @_QFEa.0, align 8, !tbaa !7
  %.unpack238435 = ptrtoint ptr %.unpack238 to i64
  %.unpack245.unpack.unpack247 = load i64, ptr @_QFEa.8, align 8, !tbaa !7
  %135 = icmp sgt i64 %.unpack245.unpack.unpack247, 0
  br i1 %135, label %.lr.ph.i.preheader, label %_FortranAMaxvalInteger4x1_contract_simplified.exit.thread

.lr.ph.i.preheader:                               ; preds = %._crit_edge340
  %min.iters.check406 = icmp ult i64 %.unpack245.unpack.unpack247, 8
  br i1 %min.iters.check406, label %.lr.ph.i.preheader485, label %vector.ph407

vector.ph407:                                     ; preds = %.lr.ph.i.preheader
  %n.vec409 = and i64 %.unpack245.unpack.unpack247, -8
  br label %vector.body412

vector.body412:                                   ; preds = %vector.body412, %vector.ph407
  %index413 = phi i64 [ 0, %vector.ph407 ], [ %index.next417, %vector.body412 ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph407 ], [ %139, %vector.body412 ]
  %vec.phi414 = phi <4 x i32> [ zeroinitializer, %vector.ph407 ], [ %140, %vector.body412 ]
  %136 = shl i64 %index413, 2
  %137 = getelementptr i8, ptr %.unpack238, i64 %136
  %wide.load415 = load <4 x i32>, ptr %137, align 4, !tbaa !3
  %138 = getelementptr i32, ptr %137, i64 4
  %wide.load416 = load <4 x i32>, ptr %138, align 4, !tbaa !3
  %139 = add <4 x i32> %wide.load415, %vec.phi
  %140 = add <4 x i32> %wide.load416, %vec.phi414
  %index.next417 = add nuw i64 %index413, 8
  %141 = icmp eq i64 %index.next417, %n.vec409
  br i1 %141, label %middle.block404, label %vector.body412, !llvm.loop !21

middle.block404:                                  ; preds = %vector.body412
  %bin.rdx = add <4 x i32> %140, %139
  %142 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  %cmp.n411 = icmp eq i64 %.unpack245.unpack.unpack247, %n.vec409
  br i1 %cmp.n411, label %.lr.ph.i296.preheader, label %.lr.ph.i.preheader485

.lr.ph.i.preheader485:                            ; preds = %.lr.ph.i.preheader, %middle.block404
  %.ph486 = phi i32 [ 0, %.lr.ph.i.preheader ], [ %142, %middle.block404 ]
  %.ph487 = phi i64 [ 0, %.lr.ph.i.preheader ], [ %n.vec409, %middle.block404 ]
  br label %.lr.ph.i

_FortranAMaxvalInteger4x1_contract_simplified.exit.thread: ; preds = %._crit_edge340
  %143 = shl i64 %.unpack245.unpack.unpack247, 2
  %144 = call ptr @malloc(i64 %143)
  br label %._crit_edge344

.lr.ph.i:                                         ; preds = %.lr.ph.i.preheader485, %.lr.ph.i
  %145 = phi i32 [ %150, %.lr.ph.i ], [ %.ph486, %.lr.ph.i.preheader485 ]
  %146 = phi i64 [ %151, %.lr.ph.i ], [ %.ph487, %.lr.ph.i.preheader485 ]
  %147 = shl i64 %146, 2
  %148 = getelementptr i8, ptr %.unpack238, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !3
  %150 = add i32 %149, %145
  %151 = add nuw nsw i64 %146, 1
  %exitcond.not.i = icmp eq i64 %151, %.unpack245.unpack.unpack247
  br i1 %exitcond.not.i, label %.lr.ph.i296.preheader, label %.lr.ph.i, !llvm.loop !22

.lr.ph.i296.preheader:                            ; preds = %.lr.ph.i, %middle.block404
  %.lcssa369 = phi i32 [ %142, %middle.block404 ], [ %150, %.lr.ph.i ]
  %min.iters.check420 = icmp ult i64 %.unpack245.unpack.unpack247, 8
  br i1 %min.iters.check420, label %.lr.ph.i296.preheader479, label %vector.ph421

vector.ph421:                                     ; preds = %.lr.ph.i296.preheader
  %n.vec423 = and i64 %.unpack245.unpack.unpack247, -8
  br label %vector.body426

vector.body426:                                   ; preds = %vector.body426, %vector.ph421
  %index427 = phi i64 [ 0, %vector.ph421 ], [ %index.next432, %vector.body426 ]
  %vec.phi428 = phi <4 x i32> [ <i32 -2147483648, i32 -2147483648, i32 -2147483648, i32 -2147483648>, %vector.ph421 ], [ %155, %vector.body426 ]
  %vec.phi429 = phi <4 x i32> [ <i32 -2147483648, i32 -2147483648, i32 -2147483648, i32 -2147483648>, %vector.ph421 ], [ %156, %vector.body426 ]
  %152 = shl i64 %index427, 2
  %153 = getelementptr i8, ptr %.unpack238, i64 %152
  %wide.load430 = load <4 x i32>, ptr %153, align 4, !tbaa !3
  %154 = getelementptr i32, ptr %153, i64 4
  %wide.load431 = load <4 x i32>, ptr %154, align 4, !tbaa !3
  %155 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %wide.load430, <4 x i32> %vec.phi428)
  %156 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %wide.load431, <4 x i32> %vec.phi429)
  %index.next432 = add nuw i64 %index427, 8
  %157 = icmp eq i64 %index.next432, %n.vec423
  br i1 %157, label %middle.block418, label %vector.body426, !llvm.loop !23

middle.block418:                                  ; preds = %vector.body426
  %rdx.minmax.select = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %155, <4 x i32> %156)
  %158 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %rdx.minmax.select)
  %cmp.n425 = icmp eq i64 %.unpack245.unpack.unpack247, %n.vec423
  br i1 %cmp.n425, label %_FortranAMaxvalInteger4x1_contract_simplified.exit, label %.lr.ph.i296.preheader479

.lr.ph.i296.preheader479:                         ; preds = %.lr.ph.i296.preheader, %middle.block418
  %.ph480 = phi i32 [ -2147483648, %.lr.ph.i296.preheader ], [ %158, %middle.block418 ]
  %.ph481 = phi i64 [ 0, %.lr.ph.i296.preheader ], [ %n.vec423, %middle.block418 ]
  br label %.lr.ph.i296

.lr.ph.i296:                                      ; preds = %.lr.ph.i296.preheader479, %.lr.ph.i296
  %159 = phi i32 [ %164, %.lr.ph.i296 ], [ %.ph480, %.lr.ph.i296.preheader479 ]
  %160 = phi i64 [ %165, %.lr.ph.i296 ], [ %.ph481, %.lr.ph.i296.preheader479 ]
  %161 = shl i64 %160, 2
  %162 = getelementptr i8, ptr %.unpack238, i64 %161
  %163 = load i32, ptr %162, align 4, !tbaa !3
  %164 = call i32 @llvm.smax.i32(i32 %163, i32 %159)
  %165 = add nuw nsw i64 %160, 1
  %exitcond.not.i297 = icmp eq i64 %165, %.unpack245.unpack.unpack247
  br i1 %exitcond.not.i297, label %_FortranAMaxvalInteger4x1_contract_simplified.exit, label %.lr.ph.i296, !llvm.loop !24

_FortranAMaxvalInteger4x1_contract_simplified.exit: ; preds = %.lr.ph.i296, %middle.block418
  %.lcssa368 = phi i32 [ %158, %middle.block418 ], [ %164, %.lr.ph.i296 ]
  %166 = shl i64 %.unpack245.unpack.unpack247, 2
  %167 = call ptr @malloc(i64 %166)
  br i1 %135, label %.lr.ph343.preheader, label %._crit_edge344

.lr.ph343.preheader:                              ; preds = %_FortranAMaxvalInteger4x1_contract_simplified.exit
  %168 = ptrtoint ptr %167 to i64
  %min.iters.check439 = icmp ult i64 %.unpack245.unpack.unpack247, 8
  %169 = sub i64 %168, %.unpack238435
  %diff.check436 = icmp ult i64 %169, 32
  %or.cond470 = select i1 %min.iters.check439, i1 true, i1 %diff.check436
  br i1 %or.cond470, label %.lr.ph343.preheader477, label %vector.ph440

vector.ph440:                                     ; preds = %.lr.ph343.preheader
  %n.vec442 = and i64 %.unpack245.unpack.unpack247, -8
  br label %vector.body445

vector.body445:                                   ; preds = %vector.body445, %vector.ph440
  %index446 = phi i64 [ 0, %vector.ph440 ], [ %index.next449, %vector.body445 ]
  %170 = getelementptr i32, ptr %.unpack238, i64 %index446
  %wide.load447 = load <4 x i32>, ptr %170, align 4, !tbaa !3
  %171 = getelementptr i32, ptr %170, i64 4
  %wide.load448 = load <4 x i32>, ptr %171, align 4, !tbaa !3
  %172 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %wide.load447, i1 false)
  %173 = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %wide.load448, i1 false)
  %174 = getelementptr i32, ptr %167, i64 %index446
  store <4 x i32> %172, ptr %174, align 4, !tbaa !3
  %175 = getelementptr i32, ptr %174, i64 4
  store <4 x i32> %173, ptr %175, align 4, !tbaa !3
  %index.next449 = add nuw i64 %index446, 8
  %176 = icmp eq i64 %index.next449, %n.vec442
  br i1 %176, label %middle.block437, label %vector.body445, !llvm.loop !25

middle.block437:                                  ; preds = %vector.body445
  %cmp.n444 = icmp eq i64 %.unpack245.unpack.unpack247, %n.vec442
  br i1 %cmp.n444, label %._crit_edge344, label %.lr.ph343.preheader477

.lr.ph343.preheader477:                           ; preds = %.lr.ph343.preheader, %middle.block437
  %.ph478 = phi i64 [ 0, %.lr.ph343.preheader ], [ %n.vec442, %middle.block437 ]
  %.neg = or i64 %.ph478, 1
  %xtraiter507 = and i64 %.unpack245.unpack.unpack247, 1
  %lcmp.mod508.not = icmp eq i64 %xtraiter507, 0
  br i1 %lcmp.mod508.not, label %.lr.ph343.prol.loopexit, label %.lr.ph343.prol

.lr.ph343.prol:                                   ; preds = %.lr.ph343.preheader477
  %177 = getelementptr i32, ptr %.unpack238, i64 %.ph478
  %178 = load i32, ptr %177, align 4, !tbaa !3
  %179 = call i32 @llvm.abs.i32(i32 %178, i1 false)
  %180 = or i64 %.ph478, 1
  %181 = getelementptr i32, ptr %167, i64 %.ph478
  store i32 %179, ptr %181, align 4, !tbaa !3
  br label %.lr.ph343.prol.loopexit

.lr.ph343.prol.loopexit:                          ; preds = %.lr.ph343.prol, %.lr.ph343.preheader477
  %.unr510 = phi i64 [ %.ph478, %.lr.ph343.preheader477 ], [ %180, %.lr.ph343.prol ]
  %182 = icmp eq i64 %.unpack245.unpack.unpack247, %.neg
  br i1 %182, label %._crit_edge344, label %.lr.ph343

.lr.ph343:                                        ; preds = %.lr.ph343.prol.loopexit, %.lr.ph343
  %183 = phi i64 [ %192, %.lr.ph343 ], [ %.unr510, %.lr.ph343.prol.loopexit ]
  %184 = getelementptr i32, ptr %.unpack238, i64 %183
  %185 = load i32, ptr %184, align 4, !tbaa !3
  %186 = call i32 @llvm.abs.i32(i32 %185, i1 false)
  %187 = add nuw nsw i64 %183, 1
  %188 = getelementptr i32, ptr %167, i64 %183
  store i32 %186, ptr %188, align 4, !tbaa !3
  %189 = getelementptr i32, ptr %.unpack238, i64 %187
  %190 = load i32, ptr %189, align 4, !tbaa !3
  %191 = call i32 @llvm.abs.i32(i32 %190, i1 false)
  %192 = add nuw nsw i64 %183, 2
  %193 = getelementptr i32, ptr %167, i64 %187
  store i32 %191, ptr %193, align 4, !tbaa !3
  %exitcond353.not.1 = icmp eq i64 %192, %.unpack245.unpack.unpack247
  br i1 %exitcond353.not.1, label %._crit_edge344, label %.lr.ph343, !llvm.loop !26

._crit_edge344:                                   ; preds = %.lr.ph343.prol.loopexit, %.lr.ph343, %middle.block437, %_FortranAMaxvalInteger4x1_contract_simplified.exit.thread, %_FortranAMaxvalInteger4x1_contract_simplified.exit
  %194 = phi ptr [ %144, %_FortranAMaxvalInteger4x1_contract_simplified.exit.thread ], [ %167, %_FortranAMaxvalInteger4x1_contract_simplified.exit ], [ %167, %middle.block437 ], [ %167, %.lr.ph343 ], [ %167, %.lr.ph343.prol.loopexit ]
  %.lcssa.i298362 = phi i32 [ -2147483648, %_FortranAMaxvalInteger4x1_contract_simplified.exit.thread ], [ %.lcssa368, %_FortranAMaxvalInteger4x1_contract_simplified.exit ], [ %.lcssa368, %middle.block437 ], [ %.lcssa368, %.lr.ph343 ], [ %.lcssa368, %.lr.ph343.prol.loopexit ]
  %.lcssa.i325361 = phi i32 [ 0, %_FortranAMaxvalInteger4x1_contract_simplified.exit.thread ], [ %.lcssa369, %_FortranAMaxvalInteger4x1_contract_simplified.exit ], [ %.lcssa369, %middle.block437 ], [ %.lcssa369, %.lr.ph343 ], [ %.lcssa369, %.lr.ph343.prol.loopexit ]
  store ptr %194, ptr %1, align 8, !tbaa !7
  %.fca.1.gep116 = 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.gep116, align 8, !tbaa !7
  %.fca.2.gep118 = 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.gep118, align 8, !tbaa !7
  %.fca.3.gep120 = 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.gep120, align 4, !tbaa !7
  %.fca.4.gep122 = 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.gep122, align 1, !tbaa !7
  %.fca.5.gep124 = 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.gep124, align 2, !tbaa !7
  %.fca.6.gep126 = 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.gep126, align 1, !tbaa !7
  %.fca.7.0.0.gep128 = 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.gep128, align 8, !tbaa !7
  %.fca.7.0.1.gep130 = 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 %.unpack245.unpack.unpack247, ptr %.fca.7.0.1.gep130, align 8, !tbaa !7
  %.fca.7.0.2.gep132 = 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.gep132, align 8, !tbaa !7
  %195 = call i32 @_FortranAMinvalInteger4(ptr nonnull %1, ptr nonnull @_QQcl.cafb68c73610e26d46e4fcd65cf1683d, i32 6, i32 0, ptr null)
  %.unpack274 = load ptr, ptr @_QFEa.0, align 8, !tbaa !7
  %.unpack281.unpack.unpack283 = load i64, ptr @_QFEa.8, align 8, !tbaa !7
  %196 = icmp sgt i64 %.unpack281.unpack.unpack283, 0
  br i1 %196, label %.lr.ph.i299.preheader, label %_FortranAMaxvalInteger4x1_contract_simplified.exit302.thread

.lr.ph.i299.preheader:                            ; preds = %._crit_edge344
  %min.iters.check452 = icmp ult i64 %.unpack281.unpack.unpack283, 8
  br i1 %min.iters.check452, label %.lr.ph.i299.preheader471, label %vector.ph453

vector.ph453:                                     ; preds = %.lr.ph.i299.preheader
  %n.vec455 = and i64 %.unpack281.unpack.unpack283, -8
  br label %vector.body458

vector.body458:                                   ; preds = %vector.body458, %vector.ph453
  %index459 = phi i64 [ 0, %vector.ph453 ], [ %index.next464, %vector.body458 ]
  %vec.phi460 = phi <4 x i32> [ <i32 -2147483648, i32 -2147483648, i32 -2147483648, i32 -2147483648>, %vector.ph453 ], [ %202, %vector.body458 ]
  %vec.phi461 = phi <4 x i32> [ <i32 -2147483648, i32 -2147483648, i32 -2147483648, i32 -2147483648>, %vector.ph453 ], [ %203, %vector.body458 ]
  %197 = shl i64 %index459, 2
  %198 = getelementptr i8, ptr %.unpack274, i64 %197
  %wide.load462 = load <4 x i32>, ptr %198, align 4, !tbaa !3
  %199 = getelementptr i32, ptr %198, i64 4
  %wide.load463 = load <4 x i32>, ptr %199, align 4, !tbaa !3
  %200 = freeze <4 x i32> %wide.load462
  %201 = freeze <4 x i32> %wide.load463
  %202 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %200, <4 x i32> %vec.phi460)
  %203 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %201, <4 x i32> %vec.phi461)
  %index.next464 = add nuw i64 %index459, 8
  %204 = icmp eq i64 %index.next464, %n.vec455
  br i1 %204, label %middle.block450, label %vector.body458, !llvm.loop !27

middle.block450:                                  ; preds = %vector.body458
  %rdx.minmax.select466 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %202, <4 x i32> %203)
  %205 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %rdx.minmax.select466)
  %cmp.n457 = icmp eq i64 %.unpack281.unpack.unpack283, %n.vec455
  br i1 %cmp.n457, label %_FortranAMaxvalInteger4x1_contract_simplified.exit302, label %.lr.ph.i299.preheader471

.lr.ph.i299.preheader471:                         ; preds = %.lr.ph.i299.preheader, %middle.block450
  %.ph472 = phi i32 [ -2147483648, %.lr.ph.i299.preheader ], [ %205, %middle.block450 ]
  %.ph473 = phi i64 [ 0, %.lr.ph.i299.preheader ], [ %n.vec455, %middle.block450 ]
  br label %.lr.ph.i299

.lr.ph.i299:                                      ; preds = %.lr.ph.i299.preheader471, %.lr.ph.i299
  %206 = phi i32 [ %211, %.lr.ph.i299 ], [ %.ph472, %.lr.ph.i299.preheader471 ]
  %207 = phi i64 [ %212, %.lr.ph.i299 ], [ %.ph473, %.lr.ph.i299.preheader471 ]
  %208 = shl i64 %207, 2
  %209 = getelementptr i8, ptr %.unpack274, i64 %208
  %210 = load i32, ptr %209, align 4, !tbaa !3
  %.fr329 = freeze i32 %210
  %211 = call i32 @llvm.smax.i32(i32 %.fr329, i32 %206)
  %212 = add nuw nsw i64 %207, 1
  %exitcond.not.i300 = icmp eq i64 %212, %.unpack281.unpack.unpack283
  br i1 %exitcond.not.i300, label %_FortranAMaxvalInteger4x1_contract_simplified.exit302, label %.lr.ph.i299, !llvm.loop !28

_FortranAMaxvalInteger4x1_contract_simplified.exit302: ; preds = %.lr.ph.i299, %middle.block450
  %.lcssa = phi i32 [ %205, %middle.block450 ], [ %211, %.lr.ph.i299 ]
  %213 = icmp slt i32 %.lcssa, 0
  br i1 %213, label %_FortranAMaxvalInteger4x1_contract_simplified.exit302.thread, label %214

_FortranAMaxvalInteger4x1_contract_simplified.exit302.thread: ; preds = %._crit_edge344, %_FortranAMaxvalInteger4x1_contract_simplified.exit302
  br label %214

214:                                              ; preds = %_FortranAMaxvalInteger4x1_contract_simplified.exit302, %_FortranAMaxvalInteger4x1_contract_simplified.exit302.thread
  %215 = phi i32 [ %.lcssa.i298362, %_FortranAMaxvalInteger4x1_contract_simplified.exit302.thread ], [ %195, %_FortranAMaxvalInteger4x1_contract_simplified.exit302 ]
  %216 = sub i32 %.lcssa.i325361, %215
  %217 = call i1 @_FortranAioOutputInteger32(ptr %134, i32 %216)
  call void @free(ptr %194)
  %218 = call i32 @_FortranAioEndIoStatement(ptr %134)
  ret void
}

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

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

declare i32 @_FortranAioEndIoStatement(ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture, i64 noundef) local_unnamed_addr #2

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

declare i1 @_FortranAioOutputInteger32(ptr, i32) local_unnamed_addr

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x i32> @llvm.smax.v4i32(<4 x i32>, <4 x i32>) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x i32> @llvm.abs.v4i32(<4 x i32>, 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 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind willreturn memory(none) }

!llvm.module.flags = !{!0, !1, !2}

!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!4, !4, i64 0}
!4 = !{!"any data access", !5, i64 0}
!5 = !{!"any access", !6, i64 0}
!6 = !{!"Flang Type TBAA Root"}
!7 = !{!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, !13}
!13 = !{!"llvm.loop.unroll.disable"}
!14 = distinct !{!14, !10, !11}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10, !11}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10, !11}
!22 = distinct !{!22, !11, !10}
!23 = distinct !{!23, !10, !11}
!24 = distinct !{!24, !11, !10}
!25 = distinct !{!25, !10, !11}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10, !11}
!28 = distinct !{!28, !11, !10}
