Google
 

Trailing-Edge - PDP-10 Archives - clisp - clisp/upsala/rand.lap
There are no other files named rand.lap in the archive.
;;; CLC vP.U.V.1(2) compiling CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5

(IN-PACKAGE (QUOTE LISP)) 
(EXPORT (QUOTE (RANDOM-STATE RANDOM-STATE-P RANDOM *RANDOM-STATE* MAKE-RANDOM-STATE))) 
(DEFCONSTANT RANDOM-CONST-A 8373) 
(DEFCONSTANT RANDOM-CONST-C 101010101) 
(DEFCONSTANT RANDOM-UPPER-BOUND 134217726) 
(DEFCONSTANT RANDOM-MAX 54) 
(DEFVAR RAND-SEED 0) 
(DEFVAR *RANDOM-STATE* NIL "Holds a data structure, an object of type RANDOM-STATE, that incodes the
  internal state of the random-number generator that RANDOM uses by default.") 

#_(LAP #0_MAKE-RANDOM-OBJECT EXPR
       (ENTRY-POINTS (2 3 4 5 6 7 8) REST)
       #0_(4 1 RANDOM-STATE :J 24 :K 0 :SEED 54 :INITIAL-CONTENTS ((:SEED . 3) (:K . 2) (:J . 1)) "Unknown option to DefStruct constructor.")
       (CODE-START)
(LABEL 2)    (MOVE O1 NIL)
             (JRST 1)
(LABEL 3)    (MOVEI W2 1)
             (ICALL REST1)
             (JRST 1)
(LABEL 4)    (MOVEI W2 2)
             (ICALL REST2)
             (JRST 1)
(LABEL 5)    (MOVEI W2 3)
             (ICALL REST3)
             (JRST 1)
(LABEL 6)    (MOVEI W2 4)
             (ICALL REST4)
             (JRST 1)
(LABEL 7)    (MOVEI W2 5)
             (ICALL REST5)
             (JRST 1)
(LABEL 8)    (MOVEI W2 0)
             (ICALL RESTX)
(LABEL 1)    (ADDI Q 11)
             (MOVEM O1 -10 Q)
             (MOVE O5 O1)
             (MOVEM O5 -9 Q)
             (MOVE O1 (CONSTANT 0))
             (CALL MAKE-ARRAY 1)
             (MOVEM O1 -6 Q)
             (MOVE O2 (CONSTANT 1))
             (MOVEM O2 -2 O1)
             (MOVE O2 (CONSTANT 2))
             (MOVEM O2 0 O1)
             (MOVE O5 O1)
             (MOVEM O5 -8 Q)
             (MOVEM NIL -7 Q)
(LABEL 14)   (SKIPE NIL -9 Q)
             (JRST 15)
             (MOVE O2 -7 Q)
             (MOVE O1 (CONSTANT 3))
             (CALL MEMQ 2)
             (JUMPN O1 17)
             (MOVE O2 (CONSTANT 4))
             (MOVE O1 -8 Q)
             (MOVEM O2 1 O1)
(LABEL 17)   (MOVE O2 -7 Q)
             (MOVE O1 (CONSTANT 5))
             (CALL MEMQ 2)
             (JUMPN O1 19)
             (MOVE O2 (CONSTANT 6))
             (MOVE O1 -8 Q)
             (MOVEM O2 2 O1)
(LABEL 19)   (MOVE O2 -7 Q)
             (MOVE O1 (CONSTANT 7))
             (CALL MEMQ 2)
             (JUMPN O1 21)
             (MOVE O1 (CONSTANT 8))
             (CALL 1+ 1)
             (MOVEM O1 -5 Q)
             (MOVEM NIL -3 Q)
             (MOVE O5 (CONSTANT 6))
             (MOVEM O5 -2 Q)
(LABEL 27)   (MOVE O2 (CONSTANT 8))
             (MOVE O1 -2 Q)
             (CALL > 2)
             (JUMPE O1 28)
             (MOVE O3 -3 Q)
             (JRST 23)
(LABEL 28)   (CALL LISP::RAND1 0)
             (MOVEM O1 -1 Q)
             (MOVE O2 -3 Q)
             (CALL CONS 2)
             (MOVEM O1 -1 Q)
             (MOVE O1 -2 Q)
             (CALL 1+ 1)
             (MOVEM O1 0 Q)
             (MOVE O1 -1 Q)
             (MOVEM O1 -3 Q)
             (MOVE O1 0 Q)
             (MOVEM O1 -2 Q)
             (JRST 27)
(LABEL 23)   (MOVE O1 -5 Q)
             (MOVE O2 (CONSTANT 9))
             (CALL MAKE-ARRAY 3)
             (MOVE O2 O1)
             (MOVE O1 -8 Q)
             (MOVEM O2 3 O1)
(LABEL 21)   (MOVE O1 -8 Q)
             (MOVEI N 1)
             (JRST 10)
(LABEL 15)   (MOVE O1 -9 Q)
             (MOVE O5 0 O1)
             (MOVEM O5 -4 Q)
             (MOVE O2 (CONSTANT 10))
             (MOVE O1 O5)
             (CALL ASSOC 2)
             (MOVE O5 1 O1)
             (MOVEM O5 -5 Q)
             (SKIPN NIL -5 Q)
             (JRST 31)
             (MOVE O1 -9 Q)
             (MOVE O1 1 O1)
             (MOVE O3 0 O1)
             (MOVE O1 -8 Q)
             (MOVE O2 -5 Q)
             (ADDI O1 0 O2)
             (MOVEM O3 0 O1)
             (MOVE O1 -9 Q)
             (MOVE O5 0 O1)
             (MOVEM O5 -4 Q)
             (MOVE O2 -7 Q)
             (MOVE O1 O5)
             (CALL CONS 2)
             (MOVEM O1 -7 Q)
             (JRST 30)
(LABEL 31)   (SKIPA)
             (JRST 32)
             (MOVE O1 (CONSTANT 11))
             (CALL ERROR 1)
(LABEL 32)
(LABEL 30)   (MOVE O1 -9 Q)
             (MOVE O1 1 O1)
             (MOVE O1 1 O1)
             (MOVEM O1 -9 Q)
             (JRST 14)
(LABEL 10)   (SUBI Q 11)
             (POPJ P)
)

