program main
implicit None
	integer(8)::n,p,a(9),s(9,262144),b(262144),i,c,x,y,z,L,d,w
	
	read *,c
	s = 0
	do n = 1,262143
		call tet(n,a)
		s(:,n) = a
	enddo
	
	s = (1-((8-(s*2+1))/7))*(s*2+1)
	
	b = 0
	do n = 1,262143
		do i = 1,9
			b(n) = b(n) + s(i,n)*(10**(i-1))
		enddo
	enddo
	
	p = 0
	n = 1
	
	do while(n < 262145)
		if (b(n) > c) exit
		x = 0;y = 0;z = 0;w = 1
		d = b(n)
		L = int(log10(real(d)))+1
		do i = L,1,-1
			if(d/10**(i-1) == 7)then
				x =1
				d = d - 7 * 10**(i-1)
				else if(d/10**(i-1) == 5)then
				y =1
				d = d - 5 * 10**(i-1)
				else if(d/10**(i-1) == 3)then
				z =1
				d = d - 3 * 10**(i-1)
				else if(d/10**(i-1) == 0)then
				w = 0
				exit
			endif
		enddo
		
		!print 101,b(n),L,x,y,z,w
		if(x ==1 .and. y == 1 .and. z ==1 .and. w == 1)then
			p = p + 1
		endif
		n = n + 1
	enddo
	
	print *,p
101 format(8(i0,1x))
end program main
 
subroutine tet(n,a)
	integer(8)::n,i,p
	integer(8)::a(9)
	
	a = 0
	p = n
	i = 1
	do while (p /= 0)
		a(i) = mod(p,4)
		p = p/4
		i = i + 1
	enddo
end subroutine tet
; 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 = internal unnamed_addr global [9 x i64] undef
@_QFEb = internal unnamed_addr global [262144 x i64] undef
@_QFEs = internal unnamed_addr global [262144 x [9 x i64]] undef
@_QQcl.dbce7f34c7a0b89c5377b7c4762db3a1 = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_5339/source.f\00"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
.preheader123.preheader:
  %0 = alloca i64, align 8
  %1 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.dbce7f34c7a0b89c5377b7c4762db3a1, i32 5)
  %2 = call i1 @_FortranAioInputInteger(ptr %1, ptr nonnull %0, i32 8)
  %3 = call i32 @_FortranAioEndIoStatement(ptr %1)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(18874368) @_QFEs, i8 0, i64 18874368, i1 false), !tbaa !3
  br label %.lr.ph.i.preheader

.lr.ph.i.preheader:                               ; preds = %tet_.exit, %.preheader123.preheader
  %indvar = phi i64 [ 0, %.preheader123.preheader ], [ %indvar.next, %tet_.exit ]
  %4 = phi i64 [ 1, %.preheader123.preheader ], [ %11, %tet_.exit ]
  %5 = mul nuw nsw i64 %indvar, 72
  %uglygep = getelementptr i8, ptr @_QFEs, i64 %5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(72) @_QFEa, i8 0, i64 72, i1 false), !tbaa !3
  br label %.lr.ph.i

.lr.ph.i:                                         ; preds = %.lr.ph.i.preheader, %.lr.ph.i
  %.09.i = phi i64 [ %9, %.lr.ph.i ], [ %4, %.lr.ph.i.preheader ]
  %.058.i = phi i64 [ %10, %.lr.ph.i ], [ 1, %.lr.ph.i.preheader ]
  %6 = srem i64 %.09.i, 4
  %7 = add i64 %.058.i, -1
  %8 = getelementptr [9 x i64], ptr @_QFEa, i64 0, i64 %7
  store i64 %6, ptr %8, align 8, !tbaa !3
  %9 = sdiv i64 %.09.i, 4
  %10 = add i64 %.058.i, 1
  %.09.off.i = add nsw i64 %.09.i, 3
  %.not.i = icmp ult i64 %.09.off.i, 7
  br i1 %.not.i, label %tet_.exit, label %.lr.ph.i

tet_.exit:                                        ; preds = %.lr.ph.i
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %uglygep, ptr noundef nonnull align 16 dereferenceable(72) @_QFEa, i64 72, i1 false), !tbaa !3
  %11 = add nuw nsw i64 %4, 1
  %indvar.next = add nuw nsw i64 %indvar, 1
  %exitcond.not = icmp eq i64 %indvar.next, 262143
  br i1 %exitcond.not, label %.preheader121, label %.lr.ph.i.preheader

