      program piyo
      integer,parameter :: p=8
      integer(p) :: n,m, i,j, offsetR,offsetC
      character(:),allocatable :: a,b
      integer(p),allocatable :: imA(:,:),imB(:,:),tempA(:,:)
      
      read*,n,m
      allocate( character(n)::a )
      allocate( character(m)::b )
      allocate( imA(N,N), imB(M,M), tempA(M,M) )
      do i = 1,n
        read*,a
        do j = 1,n
          if(a(j:j)=='.')then
            imA(i,j) = 1
          else
            imA(i,j) = 0
          end if
        end do
      end do
      do i = 1,m
        read*,b
        do j = 1,m
          if(b(j:j)=='.')then
            imB(i,j) = 1
          else
            imB(i,j) = 0
          end if
        end do
      end do
      
      do offsetR = 0,(N-M)
        do offsetC = 0,(N-M)
          tempA = imA(1+offsetR:M+offsetR,1+offsetC:M+offsetC)
          tempA = abs(tempA(:,:) - imB(:,:))
          if( sum(tempA(:,:))==0 )then
            print*,'Yes'
            stop
          end if
        end do
      end do
      
      print*,'No'
      
      stop
      
      do i = 1,n
        print'(*(i1,x))',ima(i,:)
      end do
      do i = 1,m
        print'(*(i1,x))',imb(i,:)
      end do
      
      
      
      end
; 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"

@_QFEima.0 = internal unnamed_addr global ptr null
@_QFEima.8 = internal unnamed_addr global i64 0
@_QFEimb.0 = internal unnamed_addr global ptr null
@_QFEimb.8 = internal unnamed_addr global i64 0
@_QFEtempa.0 = internal unnamed_addr global ptr null
@_QFEtempa.8 = internal unnamed_addr global i64 0
@_QFEtempa.11 = internal unnamed_addr global i64 0
@_QQcl.442b5ec568b2f809571b9384f7840903 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_7507/source.f\00"
@_QQcl.2E = linkonce constant [1 x i8] c"."
@_QQcl.596573 = linkonce constant [3 x i8] c"Yes"
@_QQcl.4E6F = linkonce constant [2 x i8] c"No"
@_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 i64, align 8
  %2 = alloca i64, align 8
  %3 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.442b5ec568b2f809571b9384f7840903, i32 7)
  %4 = call i1 @_FortranAioInputInteger(ptr %3, ptr nonnull %2, i32 8)
  %5 = call i1 @_FortranAioInputInteger(ptr %3, ptr nonnull %1, i32 8)
  %6 = call i32 @_FortranAioEndIoStatement(ptr %3)
  %7 = load i64, ptr %2, align 8, !tbaa !3
  %8 = call i64 @llvm.smax.i64(i64 %7, i64 0)
  %9 = call ptr @malloc(i64 %8)
  %10 = load i64, ptr %1, align 8, !tbaa !3
  %11 = call i64 @llvm.smax.i64(i64 %10, i64 0)
  %12 = call ptr @malloc(i64 %11)
  %13 = shl i64 %8, 3
  %14 = mul i64 %13, %8
  %15 = call ptr @malloc(i64 %14)
  store ptr %15, ptr @_QFEima.0, align 8, !tbaa !7
  store i64 %8, ptr @_QFEima.8, align 8, !tbaa !7
  %16 = shl i64 %11, 3
  %17 = mul i64 %16, %11
  %18 = call ptr @malloc(i64 %17)
  store ptr %18, ptr @_QFEimb.0, align 8, !tbaa !7
  store i64 %11, ptr @_QFEimb.8, align 8, !tbaa !7
  %19 = call ptr @malloc(i64 %17)
  store ptr %19, ptr @_QFEtempa.0, align 8, !tbaa !7
  store i64 %11, ptr @_QFEtempa.8, align 8, !tbaa !7
  store i64 %11, ptr @_QFEtempa.11, align 8, !tbaa !7
  %20 = icmp sgt i64 %7, 0
  br i1 %20, label %.lr.ph812, label %._crit_edge813

.lr.ph812:                                        ; preds = %0, %._crit_edge
  %21 = phi i64 [ %38, %._crit_edge ], [ 1, %0 ]
  %22 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.442b5ec568b2f809571b9384f7840903, i32 12)
  %23 = call i1 @_FortranAioInputAscii(ptr %22, ptr %9, i64 %8)
  %24 = call i32 @_FortranAioEndIoStatement(ptr %22)
  %25 = load i64, ptr %2, align 8, !tbaa !3
  %26 = icmp sgt i64 %25, 0
  br i1 %26, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph812
  %27 = add i64 %21, -1
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %28 = phi i64 [ %37, %.lr.ph ], [ 1, %.lr.ph.preheader ]
  %29 = add nsw i64 %28, -1
  %30 = getelementptr [1 x i8], ptr %9, i64 %29
  %31 = call i32 @_FortranACharacterCompareScalar1(ptr %30, ptr nonnull @_QQcl.2E, i64 1, i64 1)
  %32 = icmp eq i32 %31, 0
  %.unpack776 = load ptr, ptr @_QFEima.0, align 8, !tbaa !7
  %.unpack783.unpack.unpack786 = load i64, ptr @_QFEima.8, align 8, !tbaa !7
  %33 = add i64 %28, -1
  %34 = mul i64 %33, %.unpack783.unpack.unpack786
  %35 = add i64 %27, %34
  %36 = getelementptr i64, ptr %.unpack776, i64 %35
  %. = zext i1 %32 to i64
  store i64 %., ptr %36, align 8, !tbaa !3
  %37 = add nuw i64 %28, 1
  %exitcond.not = icmp eq i64 %28, %25
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph812
  %38 = add nuw i64 %21, 1
  %exitcond868.not = icmp eq i64 %21, %7
  br i1 %exitcond868.not, label %._crit_edge813.loopexit, label %.lr.ph812

._crit_edge813.loopexit:                          ; preds = %._crit_edge
  %.pre = load i64, ptr %1, align 8, !tbaa !3
  br label %._crit_edge813

._crit_edge813:                                   ; preds = %._crit_edge813.loopexit, %0
  %39 = phi i64 [ %.pre, %._crit_edge813.loopexit ], [ %10, %0 ]
  %40 = icmp sgt i64 %39, 0
  br i1 %40, label %.lr.ph818, label %._crit_edge819

.lr.ph818:                                        ; preds = %._crit_edge813, %._crit_edge816
  %41 = phi i64 [ %58, %._crit_edge816 ], [ 1, %._crit_edge813 ]
  %42 = call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.442b5ec568b2f809571b9384f7840903, i32 22)
  %43 = call i1 @_FortranAioInputAscii(ptr %42, ptr %12, i64 %11)
  %44 = call i32 @_FortranAioEndIoStatement(ptr %42)
  %45 = load i64, ptr %1, align 8, !tbaa !3
  %46 = icmp sgt i64 %45, 0
  br i1 %46, label %.lr.ph815.preheader, label %._crit_edge816

.lr.ph815.preheader:                              ; preds = %.lr.ph818
  %47 = add i64 %41, -1
  br label %.lr.ph815

.lr.ph815:                                        ; preds = %.lr.ph815.preheader, %.lr.ph815
  %48 = phi i64 [ %57, %.lr.ph815 ], [ 1, %.lr.ph815.preheader ]
  %49 = add nsw i64 %48, -1
  %50 = getelementptr [1 x i8], ptr %12, i64 %49
  %51 = call i32 @_FortranACharacterCompareScalar1(ptr %50, ptr nonnull @_QQcl.2E, i64 1, i64 1)
  %52 = icmp eq i32 %51, 0
  %.unpack744 = load ptr, ptr @_QFEimb.0, align 8, !tbaa !7
  %.unpack751.unpack.unpack754 = load i64, ptr @_QFEimb.8, align 8, !tbaa !7
  %53 = add i64 %48, -1
  %54 = mul i64 %53, %.unpack751.unpack.unpack754
  %55 = add i64 %47, %54
  %56 = getelementptr i64, ptr %.unpack744, i64 %55
  %.910 = zext i1 %52 to i64
  store i64 %.910, ptr %56, align 8, !tbaa !3
  %57 = add nuw i64 %48, 1
  %exitcond869.not = icmp eq i64 %48, %45
  br i1 %exitcond869.not, label %._crit_edge816, label %.lr.ph815

._crit_edge816:                                   ; preds = %.lr.ph815, %.lr.ph818
  %58 = add nuw i64 %41, 1
  %exitcond870.not = icmp eq i64 %41, %39
  br i1 %exitcond870.not, label %._crit_edge819.loopexit, label %.lr.ph818

._crit_edge819.loopexit:                          ; preds = %._crit_edge816
  %.pre894 = load i64, ptr %1, align 8, !tbaa !3
  br label %._crit_edge819