(%PUT (QUOTE MAKE-RANDOM-OBJECT) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (&REST INITIAL-VALUES))) 
(%PUT (QUOTE MAKE-RANDOM-OBJECT) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE MAKE-RANDOM-OBJECT) (QUOTE %SOURCE-DOCUMENTATION)))) 

#_(LAP #0_RANDOM-STATE-SEED EXPR
       (ENTRY-POINTS (2-FEW 1 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_NIL
       (CODE-START)
(LABEL 1)    (ADDI Q 1)
             (MOVEM O1 0 Q)
             (MOVE O1 3 O1)
             (MOVEI N 1)
             (SUBI Q 1)
             (POPJ P)
)

(%PUT (QUOTE RANDOM-STATE-SEED) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (OBJECT))) 
(%PUT (QUOTE RANDOM-STATE-SEED) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE RANDOM-STATE-SEED) (QUOTE %SOURCE-DOCUMENTATION)))) 

#_(LAP #0_RANDOM-STATE-K EXPR
       (ENTRY-POINTS (2-FEW 1 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_NIL
       (CODE-START)
(LABEL 1)    (ADDI Q 1)
             (MOVEM O1 0 Q)
             (MOVE O1 2 O1)
             (MOVEI N 1)
             (SUBI Q 1)
             (POPJ P)
)

(%PUT (QUOTE RANDOM-STATE-K) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (OBJECT))) 
(%PUT (QUOTE RANDOM-STATE-K) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE RANDOM-STATE-K) (QUOTE %SOURCE-DOCUMENTATION)))) 

#_(LAP #0_RANDOM-STATE-J EXPR
       (ENTRY-POINTS (2-FEW 1 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_NIL
       (CODE-START)
(LABEL 1)    (ADDI Q 1)
             (MOVEM O1 0 Q)
             (MOVE O1 1 O1)
             (MOVEI N 1)
             (SUBI Q 1)
             (POPJ P)
)

(%PUT (QUOTE RANDOM-STATE-J) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (OBJECT))) 
(%PUT (QUOTE RANDOM-STATE-J) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE RANDOM-STATE-J) (QUOTE %SOURCE-DOCUMENTATION)))) 
(SETF (SYMBOL-FUNCTION (QUOTE COPY-RANDOM-STATE)) (FUNCTION BUILT-IN-COPIER)) 