.preheader121:                                    ; preds = %tet_.exit, %.preheader121
  %12 = phi i64 [ %85, %.preheader121 ], [ 0, %tet_.exit ]
  %13 = mul nuw nsw i64 %12, 9
  %14 = getelementptr i64, ptr @_QFEs, i64 %13
  %15 = load i64, ptr %14, align 8, !tbaa !3
  %16 = shl i64 %15, 1
  %17 = or i64 %16, 1
  %18 = sub i64 8, %17
  %.neg49 = sdiv i64 %18, -7
  %19 = add nsw i64 %.neg49, 1
  %20 = mul i64 %19, %17
  store i64 %20, ptr %14, align 8, !tbaa !3
  %21 = add nuw nsw i64 %13, 1
  %22 = getelementptr i64, ptr @_QFEs, i64 %21
  %23 = load i64, ptr %22, align 8, !tbaa !3
  %24 = shl i64 %23, 1
  %25 = or i64 %24, 1
  %26 = sub i64 8, %25
  %.neg49.1 = sdiv i64 %26, -7
  %27 = add nsw i64 %.neg49.1, 1
  %28 = mul i64 %27, %25
  store i64 %28, ptr %22, align 8, !tbaa !3
  %29 = add nuw nsw i64 %13, 2
  %30 = getelementptr i64, ptr @_QFEs, i64 %29
  %31 = load i64, ptr %30, align 8, !tbaa !3
  %32 = shl i64 %31, 1
  %33 = or i64 %32, 1
  %34 = sub i64 8, %33
  %.neg49.2 = sdiv i64 %34, -7
  %35 = add nsw i64 %.neg49.2, 1
  %36 = mul i64 %35, %33
  store i64 %36, ptr %30, align 8, !tbaa !3
  %37 = add nuw nsw i64 %13, 3
  %38 = getelementptr i64, ptr @_QFEs, i64 %37
  %39 = load i64, ptr %38, align 8, !tbaa !3
  %40 = shl i64 %39, 1
  %41 = or i64 %40, 1
  %42 = sub i64 8, %41
  %.neg49.3 = sdiv i64 %42, -7
  %43 = add nsw i64 %.neg49.3, 1
  %44 = mul i64 %43, %41
  store i64 %44, ptr %38, align 8, !tbaa !3
  %45 = add nuw nsw i64 %13, 4
  %46 = getelementptr i64, ptr @_QFEs, i64 %45
  %47 = load i64, ptr %46, align 8, !tbaa !3
  %48 = shl i64 %47, 1
  %49 = or i64 %48, 1
  %50 = sub i64 8, %49
  %.neg49.4 = sdiv i64 %50, -7
  %51 = add nsw i64 %.neg49.4, 1
  %52 = mul i64 %51, %49
  store i64 %52, ptr %46, align 8, !tbaa !3
  %53 = add nuw nsw i64 %13, 5
  %54 = getelementptr i64, ptr @_QFEs, i64 %53
  %55 = load i64, ptr %54, align 8, !tbaa !3
  %56 = shl i64 %55, 1
  %57 = or i64 %56, 1
  %58 = sub i64 8, %57
  %.neg49.5 = sdiv i64 %58, -7
  %59 = add nsw i64 %.neg49.5, 1
  %60 = mul i64 %59, %57
  store i64 %60, ptr %54, align 8, !tbaa !3
  %61 = add nuw nsw i64 %13, 6
  %62 = getelementptr i64, ptr @_QFEs, i64 %61
  %63 = load i64, ptr %62, align 8, !tbaa !3
  %64 = shl i64 %63, 1
  %65 = or i64 %64, 1
  %66 = sub i64 8, %65
  %.neg49.6 = sdiv i64 %66, -7
  %67 = add nsw i64 %.neg49.6, 1
  %68 = mul i64 %67, %65
  store i64 %68, ptr %62, align 8, !tbaa !3
  %69 = add nuw nsw i64 %13, 7
  %70 = getelementptr i64, ptr @_QFEs, i64 %69
  %71 = load i64, ptr %70, align 8, !tbaa !3
  %72 = shl i64 %71, 1
  %73 = or i64 %72, 1
  %74 = sub i64 8, %73
  %.neg49.7 = sdiv i64 %74, -7
  %75 = add nsw i64 %.neg49.7, 1
  %76 = mul i64 %75, %73
  store i64 %76, ptr %70, align 8, !tbaa !3
  %77 = add nuw nsw i64 %13, 8
  %78 = getelementptr i64, ptr @_QFEs, i64 %77
  %79 = load i64, ptr %78, align 8, !tbaa !3
  %80 = shl i64 %79, 1
  %81 = or i64 %80, 1
  %82 = sub i64 8, %81
  %.neg49.8 = sdiv i64 %82, -7
  %83 = add nsw i64 %.neg49.8, 1
  %84 = mul i64 %83, %81
  store i64 %84, ptr %78, align 8, !tbaa !3
  %85 = add nuw nsw i64 %12, 1
  %exitcond143.not = icmp eq i64 %85, 262144
  br i1 %exitcond143.not, label %.preheader120.preheader, label %.preheader121