._crit_edge819:                                   ; preds = %._crit_edge819.loopexit, %._crit_edge813
  %59 = phi i64 [ %.pre894, %._crit_edge819.loopexit ], [ %39, %._crit_edge813 ]
  %60 = load i64, ptr %2, align 8, !tbaa !3
  %61 = add i64 %60, 1
  %62 = sub i64 %61, %59
  %63 = icmp sgt i64 %62, 0
  br i1 %63, label %.lr.ph847, label %._crit_edge848

.lr.ph847:                                        ; preds = %._crit_edge819, %._crit_edge843
  %.0845 = phi i64 [ %.pre-phi899, %._crit_edge843 ], [ 0, %._crit_edge819 ]
  %64 = load i64, ptr %2, align 8, !tbaa !3
  %65 = load i64, ptr %1, align 8, !tbaa !3
  %66 = add i64 %64, 1
  %67 = sub i64 %66, %65
  %68 = icmp sgt i64 %67, 0
  br i1 %68, label %.lr.ph842, label %._crit_edge843

.lr.ph842:                                        ; preds = %.lr.ph847
  %.promoted838 = load i64, ptr @_QFEtempa.11, align 8, !tbaa !7
  %.promoted = load i64, ptr @_QFEtempa.8, align 8, !tbaa !7
  %_QFEtempa.promoted = load ptr, ptr @_QFEtempa.0, align 8, !tbaa !7
  %.unpack = load ptr, ptr @_QFEima.0, align 8, !tbaa !7
  %.unpack985 = ptrtoint ptr %.unpack to i64
  %.unpack629.unpack.unpack632 = load i64, ptr @_QFEima.8, align 8, !tbaa !7
  %.unpack670 = load ptr, ptr @_QFEimb.0, align 8, !tbaa !7
  %.unpack670928 = ptrtoint ptr %.unpack670 to i64
  %.unpack677.unpack.unpack680 = load i64, ptr @_QFEimb.8, align 8, !tbaa !7
  %69 = shl i64 %.unpack677.unpack.unpack680, 3
  %70 = shl i64 %.unpack677.unpack.unpack680, 3
  %71 = shl i64 %.0845, 3
  %72 = add i64 %71, %.unpack985
  %73 = shl i64 %.unpack629.unpack.unpack632, 3
  %74 = shl i64 %.unpack629.unpack.unpack632, 3
  %75 = shl i64 %.unpack629.unpack.unpack632, 3
  %76 = shl i64 %.unpack629.unpack.unpack632, 3
  %77 = shl i64 %.unpack629.unpack.unpack632, 3
  %78 = shl i64 %.unpack629.unpack.unpack632, 3
  br label %80

79:                                               ; preds = %_FortranASumInteger8x2_contract_simplified.exit
  %exitcond892.not = icmp eq i64 %93, %67
  br i1 %exitcond892.not, label %._crit_edge843, label %80

80:                                               ; preds = %.lr.ph842, %79
  %.0570840 = phi i64 [ 0, %.lr.ph842 ], [ %93, %79 ]
  %81 = phi ptr [ %_QFEtempa.promoted, %.lr.ph842 ], [ %518, %79 ]
  %82 = phi i64 [ %.promoted, %.lr.ph842 ], [ %517, %79 ]
  %83 = phi i64 [ %.promoted838, %.lr.ph842 ], [ %516, %79 ]
  %84 = ptrtoint ptr %81 to i64
  %85 = mul i64 %77, %.0570840
  %86 = add i64 %72, %85
  %87 = mul i64 %75, %.0570840
  %88 = add i64 %72, %87
  %89 = mul i64 %73, %.0570840
  %90 = add i64 %72, %89
  %91 = load i64, ptr %1, align 8, !tbaa !3
  %92 = call i64 @llvm.smax.i64(i64 %91, i64 0)
  %93 = add nuw i64 %.0570840, 1
  %.not = icmp eq ptr %81, null
  br i1 %.not, label %211, label %94

94:                                               ; preds = %80
  %95 = icmp ne i64 %82, %92
  %96 = icmp ne i64 %83, %92
  %97 = or i1 %95, %96
  br i1 %97, label %152, label %.preheader810

.preheader810:                                    ; preds = %94
  %.not849 = icmp slt i64 %91, 1
  br i1 %.not849, label %._crit_edge822.thread, label %.preheader805.us.preheader

.preheader805.us.preheader:                       ; preds = %.preheader810
  %98 = shl i64 %83, 3
  %min.iters.check1019 = icmp ult i64 %83, 4
  %n.vec1022 = and i64 %83, -4
  %cmp.n1024 = icmp eq i64 %83, %n.vec1022
  %xtraiter = and i64 %83, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader805.us

.preheader805.us:                                 ; preds = %.preheader805.us.preheader, %._crit_edge821.us
  %99 = phi i64 [ %151, %._crit_edge821.us ], [ 0, %.preheader805.us.preheader ]
  %100 = add i64 %.0570840, %99
  %101 = mul i64 %100, %.unpack629.unpack.unpack632
  %102 = add i64 %.0845, %101
  %103 = mul i64 %99, %83
  br i1 %min.iters.check1019, label %scalar.ph1018.preheader, label %vector.memcheck1015

vector.memcheck1015:                              ; preds = %.preheader805.us
  %104 = mul i64 %78, %99
  %105 = add i64 %86, %104
  %106 = mul i64 %98, %99
  %107 = add i64 %106, %84
  %108 = sub i64 %107, %105
  %diff.check1016 = icmp ult i64 %108, 32
  br i1 %diff.check1016, label %scalar.ph1018.preheader, label %vector.body1025

vector.body1025:                                  ; preds = %vector.memcheck1015, %vector.body1025
  %index1026 = phi i64 [ %index.next1029, %vector.body1025 ], [ 0, %vector.memcheck1015 ]
  %109 = add i64 %102, %index1026
  %110 = getelementptr i64, ptr %.unpack, i64 %109
  %wide.load1027 = load <2 x i64>, ptr %110, align 8, !tbaa !3
  %111 = getelementptr i64, ptr %110, i64 2
  %wide.load1028 = load <2 x i64>, ptr %111, align 8, !tbaa !3
  %112 = add i64 %index1026, %103
  %113 = getelementptr i64, ptr %81, i64 %112
  store <2 x i64> %wide.load1027, ptr %113, align 8, !tbaa !3
  %114 = getelementptr i64, ptr %113, i64 2
  store <2 x i64> %wide.load1028, ptr %114, align 8, !tbaa !3
  %index.next1029 = add nuw i64 %index1026, 4
  %115 = icmp eq i64 %index.next1029, %n.vec1022
  br i1 %115, label %middle.block1017, label %vector.body1025, !llvm.loop !9

middle.block1017:                                 ; preds = %vector.body1025
  br i1 %cmp.n1024, label %._crit_edge821.us, label %scalar.ph1018.preheader

scalar.ph1018.preheader:                          ; preds = %vector.memcheck1015, %.preheader805.us, %middle.block1017
  %.ph1038 = phi i64 [ 0, %vector.memcheck1015 ], [ 0, %.preheader805.us ], [ %n.vec1022, %middle.block1017 ]
  %116 = xor i64 %.ph1038, -1
  %117 = add i64 %83, %116
  br i1 %lcmp.mod.not, label %scalar.ph1018.prol.loopexit, label %scalar.ph1018.prol

scalar.ph1018.prol:                               ; preds = %scalar.ph1018.preheader, %scalar.ph1018.prol
  %118 = phi i64 [ %122, %scalar.ph1018.prol ], [ %.ph1038, %scalar.ph1018.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph1018.prol ], [ 0, %scalar.ph1018.preheader ]
  %119 = add i64 %102, %118
  %120 = getelementptr i64, ptr %.unpack, i64 %119
  %121 = load i64, ptr %120, align 8, !tbaa !3
  %122 = add nuw nsw i64 %118, 1
  %123 = add i64 %118, %103
  %124 = getelementptr i64, ptr %81, i64 %123
  store i64 %121, ptr %124, align 8, !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 %scalar.ph1018.prol.loopexit, label %scalar.ph1018.prol, !llvm.loop !12

scalar.ph1018.prol.loopexit:                      ; preds = %scalar.ph1018.prol, %scalar.ph1018.preheader
  %.unr = phi i64 [ %.ph1038, %scalar.ph1018.preheader ], [ %122, %scalar.ph1018.prol ]
  %125 = icmp ult i64 %117, 3
  br i1 %125, label %._crit_edge821.us, label %scalar.ph1018