#_(LAP #0_RANDOM-STATE-P EXPR
       (ENTRY-POINTS (2-FEW 1 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_(1 RANDOM-STATE T)
       (CODE-START)
(LABEL 1)    (ADDI Q 3)
             (MOVEM O1 -2 Q)
             (MOVEM NIL -1 Q)
             (CALL SIMPLE-VECTOR-P 1)
             (JUMPE O1 3)
             (MOVE O1 -2 Q)
             (CALL STRINGP 1)
             (JUMPN O1 3)
             (MOVE O1 -2 Q)
             (MOVE O5 -2 O1)
             (MOVEM O5 0 Q)
             (MOVE O2 (CONSTANT 0))
             (MOVE O1 O5)
             (CALL = 2)
             (JUMPE O1 3)
             (MOVE O1 -2 Q)
             (MOVE O1 0 O1)
             (MOVEM O1 -1 Q)
             (JUMPE O1 3)
             (MOVE O2 (CONSTANT 1))
             (CAME O2 -1 Q)
             (SKIPA O1 NIL)
             (MOVE O1 (CONSTANT 2))
             (MOVEI N 1)
             (JUMPN O1 5)
             (MOVE O2 (CONSTANT 1))
             (MOVE O1 -1 Q)
             (CALL LISP::INCLUDE-CHASE 2)
(LABEL 5)    (JRST 4)
(LABEL 3)    (MOVE O1 NIL)
             (MOVEI N 1)
(LABEL 4)    (SUBI Q 3)
             (POPJ P)
)

(%PUT (QUOTE RANDOM-STATE-P) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (THING))) 
(%PUT (QUOTE RANDOM-STATE-P) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE RANDOM-STATE-P) (QUOTE %SOURCE-DOCUMENTATION)))) 
(REMPROP (QUOTE RANDOM-STATE-J) (QUOTE SETF-INVERSE)) 
(%PUT (QUOTE RANDOM-STATE-J) (QUOTE SETF-METHOD-EXPANDER) (FUNCTION (LAMBDA (ACCESS-FORM) (DO* ((ARGS (CDR ACCESS-FORM) (CDR ARGS)) (DUMMIES NIL (CONS (GENSYM) DUMMIES)) (NEWVAL-VAR (GENSYM)) (NEW-ACCESS-FORM NIL)) ((ATOM ARGS) (SETQ NEW-ACCESS-FORM (CONS (CAR ACCESS-FORM) DUMMIES)) (VALUES DUMMIES (CDR ACCESS-FORM) (LIST NEWVAL-VAR) (FUNCALL (FUNCTION (LAMBDA (%ACCESS-ARGLIST NEW-VALUE) (LET* ((STRUCTURE (CAR (CDR %ACCESS-ARGLIST)))) (SETELT-FORM STRUCTURE 1 NEW-VALUE (QUOTE VECTOR))))) NEW-ACCESS-FORM NEWVAL-VAR) NEW-ACCESS-FORM)))))) 
(REMPROP (QUOTE RANDOM-STATE-J) (QUOTE %SETF-DOCUMENTATION)) 
(QUOTE RANDOM-STATE-J) 
(REMPROP (QUOTE RANDOM-STATE-K) (QUOTE SETF-INVERSE)) 
(%PUT (QUOTE RANDOM-STATE-K) (QUOTE SETF-METHOD-EXPANDER) (FUNCTION (LAMBDA (ACCESS-FORM) (DO* ((ARGS (CDR ACCESS-FORM) (CDR ARGS)) (DUMMIES NIL (CONS (GENSYM) DUMMIES)) (NEWVAL-VAR (GENSYM)) (NEW-ACCESS-FORM NIL)) ((ATOM ARGS) (SETQ NEW-ACCESS-FORM (CONS (CAR ACCESS-FORM) DUMMIES)) (VALUES DUMMIES (CDR ACCESS-FORM) (LIST NEWVAL-VAR) (FUNCALL (FUNCTION (LAMBDA (%ACCESS-ARGLIST NEW-VALUE) (LET* ((STRUCTURE (CAR (CDR %ACCESS-ARGLIST)))) (SETELT-FORM STRUCTURE 2 NEW-VALUE (QUOTE VECTOR))))) NEW-ACCESS-FORM NEWVAL-VAR) NEW-ACCESS-FORM)))))) 
(REMPROP (QUOTE RANDOM-STATE-K) (QUOTE %SETF-DOCUMENTATION)) 
(QUOTE RANDOM-STATE-K) 
(REMPROP (QUOTE RANDOM-STATE-SEED) (QUOTE SETF-INVERSE)) 
(%PUT (QUOTE RANDOM-STATE-SEED) (QUOTE SETF-METHOD-EXPANDER) (FUNCTION (LAMBDA (ACCESS-FORM) (DO* ((ARGS (CDR ACCESS-FORM) (CDR ARGS)) (DUMMIES NIL (CONS (GENSYM) DUMMIES)) (NEWVAL-VAR (GENSYM)) (NEW-ACCESS-FORM NIL)) ((ATOM ARGS) (SETQ NEW-ACCESS-FORM (CONS (CAR ACCESS-FORM) DUMMIES)) (VALUES DUMMIES (CDR ACCESS-FORM) (LIST NEWVAL-VAR) (FUNCALL (FUNCTION (LAMBDA (%ACCESS-ARGLIST NEW-VALUE) (LET* ((STRUCTURE (CAR (CDR %ACCESS-ARGLIST)))) (SETELT-FORM STRUCTURE 3 NEW-VALUE (QUOTE VECTOR))))) NEW-ACCESS-FORM NEWVAL-VAR) NEW-ACCESS-FORM)))))) 
(REMPROP (QUOTE RANDOM-STATE-SEED) (QUOTE %SETF-DOCUMENTATION)) 
(QUOTE RANDOM-STATE-SEED) 
(%PUT (QUOTE RANDOM-STATE) (QUOTE DEFSTRUCT-DESCRIPTION) (QUOTE #(RANDOM-STATE VECTOR ((:CONSTRUCTOR MAKE-RANDOM-OBJECT)) 4 RANDOM-STATE- MAKE-RANDOM-OBJECT (RANDOM-STATE-SEED RANDOM-STATE-K RANDOM-STATE-J) (SEED K J) ((MAKE-ARRAY (1+ RANDOM-MAX) :INITIAL-CONTENTS (DO ((LIST-RANDS NIL (CONS (RAND1) LIST-RANDS)) (I 0 (1+ I))) ((> I RANDOM-MAX) LIST-RANDS))) 0 24) ((:TYPE (QUOTE (SIMPLE-VECTOR * FIXNUM))) (:TYPE INTEGER) (:TYPE INTEGER)) ((RANDOM-STATE-SEED . 3) (RANDOM-STATE-K . 2) (RANDOM-STATE-J . 1)) ((RANDOM-STATE-SEED QUOTE (SIMPLE-VECTOR * FIXNUM)) (RANDOM-STATE-K . INTEGER) (RANDOM-STATE-J . INTEGER)) ((:SEED . 3) (:K . 2) (:J . 1))))) 
(QUOTE RANDOM-STATE) 

#_(LAP #0_RAND1 EXPR
       (ENTRY-POINTS (1 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_(RAND-SEED 8373 101010101 134217726)
       (CODE-START)
(LABEL 1)    (ADDI Q 1)
             (MOVE O5 (SPECIAL 0))
             (MOVEM O5 0 Q)
             (MOVE O2 (CONSTANT 1))
             (MOVE O1 O5)
             (CALL * 2)
             (MOVEM O1 0 Q)
             (MOVE O2 (CONSTANT 2))
             (CALL + 2)
             (MOVEM O1 0 Q)
             (MOVE O1 (CONSTANT 3))
             (CALL 1+ 1)
             (MOVE O2 O1)
             (MOVE O1 0 Q)
             (CALL MOD 2)
             (MOVEM O1 (SPECIAL 0))
             (MOVEI N 1)
             (SUBI Q 1)
             (POPJ P)
)

(%PUT (QUOTE RAND1) (QUOTE %ARGS-DOCUMENTATION) (QUOTE NIL)) 
(%PUT (QUOTE RAND1) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE RAND1) (QUOTE %SOURCE-DOCUMENTATION)))) 