.preheader120.preheader:                          ; preds = %.preheader121
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(2097152) @_QFEb, i8 0, i64 2097152, i1 false), !tbaa !3
  br label %__mlir_math_ipowi_i64.exit.8

.preheader:                                       ; preds = %__mlir_math_ipowi_i64.exit.8
  %86 = load i64, ptr %0, align 8, !tbaa !3
  br label %126

__mlir_math_ipowi_i64.exit.8:                     ; preds = %.preheader120.preheader, %__mlir_math_ipowi_i64.exit.8
  %87 = phi i64 [ %125, %__mlir_math_ipowi_i64.exit.8 ], [ 1, %.preheader120.preheader ]
  %88 = add nsw i64 %87, -1
  %89 = getelementptr [262144 x i64], ptr @_QFEb, i64 0, i64 %88
  %90 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 0
  %91 = load i64, ptr %90, align 8, !tbaa !3
  %.promoted = load i64, ptr %89, align 8, !tbaa !3
  %92 = add i64 %91, %.promoted
  %93 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 1
  %94 = load i64, ptr %93, align 8, !tbaa !3
  %95 = mul i64 %94, 10
  %96 = add i64 %95, %92
  %97 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 2
  %98 = load i64, ptr %97, align 8, !tbaa !3
  %99 = mul i64 %98, 100
  %100 = add i64 %99, %96
  %101 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 3
  %102 = load i64, ptr %101, align 8, !tbaa !3
  %103 = mul i64 %102, 1000
  %104 = add i64 %103, %100
  %105 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 4
  %106 = load i64, ptr %105, align 8, !tbaa !3
  %107 = mul i64 %106, 10000
  %108 = add i64 %107, %104
  %109 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 5
  %110 = load i64, ptr %109, align 8, !tbaa !3
  %111 = mul i64 %110, 100000
  %112 = add i64 %111, %108
  %113 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 6
  %114 = load i64, ptr %113, align 8, !tbaa !3
  %115 = mul i64 %114, 1000000
  %116 = add i64 %115, %112
  %117 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 7
  %118 = load i64, ptr %117, align 8, !tbaa !3
  %119 = mul i64 %118, 10000000
  %120 = add i64 %119, %116
  %121 = getelementptr [262144 x [9 x i64]], ptr @_QFEs, i64 0, i64 %88, i64 8
  %122 = load i64, ptr %121, align 8, !tbaa !3
  %123 = mul i64 %122, 100000000
  %124 = add i64 %123, %120
  store i64 %124, ptr %89, align 8, !tbaa !3
  %125 = add nuw nsw i64 %87, 1
  %exitcond145.not = icmp eq i64 %125, 262144
  br i1 %exitcond145.not, label %.preheader, label %__mlir_math_ipowi_i64.exit.8

126:                                              ; preds = %.preheader, %__mlir_math_ipowi_i64.exit107._crit_edge
  %.032140 = phi i64 [ 0, %.preheader ], [ %spec.select, %__mlir_math_ipowi_i64.exit107._crit_edge ]
  %storemerge139 = phi i64 [ 1, %.preheader ], [ %240, %__mlir_math_ipowi_i64.exit107._crit_edge ]
  %127 = add nsw i64 %storemerge139, -1
  %128 = getelementptr [262144 x i64], ptr @_QFEb, i64 0, i64 %127
  %129 = load i64, ptr %128, align 8, !tbaa !3
  %130 = icmp sgt i64 %129, %86
  br i1 %130, label %241, label %131