scalar.ph1018:                                    ; preds = %scalar.ph1018.prol.loopexit, %scalar.ph1018
  %126 = phi i64 [ %148, %scalar.ph1018 ], [ %.unr, %scalar.ph1018.prol.loopexit ]
  %127 = add i64 %102, %126
  %128 = getelementptr i64, ptr %.unpack, i64 %127
  %129 = load i64, ptr %128, align 8, !tbaa !3
  %130 = add nuw nsw i64 %126, 1
  %131 = add i64 %126, %103
  %132 = getelementptr i64, ptr %81, i64 %131
  store i64 %129, ptr %132, align 8, !tbaa !3
  %133 = add i64 %102, %130
  %134 = getelementptr i64, ptr %.unpack, i64 %133
  %135 = load i64, ptr %134, align 8, !tbaa !3
  %136 = add nuw nsw i64 %126, 2
  %137 = add i64 %130, %103
  %138 = getelementptr i64, ptr %81, i64 %137
  store i64 %135, ptr %138, align 8, !tbaa !3
  %139 = add i64 %102, %136
  %140 = getelementptr i64, ptr %.unpack, i64 %139
  %141 = load i64, ptr %140, align 8, !tbaa !3
  %142 = add nuw nsw i64 %126, 3
  %143 = add i64 %136, %103
  %144 = getelementptr i64, ptr %81, i64 %143
  store i64 %141, ptr %144, align 8, !tbaa !3
  %145 = add i64 %102, %142
  %146 = getelementptr i64, ptr %.unpack, i64 %145
  %147 = load i64, ptr %146, align 8, !tbaa !3
  %148 = add nuw nsw i64 %126, 4
  %149 = add i64 %142, %103
  %150 = getelementptr i64, ptr %81, i64 %149
  store i64 %147, ptr %150, align 8, !tbaa !3
  %exitcond872.not.3 = icmp eq i64 %148, %83
  br i1 %exitcond872.not.3, label %._crit_edge821.us, label %scalar.ph1018, !llvm.loop !14

._crit_edge821.us:                                ; preds = %scalar.ph1018.prol.loopexit, %scalar.ph1018, %middle.block1017
  %151 = add nuw nsw i64 %99, 1
  %exitcond873.not = icmp eq i64 %151, %83
  br i1 %exitcond873.not, label %._crit_edge822.thread, label %.preheader805.us

152:                                              ; preds = %94
  %153 = shl i64 %92, 3
  %154 = mul i64 %153, %92
  %155 = call ptr @malloc(i64 %154)
  %156 = ptrtoint ptr %155 to i64
  %.not861 = icmp slt i64 %91, 1
  br i1 %.not861, label %.thread.thread900, label %.preheader804.lr.ph

.preheader804.lr.ph:                              ; preds = %152
  %157 = shl i64 %92, 3
  %min.iters.check1004 = icmp ult i64 %92, 4
  %n.vec1007 = and i64 %92, 9223372036854775804
  %cmp.n1009 = icmp eq i64 %92, %n.vec1007
  %xtraiter1043 = and i64 %92, 3
  %lcmp.mod1044.not = icmp eq i64 %xtraiter1043, 0
  br label %.lr.ph823

.lr.ph823:                                        ; preds = %._crit_edge824, %.preheader804.lr.ph
  %158 = phi i64 [ 0, %.preheader804.lr.ph ], [ %210, %._crit_edge824 ]
  %159 = add i64 %.0570840, %158
  %160 = mul i64 %159, %.unpack629.unpack.unpack632
  %161 = add i64 %.0845, %160
  %162 = mul i64 %158, %92
  br i1 %min.iters.check1004, label %scalar.ph1003.preheader, label %vector.memcheck1000

vector.memcheck1000:                              ; preds = %.lr.ph823
  %163 = mul i64 %76, %158
  %164 = add i64 %88, %163
  %165 = mul i64 %157, %158
  %166 = add i64 %165, %156
  %167 = sub i64 %166, %164
  %diff.check1001 = icmp ult i64 %167, 32
  br i1 %diff.check1001, label %scalar.ph1003.preheader, label %vector.body1010

vector.body1010:                                  ; preds = %vector.memcheck1000, %vector.body1010
  %index1011 = phi i64 [ %index.next1014, %vector.body1010 ], [ 0, %vector.memcheck1000 ]
  %168 = add i64 %161, %index1011
  %169 = getelementptr i64, ptr %.unpack, i64 %168
  %wide.load1012 = load <2 x i64>, ptr %169, align 8, !tbaa !3
  %170 = getelementptr i64, ptr %169, i64 2
  %wide.load1013 = load <2 x i64>, ptr %170, align 8, !tbaa !3
  %171 = add i64 %index1011, %162
  %172 = getelementptr i64, ptr %155, i64 %171
  store <2 x i64> %wide.load1012, ptr %172, align 8, !tbaa !3
  %173 = getelementptr i64, ptr %172, i64 2
  store <2 x i64> %wide.load1013, ptr %173, align 8, !tbaa !3
  %index.next1014 = add nuw i64 %index1011, 4
  %174 = icmp eq i64 %index.next1014, %n.vec1007
  br i1 %174, label %middle.block1002, label %vector.body1010, !llvm.loop !15

middle.block1002:                                 ; preds = %vector.body1010
  br i1 %cmp.n1009, label %._crit_edge824, label %scalar.ph1003.preheader

scalar.ph1003.preheader:                          ; preds = %vector.memcheck1000, %.lr.ph823, %middle.block1002
  %.ph1037 = phi i64 [ 0, %vector.memcheck1000 ], [ 0, %.lr.ph823 ], [ %n.vec1007, %middle.block1002 ]
  %175 = xor i64 %.ph1037, -1
  %176 = add nsw i64 %92, %175
  br i1 %lcmp.mod1044.not, label %scalar.ph1003.prol.loopexit, label %scalar.ph1003.prol

scalar.ph1003.prol:                               ; preds = %scalar.ph1003.preheader, %scalar.ph1003.prol
  %177 = phi i64 [ %181, %scalar.ph1003.prol ], [ %.ph1037, %scalar.ph1003.preheader ]
  %prol.iter1045 = phi i64 [ %prol.iter1045.next, %scalar.ph1003.prol ], [ 0, %scalar.ph1003.preheader ]
  %178 = add i64 %161, %177
  %179 = getelementptr i64, ptr %.unpack, i64 %178
  %180 = load i64, ptr %179, align 8, !tbaa !3
  %181 = add nuw nsw i64 %177, 1
  %182 = add i64 %177, %162
  %183 = getelementptr i64, ptr %155, i64 %182
  store i64 %180, ptr %183, align 8, !tbaa !3
  %prol.iter1045.next = add i64 %prol.iter1045, 1
  %prol.iter1045.cmp.not = icmp eq i64 %prol.iter1045.next, %xtraiter1043
  br i1 %prol.iter1045.cmp.not, label %scalar.ph1003.prol.loopexit, label %scalar.ph1003.prol, !llvm.loop !16

scalar.ph1003.prol.loopexit:                      ; preds = %scalar.ph1003.prol, %scalar.ph1003.preheader
  %.unr1046 = phi i64 [ %.ph1037, %scalar.ph1003.preheader ], [ %181, %scalar.ph1003.prol ]
  %184 = icmp ult i64 %176, 3
  br i1 %184, label %._crit_edge824, label %scalar.ph1003

scalar.ph1003:                                    ; preds = %scalar.ph1003.prol.loopexit, %scalar.ph1003
  %185 = phi i64 [ %207, %scalar.ph1003 ], [ %.unr1046, %scalar.ph1003.prol.loopexit ]
  %186 = add i64 %161, %185
  %187 = getelementptr i64, ptr %.unpack, i64 %186
  %188 = load i64, ptr %187, align 8, !tbaa !3
  %189 = add nuw nsw i64 %185, 1
  %190 = add i64 %185, %162
  %191 = getelementptr i64, ptr %155, i64 %190
  store i64 %188, ptr %191, align 8, !tbaa !3
  %192 = add i64 %161, %189
  %193 = getelementptr i64, ptr %.unpack, i64 %192
  %194 = load i64, ptr %193, align 8, !tbaa !3
  %195 = add nuw nsw i64 %185, 2
  %196 = add i64 %189, %162
  %197 = getelementptr i64, ptr %155, i64 %196
  store i64 %194, ptr %197, align 8, !tbaa !3
  %198 = add i64 %161, %195
  %199 = getelementptr i64, ptr %.unpack, i64 %198
  %200 = load i64, ptr %199, align 8, !tbaa !3
  %201 = add nuw nsw i64 %185, 3
  %202 = add i64 %195, %162
  %203 = getelementptr i64, ptr %155, i64 %202
  store i64 %200, ptr %203, align 8, !tbaa !3
  %204 = add i64 %161, %201
  %205 = getelementptr i64, ptr %.unpack, i64 %204
  %206 = load i64, ptr %205, align 8, !tbaa !3
  %207 = add nuw nsw i64 %185, 4
  %208 = add i64 %201, %162
  %209 = getelementptr i64, ptr %155, i64 %208
  store i64 %206, ptr %209, align 8, !tbaa !3
  %exitcond875.not.3 = icmp eq i64 %207, %92
  br i1 %exitcond875.not.3, label %._crit_edge824, label %scalar.ph1003, !llvm.loop !17

._crit_edge824:                                   ; preds = %scalar.ph1003.prol.loopexit, %scalar.ph1003, %middle.block1002
  %210 = add nuw nsw i64 %158, 1
  %exitcond876.not = icmp eq i64 %210, %92
  br i1 %exitcond876.not, label %.thread, label %.lr.ph823