#_(LAP #0_RAND3 EXPR
       (ENTRY-POINTS (2-FEW 1 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_(134217726 54 0)
       (CODE-START)
(LABEL 1)    (ADDI Q 8)
             (MOVEM O1 -7 Q)
             (MOVE O5 3 O1)
             (MOVEM O5 -6 Q)
             (MOVE O5 1 O1)
             (MOVEM O5 -5 Q)
             (MOVE O5 2 O1)
             (MOVEM O5 -4 Q)
             (MOVE O5 O1)
             (MOVEM O5 -1 Q)
             (MOVE O1 -5 Q)
             (CALL ZEROP 1)
             (JUMPE O1 3)
             (MOVE O5 (CONSTANT 1))
             (MOVEM O5 0 Q)
             (JRST 4)
(LABEL 3)    (MOVE O1 -5 Q)
             (CALL 1- 1)
             (MOVEM O1 0 Q)
(LABEL 4)    (MOVE O2 0 Q)
             (MOVE O1 -1 Q)
             (MOVEM O2 1 O1)
             (MOVE O2 1 O1)
             (MOVE O1 -6 Q)
             (ADDI O1 0 O2)
             (MOVE O2 0 O1)
             (MOVE O1 (CONSTANT 0))
             (CALL - 2)
             (MOVEM O1 -2 Q)
             (MOVE O5 -7 Q)
             (MOVEM O5 -1 Q)
             (MOVE O1 -4 Q)
             (CALL ZEROP 1)
             (JUMPE O1 5)
             (MOVE O5 (CONSTANT 1))
             (MOVEM O5 0 Q)
             (JRST 6)
(LABEL 5)    (MOVE O1 -4 Q)
             (CALL 1- 1)
             (MOVEM O1 0 Q)
(LABEL 6)    (MOVE O2 0 Q)
             (MOVE O1 -1 Q)
             (MOVEM O2 2 O1)
             (MOVE O2 2 O1)
             (MOVE O1 -6 Q)
             (ADDI O1 0 O2)
             (MOVE O2 0 O1)
             (MOVE O1 -2 Q)
             (CALL - 2)
             (MOVEM O1 -3 Q)
             (MOVE O2 (CONSTANT 2))
             (CALL < 2)
             (JUMPE O1 7)
             (MOVE O1 -3 Q)
             (CALL - 1)
             (MOVE O3 O1)
             (JRST 8)
(LABEL 7)    (MOVE O2 -3 Q)
             (MOVE O1 (CONSTANT 0))
             (CALL - 2)
             (MOVE O3 O1)
(LABEL 8)    (MOVE O1 -6 Q)
             (MOVE O2 -4 Q)
             (ADDI O1 0 O2)
             (MOVEM O3 0 O1)
             (MOVE O1 0 O1)
             (MOVEI N 1)
             (SUBI Q 8)
             (POPJ P)
)

(%PUT (QUOTE RAND3) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (STATE))) 
(%PUT (QUOTE RAND3) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE RAND3) (QUOTE %SOURCE-DOCUMENTATION)))) 