131:                                              ; preds = %126
  %132 = sitofp i64 %129 to float
  %133 = call contract float @llvm.log10.f32(float %132)
  %134 = fptosi float %133 to i32
  %135 = icmp ugt i32 %134, 2147483646
  br i1 %135, label %__mlir_math_ipowi_i64.exit107._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %131
  %136 = add nuw nsw i32 %134, 1
  %137 = zext i32 %136 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %231
  %.0131 = phi i64 [ %.1, %231 ], [ 0, %.lr.ph.preheader ]
  %.027130 = phi i64 [ %.128, %231 ], [ 0, %.lr.ph.preheader ]
  %.029129 = phi i64 [ %.130, %231 ], [ 0, %.lr.ph.preheader ]
  %.034128 = phi i64 [ %138, %231 ], [ %137, %.lr.ph.preheader ]
  %.036126 = phi i64 [ %.137, %231 ], [ %129, %.lr.ph.preheader ]
  %138 = add nsw i64 %.034128, -1
  %139 = icmp eq i64 %138, 0
  br i1 %139, label %__mlir_math_ipowi_i64.exit59.thread, label %.preheader.i54

.preheader.i54:                                   ; preds = %.lr.ph
  %140 = and i64 %138, 1
  %.not3.i53 = icmp eq i64 %140, 0
  %141 = select i1 %.not3.i53, i64 1, i64 10
  %142 = icmp eq i64 %138, 1
  br i1 %142, label %__mlir_math_ipowi_i64.exit59.thread147, label %.lr.ph.i58

.lr.ph.i58:                                       ; preds = %.preheader.i54, %.lr.ph.i58
  %spec.select4.i55 = phi i64 [ %spec.select.i57, %.lr.ph.i58 ], [ %141, %.preheader.i54 ]
  %143 = phi i64 [ %145, %.lr.ph.i58 ], [ %138, %.preheader.i54 ]
  %144 = phi i64 [ %146, %.lr.ph.i58 ], [ 10, %.preheader.i54 ]
  %145 = lshr i64 %143, 1
  %146 = mul i64 %144, %144
  %147 = and i64 %143, 2
  %.not.i56 = icmp eq i64 %147, 0
  %148 = select i1 %.not.i56, i64 1, i64 %146
  %spec.select.i57 = mul i64 %148, %spec.select4.i55
  %149 = icmp ult i64 %143, 4
  br i1 %149, label %__mlir_math_ipowi_i64.exit59, label %.lr.ph.i58

__mlir_math_ipowi_i64.exit59:                     ; preds = %.lr.ph.i58
  %150 = sdiv i64 %.036126, %spec.select.i57
  %151 = icmp eq i64 %150, 7
  %152 = and i64 %138, 1
  %.not3.i61 = icmp eq i64 %152, 0
  %153 = select i1 %.not3.i61, i64 1, i64 10
  %154 = icmp eq i64 %138, 1
  br i1 %151, label %.preheader.i62, label %.preheader.i70

__mlir_math_ipowi_i64.exit59.thread147:           ; preds = %.preheader.i54
  %155 = sdiv i64 %.036126, %141
  %156 = icmp eq i64 %155, 7
  br i1 %156, label %__mlir_math_ipowi_i64.exit67, label %__mlir_math_ipowi_i64.exit75.thread

__mlir_math_ipowi_i64.exit59.thread:              ; preds = %.lr.ph
  switch i64 %.036126, label %__mlir_math_ipowi_i64.exit107 [
    i64 7, label %__mlir_math_ipowi_i64.exit67
    i64 5, label %__mlir_math_ipowi_i64.exit83
    i64 3, label %__mlir_math_ipowi_i64.exit99
  ]

.preheader.i62:                                   ; preds = %__mlir_math_ipowi_i64.exit59
  br i1 %154, label %__mlir_math_ipowi_i64.exit67, label %.lr.ph.i66

.lr.ph.i66:                                       ; preds = %.preheader.i62, %.lr.ph.i66
  %spec.select4.i63 = phi i64 [ %spec.select.i65, %.lr.ph.i66 ], [ %153, %.preheader.i62 ]
  %157 = phi i64 [ %159, %.lr.ph.i66 ], [ %138, %.preheader.i62 ]
  %158 = phi i64 [ %160, %.lr.ph.i66 ], [ 10, %.preheader.i62 ]
  %159 = lshr i64 %157, 1
  %160 = mul i64 %158, %158
  %161 = and i64 %157, 2
  %.not.i64 = icmp eq i64 %161, 0
  %162 = select i1 %.not.i64, i64 1, i64 %160
  %spec.select.i65 = mul i64 %162, %spec.select4.i63
  %163 = icmp ult i64 %157, 4
  br i1 %163, label %__mlir_math_ipowi_i64.exit67, label %.lr.ph.i66