211:                                              ; preds = %80
  %212 = shl i64 %92, 3
  %213 = mul i64 %212, %92
  %214 = call ptr @malloc(i64 %213)
  %215 = ptrtoint ptr %214 to i64
  %.not863 = icmp slt i64 %91, 1
  br i1 %.not863, label %._crit_edge822, label %.preheader803.lr.ph

.preheader803.lr.ph:                              ; preds = %211
  %216 = shl i64 %92, 3
  %min.iters.check989 = icmp ult i64 %92, 4
  %n.vec992 = and i64 %92, 9223372036854775804
  %cmp.n994 = icmp eq i64 %92, %n.vec992
  %xtraiter1047 = and i64 %92, 3
  %lcmp.mod1048.not = icmp eq i64 %xtraiter1047, 0
  br label %.lr.ph825

.lr.ph825:                                        ; preds = %._crit_edge826, %.preheader803.lr.ph
  %217 = phi i64 [ 0, %.preheader803.lr.ph ], [ %269, %._crit_edge826 ]
  %218 = add i64 %.0570840, %217
  %219 = mul i64 %218, %.unpack629.unpack.unpack632
  %220 = add i64 %.0845, %219
  %221 = mul i64 %217, %92
  br i1 %min.iters.check989, label %scalar.ph988.preheader, label %vector.memcheck984

vector.memcheck984:                               ; preds = %.lr.ph825
  %222 = mul i64 %74, %217
  %223 = add i64 %90, %222
  %224 = mul i64 %216, %217
  %225 = add i64 %224, %215
  %226 = sub i64 %225, %223
  %diff.check986 = icmp ult i64 %226, 32
  br i1 %diff.check986, label %scalar.ph988.preheader, label %vector.body995

vector.body995:                                   ; preds = %vector.memcheck984, %vector.body995
  %index996 = phi i64 [ %index.next999, %vector.body995 ], [ 0, %vector.memcheck984 ]
  %227 = add i64 %220, %index996
  %228 = getelementptr i64, ptr %.unpack, i64 %227
  %wide.load997 = load <2 x i64>, ptr %228, align 8, !tbaa !3
  %229 = getelementptr i64, ptr %228, i64 2
  %wide.load998 = load <2 x i64>, ptr %229, align 8, !tbaa !3
  %230 = add i64 %index996, %221
  %231 = getelementptr i64, ptr %214, i64 %230
  store <2 x i64> %wide.load997, ptr %231, align 8, !tbaa !3
  %232 = getelementptr i64, ptr %231, i64 2
  store <2 x i64> %wide.load998, ptr %232, align 8, !tbaa !3
  %index.next999 = add nuw i64 %index996, 4
  %233 = icmp eq i64 %index.next999, %n.vec992
  br i1 %233, label %middle.block987, label %vector.body995, !llvm.loop !18

middle.block987:                                  ; preds = %vector.body995
  br i1 %cmp.n994, label %._crit_edge826, label %scalar.ph988.preheader

scalar.ph988.preheader:                           ; preds = %vector.memcheck984, %.lr.ph825, %middle.block987
  %.ph1036 = phi i64 [ 0, %vector.memcheck984 ], [ 0, %.lr.ph825 ], [ %n.vec992, %middle.block987 ]
  %234 = xor i64 %.ph1036, -1
  %235 = add nsw i64 %92, %234
  br i1 %lcmp.mod1048.not, label %scalar.ph988.prol.loopexit, label %scalar.ph988.prol

scalar.ph988.prol:                                ; preds = %scalar.ph988.preheader, %scalar.ph988.prol
  %236 = phi i64 [ %240, %scalar.ph988.prol ], [ %.ph1036, %scalar.ph988.preheader ]
  %prol.iter1049 = phi i64 [ %prol.iter1049.next, %scalar.ph988.prol ], [ 0, %scalar.ph988.preheader ]
  %237 = add i64 %220, %236
  %238 = getelementptr i64, ptr %.unpack, i64 %237
  %239 = load i64, ptr %238, align 8, !tbaa !3
  %240 = add nuw nsw i64 %236, 1
  %241 = add i64 %236, %221
  %242 = getelementptr i64, ptr %214, i64 %241
  store i64 %239, ptr %242, align 8, !tbaa !3
  %prol.iter1049.next = add i64 %prol.iter1049, 1
  %prol.iter1049.cmp.not = icmp eq i64 %prol.iter1049.next, %xtraiter1047
  br i1 %prol.iter1049.cmp.not, label %scalar.ph988.prol.loopexit, label %scalar.ph988.prol, !llvm.loop !19

scalar.ph988.prol.loopexit:                       ; preds = %scalar.ph988.prol, %scalar.ph988.preheader
  %.unr1050 = phi i64 [ %.ph1036, %scalar.ph988.preheader ], [ %240, %scalar.ph988.prol ]
  %243 = icmp ult i64 %235, 3
  br i1 %243, label %._crit_edge826, label %scalar.ph988

scalar.ph988:                                     ; preds = %scalar.ph988.prol.loopexit, %scalar.ph988
  %244 = phi i64 [ %266, %scalar.ph988 ], [ %.unr1050, %scalar.ph988.prol.loopexit ]
  %245 = add i64 %220, %244
  %246 = getelementptr i64, ptr %.unpack, i64 %245
  %247 = load i64, ptr %246, align 8, !tbaa !3
  %248 = add nuw nsw i64 %244, 1
  %249 = add i64 %244, %221
  %250 = getelementptr i64, ptr %214, i64 %249
  store i64 %247, ptr %250, align 8, !tbaa !3
  %251 = add i64 %220, %248
  %252 = getelementptr i64, ptr %.unpack, i64 %251
  %253 = load i64, ptr %252, align 8, !tbaa !3
  %254 = add nuw nsw i64 %244, 2
  %255 = add i64 %248, %221
  %256 = getelementptr i64, ptr %214, i64 %255
  store i64 %253, ptr %256, align 8, !tbaa !3
  %257 = add i64 %220, %254
  %258 = getelementptr i64, ptr %.unpack, i64 %257
  %259 = load i64, ptr %258, align 8, !tbaa !3
  %260 = add nuw nsw i64 %244, 3
  %261 = add i64 %254, %221
  %262 = getelementptr i64, ptr %214, i64 %261
  store i64 %259, ptr %262, align 8, !tbaa !3
  %263 = add i64 %220, %260
  %264 = getelementptr i64, ptr %.unpack, i64 %263
  %265 = load i64, ptr %264, align 8, !tbaa !3
  %266 = add nuw nsw i64 %244, 4
  %267 = add i64 %260, %221
  %268 = getelementptr i64, ptr %214, i64 %267
  store i64 %265, ptr %268, align 8, !tbaa !3
  %exitcond878.not.3 = icmp eq i64 %266, %92
  br i1 %exitcond878.not.3, label %._crit_edge826, label %scalar.ph988, !llvm.loop !20

._crit_edge826:                                   ; preds = %scalar.ph988.prol.loopexit, %scalar.ph988, %middle.block987
  %269 = add nuw nsw i64 %217, 1
  %exitcond879.not = icmp eq i64 %269, %92
  br i1 %exitcond879.not, label %.thread, label %.lr.ph825

.thread:                                          ; preds = %._crit_edge824, %._crit_edge826
  %270 = phi ptr [ %214, %._crit_edge826 ], [ %155, %._crit_edge824 ]
  br i1 %.not, label %._crit_edge822, label %.thread.thread900

.thread.thread900:                                ; preds = %152, %.thread
  %271 = phi ptr [ %270, %.thread ], [ %155, %152 ]
  call void @free(ptr nonnull %81)
  br label %._crit_edge822

._crit_edge822.thread:                            ; preds = %._crit_edge821.us, %.preheader810
  %272 = call i64 @llvm.smax.i64(i64 %82, i64 0)
  %273 = call i64 @llvm.smax.i64(i64 %83, i64 0)
  br label %275

._crit_edge822:                                   ; preds = %211, %.thread, %.thread.thread900
  %274 = phi ptr [ %271, %.thread.thread900 ], [ %270, %.thread ], [ %214, %211 ]
  store ptr %274, ptr @_QFEtempa.0, align 8, !tbaa !7
  store i64 %92, ptr @_QFEtempa.8, align 8, !tbaa !7
  store i64 %92, ptr @_QFEtempa.11, align 8, !tbaa !7
  %.not686 = icmp eq ptr %274, null
  br i1 %.not686, label %507, label %275

275:                                              ; preds = %._crit_edge822.thread, %._crit_edge822
  %276 = phi i64 [ %273, %._crit_edge822.thread ], [ %92, %._crit_edge822 ]
  %277 = phi i64 [ %272, %._crit_edge822.thread ], [ %92, %._crit_edge822 ]
  %278 = phi ptr [ %81, %._crit_edge822.thread ], [ %274, %._crit_edge822 ]
  %279 = phi i64 [ %82, %._crit_edge822.thread ], [ %92, %._crit_edge822 ]
  %280 = phi i64 [ %83, %._crit_edge822.thread ], [ %92, %._crit_edge822 ]
  %281 = ptrtoint ptr %278 to i64
  %282 = or i64 %280, %279
  %.not715 = icmp sgt i64 %282, -1
  %283 = shl i64 %277, 3
  %284 = mul i64 %283, %276
  %285 = call ptr @malloc(i64 %284)
  %286 = ptrtoint ptr %285 to i64
  %.not852 = icmp slt i64 %280, 1
  br i1 %.not715, label %353, label %287

