
(/VERSIONCHECK 2) 

(DEFUN |GHENSEL;reduceCoef| (|c| |p| $)
  (COND
    ((SPADCALL |p| (QREFELT $ 9)) |c|)
    ((|domainEqual| (QREFELT $ 6) (|Integer|))
     (SPADCALL |c| |p| (QREFELT $ 11)))
    ('T (SPADCALL |c| |p| (QREFELT $ 12))))) 

(DEFUN |GHENSEL;reduction;TPRPTP;2| (|u| |p| $)
  (COND
    ((SPADCALL |p| (QREFELT $ 9)) |u|)
    ((|domainEqual| (QREFELT $ 6) (|Integer|))
     (SPADCALL (CONS #'|GHENSEL;reduction;TPRPTP;2!0| (VECTOR $ |p|))
         |u| (QREFELT $ 14)))
    ('T
     (SPADCALL (CONS #'|GHENSEL;reduction;TPRPTP;2!1| (VECTOR $ |p|))
         |u| (QREFELT $ 14))))) 

(DEFUN |GHENSEL;reduction;TPRPTP;2!1| (|#1| $$)
  (SPADCALL |#1| (QREFELT $$ 1) (QREFELT (QREFELT $$ 0) 12))) 

(DEFUN |GHENSEL;reduction;TPRPTP;2!0| (|#1| $$)
  (SPADCALL |#1| (QREFELT $$ 1) (QREFELT (QREFELT $$ 0) 11))) 

(DEFUN |GHENSEL;merge| (|p| |q| $)
  (COND
    ((SPADCALL |p| |q| (QREFELT $ 16)) (CONS 0 |p|))
    ((SPADCALL |p| (|spadConstant| $ 17) (QREFELT $ 16)) (CONS 0 |q|))
    ((SPADCALL |q| (|spadConstant| $ 17) (QREFELT $ 16)) (CONS 0 |p|))
    ('T (CONS 1 "failed")))) 

(DEFUN |GHENSEL;modInverse| (|c| |p| $)
  (PROG (#0=#:G1845)
    (RETURN
      (QCAR (PROG2 (LETT #0#
                         (SPADCALL |c| |p| (|spadConstant| $ 19)
                             (QREFELT $ 23))
                         |GHENSEL;modInverse|)
                   (QCDR #0#)
              (|check-union| (QEQCAR #0# 0)
                  (|Record| (|:| |coef1| (QREFELT $ 6))
                      (|:| |coef2| (QREFELT $ 6)))
                  #0#)))))) 

(DEFUN |GHENSEL;exactquo| (|u| |v| |p| $)
  (PROG (|invlcv| |r|)
    (RETURN
      (SEQ (LETT |invlcv|
                 (|GHENSEL;modInverse| (SPADCALL |v| (QREFELT $ 24))
                     |p| $)
                 . #0=(|GHENSEL;exactquo|))
           (LETT |r|
                 (SPADCALL |u|
                     (SPADCALL (SPADCALL |invlcv| |v| (QREFELT $ 25))
                         |p| (QREFELT $ 15))
                     (QREFELT $ 27)) . #0#)
           (COND
             ((NULL (SPADCALL (SPADCALL (QCDR |r|) |p| (QREFELT $ 15))
                        (|spadConstant| $ 18) (QREFELT $ 28)))
              (EXIT (CONS 1 "failed"))))
           (EXIT (CONS 0
                       (SPADCALL
                           (SPADCALL |invlcv| (QCAR |r|)
                               (QREFELT $ 25))
                           |p| (QREFELT $ 15)))))))) 

(DEFUN |GHENSEL;mQuo| (|poly| |n| $)
  (SPADCALL (CONS #'|GHENSEL;mQuo!0| (VECTOR $ |n|)) |poly|
      (QREFELT $ 14))) 

(DEFUN |GHENSEL;mQuo!0| (|#1| $$)
  (SPADCALL |#1| (QREFELT $$ 1) (QREFELT (QREFELT $$ 0) 30))) 

(DEFUN |GHENSEL;GenExEuclid| (|fl| |cl| |rhs| $)
  (PROG (#0=#:G1859 |flp| #1=#:G1861 |clp| #2=#:G1860)
    (RETURN
      (SEQ (PROGN
             (LETT #0# NIL . #3=(|GHENSEL;GenExEuclid|))
             (SEQ (LETT |flp| NIL . #3#) (LETT #1# |fl| . #3#)
                  (LETT |clp| NIL . #3#) (LETT #2# |cl| . #3#) G190
                  (COND
                    ((OR (ATOM #2#)
                         (PROGN (LETT |clp| (CAR #2#) . #3#) NIL)
                         (ATOM #1#)
                         (PROGN (LETT |flp| (CAR #1#) . #3#) NIL))
                     (GO G191)))
                  (SEQ (EXIT (LETT #0#
                                   (CONS
                                    (SPADCALL
                                     (SPADCALL |clp| |rhs|
                                      (QREFELT $ 31))
                                     |flp| (QREFELT $ 32))
                                    #0#) . #3#)))
                  (LETT #2#
                        (PROG1 (CDR #2#) (LETT #1# (CDR #1#) . #3#)) . #3#)
                  (GO G190) G191 (EXIT (NREVERSE0 #0#)))))))) 

(DEFUN |GHENSEL;genFact| (|fln| |factlist| $)
  (PROG (#0=#:G1919 |pol| #1=#:G1920 #2=#:G1921 #3=#:G1904 #4=#:G1902
            #5=#:G1903 |maxd| |poly| #6=#:G1922 #7=#:G1923 #8=#:G1924
            |dp| |term| #9=#:G1925 |f| #10=#:G1926 #11=#:G1912
            #12=#:G1910 #13=#:G1911 |auxfl|)
    (RETURN
      (SEQ (COND
             ((SPADCALL |factlist| NIL (QREFELT $ 34))
              (PROGN
                (LETT #0# NIL . #14=(|GHENSEL;genFact|))
                (SEQ (LETT |pol| NIL . #14#) (LETT #1# |fln| . #14#)
                     G190
                     (COND
                       ((OR (ATOM #1#)
                            (PROGN (LETT |pol| (CAR #1#) . #14#) NIL))
                        #15=(GO G191)))
                     (SEQ (EXIT (LETT #0#
                                      (CONS (LIST |pol|) #0#) . #14#)))
                     (LETT #1# (CDR #1#) . #14#) #16=(GO G190) G191
                     (EXIT (NREVERSE0 #0#)))))
             (#17='T
              (SEQ (LETT |maxd|
                         (QUOTIENT2
                             (PROGN
                               (LETT #5# NIL . #14#)
                               (SEQ (LETT |f| NIL . #14#)
                                    (LETT #2# |fln| . #14#) G190
                                    (COND
                                      ((OR (ATOM #2#)
                                        (PROGN
                                          (LETT |f| (CAR #2#) . #14#)
                                          NIL))
                                       #15#))
                                    (SEQ
                                     (EXIT
                                      (PROGN
                                        (LETT #3#
                                         (SPADCALL |f| (QREFELT $ 36)) . #14#)
                                        (COND
                                          (#5#
                                           (LETT #4#
                                            (+ #4# #3#) . #14#))
                                          ('T
                                           (PROGN
                                             (LETT #4# #3# . #14#)
                                             (LETT #5# 'T . #14#)))))))
                                    (LETT #2# (CDR #2#) . #14#) #16#
                                    G191 (EXIT NIL))
                               (COND (#5# #4#) (#17# 0)))
                             2) . #14#)
                   (LETT |auxfl| NIL . #14#)
                   (SEQ (LETT |poly| NIL . #14#)
                        (LETT #6# |fln| . #14#) G190
                        (COND
                          ((OR (ATOM #6#)
                               (PROGN
                                 (LETT |poly| (CAR #6#) . #14#)
                                 NIL)
                               (NULL (COND
                                       ((SPADCALL |factlist| NIL
                                         (QREFELT $ 34))
                                        'NIL)
                                       ('T 'T))))
                           #15#))
                        (SEQ (LETT |factlist|
                                   (PROGN
                                     (LETT #7# NIL . #14#)
                                     (SEQ (LETT |term| NIL . #14#)
                                      (LETT #8# |factlist| . #14#) G190
                                      (COND
                                        ((OR (ATOM #8#)
                                          (PROGN
                                            (LETT |term|
                                             (CAR #8#) . #14#)
                                            NIL))
                                         #15#))
                                      (SEQ
                                       (EXIT
                                        (COND
                                          ((COND
                                             ((SPADCALL |poly| |term|
                                               (QREFELT $ 38))
                                              'NIL)
                                             ('T 'T))
                                           (LETT #7#
                                            (CONS |term| #7#) . #14#)))))
                                      (LETT #8# (CDR #8#) . #14#) #16#
                                      G191 (EXIT (NREVERSE0 #7#)))) . #14#)
                             (LETT |dp|
                                   (SPADCALL |poly| (QREFELT $ 36)) . #14#)
                             (EXIT (SEQ (LETT |term| NIL . #14#)
                                    (LETT #9# |factlist| . #14#) G190
                                    (COND
                                      ((OR (ATOM #9#)
                                        (PROGN
                                          (LETT |term|
                                           (CAR #9#) . #14#)
                                          NIL))
                                       #15#))
                                    (SEQ
                                     (EXIT
                                      (COND
                                        ((< |maxd|
                                          (+
                                           (PROGN
                                             (LETT #13# NIL . #14#)
                                             (SEQ (LETT |f| NIL . #14#)
                                              (LETT #10# |term| . #14#)
                                              G190
                                              (COND
                                                ((OR (ATOM #10#)
                                                  (PROGN
                                                    (LETT |f|
                                                     (CAR #10#) . #14#)
                                                    NIL))
                                                 #15#))
                                              (SEQ
                                               (EXIT
                                                (PROGN
                                                  (LETT #11#
                                                   (SPADCALL |f|
                                                    (QREFELT $ 36)) . #14#)
                                                  (COND
                                                    (#13#
                                                     (LETT #12#
                                                      (+ #12# #11#) . #14#))
                                                    ('T
                                                     (PROGN
                                                       (LETT #12#
                                                        #11# . #14#)
                                                       (LETT #13#
                                                        'T . #14#)))))))
                                              (LETT #10#
                                               (CDR #10#) . #14#)
                                              #16# G191 (EXIT NIL))
                                             (COND (#13# #12#) ('T 0)))
                                           |dp|))
                                         "next term")
                                        ('T
                                         (LETT |auxfl|
                                          (CONS (CONS |poly| |term|)
                                           |auxfl|) . #14#)))))
                                    (LETT #9# (CDR #9#) . #14#) #16#
                                    G191 (EXIT NIL))))
                        (LETT #6# (CDR #6#) . #14#) #16# G191
                        (EXIT NIL))
                   (EXIT |auxfl|)))))))) 

(DEFUN |GHENSEL;HenselLift1|
       (|poly| |fln| |fl1| |cl1| |prime| |Modulus| |cinv| $)
  (PROG (|lcp| #0=#:G1815 #1=#:G1934 #2=#:G1929 #3=#:G1927 #4=#:G1928
               |rhs| |lcinv| |vl| #5=#:G1935 |vlp| #6=#:G1937 |flp|
               #7=#:G1936)
    (RETURN
      (SEQ (LETT |lcp| (SPADCALL |poly| (QREFELT $ 24))
                 . #8=(|GHENSEL;HenselLift1|))
           (LETT |rhs|
                 (SPADCALL
                     (|GHENSEL;mQuo|
                         (SPADCALL |poly|
                             (SPADCALL |lcp|
                                 (PROGN
                                   (LETT #4# NIL . #8#)
                                   (SEQ (LETT #0# NIL . #8#)
                                    (LETT #1# |fln| . #8#) G190
                                    (COND
                                      ((OR (ATOM #1#)
                                        (PROGN
                                          (LETT #0# (CAR #1#) . #8#)
                                          NIL))
                                       #9=(GO G191)))
                                    (SEQ
                                     (EXIT
                                      (PROGN
                                        (LETT #2# #0# . #8#)
                                        (COND
                                          (#4#
                                           (LETT #3#
                                            (SPADCALL #3# #2#
                                             (QREFELT $ 39)) . #8#))
                                          ('T
                                           (PROGN
                                             (LETT #3# #2# . #8#)
                                             (LETT #4# 'T . #8#)))))))
                                    (LETT #1# (CDR #1#) . #8#)
                                    #10=(GO G190) G191 (EXIT NIL))
                                   (COND
                                     (#4# #3#)
                                     ('T (|spadConstant| $ 20))))
                                 (QREFELT $ 25))
                             (QREFELT $ 40))
                         |Modulus| $)
                     |prime| (QREFELT $ 41)) . #8#)
           (EXIT (COND
                   ((SPADCALL |rhs| (QREFELT $ 42)) |fln|)
                   ('T
                    (SEQ (LETT |lcinv|
                               (SPADCALL
                                   (SPADCALL |cinv| (QREFELT $ 43))
                                   |prime| (QREFELT $ 41)) . #8#)
                         (LETT |vl|
                               (|GHENSEL;GenExEuclid| |fl1| |cl1|
                                   (SPADCALL |lcinv| |rhs|
                                    (QREFELT $ 31))
                                   $) . #8#)
                         (EXIT (PROGN
                                 (LETT #5# NIL . #8#)
                                 (SEQ (LETT |vlp| NIL . #8#)
                                      (LETT #6# |vl| . #8#)
                                      (LETT |flp| NIL . #8#)
                                      (LETT #7# |fln| . #8#) G190
                                      (COND
                                        ((OR (ATOM #7#)
                                          (PROGN
                                            (LETT |flp|
                                             (CAR #7#) . #8#)
                                            NIL)
                                          (ATOM #6#)
                                          (PROGN
                                            (LETT |vlp|
                                             (CAR #6#) . #8#)
                                            NIL))
                                         #9#))
                                      (SEQ
                                       (EXIT
                                        (LETT #5#
                                         (CONS
                                          (SPADCALL |flp|
                                           (SPADCALL |Modulus|
                                            (SPADCALL |vlp|
                                             (QREFELT $ 44))
                                            (QREFELT $ 25))
                                           (QREFELT $ 45))
                                          #5#) . #8#)))
                                      (LETT #7#
                                       (PROG1 (CDR #7#)
                                         (LETT #6# (CDR #6#) . #8#)) . #8#)
                                      #10# G191 (EXIT (NREVERSE0 #5#))))))))))))) 

(DEFUN |GHENSEL;HenselLift;TPLRPPiR;10|
       (|poly| |tl1| |prime| |bound| $)
  (PROG (|constp| #0=#:G1973 |ttl| #1=#:G1974 |fl1| #2=#:G1946 |cl1|
            #3=#:G1975 |ffl1| #4=#:G1976 |lcinv| |nfln| #5=#:G1816
            #6=#:G1977 #7=#:G1966 #8=#:G1964 #9=#:G1965 |err|
            #10=#:G1969 |Modulus| |fln|)
    (RETURN
      (SEQ (LETT |constp| (|spadConstant| $ 18)
                 . #11=(|GHENSEL;HenselLift;TPLRPPiR;10|))
           (COND
             ((EQL (SPADCALL (|SPADfirst| |tl1|) (QREFELT $ 36)) 0)
              (SEQ (LETT |constp| (|SPADfirst| |tl1|) . #11#)
                   (EXIT (LETT |tl1| (CDR |tl1|) . #11#)))))
           (LETT |fl1|
                 (PROGN
                   (LETT #0# NIL . #11#)
                   (SEQ (LETT |ttl| NIL . #11#) (LETT #1# |tl1| . #11#)
                        G190
                        (COND
                          ((OR (ATOM #1#)
                               (PROGN
                                 (LETT |ttl| (CAR #1#) . #11#)
                                 NIL))
                           #12=(GO G191)))
                        (SEQ (EXIT (LETT #0#
                                    (CONS
                                     (SPADCALL |ttl| |prime|
                                      (QREFELT $ 41))
                                     #0#) . #11#)))
                        (LETT #1# (CDR #1#) . #11#) #13=(GO G190) G191
                        (EXIT (NREVERSE0 #0#)))) . #11#)
           (LETT |cl1|
                 (PROG2 (LETT #2#
                              (SPADCALL |fl1| (|spadConstant| $ 46)
                                  (QREFELT $ 49)) . #11#)
                        (QCDR #2#)
                   (|check-union| (QEQCAR #2# 0)
                       (|List| (QREFELT $ 29)) #2#)) . #11#)
           (LETT |Modulus| |prime| . #11#)
           (LETT |fln|
                 (PROGN
                   (LETT #3# NIL . #11#)
                   (SEQ (LETT |ffl1| NIL . #11#)
                        (LETT #4# |fl1| . #11#) G190
                        (COND
                          ((OR (ATOM #4#)
                               (PROGN
                                 (LETT |ffl1| (CAR #4#) . #11#)
                                 NIL))
                           #12#))
                        (SEQ (EXIT (LETT #3#
                                    (CONS
                                     (SPADCALL |ffl1| (QREFELT $ 44))
                                     #3#) . #11#)))
                        (LETT #4# (CDR #4#) . #11#) #13# G191
                        (EXIT (NREVERSE0 #3#)))) . #11#)
           (LETT |lcinv|
                 (SPADCALL
                     (SPADCALL
                         (SPADCALL
                             (SPADCALL
                                 (SPADCALL
                                     (SPADCALL |poly| (QREFELT $ 24))
                                     (QREFELT $ 43))
                                 |prime| (QREFELT $ 41))
                             (QREFELT $ 50))
                         (QREFELT $ 44))
                     (QREFELT $ 51)) . #11#)
           (SEQ (EXIT (SEQ G190
                           (COND
                             ((NULL (<
                                     (SPADCALL |Modulus|
                                      (QREFELT $ 52))
                                     |bound|))
                              #12#))
                           (SEQ (LETT |nfln|
                                      (|GHENSEL;HenselLift1| |poly|
                                       |fln| |fl1| |cl1| |prime|
                                       |Modulus| |lcinv| $) . #11#)
                                (COND
                                  ((SPADCALL |fln| |nfln|
                                    (QREFELT $ 53))
                                   (COND
                                     ((SPADCALL
                                       (LETT |err|
                                        (SPADCALL |poly|
                                         (PROGN
                                           (LETT #9# NIL . #11#)
                                           (SEQ (LETT #5# NIL . #11#)
                                            (LETT #6# |fln| . #11#)
                                            G190
                                            (COND
                                              ((OR (ATOM #6#)
                                                (PROGN
                                                  (LETT #5#
                                                   (CAR #6#) . #11#)
                                                  NIL))
                                               #12#))
                                            (SEQ
                                             (EXIT
                                              (PROGN
                                                (LETT #7# #5# . #11#)
                                                (COND
                                                  (#9#
                                                   (LETT #8#
                                                    (SPADCALL #8# #7#
                                                     (QREFELT $ 39)) . #11#))
                                                  ('T
                                                   (PROGN
                                                     (LETT #8#
                                                      #7# . #11#)
                                                     (LETT #9#
                                                      'T . #11#)))))))
                                            (LETT #6# (CDR #6#) . #11#)
                                            #13# G191 (EXIT NIL))
                                           (COND
                                             (#9# #8#)
                                             ('T (|spadConstant| $ 20))))
                                         (QREFELT $ 40)) . #11#)
                                       (QREFELT $ 54))
                                      (EXIT
                                       (PROGN
                                         (LETT #10# "finished" . #11#)
                                         (GO #10#)))))))
                                (LETT |fln| |nfln| . #11#)
                                (EXIT (LETT |Modulus|
                                       (SPADCALL |prime| |Modulus|
                                        (QREFELT $ 55)) . #11#)))
                           NIL #13# G191 (EXIT NIL)))
                #10# (EXIT #10#))
           (COND
             ((NULL (SPADCALL |constp| (|spadConstant| $ 18)
                        (QREFELT $ 28)))
              (LETT |fln| (CONS |constp| |fln|) . #11#)))
           (EXIT (CONS |fln| |Modulus|)))))) 

(DEFUN |GHENSEL;completeHensel;TPLRPPiL;11|
       (|m| |tl1| |prime| |bound| $)
  (PROG (|hlift| |Modulus| |nm| |auxl| #0=#:G2004 #1=#:G1982 #2=#:G1980
                 #3=#:G1981 |tc| #4=#:G2005 #5=#:G1988 #6=#:G1986
                 #7=#:G1987 |pol| |u| |poly1| |lcm1| |mm| |dfn| |poly|
                 #8=#:G2006 |aux| #9=#:G2007 #10=#:G2008 |auxfl|
                 #11=#:G2009 |term| #12=#:G2010 |fln| |factlist|
                 |finallist|)
    (RETURN
      (SEQ (LETT |hlift|
                 (SPADCALL |m| |tl1| |prime| |bound| (QREFELT $ 58))
                 . #13=(|GHENSEL;completeHensel;TPLRPPiL;11|))
           (LETT |Modulus| (QCDR |hlift|) . #13#)
           (LETT |fln| (QCAR |hlift|) . #13#)
           (LETT |nm| (SPADCALL |m| (QREFELT $ 36)) . #13#)
           (LETT |factlist| NIL . #13#) (LETT |dfn| |nm| . #13#)
           (LETT |lcm1| (SPADCALL |m| (QREFELT $ 24)) . #13#)
           (LETT |mm| (SPADCALL |lcm1| |m| (QREFELT $ 25)) . #13#)
           (SEQ G190
                (COND
                  ((NULL (COND
                           ((< 0 |dfn|)
                            (SEQ (LETT |factlist|
                                       (|GHENSEL;genFact| |fln|
                                        |factlist| $) . #13#)
                                 (EXIT (COND
                                         ((SPADCALL |factlist| NIL
                                           (QREFELT $ 34))
                                          'NIL)
                                         ('T 'T)))))
                           ('T 'NIL)))
                   #14=(GO G191)))
                (SEQ (LETT |auxfl| NIL . #13#)
                     (SEQ G190
                          (COND
                            ((NULL (COND
                                     ((SPADCALL |factlist| NIL
                                       (QREFELT $ 34))
                                      'NIL)
                                     ('T 'T)))
                             #14#))
                          (SEQ (LETT |auxl|
                                     (|SPADfirst| |factlist|) . #13#)
                               (LETT |factlist|
                                     (CDR |factlist|) . #13#)
                               (LETT |tc|
                                     (|GHENSEL;reduceCoef|
                                      (SPADCALL |lcm1|
                                       (PROGN
                                         (LETT #3# NIL . #13#)
                                         (SEQ (LETT |poly| NIL . #13#)
                                          (LETT #0# |auxl| . #13#) G190
                                          (COND
                                            ((OR (ATOM #0#)
                                              (PROGN
                                                (LETT |poly|
                                                 (CAR #0#) . #13#)
                                                NIL))
                                             #14#))
                                          (SEQ
                                           (EXIT
                                            (PROGN
                                              (LETT #1#
                                               (SPADCALL |poly| 0
                                                (QREFELT $ 60)) . #13#)
                                              (COND
                                                (#3#
                                                 (LETT #2#
                                                  (SPADCALL #2# #1#
                                                   (QREFELT $ 55)) . #13#))
                                                ('T
                                                 (PROGN
                                                   (LETT #2#
                                                    #1# . #13#)
                                                   (LETT #3# 'T . #13#)))))))
                                          (LETT #0# (CDR #0#) . #13#)
                                          #15=(GO G190) G191
                                          (EXIT NIL))
                                         (COND
                                           (#3# #2#)
                                           ('T (|spadConstant| $ 19))))
                                       (QREFELT $ 55))
                                      |Modulus| $) . #13#)
                               (EXIT (COND
                                       ((QEQCAR
                                         (SPADCALL
                                          (SPADCALL |mm| 0
                                           (QREFELT $ 60))
                                          |tc| (QREFELT $ 62))
                                         1)
                                        (LETT |auxfl|
                                         (CONS |auxl| |auxfl|) . #13#))
                                       ('T
                                        (SEQ
                                         (LETT |pol|
                                          (PROGN
                                            (LETT #7# NIL . #13#)
                                            (SEQ
                                             (LETT |poly| NIL . #13#)
                                             (LETT #4# |auxl| . #13#)
                                             G190
                                             (COND
                                               ((OR (ATOM #4#)
                                                 (PROGN
                                                   (LETT |poly|
                                                    (CAR #4#) . #13#)
                                                   NIL))
                                                #14#))
                                             (SEQ
                                              (EXIT
                                               (PROGN
                                                 (LETT #5#
                                                  |poly| . #13#)
                                                 (COND
                                                   (#7#
                                                    (LETT #6#
                                                     (SPADCALL #6# #5#
                                                      (QREFELT $ 39)) . #13#))
                                                   ('T
                                                    (PROGN
                                                      (LETT #6#
                                                       #5# . #13#)
                                                      (LETT #7#
                                                       'T . #13#)))))))
                                             (LETT #4#
                                              (CDR #4#) . #13#)
                                             #15# G191 (EXIT NIL))
                                            (COND
                                              (#7# #6#)
                                              ('T
                                               (|spadConstant| $ 20)))) . #13#)
                                         (LETT |poly|
                                          (SPADCALL
                                           (SPADCALL |lcm1| |pol|
                                            (QREFELT $ 25))
                                           |Modulus| (QREFELT $ 15)) . #13#)
                                         (LETT |u|
                                          (SPADCALL |mm| |poly|
                                           (QREFELT $ 63)) . #13#)
                                         (EXIT
                                          (COND
                                            ((QEQCAR |u| 1)
                                             (LETT |auxfl|
                                              (CONS |auxl| |auxfl|) . #13#))
                                            ('T
                                             (SEQ
                                              (LETT |poly1|
                                               (SPADCALL |poly|
                                                (QREFELT $ 64)) . #13#)
                                              (LETT |m|
                                               (|GHENSEL;mQuo|
                                                (QCDR |u|)
                                                (SPADCALL |poly1|
                                                 (QREFELT $ 24))
                                                $) . #13#)
                                              (LETT |lcm1|
                                               (SPADCALL |m|
                                                (QREFELT $ 24)) . #13#)
                                              (LETT |mm|
                                               (SPADCALL |lcm1| |m|
                                                (QREFELT $ 25)) . #13#)
                                              (LETT |finallist|
                                               (CONS |poly1|
                                                |finallist|) . #13#)
                                              (LETT |dfn|
                                               (SPADCALL |m|
                                                (QREFELT $ 36)) . #13#)
                                              (LETT |aux| NIL . #13#)
                                              (SEQ
                                               (LETT |poly| NIL . #13#)
                                               (LETT #8# |fln| . #13#)
                                               G190
                                               (COND
                                                 ((OR (ATOM #8#)
                                                   (PROGN
                                                     (LETT |poly|
                                                      (CAR #8#) . #13#)
                                                     NIL))
                                                  #14#))
                                               (SEQ
                                                (EXIT
                                                 (COND
                                                   ((NULL
                                                     (SPADCALL |poly|
                                                      |auxl|
                                                      (QREFELT $ 38)))
                                                    (LETT |aux|
                                                     (CONS |poly|
                                                      |aux|) . #13#))
                                                   ('T
                                                    (SEQ
                                                     (LETT |auxfl|
                                                      (PROGN
                                                        (LETT #9#
                                                         NIL . #13#)
                                                        (SEQ
                                                         (LETT |term|
                                                          NIL . #13#)
                                                         (LETT #10#
                                                          |auxfl| . #13#)
                                                         G190
                                                         (COND
                                                           ((OR
                                                             (ATOM
                                                              #10#)
                                                             (PROGN
                                                               (LETT
                                                                |term|
                                                                (CAR
                                                                 #10#) . #13#)
                                                               NIL))
                                                            #14#))
                                                         (SEQ
                                                          (EXIT
                                                           (COND
                                                             ((COND
                                                                ((SPADCALL
                                                                  |poly|
                                                                  |term|
                                                                  (QREFELT
                                                                   $
                                                                   38))
                                                                 'NIL)
                                                                ('T 'T))
                                                              (LETT #9#
                                                               (CONS
                                                                |term|
                                                                #9#) . #13#)))))
                                                         (LETT #10#
                                                          (CDR #10#) . #13#)
                                                         #15# G191
                                                         (EXIT
                                                          (NREVERSE0
                                                           #9#)))) . #13#)
                                                     (EXIT
                                                      (LETT |factlist|
                                                       (PROGN
                                                         (LETT #11#
                                                          NIL . #13#)
                                                         (SEQ
                                                          (LETT |term|
                                                           NIL . #13#)
                                                          (LETT #12#
                                                           |factlist| . #13#)
                                                          G190
                                                          (COND
                                                            ((OR
                                                              (ATOM
                                                               #12#)
                                                              (PROGN
                                                                (LETT
                                                                 |term|
                                                                 (CAR
                                                                  #12#) . #13#)
                                                                NIL))
                                                             #14#))
                                                          (SEQ
                                                           (EXIT
                                                            (COND
                                                              ((COND
                                                                 ((SPADCALL
                                                                   |poly|
                                                                   |term|
                                                                   (QREFELT
                                                                    $
                                                                    38))
                                                                  'NIL)
                                                                 ('T
                                                                  'T))
                                                               (LETT
                                                                #11#
                                                                (CONS
                                                                 |term|
                                                                 #11#) . #13#)))))
                                                          (LETT #12#
                                                           (CDR #12#) . #13#)
                                                          #15# G191
                                                          (EXIT
                                                           (NREVERSE0
                                                            #11#)))) . #13#)))))))
                                               (LETT #8#
                                                (CDR #8#) . #13#)
                                               #15# G191 (EXIT NIL))
                                              (EXIT
                                               (LETT |fln|
                                                |aux| . #13#)))))))))))
                          NIL #15# G191 (EXIT NIL))
                     (EXIT (LETT |factlist| |auxfl| . #13#)))
                NIL #15# G191 (EXIT NIL))
           (COND
             ((< 0 |dfn|)
              (LETT |finallist| (CONS |m| |finallist|) . #13#)))
           (EXIT |finallist|))))) 

(DEFUN |GeneralHenselPackage| (&REST #0=#:G2011)
  (PROG ()
    (RETURN
      (PROG (#1=#:G2012)
        (RETURN
          (COND
            ((LETT #1#
                   (|lassocShiftWithFunction| (|devaluateList| #0#)
                       (HGET |$ConstructorCache|
                             '|GeneralHenselPackage|)
                       '|domainEqualList|)
                   . #2=(|GeneralHenselPackage|))
             (|CDRwithIncrement| #1#))
            ('T
             (UNWIND-PROTECT
               (PROG1 (APPLY (|function| |GeneralHenselPackage;|) #0#)
                 (LETT #1# T . #2#))
               (COND
                 ((NOT #1#)
                  (HREM |$ConstructorCache| '|GeneralHenselPackage|))))))))))) 

(DEFUN |GeneralHenselPackage;| (|#1| |#2|)
  (PROG (DV$1 DV$2 |dv$| $ |pv$|)
    (RETURN
      (PROGN
        (LETT DV$1 (|devaluate| |#1|) . #0=(|GeneralHenselPackage|))
        (LETT DV$2 (|devaluate| |#2|) . #0#)
        (LETT |dv$| (LIST '|GeneralHenselPackage| DV$1 DV$2) . #0#)
        (LETT $ (GETREFV 66) . #0#)
        (QSETREFV $ 0 |dv$|)
        (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
        (|haddProp| |$ConstructorCache| '|GeneralHenselPackage|
            (LIST DV$1 DV$2) (CONS 1 $))
        (|stuffDomainSlots| $)
        (QSETREFV $ 6 |#1|)
        (QSETREFV $ 7 |#2|)
        (QSETREFV $ 29
            (|EuclideanModularRing| |#1| |#2| |#1| (ELT $ 15)
                (CONS (|function| |GHENSEL;merge|) $)
                (CONS (|function| |GHENSEL;exactquo|) $)))
        $)))) 

(MAKEPROP '|GeneralHenselPackage| '|infovec|
    (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
             (|Boolean|) (0 . |zero?|) (|Integer|)
             (5 . |symmetricRemainder|) (11 . |rem|) (|Mapping| 6 6)
             (17 . |map|) |GHENSEL;reduction;TPRPTP;2| (23 . =)
             (29 . |Zero|) (33 . |Zero|) (37 . |One|) (41 . |One|)
             (|Record| (|:| |coef1| $) (|:| |coef2| $))
             (|Union| 21 '"failed") (45 . |extendedEuclidean|)
             (52 . |leadingCoefficient|) (57 . *)
             (|Record| (|:| |quotient| $) (|:| |remainder| $))
             (63 . |monicDivide|) (69 . =) 'FP (75 . |quo|) (81 . *)
             (87 . |rem|) (|List| 37) (93 . =) (|NonNegativeInteger|)
             (99 . |degree|) (|List| 7) (104 . |member?|) (110 . *)
             (116 . -) (122 . |reduce|) (128 . |zero?|)
             (133 . |coerce|) (138 . |coerce|) (143 . +) (149 . |One|)
             (|Union| 48 '"failed") (|List| $) (153 . |multiEuclidean|)
             (159 . |inv|) (164 . |retract|) (169 . |euclideanSize|)
             (174 . =) (180 . |zero?|) (185 . *)
             (|Record| (|:| |plist| 37) (|:| |modulo| 6))
             (|PositiveInteger|) |GHENSEL;HenselLift;TPLRPPiR;10|
             (191 . |Zero|) (195 . |coefficient|) (|Union| $ '"failed")
             (201 . |exquo|) (207 . |exquo|) (213 . |primitivePart|)
             |GHENSEL;completeHensel;TPLRPPiL;11|)
          '#(|reduction| 218 |completeHensel| 224 |HenselLift| 232)
          'NIL
          (CONS (|makeByteWordVec2| 1 'NIL)
                (CONS '#()
                      (CONS '#()
                            (|makeByteWordVec2| 65
                                '(1 6 8 0 9 2 10 0 0 0 11 2 6 0 0 0 12
                                  2 7 0 13 0 14 2 6 8 0 0 16 0 6 0 17 0
                                  7 0 18 0 6 0 19 0 7 0 20 3 6 22 0 0 0
                                  23 1 7 6 0 24 2 7 0 6 0 25 2 7 26 0 0
                                  27 2 7 8 0 0 28 2 6 0 0 0 30 2 29 0 0
                                  0 31 2 29 0 0 0 32 2 33 8 0 0 34 1 7
                                  35 0 36 2 37 8 7 0 38 2 7 0 0 0 39 2
                                  7 0 0 0 40 2 29 0 7 6 41 1 29 8 0 42
                                  1 7 0 6 43 1 29 7 0 44 2 7 0 0 0 45 0
                                  29 0 46 2 29 47 48 0 49 1 29 0 0 50 1
                                  7 6 0 51 1 6 35 0 52 2 37 8 0 0 53 1
                                  7 8 0 54 2 6 0 0 0 55 0 29 0 59 2 7 6
                                  0 35 60 2 6 61 0 0 62 2 7 61 0 0 63 1
                                  7 0 0 64 2 0 7 7 6 15 4 0 37 7 37 6
                                  57 65 4 0 56 7 37 6 57 58)))))
          '|lookupComplete|)) 