__mlir_math_ipowi_i64.exit67:                     ; preds = %.lr.ph.i66, %__mlir_math_ipowi_i64.exit59.thread, %__mlir_math_ipowi_i64.exit59.thread147, %.preheader.i62
  %common.ret.op.i60 = phi i64 [ %153, %.preheader.i62 ], [ 1, %__mlir_math_ipowi_i64.exit59.thread ], [ 10, %__mlir_math_ipowi_i64.exit59.thread147 ], [ %spec.select.i65, %.lr.ph.i66 ]
  %.neg48 = mul i64 %common.ret.op.i60, -7
  %164 = add i64 %.neg48, %.036126
  br label %231

.preheader.i70:                                   ; preds = %__mlir_math_ipowi_i64.exit59
  br i1 %154, label %__mlir_math_ipowi_i64.exit75, label %.lr.ph.i74

.lr.ph.i74:                                       ; preds = %.preheader.i70, %.lr.ph.i74
  %spec.select4.i71 = phi i64 [ %spec.select.i73, %.lr.ph.i74 ], [ %153, %.preheader.i70 ]
  %165 = phi i64 [ %167, %.lr.ph.i74 ], [ %138, %.preheader.i70 ]
  %166 = phi i64 [ %168, %.lr.ph.i74 ], [ 10, %.preheader.i70 ]
  %167 = lshr i64 %165, 1
  %168 = mul i64 %166, %166
  %169 = and i64 %165, 2
  %.not.i72 = icmp eq i64 %169, 0
  %170 = select i1 %.not.i72, i64 1, i64 %168
  %spec.select.i73 = mul i64 %170, %spec.select4.i71
  %171 = icmp ult i64 %165, 4
  br i1 %171, label %__mlir_math_ipowi_i64.exit75, label %.lr.ph.i74

__mlir_math_ipowi_i64.exit75:                     ; preds = %.lr.ph.i74, %.preheader.i70
  %common.ret.op.i68 = phi i64 [ %153, %.preheader.i70 ], [ %spec.select.i73, %.lr.ph.i74 ]
  %172 = sdiv i64 %.036126, %common.ret.op.i68
  %173 = icmp eq i64 %172, 5
  br i1 %173, label %175, label %189

__mlir_math_ipowi_i64.exit75.thread:              ; preds = %__mlir_math_ipowi_i64.exit59.thread147
  %.036126.off = add i64 %.036126, -50
  %174 = icmp ult i64 %.036126.off, 10
  br i1 %174, label %__mlir_math_ipowi_i64.exit83, label %__mlir_math_ipowi_i64.exit91

175:                                              ; preds = %__mlir_math_ipowi_i64.exit75
  br i1 %139, label %__mlir_math_ipowi_i64.exit83, label %176

176:                                              ; preds = %175
  %177 = icmp slt i64 %.034128, 2
  br i1 %177, label %__mlir_math_ipowi_i64.exit83, label %.preheader.i78

.preheader.i78:                                   ; preds = %176
  %178 = and i64 %138, 1
  %.not3.i77 = icmp eq i64 %178, 0
  %179 = select i1 %.not3.i77, i64 1, i64 10
  %180 = icmp eq i64 %138, 1
  br i1 %180, label %__mlir_math_ipowi_i64.exit83, label %.lr.ph.i82

.lr.ph.i82:                                       ; preds = %.preheader.i78, %.lr.ph.i82
  %spec.select4.i79 = phi i64 [ %spec.select.i81, %.lr.ph.i82 ], [ %179, %.preheader.i78 ]
  %181 = phi i64 [ %183, %.lr.ph.i82 ], [ %138, %.preheader.i78 ]
  %182 = phi i64 [ %184, %.lr.ph.i82 ], [ 10, %.preheader.i78 ]
  %183 = lshr i64 %181, 1
  %184 = mul i64 %182, %182
  %185 = and i64 %181, 2
  %.not.i80 = icmp eq i64 %185, 0
  %186 = select i1 %.not.i80, i64 1, i64 %184
  %spec.select.i81 = mul i64 %186, %spec.select4.i79
  %187 = icmp ult i64 %181, 4
  br i1 %187, label %__mlir_math_ipowi_i64.exit83, label %.lr.ph.i82

