      PROGRAM IhateFactorization
      IMPLICIT NONE
      integer(16) :: x
      integer(16) :: a,b
      
      read*,x
      
      do a = -200,200
        do b = -200,200
          if( a**5-b**5==x )then
            print*,a,b;stop
          end if
        end do
      end do
      
      
      
      
      END PROGRAM
; 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"

@_QQcl.78c4638f9c15ae922a0ef5bda75f5f9d = linkonce constant [73 x i8] c"/home/ubuntu/Downloads/TheStack_IR/Collated/Fortran/Source_1524/source.f\00"
@_QQEnvironmentDefaults = local_unnamed_addr constant ptr null

define void @_QQmain() local_unnamed_addr {
  %1 = alloca i128, align 8
  %2 = tail call ptr @_FortranAioBeginExternalListInput(i32 -1, ptr nonnull @_QQcl.78c4638f9c15ae922a0ef5bda75f5f9d, i32 6)
  %3 = call i1 @_FortranAioInputInteger(ptr %2, ptr nonnull %1, i32 16)
  %4 = call i32 @_FortranAioEndIoStatement(ptr %2)
  %5 = load i128, ptr %1, align 8, !tbaa !3
  br label %.preheader

.preheader:                                       ; preds = %0, %33
  %.01023 = phi i128 [ -200, %0 ], [ %35, %33 ]
  %.01122 = phi i128 [ 401, %0 ], [ %34, %33 ]
  %6 = trunc i128 %.01023 to i8
  %7 = mul i8 %6, %6
  %8 = mul i8 %7, %7
  %spec.select.i.1 = mul i8 %8, %6
  %9 = sext i8 %spec.select.i.1 to i128
  br label %.lr.ph.i

.lr.ph.i:                                         ; preds = %30, %.preheader
  %.021 = phi i128 [ -200, %.preheader ], [ %32, %30 ]
  %.01220 = phi i128 [ 401, %.preheader ], [ %31, %30 ]
  %10 = trunc i128 %.021 to i8
  %11 = mul i8 %10, %10
  %12 = mul i8 %11, %11
  %spec.select.i15.1 = mul i8 %12, %10
  %13 = sext i8 %spec.select.i15.1 to i128
  %14 = sub nsw i128 %9, %13
  %15 = icmp eq i128 %14, %5
  br i1 %15, label %16, label %22

16:                                               ; preds = %.lr.ph.i.1, %.lr.ph.i
  %.021.lcssa = phi i128 [ %.021, %.lr.ph.i ], [ %23, %.lr.ph.i.1 ]
  %17 = call ptr @_FortranAioBeginExternalListOutput(i32 -1, ptr nonnull @_QQcl.78c4638f9c15ae922a0ef5bda75f5f9d, i32 11)
  %18 = call i1 @_FortranAioOutputInteger128(ptr %17, i128 %.01023)
  %19 = call i1 @_FortranAioOutputInteger128(ptr %17, i128 %.021.lcssa)
  %20 = call i32 @_FortranAioEndIoStatement(ptr %17)
  %21 = call {} @_FortranAStopStatement(i32 0, i1 false, i1 false)
  unreachable

22:                                               ; preds = %.lr.ph.i
  %.not = icmp eq i128 %.01220, 1
  br i1 %.not, label %33, label %.lr.ph.i.1

.lr.ph.i.1:                                       ; preds = %22
  %23 = or i128 %.021, 1
  %24 = trunc i128 %23 to i8
  %25 = mul i8 %24, %24
  %26 = mul i8 %25, %25
  %spec.select.i15.1.1 = mul i8 %26, %24
  %27 = sext i8 %spec.select.i15.1.1 to i128
  %28 = sub nsw i128 %9, %27
  %29 = icmp eq i128 %28, %5
  br i1 %29, label %16, label %30

30:                                               ; preds = %.lr.ph.i.1
  %31 = add nsw i128 %.01220, -2
  %32 = add nsw i128 %.021, 2
  br label %.lr.ph.i

33:                                               ; preds = %22
  %34 = add nsw i128 %.01122, -1
  %35 = add nsw i128 %.01023, 1
  %.not26 = icmp eq i128 %34, 0
  br i1 %.not26, label %36, label %.preheader

36:                                               ; preds = %33
  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 @_FortranAioOutputInteger128(ptr, i128) local_unnamed_addr

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

!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"}