#_(LAP #0_RANDOM-INIT EXPR
       (ENTRY-POINTS (1 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_(:SEED 54 :INITIAL-CONTENTS (45117816 133464727 86324180 99419799 68851957 87250180 52971860 84081967 30854110 121122797 70449044 18801152 45149898 15881380 27398356 117706009 49915564 80620628 120974070 98193932 43883764 53717012 100954825 82579490 17280729 118523949 42282975 127220348 6288263 56575578 2474156 47934425 561006 21989698 74046730 105055318 113363907 48749716 78183593 109613585 37323232 65101428 46453209 76906562 5371267 86544820 33922642 60765033 41889257 77176406 38775255 78514879 72553872 66916641 100613180) *RANDOM-STATE*)
       (CODE-START)
(LABEL 1)    (ADDI Q 1)
             (MOVE O1 (CONSTANT 1))
             (CALL 1+ 1)
             (MOVEM O1 0 Q)
             (MOVE O3 (CONSTANT 3))
             (MOVE O2 (CONSTANT 2))
             (CALL MAKE-ARRAY 3)
             (MOVE O2 O1)
             (MOVE O1 (CONSTANT 0))
             (CALL LISP::MAKE-RANDOM-OBJECT 2)
             (MOVEM O1 (SPECIAL 4))
             (MOVEI N 1)
             (SUBI Q 1)
             (POPJ P)
)

(%PUT (QUOTE RANDOM-INIT) (QUOTE %ARGS-DOCUMENTATION) (QUOTE NIL)) 
(%PUT (QUOTE RANDOM-INIT) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE RANDOM-INIT) (QUOTE %SOURCE-DOCUMENTATION)))) 