__mlir_math_ipowi_i64.exit83:                     ; preds = %.lr.ph.i82, %__mlir_math_ipowi_i64.exit59.thread, %__mlir_math_ipowi_i64.exit75.thread, %176, %175, %.preheader.i78
  %common.ret.op.i76 = phi i64 [ 1, %175 ], [ %179, %.preheader.i78 ], [ 0, %176 ], [ 1, %__mlir_math_ipowi_i64.exit59.thread ], [ 10, %__mlir_math_ipowi_i64.exit75.thread ], [ %spec.select.i81, %.lr.ph.i82 ]
  %.neg47 = mul i64 %common.ret.op.i76, -5
  %188 = add i64 %.neg47, %.036126
  br label %231

189:                                              ; preds = %__mlir_math_ipowi_i64.exit75
  br i1 %139, label %__mlir_math_ipowi_i64.exit91.thread, label %190

190:                                              ; preds = %189
  %191 = icmp slt i64 %.034128, 2
  br i1 %191, label %__mlir_math_ipowi_i64.exit91, label %.preheader.i86

.preheader.i86:                                   ; preds = %190
  %192 = and i64 %138, 1
  %.not3.i85 = icmp eq i64 %192, 0
  %193 = select i1 %.not3.i85, i64 1, i64 10
  %194 = icmp eq i64 %138, 1
  br i1 %194, label %__mlir_math_ipowi_i64.exit91, label %.lr.ph.i90

.lr.ph.i90:                                       ; preds = %.preheader.i86, %.lr.ph.i90
  %spec.select4.i87 = phi i64 [ %spec.select.i89, %.lr.ph.i90 ], [ %193, %.preheader.i86 ]
  %195 = phi i64 [ %197, %.lr.ph.i90 ], [ %138, %.preheader.i86 ]
  %196 = phi i64 [ %198, %.lr.ph.i90 ], [ 10, %.preheader.i86 ]
  %197 = lshr i64 %195, 1
  %198 = mul i64 %196, %196
  %199 = and i64 %195, 2
  %.not.i88 = icmp eq i64 %199, 0
  %200 = select i1 %.not.i88, i64 1, i64 %198
  %spec.select.i89 = mul i64 %200, %spec.select4.i87
  %201 = icmp ult i64 %195, 4
  br i1 %201, label %__mlir_math_ipowi_i64.exit91, label %.lr.ph.i90

__mlir_math_ipowi_i64.exit91:                     ; preds = %.lr.ph.i90, %__mlir_math_ipowi_i64.exit75.thread, %190, %.preheader.i86
  %202 = phi i1 [ false, %.preheader.i86 ], [ true, %190 ], [ false, %__mlir_math_ipowi_i64.exit75.thread ], [ false, %.lr.ph.i90 ]
  %common.ret.op.i84 = phi i64 [ %193, %.preheader.i86 ], [ 0, %190 ], [ 10, %__mlir_math_ipowi_i64.exit75.thread ], [ %spec.select.i89, %.lr.ph.i90 ]
  %203 = sdiv i64 %.036126, %common.ret.op.i84
  %204 = icmp eq i64 %203, 3
  br i1 %204, label %206, label %218

__mlir_math_ipowi_i64.exit91.thread:              ; preds = %189
  %205 = icmp eq i64 %.036126, 3
  br i1 %205, label %__mlir_math_ipowi_i64.exit99, label %__mlir_math_ipowi_i64.exit107

206:                                              ; preds = %__mlir_math_ipowi_i64.exit91
  br i1 %202, label %__mlir_math_ipowi_i64.exit99, label %.preheader.i94

.preheader.i94:                                   ; preds = %206
  %207 = and i64 %138, 1
  %.not3.i93 = icmp eq i64 %207, 0
  %208 = select i1 %.not3.i93, i64 1, i64 10
  %209 = icmp eq i64 %138, 1
  br i1 %209, label %__mlir_math_ipowi_i64.exit99, label %.lr.ph.i98