287:                                              ; preds = %275
  br i1 %.not852, label %.loopexit, label %.preheader802.lr.ph

.preheader802.lr.ph:                              ; preds = %287
  %.not851 = icmp slt i64 %279, 1
  %288 = shl i64 %277, 3
  %289 = shl i64 %279, 3
  %min.iters.check971 = icmp ult i64 %277, 8
  %n.vec974 = and i64 %277, 9223372036854775804
  %cmp.n976 = icmp eq i64 %277, %n.vec974
  %xtraiter1051 = and i64 %277, 1
  %lcmp.mod1052.not = icmp eq i64 %xtraiter1051, 0
  br label %.preheader802

.preheader802:                                    ; preds = %.preheader802.lr.ph, %._crit_edge828
  %290 = phi i64 [ 0, %.preheader802.lr.ph ], [ %352, %._crit_edge828 ]
  %291 = mul i64 %288, %290
  %292 = add i64 %291, %286
  %293 = mul i64 %70, %290
  %294 = add i64 %293, %.unpack670928
  %295 = mul i64 %289, %290
  %296 = add i64 %295, %281
  br i1 %.not851, label %._crit_edge828, label %.lr.ph827

.lr.ph827:                                        ; preds = %.preheader802
  %297 = mul i64 %290, %279
  %298 = mul i64 %290, %.unpack677.unpack.unpack680
  %299 = mul i64 %290, %277
  br i1 %min.iters.check971, label %scalar.ph970.preheader, label %vector.memcheck963

vector.memcheck963:                               ; preds = %.lr.ph827
  %300 = sub i64 %292, %294
  %diff.check964 = icmp ult i64 %300, 32
  %301 = sub i64 %292, %296
  %diff.check965 = icmp ult i64 %301, 32
  %conflict.rdx966 = or i1 %diff.check964, %diff.check965
  %302 = sub i64 %292, %294
  %diff.check967 = icmp ult i64 %302, 32
  %conflict.rdx968 = or i1 %conflict.rdx966, %diff.check967
  br i1 %conflict.rdx968, label %scalar.ph970.preheader, label %vector.body977

vector.body977:                                   ; preds = %vector.memcheck963, %vector.body977
  %index978 = phi i64 [ %index.next983, %vector.body977 ], [ 0, %vector.memcheck963 ]
  %303 = add i64 %index978, %297
  %304 = getelementptr i64, ptr %278, i64 %303
  %wide.load979 = load <2 x i64>, ptr %304, align 8, !tbaa !3
  %305 = getelementptr i64, ptr %304, i64 2
  %wide.load980 = load <2 x i64>, ptr %305, align 8, !tbaa !3
  %306 = add i64 %index978, %298
  %307 = getelementptr i64, ptr %.unpack670, i64 %306
  %wide.load981 = load <2 x i64>, ptr %307, align 8, !tbaa !3
  %308 = getelementptr i64, ptr %307, i64 2
  %wide.load982 = load <2 x i64>, ptr %308, align 8, !tbaa !3
  %309 = sub <2 x i64> %wide.load979, %wide.load981
  %310 = sub <2 x i64> %wide.load980, %wide.load982
  %311 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %309, i1 false)
  %312 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %310, i1 false)
  %313 = add i64 %index978, %299
  %314 = getelementptr i64, ptr %285, i64 %313
  store <2 x i64> %311, ptr %314, align 8, !tbaa !3
  %315 = getelementptr i64, ptr %314, i64 2
  store <2 x i64> %312, ptr %315, align 8, !tbaa !3
  %index.next983 = add nuw i64 %index978, 4
  %316 = icmp eq i64 %index.next983, %n.vec974
  br i1 %316, label %middle.block969, label %vector.body977, !llvm.loop !21

middle.block969:                                  ; preds = %vector.body977
  br i1 %cmp.n976, label %._crit_edge828, label %scalar.ph970.preheader

scalar.ph970.preheader:                           ; preds = %vector.memcheck963, %.lr.ph827, %middle.block969
  %.ph1035 = phi i64 [ 0, %vector.memcheck963 ], [ 0, %.lr.ph827 ], [ %n.vec974, %middle.block969 ]
  %.neg = or i64 %.ph1035, 1
  br i1 %lcmp.mod1052.not, label %scalar.ph970.prol.loopexit, label %scalar.ph970.prol

scalar.ph970.prol:                                ; preds = %scalar.ph970.preheader
  %317 = add i64 %.ph1035, %297
  %318 = getelementptr i64, ptr %278, i64 %317
  %319 = load i64, ptr %318, align 8, !tbaa !3
  %320 = add i64 %.ph1035, %298
  %321 = getelementptr i64, ptr %.unpack670, i64 %320
  %322 = load i64, ptr %321, align 8, !tbaa !3
  %323 = sub i64 %319, %322
  %324 = call i64 @llvm.abs.i64(i64 %323, i1 false)
  %325 = or i64 %.ph1035, 1
  %326 = add i64 %.ph1035, %299
  %327 = getelementptr i64, ptr %285, i64 %326
  store i64 %324, ptr %327, align 8, !tbaa !3
  br label %scalar.ph970.prol.loopexit

scalar.ph970.prol.loopexit:                       ; preds = %scalar.ph970.prol, %scalar.ph970.preheader
  %.unr1054 = phi i64 [ %.ph1035, %scalar.ph970.preheader ], [ %325, %scalar.ph970.prol ]
  %328 = icmp eq i64 %277, %.neg
  br i1 %328, label %._crit_edge828, label %scalar.ph970

scalar.ph970:                                     ; preds = %scalar.ph970.prol.loopexit, %scalar.ph970
  %329 = phi i64 [ %349, %scalar.ph970 ], [ %.unr1054, %scalar.ph970.prol.loopexit ]
  %330 = add i64 %329, %297
  %331 = getelementptr i64, ptr %278, i64 %330
  %332 = load i64, ptr %331, align 8, !tbaa !3
  %333 = add i64 %329, %298
  %334 = getelementptr i64, ptr %.unpack670, i64 %333
  %335 = load i64, ptr %334, align 8, !tbaa !3
  %336 = sub i64 %332, %335
  %337 = call i64 @llvm.abs.i64(i64 %336, i1 false)
  %338 = add nuw nsw i64 %329, 1
  %339 = add i64 %329, %299
  %340 = getelementptr i64, ptr %285, i64 %339
  store i64 %337, ptr %340, align 8, !tbaa !3
  %341 = add i64 %338, %297
  %342 = getelementptr i64, ptr %278, i64 %341
  %343 = load i64, ptr %342, align 8, !tbaa !3
  %344 = add i64 %338, %298
  %345 = getelementptr i64, ptr %.unpack670, i64 %344
  %346 = load i64, ptr %345, align 8, !tbaa !3
  %347 = sub i64 %343, %346
  %348 = call i64 @llvm.abs.i64(i64 %347, i1 false)
  %349 = add nuw nsw i64 %329, 2
  %350 = add i64 %338, %299
  %351 = getelementptr i64, ptr %285, i64 %350
  store i64 %348, ptr %351, align 8, !tbaa !3
  %exitcond880.not.1 = icmp eq i64 %349, %277
  br i1 %exitcond880.not.1, label %._crit_edge828, label %scalar.ph970, !llvm.loop !22

._crit_edge828:                                   ; preds = %scalar.ph970.prol.loopexit, %scalar.ph970, %middle.block969, %.preheader802
  %352 = add nuw nsw i64 %290, 1
  %exitcond881.not = icmp eq i64 %352, %276
  br i1 %exitcond881.not, label %.loopexit, label %.preheader802

353:                                              ; preds = %275
  br i1 %.not852, label %._crit_edge835, label %.preheader801.lr.ph

.preheader801.lr.ph:                              ; preds = %353
  %.not857 = icmp slt i64 %279, 1
  %354 = shl i64 %277, 3
  %min.iters.check952 = icmp ult i64 %277, 4
  %n.vec955 = and i64 %277, 9223372036854775804
  %cmp.n957 = icmp eq i64 %277, %n.vec955
  %xtraiter1055 = and i64 %277, 3
  %lcmp.mod1056.not = icmp eq i64 %xtraiter1055, 0
  br label %.preheader801

.preheader807:                                    ; preds = %._crit_edge830
  br i1 %.not852, label %._crit_edge835, label %.preheader800.lr.ph

