(loader '((title z)))
(if (not (>= (version) 15.2)) (progn (syserror 'load "fichier non compatible" 'n)))
(add-feature 'n)
(if (not (featurep 'kern)) (progn (libload "bnkern")))
(setq #:backup:majuscules #:system:read-case-flag #:system:read-case-flag ())
(setq #:sys-package:colon 'n)
(loader'((fentry fix->n subr2)
(entry fix->n subr2)
(push a1)
(push a2)
(mov '1 a2)
(pop a1)
(jcall bncreate)
(push a1)
(mov (& 1) a3)
(mov '0 a2)
(jcall bnsetdigit)
(mov (& 0) a1)
(adjstk '2)
(return)
))
(defvar #:n:c0 (fix->n 0 'n))
(defvar #:n:c-1 ((lambda (res) (bncomplement res 0 1) res) (fix->n 0 'n)))
(defvar #:n:creg (fix->n 0 'n))
(loader'((fentry bniszero subr3)
(entry bniszero subr3)
(push a2)
(push a1)
(jcall bnnumdigits)
(cnbne a1 '1 101)
(mov (& 1) a2)
(mov (& 0) a1)
(jcall bnisdigitzero)
(cabeq a1 '0 101)
(mov '1 a1)
(adjstk '2)
(return)
101
(mov '0 a1)
(adjstk '2)
(return)
))
(loader'((fentry bncompare nsubr)
(entry bncompare nsubr)
(cnbeq a4 '6 0)
(mov 'bncompare a1)
(mov '6 a2)
(jmp #:llcp:errwna)
0
(mov (& 0) a2)
(mov (& 3) a1)
(jcall <?>)
(push a1)
(cnbne a1 '0 102)
(mov (& 5) a4)
(plus (& 4) a4)
(mov a4 (& 4))
(mov (& 2) a4)
(plus (& 1) a4)
(mov a4 (& 1))
103
(cabne (& 0) '0 102)
(mov (& 4) a4)
(diff '1 a4)
(mov a4 (& 4))
(cnblt a4 (& 5) 102)
(push (@ 105))
(push (& 7))
(push (& 6))
(push (& 6))
(mov (& 5) a4)
(diff '1 a4)
(mov a4 (& 5))
(push a4)
(mov '4 a4)
(jmp bncomparedigits)
105
(eval ())
(mov a1 (& 0))
(bra 103)
102
(mov (& 0) a1)
(adjstk '7)
(return)
))
(loader'((fentry bnmultiplyplain nsubr)
(entry bnmultiplyplain nsubr)
(cnbeq a4 '9 0)
(mov 'bnmultiplyplain a1)
(mov '9 a2)
(jmp #:llcp:errwna)
0
(push '0)
101
(cnble (& 1) '0 102)
(push (@ 103))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(mov '8 a4)
(jmp bnmultiplydigit)
103
(eval ())
(mov (& 0) a4)
(plus a1 a4)
(mov a4 (& 0))
(mov (& 8) a4)
(plus '1 a4)
(mov a4 (& 8))
(mov (& 7) a4)
(diff '1 a4)
(mov a4 (& 7))
(mov (& 2) a4)
(plus '1 a4)
(mov a4 (& 2))
(mov (& 1) a4)
(diff '1 a4)
(mov a4 (& 1))
(bra 101)
102
(mov (& 0) a1)
(adjstk '10)
(return)
))
(defvar #:n:qapp (bncreate 'n 2))
(defvar #:n:cdiv (fix->n 0 'n))
(loader'((fentry ndivide nsubr)
(entry ndivide nsubr)
(cnbeq a4 '6 0)
(mov 'ndivide a1)
(mov '6 a2)
(jmp #:llcp:errwna)
0
(push (@ 101))
(push (cvalq #:n:cdiv))
(push '0)
(push (& 5))
(mov (& 5) a4)
(plus (& 4) a4)
(diff '1 a4)
(push a4)
(push '1)
(mov '5 a4)
(jmp bnassign)
101
(eval ())
(mov (& 0) a3)
(mov (& 1) a2)
(mov (& 2) a1)
(jcall bncomplement)
(push (@ 102))
(push (& 3))
(push (& 3))
(push (& 3))
(push '1)
(mov '4 a4)
(jmp bnaddcarry)
102
(eval ())
(mov (& 4) a4)
(plus (& 3) a4)
(mov a4 (& 3))
(diff (& 0) a4)
(push a4)
103
(mov (& 0) a4)
(diff '1 a4)
(mov a4 (& 0))
(cnblt a4 (& 5) 104)
(push (@ 107))
(push (& 7))
(mov (& 6) a3)
(diff '1 a3)
(mov a3 (& 6))
(push a3)
(push (cvalq #:n:cdiv))
(push '0)
(mov '4 a4)
(jmp bncomparedigits)
107
(eval ())
(cabne '0 a1 105)
(push (@ 108))
(push (cvalq #:n:qapp))
(push '0)
(push (cvalq #:n:c-1))
(push '0)
(push '1)
(mov '5 a4)
(jmp bnassign)
108
(eval ())
(bra 106)
105
(push (@ 109))
(push (cvalq #:n:qapp))
(push '0)
(push (cvalq #:n:qapp))
(push '1)
(push (& 11))
(mov (& 10) a4)
(diff '1 a4)
(push a4)
(push '2)
(push (cvalq #:n:cdiv))
(push '0)
(mov '9 a4)
(jmp bndividedigit)
109
(eval ())
106
(push (@ 110))
(push (& 7))
(push (& 2))
(mov (& 4) a4)
(plus '1 a4)
(push a4)
(push (& 7))
(push (& 7))
(push (& 7))
(push (cvalq #:n:qapp))
(push '0)
(mov '8 a4)
(jmp bnmultiplydigit)
110
(eval ())
111
(push (@ 113))
(push (& 7))
(push (& 6))
(push (cvalq #:n:qapp))
(push '0)
(mov '4 a4)
(jmp bncomparedigits)
113
(eval ())
(mov '0 a2)
(jcall <>)
(btnil a1 103)
(mov (& 1) a3)
(mov (& 2) a2)
(mov (& 3) a1)
(jcall bncomplement)
(push (@ 114))
(push (& 4))
(push (& 4))
(push (& 4))
(push '1)
(mov '4 a4)
(jmp bnaddcarry)
114
(eval ())
(push (@ 115))
(push (& 7))
(push (& 2))
(mov (& 4) a4)
(plus '1 a4)
(push a4)
(push (& 7))
(push (& 7))
(push (& 7))
(push '0)
(mov '7 a4)
(jmp bnadd)
115
(eval ())
(push (@ 116))
(push (& 7))
(push (& 6))
(push '1)
(push (cvalq #:n:c-1))
(push '0)
(push '1)
(push '0)
(mov '7 a4)
(jmp bnadd)
116
(eval ())
(push (@ 117))
(push (cvalq #:n:qapp))
(push '0)
(push '1)
(push (cvalq #:n:c-1))
(push '0)
(push '1)
(push '0)
(mov '7 a4)
(jmp bnadd)
117
(eval ())
(mov (& 1) a3)
(mov (& 2) a2)
(mov (& 3) a1)
(jcall bncomplement)
(push (@ 118))
(push (& 4))
(push (& 4))
(push (& 4))
(push '1)
(mov '4 a4)
(jmp bnaddcarry)
118
(eval ())
(bra 111)
104
(adjstk '1)
(mov (& 0) a3)
(mov (& 1) a2)
(mov (& 2) a1)
(jcall bncomplement)
(push (@ 119))
(push (& 3))
(push (& 3))
(push (& 3))
(push '1)
(mov '4 a4)
(jmp bnaddcarry)
119
(eval ())
(adjstk '6)
(return)
))
(setq #:sys-package:colon '#:r:q)
(loader'((fentry bndivide nsubr)
(entry bndivide nsubr)
(cnbeq a4 '6 0)
(mov 'bndivide a1)
(mov '6 a2)
(jmp #:llcp:errwna)
0
(cnbne '1 (& 0) 101)
(push (@ 103))
(push (& 6))
(mov (& 6) a4)
(plus '1 a4)
(push a4)
(push (& 8))
(push (& 8))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(mov '9 a4)
(jmp bndividedigit)
103
(eval ())
(adjstk '6)
(return)
101
(mov (& 1) a4)
(plus (& 0) a4)
(diff '1 a4)
(mov a4 a2)
(mov (& 2) a1)
(jcall bnnumleadingzerobitsindigit)
(push a1)
(push (@ 104))
(push (& 4))
(push (& 4))
(push (& 4))
(push (cvalq #:n:c0))
(push '0)
(push a1)
(mov '6 a4)
(jmp bnshiftleft)
104
(eval ())
(push (@ 105))
(push (& 7))
(push (& 7))
(push (& 7))
(push (cvalq #:n:c0))
(push '0)
(push (& 6))
(mov '6 a4)
(jmp bnshiftleft)
105
(eval ())
(push (@ 106))
(push (& 7))
(push (& 7))
(push (& 7))
(push (& 7))
(push (& 7))
(push (& 7))
(mov '6 a4)
(jmp ndivide)
106
(eval ())
(push (@ 107))
(push (& 4))
(push (& 4))
(push (& 4))
(push (cvalq #:n:c0))
(push '0)
(push (& 6))
(mov '6 a4)
(jmp bnshiftright)
107
(eval ())
(push (@ 108))
(push (& 7))
(push (& 7))
(push (& 4))
(push (cvalq #:n:c0))
(push '0)
(push (& 6))
(mov '6 a4)
(jmp bnshiftright)
108
(eval ())
(adjstk '7)
(return)
))
(loader'((fentry bnnumbitsindigit subr2)
(entry bnnumbitsindigit subr2)
(push a2)
(push a1)
(jcall bnisdigitzero)
(cabeq a1 '0 101)
(mov '1 a1)
(adjstk '2)
(return)
101
(mov (& 1) a2)
(mov (& 0) a1)
(jcall bnnumleadingzerobitsindigit)
(mov (cvalq bn←digit←size) a4)
(diff a1 a4)
(mov a4 a1)
(adjstk '2)
(return)
))
(loader'((fentry bnnumbits subr3)
(entry bnnumbits subr3)
(push a3)
(push a1)
(diff '1 a3)
(mov (cvalq bn←digit←size) a4)
(times a3 a4)
(push a4)
(plus (& 2) a2)
(diff '1 a2)
(mov (& 1) a1)
(jcall bnnumbitsindigit)
(pop a4)
(plus a1 a4)
(mov a4 a1)
(adjstk '2)
(return)
))
(defvar bn←kara←limit 25)
(defvar bn←max←size←divided←by←two 4095)
(loader'((entry b+b*b←naif nsubr)
101
(cnble (& 1) '0 102)
(push (@ 103))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 10))
(mov '8 a4)
(jmp bnmultiplydigit)
103
(eval ())
(mov (& 0) a4)
(plus a1 a4)
(mov a4 (& 0))
(mov (& 8) a4)
(plus '1 a4)
(mov a4 (& 8))
(mov (& 7) a4)
(diff '1 a4)
(mov a4 (& 7))
(mov (& 2) a4)
(plus '1 a4)
(mov a4 (& 2))
(mov (& 1) a4)
(diff '1 a4)
(mov a4 (& 1))
(bra 101)
102
(mov (& 0) a1)
(adjstk '10)
(return)
))
(loader'((fentry bnmultiplykaratsuba nsubr)
(entry bnmultiplykaratsuba nsubr)
(cnbeq a4 '9 0)
(mov 'bnmultiplykaratsuba a1)
(mov '9 a2)
(jmp #:llcp:errwna)
0
(cnble (& 0) (cvalq bn←max←size←divided←by←two) 101)
(push (@ 103))
(push (& 9))
(push (& 9))
(push (& 9))
(push (& 9))
(push (& 9))
(push (& 9))
(push (& 9))
(push (& 9))
(push (& 9))
(mov '9 a4)
(jmp bnmultiplyplain)
103
(eval ())
(adjstk '9)
(return)
101
(mov (& 3) a4)
(quo (& 0) a4)
(mov (& 3) a3)
(rem (& 0) a3)
(mov (& 0) a2)
(plus (& 0) a2)
(push '0)
(push a2)
(push a3)
(push a4)
(cnblt (& 4) (cvalq bn←kara←limit) 106)
(mov a2 a3)
(mov '0 a2)
(mov (& 9) a1)
(jcall entretampon)
106
(cnble (& 0) '0 107)
(push (@ 108))
(push (& 13))
(mov (& 13) a4)
(plus (& 4) a4)
(push a4)
(mov (& 13) a4)
(diff (& 5) a4)
(push a4)
(push (@ 109))
(push (& 14))
(push (& 14))
(push (& 13))
(push (& 13))
(push (& 21))
(push (& 21))
(push (cvalq ntampon))
(push '0)
(push (& 17))
(mov '9 a4)
(bra b+b*b←kara)
109
(eval ())
(push a1)
(mov '4 a4)
(jmp bnaddcarry)
108
(eval ())
(mov (& 3) a4)
(plus a1 a4)
(mov a4 (& 3))
(mov (& 11) a4)
(plus (& 4) a4)
(mov a4 (& 11))
(mov (& 10) a4)
(diff (& 4) a4)
(mov a4 (& 10))
(mov (& 8) a4)
(plus (& 4) a4)
(mov a4 (& 8))
(mov (& 0) a4)
(diff '1 a4)
(mov a4 (& 0))
(bra 106)
107
(cnble (& 1) '0 111)
(push (@ 112))
(push (& 13))
(push (& 13))
(push (& 13))
(push (& 10))
(push (& 10))
(push (& 10))
(push (& 16))
(push (& 16))
(push (& 10))
(mov '9 a4)
(jmp bnmultiply)
112
(eval ())
(mov (& 3) a4)
(plus a1 a4)
(mov a4 (& 3))
111
(mov (& 3) a1)
(adjstk '13)
(return)
))
(loader'((fentry bnkaraswitch subr1)
(entry bnkaraswitch subr1)
(btnil a1 101)
(mov 'bnmultiplykaratsuba a2)
(mov 'bnmultiply a1)
(jmp synonym)
101
(mov 'bnmultiplyplain a2)
(mov 'bnmultiply a1)
(jmp synonym)
))
(bnkaraswitch ())
(loader'((entry b+b*b←kara nsubr)
(cnblt (cvalq bn←kara←limit) (& 0) 101)
(push (@ 103))
(push (& 5))
(push (& 5))
(mov (& 3) a4)
(times '2 a4)
(push a4)
(push (& 12))
(push (& 12))
(push (& 6))
(push (& 13))
(push (& 13))
(push (& 9))
(push '0)
(mov '10 a4)
(bra b+b*b←naif)
103
(eval ())
(adjstk '9)
(return)
101
(mov (& 0) a1)
(jcall oddp)
(btnil a1 104)
(push (@ 106))
(push (& 9))
(mov (& 9) a4)
(plus '1 a4)
(push a4)
(push (& 9))
(mov (& 9) a4)
(plus '1 a4)
(push a4)
(push (& 9))
(mov (& 9) a4)
(plus '2 a4)
(push a4)
(push (& 9))
(push (& 9))
(mov (& 9) a4)
(diff '1 a4)
(push a4)
(mov '9 a4)
(bra b+b*b←kara)
106
(eval ())
(push a1)
(push a1)
(push (@ 107))
(push (& 7))
(push (& 7))
(mov (& 5) a4)
(times '2 a4)
(push a4)
(push (& 14))
(push (& 14))
(push (& 8))
(push (& 15))
(push (& 15))
(mov '8 a4)
(jmp bnmultiplydigit)
107
(eval ())
(pop a4)
(plus a1 a4)
(mov a4 (& 0))
(push a4)
(push (@ 108))
(push (& 7))
(mov (& 7) a3)
(plus '1 a3)
(push a3)
(mov (& 5) a3)
(times '2 a3)
(diff '1 a3)
(push a3)
(push (& 12))
(mov (& 12) a3)
(plus '1 a3)
(push a3)
(mov (& 8) a3)
(diff '1 a3)
(push a3)
(push (& 17))
(push (& 17))
(mov '8 a4)
(jmp bnmultiplydigit)
108
(eval ())
(pop a4)
(plus a1 a4)
(mov a4 a1)
(adjstk '10)
(return)
104
(mov '2 a2)
(mov (& 0) a1)
(jcall quo)
(push a1)
(push '0)
(push '0)
(mov (& 4) a4)
(plus a1 a4)
(push a4)
(plus a1 a4)
(push a4)
(mov (& 8) a3)
(plus a1 a3)
(push a3)
(plus a1 a3)
(push a3)
(plus a1 a3)
(push a3)
(mov (& 15) a2)
(plus a1 a2)
(push a2)
(mov (& 14) a4)
(plus a1 a4)
(push a4)
(push (@ 109))
(push (& 13))
(push (& 13))
(push (& 21))
(push a2)
(push a1)
(mov '5 a4)
(jmp bnassign)
109
(eval ())
(push (@ 110))
(push (& 13))
(push (& 8))
(push (& 19))
(push (& 4))
(push (& 14))
(mov '5 a4)
(jmp bnassign)
110
(eval ())
(push (@ 111))
(push (& 13))
(push (& 13))
(push (& 12))
(push (& 22))
(push (& 22))
(push (& 15))
(push '0)
(mov '7 a4)
(jmp bnadd)
111
(eval ())
(mov a1 (& 8))
(push (@ 112))
(push (& 13))
(push (& 8))
(push (& 12))
(push (& 20))
(push (& 20))
(push (& 15))
(push '0)
(mov '7 a4)
(jmp bnadd)
112
(eval ())
(mov a1 (& 7))
(cabeq '0 (& 8) 114)
(push a1)
(push (@ 115))
(push (& 16))
(push (& 6))
(push (& 13))
(push (& 17))
(push (& 12))
(push (& 16))
(push '0)
(mov '7 a4)
(jmp bnadd)
115
(eval ())
(pop a4)
(plus a1 a4)
(mov a4 (& 8))
114
(cabeq '0 (& 7) 117)
(push (@ 118))
(push (& 15))
(push (& 5))
(push (& 12))
(push (& 16))
(push (& 16))
(push (& 15))
(push '0)
(mov '7 a4)
(jmp bnadd)
118
(eval ())
(mov (& 8) a4)
(plus a1 a4)
(mov a4 (& 8))
117
(push (@ 119))
(push (& 13))
(push (& 13))
(push (& 15))
(push (& 10))
(push (& 19))
(push (& 10))
(push (& 19))
(push (& 13))
(push (& 18))
(mov '9 a4)
(bra b+b*b←kara)
119
(eval ())
(mov (& 8) a4)
(plus a1 a4)
(mov a4 (& 8))
(mov (& 10) a3)
(mov (& 11) a2)
(mov (& 12) a1)
(jcall bnsettozero)
(push (@ 120))
(push (& 19))
(push (& 19))
(push (& 19))
(push (& 19))
(push (& 17))
(push (& 17))
(push (& 19))
(push (& 13))
(push (& 18))
(mov '9 a4)
(bra b+b*b←kara)
120
(eval ())
(push (@ 121))
(push (& 15))
(push (& 6))
(push (& 13))
(push (& 16))
(push (& 16))
(push (& 16))
(push '1)
(mov '7 a4)
(jmp bnsubtract)
121
(eval ())
(diff '1 a1)
(mov (& 8) a4)
(plus a1 a4)
(mov a4 (& 8))
(push a4)
(push (@ 122))
(push (& 16))
(push (& 16))
(mov (& 14) a3)
(plus (& 13) a3)
(push a3)
(push (& 17))
(push (& 17))
(push (& 17))
(push '0)
(mov '7 a4)
(jmp bnadd)
122
(eval ())
(pop a4)
(plus a1 a4)
(mov a4 (& 8))
(mov (& 10) a3)
(mov (& 11) a2)
(mov (& 12) a1)
(jcall bnsettozero)
(push (@ 123))
(push (& 19))
(push (& 3))
(push (& 19))
(push (& 4))
(push (& 17))
(push (& 17))
(push (& 19))
(push (& 13))
(push (& 18))
(mov '9 a4)
(bra b+b*b←kara)
123
(eval ())
(push (@ 124))
(push (& 15))
(push (& 6))
(push (& 13))
(push (& 16))
(push (& 16))
(push (& 16))
(push '1)
(mov '7 a4)
(jmp bnsubtract)
124
(eval ())
(diff '1 a1)
(mov (& 8) a4)
(plus a1 a4)
(mov a4 (& 8))
(push (@ 125))
(push (& 15))
(push (& 5))
(push (& 13))
(push (& 16))
(push (& 16))
(push (& 16))
(push '0)
(mov '7 a4)
(jmp bnadd)
125
(eval ())
(mov a1 (& 7))
126
(cnble (& 8) '0 127)
(push (@ 128))
(push (& 15))
(push (& 4))
(push (& 12))
(push '1)
(mov '4 a4)
(jmp bnaddcarry)
128
(eval ())
(mov (& 7) a4)
(plus a1 a4)
(mov a4 (& 7))
(mov (& 8) a4)
(diff '1 a4)
(mov a4 (& 8))
(bra 126)
127
(mov (& 7) a1)
(adjstk '19)
(return)
))
(setq #:system:read-case-flag #:backup:majuscules)
(if (not (>= (version) 15.2)) (progn (syserror 'load "fichier non compatible" 'z)))
(add-feature 'z)
(if (not (featurep 'gen)) (progn (libload "bngen")))
(if (not (featurep 'n)) (progn (libload "bnn")))
(setq #:backup:majuscules #:system:read-case-flag #:system:read-case-flag ())
(setq #:sys-package:colon 'r)
(setq #:sys-package:colon '#:r:q)
(loader'((fentry bzcreate subr1)
(entry bzcreate subr1)
(mov '#:r:q:z a2)
(jmp bncreate)
))
(loader'((fentry bzfree subr1)
(entry bzfree subr1)
(jmp bnfree)
))
(loader'((fentry #:r:q:integerp subr1)
(entry #:r:q:integerp subr1)
(return)
))
(loader'((entry zcopy subr2)
(push a2)
(push a1)
(push a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(pop a1)
(jcall bnnumdigits)
(push a1)
(mov a1 a2)
(mov (& 2) a1)
(jcall bncreate)
(push a1)
(push (@ 101))
(push a1)
(push '0)
(push (& 5))
(push '0)
(push (& 6))
(mov '5 a4)
(jmp bnassign)
101
(eval ())
(mov (& 0) a1)
(adjstk '4)
(return)
))
(loader'((fentry bzcopy subr1)
(entry bzcopy subr1)
(push a1)
(jcall bngettype)
(mov a1 a2)
(pop a1)
(bra zcopy)
))
(loader'((entry 0-n subr1)
(push a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov (& 0) a1)
(adjstk '1)
(jmp 0-)
102
(cabne a1 '#:r:q:n 103)
(mov '#:r:q:z a2)
(mov (& 0) a1)
(jcall bnsettype)
(mov (& 0) a1)
(adjstk '1)
(return)
103
(cabne a1 '#:r:q:z 104)
(mov '#:r:q:n a2)
(mov (& 0) a1)
(jcall bnsettype)
(mov (& 0) a1)
(adjstk '1)
(return)
104
(push (@ 106))
(push '0-)
(push (& 2))
(mov '2 a4)
(jmp send)
106
(eval ())
(adjstk '1)
(return)
))
(loader'((fentry bznegate subr1)
(entry bznegate subr1)
(jcall bzcopy)
(bra 0-n)
))
(loader'((fentry #:r:q:n:abs subr1)
(entry #:r:q:n:abs subr1)
(return)
))
(loader'((fentry #:r:q:z:abs subr1)
(entry #:r:q:z:abs subr1)
(mov '#:r:q:n a2)
(bra zcopy)
))
(loader'((fentry bzabs subr1)
(entry bzabs subr1)
(mov '#:r:q:n a2)
(bra zcopy)
))
(loader'((fentry #:r:q:z:0- subr1)
(entry #:r:q:z:0- subr1)
(mov '#:r:q:n a2)
(bra zcopy)
))
(loader'((fentry #:r:q:n:0- subr1)
(entry #:r:q:n:0- subr1)
(mov '#:r:q:z a2)
(bra zcopy)
))
(loader'((fentry bzsign subr1)
(entry bzsign subr1)
(push a1)
(push a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(pop a1)
(jcall bniszero)
(cabeq a1 '0 101)
(mov '0 a1)
(adjstk '1)
(return)
101
(mov (& 0) a1)
(jcall bngettype)
(cabne a1 '#:r:q:n 103)
(mov '1 a1)
(adjstk '1)
(return)
103
(mov '-1 a1)
(adjstk '1)
(return)
))
(loader'((fentry #:r:q:truncate subr1)
(entry #:r:q:truncate subr1)
(return)
))
(loader'((entry zfloat subr1)
(push (@ 101))
(jcall explode)
(jcall string)
(push a1)
(push '".")
(mov '2 a4)
(jmp catenate)
101
(eval ())
(push a1)
(hgsize a1 a1)
(mov nil a3)
(mov (& 0) a2)
(adjstk '1)
(jmp stratom)
))
(loader'((fentry #:r:q:n:float subr1)
(entry #:r:q:n:float subr1)
(bra zfloat)
))
(loader'((fentry #:r:q:z:float subr1)
(entry #:r:q:z:float subr1)
(bra zfloat)
))
(loader'((fentry z?z nsubr)
(entry z?z nsubr)
(cnbeq a4 '4 0)
(mov 'z?z a1)
(mov '4 a2)
(jmp #:llcp:errwna)
0
(mov (& 0) a2)
(mov (& 1) a1)
(jcall <?>)
(mov a1 (& 0))
101
(cabne (& 0) '0 102)
(mov (& 1) a4)
(diff '1 a4)
(mov a4 (& 1))
(cnblt a4 '0 102)
(push (@ 103))
(push (& 4))
(push (& 3))
(push (& 5))
(push (& 5))
(mov '4 a4)
(jmp bncomparedigits)
103
(eval ())
(mov a1 (& 0))
(bra 101)
102
(mov (& 0) a1)
(adjstk '4)
(return)
))
(loader'((fentry #:r:q:n:<?> subr2)
(entry #:r:q:n:<?> subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov (& 0) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 0) a1)
(jcall bnnumdigits)
(cabne '1 a1 103)
(mov '0 a2)
(mov (& 0) a1)
(jcall bndoesdigitfitinword)
(cabeq a1 '0 103)
(mov '0 a2)
(mov (& 0) a1)
(jcall bngetdigit)
(mov a1 (& 0))
(mov (& 1) a2)
(adjstk '2)
(jmp <?>)
103
(mov '1 a1)
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 105)
(push (@ 106))
(push (& 1))
(push (& 3))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(mov '4 a4)
(jmp z?z)
106
(eval ())
(adjstk '2)
(return)
105
(cabne a1 '#:r:q:z 107)
(mov '1 a1)
(adjstk '2)
(return)
107
(mov (& 0) a2)
(mov (& 1) a1)
(jcall <?>)
(adjstk '2)
(jmp 0-)
))
(loader'((fentry #:r:q:z:<?> subr2)
(entry #:r:q:z:<?> subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov (& 0) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 0) a1)
(jcall bnnumdigits)
(cabne '1 a1 103)
(mov '0 a2)
(mov (& 0) a1)
(jcall bndoesdigitfitinword)
(cabeq a1 '0 103)
(mov '0 a2)
(mov (& 0) a1)
(jcall bngetdigit)
(mov a1 (& 0))
(mov '0 a4)
(diff a1 a4)
(mov (& 1) a2)
(mov a4 a1)
(adjstk '2)
(jmp <?>)
103
(mov '-1 a1)
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 105)
(mov '-1 a1)
(adjstk '2)
(return)
105
(cabne a1 '#:r:q:z 106)
(push (@ 107))
(push (& 2))
(push (& 2))
(mov (& 4) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 4) a1)
(jcall bnnumdigits)
(push a1)
(mov (& 4) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 4) a1)
(jcall bnnumdigits)
(push a1)
(mov '4 a4)
(jmp z?z)
107
(eval ())
(adjstk '2)
(return)
106
(mov (& 0) a2)
(mov (& 1) a1)
(jcall <?>)
(adjstk '2)
(jmp 0-)
))
(loader'((fentry bzcompare subr2)
(entry bzcompare subr2)
(jmp <?>)
))
(loader'((entry z+z nsubr)
(cnble (& 4) (& 2) 101)
(mov (& 4) a2)
(mov (& 0) a1)
(jcall bncreate)
(mov a1 (& 1))
(push (@ 103))
(push a1)
(push '0)
(push (& 8))
(push '0)
(push (& 9))
(mov '5 a4)
(jmp bnassign)
103
(eval ())
(push (@ 106))
(push (& 2))
(push '0)
(push (& 7))
(push (& 7))
(push '0)
(push (& 8))
(push '0)
(mov '7 a4)
(jmp bnadd)
106
(eval ())
(cabne '0 a1 104)
(mov (& 1) a1)
(adjstk '6)
(return)
104
(mov (& 4) a4)
(plus '1 a4)
(mov a4 a2)
(mov (& 0) a1)
(jcall bncreate)
(mov a1 (& 5))
(push (@ 107))
(push a1)
(push '0)
(push (& 4))
(push '0)
(push (& 9))
(mov '5 a4)
(jmp bnassign)
107
(eval ())
(mov '1 a3)
(mov (& 4) a2)
(mov (& 5) a1)
(jcall bnsetdigit)
(mov (& 5) a1)
(adjstk '6)
(return)
101
(cnbne (& 4) (& 2) 108)
(mov (& 4) a4)
(plus '1 a4)
(mov a4 (& 4))
(mov a4 a2)
(mov (& 0) a1)
(jcall bncreate)
(mov a1 (& 1))
(push (@ 110))
(push a1)
(push '0)
(push (& 8))
(push '0)
(push (& 7))
(mov '5 a4)
(jmp bnassign)
110
(eval ())
(push (@ 111))
(push (& 2))
(push '0)
(push (& 7))
(push (& 7))
(push '0)
(push (& 8))
(push '0)
(mov '7 a4)
(jmp bnadd)
111
(eval ())
(mov (& 1) a1)
(adjstk '6)
(return)
108
(push (& 3))
(push (& 3))
(push (& 7))
(push (& 7))
(push (& 5))
(push (& 5))
(mov '6 a4)
(mov (& 5) (& 11))
(mov (& 4) (& 10))
(mov (& 3) (& 9))
(mov (& 2) (& 8))
(mov (& 1) (& 7))
(mov (& 0) (& 6))
(adjstk '6)
(bra z+z)
))
(loader'((entry z-z nsubr)
(cnble (& 4) (& 2) 101)
(mov (& 4) a2)
(mov (& 0) a1)
(jcall bncreate)
(mov a1 (& 1))
(push (@ 103))
(push a1)
(push '0)
(push (& 8))
(push '0)
(push (& 9))
(mov '5 a4)
(jmp bnassign)
103
(eval ())
(push (@ 104))
(push (& 2))
(push '0)
(push (& 7))
(push (& 7))
(push '0)
(push (& 8))
(push '1)
(mov '7 a4)
(jmp bnsubtract)
104
(eval ())
(mov (& 1) a1)
(adjstk '6)
(return)
101
(cnbne (& 4) (& 2) 105)
(mov (& 4) a2)
(mov (& 0) a1)
(jcall bncreate)
(mov a1 (& 1))
(push (@ 107))
(push a1)
(push '0)
(push (& 8))
(push '0)
(push (& 9))
(mov '5 a4)
(jmp bnassign)
107
(eval ())
(push (@ 110))
(push (& 2))
(push '0)
(push (& 7))
(push (& 7))
(push '0)
(push (& 8))
(push '1)
(mov '7 a4)
(jmp bnsubtract)
110
(eval ())
(cabne '1 a1 108)
(mov (& 4) a3)
(mov '0 a2)
(mov (& 1) a1)
(adjstk '6)
(jmp bnconvert)
108
(mov (& 4) a3)
(mov '0 a2)
(mov (& 1) a1)
(jcall bnnumdigits)
(cabne '1 a1 111)
(mov '0 a2)
(mov (& 1) a1)
(jcall bnisdigitzero)
(cabeq a1 '0 111)
(mov '0 a1)
(adjstk '6)
(return)
111
(mov (& 4) a3)
(mov '0 a2)
(mov (& 1) a1)
(jcall bncomplement)
(push (@ 113))
(push (& 2))
(push '0)
(push (& 7))
(push '1)
(mov '4 a4)
(jmp bnaddcarry)
113
(eval ())
(cabne (& 0) '#:r:q:n 114)
(mov '#:r:q:z a2)
(bra 115)
114
(mov '#:r:q:n a2)
115
(mov (& 1) a1)
(jcall bnsettype)
(mov (& 4) a3)
(mov '0 a2)
(mov (& 1) a1)
(adjstk '6)
(jmp bnconvert)
105
(push (& 3))
(push (& 3))
(push (& 7))
(push (& 7))
(push (& 5))
(cabne (& 5) '#:r:q:n 116)
(mov '#:r:q:z a4)
(bra 117)
116
(mov '#:r:q:n a4)
117
(push a4)
(mov '6 a4)
(mov (& 5) (& 11))
(mov (& 4) (& 10))
(mov (& 3) (& 9))
(mov (& 2) (& 8))
(mov (& 1) (& 7))
(mov (& 0) (& 6))
(adjstk '6)
(bra z-z)
))
(defvar #:r:q:fix (bncreate 'n 2))
(loader'((fentry #:r:q:n:+ subr2)
(entry #:r:q:n:+ subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(cnblt (& 1) '0 103)
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 105))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z+z)
105
(eval ())
(adjstk '2)
(return)
103
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 106))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z-z)
106
(eval ())
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 107)
(push (@ 108))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z+z)
108
(eval ())
(adjstk '2)
(return)
107
(cabne a1 '#:r:q:z 109)
(push (@ 110))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z-z)
110
(eval ())
(adjstk '2)
(return)
109
(push (@ 112))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp +)
112
(eval ())
(adjstk '2)
(return)
))
(loader'((fentry #:r:q:n:- subr2)
(entry #:r:q:n:- subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(cnblt (& 1) '0 103)
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 105))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z-z)
105
(eval ())
(adjstk '2)
(return)
103
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 106))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z+z)
106
(eval ())
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 107)
(push (@ 108))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z-z)
108
(eval ())
(adjstk '2)
(return)
107
(cabne a1 '#:r:q:z 109)
(push (@ 110))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z+z)
110
(eval ())
(adjstk '2)
(return)
109
(push (@ 112))
(mov (& 2) a1)
(jcall 0-)
(push a1)
(push (& 2))
(mov '2 a4)
(jmp +)
112
(eval ())
(adjstk '2)
(return)
))
(loader'((fentry #:r:q:z:+ subr2)
(entry #:r:q:z:+ subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(cnblt (& 1) '0 103)
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 105))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z-z)
105
(eval ())
(adjstk '2)
(return)
103
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 106))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z+z)
106
(eval ())
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 107)
(push (@ 108))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z-z)
108
(eval ())
(adjstk '2)
(return)
107
(cabne a1 '#:r:q:z 109)
(push (@ 110))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z+z)
110
(eval ())
(adjstk '2)
(return)
109
(push (@ 112))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp +)
112
(eval ())
(adjstk '2)
(return)
))
(loader'((fentry bzadd subr2)
(entry bzadd subr2)
(push (@ 101))
(push a1)
(push a2)
(mov '2 a4)
(jmp +)
101
(eval ())
(return)
))
(loader'((fentry #:r:q:z:- subr2)
(entry #:r:q:z:- subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(cnblt (& 1) '0 103)
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 105))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z+z)
105
(eval ())
(adjstk '2)
(return)
103
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 106))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z-z)
106
(eval ())
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 107)
(push (@ 108))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z+z)
108
(eval ())
(adjstk '2)
(return)
107
(cabne a1 '#:r:q:z 109)
(push (@ 110))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z-z)
110
(eval ())
(adjstk '2)
(return)
109
(push (@ 112))
(mov (& 2) a1)
(jcall 0-)
(push a1)
(push (& 2))
(mov '2 a4)
(jmp +)
112
(eval ())
(adjstk '2)
(return)
))
(loader'((fentry bzsubtract subr2)
(entry bzsubtract subr2)
(push (@ 101))
(push a1)
(push a2)
(mov '2 a4)
(jmp -)
101
(eval ())
(return)
))
(defvar #:r:q:longueur-sommes (if (eq bn←digit←size 16) 2 1))
(loader'((fentry #:fix:+ subr2)
(entry #:fix:+ subr2)
(push a2)
(push a1)
(cnblt a1 '0 101)
(mov a1 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(mov (& 1) a1)
(jcall type-of)
(cabne a1 'fix 104)
(mov (cvalq #:r:q:longueur-sommes) a2)
(mov '#:r:q:n a1)
(jcall bncreate)
(mov a1 (& 0))
(mov (& 1) a3)
(mov '0 a2)
(jcall bnsetdigit)
(push (@ 105))
(push (& 1))
(push '0)
(push (cvalq #:r:q:longueur-sommes))
(push (cvalq #:r:q:fix))
(push '0)
(push '1)
(push '0)
(mov '7 a4)
(jmp bnadd)
105
(eval ())
(mov (& 0) a1)
(adjstk '2)
(return)
104
(cabne a1 '#:r:q:n 106)
(push (@ 107))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z+z)
107
(eval ())
(adjstk '2)
(return)
106
(cabne a1 '#:r:q:z 108)
(push (@ 109))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z-z)
109
(eval ())
(adjstk '2)
(return)
108
(push (@ 111))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp +)
111
(eval ())
(adjstk '2)
(return)
101
(mov '0 a4)
(diff a1 a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(mov (& 1) a1)
(jcall type-of)
(cabne a1 'fix 113)
(mov (cvalq #:r:q:longueur-sommes) a2)
(mov '#:r:q:z a1)
(jcall bncreate)
(mov a1 (& 0))
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(jcall bnsetdigit)
(push (@ 114))
(push (& 1))
(push '0)
(push (cvalq #:r:q:longueur-sommes))
(push (cvalq #:r:q:fix))
(push '0)
(push '1)
(push '0)
(mov '7 a4)
(jmp bnadd)
114
(eval ())
(mov (& 0) a1)
(adjstk '2)
(return)
113
(cabne a1 '#:r:q:n 115)
(push (@ 116))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z-z)
116
(eval ())
(adjstk '2)
(return)
115
(cabne a1 '#:r:q:z 117)
(push (@ 118))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z+z)
118
(eval ())
(adjstk '2)
(return)
117
(push (@ 120))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp +)
120
(eval ())
(adjstk '2)
(return)
))
(loader'((fentry #:fix:- subr2)
(entry #:fix:- subr2)
(push a2)
(push a1)
(cnblt a1 '0 101)
(mov a1 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(mov (& 1) a1)
(jcall type-of)
(cabne a1 'fix 104)
(mov (cvalq #:r:q:longueur-sommes) a2)
(mov '#:r:q:n a1)
(jcall bncreate)
(mov a1 (& 0))
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(jcall bnsetdigit)
(push (@ 105))
(push (& 1))
(push '0)
(push (cvalq #:r:q:longueur-sommes))
(push (cvalq #:r:q:fix))
(push '0)
(push '1)
(push '0)
(mov '7 a4)
(jmp bnadd)
105
(eval ())
(mov (& 0) a1)
(adjstk '2)
(return)
104
(cabne a1 '#:r:q:n 106)
(push (@ 107))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z-z)
107
(eval ())
(adjstk '2)
(return)
106
(cabne a1 '#:r:q:z 108)
(push (@ 109))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z+z)
109
(eval ())
(adjstk '2)
(return)
108
(push (@ 111))
(mov (& 2) a1)
(jcall 0-)
(push a1)
(push (& 2))
(mov '2 a4)
(jmp +)
111
(eval ())
(adjstk '2)
(return)
101
(mov '0 a4)
(diff a1 a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(mov (& 1) a1)
(jcall type-of)
(cabne a1 'fix 113)
(mov (cvalq #:r:q:longueur-sommes) a2)
(mov '#:r:q:z a1)
(jcall bncreate)
(mov a1 (& 0))
(mov (& 1) a3)
(mov '0 a2)
(jcall bnsetdigit)
(push (@ 114))
(push (& 1))
(push '0)
(push (cvalq #:r:q:longueur-sommes))
(push (cvalq #:r:q:fix))
(push '0)
(push '1)
(push '0)
(mov '7 a4)
(jmp bnadd)
114
(eval ())
(mov (& 0) a1)
(adjstk '2)
(return)
113
(cabne a1 '#:r:q:n 115)
(push (@ 116))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:z)
(mov '6 a4)
(bra z+z)
116
(eval ())
(adjstk '2)
(return)
115
(cabne a1 '#:r:q:z 117)
(push (@ 118))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '#:r:q:n)
(mov '6 a4)
(bra z-z)
118
(eval ())
(adjstk '2)
(return)
117
(push (@ 120))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp +)
120
(eval ())
(adjstk '2)
(return)
))
(loader'((entry z*z nsubr)
(mov (& 5) a4)
(plus (& 3) a4)
(mov a4 (& 1))
(mov a4 a2)
(mov (& 0) a1)
(jcall bncreate)
(mov a1 (& 2))
(cnble (& 3) (& 5) 102)
(push (& 4))
(push (& 4))
(mov (& 7) (& 5))
(pop a4)
(mov a4 (& 6))
(mov (& 7) (& 5))
(pop a4)
(mov a4 (& 6))
102
(push (@ 103))
(push a1)
(push '0)
(push (& 4))
(push (& 10))
(push '0)
(push (& 11))
(push (& 11))
(push '0)
(push (& 12))
(mov '9 a4)
(jmp bnmultiply)
103
(eval ())
(mov (& 2) a1)
(adjstk '7)
(return)
))
(loader'((fentry #:r:q:n:* subr2)
(entry #:r:q:n:* subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(cnble (& 1) '1 103)
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 105))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '0)
(push '#:r:q:n)
(mov '7 a4)
(bra z*z)
105
(eval ())
(adjstk '2)
(return)
103
(cnble '0 (& 1) 106)
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 108))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '0)
(push '#:r:q:z)
(mov '7 a4)
(bra z*z)
108
(eval ())
(adjstk '2)
(return)
106
(cabne '0 (& 1) 109)
(mov '0 a1)
(adjstk '2)
(return)
109
(mov (& 0) a1)
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 111)
(push (@ 112))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '0)
(push '#:r:q:n)
(mov '7 a4)
(bra z*z)
112
(eval ())
(adjstk '2)
(return)
111
(cabne a1 '#:r:q:z 113)
(push (@ 114))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '0)
(push '#:r:q:z)
(mov '7 a4)
(bra z*z)
114
(eval ())
(adjstk '2)
(return)
113
(push (@ 116))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp *)
116
(eval ())
(adjstk '2)
(return)
))
(loader'((fentry #:r:q:z:* subr2)
(entry #:r:q:z:* subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(cnble (& 1) '1 103)
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 105))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '0)
(push '#:r:q:z)
(mov '7 a4)
(bra z*z)
105
(eval ())
(adjstk '2)
(return)
103
(cnble '0 (& 1) 106)
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(push (@ 108))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '0)
(push '#:r:q:n)
(mov '7 a4)
(bra z*z)
108
(eval ())
(adjstk '2)
(return)
106
(cabne '0 (& 1) 109)
(mov '0 a1)
(adjstk '2)
(return)
109
(mov (& 0) a1)
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 111)
(push (@ 112))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '0)
(push '#:r:q:z)
(mov '7 a4)
(bra z*z)
112
(eval ())
(adjstk '2)
(return)
111
(cabne a1 '#:r:q:z 113)
(push (@ 114))
(push (& 1))
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(push (& 4))
(mov (& 5) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 5) a1)
(jcall bnnumdigits)
(push a1)
(push '0)
(push '0)
(push '#:r:q:n)
(mov '7 a4)
(bra z*z)
114
(eval ())
(adjstk '2)
(return)
113
(push (@ 116))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp *)
116
(eval ())
(adjstk '2)
(return)
))
(loader'((fentry bzmultiply subr2)
(entry bzmultiply subr2)
(push (@ 101))
(push a1)
(push a2)
(mov '2 a4)
(jmp *)
101
(eval ())
(return)
))
(loader'((fentry #:fix:* subr2)
(entry #:fix:* subr2)
(push a2)
(push a1)
(cnble a1 '1 101)
(mov a1 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(mov (& 1) a1)
(jcall type-of)
(cabne a1 'fix 104)
(cnblt (& 1) '0 105)
(mov '2 a2)
(mov '#:r:q:n a1)
(jcall bncreate)
(mov a1 (& 0))
(mov (& 1) a3)
(mov '1 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(bra 106)
105
(mov '2 a2)
(mov '#:r:q:z a1)
(jcall bncreate)
(mov a1 (& 0))
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '1 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
106
(push (@ 107))
(push (& 1))
(push '0)
(push '2)
(push (cvalq #:r:q:fix))
(push '0)
(push '1)
(push (cvalq #:r:q:fix))
(push '1)
(mov '8 a4)
(jmp bnmultiplydigit)
107
(eval ())
(mov (& 0) a1)
(adjstk '2)
(return)
104
(cabne a1 '#:r:q:n 108)
(push (@ 109))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '0)
(push '#:r:q:n)
(mov '7 a4)
(bra z*z)
109
(eval ())
(adjstk '2)
(return)
108
(cabne a1 '#:r:q:z 110)
(push (@ 111))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '0)
(push '#:r:q:z)
(mov '7 a4)
(bra z*z)
111
(eval ())
(adjstk '2)
(return)
110
(push (@ 113))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp *)
113
(eval ())
(adjstk '2)
(return)
101
(cnble '0 a1 114)
(mov '0 a4)
(diff a1 a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(mov (& 1) a1)
(jcall type-of)
(cabne a1 'fix 117)
(cnblt (& 1) '0 118)
(mov '2 a2)
(mov '#:r:q:z a1)
(jcall bncreate)
(mov a1 (& 0))
(mov (& 1) a3)
(mov '1 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
(bra 119)
118
(mov '2 a2)
(mov '#:r:q:n a1)
(jcall bncreate)
(mov a1 (& 0))
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '1 a2)
(mov (cvalq #:r:q:fix) a1)
(jcall bnsetdigit)
119
(push (@ 120))
(push (& 1))
(push '0)
(push '2)
(push (cvalq #:r:q:fix))
(push '0)
(push '1)
(push (cvalq #:r:q:fix))
(push '1)
(mov '8 a4)
(jmp bnmultiplydigit)
120
(eval ())
(mov (& 0) a1)
(adjstk '2)
(return)
117
(cabne a1 '#:r:q:n 121)
(push (@ 122))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '0)
(push '#:r:q:z)
(mov '7 a4)
(bra z*z)
122
(eval ())
(adjstk '2)
(return)
121
(cabne a1 '#:r:q:z 123)
(push (@ 124))
(push (& 2))
(mov (& 3) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnnumdigits)
(push a1)
(push (cvalq #:r:q:fix))
(push '1)
(push '0)
(push '0)
(push '#:r:q:n)
(mov '7 a4)
(bra z*z)
124
(eval ())
(adjstk '2)
(return)
123
(push (@ 126))
(push (& 2))
(push (& 2))
(mov '2 a4)
(jmp *)
126
(eval ())
(adjstk '2)
(return)
114
(cabne '0 a1 127)
(mov '0 a1)
(adjstk '2)
(return)
127
(mov a2 a1)
(adjstk '2)
(return)
))
(defvar ntampon (bncreate '#:r:q:n 4))
(loader'((fentry entretampon subr3)
(entry entretampon subr3)
(push a3)
(push a2)
(push a1)
(mov (cvalq ntampon) a1)
(jcall bngetsize)
(mov (& 1) a4)
(plus (& 2) a4)
(cnbge a1 a4 102)
(mov (& 1) a4)
(plus (& 2) a4)
(mov a4 a2)
(mov '#:r:q:n a1)
(jcall bncreate)
(mov a1 (cvalq ntampon))
102
(push (@ 103))
(push (cvalq ntampon))
(push '0)
(push (& 3))
(push '0)
(push (& 6))
(mov '5 a4)
(jmp bnassign)
103
(eval ())
(mov (cvalq ntampon) a1)
(jcall bngetsize)
(diff (& 1) a1)
(mov a1 (& 2))
(cnble a1 '0 104)
(mov a1 a3)
(mov (& 1) a2)
(mov (cvalq ntampon) a1)
(adjstk '3)
(jmp bnsettozero)
104
(mov nil a1)
(adjstk '3)
(return)
))
(loader'((fentry bnconvert subr3)
(entry bnconvert subr3)
(push a3)
(push a2)
(push a1)
(jcall bnnumdigits)
(mov a1 (& 2))
(cnbne a1 '1 101)
(mov (& 1) a2)
(mov (& 0) a1)
(jcall bndoesdigitfitinword)
(cabeq a1 '0 101)
(mov (& 0) a1)
(jcall type-of)
(mov '#:r:q:n a2)
(jcall equal)
(btnil a1 103)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '3)
(jmp bngetdigit)
103
(mov (& 1) a2)
(mov (& 0) a1)
(jcall bngetdigit)
(mov '0 a4)
(diff a1 a4)
(mov a4 a1)
(adjstk '3)
(return)
101
(mov (& 0) a1)
(jcall bngettype)
(mov (& 2) a2)
(jcall bncreate)
(push a1)
(push (@ 105))
(push a1)
(push '0)
(push (& 4))
(push (& 6))
(push (& 8))
(mov '5 a4)
(jmp bnassign)
105
(eval ())
(mov (& 0) a1)
(adjstk '4)
(return)
))
(defvar #:r:q:fdiv (bncreate '#:r:q:n 1))
(loader'((fentry #:r:q:n:nquomodn subr2)
(entry #:r:q:n:nquomodn subr2)
(push a2)
(push a1)
(push a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(pop a1)
(jcall bnnumdigits)
(push a1)
(mov (& 2) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 2) a1)
(jcall bnnumdigits)
(push a1)
(diff (& 1) a1)
(plus '1 a1)
(push a1)
(push (@ 102))
(push (& 4))
(push '0)
(push (& 5))
(push (& 8))
(push '0)
(push (& 7))
(mov '6 a4)
(jmp bncompare)
102
(eval ())
(cabne a1 '-1 103)
(mov (& 2) a3)
(mov '0 a2)
(mov (& 3) a1)
(jcall bnconvert)
(mov a1 (cvalq #:ex:mod))
(mov '0 a1)
(adjstk '5)
(return)
103
(cabne a1 '0 104)
(mov '0 (cvalq #:ex:mod))
(mov '1 a1)
(adjstk '5)
(return)
104
(cabne a1 '1 105)
(push (@ 108))
(push (& 4))
(mov (& 4) a4)
(diff '1 a4)
(push a4)
(push (& 7))
(mov (& 5) a4)
(diff '1 a4)
(push a4)
(mov '4 a4)
(jmp bncomparedigits)
108
(eval ())
(cnbne a1 '-1 106)
(push (@ 109))
(push '0)
(push (& 2))
(mov '2 a4)
(jmp max)
109
(eval ())
(mov a1 (& 0))
(mov a1 a3)
(mov (& 2) a2)
(mov (& 3) a1)
(jcall entretampon)
(push (@ 110))
(push (cvalq ntampon))
(push '0)
(push (& 5))
(push (& 8))
(push '0)
(push (& 7))
(mov '6 a4)
(jmp bndivide)
110
(eval ())
(bra 107)
106
(push (@ 111))
(push '1)
(push (& 2))
(mov '2 a4)
(jmp max)
111
(eval ())
(mov a1 (& 0))
(mov a1 a3)
(mov (& 2) a2)
(mov (& 3) a1)
(jcall entretampon)
(push (@ 112))
(push (cvalq ntampon))
(push '0)
(mov (& 5) a4)
(plus '1 a4)
(push a4)
(push (& 8))
(push '0)
(push (& 7))
(mov '6 a4)
(jmp bndivide)
112
(eval ())
107
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq ntampon) a1)
(jcall bnconvert)
(mov a1 (cvalq #:ex:mod))
(mov (& 2) a4)
(plus (& 0) a4)
(diff (& 1) a4)
(mov a4 a3)
(mov (& 1) a2)
(mov (cvalq ntampon) a1)
(adjstk '5)
(jmp bnconvert)
105
(mov nil a1)
(adjstk '5)
(return)
))
(loader'((fentry #:r:q:n:quomod subr2)
(entry #:r:q:n:quomod subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov '0 a2)
(mov (& 1) a1)
(jcall <?>)
(cabne a1 '1 104)
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq #:r:q:fdiv) a1)
(jcall bnsetdigit)
(mov (cvalq #:r:q:fdiv) a2)
(mov (& 0) a1)
(adjstk '2)
(jmp #:r:q:n:nquomodn)
104
(cabne a1 '0 105)
(push (@ 106))
(push 'quomod)
(push (& 2))
(push (& 4))
(mov '3 a4)
(jmp list)
106
(eval ())
(mov a1 a3)
(mov 'rdiv0 a2)
(mov 'quomod a1)
(adjstk '2)
(jmp #:r:error)
105
(cabne a1 '-1 107)
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fdiv) a1)
(jcall bnsetdigit)
(mov (cvalq #:r:q:fdiv) a2)
(mov (& 0) a1)
(jcall #:r:q:n:nquomodn)
(adjstk '2)
(bra 0-n)
107
(mov nil a1)
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 108)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(jmp #:r:q:n:nquomodn)
108
(cabne a1 '#:r:q:z 109)
(mov (& 1) a2)
(mov (& 0) a1)
(jcall #:r:q:n:nquomodn)
(adjstk '2)
(bra 0-n)
109
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(jmp #:r:quomod)
))
(loader'((fentry #:r:q:z:quomod subr2)
(entry #:r:q:z:quomod subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov '0 a2)
(mov (& 1) a1)
(jcall <?>)
(cabne a1 '1 104)
(mov (& 1) a3)
(mov '0 a2)
(mov (cvalq #:r:q:fdiv) a1)
(jcall bnsetdigit)
(mov (cvalq #:r:q:fdiv) a2)
(mov (& 0) a1)
(adjstk '2)
(bra -cquoc)
104
(cabne a1 '0 105)
(push (@ 106))
(push 'quomod)
(push (& 2))
(push (& 4))
(mov '3 a4)
(jmp list)
106
(eval ())
(mov a1 a3)
(mov 'rdiv0 a2)
(mov 'quomod a1)
(adjstk '2)
(jmp #:r:error)
105
(cabne a1 '-1 107)
(mov '0 a4)
(diff (& 1) a4)
(mov a4 a3)
(mov '0 a2)
(mov (cvalq #:r:q:fdiv) a1)
(jcall bnsetdigit)
(mov (cvalq #:r:q:fdiv) a2)
(mov (& 0) a1)
(adjstk '2)
(bra -cquo-c)
107
(mov nil a1)
(adjstk '2)
(return)
102
(cabne a1 '#:r:q:n 108)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra -cquoc)
108
(cabne a1 '#:r:q:z 109)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra -cquo-c)
109
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(jmp #:r:quomod)
))
(loader'((entry -cquoc subr2)
(push a2)
(push a1)
(jcall 0-)
(mov (& 1) a2)
(jcall #:r:q:n:nquomodn)
(mov a1 (& 0))
(push (@ 103))
(push '0)
(push (cvalq #:ex:mod))
(mov '2 a4)
(jmp =)
103
(eval ())
(btnil a1 101)
(mov (& 0) a1)
(adjstk '2)
(bra 0-n)
101
(push (@ 104))
(push (& 2))
(push (cvalq #:ex:mod))
(mov '2 a4)
(jmp -)
104
(eval ())
(mov a1 (cvalq #:ex:mod))
(push (@ 105))
(push (& 1))
(push '1)
(mov '2 a4)
(jmp +)
105
(eval ())
(adjstk '2)
(bra 0-n)
))
(loader'((entry -cquo-c subr2)
(push a2)
(push a1)
(jcall 0-)
(mov (& 1) a2)
(jcall #:r:q:n:nquomodn)
(mov a1 (& 0))
(push (@ 103))
(push '0)
(push (cvalq #:ex:mod))
(mov '2 a4)
(jmp =)
103
(eval ())
(btnil a1 101)
(mov (& 0) a1)
(adjstk '2)
(return)
101
(push (@ 104))
(mov (& 2) a1)
(jcall abs)
(push a1)
(push (cvalq #:ex:mod))
(mov '2 a4)
(jmp -)
104
(eval ())
(mov a1 (cvalq #:ex:mod))
(push (@ 105))
(push (& 1))
(push '1)
(mov '2 a4)
(jmp +)
105
(eval ())
(adjstk '2)
(return)
))
(loader'((fentry bzdiv subr2)
(entry bzdiv subr2)
(jmp quotient)
))
(loader'((fentry bzdivide subr2)
(entry bzdivide subr2)
(jmp quotient)
))
(loader'((fentry bzmod subr2)
(entry bzmod subr2)
(jcall quotient)
(mov (cvalq #:ex:mod) a1)
(return)
))
(defvar #:r:q:okmax 1)
(defvar #:r:q:okmaxp 1)
(defvar #:r:q:obase**k (bncreate '#:r:q:n (+ bn←digit←size 1)))
(loader'((entry makeobase**k subr1)
(push a1)
(push '0)
(push '0)
(push (@ 101))
(push (cvalq bn←digit←size))
(push '1)
(mov '2 a4)
(jmp +)
101
(eval ())
(mov a1 a3)
(mov '0 a2)
(mov (cvalq #:r:q:obase**k) a1)
(jcall bnsettozero)
(mov (& 2) a3)
(mov '0 a2)
(mov (cvalq #:r:q:obase**k) a1)
(jcall bnsetdigit)
102
(mov (& 1) a1)
(jcall 1+)
(mov a1 (& 1))
(mov a1 a2)
(mov (cvalq #:r:q:obase**k) a1)
(jcall bnisdigitzero)
(cabeq a1 '0 105)
(push (@ 104))
(push (cvalq #:r:q:obase**k))
(push (& 3))
(push '2)
(push (cvalq #:r:q:obase**k))
(mov (& 6) a4)
(diff '1 a4)
(push a4)
(push '1)
(push (cvalq #:r:q:obase**k))
(push '0)
(mov '8 a4)
(jmp bnmultiplydigit)
104
(eval ())
(bra 102)
105
(cnbgt (& 0) (& 1) 106)
(mov (& 0) a2)
(mov (cvalq #:r:q:obase**k) a1)
(jcall bndoesdigitfitinword)
(cabeq a1 '0 106)
(mov (& 0) a4)
(plus '1 a4)
(mov a4 (& 0))
(bra 105)
106
(mov (& 0) a4)
(diff '1 a4)
(mov a4 (cvalq #:r:q:okmaxp))
(mov (& 1) a3)
(diff '2 a3)
(mov a3 (cvalq #:r:q:okmax))
(mov a3 a1)
(adjstk '3)
(return)
))
(defvar #:r:q:printampon (bncreate 'n 4))
(defvar #:r:q:strgsize 4005)
(defvar #:r:q:strgtampon (makestring #:r:q:strgsize 48))
(loader'((fentry nprin subr1)
(entry nprin subr1)
(push a1)
(push a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(pop a1)
(jcall bnnumdigits)
(push a1)
(push (@ 101))
(mov '0 a4)
(jmp newobase)
101
(eval ())
(push a1)
(push nil)
(push '0)
(push (cvalq #:r:q:strgtampon))
(push '0)
(push nil)
(push nil)
(push nil)
(push nil)
(mov (cvalq #:r:q:okmax) a4)
(plus '1 a4)
(push a4)
(mov (cvalq #:r:q:okmaxp) a3)
(plus '1 a3)
(push a3)
(mov (cvalq #:r:q:strgsize) a2)
(quo a4 a2)
(times a4 a2)
(push a2)
(mov (& 12) a4)
(plus '1 a4)
(mov a4 (& 6))
(plus '3 a4)
(push a4)
(mov (cvalq #:r:q:printampon) a1)
(jcall bngetsize)
(pop a4)
(cnble a4 a1 103)
(mov (& 6) a4)
(plus '3 a4)
(mov a4 a2)
(mov 'n a1)
(jcall bncreate)
(mov a1 (cvalq #:r:q:printampon))
103
(push (@ 104))
(push (cvalq #:r:q:printampon))
(push '0)
(push (& 16))
(push '0)
(push (& 17))
(mov '5 a4)
(jmp bnassign)
104
(eval ())
(mov '3 a3)
(mov (& 12) a2)
(mov (cvalq #:r:q:printampon) a1)
(jcall bnsettozero)
(mov (& 6) (& 5))
(mov '2 a4)
(plus (& 6) a4)
(mov a4 (& 4))
105
(cnble (& 6) '1 116)
(push (@ 107))
(push (cvalq #:r:q:printampon))
(push '0)
(push (cvalq #:r:q:printampon))
(push (& 9))
(push (cvalq #:r:q:printampon))
(push '0)
(push (& 13))
(push (cvalq #:r:q:obase**k))
(push (cvalq #:r:q:okmax))
(mov '9 a4)
(jmp bndividedigit)
107
(eval ())
(mov (& 7) (& 3))
108
(mov (& 5) a2)
(mov (cvalq #:r:q:printampon) a1)
(jcall bnisdigitzero)
(cabne a1 '0 109)
(push (@ 110))
(push (cvalq #:r:q:printampon))
(push (& 7))
(push (cvalq #:r:q:printampon))
(push (& 8))
(push (cvalq #:r:q:printampon))
(push (& 11))
(push '2)
(push (cvalq #:r:q:obase**k))
(push (cvalq #:r:q:okmaxp))
(mov '9 a4)
(jmp bndividedigit)
110
(eval ())
(push (@ 111))
(mov (& 5) a2)
(mov (cvalq #:r:q:printampon) a1)
(jcall bngetdigit)
(push a1)
(push (& 10))
(push (& 6))
(push (& 15))
(mov '4 a4)
(bra c2string)
111
(eval ())
(mov (& 3) a4)
(plus (& 1) a4)
(mov a4 (& 3))
(bra 108)
109
(mov (& 7) a4)
(plus (& 2) a4)
(mov a4 (& 7))
(cnblt a4 (& 0) 113)
(mov (& 10) a2)
(mov (& 8) a1)
(jcall cons)
(mov a1 (& 10))
(mov '48 a2)
(mov (& 0) a1)
(jcall makestring)
(mov a1 (& 8))
(mov '0 (& 7))
113
(mov (& 6) a4)
(diff '2 a4)
(mov a4 a2)
(mov (cvalq #:r:q:printampon) a1)
(jcall bnisdigitzero)
(cabeq a1 '0 105)
(mov (& 6) a4)
(diff '1 a4)
(mov a4 (& 6))
(bra 105)
116
(cnble (& 7) '0 117)
(mov (& 7) a4)
(diff '1 a4)
(mov a4 (& 7))
(hbxmov (& 8) a4 a4)
(cabne a4 '48 117)
(bra 116)
117
(cabne (& 7) '0 122)
(hbxmov (& 8) (& 7) a4)
(cabne a4 '48 122)
(btnil (& 10) 122)
(mov (& 10) a4)
(mov (cdr a4) (& 10))
(mov (car a4) (& 8))
(mov (& 0) (& 7))
120
(cnble (& 7) '0 122)
(mov (& 7) a4)
(diff '1 a4)
(mov a4 (& 7))
(hbxmov (& 8) a4 a4)
(cabne a4 '48 122)
(bra 120)
122
(btnil (& 8) 123)
(mov (& 7) (& 9))
124
(cnblt (& 7) '0 125)
(push (@ 126))
(hbxmov (& 9) (& 8) a4)
(push a4)
(mov '1 a4)
(jmp princn)
126
(eval ())
(mov (& 7) a4)
(diff '1 a4)
(mov a4 (& 7))
(bra 124)
125
(mov (& 10) a4)
(mov (cdr a4) (& 10))
(mov (car a4) (& 8))
(mov (& 0) a4)
(diff '1 a4)
(mov a4 (& 7))
(bra 122)
123
(push (@ 127))
(push (cvalq #:r:q:strgtampon))
(push '0)
(push '48)
(mov (& 13) a4)
(plus '1 a4)
(push a4)
(mov '4 a4)
(jmp fillstring)
127
(eval ())
(mov nil a1)
(adjstk '14)
(return)
))
(defvar #:r:q:fixtocn "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
(loader'((entry c2string nsubr)
101
(cabeq (& 3) '0 102)
(mov (& 3) a4)
(rem (& 0) a4)
(hbxmov (cvalq #:r:q:fixtocn) a4 a4)
(hbmovx a4 (& 2) (& 1))
(mov (& 1) a4)
(plus '1 a4)
(mov a4 (& 1))
(mov (& 3) a4)
(quo (& 0) a4)
(mov a4 (& 3))
(bra 101)
102
(mov (& 1) a1)
(adjstk '4)
(return)
))
(loader'((fentry #:r:q:n:prin subr1)
(entry #:r:q:n:prin subr1)
(push a1)
(btnil (cvalq #:system:print-for-read) 102)
(push nil)
(push (cvalq #:system:print-for-read))
(mov (& 1) (cvalq #:system:print-for-read))
(push '1)
(push '(#:system:print-for-read))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(push (@ 103))
(push '"#{")
(mov '1 a4)
(jmp prin)
103
(eval ())
(mov (& 1) dlink)
(mov (& 6) (cvalq #:system:print-for-read))
(adjstk '8)
102
(mov (& 0) a1)
(jcall nprin)
(btnil (cvalq #:system:print-for-read) 104)
(push (@ 106))
(push '125)
(mov '1 a4)
(jmp princn)
106
(eval ())
(adjstk '1)
(return)
104
(mov nil a1)
(adjstk '1)
(return)
))
(loader'((fentry #:r:q:z:prin subr1)
(entry #:r:q:z:prin subr1)
(push a1)
(btnil (cvalq #:system:print-for-read) 102)
(push nil)
(push (cvalq #:system:print-for-read))
(mov (& 1) (cvalq #:system:print-for-read))
(push '1)
(push '(#:system:print-for-read))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(push (@ 103))
(push '"#{")
(mov '1 a4)
(jmp prin)
103
(eval ())
(mov (& 1) dlink)
(mov (& 6) (cvalq #:system:print-for-read))
(adjstk '8)
102
(mov (& 0) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 0) a1)
(jcall bnnumdigits)
(cabne '1 a1 106)
(mov '0 a2)
(mov (& 0) a1)
(jcall bnisdigitzero)
(cabne a1 '0 105)
106
(push (@ 107))
(push '45)
(mov '1 a4)
(jmp princn)
107
(eval ())
105
(mov (& 0) a1)
(jcall nprin)
(btnil (cvalq #:system:print-for-read) 108)
(push (@ 110))
(push '125)
(mov '1 a4)
(jmp princn)
110
(eval ())
(adjstk '1)
(return)
108
(mov nil a1)
(adjstk '1)
(return)
))
(defvar #:r:q:ikmax 1)
(defvar #:r:q:ikmaxp 1)
(defvar #:r:q:ibase**k (bncreate '#:r:q:n (+ bn←digit←size 1)))
(defvar #:r:q:rtt (makestring 256 255))
(loader'((entry makeibase**k subr1)
(push a1)
(push '0)
(push '0)
(push '255)
101
(cnbgt (& 0) '0 102)
(hbmovx '255 (cvalq #:r:q:rtt) (& 0))
(mov (& 0) a4)
(diff '1 a4)
(mov a4 (& 0))
(bra 101)
102
(mov '0 (& 0))
103
(cnbge (& 0) '10 105)
(cnbge (& 0) (& 3) 105)
(mov '48 a4)
(plus (& 0) a4)
(hbmovx (& 0) (cvalq #:r:q:rtt) a4)
(mov (& 0) a4)
(plus '1 a4)
(mov a4 (& 0))
(bra 103)
105
(cnbge (& 0) (& 3) 106)
(mov (& 0) a4)
(diff '10 a4)
(mov '97 a3)
(plus a4 a3)
(hbmovx (& 0) (cvalq #:r:q:rtt) a3)
(mov (& 0) a4)
(diff '10 a4)
(mov '65 a3)
(plus a4 a3)
(hbmovx (& 0) (cvalq #:r:q:rtt) a3)
(mov (& 0) a4)
(plus '1 a4)
(mov a4 (& 0))
(bra 105)
106
(push (@ 107))
(push (cvalq bn←digit←size))
(push '1)
(mov '2 a4)
(jmp +)
107
(eval ())
(mov a1 a3)
(mov '0 a2)
(mov (cvalq #:r:q:ibase**k) a1)
(jcall bnsettozero)
(mov (& 3) a3)
(mov '0 a2)
(mov (cvalq #:r:q:ibase**k) a1)
(jcall bnsetdigit)
108
(mov (& 2) a1)
(jcall 1+)
(mov a1 (& 2))
(mov a1 a2)
(mov (cvalq #:r:q:ibase**k) a1)
(jcall bnisdigitzero)
(cabeq a1 '0 111)
(push (@ 110))
(push (cvalq #:r:q:ibase**k))
(push (& 4))
(push '2)
(push (cvalq #:r:q:ibase**k))
(mov (& 7) a4)
(diff '1 a4)
(push a4)
(push '1)
(push (cvalq #:r:q:ibase**k))
(push '0)
(mov '8 a4)
(jmp bnmultiplydigit)
110
(eval ())
(bra 108)
111
(cnbgt (& 1) (& 2) 112)
(mov (& 1) a2)
(mov (cvalq #:r:q:ibase**k) a1)
(jcall bndoesdigitfitinword)
(cabeq a1 '0 112)
(mov (& 1) a4)
(plus '1 a4)
(mov a4 (& 1))
(bra 111)
112
(mov (& 1) a4)
(diff '1 a4)
(mov a4 (cvalq #:r:q:ikmaxp))
(mov (& 2) a3)
(diff '2 a3)
(mov a3 (cvalq #:r:q:ikmax))
(mov a3 a1)
(adjstk '4)
(return)
))
(loader'((fentry #:sharp:|{| subr0)
(entry #:sharp:|{| subr0)
(push (@ 101))
(mov '0 a4)
(jmp newibase)
101
(eval ())
(mov (cvalq #:r:q:ikmax) a4)
(plus '1 a4)
(mov (cvalq #:r:q:ikmaxp) a3)
(plus '1 a3)
(push '0)
(push nil)
(push nil)
(push nil)
(push nil)
(push '1)
(push nil)
(push (cvalq #:r:q:strgtampon))
(push nil)
(push '0)
(push nil)
(push nil)
(push a4)
(push a1)
(mov (cvalq #:r:q:strgsize) a2)
(rem a4 a2)
(mov (cvalq #:r:q:strgsize) a4)
(diff a2 a4)
(mov a4 (& 3))
102
(push (@ 104))
(jcall peekcn)
(push a1)
(mov '1 a4)
(jmp typecn)
104
(eval ())
(cabne a1 'ecom 103)
(jcall readcn)
(bra 102)
103
(jcall peekcn)
(cabne a1 '45 107)
(mov 't (& 2))
(jcall readcn)
107
(jcall readcn)
(mov a1 (& 12))
(cabeq a1 '125 108)
(hbxmov (cvalq #:r:q:rtt) a1 a4)
(cabeq a4 '255 107)
(hbmovx a1 (& 6) (& 4))
(mov (& 13) a4)
(plus '1 a4)
(mov a4 (& 13))
(mov (& 4) a4)
(plus '1 a4)
(mov a4 (& 4))
(cabne a4 (& 3) 107)
(mov (& 5) a2)
(mov (& 6) a1)
(jcall cons)
(mov a1 (& 5))
(mov '48 a2)
(mov (& 3) a1)
(jcall makestring)
(mov a1 (& 6))
(mov '0 (& 4))
(bra 107)
108
(mov (& 13) a4)
(quo (& 1) a4)
(mov '2 a3)
(plus a4 a3)
(mov a3 a2)
(mov 'n a1)
(jcall bncreate)
(mov a1 (& 11))
(mov (& 13) a4)
(quo (& 1) a4)
(mov '2 a3)
(plus a4 a3)
(mov a3 a2)
(mov 'n a1)
(jcall bncreate)
(mov a1 (& 10))
(push (@ 113))
(push (& 7))
(push (& 7))
(push (& 7))
(push (& 7))
(mov '4 a4)
(bra #:r:q:reversebuf)
113
(eval ())
(mov a1 (& 6))
(mov (& 3) a4)
(diff (& 4) a4)
(mov a4 (& 4))
(push (@ 114))
(push a1)
(push a4)
(mov (& 16) a3)
(rem (& 4) a3)
(mov a3 (& 12))
(push a3)
(push (& 15))
(push (& 5))
(mov '5 a4)
(bra #:r:q:stringtodigit)
114
(eval ())
(mov '0 a3)
(mov '1 a2)
(mov (& 11) a1)
(jcall bnsetdigit)
(mov (& 4) a4)
(plus (& 9) a4)
(mov a4 (& 4))
115
(cnbge (& 9) (& 13) 116)
(cnblt (& 4) (& 3) 118)
(btnil (& 5) 120)
(mov (& 5) a4)
(mov (cdr a4) (& 5))
(mov (car a4) (& 6))
120
(mov '0 (& 4))
118
(push (@ 121))
(push (& 7))
(push (& 6))
(push (& 4))
(push (& 14))
(push (& 5))
(mov '5 a4)
(bra #:r:q:stringtodigit)
121
(eval ())
(mov (& 8) a3)
(mov '1 a2)
(mov (& 10) a1)
(jcall bnsettozero)
(push (@ 122))
(push (& 11))
(push '0)
(mov (& 11) a4)
(plus '1 a4)
(push a4)
(push (& 15))
(push '0)
(push (& 14))
(push (cvalq #:r:q:ibase**k))
(push (cvalq #:r:q:ikmax))
(mov '8 a4)
(jmp bnmultiplydigit)
122
(eval ())
(mov (& 8) a2)
(mov (& 10) a1)
(jcall bnisdigitzero)
(cabne a1 '0 124)
(mov (& 8) a4)
(plus '1 a4)
(mov a4 (& 8))
124
(push (& 11))
(mov (& 11) (& 12))
(pop a4)
(mov a4 (& 10))
(mov (& 9) a3)
(plus (& 1) a3)
(mov a3 (& 9))
(mov (& 4) a3)
(plus (& 1) a3)
(mov a3 (& 4))
(bra 115)
116
(push (@ 125))
(push (cvalq #:r:q:strgtampon))
(push '0)
(push '48)
(push (& 7))
(mov '4 a4)
(jmp fillstring)
125
(eval ())
(btnil (& 2) 126)
(mov '#:r:q:z a2)
(bra 127)
126
(mov '#:r:q:n a2)
127
(mov (& 11) a1)
(jcall bnsettype)
(mov (& 11) a1)
(adjstk '14)
(jmp ncons)
))
(loader'((entry #:r:q:reversebuf nsubr)
(mov (& 0) a4)
(diff (& 1) a4)
(push nil)
(push (& 3))
(push a4)
(push (@ 101))
(push (& 7))
(push a4)
(push (& 9))
(push '0)
(push (& 9))
(mov '5 a4)
(jmp bltstring)
101
(eval ())
102
(btnil (& 5) 103)
(push (@ 104))
(push (& 7))
(push '0)
(mov (& 8) a4)
(push (car a4))
(push (& 8))
(push (& 5))
(mov '5 a4)
(jmp bltstring)
104
(eval ())
(mov (& 2) a2)
(mov (& 6) a1)
(jcall cons)
(mov a1 (& 2))
(mov (& 5) a4)
(mov (cdr a4) (& 5))
(mov (car a4) (& 6))
(push (@ 105))
(push (& 7))
(push (& 2))
(push (& 9))
(push '0)
(push (& 9))
(mov '5 a4)
(jmp bltstring)
105
(eval ())
(bra 102)
103
(btnil (& 1) 107)
(mov (& 2) a2)
(mov (& 1) a1)
(jcall displace)
107
(mov (& 6) a1)
(adjstk '7)
(return)
))
(loader'((entry #:r:q:stringtodigit nsubr)
(mov (cvalq #:r:q:ikmaxp) a4)
(plus '1 a4)
(push '0)
(push nil)
(push a4)
(mov (& 5) a3)
(rem a4 a3)
(mov a3 (& 1))
(bra 102)
101
(push a3)
(mov (& 3) a4)
(times (& 4) a4)
(hbxmov (& 8) (& 7) a3)
(hbxmov (cvalq #:r:q:rtt) a3 a3)
(plus a3 a4)
(mov a4 (& 3))
(mov (& 7) a4)
(plus '1 a4)
(mov a4 (& 7))
(pop a3)
102
(sobgez a3 101)
(mov (& 2) a3)
(mov '0 a2)
(mov (& 4) a1)
(jcall bnsetdigit)
103
(cnbge (& 1) (& 5) 104)
(mov '0 (& 2))
(mov (& 0) a4)
(bra 106)
105
(push a4)
(mov (& 3) a4)
(times (& 4) a4)
(hbxmov (& 8) (& 7) a3)
(hbxmov (cvalq #:r:q:rtt) a3 a3)
(plus a3 a4)
(mov a4 (& 3))
(mov (& 7) a4)
(plus '1 a4)
(mov a4 (& 7))
(pop a4)
106
(sobgez a4 105)
(mov (& 1) a4)
(plus (& 0) a4)
(mov a4 (& 1))
(push (@ 107))
(push (& 5))
(push '1)
(push (& 7))
(push '0)
(push '1)
(mov '5 a4)
(jmp bnassign)
107
(eval ())
(mov (& 2) a3)
(mov '0 a2)
(mov (& 4) a1)
(jcall bnsetdigit)
(push (@ 108))
(push (& 5))
(push '0)
(push '2)
(push (& 8))
(push '1)
(push '1)
(push (cvalq #:r:q:ibase**k))
(push (cvalq #:r:q:ikmaxp))
(mov '8 a4)
(jmp bnmultiplydigit)
108
(eval ())
(bra 103)
104
(mov (& 4) a1)
(adjstk '8)
(return)
))
(setq #:sys-package:colon 'fix)
(loader'((fentry #:fix:quomod subr2)
(entry #:fix:quomod subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall integerp)
(bfnil a1 101)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(jmp #:r:quomod)
101
(mov (& 1) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 1) a1)
(jcall bnnumdigits)
(cabne '1 a1 103)
(mov '0 a2)
(mov (& 1) a1)
(jcall bndoesdigitfitinword)
(cabeq a1 '0 103)
(mov '0 a2)
(mov (& 1) a1)
(jcall bngetdigit)
(mov a1 a2)
(mov (& 0) a1)
(adjstk '2)
(jmp quomod)
103
(mov '0 a2)
(mov (& 0) a1)
(jcall <?>)
(cabne a1 '1 106)
(mov (& 1) a1)
(jcall type-of)
(cabne a1 '#:r:q:n 108)
(mov (& 0) (cvalq #:ex:mod))
(mov '0 a1)
(adjstk '2)
(return)
108
(cabne a1 '#:r:q:z 109)
(mov (& 0) (cvalq #:ex:mod))
(mov '0 a1)
(adjstk '2)
(return)
109
(cabne a1 'fix 110)
(cabne (& 1) '0 111)
(push (@ 113))
(push 'quomod)
(push (& 2))
(push (& 4))
(mov '3 a4)
(jmp list)
113
(eval ())
(mov a1 a3)
(mov 'rdiv0 a2)
(mov 'quomod a1)
(adjstk '2)
(jmp #:r:error)
111
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(jmp quomod)
110
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(jmp #:r:quomod)
106
(cabne a1 '0 115)
(cabne (& 1) '0 116)
(push (@ 118))
(push 'quomod)
(push (& 2))
(push (& 4))
(mov '3 a4)
(jmp list)
118
(eval ())
(mov a1 a3)
(mov 'rdiv0 a2)
(mov 'quomod a1)
(adjstk '2)
(jmp #:r:error)
116
(mov '0 (cvalq #:ex:mod))
(mov '0 a1)
(adjstk '2)
(return)
115
(cabne a1 '-1 119)
(mov '0 a4)
(diff (& 0) a4)
(mov (& 1) a2)
(mov a4 a1)
(jcall #:fix:quomod)
(push a1)
(cabne (cvalq #:ex:mod) '0 120)
(push (@ 122))
(push a1)
(mov '1 a4)
(jmp -)
122
(eval ())
(adjstk '3)
(return)
120
(push (@ 125))
(push (& 3))
(push '0)
(mov '2 a4)
(jmp >)
125
(eval ())
(btnil a1 123)
(push (@ 126))
(push (& 3))
(push (cvalq #:ex:mod))
(mov '2 a4)
(jmp -)
126
(eval ())
(mov a1 (cvalq #:ex:mod))
(push (@ 127))
(push '-1)
(push (& 2))
(mov '2 a4)
(jmp -)
127
(eval ())
(adjstk '3)
(return)
123
(push (@ 128))
(push (cvalq #:ex:mod))
(push (& 4))
(mov '2 a4)
(jmp -)
128
(eval ())
(mov a1 (cvalq #:ex:mod))
(push (@ 129))
(push '1)
(push (& 2))
(mov '2 a4)
(jmp -)
129
(eval ())
(adjstk '3)
(return)
119
(mov nil a1)
(adjstk '2)
(return)
))
(loader'((fentry gcd nsubr)
(entry gcd nsubr)
(jcall #:llcp:nlist)
(push a1)
(push '0)
(push nil)
(push (cvalq pgcd))
(mov (& 2) (cvalq pgcd))
(push '1)
(push '(pgcd))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
101
(btnil (& 9) 102)
(mov (& 9) a4)
(mov (cdr a4) (& 9))
(mov (car a4) (& 7))
(mov (& 7) a1)
(jcall integerp)
(bfnil a1 103)
(push (@ 105))
(push 'gcd)
(push (& 9))
(push (& 12))
(mov '3 a4)
(jmp list)
105
(eval ())
(mov a1 a3)
(mov 'rnotz a2)
(mov 'gcd a1)
(jcall #:r:error)
(bra 101)
103
(mov (& 7) a2)
(mov (cvalq pgcd) a1)
(jcall pgcd)
(mov a1 (cvalq pgcd))
(bra 101)
102
(mov (cvalq pgcd) a1)
(mov (& 1) dlink)
(mov (& 6) (cvalq pgcd))
(adjstk '10)
(return)
))
(setq #:sys-package:colon 'r)
(setq #:sys-package:colon '#:r:q)
(loader'((fentry pgcd subr2)
(entry pgcd subr2)
(push a2)
(push a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra #:fix:pgcd)
102
(cabeq a1 'quote 104)
(cabne a1 '#:r:q:n 103)
104
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra #:r:q:z:pgcd)
103
(cabeq a1 'quote 106)
(cabne a1 '#:r:q:z 105)
106
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra #:r:q:z:pgcd)
105
(mov (& 0) a3)
(mov 'errnna a2)
(mov 'pgcd a1)
(adjstk '2)
(jmp error)
))
(loader'((entry #:r:q:z:pgcd subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov (& 1) a1)
(jcall abs)
(mov (& 0) a2)
(adjstk '2)
(bra fixpgcd)
102
(cabeq a1 'quote 104)
(cabne a1 '#:r:q:n 103)
104
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra #:r:q:n:pgcd)
103
(cabeq a1 'quote 106)
(cabne a1 '#:r:q:z 105)
106
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra #:r:q:n:pgcd)
105
(mov (& 1) a3)
(mov 'errnna a2)
(mov 'pgcd a1)
(adjstk '2)
(jmp error)
))
(loader'((entry #:fix:pgcd subr2)
(push a2)
(push a1)
(mov a2 a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov (& 0) a1)
(jcall abs)
(push a1)
(mov (& 2) a1)
(jcall abs)
(mov a1 a2)
(pop a1)
(adjstk '2)
(bra fixpgcdfix)
102
(cabeq a1 'quote 104)
(cabne a1 '#:r:q:n 103)
104
(mov (& 0) a1)
(jcall abs)
(mov (& 1) a2)
(adjstk '2)
(bra fixpgcd)
103
(cabeq a1 'quote 106)
(cabne a1 '#:r:q:z 105)
106
(mov (& 0) a1)
(jcall abs)
(mov (& 1) a2)
(adjstk '2)
(bra fixpgcd)
105
(mov (& 0) a3)
(mov 'errnna a2)
(mov 'pgcd a1)
(adjstk '2)
(jmp error)
))
(loader'((entry fixpgcdfix subr2)
(cnbne a2 '0 101)
(return)
101
(push a2)
(rem a2 a1)
(mov a1 a2)
(pop a1)
(bra fixpgcdfix)
))
(loader'((entry fixpgcd subr2)
(push a1)
(cnbne a1 '0 101)
(mov a2 a1)
(adjstk '1)
(return)
101
(push a2)
(mov a1 a2)
(pop a1)
(jcall modulo)
(mov (& 0) a2)
(adjstk '1)
(bra fixpgcdfix)
))
(loader'((entry #:r:q:n:pgcd subr2)
(push a2)
(push a1)
(push '0)
(push '0)
(push '0)
(push a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(pop a1)
(jcall bnnumdigits)
(mov a1 (& 1))
(mov (& 4) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 4) a1)
(jcall bnnumdigits)
(mov a1 (& 0))
(mov (& 1) a4)
(plus a1 a4)
(mov '2 a3)
(plus a4 a3)
(mov a3 (& 2))
(mov (cvalq ntampon) a1)
(jcall bngetsize)
(cnbge a1 (& 2) 102)
(mov (& 2) a2)
(mov '#:r:q:n a1)
(jcall bncreate)
(mov a1 (cvalq ntampon))
102
(push (@ 105))
(push (& 4))
(push '0)
(push (& 4))
(push (& 8))
(push '0)
(push (& 6))
(mov '6 a4)
(jmp bncompare)
105
(eval ())
(cnbne a1 '-1 103)
(push (@ 106))
(push (& 5))
(push '0)
(push (& 3))
(push (& 7))
(push '0)
(push (& 7))
(mov '6 a4)
(bra bngcd)
106
(eval ())
(mov a1 (& 2))
(bra 104)
103
(push (@ 107))
(push (& 4))
(push '0)
(push (& 4))
(push (& 8))
(push '0)
(push (& 6))
(mov '6 a4)
(bra bngcd)
107
(eval ())
(mov a1 (& 2))
104
(mov (cdr a1) a3)
(mov (car a1) a2)
(mov (cvalq ntampon) a1)
(adjstk '5)
(jmp bnconvert)
))
(loader'((entry #:r:q:n:pgcd subr2)
(push a2)
(push a1)
(push '0)
(push '0)
(push '0)
(push a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(pop a1)
(jcall bnnumdigits)
(mov a1 (& 1))
(mov (& 4) a1)
(jcall bngetsize)
(mov a1 a3)
(mov '0 a2)
(mov (& 4) a1)
(jcall bnnumdigits)
(mov a1 (& 0))
(mov (& 1) a4)
(plus a1 a4)
(mov '2 a3)
(plus a4 a3)
(mov a3 (& 2))
(mov (cvalq ntampon) a1)
(jcall bngetsize)
(cnbge a1 (& 2) 102)
(mov (& 2) a2)
(mov '#:r:q:n a1)
(jcall bncreate)
(mov a1 (cvalq ntampon))
102
(push (@ 105))
(push (& 4))
(push '0)
(push (& 4))
(push (& 8))
(push '0)
(push (& 6))
(mov '6 a4)
(jmp bncompare)
105
(eval ())
(cnbne a1 '-1 103)
(push (@ 106))
(push (& 5))
(push '0)
(push (& 3))
(push (& 7))
(push '0)
(push (& 7))
(mov '6 a4)
(bra bngcd)
106
(eval ())
(mov a1 (& 2))
(bra 104)
103
(push (@ 107))
(push (& 4))
(push '0)
(push (& 4))
(push (& 8))
(push '0)
(push (& 6))
(mov '6 a4)
(bra bngcd)
107
(eval ())
(mov a1 (& 2))
104
(mov (cdr a1) a3)
(mov (car a1) a2)
(mov (cvalq ntampon) a1)
(adjstk '5)
(jmp bnconvert)
))
(loader'((entry bngcd nsubr)
(mov (& 0) a4)
(diff '1 a4)
(mov (& 0) a3)
(plus '1 a3)
(mov (& 3) a2)
(plus (& 0) a2)
(push '0)
(push (& 1))
(push (& 5))
(push '0)
(push a2)
(push a3)
(push a4)
(push (@ 101))
(push (cvalq ntampon))
(push (& 8))
(push (& 12))
(push (& 12))
(push (& 12))
(mov '5 a4)
(jmp bnassign)
101
(eval ())
(mov (& 0) a4)
(plus '1 a4)
(mov '1 a3)
(mov a4 a2)
(mov (cvalq ntampon) a1)
(jcall bnsettozero)
(push (@ 102))
(push (cvalq ntampon))
(push (& 3))
(push (& 15))
(push (& 15))
(push (& 15))
(mov '5 a4)
(jmp bnassign)
102
(eval ())
(mov (& 2) a4)
(plus '1 a4)
(mov '1 a3)
(mov a4 a2)
(mov (cvalq ntampon) a1)
(jcall bnsettozero)
103
(cnbne (& 5) '1 105)
(mov (& 6) a2)
(mov (cvalq ntampon) a1)
(jcall bnisdigitzero)
(cabne a1 '0 104)
105
(push (@ 108))
(push (cvalq ntampon))
(push (& 3))
(push (& 7))
(push (cvalq ntampon))
(push (& 11))
(push (& 11))
(mov '6 a4)
(jmp bncompare)
108
(eval ())
(cnbne a1 '0 106)
(mov (& 5) a3)
(mov (& 1) a2)
(mov (cvalq ntampon) a1)
(jcall bnsettozero)
(mov '1 (& 4))
(bra 107)
106
(mov (& 2) a4)
(plus '1 a4)
(mov '0 a3)
(mov a4 a2)
(mov (cvalq ntampon) a1)
(jcall bnsetdigit)
(push (@ 109))
(push (cvalq ntampon))
(push (& 3))
(mov (& 7) a4)
(plus '1 a4)
(push a4)
(push (cvalq ntampon))
(push (& 11))
(push (& 11))
(mov '6 a4)
(jmp bndivide)
109
(eval ())
(mov (& 5) a3)
(mov (& 1) a2)
(mov (cvalq ntampon) a1)
(jcall bnnumdigits)
(mov a1 (& 4))
(mov (& 1) a4)
(plus a1 a4)
(diff '1 a4)
(mov a4 (& 2))
107
(mov (& 1) (& 3))
(mov (& 6) (& 1))
(mov (& 3) (& 6))
(mov (& 4) (& 3))
(mov (& 5) (& 4))
(mov (& 3) (& 5))
(mov (& 2) (& 3))
(mov (& 0) (& 2))
(mov (& 3) (& 0))
(bra 103)
104
(mov (& 4) a2)
(mov (& 1) a1)
(adjstk '13)
(jmp cons)
))
(setq #:sys-package:colon '#:r:q)
(loader'((fentry even? subr1)
(entry even? subr1)
(push a1)
(jcall type-of)
(cabne a1 'fix 102)
(mov (& 0) a1)
(adjstk '1)
(jmp evenp)
102
(cabne a1 '#:r:q:n 103)
(mov '0 a2)
(mov (& 0) a1)
(jcall bnisdigitodd)
(cabeq a1 '0 104)
(mov nil a1)
(adjstk '1)
(return)
104
(mov '0 a1)
(adjstk '1)
(return)
103
(cabne a1 '#:r:q:z 106)
(mov '0 a2)
(mov (& 0) a1)
(jcall bnisdigitodd)
(cabeq a1 '0 107)
(mov nil a1)
(adjstk '1)
(return)
107
(mov '0 a1)
(adjstk '1)
(return)
106
(mov (& 0) a1)
(jcall numberp)
(btnil a1 110)
(push (@ 112))
(push 'even?)
(push (& 2))
(mov '2 a4)
(jmp send)
112
(eval ())
(adjstk '1)
(return)
110
(push (@ 113))
(push 'even?)
(push (& 2))
(mov '2 a4)
(jmp list)
113
(eval ())
(mov a1 a3)
(mov 'rnotz a2)
(mov 'even? a1)
(adjstk '1)
(jmp #:r:error)
))
(loader'((fentry ** subr2)
(entry ** subr2)
(push a2)
(push a1)
(push (@ 103))
(push a2)
(push '0)
(mov '2 a4)
(jmp <)
103
(eval ())
(btnil a1 101)
(push (@ 104))
(push (@ 105))
(push (& 3))
(mov '1 a4)
(jmp -)
105
(eval ())
(mov a1 a2)
(mov (& 1) a1)
(jcall **)
(push a1)
(mov '1 a4)
(jmp /)
104
(eval ())
(adjstk '2)
(return)
101
(cabne (& 1) '0 106)
(mov '1 a1)
(adjstk '2)
(return)
106
(mov (& 1) a1)
(jcall integerp)
(btnil a1 108)
(mov '1 a3)
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(bra #:r:q:**n)
108
(cabne (& 0) '0 110)
(cabne '0 (& 1) 112)
(push (@ 114))
(push '0)
(push '0)
(mov '2 a4)
(jmp /)
114
(eval ())
(adjstk '2)
(return)
112
(mov '0 a1)
(adjstk '2)
(return)
110
(cabne '1 (& 0) 115)
(mov '1 a1)
(adjstk '2)
(return)
115
(mov (& 1) a2)
(mov (& 0) a1)
(adjstk '2)
(jmp power)
))
(loader'((entry #:r:q:**n subr3)
(push a3)
(push a2)
(push a1)
(cabne '1 a2 101)
(push (@ 103))
(push a1)
(push a3)
(mov '2 a4)
(jmp *)
103
(eval ())
(adjstk '3)
(return)
101
(push (@ 104))
(push a1)
(push a1)
(mov '2 a4)
(jmp *)
104
(eval ())
(push a1)
(mov '2 a2)
(mov (& 2) a1)
(jcall quomod)
(push a1)
(push (@ 107))
(push '0)
(push (cvalq #:ex:mod))
(mov '2 a4)
(jmp =)
107
(eval ())
(btnil a1 105)
(mov (& 4) a3)
(bra 106)
105
(push (@ 108))
(push (& 3))
(push (& 6))
(mov '2 a4)
(jmp *)
108
(eval ())
(mov a1 a3)
106
(pop a2)
(pop a1)
(adjstk '3)
(bra #:r:q:**n)
))
(defvar tablefib '#[0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657])
(loader'((fentry fib subr1)
(entry fib subr1)
(push a1)
(jcall integerp)
(btnil a1 103)
(push (@ 104))
(push (& 1))
(push '0)
(mov '2 a4)
(jmp >=)
104
(eval ())
(bfnil a1 102)
103
(push (@ 105))
(push 'fib)
(push (& 2))
(mov '2 a4)
(jmp list)
105
(eval ())
(mov a1 a3)
(mov 'rnotz a2)
(mov 'fib a1)
(jcall #:r:error)
102
(mov (& 0) a1)
(adjstk '1)
(jmp nfib)
))
(loader'((fentry nfib subr1)
(entry nfib subr1)
(push a1)
(cnbgt a1 '23 101)
(hpxmov (cvalq tablefib) a1 a1)
(adjstk '1)
(return)
101
(quo (cvalq bn←digit←size) a1)
(plus '1 a1)
(push a1)
(mov a1 a2)
(mov 'fn a1)
(jcall bncreate)
(push (cvalq fn))
(mov a1 (cvalq fn))
(push '1)
(push '(fn))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(mov (& 7) a2)
(mov 'fn+1 a1)
(jcall bncreate)
(push (cvalq fn+1))
(mov a1 (cvalq fn+1))
(push '1)
(push '(fn+1))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(mov (& 14) a2)
(mov 'f2n a1)
(jcall bncreate)
(push (cvalq f2n))
(mov a1 (cvalq f2n))
(push '1)
(push '(f2n))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(mov (& 21) a2)
(mov 'f2n+1 a1)
(jcall bncreate)
(push (cvalq f2n+1))
(mov a1 (cvalq f2n+1))
(push '1)
(push '(f2n+1))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(push '0)
(push (cvalq fl))
(mov (& 1) (cvalq fl))
(push '1)
(push '(fl))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(push '0)
(push (cvalq f2l))
(mov (& 1) (cvalq f2l))
(push '1)
(push '(f2l))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(push nil)
(push (cvalq sv))
(mov (& 1) (cvalq sv))
(push '1)
(push '(sv))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(mov (& 53) a1)
(call fibexp)
(mov '0 a3)
(mov (& 52) a2)
(mov (cvalq fn) a1)
(jcall entretampon)
(mov (& 52) a3)
(mov '0 a2)
(mov (cvalq ntampon) a1)
(jcall bnconvert)
(mov (& 1) dlink)
(mov (& 6) (cvalq sv))
(adjstk '8)
(mov (& 1) dlink)
(mov (& 6) (cvalq f2l))
(adjstk '8)
(mov (& 1) dlink)
(mov (& 6) (cvalq fl))
(adjstk '8)
(mov (& 1) dlink)
(mov (& 6) (cvalq f2n+1))
(adjstk '7)
(mov (& 1) dlink)
(mov (& 6) (cvalq f2n))
(adjstk '7)
(mov (& 1) dlink)
(mov (& 6) (cvalq fn+1))
(adjstk '7)
(mov (& 1) dlink)
(mov (& 6) (cvalq fn))
(adjstk '9)
(return)
))
(loader'((entry fibexp subr1)
(push a1)
(cnblt '23 a1 101)
(hpxmov (cvalq tablefib) a1 a3)
(mov '0 a2)
(mov (cvalq fn) a1)
(jcall bnsetdigit)
(mov (& 0) a4)
(plus '1 a4)
(hpxmov (cvalq tablefib) a4 a3)
(mov '0 a2)
(mov (cvalq fn+1) a1)
(jcall bnsetdigit)
(mov '1 (cvalq fl))
(mov '1 a1)
(adjstk '1)
(return)
101
(jcall oddp)
(btnil a1 103)
(mov (& 0) a4)
(diff '1 a4)
(mov a4 a1)
(call fibexp)
(push (@ 107))
(push (cvalq fn))
(push '0)
(push (cvalq fl))
(push (cvalq fn+1))
(push '0)
(push (cvalq fl))
(push '0)
(mov '7 a4)
(jmp bnadd)
107
(eval ())
(cabne '1 a1 106)
(mov '1 a3)
(mov (cvalq fl) a2)
(mov (cvalq fn) a1)
(jcall bnsetdigit)
(mov (cvalq fl) a4)
(plus '1 a4)
(mov a4 (cvalq fl))
106
(push (cvalq fn+1))
(mov (cvalq fn) (cvalq fn+1))
(pop a4)
(mov a4 (cvalq fn))
(mov a4 a1)
(adjstk '1)
(return)
103
(mov (& 0) a4)
(quo '2 a4)
(mov a4 a1)
(call fibexp)
(mov (cvalq fl) a4)
(plus (cvalq fl) a4)
(mov a4 (cvalq f2l))
(push (@ 108))
(push (cvalq f2n))
(push '0)
(push a4)
(push (cvalq fn))
(push '0)
(push (cvalq fl))
(push (cvalq fn))
(push '0)
(push (cvalq fl))
(mov '9 a4)
(jmp bnmultiply)
108
(eval ())
(push (@ 109))
(push (cvalq f2n+1))
(push '0)
(push (cvalq f2l))
(push (cvalq fn+1))
(push '0)
(push (cvalq fl))
(push (cvalq fn+1))
(push '0)
(push (cvalq fl))
(mov '9 a4)
(jmp bnmultiply)
109
(eval ())
(push (@ 110))
(push (cvalq f2n+1))
(push '0)
(push (cvalq f2l))
(push (cvalq f2n))
(push '0)
(push (cvalq f2l))
(push '0)
(mov '7 a4)
(jmp bnadd)
110
(eval ())
(mov (cvalq fl) a3)
(mov '0 a2)
(mov (cvalq fn+1) a1)
(jcall bncomplement)
(push (@ 111))
(push (cvalq fn+1))
(push '0)
(push (cvalq fl))
(push (cvalq fn))
(push '0)
(push (cvalq fl))
(push '0)
(mov '7 a4)
(jmp bnadd)
111
(eval ())
(mov (cvalq fl) a3)
(mov '0 a2)
(mov (cvalq fn+1) a1)
(jcall bncomplement)
(push (@ 112))
(push (cvalq fn+1))
(push '0)
(push (cvalq fl))
(push (cvalq fn+1))
(push '0)
(push (cvalq fl))
(push '0)
(mov '7 a4)
(jmp bnadd)
112
(eval ())
(push (@ 113))
(push (cvalq f2n))
(push '0)
(push (cvalq f2l))
(push (cvalq fn))
(push '0)
(push (cvalq fl))
(push (cvalq fn+1))
(push '0)
(push (cvalq fl))
(mov '9 a4)
(jmp bnmultiply)
113
(eval ())
114
(push (@ 116))
(push (cvalq #:n:c0))
(push '0)
(push (cvalq f2n+1))
(mov (cvalq f2l) a4)
(diff '1 a4)
(push a4)
(mov '4 a4)
(jmp bncomparedigits)
116
(eval ())
(cabne '0 a1 115)
(mov (cvalq f2l) a4)
(diff '1 a4)
(mov a4 (cvalq f2l))
(bra 114)
115
(mov (cvalq fl) a3)
(mov '0 a2)
(mov (cvalq fn) a1)
(jcall bnsettozero)
(mov (cvalq fl) a3)
(mov '0 a2)
(mov (cvalq fn+1) a1)
(jcall bnsettozero)
(mov (cvalq fn) (cvalq sv))
(mov (cvalq f2n) (cvalq fn))
(mov (cvalq sv) (cvalq f2n))
(mov (cvalq fn+1) (cvalq sv))
(mov (cvalq f2n+1) (cvalq fn+1))
(mov (cvalq sv) (cvalq f2n+1))
(mov (cvalq f2l) (cvalq fl))
(mov '0 (cvalq f2l))
(mov '0 a1)
(adjstk '1)
(return)
))
(loader'((fentry fact subr1)
(entry fact subr1)
(push a1)
(jcall integerp)
(btnil a1 103)
(push (@ 104))
(push (& 1))
(push '0)
(mov '2 a4)
(jmp >=)
104
(eval ())
(bfnil a1 102)
103
(push (@ 105))
(push 'fact)
(push (& 2))
(mov '2 a4)
(jmp list)
105
(eval ())
(mov a1 a3)
(mov 'rnotz a2)
(mov 'fact a1)
(jcall #:r:error)
102
(mov (& 0) a1)
(adjstk '1)
(jmp nfact)
))
(loader'((fentry nfact subr1)
(entry nfact subr1)
(push a1)
(push '1)
(push (cvalq fact))
(mov (& 1) (cvalq fact))
(push '1)
(push '(fact))
(push 'lambda)
(push llink)
(push dlink)
(push cbindn)
(stack dlink)
(cnble '8 a1 101)
103
(cnblt (& 8) '1 102)
(mov (cvalq fact) a4)
(times (& 8) a4)
(mov a4 (cvalq fact))
(mov (& 8) a4)
(diff '1 a4)
(mov a4 (& 8))
(bra 103)
101
(cnbgt '350 a1 107)
(cabne '32 (cvalq bn←digit←size) 105)
(cnble '501 a1 105)
107
(quo '2 a1)
(diff '1 a1)
(mov a1 a3)
(mov '0 a2)
(mov (cvalq #:n:c0) a1)
(jcall entretampon)
(mov '5040 a3)
(mov '1 a2)
(mov (cvalq ntampon) a1)
(jcall bnsetdigit)
(push '8)
(push '0)
108
(cnblt (& 10) (& 1) 109)
(cabne (& 10) (& 1) 110)
(mov (& 10) a3)
(bra 111)
110
(mov (& 10) a4)
(times (& 1) a4)
(mov a4 a3)
111
(diff '1 a3)
(mov '0 a2)
(mov (cvalq ntampon) a1)
(jcall bnsetdigit)
(mov (& 1) a4)
(plus '1 a4)
(mov a4 (& 1))
(mov (& 10) a3)
(diff '1 a3)
(mov a3 (& 10))
(mov (& 0) a2)
(mov (cvalq ntampon) a1)
(jcall bnisdigitzero)
(cabne a1 '0 113)
(mov (& 0) a4)
(plus '1 a4)
(mov a4 (& 0))
113
(push (@ 114))
(push (cvalq ntampon))
(push '1)
(mov (& 3) a4)
(plus '1 a4)
(push a4)
(push (cvalq ntampon))
(push '1)
(push (& 6))
(push (cvalq ntampon))
(push '0)
(mov '8 a4)
(jmp bnmultiplydigit)
114
(eval ())
(bra 108)
109
(mov (& 0) a4)
(plus '1 a4)
(mov a4 a3)
(mov '1 a2)
(mov (cvalq ntampon) a1)
(jcall bnconvert)
(mov a1 (cvalq fact))
(adjstk '2)
(bra 102)
105
(push (@ 115))
(push '"Error Fact trop grande")
(mov '1 a4)
(jmp print)
115
(eval ())
102
(mov (cvalq fact) a1)
(mov (& 1) dlink)
(mov (& 6) (cvalq fact))
(adjstk '9)
(return)
))
(loader'((fentry newobase nsubr)
(entry newobase nsubr)
(jcall #:llcp:nlist)
(push a1)
(bfnil a1 101)
(push (@ 103))
(mov '0 a4)
(jmp oldobase)
103
(eval ())
(adjstk '1)
(return)
101
(mov (car a1) (& 0))
(push (@ 104))
(push (& 1))
(mov '1 a4)
(jmp oldobase)
104
(eval ())
(mov (& 0) a1)
(call makeobase**k)
(mov (& 0) a1)
(adjstk '1)
(return)
))
(if (not (equal (valfn (concat "obase")) (valfn 'newobase))) (progn (synonym 'oldobase (concat "obase")) (packagecell (concat "obase") 'old) (synonym (concat "obase") 'newobase)))
(obase (obase))
(loader'((fentry newibase nsubr)
(entry newibase nsubr)
(jcall #:llcp:nlist)
(push a1)
(bfnil a1 101)
(push (@ 103))
(mov '0 a4)
(jmp oldibase)
103
(eval ())
(adjstk '1)
(return)
101
(mov (car a1) (& 0))
(push (@ 104))
(push (& 1))
(mov '1 a4)
(jmp oldibase)
104
(eval ())
(mov (& 0) a1)
(call makeibase**k)
(mov (& 0) a1)
(adjstk '1)
(return)
))
(if (not (equal (valfn (concat "ibase")) (valfn 'newibase))) (progn (synonym 'oldibase (concat "ibase")) (packagecell (concat "ibase") 'old) (synonym (concat "ibase") 'newibase)))
(ibase (ibase))
(setq #:system:read-case-flag #:backup:majuscules)
(loader '((end)))