.lr.ph.i98:                                       ; preds = %.preheader.i94, %.lr.ph.i98
  %spec.select4.i95 = phi i64 [ %spec.select.i97, %.lr.ph.i98 ], [ %208, %.preheader.i94 ]
  %210 = phi i64 [ %212, %.lr.ph.i98 ], [ %138, %.preheader.i94 ]
  %211 = phi i64 [ %213, %.lr.ph.i98 ], [ 10, %.preheader.i94 ]
  %212 = lshr i64 %210, 1
  %213 = mul i64 %211, %211
  %214 = and i64 %210, 2
  %.not.i96 = icmp eq i64 %214, 0
  %215 = select i1 %.not.i96, i64 1, i64 %213
  %spec.select.i97 = mul i64 %215, %spec.select4.i95
  %216 = icmp ult i64 %210, 4
  br i1 %216, label %__mlir_math_ipowi_i64.exit99, label %.lr.ph.i98

__mlir_math_ipowi_i64.exit99:                     ; preds = %.lr.ph.i98, %__mlir_math_ipowi_i64.exit59.thread, %__mlir_math_ipowi_i64.exit91.thread, %206, %.preheader.i94
  %common.ret.op.i92 = phi i64 [ %208, %.preheader.i94 ], [ 0, %206 ], [ 1, %__mlir_math_ipowi_i64.exit91.thread ], [ 1, %__mlir_math_ipowi_i64.exit59.thread ], [ %spec.select.i97, %.lr.ph.i98 ]
  %.neg = mul i64 %common.ret.op.i92, -3
  %217 = add i64 %.neg, %.036126
  br label %231

218:                                              ; preds = %__mlir_math_ipowi_i64.exit91
  br i1 %202, label %__mlir_math_ipowi_i64.exit107, label %.preheader.i102

.preheader.i102:                                  ; preds = %218
  %219 = and i64 %138, 1
  %.not3.i101 = icmp eq i64 %219, 0
  %220 = select i1 %.not3.i101, i64 1, i64 10
  %221 = icmp eq i64 %138, 1
  br i1 %221, label %__mlir_math_ipowi_i64.exit107, label %.lr.ph.i106

.lr.ph.i106:                                      ; preds = %.preheader.i102, %.lr.ph.i106
  %spec.select4.i103 = phi i64 [ %spec.select.i105, %.lr.ph.i106 ], [ %220, %.preheader.i102 ]
  %222 = phi i64 [ %224, %.lr.ph.i106 ], [ %138, %.preheader.i102 ]
  %223 = phi i64 [ %225, %.lr.ph.i106 ], [ 10, %.preheader.i102 ]
  %224 = lshr i64 %222, 1
  %225 = mul i64 %223, %223
  %226 = and i64 %222, 2
  %.not.i104 = icmp eq i64 %226, 0
  %227 = select i1 %.not.i104, i64 1, i64 %225
  %spec.select.i105 = mul i64 %227, %spec.select4.i103
  %228 = icmp ult i64 %222, 4
  br i1 %228, label %__mlir_math_ipowi_i64.exit107, label %.lr.ph.i106

__mlir_math_ipowi_i64.exit107:                    ; preds = %.lr.ph.i106, %__mlir_math_ipowi_i64.exit59.thread, %__mlir_math_ipowi_i64.exit91.thread, %218, %.preheader.i102
  %common.ret.op.i100 = phi i64 [ %220, %.preheader.i102 ], [ 0, %218 ], [ 1, %__mlir_math_ipowi_i64.exit91.thread ], [ 1, %__mlir_math_ipowi_i64.exit59.thread ], [ %spec.select.i105, %.lr.ph.i106 ]
  %229 = sdiv i64 %.036126, %common.ret.op.i100
  %230 = icmp eq i64 %229, 0
  br i1 %230, label %__mlir_math_ipowi_i64.exit107._crit_edge, label %231