.preheader800.lr.ph:                              ; preds = %.preheader807
  %.not856 = icmp slt i64 %279, 1
  %355 = shl i64 %277, 3
  %356 = shl i64 %279, 3
  %min.iters.check935 = icmp ult i64 %277, 8
  %n.vec938 = and i64 %277, 9223372036854775804
  %cmp.n940 = icmp eq i64 %277, %n.vec938
  %xtraiter1059 = and i64 %277, 1
  %lcmp.mod1060.not = icmp eq i64 %xtraiter1059, 0
  br label %.preheader800

.preheader801:                                    ; preds = %.preheader801.lr.ph, %._crit_edge830
  %357 = phi i64 [ 0, %.preheader801.lr.ph ], [ %399, %._crit_edge830 ]
  br i1 %.not857, label %._crit_edge830, label %.lr.ph829

.lr.ph829:                                        ; preds = %.preheader801
  %358 = mul i64 %354, %357
  %359 = add i64 %358, %281
  %360 = add i64 %358, %286
  %361 = mul i64 %357, %277
  %362 = sub i64 %360, %359
  %diff.check949 = icmp ult i64 %362, 32
  %or.cond = select i1 %min.iters.check952, i1 true, i1 %diff.check949
  br i1 %or.cond, label %scalar.ph951.preheader, label %vector.body958

vector.body958:                                   ; preds = %.lr.ph829, %vector.body958
  %index959 = phi i64 [ %index.next962, %vector.body958 ], [ 0, %.lr.ph829 ]
  %363 = add i64 %index959, %361
  %364 = getelementptr i64, ptr %278, i64 %363
  %365 = getelementptr i64, ptr %285, i64 %363
  %wide.load960 = load <2 x i64>, ptr %364, align 8, !tbaa !3
  %366 = getelementptr i64, ptr %364, i64 2
  %wide.load961 = load <2 x i64>, ptr %366, align 8, !tbaa !3
  store <2 x i64> %wide.load960, ptr %365, align 8, !tbaa !3
  %367 = getelementptr i64, ptr %365, i64 2
  store <2 x i64> %wide.load961, ptr %367, align 8, !tbaa !3
  %index.next962 = add nuw i64 %index959, 4
  %368 = icmp eq i64 %index.next962, %n.vec955
  br i1 %368, label %middle.block950, label %vector.body958, !llvm.loop !23

middle.block950:                                  ; preds = %vector.body958
  br i1 %cmp.n957, label %._crit_edge830, label %scalar.ph951.preheader

scalar.ph951.preheader:                           ; preds = %.lr.ph829, %middle.block950
  %.ph1034 = phi i64 [ 0, %.lr.ph829 ], [ %n.vec955, %middle.block950 ]
  %369 = xor i64 %.ph1034, -1
  %370 = add nsw i64 %277, %369
  br i1 %lcmp.mod1056.not, label %scalar.ph951.prol.loopexit, label %scalar.ph951.prol

scalar.ph951.prol:                                ; preds = %scalar.ph951.preheader, %scalar.ph951.prol
  %371 = phi i64 [ %372, %scalar.ph951.prol ], [ %.ph1034, %scalar.ph951.preheader ]
  %prol.iter1057 = phi i64 [ %prol.iter1057.next, %scalar.ph951.prol ], [ 0, %scalar.ph951.preheader ]
  %372 = add nuw nsw i64 %371, 1
  %373 = add i64 %371, %361
  %374 = getelementptr i64, ptr %278, i64 %373
  %375 = getelementptr i64, ptr %285, i64 %373
  %376 = load i64, ptr %374, align 8, !tbaa !3
  store i64 %376, ptr %375, align 8, !tbaa !3
  %prol.iter1057.next = add i64 %prol.iter1057, 1
  %prol.iter1057.cmp.not = icmp eq i64 %prol.iter1057.next, %xtraiter1055
  br i1 %prol.iter1057.cmp.not, label %scalar.ph951.prol.loopexit, label %scalar.ph951.prol, !llvm.loop !24

scalar.ph951.prol.loopexit:                       ; preds = %scalar.ph951.prol, %scalar.ph951.preheader
  %.unr1058 = phi i64 [ %.ph1034, %scalar.ph951.preheader ], [ %372, %scalar.ph951.prol ]
  %377 = icmp ult i64 %370, 3
  br i1 %377, label %._crit_edge830, label %scalar.ph951

scalar.ph951:                                     ; preds = %scalar.ph951.prol.loopexit, %scalar.ph951
  %378 = phi i64 [ %394, %scalar.ph951 ], [ %.unr1058, %scalar.ph951.prol.loopexit ]
  %379 = add nuw nsw i64 %378, 1
  %380 = add i64 %378, %361
  %381 = getelementptr i64, ptr %278, i64 %380
  %382 = getelementptr i64, ptr %285, i64 %380
  %383 = load i64, ptr %381, align 8, !tbaa !3
  store i64 %383, ptr %382, align 8, !tbaa !3
  %384 = add nuw nsw i64 %378, 2
  %385 = add i64 %379, %361
  %386 = getelementptr i64, ptr %278, i64 %385
  %387 = getelementptr i64, ptr %285, i64 %385
  %388 = load i64, ptr %386, align 8, !tbaa !3
  store i64 %388, ptr %387, align 8, !tbaa !3
  %389 = add nuw nsw i64 %378, 3
  %390 = add i64 %384, %361
  %391 = getelementptr i64, ptr %278, i64 %390
  %392 = getelementptr i64, ptr %285, i64 %390
  %393 = load i64, ptr %391, align 8, !tbaa !3
  store i64 %393, ptr %392, align 8, !tbaa !3
  %394 = add nuw nsw i64 %378, 4
  %395 = add i64 %389, %361
  %396 = getelementptr i64, ptr %278, i64 %395
  %397 = getelementptr i64, ptr %285, i64 %395
  %398 = load i64, ptr %396, align 8, !tbaa !3
  store i64 %398, ptr %397, align 8, !tbaa !3
  %exitcond883.not.3 = icmp eq i64 %394, %277
  br i1 %exitcond883.not.3, label %._crit_edge830, label %scalar.ph951, !llvm.loop !25

._crit_edge830:                                   ; preds = %scalar.ph951.prol.loopexit, %scalar.ph951, %middle.block950, %.preheader801
  %399 = add nuw nsw i64 %357, 1
  %exitcond884.not = icmp eq i64 %399, %276
  br i1 %exitcond884.not, label %.preheader807, label %.preheader801

.preheader806:                                    ; preds = %._crit_edge832
  br i1 %.not852, label %._crit_edge835, label %.preheader799.lr.ph

.preheader799.lr.ph:                              ; preds = %.preheader806
  %.not855 = icmp slt i64 %279, 1
  %400 = shl i64 %277, 3
  %min.iters.check916 = icmp ult i64 %277, 4
  %n.vec919 = and i64 %277, 9223372036854775804
  %cmp.n921 = icmp eq i64 %277, %n.vec919
  %xtraiter1063 = and i64 %277, 3
  %lcmp.mod1064.not = icmp eq i64 %xtraiter1063, 0
  br label %.preheader799

.preheader800:                                    ; preds = %.preheader800.lr.ph, %._crit_edge832
  %401 = phi i64 [ 0, %.preheader800.lr.ph ], [ %463, %._crit_edge832 ]
  %402 = mul i64 %355, %401
  %403 = add i64 %402, %286
  %404 = mul i64 %69, %401
  %405 = add i64 %404, %.unpack670928
  %406 = mul i64 %356, %401
  %407 = add i64 %406, %281
  br i1 %.not856, label %._crit_edge832, label %.lr.ph831

.lr.ph831:                                        ; preds = %.preheader800
  %408 = mul i64 %401, %279
  %409 = mul i64 %401, %.unpack677.unpack.unpack680
  %410 = mul i64 %401, %277
  br i1 %min.iters.check935, label %scalar.ph934.preheader, label %vector.memcheck927

vector.memcheck927:                               ; preds = %.lr.ph831
  %411 = sub i64 %403, %405
  %diff.check929 = icmp ult i64 %411, 32
  %412 = sub i64 %403, %407
  %diff.check930 = icmp ult i64 %412, 32
  %conflict.rdx = or i1 %diff.check929, %diff.check930
  %413 = sub i64 %403, %405
  %diff.check931 = icmp ult i64 %413, 32
  %conflict.rdx932 = or i1 %conflict.rdx, %diff.check931
  br i1 %conflict.rdx932, label %scalar.ph934.preheader, label %vector.body941