#_(LAP #0_COPY-STATE EXPR
       (ENTRY-POINTS (2-FEW 1 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_(:SEED 55 :J :K 0)
       (CODE-START)
(LABEL 1)    (ADDI Q 7)
             (MOVEM O1 -6 Q)
             (MOVE O5 (CONSTANT 0))
             (MOVEM O5 -4 Q)
             (MOVE O1 (CONSTANT 1))
             (CALL MAKE-ARRAY 1)
             (MOVEM O1 -3 Q)
             (MOVE O5 (CONSTANT 2))
             (MOVEM O5 -2 Q)
             (MOVE O1 -6 Q)
             (MOVE O5 1 O1)
             (MOVEM O5 -1 Q)
             (MOVE O5 (CONSTANT 3))
             (MOVEM O5 0 Q)
             (PUSH Q 2 O1)
             (MOVE O1 -5 Q)
             (MOVE O2 -4 Q)
             (MOVE O3 -3 Q)
             (MOVE O4 -2 Q)
             (MOVE O5 -1 Q)
             (CALL LISP::MAKE-RANDOM-OBJECT 6)
             (MOVEM O1 -5 Q)
             (MOVE O5 (CONSTANT 4))
             (MOVEM O5 -3 Q)
(LABEL 7)    (MOVE O2 (CONSTANT 1))
             (MOVE O1 -3 Q)
             (CALL = 2)
             (JUMPE O1 8)
             (MOVE O1 -5 Q)
             (MOVEI N 1)
             (JRST 3)
(LABEL 8)    (MOVE O1 -5 Q)
             (MOVE O5 3 O1)
             (MOVEM O5 -2 Q)
             (MOVE O1 -6 Q)
             (MOVE O5 3 O1)
             (MOVEM O5 0 Q)
             (MOVE O2 -3 Q)
             (MOVE O1 O5)
             (CALL AREF 2)
             (MOVE O3 O1)
             (MOVE O1 -2 Q)
             (MOVE O2 -3 Q)
             (CALL LISP::%ASET 3)
             (MOVE O1 -3 Q)
             (CALL 1+ 1)
             (MOVEM O1 -3 Q)
             (JRST 7)
(LABEL 3)    (SUBI Q 7)
             (POPJ P)
)

(%PUT (QUOTE COPY-STATE) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (CUR-STATE))) 
(%PUT (QUOTE COPY-STATE) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE COPY-STATE) (QUOTE %SOURCE-DOCUMENTATION)))) 
(%PUT (QUOTE MAKE-RANDOM-STATE) (QUOTE %FUN-DOCUMENTATION) (QUOTE "Make a random state object.  If State is not supplied, return a copy
  of the default random state.  If State is a random state, then return a
  copy of it.  If state is T then return a random state generated from
  the universal time.")) 

#_(LAP #0_MAKE-RANDOM-STATE EXPR
       (ENTRY-POINTS (1 2 2-MANY 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_(*RANDOM-STATE* T RAND-SEED "Bad argument, ~A, for RANDOM-STATE.")
       (CODE-START)
(LABEL 1)    (MOVE O1 NIL)
(LABEL 2)    (ADDI Q 1)
             (MOVEM O1 0 Q)
             (SKIPE NIL 0 Q)
             (JRST 5)
             (MOVE O1 (SPECIAL 0))
             (CALL LISP::COPY-STATE 1)
             (JRST 4)
(LABEL 5)    (MOVE O1 0 Q)
             (CALL RANDOM-STATE-P 1)
             (JUMPE O1 6)
             (MOVE O1 0 Q)
             (CALL LISP::COPY-STATE 1)
             (JRST 4)
(LABEL 6)    (MOVE O2 (CONSTANT 1))
             (CAME O2 0 Q)
             (JRST 7)
             (CALL GET-UNIVERSAL-TIME 0)
             (MOVEM O1 (SPECIAL 2))
             (CALL LISP::MAKE-RANDOM-OBJECT 0)
             (JRST 4)
(LABEL 7)    (SKIPA)
             (JRST 8)
             (MOVE O2 0 Q)
             (MOVE O1 (CONSTANT 3))
             (CALL ERROR 2)
(LABEL 8)
(LABEL 4)    (SUBI Q 1)
             (POPJ P)
)

(%PUT (QUOTE MAKE-RANDOM-STATE) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (&OPTIONAL STATE))) 
(%PUT (QUOTE MAKE-RANDOM-STATE) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE MAKE-RANDOM-STATE) (QUOTE %SOURCE-DOCUMENTATION)))) 
(%PUT (QUOTE RANDOM) (QUOTE %FUN-DOCUMENTATION) (QUOTE "Generate a uniformly distributed pseudo-random number between zero
  and Arg.  State, if supplied, is the random state to use.")) 

#_(LAP #0_RANDOM EXPR
       (ENTRY-POINTS (2-FEW 1 2 2-MANY 2-MANY 2-MANY 2-MANY))
       #0_(*RANDOM-STATE* FIXNUM 0 "Non-positive argument, ~A, to RANDOM." FLOAT SHORT-FLOAT 23 SINGLE-FLOAT DOUBLE-FLOAT 53 LONG-FLOAT 2 INTEGER 32 "Wrong type argument, ~A, to RANDOM.")
       (CODE-START)
(LABEL 1)    (MOVE O2 (SPECIAL 0))
(LABEL 2)    (ADDI Q 8)
             (MOVEM O1 -7 Q)
             (MOVEM O2 -6 Q)
             (MOVE O5 O1)
             (MOVEM O5 -5 Q)
             (MOVE O2 (CONSTANT 1))
             (CALL TYPEP 2)
             (JUMPE O1 5)
             (MOVE O2 (CONSTANT 2))
             (MOVE O1 -7 Q)
             (CALL > 2)
             (JUMPN O1 7)
             (MOVE O2 -7 Q)
             (MOVE O1 (CONSTANT 3))
             (CALL ERROR 2)
(LABEL 7)    (MOVE O1 -6 Q)
             (CALL LISP::RAND3 1)
             (MOVEM O1 -4 Q)
             (MOVE O2 -7 Q)
             (CALL TRUNCATE 2)
             (ADJUST-VALUES 2)
             (MOVEM O1 -3 Q)
             (MOVEM O2 -2 Q)
             (MOVE O1 O2)
             (MOVEI N 1)
             (JRST 4)
(LABEL 5)    (MOVE O2 (CONSTANT 4))
             (MOVE O1 -5 Q)
             (CALL TYPEP 2)
             (JUMPE O1 9)
             (MOVE O2 (CONSTANT 2))
             (MOVE O1 -7 Q)
             (CALL > 2)
             (JUMPN O1 11)
             (MOVE O2 -7 Q)
             (MOVE O1 (CONSTANT 3))
             (CALL ERROR 2)
(LABEL 11)   (MOVE O5 -7 Q)
             (MOVEM O5 -1 Q)
             (MOVE O2 (CONSTANT 5))
             (MOVE O1 O5)
             (CALL TYPEP 2)
             (JUMPE O1 14)
             (MOVE O5 (CONSTANT 6))
             (MOVEM O5 -3 Q)
             (JRST 13)
(LABEL 14)   (MOVE O2 (CONSTANT 7))
             (MOVE O1 -1 Q)
             (CALL TYPEP 2)
             (JUMPE O1 15)
             (MOVE O5 (CONSTANT 6))
             (MOVEM O5 -3 Q)
             (JRST 13)
(LABEL 15)   (MOVE O2 (CONSTANT 8))
             (MOVE O1 -1 Q)
             (CALL TYPEP 2)
             (JUMPE O1 16)
             (MOVE O5 (CONSTANT 9))
             (MOVEM O5 -3 Q)
             (JRST 13)
(LABEL 16)   (MOVE O2 (CONSTANT 10))
             (MOVE O1 -1 Q)
             (CALL TYPEP 2)
             (JUMPE O1 17)
             (MOVE O5 (CONSTANT 9))
             (MOVEM O5 -3 Q)
             (JRST 13)
(LABEL 17)   (MOVEM NIL -3 Q)
(LABEL 13)   (MOVE O1 -3 Q)
             (CALL 1- 1)
             (MOVE O2 O1)
             (MOVE O1 (CONSTANT 11))
             (CALL ASH 2)
             (MOVEM O1 -1 Q)
             (MOVE O2 -6 Q)
             (CALL RANDOM 2)
             (MOVEM O1 -1 Q)
             (MOVE O1 -3 Q)
             (CALL 1- 1)
             (MOVE O2 O1)
             (MOVE O1 (CONSTANT 11))
             (CALL ASH 2)
             (MOVE O2 O1)
             (MOVE O1 -1 Q)
             (CALL / 2)
             (MOVE O2 O1)
             (MOVE O1 -7 Q)
             (CALL * 2)
             (JRST 4)
(LABEL 9)    (MOVE O2 (CONSTANT 12))
             (MOVE O1 -5 Q)
             (CALL TYPEP 2)
             (JUMPE O1 19)
             (MOVE O2 (CONSTANT 2))
             (MOVE O1 -7 Q)
             (CALL > 2)
             (JUMPN O1 21)
             (MOVE O2 -7 Q)
             (MOVE O1 (CONSTANT 3))
             (CALL ERROR 2)
(LABEL 21)   (MOVE O1 -6 Q)
             (CALL LISP::RAND3 1)
             (MOVEM O1 -3 Q)
             (MOVE O1 (CONSTANT 13))
             (CALL - 1)
             (MOVE O2 O1)
             (MOVE O1 -7 Q)
             (CALL ASH 2)
             (MOVEM O1 -2 Q)
(LABEL 27)   (MOVE O1 -2 Q)
             (CALL ZEROP 1)
             (JUMPE O1 28)
             (MOVE O2 -7 Q)
             (MOVE O1 -3 Q)
             (CALL MOD 2)
             (JRST 23)
(LABEL 28)   (MOVE O2 (CONSTANT 13))
             (MOVE O1 -3 Q)
             (CALL ASH 2)
             (MOVEM O1 -1 Q)
             (MOVE O1 -6 Q)
             (CALL LISP::RAND3 1)
             (MOVE O2 O1)
             (MOVE O1 -1 Q)
             (CALL + 2)
             (MOVEM O1 -1 Q)
             (MOVE O1 (CONSTANT 13))
             (CALL - 1)
             (MOVE O2 O1)
             (MOVE O1 -2 Q)
             (CALL ASH 2)
             (MOVEM O1 0 Q)
             (MOVE O1 -1 Q)
             (MOVEM O1 -3 Q)
             (MOVE O1 0 Q)
             (MOVEM O1 -2 Q)
             (JRST 27)
(LABEL 23)   (JRST 4)
(LABEL 19)   (SKIPA)
             (JRST 30)
             (MOVE O2 -7 Q)
             (MOVE O1 (CONSTANT 14))
             (CALL ERROR 2)
(LABEL 30)
(LABEL 4)    (SUBI Q 8)
             (POPJ P)
)

(%PUT (QUOTE RANDOM) (QUOTE %ARGS-DOCUMENTATION) (QUOTE (ARG &OPTIONAL (STATE *RANDOM-STATE*)))) 
(%PUT (QUOTE RANDOM) (QUOTE %SOURCE-DOCUMENTATION) (CONS (QUOTE "CARMEN::SS:<CLISP.UPSALA>RAND.CLISP.5") (GET (QUOTE RANDOM) (QUOTE %SOURCE-DOCUMENTATION))))