231:                                              ; preds = %__mlir_math_ipowi_i64.exit67, %__mlir_math_ipowi_i64.exit83, %__mlir_math_ipowi_i64.exit99, %__mlir_math_ipowi_i64.exit107
  %.137 = phi i64 [ %164, %__mlir_math_ipowi_i64.exit67 ], [ %188, %__mlir_math_ipowi_i64.exit83 ], [ %217, %__mlir_math_ipowi_i64.exit99 ], [ %.036126, %__mlir_math_ipowi_i64.exit107 ]
  %.130 = phi i64 [ 1, %__mlir_math_ipowi_i64.exit67 ], [ %.029129, %__mlir_math_ipowi_i64.exit83 ], [ %.029129, %__mlir_math_ipowi_i64.exit99 ], [ %.029129, %__mlir_math_ipowi_i64.exit107 ]
  %.128 = phi i64 [ %.027130, %__mlir_math_ipowi_i64.exit67 ], [ 1, %__mlir_math_ipowi_i64.exit83 ], [ %.027130, %__mlir_math_ipowi_i64.exit99 ], [ %.027130, %__mlir_math_ipowi_i64.exit107 ]
  %.1 = phi i64 [ %.0131, %__mlir_math_ipowi_i64.exit67 ], [ %.0131, %__mlir_math_ipowi_i64.exit83 ], [ 1, %__mlir_math_ipowi_i64.exit99 ], [ %.0131, %__mlir_math_ipowi_i64.exit107 ]
  %232 = icmp slt i64 %.034128, 2
  br i1 %232, label %__mlir_math_ipowi_i64.exit107._crit_edge, label %.lr.ph

__mlir_math_ipowi_i64.exit107._crit_edge:         ; preds = %231, %__mlir_math_ipowi_i64.exit107, %131
  %.029.lcssa = phi i64 [ 0, %131 ], [ %.029129, %__mlir_math_ipowi_i64.exit107 ], [ %.130, %231 ]
  %.027.lcssa = phi i64 [ 0, %131 ], [ %.027130, %__mlir_math_ipowi_i64.exit107 ], [ %.128, %231 ]
  %.0.lcssa = phi i64 [ 0, %131 ], [ %.0131, %__mlir_math_ipowi_i64.exit107 ], [ %.1, %231 ]
  %.lcssa = phi i1 [ true, %131 ], [ false, %__mlir_math_ipowi_i64.exit107 ], [ true, %231 ]
  %233 = icmp eq i64 %.029.lcssa, 1
  %234 = icmp eq i64 %.027.lcssa, 1
  %235 = and i1 %233, %234
  %236 = icmp eq i64 %.0.lcssa, 1
  %237 = and i1 %235, %236
  %238 = and i1 %.lcssa, %237
  %239 = zext i1 %238 to i64
  %spec.select = add i64 %.032140, %239
  %240 = add nuw nsw i64 %storemerge139, 1
  %exitcond146.not = icmp eq i64 %240, 262145
  br i1 %exitcond146.not, label %241, label %126

241:                                              ; preds = %126, %__mlir_math_ipowi_i64.exit107._crit_edge
  %.032.lcssa = phi i64 [ %.032140, %126 ], [ %spec.select, %__mlir_math_ipowi_i64.exit107._crit_edge ]
  %242 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.dbce7f34c7a0b89c5377b7c4762db3a1, i32 52)
  %243 = call i1 @_FortranAioOutputInteger64(ptr %242, i64 %.032.lcssa)
  %244 = call i32 @_FortranAioEndIoStatement(ptr %242)
  ret void
}

; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite)
define void @tet_(ptr nocapture readonly %0, ptr nocapture writeonly %1) local_unnamed_addr #0 {
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %1, i8 0, i64 72, i1 false), !tbaa !3
  %3 = load i64, ptr %0, align 8, !tbaa !3
  %.not7 = icmp eq i64 %3, 0
  br i1 %.not7, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %2, %.lr.ph
  %.09 = phi i64 [ %7, %.lr.ph ], [ %3, %2 ]
  %.058 = phi i64 [ %8, %.lr.ph ], [ 1, %2 ]
  %4 = srem i64 %.09, 4
  %5 = add i64 %.058, -1
  %6 = getelementptr [9 x i64], ptr %1, i64 0, i64 %5
  store i64 %4, ptr %6, align 8, !tbaa !3
  %7 = sdiv i64 %.09, 4
  %8 = add i64 %.058, 1
  %.09.off = add i64 %.09, 3
  %.not = icmp ult i64 %.09.off, 7
  br i1 %.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %2
  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

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

declare i1 @_FortranAioOutputInteger64(ptr, i64) local_unnamed_addr

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.log10.f32(float) #1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

attributes #0 = { nofree norecurse nosync nounwind memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }

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

!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{!4, !4, i64 0}
!4 = !{!"any data access", !5, i64 0}
!5 = !{!"any access", !6, i64 0}
!6 = !{!"Flang Type TBAA Root"}