vector.body941:                                   ; preds = %vector.memcheck927, %vector.body941
  %index942 = phi i64 [ %index.next947, %vector.body941 ], [ 0, %vector.memcheck927 ]
  %414 = add i64 %index942, %408
  %415 = getelementptr i64, ptr %278, i64 %414
  %wide.load943 = load <2 x i64>, ptr %415, align 8, !tbaa !3
  %416 = getelementptr i64, ptr %415, i64 2
  %wide.load944 = load <2 x i64>, ptr %416, align 8, !tbaa !3
  %417 = add i64 %index942, %409
  %418 = getelementptr i64, ptr %.unpack670, i64 %417
  %wide.load945 = load <2 x i64>, ptr %418, align 8, !tbaa !3
  %419 = getelementptr i64, ptr %418, i64 2
  %wide.load946 = load <2 x i64>, ptr %419, align 8, !tbaa !3
  %420 = sub <2 x i64> %wide.load943, %wide.load945
  %421 = sub <2 x i64> %wide.load944, %wide.load946
  %422 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %420, i1 false)
  %423 = call <2 x i64> @llvm.abs.v2i64(<2 x i64> %421, i1 false)
  %424 = add i64 %index942, %410
  %425 = getelementptr i64, ptr %285, i64 %424
  store <2 x i64> %422, ptr %425, align 8, !tbaa !3
  %426 = getelementptr i64, ptr %425, i64 2
  store <2 x i64> %423, ptr %426, align 8, !tbaa !3
  %index.next947 = add nuw i64 %index942, 4
  %427 = icmp eq i64 %index.next947, %n.vec938
  br i1 %427, label %middle.block933, label %vector.body941, !llvm.loop !26

middle.block933:                                  ; preds = %vector.body941
  br i1 %cmp.n940, label %._crit_edge832, label %scalar.ph934.preheader

scalar.ph934.preheader:                           ; preds = %vector.memcheck927, %.lr.ph831, %middle.block933
  %.ph1033 = phi i64 [ 0, %vector.memcheck927 ], [ 0, %.lr.ph831 ], [ %n.vec938, %middle.block933 ]
  %.neg1067 = or i64 %.ph1033, 1
  br i1 %lcmp.mod1060.not, label %scalar.ph934.prol.loopexit, label %scalar.ph934.prol

scalar.ph934.prol:                                ; preds = %scalar.ph934.preheader
  %428 = add i64 %.ph1033, %408
  %429 = getelementptr i64, ptr %278, i64 %428
  %430 = load i64, ptr %429, align 8, !tbaa !3
  %431 = add i64 %.ph1033, %409
  %432 = getelementptr i64, ptr %.unpack670, i64 %431
  %433 = load i64, ptr %432, align 8, !tbaa !3
  %434 = sub i64 %430, %433
  %435 = call i64 @llvm.abs.i64(i64 %434, i1 false)
  %436 = or i64 %.ph1033, 1
  %437 = add i64 %.ph1033, %410
  %438 = getelementptr i64, ptr %285, i64 %437
  store i64 %435, ptr %438, align 8, !tbaa !3
  br label %scalar.ph934.prol.loopexit

scalar.ph934.prol.loopexit:                       ; preds = %scalar.ph934.prol, %scalar.ph934.preheader
  %.unr1062 = phi i64 [ %.ph1033, %scalar.ph934.preheader ], [ %436, %scalar.ph934.prol ]
  %439 = icmp eq i64 %277, %.neg1067
  br i1 %439, label %._crit_edge832, label %scalar.ph934

scalar.ph934:                                     ; preds = %scalar.ph934.prol.loopexit, %scalar.ph934
  %440 = phi i64 [ %460, %scalar.ph934 ], [ %.unr1062, %scalar.ph934.prol.loopexit ]
  %441 = add i64 %440, %408
  %442 = getelementptr i64, ptr %278, i64 %441
  %443 = load i64, ptr %442, align 8, !tbaa !3
  %444 = add i64 %440, %409
  %445 = getelementptr i64, ptr %.unpack670, i64 %444
  %446 = load i64, ptr %445, align 8, !tbaa !3
  %447 = sub i64 %443, %446
  %448 = call i64 @llvm.abs.i64(i64 %447, i1 false)
  %449 = add nuw nsw i64 %440, 1
  %450 = add i64 %440, %410
  %451 = getelementptr i64, ptr %285, i64 %450
  store i64 %448, ptr %451, align 8, !tbaa !3
  %452 = add i64 %449, %408
  %453 = getelementptr i64, ptr %278, i64 %452
  %454 = load i64, ptr %453, align 8, !tbaa !3
  %455 = add i64 %449, %409
  %456 = getelementptr i64, ptr %.unpack670, i64 %455
  %457 = load i64, ptr %456, align 8, !tbaa !3
  %458 = sub i64 %454, %457
  %459 = call i64 @llvm.abs.i64(i64 %458, i1 false)
  %460 = add nuw nsw i64 %440, 2
  %461 = add i64 %449, %410
  %462 = getelementptr i64, ptr %285, i64 %461
  store i64 %459, ptr %462, align 8, !tbaa !3
  %exitcond885.not.1 = icmp eq i64 %460, %277
  br i1 %exitcond885.not.1, label %._crit_edge832, label %scalar.ph934, !llvm.loop !27

._crit_edge832:                                   ; preds = %scalar.ph934.prol.loopexit, %scalar.ph934, %middle.block933, %.preheader800
  %463 = add nuw nsw i64 %401, 1
  %exitcond886.not = icmp eq i64 %463, %276
  br i1 %exitcond886.not, label %.preheader806, label %.preheader800

.preheader799:                                    ; preds = %.preheader799.lr.ph, %._crit_edge834
  %464 = phi i64 [ 0, %.preheader799.lr.ph ], [ %506, %._crit_edge834 ]
  br i1 %.not855, label %._crit_edge834, label %.lr.ph833

.lr.ph833:                                        ; preds = %.preheader799
  %465 = mul i64 %400, %464
  %466 = add i64 %465, %286
  %467 = add i64 %465, %281
  %468 = mul i64 %464, %277
  %469 = sub i64 %467, %466
  %diff.check = icmp ult i64 %469, 32
  %or.cond1030 = select i1 %min.iters.check916, i1 true, i1 %diff.check
  br i1 %or.cond1030, label %scalar.ph915.preheader, label %vector.body922

vector.body922:                                   ; preds = %.lr.ph833, %vector.body922
  %index923 = phi i64 [ %index.next926, %vector.body922 ], [ 0, %.lr.ph833 ]
  %470 = add i64 %index923, %468
  %471 = getelementptr i64, ptr %285, i64 %470
  %472 = getelementptr i64, ptr %278, i64 %470
  %wide.load924 = load <2 x i64>, ptr %471, align 8, !tbaa !3
  %473 = getelementptr i64, ptr %471, i64 2
  %wide.load925 = load <2 x i64>, ptr %473, align 8, !tbaa !3
  store <2 x i64> %wide.load924, ptr %472, align 8, !tbaa !3
  %474 = getelementptr i64, ptr %472, i64 2
  store <2 x i64> %wide.load925, ptr %474, align 8, !tbaa !3
  %index.next926 = add nuw i64 %index923, 4
  %475 = icmp eq i64 %index.next926, %n.vec919
  br i1 %475, label %middle.block914, label %vector.body922, !llvm.loop !28

middle.block914:                                  ; preds = %vector.body922
  br i1 %cmp.n921, label %._crit_edge834, label %scalar.ph915.preheader

scalar.ph915.preheader:                           ; preds = %.lr.ph833, %middle.block914
  %.ph1032 = phi i64 [ 0, %.lr.ph833 ], [ %n.vec919, %middle.block914 ]
  %476 = xor i64 %.ph1032, -1
  %477 = add nsw i64 %277, %476
  br i1 %lcmp.mod1064.not, label %scalar.ph915.prol.loopexit, label %scalar.ph915.prol

scalar.ph915.prol:                                ; preds = %scalar.ph915.preheader, %scalar.ph915.prol
  %478 = phi i64 [ %479, %scalar.ph915.prol ], [ %.ph1032, %scalar.ph915.preheader ]
  %prol.iter1065 = phi i64 [ %prol.iter1065.next, %scalar.ph915.prol ], [ 0, %scalar.ph915.preheader ]
  %479 = add nuw nsw i64 %478, 1
  %480 = add i64 %478, %468
  %481 = getelementptr i64, ptr %285, i64 %480
  %482 = getelementptr i64, ptr %278, i64 %480
  %483 = load i64, ptr %481, align 8, !tbaa !3
  store i64 %483, ptr %482, align 8, !tbaa !3
  %prol.iter1065.next = add i64 %prol.iter1065, 1
  %prol.iter1065.cmp.not = icmp eq i64 %prol.iter1065.next, %xtraiter1063
  br i1 %prol.iter1065.cmp.not, label %scalar.ph915.prol.loopexit, label %scalar.ph915.prol, !llvm.loop !29

scalar.ph915.prol.loopexit:                       ; preds = %scalar.ph915.prol, %scalar.ph915.preheader
  %.unr1066 = phi i64 [ %.ph1032, %scalar.ph915.preheader ], [ %479, %scalar.ph915.prol ]
  %484 = icmp ult i64 %477, 3
  br i1 %484, label %._crit_edge834, label %scalar.ph915

scalar.ph915:                                     ; preds = %scalar.ph915.prol.loopexit, %scalar.ph915
  %485 = phi i64 [ %501, %scalar.ph915 ], [ %.unr1066, %scalar.ph915.prol.loopexit ]
  %486 = add nuw nsw i64 %485, 1
  %487 = add i64 %485, %468
  %488 = getelementptr i64, ptr %285, i64 %487
  %489 = getelementptr i64, ptr %278, i64 %487
  %490 = load i64, ptr %488, align 8, !tbaa !3
  store i64 %490, ptr %489, align 8, !tbaa !3
  %491 = add nuw nsw i64 %485, 2
  %492 = add i64 %486, %468
  %493 = getelementptr i64, ptr %285, i64 %492
  %494 = getelementptr i64, ptr %278, i64 %492
  %495 = load i64, ptr %493, align 8, !tbaa !3
  store i64 %495, ptr %494, align 8, !tbaa !3
  %496 = add nuw nsw i64 %485, 3
  %497 = add i64 %491, %468
  %498 = getelementptr i64, ptr %285, i64 %497
  %499 = getelementptr i64, ptr %278, i64 %497
  %500 = load i64, ptr %498, align 8, !tbaa !3
  store i64 %500, ptr %499, align 8, !tbaa !3
  %501 = add nuw nsw i64 %485, 4
  %502 = add i64 %496, %468
  %503 = getelementptr i64, ptr %285, i64 %502
  %504 = getelementptr i64, ptr %278, i64 %502
  %505 = load i64, ptr %503, align 8, !tbaa !3
  store i64 %505, ptr %504, align 8, !tbaa !3
  %exitcond888.not.3 = icmp eq i64 %501, %277
  br i1 %exitcond888.not.3, label %._crit_edge834, label %scalar.ph915, !llvm.loop !30

._crit_edge834:                                   ; preds = %scalar.ph915.prol.loopexit, %scalar.ph915, %middle.block914, %.preheader799
  %506 = add nuw nsw i64 %464, 1
  %exitcond889.not = icmp eq i64 %506, %276
  br i1 %exitcond889.not, label %._crit_edge835, label %.preheader799

507:                                              ; preds = %._crit_edge822
  %508 = shl i64 %92, 3
  %509 = mul i64 %508, %92
  %510 = call ptr @malloc(i64 %509)
  %.not858 = icmp slt i64 %91, 1
  call void @llvm.assume(i1 %.not858)
  br label %.loopexit.thread

._crit_edge835:                                   ; preds = %._crit_edge834, %353, %.preheader807, %.preheader806
  call void @free(ptr %285)
  br label %513

.loopexit:                                        ; preds = %._crit_edge828, %287
  call void @free(ptr nonnull %278)
  br label %.loopexit.thread

.loopexit.thread:                                 ; preds = %507, %.loopexit
  %.ph793906 = phi ptr [ %285, %.loopexit ], [ %510, %507 ]
  %511 = phi i64 [ %277, %.loopexit ], [ %92, %507 ]
  %512 = phi i64 [ %276, %.loopexit ], [ %92, %507 ]
  store ptr %.ph793906, ptr @_QFEtempa.0, align 8, !tbaa !7
  store i64 %511, ptr @_QFEtempa.8, align 8, !tbaa !7
  store i64 %512, ptr @_QFEtempa.11, align 8, !tbaa !7
  br label %513

513:                                              ; preds = %._crit_edge835, %.loopexit.thread
  %514 = phi i64 [ %276, %._crit_edge835 ], [ %512, %.loopexit.thread ]
  %515 = phi i64 [ %277, %._crit_edge835 ], [ %511, %.loopexit.thread ]
  %516 = phi i64 [ %280, %._crit_edge835 ], [ %512, %.loopexit.thread ]
  %517 = phi i64 [ %279, %._crit_edge835 ], [ %511, %.loopexit.thread ]
  %518 = phi ptr [ %278, %._crit_edge835 ], [ %.ph793906, %.loopexit.thread ]
  %519 = icmp sgt i64 %516, 0
  %520 = icmp sgt i64 %517, 0
  %or.cond.i = select i1 %519, i1 %520, i1 false
  br i1 %or.cond.i, label %.preheader.us.i.preheader, label %_FortranASumInteger8x2_contract_simplified.exit.thread

.preheader.us.i.preheader:                        ; preds = %513
  %min.iters.check = icmp ult i64 %515, 4
  %n.vec = and i64 %515, -4
  %cmp.n = icmp eq i64 %515, %n.vec
  br label %.preheader.us.i

.preheader.us.i:                                  ; preds = %.preheader.us.i.preheader, %._crit_edge.us.i
  %521 = phi i64 [ %.lcssa, %._crit_edge.us.i ], [ 0, %.preheader.us.i.preheader ]
  %522 = phi i64 [ %539, %._crit_edge.us.i ], [ 0, %.preheader.us.i.preheader ]
  %523 = mul i64 %522, %517
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.preheader.us.i
  %524 = insertelement <2 x i64> <i64 poison, i64 0>, i64 %521, i64 0
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i64> [ %524, %vector.ph ], [ %529, %vector.body ]
  %vec.phi912 = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %530, %vector.body ]
  %525 = add i64 %index, %523
  %526 = shl i64 %525, 3
  %527 = getelementptr i8, ptr %518, i64 %526
  %wide.load = load <2 x i64>, ptr %527, align 8, !tbaa !3
  %528 = getelementptr i64, ptr %527, i64 2
  %wide.load913 = load <2 x i64>, ptr %528, align 8, !tbaa !3
  %529 = add <2 x i64> %wide.load, %vec.phi
  %530 = add <2 x i64> %wide.load913, %vec.phi912
  %index.next = add nuw i64 %index, 4
  %531 = icmp eq i64 %index.next, %n.vec
  br i1 %531, label %middle.block, label %vector.body, !llvm.loop !31

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <2 x i64> %530, %529
  %532 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  br i1 %cmp.n, label %._crit_edge.us.i, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.preheader.us.i, %middle.block
  %.ph = phi i64 [ %521, %.preheader.us.i ], [ %532, %middle.block ]
  %.ph1031 = phi i64 [ 0, %.preheader.us.i ], [ %n.vec, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %533 = phi i64 [ %537, %scalar.ph ], [ %.ph, %scalar.ph.preheader ]
  %534 = phi i64 [ %538, %scalar.ph ], [ %.ph1031, %scalar.ph.preheader ]
  %reass.add = add i64 %534, %523
  %reass.mul = shl i64 %reass.add, 3
  %535 = getelementptr i8, ptr %518, i64 %reass.mul
  %536 = load i64, ptr %535, align 8, !tbaa !3
  %537 = add i64 %536, %533
  %538 = add nuw nsw i64 %534, 1
  %exitcond.not.i = icmp eq i64 %538, %515
  br i1 %exitcond.not.i, label %._crit_edge.us.i, label %scalar.ph, !llvm.loop !32

._crit_edge.us.i:                                 ; preds = %scalar.ph, %middle.block
  %.lcssa = phi i64 [ %532, %middle.block ], [ %537, %scalar.ph ]
  %539 = add nuw nsw i64 %522, 1
  %exitcond5.not.i = icmp eq i64 %539, %514
  br i1 %exitcond5.not.i, label %_FortranASumInteger8x2_contract_simplified.exit, label %.preheader.us.i

_FortranASumInteger8x2_contract_simplified.exit:  ; preds = %._crit_edge.us.i
  %540 = icmp eq i64 %.lcssa, 0
  br i1 %540, label %_FortranASumInteger8x2_contract_simplified.exit.thread, label %79

_FortranASumInteger8x2_contract_simplified.exit.thread: ; preds = %513, %_FortranASumInteger8x2_contract_simplified.exit
  %541 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.442b5ec568b2f809571b9384f7840903, i32 37)
  %542 = call i1 @_FortranAioOutputAscii(ptr %541, ptr nonnull @_QQcl.596573, i64 3)
  %543 = call i32 @_FortranAioEndIoStatement(ptr %541)
  %544 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

._crit_edge843:                                   ; preds = %79, %.lr.ph847
  %.pre-phi899 = add nuw i64 %.0845, 1
  %exitcond893.not = icmp eq i64 %.pre-phi899, %62
  br i1 %exitcond893.not, label %._crit_edge848, label %.lr.ph847

._crit_edge848:                                   ; preds = %._crit_edge843, %._crit_edge819
  %545 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.442b5ec568b2f809571b9384f7840903, i32 43)
  %546 = call i1 @_FortranAioOutputAscii(ptr %545, ptr nonnull @_QQcl.4E6F, i64 2)
  %547 = call i32 @_FortranAioEndIoStatement(ptr %545)
  %548 = 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 @_FortranAioInputAscii(ptr, ptr, i64) local_unnamed_addr

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite)
declare void @llvm.assume(i1 noundef) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x i64> @llvm.abs.v2i64(<2 x i64>, i1 immarg) #3

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 nosync nounwind willreturn memory(inaccessiblemem: readwrite) }
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}
!15 = distinct !{!15, !10, !11}
!16 = distinct !{!16, !13}
!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, !10}
!23 = distinct !{!23, !10, !11}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10, !11}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10, !11}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10, !11}
!32 = distinct !{!32, !11, !10}
