1#!/usr/bin/env swipl
    2%; WAM-CL translated Lisp File (see https://github.com/logicmoo/wam_common_lisp/tree/master/prolog/wam_cl )
    3%; File: "lib/lsp/defmacro" (/home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp)
    4%; PWD: /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/
    5%; Start time: Sun Jan 28 04:12:09 2018
    6
    7:-style_check(-discontiguous).    8:-style_check(-singleton).    9:-use_module(library(wamcl_runtime)).   10
   11/*
   12;;;  Copyright (c) 1984, Taiichi Yuasa and Masami Hagiya.
   13*/
   14/*
   15;;;  Copyright (c) 1990, Giuseppe Attardi.
   16*/
   17/*
   18;;;
   19*/
   20/*
   21;;;    This program is free software; you can redistribute it and/or
   22*/
   23/*
   24;;;    modify it under the terms of the GNU Library General Public
   25*/
   26/*
   27;;;    License as published by the Free Software Foundation; either
   28*/
   29/*
   30;;;    version 2 of the License, or (at your option) any later version.
   31*/
   32/*
   33;;;
   34*/
   35/*
   36;;;    See file '../Copyright' for full details.
   37*/
   38/*
   39;;;         defines SYS:DEFMACRO*, the defmacro preprocessor
   40*/
   41/*
   42(in-package "SYSTEM")
   43
   44*/
   45
   46/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:505 **********************/
   47:-lisp_compile_to_prolog(pkg_user,['in-package','#:system'])
   48/*
   49% macroexpand:-[in_package,system1].
   50*/
   51/*
   52% into:-[eval_when,[kw_compile_toplevel,kw_load_toplevel,kw_execute],[sys_select_package,'$ARRAY'([*],claz_base_character,"SYSTEM")]].
   53*/
   54:- do_when([kw_compile_toplevel, kw_load_toplevel, kw_execute],
   55	   f_sys_select_package('$ARRAY'([*], claz_base_character, "SYSTEM"),
   56				_Ignored),
   57	   _Ignored).
   58/*
   59(eval-when (compile) (proclaim '(optimize (safety 2) (space 3))))
   60
   61;;; valid lambda-list to DEFMACRO is:
   62;;;
   63;;;	( [ &whole sym ]
   64;;;	  [ &environment sym ]
   65;;;	  { v }*
   66;;;	  [ &optional { sym | ( v [ init [ v ] ] ) }* ]
   67;;;	  {  [ { &rest | &body } v ]
   68;;;	     [ &key { sym | ( { sym | ( key v ) } [ init [ v ]] ) }*
   69;;;		    [ &allow-other-keys ]]
   70;;;	     [ &aux { sym | ( v [ init ] ) }* ]
   71;;;	  |  . sym }
   72;;;	 )
   73;;;
   74;;; where v is short for { defmacro-lambda-list | sym }.
   75;;; A symbol may be accepted as a DEFMACRO lambda-list, in which case
   76;;; (DEFMACRO <name> <symbol> ... ) is equivalent to
   77;;; (DEFMACRO <name> (&REST <symbol>) ...).
   78;;; Defamcro-lambda-list is defined as:
   79;;;
   80;;;	( { v }*
   81;;;	  [ &optional { sym | ( v [ init [ v ] ] ) }* ]
   82;;;	  {  [ { &rest | &body } v ]
   83;;;	     [ &key { sym | ( { sym | ( key v ) } [ init [ v ]] ) }*
   84;;;		    [ &allow-other-keys ]]
   85;;;	     [ &aux { sym | ( v [ init ] ) }* ]
   86;;;	  |  . sym }
   87;;;	 )
   88
   89*/
   90
   91/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:529 **********************/
   92:-lisp_compile_to_prolog(pkg_sys,['eval-when',[compile],[proclaim,[quote,[optimize,[safety,2],[space,3]]]]])
   93:- dbginfo(skipping(
   94		    [ eval_when,
   95		      [compile],
   96		      [proclaim, [quote, [optimize, [safety, 2], [space, 3]]]]
   97		    ])).
   98/*
   99;; valid lambda-list to DEFMACRO is:
  100*/
  101/*
  102;;
  103*/
  104/*
  105;;	( [ &whole sym ]
  106*/
  107/*
  108;;	  [ &environment sym ]
  109*/
  110/*
  111;;	  { v }*
  112*/
  113/*
  114;;	  [ &optional { sym | ( v [ init [ v ] ] ) }* ]
  115*/
  116/*
  117;;	  {  [ { &rest | &body } v ]
  118*/
  119/*
  120;;	     [ &key { sym | ( { sym | ( key v ) } [ init [ v ]] ) }*
  121*/
  122/*
  123;;		    [ &allow-other-keys ]]
  124*/
  125/*
  126;;	     [ &aux { sym | ( v [ init ] ) }* ]
  127*/
  128/*
  129;;	  |  . sym }
  130*/
  131/*
  132;;	 )
  133*/
  134/*
  135;;
  136*/
  137/*
  138;; where v is short for { defmacro-lambda-list | sym }.
  139*/
  140/*
  141;; A symbol may be accepted as a DEFMACRO lambda-list, in which case
  142*/
  143/*
  144;; (DEFMACRO <name> <symbol> ... ) is equivalent to
  145*/
  146/*
  147;; (DEFMACRO <name> (&REST <symbol>) ...).
  148*/
  149/*
  150;; Defamcro-lambda-list is defined as:
  151*/
  152/*
  153;;
  154*/
  155/*
  156;;	( { v }*
  157*/
  158/*
  159;;	  [ &optional { sym | ( v [ init [ v ] ] ) }* ]
  160*/
  161/*
  162;;	  {  [ { &rest | &body } v ]
  163*/
  164/*
  165;;	     [ &key { sym | ( { sym | ( key v ) } [ init [ v ]] ) }*
  166*/
  167/*
  168;;		    [ &allow-other-keys ]]
  169*/
  170/*
  171;;	     [ &aux { sym | ( v [ init ] ) }* ]
  172*/
  173/*
  174;;	  |  . sym }
  175*/
  176/*
  177;;	 )
  178*/
  179/*
  180(defvar *dl*)
  181*/
  182
  183/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:1485 **********************/
  184:-lisp_compile_to_prolog(pkg_sys,[defvar,'*dl*'])
  185:- sf_defvar(Sf_defvar_Param, sys_xx_dl_xx, _Ignored).
  186/*
  187(defvar *key-check*)
  188*/
  189
  190/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:1499 **********************/
  191:-lisp_compile_to_prolog(pkg_sys,[defvar,'*key-check*'])
  192:- sf_defvar(Sf_defvar_Param, sys_xx_key_check_xx, _Ignored).
  193/*
  194(defvar *arg-check*)
  195
  196*/
  197
  198/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:1520 **********************/
  199:-lisp_compile_to_prolog(pkg_sys,[defvar,'*arg-check*'])
  200:- sf_defvar(Sf_defvar_Param, sys_xx_arg_check_xx, _Ignored).
  201/*
  202(defmacro defmacro (name vl &rest body)
  203  `(multiple-value-bind (expr doc pprint)
  204    (sys::expand-defmacro ',name ',vl ',body)
  205    (sys:define-macro ',name expr doc pprint)))
  206
  207*/
  208
  209/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:1542 **********************/
  210:-lisp_compile_to_prolog(pkg_sys,[defmacro,defmacro,[name,vl,'&rest',body],['#BQ',['multiple-value-bind',[expr,doc,pprint],['sys::expand-defmacro',[quote,['#COMMA',name]],[quote,['#COMMA',vl]],[quote,['#COMMA',body]]],['sys:define-macro',[quote,['#COMMA',name]],expr,doc,pprint]]]])
  211/*
  212:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  213					       defmacro,
  214					       kw_macro,
  215					       mf_defmacro)).
  216*/
  217wl:lambda_def(defmacro, defmacro, mf_defmacro, [sys_name, sys_vl, c38_rest, sys_body], [['#BQ', [multiple_value_bind, [sys_expr, sys_doc, pprint], [sys_expand_defmacro, [quote, ['#COMMA', sys_name]], [quote, ['#COMMA', sys_vl]], [quote, ['#COMMA', sys_body]]], [sys_define_macro, [quote, ['#COMMA', sys_name]], sys_expr, sys_doc, pprint]]]]).
  218wl:arglist_info(defmacro, mf_defmacro, [sys_name, sys_vl, c38_rest, sys_body], arginfo{all:[sys_name, sys_vl], allow_other_keys:0, aux:0, body:0, complex:[rest], env:0, key:0, names:[sys_name, sys_vl, sys_body], opt:0, req:[sys_name, sys_vl], rest:[sys_body], sublists:0, whole:0}).
  219wl: init_args(2, mf_defmacro).
  220
  221/*
  222
  223### Compiled Macro Operator: `CL:DEFMACRO` 
  224*/
  225sf_defmacro(MacroEnv, Name_In, Vl_In, RestNKeys, FResult) :-
  226	mf_defmacro([defmacro, Name_In, Vl_In|RestNKeys], MacroEnv, MFResult),
  227	f_sys_env_eval(MacroEnv, MFResult, FResult).
  228/*
  229
  230### Compiled Macro Function: `CL:DEFMACRO` 
  231*/
  232mf_defmacro([defmacro, Name_In, Vl_In|RestNKeys], MacroEnv, MFResult) :-
  233	nop(defmacro),
  234	GEnv=[bv(sys_name, Name_In), bv(sys_vl, Vl_In), bv(sys_body, RestNKeys)],
  235	catch(( ( ( get_var(GEnv, sys_body, Body_Get),
  236		    get_var(GEnv, sys_name, Name_Get)
  237		  ),
  238		  get_var(GEnv, sys_name, Name_Get10),
  239		  get_var(GEnv, sys_vl, Vl_Get)
  240		),
  241		[multiple_value_bind, [sys_expr, sys_doc, pprint], [sys_expand_defmacro, [quote, Name_Get], [quote, Vl_Get], [quote, Body_Get]], [sys_define_macro, [quote, Name_Get10], sys_expr, sys_doc, pprint]]=MFResult
  242	      ),
  243	      block_exit(defmacro, MFResult),
  244	      true).
  245:- set_opv(mf_defmacro, type_of, sys_macro),
  246   set_opv(defmacro, symbol_function, mf_defmacro),
  247   DefMacroResult=defmacro.  248/*
  249:- side_effect(assert_lsp(defmacro,
  250			  lambda_def(defmacro,
  251				     defmacro,
  252				     mf_defmacro,
  253				     [sys_name, sys_vl, c38_rest, sys_body],
  254				     
  255				     [ 
  256				       [ '#BQ',
  257					 
  258					 [ multiple_value_bind,
  259					   [sys_expr, sys_doc, pprint],
  260					   
  261					   [ sys_expand_defmacro,
  262					     [quote, ['#COMMA', sys_name]],
  263					     [quote, ['#COMMA', sys_vl]],
  264					     [quote, ['#COMMA', sys_body]]
  265					   ],
  266					   
  267					   [ sys_define_macro,
  268					     [quote, ['#COMMA', sys_name]],
  269					     sys_expr,
  270					     sys_doc,
  271					     pprint
  272					   ]
  273					 ]
  274				       ]
  275				     ]))).
  276*/
  277/*
  278:- side_effect(assert_lsp(defmacro,
  279			  arglist_info(defmacro,
  280				       mf_defmacro,
  281				       [sys_name, sys_vl, c38_rest, sys_body],
  282				       arginfo{ all:[sys_name, sys_vl],
  283						allow_other_keys:0,
  284						aux:0,
  285						body:0,
  286						complex:[rest],
  287						env:0,
  288						key:0,
  289						names:
  290						      [ sys_name,
  291							sys_vl,
  292							sys_body
  293						      ],
  294						opt:0,
  295						req:[sys_name, sys_vl],
  296						rest:[sys_body],
  297						sublists:0,
  298						whole:0
  299					      }))).
  300*/
  301/*
  302:- side_effect(assert_lsp(defmacro, init_args(2, mf_defmacro))).
  303*/
  304/*
  305(defun sys::expand-defmacro (name vl body
  306				 &aux *dl* (*key-check* nil)
  307				 (*arg-check* nil)
  308				 doc decls whole ppn (env nil) (envp nil))
  309  (labels ((dm-vl (vl whole top)
  310	     (do ((optionalp) (restp) (keyp)
  311		  (allow-other-keys-p) (auxp)
  312		  (rest) (allow-other-keys) (keys) (no-check)
  313		  (n (if top 1 0)) (ppn 0) (v)
  314		  )
  315		 ((not (consp vl))
  316		  (when vl
  317		    (when restp (dm-bad-key '&rest))
  318		    (push (list vl (dm-nth-cdr n whole)) *dl*)
  319		    (setq no-check t))
  320		  (when (and rest (not allow-other-keys))
  321		    (push (cons rest keys) *key-check*))
  322		  (unless no-check (push (cons whole n) *arg-check*))
  323		  ppn
  324		  )
  325	       (declare (fixnum n ppn))
  326	       (setq v (car vl))
  327	       (cond
  328		 ((eq v '&optional)
  329		  (when optionalp (dm-bad-key '&optional))
  330		  (setq optionalp t)
  331		  (pop vl))
  332		 ((or (eq v '&rest) (eq v '&body))
  333		  (when restp (dm-bad-key v))
  334		  (dm-v (second vl) (dm-nth-cdr n whole))
  335		  (setq restp t optionalp t no-check t)
  336		  (setq vl (cddr vl))
  337		  (when (eq v '&body)
  338		    (setq ppn (if top (the fixnum (1- n)) n))))
  339		 ((eq v '&key)
  340		  (when keyp (dm-bad-key '&key))
  341		  (setq rest (gensym))
  342		  (push (list rest (dm-nth-cdr n whole)) *dl*)
  343		  (setq keyp t restp t optionalp t no-check t)
  344		  (pop vl))
  345		 ((eq v '&allow-other-keys)
  346		  (when (or (not keyp) allow-other-keys-p)
  347		    (dm-bad-key '&allow-other-keys))
  348		  (setq allow-other-keys-p t)
  349		  (setq allow-other-keys t)
  350		  (pop vl))
  351		 ((eq v '&aux)
  352		  (when auxp (dm-bad-key '&aux))
  353		  (setq auxp t allow-other-keys-p t keyp t restp t optionalp t)
  354		  (pop vl))
  355		 (auxp
  356		  (let (x (init nil))
  357		    (cond ((symbolp v) (setq x v))
  358			  (t (setq x (car v))
  359			     (unless (endp (cdr v)) (setq init (second v)))))
  360		    (dm-v x init))
  361		  (pop vl))
  362		 (keyp
  363		  (let ((temp (gensym)) x k (init nil) (sv nil))
  364		    (cond ((symbolp v) (setq x v
  365					     k (intern (string v) 'keyword)))
  366			  (t (if (symbolp (car v))
  367				 (setq x (car v)
  368				       k (intern (string (car v)) 'keyword))
  369				 (setq x (cadar v) k (caar v)))
  370			     (unless (endp (cdr v))
  371			       (setq init (second v))
  372			       (unless (endp (cddr v))
  373				 (setq sv (caddr v))))))
  374		    (dm-v temp `(getf ,rest ,k 'failed))
  375		    (dm-v x `(if (eq ,temp 'failed) ,init ,temp))
  376		    (when sv (dm-v sv `(not (eq ,temp 'failed))))
  377		    (push k keys))
  378		  (pop vl))
  379		 (optionalp
  380		  (let (x (init nil) (sv nil))
  381		    (cond ((symbolp v) (setq x v))
  382			  (t (setq x (car v))
  383			     (unless (endp (cdr v))
  384			       (setq init (second v))
  385			       (unless (endp (cddr v))
  386				 (setq sv (caddr v))))))
  387		    (dm-v x `(if ,(dm-nth-cdr n whole) ,(dm-nth n whole) ,init))
  388		    (when sv (dm-v sv `(not (null ,(dm-nth-cdr n whole))))))
  389		  (incf n)
  390		  (pop vl)
  391		  )
  392		 (t (dm-v v `(if ,(dm-nth-cdr n whole)
  393			      ,(dm-nth n whole)
  394			      (dm-too-few-arguments)))
  395		    (incf n)
  396		    (pop vl))
  397		 )))
  398	   (dm-v (v init)
  399	     (if (symbolp v)
  400		 (push (if init (list v init) v) *dl*)
  401		 (let ((temp (gensym)))
  402		   (push (if init (list temp init) temp) *dl*)
  403		   (dm-vl v temp nil))))
  404
  405	   (dm-nth (n v)
  406	     (multiple-value-bind (q r) (floor n 4)
  407	       (declare (fixnum q r))
  408	       (dotimes (i q) (setq v (list 'CDDDDR v)))
  409	       (case r
  410		 (0 (list 'CAR v))
  411		 (1 (list 'CADR v))
  412		 (2 (list 'CADDR v))
  413		 (3 (list 'CADDDR v))
  414		 )))
  415
  416	   (dm-nth-cdr (n v)
  417	     (multiple-value-bind (q r) (floor n 4)
  418	       (declare (fixnum q r))
  419	       (dotimes (i q) (setq v (list 'CDDDDR v)))
  420	       (case r
  421		 (0 v)
  422		 (1 (list 'CDR v))
  423		 (2 (list 'CDDR v))
  424		 (3 (list 'CDDDR v))
  425		 )))
  426	   )
  427  (cond ((listp vl))
  428        ((symbolp vl) (setq vl (list '&rest vl)))
  429        (t (error "The defmacro-lambda-list fmt90_x1 is not a list." vl)))
  430  (multiple-value-setq (doc decls body) (find-doc body nil))
  431  (if (and (listp vl) (eq (car vl) '&whole))
  432      (setq whole (second vl)
  433	    vl (cddr vl))
  434      (setq whole (gensym)))
  435  (if (setq env (member '&environment vl :test #'eq))
  436      (setq vl (nconc (ldiff vl env) (cddr env))
  437	    env (second env))
  438      (progn
  439	(setq env (gensym))
  440	(push `(DECLARE (ignore ,env)) decls)))
  441  (setq *dl* `(&aux ,env ,whole))
  442  (setq ppn (dm-vl vl whole t))
  443  (dolist (kc *key-check*)
  444          (push `(unless (getf ,(car kc) :allow-other-keys)
  445                         (do ((vl ,(car kc) (cddr vl)))
  446                             ((endp vl))
  447                             (unless (member (car vl) ',(cdr kc))
  448                                     (dm-key-not-allowed (car vl))
  449                                     )))
  450                body))
  451  (dolist (ac *arg-check*)
  452          (push `(unless (endp ,(dm-nth-cdr (cdr ac) (car ac)))
  453                         (dm-too-many-arguments)) body))
  454  (values `(LAMBDA-BLOCK ,name ,(nreverse *dl*) ,@(nconc decls body))
  455      doc ppn))
  456  )
  457
  458*/
  459
  460/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:1719 **********************/
  461:-lisp_compile_to_prolog(pkg_sys,[defun,'sys::expand-defmacro',[name,vl,body,'&aux','*dl*',['*key-check*',[]],['*arg-check*',[]],doc,decls,whole,ppn,[env,[]],[envp,[]]],[labels,[['dm-vl',[vl,whole,top],[do,[[optionalp],[restp],[keyp],['allow-other-keys-p'],[auxp],[rest],['allow-other-keys'],[keys],['no-check'],[n,[if,top,1,0]],[ppn,0],[v]],[[not,[consp,vl]],[when,vl,[when,restp,['dm-bad-key',[quote,'&rest']]],[push,[list,vl,['dm-nth-cdr',n,whole]],'*dl*'],[setq,'no-check',t]],[when,[and,rest,[not,'allow-other-keys']],[push,[cons,rest,keys],'*key-check*']],[unless,'no-check',[push,[cons,whole,n],'*arg-check*']],ppn],[declare,[fixnum,n,ppn]],[setq,v,[car,vl]],[cond,[[eq,v,[quote,'&optional']],[when,optionalp,['dm-bad-key',[quote,'&optional']]],[setq,optionalp,t],[pop,vl]],[[or,[eq,v,[quote,'&rest']],[eq,v,[quote,'&body']]],[when,restp,['dm-bad-key',v]],['dm-v',[second,vl],['dm-nth-cdr',n,whole]],[setq,restp,t,optionalp,t,'no-check',t],[setq,vl,[cddr,vl]],[when,[eq,v,[quote,'&body']],[setq,ppn,[if,top,[the,fixnum,['1-',n]],n]]]],[[eq,v,[quote,'&key']],[when,keyp,['dm-bad-key',[quote,'&key']]],[setq,rest,[gensym]],[push,[list,rest,['dm-nth-cdr',n,whole]],'*dl*'],[setq,keyp,t,restp,t,optionalp,t,'no-check',t],[pop,vl]],[[eq,v,[quote,'&allow-other-keys']],[when,[or,[not,keyp],'allow-other-keys-p'],['dm-bad-key',[quote,'&allow-other-keys']]],[setq,'allow-other-keys-p',t],[setq,'allow-other-keys',t],[pop,vl]],[[eq,v,[quote,'&aux']],[when,auxp,['dm-bad-key',[quote,'&aux']]],[setq,auxp,t,'allow-other-keys-p',t,keyp,t,restp,t,optionalp,t],[pop,vl]],[auxp,[let,[x,[init,[]]],[cond,[[symbolp,v],[setq,x,v]],[t,[setq,x,[car,v]],[unless,[endp,[cdr,v]],[setq,init,[second,v]]]]],['dm-v',x,init]],[pop,vl]],[keyp,[let,[[temp,[gensym]],x,k,[init,[]],[sv,[]]],[cond,[[symbolp,v],[setq,x,v,k,[intern,[string,v],[quote,keyword]]]],[t,[if,[symbolp,[car,v]],[setq,x,[car,v],k,[intern,[string,[car,v]],[quote,keyword]]],[setq,x,[cadar,v],k,[caar,v]]],[unless,[endp,[cdr,v]],[setq,init,[second,v]],[unless,[endp,[cddr,v]],[setq,sv,[caddr,v]]]]]],['dm-v',temp,['#BQ',[getf,['#COMMA',rest],['#COMMA',k],[quote,failed]]]],['dm-v',x,['#BQ',[if,[eq,['#COMMA',temp],[quote,failed]],['#COMMA',init],['#COMMA',temp]]]],[when,sv,['dm-v',sv,['#BQ',[not,[eq,['#COMMA',temp],[quote,failed]]]]]],[push,k,keys]],[pop,vl]],[optionalp,[let,[x,[init,[]],[sv,[]]],[cond,[[symbolp,v],[setq,x,v]],[t,[setq,x,[car,v]],[unless,[endp,[cdr,v]],[setq,init,[second,v]],[unless,[endp,[cddr,v]],[setq,sv,[caddr,v]]]]]],['dm-v',x,['#BQ',[if,['#COMMA',['dm-nth-cdr',n,whole]],['#COMMA',['dm-nth',n,whole]],['#COMMA',init]]]],[when,sv,['dm-v',sv,['#BQ',[not,[null,['#COMMA',['dm-nth-cdr',n,whole]]]]]]]],[incf,n],[pop,vl]],[t,['dm-v',v,['#BQ',[if,['#COMMA',['dm-nth-cdr',n,whole]],['#COMMA',['dm-nth',n,whole]],['dm-too-few-arguments']]]],[incf,n],[pop,vl]]]]],['dm-v',[v,init],[if,[symbolp,v],[push,[if,init,[list,v,init],v],'*dl*'],[let,[[temp,[gensym]]],[push,[if,init,[list,temp,init],temp],'*dl*'],['dm-vl',v,temp,[]]]]],['dm-nth',[n,v],['multiple-value-bind',[q,r],[floor,n,4],[declare,[fixnum,q,r]],[dotimes,[i,q],[setq,v,[list,[quote,'CDDDDR'],v]]],[case,r,[0,[list,[quote,'CAR'],v]],[1,[list,[quote,'CADR'],v]],[2,[list,[quote,'CADDR'],v]],[3,[list,[quote,'CADDDR'],v]]]]],['dm-nth-cdr',[n,v],['multiple-value-bind',[q,r],[floor,n,4],[declare,[fixnum,q,r]],[dotimes,[i,q],[setq,v,[list,[quote,'CDDDDR'],v]]],[case,r,[0,v],[1,[list,[quote,'CDR'],v]],[2,[list,[quote,'CDDR'],v]],[3,[list,[quote,'CDDDR'],v]]]]]],[cond,[[listp,vl]],[[symbolp,vl],[setq,vl,[list,[quote,'&rest'],vl]]],[t,[error,'$STRING'("The defmacro-lambda-list ~s is not a list."),vl]]],['multiple-value-setq',[doc,decls,body],['find-doc',body,[]]],[if,[and,[listp,vl],[eq,[car,vl],[quote,'&whole']]],[setq,whole,[second,vl],vl,[cddr,vl]],[setq,whole,[gensym]]],[if,[setq,env,[member,[quote,'&environment'],vl,':test',function(eq)]],[setq,vl,[nconc,[ldiff,vl,env],[cddr,env]],env,[second,env]],[progn,[setq,env,[gensym]],[push,['#BQ',['DECLARE',[ignore,['#COMMA',env]]]],decls]]],[setq,'*dl*',['#BQ',['&aux',['#COMMA',env],['#COMMA',whole]]]],[setq,ppn,['dm-vl',vl,whole,t]],[dolist,[kc,'*key-check*'],[push,['#BQ',[unless,[getf,['#COMMA',[car,kc]],':allow-other-keys'],[do,[[vl,['#COMMA',[car,kc]],[cddr,vl]]],[[endp,vl]],[unless,[member,[car,vl],[quote,['#COMMA',[cdr,kc]]]],['dm-key-not-allowed',[car,vl]]]]]],body]],[dolist,[ac,'*arg-check*'],[push,['#BQ',[unless,[endp,['#COMMA',['dm-nth-cdr',[cdr,ac],[car,ac]]]],['dm-too-many-arguments']]],body]],[values,['#BQ',['LAMBDA-BLOCK',['#COMMA',name],['#COMMA',[nreverse,'*dl*']],['#BQ-COMMA-ELIPSE',[nconc,decls,body]]]],doc,ppn]]])
  462/*
  463:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  464					       sys_expand_defmacro,
  465					       kw_function,
  466					       f_sys_expand_defmacro)).
  467*/
  468/*
  469:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  470					       sys_dm_vl,
  471					       kw_function,
  472					       f_sys_dm_vl)).
  473*/
  474/*
  475:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  476					       sys_dm_bad_key,
  477					       kw_function,
  478					       f_sys_dm_bad_key)).
  479*/
  480/*
  481:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  482					       sys_dm_bad_key,
  483					       kw_function,
  484					       f_sys_dm_bad_key)).
  485*/
  486/*
  487:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  488					       sys_dm_bad_key,
  489					       kw_function,
  490					       f_sys_dm_bad_key)).
  491*/
  492/*
  493:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  494					       sys_dm_nth_cdr,
  495					       kw_function,
  496					       f_sys_dm_nth_cdr)).
  497*/
  498/*
  499:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  500					       sys_dm_v,
  501					       kw_function,
  502					       f_sys_dm_v)).
  503*/
  504/*
  505:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  506					       sys_dm_bad_key,
  507					       kw_function,
  508					       f_sys_dm_bad_key)).
  509*/
  510/*
  511:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  512					       sys_dm_bad_key,
  513					       kw_function,
  514					       f_sys_dm_bad_key)).
  515*/
  516/*
  517:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  518					       sys_dm_bad_key,
  519					       kw_function,
  520					       f_sys_dm_bad_key)).
  521*/
  522/*
  523:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  524					       sys_dm_v,
  525					       kw_function,
  526					       f_sys_dm_v)).
  527*/
  528/*
  529:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  530					       sys_dm_v,
  531					       kw_function,
  532					       f_sys_dm_v)).
  533*/
  534/*
  535:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  536					       sys_dm_v,
  537					       kw_function,
  538					       f_sys_dm_v)).
  539*/
  540/*
  541:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  542					       sys_dm_v,
  543					       kw_function,
  544					       f_sys_dm_v)).
  545*/
  546/*
  547:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  548					       sys_dm_nth_cdr,
  549					       kw_function,
  550					       f_sys_dm_nth_cdr)).
  551*/
  552/*
  553:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  554					       sys_dm_nth,
  555					       kw_function,
  556					       f_sys_dm_nth)).
  557*/
  558/*
  559:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  560					       sys_dm_v,
  561					       kw_function,
  562					       f_sys_dm_v)).
  563*/
  564/*
  565:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  566					       sys_dm_nth_cdr,
  567					       kw_function,
  568					       f_sys_dm_nth_cdr)).
  569*/
  570/*
  571:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  572					       sys_dm_v,
  573					       kw_function,
  574					       f_sys_dm_v)).
  575*/
  576/*
  577:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  578					       sys_dm_nth_cdr,
  579					       kw_function,
  580					       f_sys_dm_nth_cdr)).
  581*/
  582/*
  583:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  584					       sys_dm_nth,
  585					       kw_function,
  586					       f_sys_dm_nth)).
  587*/
  588/*
  589:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  590					       sys_dm_v,
  591					       kw_function,
  592					       f_sys_dm_v)).
  593*/
  594/*
  595:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  596					       sys_dm_bad_key,
  597					       kw_function,
  598					       f_sys_dm_bad_key)).
  599*/
  600/*
  601:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  602					       sys_dm_bad_key,
  603					       kw_function,
  604					       f_sys_dm_bad_key)).
  605*/
  606/*
  607:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  608					       sys_dm_bad_key,
  609					       kw_function,
  610					       f_sys_dm_bad_key)).
  611*/
  612/*
  613:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  614					       sys_dm_nth_cdr,
  615					       kw_function,
  616					       f_sys_dm_nth_cdr)).
  617*/
  618/*
  619:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  620					       sys_dm_v,
  621					       kw_function,
  622					       f_sys_dm_v)).
  623*/
  624/*
  625:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  626					       sys_dm_bad_key,
  627					       kw_function,
  628					       f_sys_dm_bad_key)).
  629*/
  630/*
  631:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  632					       sys_dm_bad_key,
  633					       kw_function,
  634					       f_sys_dm_bad_key)).
  635*/
  636/*
  637:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  638					       sys_dm_bad_key,
  639					       kw_function,
  640					       f_sys_dm_bad_key)).
  641*/
  642/*
  643:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  644					       sys_dm_v,
  645					       kw_function,
  646					       f_sys_dm_v)).
  647*/
  648/*
  649:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  650					       sys_dm_v,
  651					       kw_function,
  652					       f_sys_dm_v)).
  653*/
  654/*
  655:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  656					       sys_dm_v,
  657					       kw_function,
  658					       f_sys_dm_v)).
  659*/
  660/*
  661:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  662					       sys_dm_v,
  663					       kw_function,
  664					       f_sys_dm_v)).
  665*/
  666/*
  667:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  668					       sys_dm_nth_cdr,
  669					       kw_function,
  670					       f_sys_dm_nth_cdr)).
  671*/
  672/*
  673:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  674					       sys_dm_nth,
  675					       kw_function,
  676					       f_sys_dm_nth)).
  677*/
  678/*
  679:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  680					       sys_dm_v,
  681					       kw_function,
  682					       f_sys_dm_v)).
  683*/
  684/*
  685:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  686					       sys_dm_nth_cdr,
  687					       kw_function,
  688					       f_sys_dm_nth_cdr)).
  689*/
  690/*
  691:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  692					       sys_dm_v,
  693					       kw_function,
  694					       f_sys_dm_v)).
  695*/
  696/*
  697:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  698					       sys_dm_nth_cdr,
  699					       kw_function,
  700					       f_sys_dm_nth_cdr)).
  701*/
  702/*
  703:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  704					       sys_dm_nth,
  705					       kw_function,
  706					       f_sys_dm_nth)).
  707*/
  708/*
  709:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  710					       sys_dm_v,
  711					       kw_function,
  712					       f_sys_dm_v)).
  713*/
  714/*
  715:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  716					       sys_dm_v,
  717					       kw_function,
  718					       f_sys_dm_v)).
  719*/
  720/*
  721:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  722					       sys_dm_vl,
  723					       kw_function,
  724					       f_sys_dm_vl)).
  725*/
  726/*
  727:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  728					       sys_dm_nth,
  729					       kw_function,
  730					       f_sys_dm_nth)).
  731*/
  732/*
  733% case:-[[0,[list,[quote,car],sys_v]],[1,[list,[quote,cadr],sys_v]],[2,[list,[quote,caddr],sys_v]],[3,[list,[quote,cadddr],sys_v]]].
  734*/
  735/*
  736% conds:-[[[eq,_203826,[quote,0]],[progn,[list,[quote,car],sys_v]]],[[eq,_203826,[quote,1]],[progn,[list,[quote,cadr],sys_v]]],[[eq,_203826,[quote,2]],[progn,[list,[quote,caddr],sys_v]]],[[eq,_203826,[quote,3]],[progn,[list,[quote,cadddr],sys_v]]]].
  737*/
  738/*
  739:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
  740					       sys_dm_nth_cdr,
  741					       kw_function,
  742					       f_sys_dm_nth_cdr)).
  743*/
  744/*
  745% case:-[[0,sys_v],[1,[list,[quote,cdr],sys_v]],[2,[list,[quote,cddr],sys_v]],[3,[list,[quote,cdddr],sys_v]]].
  746*/
  747/*
  748% conds:-[[[eq,_208472,[quote,0]],[progn,sys_v]],[[eq,_208472,[quote,1]],[progn,[list,[quote,cdr],sys_v]]],[[eq,_208472,[quote,2]],[progn,[list,[quote,cddr],sys_v]]],[[eq,_208472,[quote,3]],[progn,[list,[quote,cdddr],sys_v]]]].
  749*/
  750/*
  751:- side_effect(generate_function_or_macro_name(
  752					       [ fbound(sys_dm_nth_cdr, kw_function)=function(f_sys_dm_nth_cdr1),
  753						 fbound(sys_dm_nth, kw_function)=function(f_sys_dm_nth1),
  754						 fbound(sys_dm_v, kw_function)=function(f_sys_dm_v1),
  755						 fbound(sys_dm_vl, kw_function)=function(f_sys_dm_vl1),
  756						 name='GLOBAL',
  757						 environ=env_1
  758					       ],
  759					       sys_find_doc,
  760					       kw_function,
  761					       f_sys_find_doc)).
  762*/
  763wl:lambda_def(defun, sys_expand_defmacro, f_sys_expand_defmacro, [sys_name, sys_vl, sys_body, c38_aux, sys_xx_dl_xx, [sys_xx_key_check_xx, []], [sys_xx_arg_check_xx, []], sys_doc, sys_decls, sys_whole, sys_ppn, [sys_env, []], [sys_envp, []]], [[labels, [[sys_dm_vl, [sys_vl, sys_whole, sys_top], [do, [[sys_optionalp], [sys_restp], [sys_keyp], [sys_allow_other_keys_p], [sys_auxp], [rest], [sys_allow_other_keys], [sys_keys], [sys_no_check], [sys_n, [if, sys_top, 1, 0]], [sys_ppn, 0], [sys_v]], [[not, [consp, sys_vl]], [when, sys_vl, [when, sys_restp, [sys_dm_bad_key, [quote, c38_rest]]], [push, [list, sys_vl, [sys_dm_nth_cdr, sys_n, sys_whole]], sys_xx_dl_xx], [setq, sys_no_check, t]], [when, [and, rest, [not, sys_allow_other_keys]], [push, [cons, rest, sys_keys], sys_xx_key_check_xx]], [unless, sys_no_check, [push, [cons, sys_whole, sys_n], sys_xx_arg_check_xx]], sys_ppn], [declare, [fixnum, sys_n, sys_ppn]], [setq, sys_v, [car, sys_vl]], [cond, [[eq, sys_v, [quote, c38_optional]], [when, sys_optionalp, [sys_dm_bad_key, [quote, c38_optional]]], [setq, sys_optionalp, t], [pop, sys_vl]], [[or, [eq, sys_v, [quote, c38_rest]], [eq, sys_v, [quote, c38_body]]], [when, sys_restp, [sys_dm_bad_key, sys_v]], [sys_dm_v, [second, sys_vl], [sys_dm_nth_cdr, sys_n, sys_whole]], [setq, sys_restp, t, sys_optionalp, t, sys_no_check, t], [setq, sys_vl, [cddr, sys_vl]], [when, [eq, sys_v, [quote, c38_body]], [setq, sys_ppn, [if, sys_top, [the, fixnum, ['1-', sys_n]], sys_n]]]], [[eq, sys_v, [quote, c38_key]], [when, sys_keyp, [sys_dm_bad_key, [quote, c38_key]]], [setq, rest, [gensym]], [push, [list, rest, [sys_dm_nth_cdr, sys_n, sys_whole]], sys_xx_dl_xx], [setq, sys_keyp, t, sys_restp, t, sys_optionalp, t, sys_no_check, t], [pop, sys_vl]], [[eq, sys_v, [quote, c38_allow_other_keys]], [when, [or, [not, sys_keyp], sys_allow_other_keys_p], [sys_dm_bad_key, [quote, c38_allow_other_keys]]], [setq, sys_allow_other_keys_p, t], [setq, sys_allow_other_keys, t], [pop, sys_vl]], [[eq, sys_v, [quote, c38_aux]], [when, sys_auxp, [sys_dm_bad_key, [quote, c38_aux]]], [setq, sys_auxp, t, sys_allow_other_keys_p, t, sys_keyp, t, sys_restp, t, sys_optionalp, t], [pop, sys_vl]], [sys_auxp, [let, [sys_x, [sys_init, []]], [cond, [[symbolp, sys_v], [setq, sys_x, sys_v]], [t, [setq, sys_x, [car, sys_v]], [unless, [endp, [cdr, sys_v]], [setq, sys_init, [second, sys_v]]]]], [sys_dm_v, sys_x, sys_init]], [pop, sys_vl]], [sys_keyp, [let, [[sys_temp, [gensym]], sys_x, sys_k, [sys_init, []], [sys_sv, []]], [cond, [[symbolp, sys_v], [setq, sys_x, sys_v, sys_k, [intern, [string, sys_v], [quote, keyword]]]], [t, [if, [symbolp, [car, sys_v]], [setq, sys_x, [car, sys_v], sys_k, [intern, [string, [car, sys_v]], [quote, keyword]]], [setq, sys_x, [cadar, sys_v], sys_k, [caar, sys_v]]], [unless, [endp, [cdr, sys_v]], [setq, sys_init, [second, sys_v]], [unless, [endp, [cddr, sys_v]], [setq, sys_sv, [caddr, sys_v]]]]]], [sys_dm_v, sys_temp, ['#BQ', [getf, ['#COMMA', rest], ['#COMMA', sys_k], [quote, sys_failed]]]], [sys_dm_v, sys_x, ['#BQ', [if, [eq, ['#COMMA', sys_temp], [quote, sys_failed]], ['#COMMA', sys_init], ['#COMMA', sys_temp]]]], [when, sys_sv, [sys_dm_v, sys_sv, ['#BQ', [not, [eq, ['#COMMA', sys_temp], [quote, sys_failed]]]]]], [push, sys_k, sys_keys]], [pop, sys_vl]], [sys_optionalp, [let, [sys_x, [sys_init, []], [sys_sv, []]], [cond, [[symbolp, sys_v], [setq, sys_x, sys_v]], [t, [setq, sys_x, [car, sys_v]], [unless, [endp, [cdr, sys_v]], [setq, sys_init, [second, sys_v]], [unless, [endp, [cddr, sys_v]], [setq, sys_sv, [caddr, sys_v]]]]]], [sys_dm_v, sys_x, ['#BQ', [if, ['#COMMA', [sys_dm_nth_cdr, sys_n, sys_whole]], ['#COMMA', [sys_dm_nth, sys_n, sys_whole]], ['#COMMA', sys_init]]]], [when, sys_sv, [sys_dm_v, sys_sv, ['#BQ', [not, [null, ['#COMMA', [sys_dm_nth_cdr, sys_n, sys_whole]]]]]]]], [incf, sys_n], [pop, sys_vl]], [t, [sys_dm_v, sys_v, ['#BQ', [if, ['#COMMA', [sys_dm_nth_cdr, sys_n, sys_whole]], ['#COMMA', [sys_dm_nth, sys_n, sys_whole]], [sys_dm_too_few_arguments]]]], [incf, sys_n], [pop, sys_vl]]]]], [sys_dm_v, [sys_v, sys_init], [if, [symbolp, sys_v], [push, [if, sys_init, [list, sys_v, sys_init], sys_v], sys_xx_dl_xx], [let, [[sys_temp, [gensym]]], [push, [if, sys_init, [list, sys_temp, sys_init], sys_temp], sys_xx_dl_xx], [sys_dm_vl, sys_v, sys_temp, []]]]], [sys_dm_nth, [sys_n, sys_v], [multiple_value_bind, [sys_q, sys_r], [floor, sys_n, 4], [declare, [fixnum, sys_q, sys_r]], [dotimes, [sys_i, sys_q], [setq, sys_v, [list, [quote, cddddr], sys_v]]], [case, sys_r, [0, [list, [quote, car], sys_v]], [1, [list, [quote, cadr], sys_v]], [2, [list, [quote, caddr], sys_v]], [3, [list, [quote, cadddr], sys_v]]]]], [sys_dm_nth_cdr, [sys_n, sys_v], [multiple_value_bind, [sys_q, sys_r], [floor, sys_n, 4], [declare, [fixnum, sys_q, sys_r]], [dotimes, [sys_i, sys_q], [setq, sys_v, [list, [quote, cddddr], sys_v]]], [case, sys_r, [0, sys_v], [1, [list, [quote, cdr], sys_v]], [2, [list, [quote, cddr], sys_v]], [3, [list, [quote, cdddr], sys_v]]]]]], [cond, [[listp, sys_vl]], [[symbolp, sys_vl], [setq, sys_vl, [list, [quote, c38_rest], sys_vl]]], [t, [error, '$ARRAY'([*], claz_base_character, "The defmacro-lambda-list ~s is not a list."), sys_vl]]], [multiple_value_setq, [sys_doc, sys_decls, sys_body], [sys_find_doc, sys_body, []]], [if, [and, [listp, sys_vl], [eq, [car, sys_vl], [quote, c38_whole]]], [setq, sys_whole, [second, sys_vl], sys_vl, [cddr, sys_vl]], [setq, sys_whole, [gensym]]], [if, [setq, sys_env, [member, [quote, c38_environment], sys_vl, kw_test, function(eq)]], [setq, sys_vl, [nconc, [ldiff, sys_vl, sys_env], [cddr, sys_env]], sys_env, [second, sys_env]], [progn, [setq, sys_env, [gensym]], [push, ['#BQ', [declare, [ignore, ['#COMMA', sys_env]]]], sys_decls]]], [setq, sys_xx_dl_xx, ['#BQ', [c38_aux, ['#COMMA', sys_env], ['#COMMA', sys_whole]]]], [setq, sys_ppn, [sys_dm_vl, sys_vl, sys_whole, t]], [dolist, [sys_kc, sys_xx_key_check_xx], [push, ['#BQ', [unless, [getf, ['#COMMA', [car, sys_kc]], kw_allow_other_keys], [do, [[sys_vl, ['#COMMA', [car, sys_kc]], [cddr, sys_vl]]], [[endp, sys_vl]], [unless, [member, [car, sys_vl], [quote, ['#COMMA', [cdr, sys_kc]]]], [sys_dm_key_not_allowed, [car, sys_vl]]]]]], sys_body]], [dolist, [sys_ac, sys_xx_arg_check_xx], [push, ['#BQ', [unless, [endp, ['#COMMA', [sys_dm_nth_cdr, [cdr, sys_ac], [car, sys_ac]]]], [sys_dm_too_many_arguments]]], sys_body]], [values, ['#BQ', [sys_lambda_block, ['#COMMA', sys_name], ['#COMMA', [nreverse, sys_xx_dl_xx]], ['#BQ-COMMA-ELIPSE', [nconc, sys_decls, sys_body]]]], sys_doc, sys_ppn]]]).
  764wl:arglist_info(sys_expand_defmacro, f_sys_expand_defmacro, [sys_name, sys_vl, sys_body, c38_aux, sys_xx_dl_xx, [sys_xx_key_check_xx, []], [sys_xx_arg_check_xx, []], sys_doc, sys_decls, sys_whole, sys_ppn, [sys_env, []], [sys_envp, []]], arginfo{all:[sys_name, sys_vl, sys_body], allow_other_keys:0, aux:[sys_xx_dl_xx, sys_xx_key_check_xx, sys_xx_arg_check_xx, sys_doc, sys_decls, sys_whole, sys_ppn, sys_env, sys_envp], body:0, complex:0, env:0, key:0, names:[sys_name, sys_vl, sys_body, sys_xx_dl_xx, sys_xx_key_check_xx, sys_xx_arg_check_xx, sys_doc, sys_decls, sys_whole, sys_ppn, sys_env, sys_envp], opt:0, req:[sys_name, sys_vl, sys_body], rest:0, sublists:0, whole:0}).
  765wl: init_args(3, f_sys_expand_defmacro).
  766
  767/*
  768
  769### Compiled Function: `SYS::EXPAND-DEFMACRO` 
  770*/
  771f_sys_expand_defmacro(Name_In, Vl_In, Body_In, RestNKeys, FnResult) :-
  772	Env=[bv(sys_name, Name_In), bv(sys_vl, Vl_In), bv(sys_body, Body_In), bv(sys_xx_dl_xx, Xx_dl_xx_In), bv(sys_xx_key_check_xx, Xx_key_check_xx_In), bv(sys_xx_arg_check_xx, Xx_arg_check_xx_In), bv(sys_doc, Doc_In), bv(sys_decls, Decls_In), bv(sys_whole, Whole_In), bv(sys_ppn, Ppn_In), bv(sys_env, Env_In), bv(sys_envp, Envp_In)],
  773	aux_var(Env, sys_xx_dl_xx, Xx_dl_xx_In, true, []),
  774	aux_var(Env, sys_xx_key_check_xx, Xx_key_check_xx_In, true, []),
  775	aux_var(Env, sys_xx_arg_check_xx, Xx_arg_check_xx_In, true, []),
  776	aux_var(Env, sys_doc, Doc_In, true, []),
  777	aux_var(Env, sys_decls, Decls_In, true, []),
  778	aux_var(Env, sys_whole, Whole_In, true, []),
  779	aux_var(Env, sys_ppn, Ppn_In, true, []),
  780	aux_var(Env, sys_env, Env_In, true, []),
  781	aux_var(Env, sys_envp, Envp_In, true, []),
  782	catch(( ( assert_lsp(sys_dm_vl,
  783			     wl:lambda_def(defun, sys_dm_vl, f_sys_dm_vl1, [sys_vl, sys_whole, sys_top], [[do, [[sys_optionalp], [sys_restp], [sys_keyp], [sys_allow_other_keys_p], [sys_auxp], [rest], [sys_allow_other_keys], [sys_keys], [sys_no_check], [sys_n, [if, sys_top, 1, 0]], [sys_ppn, 0], [sys_v]], [[not, [consp, sys_vl]], [when, sys_vl, [when, sys_restp, [sys_dm_bad_key, [quote, c38_rest]]], [push, [list, sys_vl, [sys_dm_nth_cdr, sys_n, sys_whole]], sys_xx_dl_xx], [setq, sys_no_check, t]], [when, [and, rest, [not, sys_allow_other_keys]], [push, [cons, rest, sys_keys], sys_xx_key_check_xx]], [unless, sys_no_check, [push, [cons, sys_whole, sys_n], sys_xx_arg_check_xx]], sys_ppn], [declare, [fixnum, sys_n, sys_ppn]], [setq, sys_v, [car, sys_vl]], [cond, [[eq, sys_v, [quote, c38_optional]], [when, sys_optionalp, [sys_dm_bad_key, [quote, c38_optional]]], [setq, sys_optionalp, t], [pop, sys_vl]], [[or, [eq, sys_v, [quote, c38_rest]], [eq, sys_v, [quote, c38_body]]], [when, sys_restp, [sys_dm_bad_key, sys_v]], [sys_dm_v, [second, sys_vl], [sys_dm_nth_cdr, sys_n, sys_whole]], [setq, sys_restp, t, sys_optionalp, t, sys_no_check, t], [setq, sys_vl, [cddr, sys_vl]], [when, [eq, sys_v, [quote, c38_body]], [setq, sys_ppn, [if, sys_top, [the, fixnum, ['1-', sys_n]], sys_n]]]], [[eq, sys_v, [quote, c38_key]], [when, sys_keyp, [sys_dm_bad_key, [quote, c38_key]]], [setq, rest, [gensym]], [push, [list, rest, [sys_dm_nth_cdr, sys_n, sys_whole]], sys_xx_dl_xx], [setq, sys_keyp, t, sys_restp, t, sys_optionalp, t, sys_no_check, t], [pop, sys_vl]], [[eq, sys_v, [quote, c38_allow_other_keys]], [when, [or, [not, sys_keyp], sys_allow_other_keys_p], [sys_dm_bad_key, [quote, c38_allow_other_keys]]], [setq, sys_allow_other_keys_p, t], [setq, sys_allow_other_keys, t], [pop, sys_vl]], [[eq, sys_v, [quote, c38_aux]], [when, sys_auxp, [sys_dm_bad_key, [quote, c38_aux]]], [setq, sys_auxp, t, sys_allow_other_keys_p, t, sys_keyp, t, sys_restp, t, sys_optionalp, t], [pop, sys_vl]], [sys_auxp, [let, [sys_x, [sys_init, []]], [cond, [[symbolp, sys_v], [setq, sys_x, sys_v]], [t, [setq, sys_x, [car, sys_v]], [unless, [endp, [cdr, sys_v]], [setq, sys_init, [second, sys_v]]]]], [sys_dm_v, sys_x, sys_init]], [pop, sys_vl]], [sys_keyp, [let, [[sys_temp, [gensym]], sys_x, sys_k, [sys_init, []], [sys_sv, []]], [cond, [[symbolp, sys_v], [setq, sys_x, sys_v, sys_k, [intern, [string, sys_v], [quote, keyword]]]], [t, [if, [symbolp, [car, sys_v]], [setq, sys_x, [car, sys_v], sys_k, [intern, [string, [car, sys_v]], [quote, keyword]]], [setq, sys_x, [cadar, sys_v], sys_k, [caar, sys_v]]], [unless, [endp, [cdr, sys_v]], [setq, sys_init, [second, sys_v]], [unless, [endp, [cddr, sys_v]], [setq, sys_sv, [caddr, sys_v]]]]]], [sys_dm_v, sys_temp, ['#BQ', [getf, ['#COMMA', rest], ['#COMMA', sys_k], [quote, sys_failed]]]], [sys_dm_v, sys_x, ['#BQ', [if, [eq, ['#COMMA', sys_temp], [quote, sys_failed]], ['#COMMA', sys_init], ['#COMMA', sys_temp]]]], [when, sys_sv, [sys_dm_v, sys_sv, ['#BQ', [not, [eq, ['#COMMA', sys_temp], [quote, sys_failed]]]]]], [push, sys_k, sys_keys]], [pop, sys_vl]], [sys_optionalp, [let, [sys_x, [sys_init, []], [sys_sv, []]], [cond, [[symbolp, sys_v], [setq, sys_x, sys_v]], [t, [setq, sys_x, [car, sys_v]], [unless, [endp, [cdr, sys_v]], [setq, sys_init, [second, sys_v]], [unless, [endp, [cddr, sys_v]], [setq, sys_sv, [caddr, sys_v]]]]]], [sys_dm_v, sys_x, ['#BQ', [if, ['#COMMA', [sys_dm_nth_cdr, sys_n, sys_whole]], ['#COMMA', [sys_dm_nth, sys_n, sys_whole]], ['#COMMA', sys_init]]]], [when, sys_sv, [sys_dm_v, sys_sv, ['#BQ', [not, [null, ['#COMMA', [sys_dm_nth_cdr, sys_n, sys_whole]]]]]]]], [incf, sys_n], [pop, sys_vl]], [t, [sys_dm_v, sys_v, ['#BQ', [if, ['#COMMA', [sys_dm_nth_cdr, sys_n, sys_whole]], ['#COMMA', [sys_dm_nth, sys_n, sys_whole]], [sys_dm_too_few_arguments]]]], [incf, sys_n], [pop, sys_vl]]]]])),
  784		  assert_lsp(sys_dm_vl,
  785			     wl:arglist_info(sys_dm_vl, f_sys_dm_vl1, [sys_vl, sys_whole, sys_top], arginfo{all:[sys_vl, sys_whole, sys_top], allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[sys_vl, sys_whole, sys_top], opt:0, req:[sys_vl, sys_whole, sys_top], rest:0, sublists:0, whole:0})),
  786		  assert_lsp(sys_dm_vl, wl:init_args(3, f_sys_dm_vl1)),
  787		  assert_lsp(sys_dm_vl,
  788			     (f_sys_dm_vl1(Vl_In19, Whole_In20, Top_In, RestNKeys18, FnResult17):-GEnv=[bv(sys_vl, Vl_In19), bv(sys_whole, Whole_In20), bv(sys_top, Top_In)], catch(((get_var(GEnv, sys_top, IFTEST), (IFTEST\==[]->N_Init=1;N_Init=0), BlockExitEnv=[bv([sys_optionalp], []), bv([sys_restp], []), bv([sys_keyp], []), bv([sys_allow_other_keys_p], []), bv([sys_auxp], []), bv([rest], []), bv([sys_allow_other_keys], []), bv([sys_keys], []), bv([sys_no_check], []), bv(sys_n, N_Init), bv(sys_ppn, 0), bv([sys_v], [])|GEnv], catch((call_addr_block(BlockExitEnv,  (push_label(do_label_1), get_var(BlockExitEnv, sys_vl, Vl_Get260), f_consp(Vl_Get260, PredArgResult262), (PredArgResult262==[]->get_var(BlockExitEnv, sys_vl, IFTEST265), (IFTEST265\==[]->get_var(BlockExitEnv, sys_restp, IFTEST268), (IFTEST268\==[]->f_sys_dm_bad_key(c38_rest, TrueResult271), _23312=TrueResult271;_23312=[]), sf_push(BlockExitEnv, [list, sys_vl, [sys_dm_nth_cdr, sys_n, sys_whole]], sys_xx_dl_xx, Xx_dl_xx), set_var(BlockExitEnv, sys_no_check, t), _23238=t;_23238=[]), get_var(BlockExitEnv, rest, IFTEST275), (IFTEST275\==[]->get_var(BlockExitEnv, sys_allow_other_keys, Allow_other_keys_Get278), f_not(Allow_other_keys_Get278, TrueResult279), IFTEST273=TrueResult279;IFTEST273=[]), (IFTEST273\==[]->sf_push(BlockExitEnv, [cons, rest, sys_keys], sys_xx_key_check_xx, TrueResult280), _23442=TrueResult280;_23442=[]), get_var(BlockExitEnv, sys_no_check, IFTEST281), (IFTEST281\==[]->_23642=[];sf_push(BlockExitEnv, [cons, sys_whole, sys_n], sys_xx_arg_check_xx, ElseResult284), _23642=ElseResult284), get_var(BlockExitEnv, sys_ppn, RetResult263), throw(block_exit([], RetResult263)), _TBResult=ThrowResult264;sf_declare(BlockExitEnv, [fixnum, sys_n, sys_ppn], Sf_declare_Ret), get_var(BlockExitEnv, sys_vl, Vl_Get287), f_car(Vl_Get287, V), set_var(BlockExitEnv, sys_v, V), get_var(BlockExitEnv, sys_v, V_Get289), (is_eq(V_Get289, c38_optional)->get_var(BlockExitEnv, sys_optionalp, IFTEST292), (IFTEST292\==[]->f_sys_dm_bad_key(c38_optional, TrueResult295), _23908=TrueResult295;_23908=[]), set_var(BlockExitEnv, sys_optionalp, t), sf_pop(BlockExitEnv, sys_vl, TrueResult481), _23788=TrueResult481;(get_var(BlockExitEnv, sys_v, V_Get298), f_eq(V_Get298, c38_rest, FORM1_Res300), FORM1_Res300\==[], IFTEST296=FORM1_Res300->true;get_var(BlockExitEnv, sys_v, V_Get299), f_eq(V_Get299, c38_body, C38_body), IFTEST296=C38_body), (IFTEST296\==[]->get_var(BlockExitEnv, sys_restp, IFTEST301), (IFTEST301\==[]->get_var(BlockExitEnv, sys_v, V_Get304), f_sys_dm_bad_key(V_Get304, TrueResult305), _24142=TrueResult305;_24142=[]), get_var(BlockExitEnv, sys_vl, Vl_Get306), f_second(Vl_Get306, Dm_v_Param), get_var(BlockExitEnv, sys_n, N_Get307), get_var(BlockExitEnv, sys_whole, Whole_Get308), f_sys_dm_nth_cdr(N_Get307, Whole_Get308, Nth_cdr_Ret), f_sys_dm_v(Dm_v_Param, Nth_cdr_Ret, Dm_v_Ret), set_var(BlockExitEnv, sys_restp, t), set_var(BlockExitEnv, sys_optionalp, t), set_var(BlockExitEnv, sys_no_check, t), get_var(BlockExitEnv, sys_vl, Vl_Get309), f_cddr(Vl_Get309, Vl), set_var(BlockExitEnv, sys_vl, Vl), get_var(BlockExitEnv, sys_v, V_Get311), (is_eq(V_Get311, c38_body)->get_var(BlockExitEnv, sys_top, IFTEST314), (IFTEST314\==[]->get_var(BlockExitEnv, sys_n, N_Get317), 'f_1-'(N_Get317, TrueResult319), TrueResult321=TrueResult319;get_var(BlockExitEnv, sys_n, N_Get318), TrueResult321=N_Get318), set_var(BlockExitEnv, sys_ppn, TrueResult321), TrueResult479=TrueResult321;TrueResult479=[]), ElseResult482=TrueResult479;get_var(BlockExitEnv, sys_v, V_Get323), (is_eq(V_Get323, c38_key)->get_var(BlockExitEnv, sys_keyp, IFTEST326), (IFTEST326\==[]->f_sys_dm_bad_key(c38_key, TrueResult329), _24762=TrueResult329;_24762=[]), f_gensym(Rest), set_var(BlockExitEnv, rest, Rest), sf_push(BlockExitEnv, [list, rest, [sys_dm_nth_cdr, sys_n, sys_whole]], sys_xx_dl_xx, Xx_dl_xx634), set_var(BlockExitEnv, sys_keyp, t), set_var(BlockExitEnv, sys_restp, t), set_var(BlockExitEnv, sys_optionalp, t), set_var(BlockExitEnv, sys_no_check, t), sf_pop(BlockExitEnv, sys_vl, TrueResult477), ElseResult480=TrueResult477;get_var(BlockExitEnv, sys_v, V_Get331), (is_eq(V_Get331, c38_allow_other_keys)->(get_var(BlockExitEnv, sys_keyp, Keyp_Get336), f_not(Keyp_Get336, FORM1_Res338), FORM1_Res338\==[], IFTEST334=FORM1_Res338->true;get_var(BlockExitEnv, sys_allow_other_keys_p, Allow_other_keys_p_Get337), IFTEST334=Allow_other_keys_p_Get337), (IFTEST334\==[]->f_sys_dm_bad_key(c38_allow_other_keys, TrueResult339), _24956=TrueResult339;_24956=[]), set_var(BlockExitEnv, sys_allow_other_keys_p, t), set_var(BlockExitEnv, sys_allow_other_keys, t), sf_pop(BlockExitEnv, sys_vl, TrueResult475), ElseResult478=TrueResult475;get_var(BlockExitEnv, sys_v, V_Get341), (is_eq(V_Get341, c38_aux)->get_var(BlockExitEnv, sys_auxp, IFTEST344), (IFTEST344\==[]->f_sys_dm_bad_key(c38_aux, TrueResult347), _25200=TrueResult347;_25200=[]), set_var(BlockExitEnv, sys_auxp, t), set_var(BlockExitEnv, sys_allow_other_keys_p, t), set_var(BlockExitEnv, sys_keyp, t), set_var(BlockExitEnv, sys_restp, t), set_var(BlockExitEnv, sys_optionalp, t), sf_pop(BlockExitEnv, sys_vl, TrueResult473), ElseResult476=TrueResult473;get_var(BlockExitEnv, sys_auxp, IFTEST348), (IFTEST348\==[]->LEnv353=[bv(sys_x, []), bv(sys_init, [])|BlockExitEnv], get_var(LEnv353, sys_v, V_Get355), (is_symbolp(V_Get355)->get_var(LEnv353, sys_v, V_Get359), set_var(LEnv353, sys_x, V_Get359), _25462=V_Get359;get_var(LEnv353, sys_v, V_Get360), f_car(V_Get360, X), set_var(LEnv353, sys_x, X), get_var(LEnv353, sys_v, V_Get362), f_cdr(V_Get362, PredArgResult364), (s3q:is_endp(PredArgResult364)->ElseResult368=[];get_var(LEnv353, sys_v, V_Get365), f_second(V_Get365, ElseResult366), set_var(LEnv353, sys_init, ElseResult366), ElseResult368=ElseResult366), _25462=ElseResult368), get_var(LEnv353, sys_init, Init_Get370), get_var(LEnv353, sys_x, X_Get369), f_sys_dm_v(X_Get369, Init_Get370, LetResult352), sf_pop(BlockExitEnv, sys_vl, TrueResult471), ElseResult474=TrueResult471;get_var(BlockExitEnv, sys_keyp, IFTEST371), (IFTEST371\==[]->f_gensym(Temp_Init377), LEnv376=[bv(sys_temp, Temp_Init377), bv(sys_x, []), bv(sys_k, []), bv(sys_init, []), bv(sys_sv, [])|BlockExitEnv], get_var(LEnv376, sys_v, V_Get379), (is_symbolp(V_Get379)->get_var(LEnv376, sys_v, V_Get383), set_var(LEnv376, sys_x, V_Get383), get_var(LEnv376, sys_v, V_Get384), f_string(V_Get384, Intern_Param), f_intern(Intern_Param, keyword, TrueResult407), set_var(LEnv376, sys_k, TrueResult407), _26060=TrueResult407;get_var(LEnv376, sys_v, V_Get386), f_car(V_Get386, PredArgResult388), (is_symbolp(PredArgResult388)->get_var(LEnv376, sys_v, V_Get389), f_car(V_Get389, X636), set_var(LEnv376, sys_x, X636), get_var(LEnv376, sys_v, V_Get390), f_car(V_Get390, String_Param), f_string(String_Param, Intern_Param652), f_intern(Intern_Param652, keyword, TrueResult393), set_var(LEnv376, sys_k, TrueResult393), _26222=TrueResult393;get_var(LEnv376, sys_v, V_Get391), f_cadar(V_Get391, X637), set_var(LEnv376, sys_x, X637), get_var(LEnv376, sys_v, V_Get392), f_caar(V_Get392, ElseResult394), set_var(LEnv376, sys_k, ElseResult394), _26222=ElseResult394), get_var(LEnv376, sys_v, V_Get396), f_cdr(V_Get396, PredArgResult398), (s3q:is_endp(PredArgResult398)->ElseResult408=[];get_var(LEnv376, sys_v, V_Get399), f_second(V_Get399, Init), set_var(LEnv376, sys_init, Init), get_var(LEnv376, sys_v, V_Get401), f_cddr(V_Get401, PredArgResult403), (s3q:is_endp(PredArgResult403)->ElseResult406=[];get_var(LEnv376, sys_v, V_Get404), f_caddr(V_Get404, ElseResult405), set_var(LEnv376, sys_sv, ElseResult405), ElseResult406=ElseResult405), ElseResult408=ElseResult406), _26060=ElseResult408), get_var(LEnv376, rest, Rest_Get410), get_var(LEnv376, sys_k, K_Get411), get_var(LEnv376, sys_temp, Temp_Get409), f_sys_dm_v(Temp_Get409, [getf, Rest_Get410, K_Get411, [quote, sys_failed]], Dm_v_Ret666), get_var(LEnv376, sys_init, Init_Get414), get_var(LEnv376, sys_temp, Temp_Get413), get_var(LEnv376, sys_x, X_Get412), f_sys_dm_v(X_Get412, [if, [eq, Temp_Get413, [quote, sys_failed]], Init_Get414, Temp_Get413], Dm_v_Ret667), get_var(LEnv376, sys_sv, IFTEST416), (IFTEST416\==[]->get_var(LEnv376, sys_sv, Sv_Get419), get_var(LEnv376, sys_temp, Temp_Get420), f_sys_dm_v(Sv_Get419, [not, [eq, Temp_Get420, [quote, sys_failed]]], TrueResult421), _27060=TrueResult421;_27060=[]), sf_push(LEnv376, sys_k, sys_keys, LetResult375), sf_pop(BlockExitEnv, sys_vl, TrueResult469), ElseResult472=TrueResult469;get_var(BlockExitEnv, sys_optionalp, IFTEST422), (IFTEST422\==[]->LEnv427=[bv(sys_x, []), bv(sys_init, []), bv(sys_sv, [])|BlockExitEnv], get_var(LEnv427, sys_v, V_Get429), (is_symbolp(V_Get429)->get_var(LEnv427, sys_v, V_Get433), set_var(LEnv427, sys_x, V_Get433), _27378=V_Get433;get_var(LEnv427, sys_v, V_Get434), f_car(V_Get434, X639), set_var(LEnv427, sys_x, X639), get_var(LEnv427, sys_v, V_Get436), f_cdr(V_Get436, PredArgResult438), (s3q:is_endp(PredArgResult438)->ElseResult448=[];get_var(LEnv427, sys_v, V_Get439), f_second(V_Get439, Init640), set_var(LEnv427, sys_init, Init640), get_var(LEnv427, sys_v, V_Get441), f_cddr(V_Get441, PredArgResult443), (s3q:is_endp(PredArgResult443)->ElseResult446=[];get_var(LEnv427, sys_v, V_Get444), f_caddr(V_Get444, ElseResult445), set_var(LEnv427, sys_sv, ElseResult445), ElseResult446=ElseResult445), ElseResult448=ElseResult446), _27378=ElseResult448), get_var(LEnv427, sys_n, N_Get450), get_var(LEnv427, sys_whole, Whole_Get451), get_var(LEnv427, sys_x, X_Get449), f_sys_dm_nth_cdr(N_Get450, Whole_Get451, Nth_cdr_Ret668), get_var(LEnv427, sys_n, N_Get452), get_var(LEnv427, sys_whole, Whole_Get453), f_sys_dm_nth(N_Get452, Whole_Get453, Dm_nth_Ret), get_var(LEnv427, sys_init, Init_Get454), f_sys_dm_v(X_Get449, [if, Nth_cdr_Ret668, Dm_nth_Ret, Init_Get454], Dm_v_Ret670), get_var(LEnv427, sys_sv, IFTEST455), (IFTEST455\==[]->get_var(LEnv427, sys_n, N_Get459), get_var(LEnv427, sys_sv, Sv_Get458), get_var(LEnv427, sys_whole, Whole_Get460), f_sys_dm_nth_cdr(N_Get459, Whole_Get460, Nth_cdr_Ret671), f_sys_dm_v(Sv_Get458, [not, [null, Nth_cdr_Ret671]], TrueResult461), LetResult426=TrueResult461;LetResult426=[]), place_op(BlockExitEnv, incf, sys_n, symbol_value, [], Place_op_Ret), sf_pop(BlockExitEnv, sys_vl, TrueResult467), ElseResult470=TrueResult467;get_var(BlockExitEnv, sys_n, N_Get463), get_var(BlockExitEnv, sys_v, V_Get462), get_var(BlockExitEnv, sys_whole, Whole_Get464), f_sys_dm_nth_cdr(N_Get463, Whole_Get464, Nth_cdr_Ret673), get_var(BlockExitEnv, sys_n, N_Get465), get_var(BlockExitEnv, sys_whole, Whole_Get466), f_sys_dm_nth(N_Get465, Whole_Get466, Dm_nth_Ret674), f_sys_dm_v(V_Get462, [if, Nth_cdr_Ret673, Dm_nth_Ret674, [sys_dm_too_few_arguments]], Dm_v_Ret675), place_op(BlockExitEnv, incf, sys_n, symbol_value, [], Place_op_Ret676), sf_pop(BlockExitEnv, sys_vl, ElseResult468), ElseResult470=ElseResult468), ElseResult472=ElseResult470), ElseResult474=ElseResult472), ElseResult476=ElseResult474), ElseResult478=ElseResult476), ElseResult480=ElseResult478), ElseResult482=ElseResult480), _23788=ElseResult482), sf_psetq(BlockExitEnv, Sf_psetq_Ret), goto(do_label_1, BlockExitEnv), _TBResult=_GORES483)), [addr(addr_tagbody_1_do_label_1, do_label_1, '$unused', BlockExitEnv,  (get_var(BlockExitEnv, sys_vl, Consp_Param), f_consp(Consp_Param, Consp_Ret), (Consp_Ret==[]->get_var(BlockExitEnv, sys_vl, IFTEST36), (IFTEST36\==[]->get_var(BlockExitEnv, sys_restp, IFTEST39), (IFTEST39\==[]->f_sys_dm_bad_key(c38_rest, Bad_key_Ret), _28934=Bad_key_Ret;_28934=[]), sf_push(BlockExitEnv, [list, sys_vl, [sys_dm_nth_cdr, sys_n, sys_whole]], sys_xx_dl_xx, Sf_push_Ret), set_var(BlockExitEnv, sys_no_check, t), _28938=t;_28938=[]), get_var(BlockExitEnv, rest, IFTEST46), (IFTEST46\==[]->get_var(BlockExitEnv, sys_allow_other_keys, Not_Param), f_not(Not_Param, TrueResult50), IFTEST44=TrueResult50;IFTEST44=[]), (IFTEST44\==[]->sf_push(BlockExitEnv, [cons, rest, sys_keys], sys_xx_key_check_xx, TrueResult51), _28998=TrueResult51;_28998=[]), get_var(BlockExitEnv, sys_no_check, IFTEST52), (IFTEST52\==[]->_29014=[];sf_push(BlockExitEnv, [cons, sys_whole, sys_n], sys_xx_arg_check_xx, Sf_push_Ret681), _29014=Sf_push_Ret681), get_var(BlockExitEnv, sys_ppn, Get_var_Ret), throw(block_exit([], Get_var_Ret)), _29020=ThrowResult;sf_declare(BlockExitEnv, [fixnum, sys_n, sys_ppn], Sf_declare_Ret683), get_var(BlockExitEnv, sys_vl, Vl_Get58), f_car(Vl_Get58, Car_Ret), set_var(BlockExitEnv, sys_v, Car_Ret), get_var(BlockExitEnv, sys_v, V_Get), (is_eq(V_Get, c38_optional)->get_var(BlockExitEnv, sys_optionalp, IFTEST63), (IFTEST63\==[]->f_sys_dm_bad_key(c38_optional, TrueResult66), _29096=TrueResult66;_29096=[]), set_var(BlockExitEnv, sys_optionalp, t), sf_pop(BlockExitEnv, sys_vl, TrueResult252), _29112=TrueResult252;(get_var(BlockExitEnv, sys_v, V_Get69), f_eq(V_Get69, c38_rest, Eq_Ret), Eq_Ret\==[], IFTEST67=Eq_Ret->true;get_var(BlockExitEnv, sys_v, V_Get70), f_eq(V_Get70, c38_body, Eq_Ret686), IFTEST67=Eq_Ret686), (IFTEST67\==[]->get_var(BlockExitEnv, sys_restp, IFTEST72), (IFTEST72\==[]->get_var(BlockExitEnv, sys_v, V_Get75), f_sys_dm_bad_key(V_Get75, TrueResult76), _29202=TrueResult76;_29202=[]), get_var(BlockExitEnv, sys_vl, Vl_Get77), f_second(Vl_Get77, Dm_v_Param656), get_var(BlockExitEnv, sys_n, Nth_cdr_Param), get_var(BlockExitEnv, sys_whole, Get_var_Ret687), f_sys_dm_nth_cdr(Nth_cdr_Param, Get_var_Ret687, Nth_cdr_Ret688), f_sys_dm_v(Dm_v_Param656, Nth_cdr_Ret688, Dm_v_Ret689), set_var(BlockExitEnv, sys_restp, t), set_var(BlockExitEnv, sys_optionalp, t), set_var(BlockExitEnv, sys_no_check, t), get_var(BlockExitEnv, sys_vl, Vl_Get80), f_cddr(Vl_Get80, Cddr_Ret), set_var(BlockExitEnv, sys_vl, Cddr_Ret), get_var(BlockExitEnv, sys_v, V_Get82), (is_eq(V_Get82, c38_body)->get_var(BlockExitEnv, sys_top, IFTEST85), (IFTEST85\==[]->get_var(BlockExitEnv, sys_n, N_Get88), 'f_1-'(N_Get88, TrueResult90), TrueResult92=TrueResult90;get_var(BlockExitEnv, sys_n, N_Get89), TrueResult92=N_Get89), set_var(BlockExitEnv, sys_ppn, TrueResult92), TrueResult250=TrueResult92;TrueResult250=[]), ElseResult253=TrueResult250;get_var(BlockExitEnv, sys_v, V_Get94), (is_eq(V_Get94, c38_key)->get_var(BlockExitEnv, sys_keyp, IFTEST97), (IFTEST97\==[]->f_sys_dm_bad_key(c38_key, TrueResult100), _29398=TrueResult100;_29398=[]), f_gensym(Gensym_Ret), set_var(BlockExitEnv, rest, Gensym_Ret), sf_push(BlockExitEnv, [list, rest, [sys_dm_nth_cdr, sys_n, sys_whole]], sys_xx_dl_xx, Sf_push_Ret692), set_var(BlockExitEnv, sys_keyp, t), set_var(BlockExitEnv, sys_restp, t), set_var(BlockExitEnv, sys_optionalp, t), set_var(BlockExitEnv, sys_no_check, t), sf_pop(BlockExitEnv, sys_vl, TrueResult248), ElseResult251=TrueResult248;get_var(BlockExitEnv, sys_v, V_Get102), (is_eq(V_Get102, c38_allow_other_keys)->(get_var(BlockExitEnv, sys_keyp, Keyp_Get107), f_not(Keyp_Get107, FORM1_Res109), FORM1_Res109\==[], IFTEST105=FORM1_Res109->true;get_var(BlockExitEnv, sys_allow_other_keys_p, Get_var_Ret693), IFTEST105=Get_var_Ret693), (IFTEST105\==[]->f_sys_dm_bad_key(c38_allow_other_keys, TrueResult110), _29504=TrueResult110;_29504=[]), set_var(BlockExitEnv, sys_allow_other_keys_p, t), set_var(BlockExitEnv, sys_allow_other_keys, t), sf_pop(BlockExitEnv, sys_vl, TrueResult246), ElseResult249=TrueResult246;get_var(BlockExitEnv, sys_v, V_Get112), (is_eq(V_Get112, c38_aux)->get_var(BlockExitEnv, sys_auxp, IFTEST115), (IFTEST115\==[]->f_sys_dm_bad_key(c38_aux, TrueResult118), _29576=TrueResult118;_29576=[]), set_var(BlockExitEnv, sys_auxp, t), set_var(BlockExitEnv, sys_allow_other_keys_p, t), set_var(BlockExitEnv, sys_keyp, t), set_var(BlockExitEnv, sys_restp, t), set_var(BlockExitEnv, sys_optionalp, t), sf_pop(BlockExitEnv, sys_vl, TrueResult244), ElseResult247=TrueResult244;get_var(BlockExitEnv, sys_auxp, IFTEST119), (IFTEST119\==[]->LEnv124=[bv(sys_x, []), bv(sys_init, [])|BlockExitEnv], get_var(LEnv124, sys_v, V_Get126), (is_symbolp(V_Get126)->get_var(LEnv124, sys_v, V_Get130), set_var(LEnv124, sys_x, V_Get130), _29662=V_Get130;get_var(LEnv124, sys_v, V_Get131), f_car(V_Get131, Car_Ret694), set_var(LEnv124, sys_x, Car_Ret694), get_var(LEnv124, sys_v, V_Get133), f_cdr(V_Get133, PredArgResult135), (s3q:is_endp(PredArgResult135)->ElseResult139=[];get_var(LEnv124, sys_v, V_Get136), f_second(V_Get136, ElseResult137), set_var(LEnv124, sys_init, ElseResult137), ElseResult139=ElseResult137), _29662=ElseResult139), get_var(LEnv124, sys_init, Get_var_Ret695), get_var(LEnv124, sys_x, Dm_v_Param657), f_sys_dm_v(Dm_v_Param657, Get_var_Ret695, LetResult123), sf_pop(BlockExitEnv, sys_vl, TrueResult242), ElseResult245=TrueResult242;get_var(BlockExitEnv, sys_keyp, IFTEST142), (IFTEST142\==[]->f_gensym(Gensym_Ret696), LEnv147=[bv(sys_temp, Gensym_Ret696), bv(sys_x, []), bv(sys_k, []), bv(sys_init, []), bv(sys_sv, [])|BlockExitEnv], get_var(LEnv147, sys_v, V_Get150), (is_symbolp(V_Get150)->get_var(LEnv147, sys_v, V_Get154), set_var(LEnv147, sys_x, V_Get154), get_var(LEnv147, sys_v, V_Get155), f_string(V_Get155, Intern_Param658), f_intern(Intern_Param658, keyword, TrueResult178), set_var(LEnv147, sys_k, TrueResult178), _29884=TrueResult178;get_var(LEnv147, sys_v, V_Get157), f_car(V_Get157, PredArgResult159), (is_symbolp(PredArgResult159)->get_var(LEnv147, sys_v, V_Get160), f_car(V_Get160, Car_Ret697), set_var(LEnv147, sys_x, Car_Ret697), get_var(LEnv147, sys_v, V_Get161), f_car(V_Get161, String_Param659), f_string(String_Param659, Intern_Param660), f_intern(Intern_Param660, keyword, TrueResult164), set_var(LEnv147, sys_k, TrueResult164), _29962=TrueResult164;get_var(LEnv147, sys_v, V_Get162), f_cadar(V_Get162, Cadar_Ret), set_var(LEnv147, sys_x, Cadar_Ret), get_var(LEnv147, sys_v, V_Get163), f_caar(V_Get163, ElseResult165), set_var(LEnv147, sys_k, ElseResult165), _29962=ElseResult165), get_var(LEnv147, sys_v, V_Get167), f_cdr(V_Get167, PredArgResult169), (s3q:is_endp(PredArgResult169)->ElseResult179=[];get_var(LEnv147, sys_v, V_Get170), f_second(V_Get170, Second_Ret), set_var(LEnv147, sys_init, Second_Ret), get_var(LEnv147, sys_v, V_Get172), f_cddr(V_Get172, PredArgResult174), (s3q:is_endp(PredArgResult174)->ElseResult177=[];get_var(LEnv147, sys_v, V_Get175), f_caddr(V_Get175, ElseResult176), set_var(LEnv147, sys_sv, ElseResult176), ElseResult177=ElseResult176), ElseResult179=ElseResult177), _29884=ElseResult179), get_var(LEnv147, rest, Rest_Get181), get_var(LEnv147, sys_k, Get_var_Ret700), get_var(LEnv147, sys_temp, Dm_v_Param661), f_sys_dm_v(Dm_v_Param661, [getf, Rest_Get181, Get_var_Ret700, [quote, sys_failed]], Dm_v_Ret701), get_var(LEnv147, sys_init, Init_Get185), get_var(LEnv147, sys_temp, Temp_Get184), get_var(LEnv147, sys_x, X_Get183), f_sys_dm_v(X_Get183, [if, [eq, Temp_Get184, [quote, sys_failed]], Init_Get185, Temp_Get184], Dm_v_Ret702), get_var(LEnv147, sys_sv, IFTEST187), (IFTEST187\==[]->get_var(LEnv147, sys_sv, Sv_Get190), get_var(LEnv147, sys_temp, Temp_Get191), f_sys_dm_v(Sv_Get190, [not, [eq, Temp_Get191, [quote, sys_failed]]], TrueResult192), _30256=TrueResult192;_30256=[]), sf_push(LEnv147, sys_k, sys_keys, LetResult146), sf_pop(BlockExitEnv, sys_vl, TrueResult240), ElseResult243=TrueResult240;get_var(BlockExitEnv, sys_optionalp, IFTEST193), (IFTEST193\==[]->LEnv198=[bv(sys_x, []), bv(sys_init, []), bv(sys_sv, [])|BlockExitEnv], get_var(LEnv198, sys_v, V_Get200), (is_symbolp(V_Get200)->get_var(LEnv198, sys_v, V_Get204), set_var(LEnv198, sys_x, V_Get204), _30356=V_Get204;get_var(LEnv198, sys_v, V_Get205), f_car(V_Get205, Car_Ret703), set_var(LEnv198, sys_x, Car_Ret703), get_var(LEnv198, sys_v, V_Get207), f_cdr(V_Get207, PredArgResult209), (s3q:is_endp(PredArgResult209)->ElseResult219=[];get_var(LEnv198, sys_v, V_Get210), f_second(V_Get210, Second_Ret704), set_var(LEnv198, sys_init, Second_Ret704), get_var(LEnv198, sys_v, V_Get212), f_cddr(V_Get212, PredArgResult214), (s3q:is_endp(PredArgResult214)->ElseResult217=[];get_var(LEnv198, sys_v, V_Get215), f_caddr(V_Get215, ElseResult216), set_var(LEnv198, sys_sv, ElseResult216), ElseResult217=ElseResult216), ElseResult219=ElseResult217), _30356=ElseResult219), get_var(LEnv198, sys_n, N_Get221), get_var(LEnv198, sys_whole, Whole_Get222), get_var(LEnv198, sys_x, X_Get220), f_sys_dm_nth_cdr(N_Get221, Whole_Get222, Nth_cdr_Ret705), get_var(LEnv198, sys_n, N_Get223), get_var(LEnv198, sys_whole, Whole_Get224), f_sys_dm_nth(N_Get223, Whole_Get224, Dm_nth_Ret706), get_var(LEnv198, sys_init, Init_Get225), f_sys_dm_v(X_Get220, [if, Nth_cdr_Ret705, Dm_nth_Ret706, Init_Get225], Dm_v_Ret707), get_var(LEnv198, sys_sv, IFTEST226), (IFTEST226\==[]->get_var(LEnv198, sys_n, N_Get230), get_var(LEnv198, sys_sv, Sv_Get229), get_var(LEnv198, sys_whole, Whole_Get231), f_sys_dm_nth_cdr(N_Get230, Whole_Get231, Nth_cdr_Ret708), f_sys_dm_v(Sv_Get229, [not, [null, Nth_cdr_Ret708]], TrueResult232), LetResult197=TrueResult232;LetResult197=[]), place_op(BlockExitEnv, incf, sys_n, symbol_value, [], Place_op_Ret709), sf_pop(BlockExitEnv, sys_vl, TrueResult238), ElseResult241=TrueResult238;get_var(BlockExitEnv, sys_n, N_Get234), get_var(BlockExitEnv, sys_v, V_Get233), get_var(BlockExitEnv, sys_whole, Whole_Get235), f_sys_dm_nth_cdr(N_Get234, Whole_Get235, Nth_cdr_Ret710), get_var(BlockExitEnv, sys_n, N_Get236), get_var(BlockExitEnv, sys_whole, Whole_Get237), f_sys_dm_nth(N_Get236, Whole_Get237, Dm_nth_Ret711), f_sys_dm_v(V_Get233, [if, Nth_cdr_Ret710, Dm_nth_Ret711, [sys_dm_too_few_arguments]], Dm_v_Ret712), place_op(BlockExitEnv, incf, sys_n, symbol_value, [], Place_op_Ret713), sf_pop(BlockExitEnv, sys_vl, ElseResult239), ElseResult241=ElseResult239), ElseResult243=ElseResult241), ElseResult245=ElseResult243), ElseResult247=ElseResult245), ElseResult249=ElseResult247), ElseResult251=ElseResult249), ElseResult253=ElseResult251), _29112=ElseResult253), sf_psetq(BlockExitEnv, Sf_psetq_Ret714), goto(do_label_1, BlockExitEnv), _29020=_GORES)))]), []=LetResult), block_exit([], LetResult), true)), LetResult=FnResult17), block_exit(sys_dm_vl, FnResult17), true))),
  789		  assert_lsp(sys_dm_v,
  790			     wl:lambda_def(defun, sys_dm_v, f_sys_dm_v1, [sys_v, sys_init], [[if, [symbolp, sys_v], [push, [if, sys_init, [list, sys_v, sys_init], sys_v], sys_xx_dl_xx], [let, [[sys_temp, [gensym]]], [push, [if, sys_init, [list, sys_temp, sys_init], sys_temp], sys_xx_dl_xx], [sys_dm_vl, sys_v, sys_temp, []]]]])),
  791		  assert_lsp(sys_dm_v,
  792			     wl:arglist_info(sys_dm_v, f_sys_dm_v1, [sys_v, sys_init], arginfo{all:[sys_v, sys_init], allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[sys_v, sys_init], opt:0, req:[sys_v, sys_init], rest:0, sublists:0, whole:0})),
  793		  assert_lsp(sys_dm_v, wl:init_args(2, f_sys_dm_v1)),
  794		  assert_lsp(sys_dm_v,
  795			     (f_sys_dm_v1(V_In, Init_In, RestNKeys490, FnResult489):-GEnv641=[bv(sys_v, V_In), bv(sys_init, Init_In)], catch(((get_var(GEnv641, sys_v, V_Get494), (is_symbolp(V_Get494)->sf_push(GEnv641, [if, sys_init, [list, sys_v, sys_init], sys_v], sys_xx_dl_xx, TrueResult503), _30930=TrueResult503;f_gensym(Temp_Init500), LEnv499=[bv(sys_temp, Temp_Init500)|GEnv641], sf_push(LEnv499, [if, sys_init, [list, sys_temp, sys_init], sys_temp], sys_xx_dl_xx, Xx_dl_xx642), get_var(LEnv499, sys_temp, Temp_Get502), get_var(LEnv499, sys_v, V_Get501), f_sys_dm_vl(V_Get501, Temp_Get502, [], LetResult498), _30930=LetResult498)), _30930=FnResult489), block_exit(sys_dm_v, FnResult489), true))),
  796		  assert_lsp(sys_dm_nth,
  797			     wl:lambda_def(defun, sys_dm_nth, f_sys_dm_nth1, [sys_n, sys_v], [[multiple_value_bind, [sys_q, sys_r], [floor, sys_n, 4], [declare, [fixnum, sys_q, sys_r]], [dotimes, [sys_i, sys_q], [setq, sys_v, [list, [quote, cddddr], sys_v]]], [case, sys_r, [0, [list, [quote, car], sys_v]], [1, [list, [quote, cadr], sys_v]], [2, [list, [quote, caddr], sys_v]], [3, [list, [quote, cadddr], sys_v]]]]])),
  798		  assert_lsp(sys_dm_nth,
  799			     wl:arglist_info(sys_dm_nth, f_sys_dm_nth1, [sys_n, sys_v], arginfo{all:[sys_n, sys_v], allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[sys_n, sys_v], opt:0, req:[sys_n, sys_v], rest:0, sublists:0, whole:0})),
  800		  assert_lsp(sys_dm_nth, wl:init_args(2, f_sys_dm_nth1)),
  801		  assert_lsp(sys_dm_nth,
  802			     (f_sys_dm_nth1(N_In, V_In509, RestNKeys507, FnResult506):-CDR=[bv(sys_n, N_In), bv(sys_v, V_In509)], catch(((LEnv512=[bv(sys_q, []), bv(sys_r, [])|CDR], get_var(LEnv512, sys_n, N_Get513), f_floor(N_Get513, [4], Floor_Ret), setq_from_values(LEnv512, [sys_q, sys_r]), sf_declare(LEnv512, [fixnum, sys_q, sys_r], Sf_declare_Ret717), sf_dotimes(LEnv512, [sys_i, sys_q], [setq, sys_v, [list, [quote, cddddr], sys_v]], Sf_dotimes_Ret), get_var(LEnv512, sys_r, Key), (is_eq(Key, 0)->get_var(LEnv512, sys_v, V_Get519), TrueResult535=[car, V_Get519], LetResult511=TrueResult535;(is_eq(Key, 1)->get_var(LEnv512, sys_v, V_Get522), TrueResult533=[cadr, V_Get522], ElseResult536=TrueResult533;(is_eq(Key, 2)->get_var(LEnv512, sys_v, V_Get525), TrueResult531=[caddr, V_Get525], ElseResult534=TrueResult531;(is_eq(Key, 3)->get_var(LEnv512, sys_v, V_Get528), TrueResult529=[cadddr, V_Get528], ElseResult532=TrueResult529;ElseResult530=[], ElseResult532=ElseResult530), ElseResult534=ElseResult532), ElseResult536=ElseResult534), LetResult511=ElseResult536)), LetResult511=FnResult506), block_exit(sys_dm_nth, FnResult506), true))),
  803		  assert_lsp(sys_dm_nth_cdr,
  804			     wl:lambda_def(defun, sys_dm_nth_cdr, f_sys_dm_nth_cdr1, [sys_n, sys_v], [[multiple_value_bind, [sys_q, sys_r], [floor, sys_n, 4], [declare, [fixnum, sys_q, sys_r]], [dotimes, [sys_i, sys_q], [setq, sys_v, [list, [quote, cddddr], sys_v]]], [case, sys_r, [0, sys_v], [1, [list, [quote, cdr], sys_v]], [2, [list, [quote, cddr], sys_v]], [3, [list, [quote, cdddr], sys_v]]]]])),
  805		  assert_lsp(sys_dm_nth_cdr,
  806			     wl:arglist_info(sys_dm_nth_cdr, f_sys_dm_nth_cdr1, [sys_n, sys_v], arginfo{all:[sys_n, sys_v], allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[sys_n, sys_v], opt:0, req:[sys_n, sys_v], rest:0, sublists:0, whole:0})),
  807		  assert_lsp(sys_dm_nth_cdr, wl:init_args(2, f_sys_dm_nth_cdr1)),
  808		  assert_lsp(sys_dm_nth_cdr,
  809			     (f_sys_dm_nth_cdr1(N_In540, V_In541, RestNKeys539, FnResult538):-CDR719=[bv(sys_n, N_In540), bv(sys_v, V_In541)], catch(((LEnv544=[bv(sys_q, []), bv(sys_r, [])|CDR719], get_var(LEnv544, sys_n, N_Get545), f_floor(N_Get545, [4], Floor_Ret720), setq_from_values(LEnv544, [sys_q, sys_r]), sf_declare(LEnv544, [fixnum, sys_q, sys_r], Sf_declare_Ret721), sf_dotimes(LEnv544, [sys_i, sys_q], [setq, sys_v, [list, [quote, cddddr], sys_v]], Sf_dotimes_Ret722), get_var(LEnv544, sys_r, Key), (is_eq(Key, 0)->get_var(LEnv544, sys_v, V_Get551), LetResult543=V_Get551;(is_eq(Key, 1)->get_var(LEnv544, sys_v, V_Get554), TrueResult565=[cdr, V_Get554], ElseResult568=TrueResult565;(is_eq(Key, 2)->get_var(LEnv544, sys_v, V_Get557), TrueResult563=[cddr, V_Get557], ElseResult566=TrueResult563;(is_eq(Key, 3)->get_var(LEnv544, sys_v, V_Get560), TrueResult561=[cdddr, V_Get560], ElseResult564=TrueResult561;ElseResult562=[], ElseResult564=ElseResult562), ElseResult566=ElseResult564), ElseResult568=ElseResult566), LetResult543=ElseResult568)), LetResult543=FnResult538), block_exit(sys_dm_nth_cdr, FnResult538), true))),
  810		  get_var(Env, sys_vl, Vl_Get571),
  811		  (   s3q:is_listp(Vl_Get571)
  812		  ->  _32834=[]
  813		  ;   get_var(Env, sys_vl, Vl_Get575),
  814		      (   is_symbolp(Vl_Get575)
  815		      ->  get_var(Env, sys_vl, Vl_Get579),
  816			  TrueResult581=[c38_rest, Vl_Get579],
  817			  set_var(Env, sys_vl, TrueResult581),
  818			  ElseResult583=TrueResult581
  819		      ;   get_var(Env, sys_vl, Vl_Get580),
  820			  f_error(
  821				  [ '$ARRAY'([*],
  822					     claz_base_character,
  823					     "The defmacro-lambda-list ~s is not a list."),
  824				    Vl_Get580
  825				  ],
  826				  ElseResult582),
  827			  ElseResult583=ElseResult582
  828		      ),
  829		      _32834=ElseResult583
  830		  ),
  831		  get_var(Env, sys_body, Body_Get),
  832		  f_sys_find_doc(Body_Get, [], Find_doc_Ret),
  833		  setq_from_values(Env, [sys_doc, sys_decls, sys_body]),
  834		  get_var(Env, sys_vl, Vl_Get588),
  835		  (   s3q:is_listp(Vl_Get588)
  836		  ->  get_var(Env, sys_vl, Vl_Get591),
  837		      f_car(Vl_Get591, Eq_Param),
  838		      f_eq(Eq_Param, c38_whole, TrueResult592),
  839		      IFTEST585=TrueResult592
  840		  ;   IFTEST585=[]
  841		  ),
  842		  (   IFTEST585\==[]
  843		  ->  get_var(Env, sys_vl, Vl_Get593),
  844		      f_second(Vl_Get593, Whole),
  845		      set_var(Env, sys_whole, Whole),
  846		      get_var(Env, sys_vl, Vl_Get594),
  847		      f_cddr(Vl_Get594, TrueResult595),
  848		      set_var(Env, sys_vl, TrueResult595),
  849		      _33174=TrueResult595
  850		  ;   f_gensym(ElseResult596),
  851		      set_var(Env, sys_whole, ElseResult596),
  852		      _33174=ElseResult596
  853		  ),
  854		  get_var(Env, sys_vl, Vl_Get599),
  855		  f_member(c38_environment, Vl_Get599, [kw_test, f_eq], IFTEST597),
  856		  set_var(Env, sys_env, IFTEST597),
  857		  (   IFTEST597\==[]
  858		  ->  get_var(Env, sys_env, Env_Get),
  859		      get_var(Env, sys_vl, Vl_Get600),
  860		      f_ldiff(Vl_Get600, Env_Get, Ldiff_Ret),
  861		      get_var(Env, sys_env, Env_Get602),
  862		      f_cddr(Env_Get602, Cddr_Ret725),
  863		      f_nconc([Ldiff_Ret, Cddr_Ret725], Vl644),
  864		      set_var(Env, sys_vl, Vl644),
  865		      get_var(Env, sys_env, Env_Get603),
  866		      f_second(Env_Get603, TrueResult604),
  867		      set_var(Env, sys_env, TrueResult604),
  868		      _33474=TrueResult604
  869		  ;   f_gensym(Env645),
  870		      set_var(Env, sys_env, Env645),
  871		      sf_push(Env,
  872			      ['#BQ', [declare, [ignore, ['#COMMA', sys_env]]]],
  873			      sys_decls,
  874			      ElseResult605),
  875		      _33474=ElseResult605
  876		  ),
  877		  get_var(Env, sys_env, Env_Get606),
  878		  get_var(Env, sys_whole, Whole_Get607),
  879		  set_var(Env, sys_xx_dl_xx, [c38_aux, Env_Get606, Whole_Get607]),
  880		  get_var(Env, sys_vl, Vl_Get608),
  881		  get_var(Env, sys_whole, Whole_Get609),
  882		  f_sys_dm_vl1(Vl_Get608, Whole_Get609, t, T),
  883		  set_var(Env, sys_ppn, T),
  884		  get_var(Env, sys_xx_key_check_xx, Xx_key_check_xx_Get),
  885		  BV=bv(sys_kc, Ele),
  886		  Env2=[BV|Env],
  887		  forall(member(Ele, Xx_key_check_xx_Get),
  888			 ( nb_setarg(2, BV, Ele),
  889			   sf_push(Env2,
  890				   
  891				   [ '#BQ',
  892				     
  893				     [ unless,
  894				       
  895				       [ getf,
  896					 ['#COMMA', [car, sys_kc]],
  897					 kw_allow_other_keys
  898				       ],
  899				       
  900				       [ do,
  901					 
  902					 [ 
  903					   [ sys_vl,
  904					     ['#COMMA', [car, sys_kc]],
  905					     [cddr, sys_vl]
  906					   ]
  907					 ],
  908					 [[endp, sys_vl]],
  909					 
  910					 [ unless,
  911					   
  912					   [ member,
  913					     [car, sys_vl],
  914					     [quote, ['#COMMA', [cdr, sys_kc]]]
  915					   ],
  916					   
  917					   [ sys_dm_key_not_allowed,
  918					     [car, sys_vl]
  919					   ]
  920					 ]
  921				       ]
  922				     ]
  923				   ],
  924				   sys_body,
  925				   Body)
  926			 )),
  927		  get_var(Env, sys_xx_arg_check_xx, Xx_arg_check_xx_Get),
  928		  BV616=bv(sys_ac, Ele618),
  929		  Env2617=[BV616|Env],
  930		  forall(member(Ele618, Xx_arg_check_xx_Get),
  931			 ( nb_setarg(2, BV616, Ele618),
  932			   sf_push(Env2617,
  933				   
  934				   [ '#BQ',
  935				     
  936				     [ unless,
  937				       
  938				       [ endp,
  939					 
  940					 [ '#COMMA',
  941					   
  942					   [ sys_dm_nth_cdr,
  943					     [cdr, sys_ac],
  944					     [car, sys_ac]
  945					   ]
  946					 ]
  947				       ],
  948				       [sys_dm_too_many_arguments]
  949				     ]
  950				   ],
  951				   sys_body,
  952				   Body648)
  953			 )),
  954		  get_var(Env, sys_name, Name_Get),
  955		  get_var(Env, sys_xx_dl_xx, Xx_dl_xx_Get),
  956		  f_nreverse(Xx_dl_xx_Get, Nreverse_Ret),
  957		  get_var(Env, sys_body, Body_Get623),
  958		  get_var(Env, sys_decls, Decls_Get),
  959		  f_nconc([Decls_Get, Body_Get623], Nconc_Ret),
  960		  get_var(Env, sys_doc, Doc_Get),
  961		  get_var(Env, sys_ppn, Ppn_Get625),
  962		  nb_setval('$mv_return',
  963			    
  964			    [ 
  965			      [ sys_lambda_block,
  966				Name_Get,
  967				Nreverse_Ret
  968			      | Nconc_Ret
  969			      ],
  970			      Doc_Get,
  971			      Ppn_Get625
  972			    ])
  973		),
  974		[sys_lambda_block, Name_Get, Nreverse_Ret|Nconc_Ret]=FnResult
  975	      ),
  976	      block_exit(sys_expand_defmacro, FnResult),
  977	      true).
  978:- set_opv(sys_expand_defmacro, symbol_function, f_sys_expand_defmacro),
  979   DefunResult=sys_expand_defmacro.  980/*
  981:- side_effect(assert_lsp(sys_expand_defmacro,
  982			  lambda_def(defun,
  983				     sys_expand_defmacro,
  984				     f_sys_expand_defmacro,
  985				     
  986				     [ sys_name,
  987				       sys_vl,
  988				       sys_body,
  989				       c38_aux,
  990				       sys_xx_dl_xx,
  991				       [sys_xx_key_check_xx, []],
  992				       [sys_xx_arg_check_xx, []],
  993				       sys_doc,
  994				       sys_decls,
  995				       sys_whole,
  996				       sys_ppn,
  997				       [sys_env, []],
  998				       [sys_envp, []]
  999				     ],
 1000				     
 1001				     [ 
 1002				       [ labels,
 1003					 
 1004					 [ 
 1005					   [ sys_dm_vl,
 1006					     [sys_vl, sys_whole, sys_top],
 1007					     
 1008					     [ do,
 1009					       
 1010					       [ [sys_optionalp],
 1011						 [sys_restp],
 1012						 [sys_keyp],
 1013						 [sys_allow_other_keys_p],
 1014						 [sys_auxp],
 1015						 [rest],
 1016						 [sys_allow_other_keys],
 1017						 [sys_keys],
 1018						 [sys_no_check],
 1019						 [sys_n, [if, sys_top, 1, 0]],
 1020						 [sys_ppn, 0],
 1021						 [sys_v]
 1022					       ],
 1023					       
 1024					       [ [not, [consp, sys_vl]],
 1025						 
 1026						 [ when,
 1027						   sys_vl,
 1028						   
 1029						   [ when,
 1030						     sys_restp,
 1031						     
 1032						     [ sys_dm_bad_key,
 1033						       [quote, c38_rest]
 1034						     ]
 1035						   ],
 1036						   
 1037						   [ push,
 1038						     
 1039						     [ list,
 1040						       sys_vl,
 1041						       
 1042						       [ sys_dm_nth_cdr,
 1043							 sys_n,
 1044							 sys_whole
 1045						       ]
 1046						     ],
 1047						     sys_xx_dl_xx
 1048						   ],
 1049						   [setq, sys_no_check, t]
 1050						 ],
 1051						 
 1052						 [ when,
 1053						   
 1054						   [ and,
 1055						     rest,
 1056						     
 1057						     [ not,
 1058						       sys_allow_other_keys
 1059						     ]
 1060						   ],
 1061						   
 1062						   [ push,
 1063						     [cons, rest, sys_keys],
 1064						     sys_xx_key_check_xx
 1065						   ]
 1066						 ],
 1067						 
 1068						 [ unless,
 1069						   sys_no_check,
 1070						   
 1071						   [ push,
 1072						     [cons, sys_whole, sys_n],
 1073						     sys_xx_arg_check_xx
 1074						   ]
 1075						 ],
 1076						 sys_ppn
 1077					       ],
 1078					       
 1079					       [ declare,
 1080						 [fixnum, sys_n, sys_ppn]
 1081					       ],
 1082					       [setq, sys_v, [car, sys_vl]],
 1083					       
 1084					       [ cond,
 1085						 
 1086						 [ 
 1087						   [ eq,
 1088						     sys_v,
 1089						     [quote, c38_optional]
 1090						   ],
 1091						   
 1092						   [ when,
 1093						     sys_optionalp,
 1094						     
 1095						     [ sys_dm_bad_key,
 1096						       [quote, c38_optional]
 1097						     ]
 1098						   ],
 1099						   [setq, sys_optionalp, t],
 1100						   [pop, sys_vl]
 1101						 ],
 1102						 
 1103						 [ 
 1104						   [ or,
 1105						     
 1106						     [ eq,
 1107						       sys_v,
 1108						       [quote, c38_rest]
 1109						     ],
 1110						     
 1111						     [ eq,
 1112						       sys_v,
 1113						       [quote, c38_body]
 1114						     ]
 1115						   ],
 1116						   
 1117						   [ when,
 1118						     sys_restp,
 1119						     [sys_dm_bad_key, sys_v]
 1120						   ],
 1121						   
 1122						   [ sys_dm_v,
 1123						     [second, sys_vl],
 1124						     
 1125						     [ sys_dm_nth_cdr,
 1126						       sys_n,
 1127						       sys_whole
 1128						     ]
 1129						   ],
 1130						   
 1131						   [ setq,
 1132						     sys_restp,
 1133						     t,
 1134						     sys_optionalp,
 1135						     t,
 1136						     sys_no_check,
 1137						     t
 1138						   ],
 1139						   [setq, sys_vl, [cddr, sys_vl]],
 1140						   
 1141						   [ when,
 1142						     
 1143						     [ eq,
 1144						       sys_v,
 1145						       [quote, c38_body]
 1146						     ],
 1147						     
 1148						     [ setq,
 1149						       sys_ppn,
 1150						       
 1151						       [ if,
 1152							 sys_top,
 1153							 
 1154							 [ the,
 1155							   fixnum,
 1156							   ['1-', sys_n]
 1157							 ],
 1158							 sys_n
 1159						       ]
 1160						     ]
 1161						   ]
 1162						 ],
 1163						 
 1164						 [ [eq, sys_v, [quote, c38_key]],
 1165						   
 1166						   [ when,
 1167						     sys_keyp,
 1168						     
 1169						     [ sys_dm_bad_key,
 1170						       [quote, c38_key]
 1171						     ]
 1172						   ],
 1173						   [setq, rest, [gensym]],
 1174						   
 1175						   [ push,
 1176						     
 1177						     [ list,
 1178						       rest,
 1179						       
 1180						       [ sys_dm_nth_cdr,
 1181							 sys_n,
 1182							 sys_whole
 1183						       ]
 1184						     ],
 1185						     sys_xx_dl_xx
 1186						   ],
 1187						   
 1188						   [ setq,
 1189						     sys_keyp,
 1190						     t,
 1191						     sys_restp,
 1192						     t,
 1193						     sys_optionalp,
 1194						     t,
 1195						     sys_no_check,
 1196						     t
 1197						   ],
 1198						   [pop, sys_vl]
 1199						 ],
 1200						 
 1201						 [ 
 1202						   [ eq,
 1203						     sys_v,
 1204						     
 1205						     [ quote,
 1206						       c38_allow_other_keys
 1207						     ]
 1208						   ],
 1209						   
 1210						   [ when,
 1211						     
 1212						     [ or,
 1213						       [not, sys_keyp],
 1214						       sys_allow_other_keys_p
 1215						     ],
 1216						     
 1217						     [ sys_dm_bad_key,
 1218						       
 1219						       [ quote,
 1220							 c38_allow_other_keys
 1221						       ]
 1222						     ]
 1223						   ],
 1224						   
 1225						   [ setq,
 1226						     sys_allow_other_keys_p,
 1227						     t
 1228						   ],
 1229						   
 1230						   [ setq,
 1231						     sys_allow_other_keys,
 1232						     t
 1233						   ],
 1234						   [pop, sys_vl]
 1235						 ],
 1236						 
 1237						 [ [eq, sys_v, [quote, c38_aux]],
 1238						   
 1239						   [ when,
 1240						     sys_auxp,
 1241						     
 1242						     [ sys_dm_bad_key,
 1243						       [quote, c38_aux]
 1244						     ]
 1245						   ],
 1246						   
 1247						   [ setq,
 1248						     sys_auxp,
 1249						     t,
 1250						     sys_allow_other_keys_p,
 1251						     t,
 1252						     sys_keyp,
 1253						     t,
 1254						     sys_restp,
 1255						     t,
 1256						     sys_optionalp,
 1257						     t
 1258						   ],
 1259						   [pop, sys_vl]
 1260						 ],
 1261						 
 1262						 [ sys_auxp,
 1263						   
 1264						   [ let,
 1265						     [sys_x, [sys_init, []]],
 1266						     
 1267						     [ cond,
 1268						       
 1269						       [ [symbolp, sys_v],
 1270							 [setq, sys_x, sys_v]
 1271						       ],
 1272						       
 1273						       [ t,
 1274							 
 1275							 [ setq,
 1276							   sys_x,
 1277							   [car, sys_v]
 1278							 ],
 1279							 
 1280							 [ unless,
 1281							   [endp, [cdr, sys_v]],
 1282							   
 1283							   [ setq,
 1284							     sys_init,
 1285							     [second, sys_v]
 1286							   ]
 1287							 ]
 1288						       ]
 1289						     ],
 1290						     [sys_dm_v, sys_x, sys_init]
 1291						   ],
 1292						   [pop, sys_vl]
 1293						 ],
 1294						 
 1295						 [ sys_keyp,
 1296						   
 1297						   [ let,
 1298						     
 1299						     [ [sys_temp, [gensym]],
 1300						       sys_x,
 1301						       sys_k,
 1302						       [sys_init, []],
 1303						       [sys_sv, []]
 1304						     ],
 1305						     
 1306						     [ cond,
 1307						       
 1308						       [ [symbolp, sys_v],
 1309							 
 1310							 [ setq,
 1311							   sys_x,
 1312							   sys_v,
 1313							   sys_k,
 1314							   
 1315							   [ intern,
 1316							     [string, sys_v],
 1317							     [quote, keyword]
 1318							   ]
 1319							 ]
 1320						       ],
 1321						       
 1322						       [ t,
 1323							 
 1324							 [ if,
 1325							   
 1326							   [ symbolp,
 1327							     [car, sys_v]
 1328							   ],
 1329							   
 1330							   [ setq,
 1331							     sys_x,
 1332							     [car, sys_v],
 1333							     sys_k,
 1334							     
 1335							     [ intern,
 1336							       
 1337							       [ string,
 1338								 [car, sys_v]
 1339							       ],
 1340							       [quote, keyword]
 1341							     ]
 1342							   ],
 1343							   
 1344							   [ setq,
 1345							     sys_x,
 1346							     [cadar, sys_v],
 1347							     sys_k,
 1348							     [caar, sys_v]
 1349							   ]
 1350							 ],
 1351							 
 1352							 [ unless,
 1353							   [endp, [cdr, sys_v]],
 1354							   
 1355							   [ setq,
 1356							     sys_init,
 1357							     [second, sys_v]
 1358							   ],
 1359							   
 1360							   [ unless,
 1361							     [endp, [cddr, sys_v]],
 1362							     
 1363							     [ setq,
 1364							       sys_sv,
 1365							       [caddr, sys_v]
 1366							     ]
 1367							   ]
 1368							 ]
 1369						       ]
 1370						     ],
 1371						     
 1372						     [ sys_dm_v,
 1373						       sys_temp,
 1374						       
 1375						       [ '#BQ',
 1376							 
 1377							 [ getf,
 1378							   ['#COMMA', rest],
 1379							   ['#COMMA', sys_k],
 1380							   [quote, sys_failed]
 1381							 ]
 1382						       ]
 1383						     ],
 1384						     
 1385						     [ sys_dm_v,
 1386						       sys_x,
 1387						       
 1388						       [ '#BQ',
 1389							 
 1390							 [ if,
 1391							   
 1392							   [ eq,
 1393							     ['#COMMA', sys_temp],
 1394							     [quote, sys_failed]
 1395							   ],
 1396							   ['#COMMA', sys_init],
 1397							   ['#COMMA', sys_temp]
 1398							 ]
 1399						       ]
 1400						     ],
 1401						     
 1402						     [ when,
 1403						       sys_sv,
 1404						       
 1405						       [ sys_dm_v,
 1406							 sys_sv,
 1407							 
 1408							 [ '#BQ',
 1409							   
 1410							   [ not,
 1411							     
 1412							     [ eq,
 1413							       ['#COMMA', sys_temp],
 1414							       [quote, sys_failed]
 1415							     ]
 1416							   ]
 1417							 ]
 1418						       ]
 1419						     ],
 1420						     [push, sys_k, sys_keys]
 1421						   ],
 1422						   [pop, sys_vl]
 1423						 ],
 1424						 
 1425						 [ sys_optionalp,
 1426						   
 1427						   [ let,
 1428						     
 1429						     [ sys_x,
 1430						       [sys_init, []],
 1431						       [sys_sv, []]
 1432						     ],
 1433						     
 1434						     [ cond,
 1435						       
 1436						       [ [symbolp, sys_v],
 1437							 [setq, sys_x, sys_v]
 1438						       ],
 1439						       
 1440						       [ t,
 1441							 
 1442							 [ setq,
 1443							   sys_x,
 1444							   [car, sys_v]
 1445							 ],
 1446							 
 1447							 [ unless,
 1448							   [endp, [cdr, sys_v]],
 1449							   
 1450							   [ setq,
 1451							     sys_init,
 1452							     [second, sys_v]
 1453							   ],
 1454							   
 1455							   [ unless,
 1456							     [endp, [cddr, sys_v]],
 1457							     
 1458							     [ setq,
 1459							       sys_sv,
 1460							       [caddr, sys_v]
 1461							     ]
 1462							   ]
 1463							 ]
 1464						       ]
 1465						     ],
 1466						     
 1467						     [ sys_dm_v,
 1468						       sys_x,
 1469						       
 1470						       [ '#BQ',
 1471							 
 1472							 [ if,
 1473							   
 1474							   [ '#COMMA',
 1475							     
 1476							     [ sys_dm_nth_cdr,
 1477							       sys_n,
 1478							       sys_whole
 1479							     ]
 1480							   ],
 1481							   
 1482							   [ '#COMMA',
 1483							     
 1484							     [ sys_dm_nth,
 1485							       sys_n,
 1486							       sys_whole
 1487							     ]
 1488							   ],
 1489							   ['#COMMA', sys_init]
 1490							 ]
 1491						       ]
 1492						     ],
 1493						     
 1494						     [ when,
 1495						       sys_sv,
 1496						       
 1497						       [ sys_dm_v,
 1498							 sys_sv,
 1499							 
 1500							 [ '#BQ',
 1501							   
 1502							   [ not,
 1503							     
 1504							     [ null,
 1505							       
 1506							       [ '#COMMA',
 1507								 
 1508								 [ sys_dm_nth_cdr,
 1509								   sys_n,
 1510								   sys_whole
 1511								 ]
 1512							       ]
 1513							     ]
 1514							   ]
 1515							 ]
 1516						       ]
 1517						     ]
 1518						   ],
 1519						   [incf, sys_n],
 1520						   [pop, sys_vl]
 1521						 ],
 1522						 
 1523						 [ t,
 1524						   
 1525						   [ sys_dm_v,
 1526						     sys_v,
 1527						     
 1528						     [ '#BQ',
 1529						       
 1530						       [ if,
 1531							 
 1532							 [ '#COMMA',
 1533							   
 1534							   [ sys_dm_nth_cdr,
 1535							     sys_n,
 1536							     sys_whole
 1537							   ]
 1538							 ],
 1539							 
 1540							 [ '#COMMA',
 1541							   
 1542							   [ sys_dm_nth,
 1543							     sys_n,
 1544							     sys_whole
 1545							   ]
 1546							 ],
 1547							 
 1548							 [ sys_dm_too_few_arguments
 1549							 ]
 1550						       ]
 1551						     ]
 1552						   ],
 1553						   [incf, sys_n],
 1554						   [pop, sys_vl]
 1555						 ]
 1556					       ]
 1557					     ]
 1558					   ],
 1559					   
 1560					   [ sys_dm_v,
 1561					     [sys_v, sys_init],
 1562					     
 1563					     [ if,
 1564					       [symbolp, sys_v],
 1565					       
 1566					       [ push,
 1567						 
 1568						 [ if,
 1569						   sys_init,
 1570						   [list, sys_v, sys_init],
 1571						   sys_v
 1572						 ],
 1573						 sys_xx_dl_xx
 1574					       ],
 1575					       
 1576					       [ let,
 1577						 [[sys_temp, [gensym]]],
 1578						 
 1579						 [ push,
 1580						   
 1581						   [ if,
 1582						     sys_init,
 1583						     [list, sys_temp, sys_init],
 1584						     sys_temp
 1585						   ],
 1586						   sys_xx_dl_xx
 1587						 ],
 1588						 [sys_dm_vl, sys_v, sys_temp, []]
 1589					       ]
 1590					     ]
 1591					   ],
 1592					   
 1593					   [ sys_dm_nth,
 1594					     [sys_n, sys_v],
 1595					     
 1596					     [ multiple_value_bind,
 1597					       [sys_q, sys_r],
 1598					       [floor, sys_n, 4],
 1599					       [declare, [fixnum, sys_q, sys_r]],
 1600					       
 1601					       [ dotimes,
 1602						 [sys_i, sys_q],
 1603						 
 1604						 [ setq,
 1605						   sys_v,
 1606						   [list, [quote, cddddr], sys_v]
 1607						 ]
 1608					       ],
 1609					       
 1610					       [ case,
 1611						 sys_r,
 1612						 [0, [list, [quote, car], sys_v]],
 1613						 [1, [list, [quote, cadr], sys_v]],
 1614						 
 1615						 [ 2,
 1616						   [list, [quote, caddr], sys_v]
 1617						 ],
 1618						 
 1619						 [ 3,
 1620						   [list, [quote, cadddr], sys_v]
 1621						 ]
 1622					       ]
 1623					     ]
 1624					   ],
 1625					   
 1626					   [ sys_dm_nth_cdr,
 1627					     [sys_n, sys_v],
 1628					     
 1629					     [ multiple_value_bind,
 1630					       [sys_q, sys_r],
 1631					       [floor, sys_n, 4],
 1632					       [declare, [fixnum, sys_q, sys_r]],
 1633					       
 1634					       [ dotimes,
 1635						 [sys_i, sys_q],
 1636						 
 1637						 [ setq,
 1638						   sys_v,
 1639						   [list, [quote, cddddr], sys_v]
 1640						 ]
 1641					       ],
 1642					       
 1643					       [ case,
 1644						 sys_r,
 1645						 [0, sys_v],
 1646						 [1, [list, [quote, cdr], sys_v]],
 1647						 [2, [list, [quote, cddr], sys_v]],
 1648						 
 1649						 [ 3,
 1650						   [list, [quote, cdddr], sys_v]
 1651						 ]
 1652					       ]
 1653					     ]
 1654					   ]
 1655					 ],
 1656					 
 1657					 [ cond,
 1658					   [[listp, sys_vl]],
 1659					   
 1660					   [ [symbolp, sys_vl],
 1661					     
 1662					     [ setq,
 1663					       sys_vl,
 1664					       [list, [quote, c38_rest], sys_vl]
 1665					     ]
 1666					   ],
 1667					   
 1668					   [ t,
 1669					     
 1670					     [ error,
 1671					       '$ARRAY'([*],
 1672							claz_base_character,
 1673							"The defmacro-lambda-list ~s is not a list."),
 1674					       sys_vl
 1675					     ]
 1676					   ]
 1677					 ],
 1678					 
 1679					 [ multiple_value_setq,
 1680					   [sys_doc, sys_decls, sys_body],
 1681					   [sys_find_doc, sys_body, []]
 1682					 ],
 1683					 
 1684					 [ if,
 1685					   
 1686					   [ and,
 1687					     [listp, sys_vl],
 1688					     
 1689					     [ eq,
 1690					       [car, sys_vl],
 1691					       [quote, c38_whole]
 1692					     ]
 1693					   ],
 1694					   
 1695					   [ setq,
 1696					     sys_whole,
 1697					     [second, sys_vl],
 1698					     sys_vl,
 1699					     [cddr, sys_vl]
 1700					   ],
 1701					   [setq, sys_whole, [gensym]]
 1702					 ],
 1703					 
 1704					 [ if,
 1705					   
 1706					   [ setq,
 1707					     sys_env,
 1708					     
 1709					     [ member,
 1710					       [quote, c38_environment],
 1711					       sys_vl,
 1712					       kw_test,
 1713					       function(eq)
 1714					     ]
 1715					   ],
 1716					   
 1717					   [ setq,
 1718					     sys_vl,
 1719					     
 1720					     [ nconc,
 1721					       [ldiff, sys_vl, sys_env],
 1722					       [cddr, sys_env]
 1723					     ],
 1724					     sys_env,
 1725					     [second, sys_env]
 1726					   ],
 1727					   
 1728					   [ progn,
 1729					     [setq, sys_env, [gensym]],
 1730					     
 1731					     [ push,
 1732					       
 1733					       [ '#BQ',
 1734						 
 1735						 [ declare,
 1736						   [ignore, ['#COMMA', sys_env]]
 1737						 ]
 1738					       ],
 1739					       sys_decls
 1740					     ]
 1741					   ]
 1742					 ],
 1743					 
 1744					 [ setq,
 1745					   sys_xx_dl_xx,
 1746					   
 1747					   [ '#BQ',
 1748					     
 1749					     [ c38_aux,
 1750					       ['#COMMA', sys_env],
 1751					       ['#COMMA', sys_whole]
 1752					     ]
 1753					   ]
 1754					 ],
 1755					 
 1756					 [ setq,
 1757					   sys_ppn,
 1758					   [sys_dm_vl, sys_vl, sys_whole, t]
 1759					 ],
 1760					 
 1761					 [ dolist,
 1762					   [sys_kc, sys_xx_key_check_xx],
 1763					   
 1764					   [ push,
 1765					     
 1766					     [ '#BQ',
 1767					       
 1768					       [ unless,
 1769						 
 1770						 [ getf,
 1771						   ['#COMMA', [car, sys_kc]],
 1772						   kw_allow_other_keys
 1773						 ],
 1774						 
 1775						 [ do,
 1776						   
 1777						   [ 
 1778						     [ sys_vl,
 1779						       ['#COMMA', [car, sys_kc]],
 1780						       [cddr, sys_vl]
 1781						     ]
 1782						   ],
 1783						   [[endp, sys_vl]],
 1784						   
 1785						   [ unless,
 1786						     
 1787						     [ member,
 1788						       [car, sys_vl],
 1789						       
 1790						       [ quote,
 1791							 
 1792							 [ '#COMMA',
 1793							   [cdr, sys_kc]
 1794							 ]
 1795						       ]
 1796						     ],
 1797						     
 1798						     [ sys_dm_key_not_allowed,
 1799						       [car, sys_vl]
 1800						     ]
 1801						   ]
 1802						 ]
 1803					       ]
 1804					     ],
 1805					     sys_body
 1806					   ]
 1807					 ],
 1808					 
 1809					 [ dolist,
 1810					   [sys_ac, sys_xx_arg_check_xx],
 1811					   
 1812					   [ push,
 1813					     
 1814					     [ '#BQ',
 1815					       
 1816					       [ unless,
 1817						 
 1818						 [ endp,
 1819						   
 1820						   [ '#COMMA',
 1821						     
 1822						     [ sys_dm_nth_cdr,
 1823						       [cdr, sys_ac],
 1824						       [car, sys_ac]
 1825						     ]
 1826						   ]
 1827						 ],
 1828						 [sys_dm_too_many_arguments]
 1829					       ]
 1830					     ],
 1831					     sys_body
 1832					   ]
 1833					 ],
 1834					 
 1835					 [ values,
 1836					   
 1837					   [ '#BQ',
 1838					     
 1839					     [ sys_lambda_block,
 1840					       ['#COMMA', sys_name],
 1841					       
 1842					       [ '#COMMA',
 1843						 [nreverse, sys_xx_dl_xx]
 1844					       ],
 1845					       
 1846					       [ '#BQ-COMMA-ELIPSE',
 1847						 [nconc, sys_decls, sys_body]
 1848					       ]
 1849					     ]
 1850					   ],
 1851					   sys_doc,
 1852					   sys_ppn
 1853					 ]
 1854				       ]
 1855				     ]))).
 1856*/
 1857/*
 1858:- side_effect(assert_lsp(sys_expand_defmacro,
 1859			  arglist_info(sys_expand_defmacro,
 1860				       f_sys_expand_defmacro,
 1861				       
 1862				       [ sys_name,
 1863					 sys_vl,
 1864					 sys_body,
 1865					 c38_aux,
 1866					 sys_xx_dl_xx,
 1867					 [sys_xx_key_check_xx, []],
 1868					 [sys_xx_arg_check_xx, []],
 1869					 sys_doc,
 1870					 sys_decls,
 1871					 sys_whole,
 1872					 sys_ppn,
 1873					 [sys_env, []],
 1874					 [sys_envp, []]
 1875				       ],
 1876				       arginfo{ all:[sys_name, sys_vl, sys_body],
 1877						allow_other_keys:0,
 1878						aux:
 1879						    [ sys_xx_dl_xx,
 1880						      sys_xx_key_check_xx,
 1881						      sys_xx_arg_check_xx,
 1882						      sys_doc,
 1883						      sys_decls,
 1884						      sys_whole,
 1885						      sys_ppn,
 1886						      sys_env,
 1887						      sys_envp
 1888						    ],
 1889						body:0,
 1890						complex:0,
 1891						env:0,
 1892						key:0,
 1893						names:
 1894						      [ sys_name,
 1895							sys_vl,
 1896							sys_body,
 1897							sys_xx_dl_xx,
 1898							sys_xx_key_check_xx,
 1899							sys_xx_arg_check_xx,
 1900							sys_doc,
 1901							sys_decls,
 1902							sys_whole,
 1903							sys_ppn,
 1904							sys_env,
 1905							sys_envp
 1906						      ],
 1907						opt:0,
 1908						req:[sys_name, sys_vl, sys_body],
 1909						rest:0,
 1910						sublists:0,
 1911						whole:0
 1912					      }))).
 1913*/
 1914/*
 1915:- side_effect(assert_lsp(sys_expand_defmacro,
 1916			  init_args(3, f_sys_expand_defmacro))).
 1917*/
 1918/*
 1919(defun dm-bad-key (key)
 1920       (error "Defmacro-lambda-list contains illegal use of fmt90_x1." key))
 1921
 1922*/
 1923
 1924/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:6513 **********************/
 1925:-lisp_compile_to_prolog(pkg_sys,[defun,'dm-bad-key',[key],[error,'$STRING'("Defmacro-lambda-list contains illegal use of ~s."),key]])
 1926/*
 1927:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
 1928					       sys_dm_bad_key,
 1929					       kw_function,
 1930					       f_sys_dm_bad_key)).
 1931*/
 1932wl:lambda_def(defun, sys_dm_bad_key, f_sys_dm_bad_key, [key], [[error, '$ARRAY'([*], claz_base_character, "Defmacro-lambda-list contains illegal use of ~s."), key]]).
 1933wl:arglist_info(sys_dm_bad_key, f_sys_dm_bad_key, [key], arginfo{all:[key], allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[key], opt:0, req:[key], rest:0, sublists:0, whole:0}).
 1934wl: init_args(x, f_sys_dm_bad_key).
 1935
 1936/*
 1937
 1938### Compiled Function: `SYS::DM-BAD-KEY` 
 1939*/
 1940f_sys_dm_bad_key(Key_In, FnResult) :-
 1941	GEnv=[bv(key, Key_In)],
 1942	catch(( ( get_var(GEnv, key, Key_Get),
 1943		  f_error(
 1944			  [ '$ARRAY'([*],
 1945				     claz_base_character,
 1946				     "Defmacro-lambda-list contains illegal use of ~s."),
 1947			    Key_Get
 1948			  ],
 1949			  Error_Ret)
 1950		),
 1951		Error_Ret=FnResult
 1952	      ),
 1953	      block_exit(sys_dm_bad_key, FnResult),
 1954	      true).
 1955:- set_opv(sys_dm_bad_key, symbol_function, f_sys_dm_bad_key),
 1956   DefunResult=sys_dm_bad_key. 1957/*
 1958:- side_effect(assert_lsp(sys_dm_bad_key,
 1959			  lambda_def(defun,
 1960				     sys_dm_bad_key,
 1961				     f_sys_dm_bad_key,
 1962				     [key],
 1963				     
 1964				     [ 
 1965				       [ error,
 1966					 '$ARRAY'([*],
 1967						  claz_base_character,
 1968						  "Defmacro-lambda-list contains illegal use of ~s."),
 1969					 key
 1970				       ]
 1971				     ]))).
 1972*/
 1973/*
 1974:- side_effect(assert_lsp(sys_dm_bad_key,
 1975			  arglist_info(sys_dm_bad_key,
 1976				       f_sys_dm_bad_key,
 1977				       [key],
 1978				       arginfo{ all:[key],
 1979						allow_other_keys:0,
 1980						aux:0,
 1981						body:0,
 1982						complex:0,
 1983						env:0,
 1984						key:0,
 1985						names:[key],
 1986						opt:0,
 1987						req:[key],
 1988						rest:0,
 1989						sublists:0,
 1990						whole:0
 1991					      }))).
 1992*/
 1993/*
 1994:- side_effect(assert_lsp(sys_dm_bad_key, init_args(x, f_sys_dm_bad_key))).
 1995*/
 1996/*
 1997(defun dm-too-few-arguments ()
 1998       (error "Too few arguments are supplied to defmacro-lambda-list."))
 1999
 2000*/
 2001
 2002/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:6609 **********************/
 2003:-lisp_compile_to_prolog(pkg_sys,[defun,'dm-too-few-arguments',[],[error,'$STRING'("Too few arguments are supplied to defmacro-lambda-list.")]])
 2004/*
 2005:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
 2006					       sys_dm_too_few_arguments,
 2007					       kw_function,
 2008					       f_sys_dm_too_few_arguments)).
 2009*/
 2010wl:lambda_def(defun, sys_dm_too_few_arguments, f_sys_dm_too_few_arguments, [], [[error, '$ARRAY'([*], claz_base_character, "Too few arguments are supplied to defmacro-lambda-list.")]]).
 2011wl:arglist_info(sys_dm_too_few_arguments, f_sys_dm_too_few_arguments, [], arginfo{all:0, allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[], opt:0, req:0, rest:0, sublists:0, whole:0}).
 2012wl: init_args(x, f_sys_dm_too_few_arguments).
 2013
 2014/*
 2015
 2016### Compiled Function: `SYS::DM-TOO-FEW-ARGUMENTS` 
 2017*/
 2018f_sys_dm_too_few_arguments(FnResult) :-
 2019	_3768=[],
 2020	catch(( f_error(
 2021			[ '$ARRAY'([*],
 2022				   claz_base_character,
 2023				   "Too few arguments are supplied to defmacro-lambda-list.")
 2024			],
 2025			Error_Ret),
 2026		Error_Ret=FnResult
 2027	      ),
 2028	      block_exit(sys_dm_too_few_arguments, FnResult),
 2029	      true).
 2030:- set_opv(sys_dm_too_few_arguments,
 2031	   symbol_function,
 2032	   f_sys_dm_too_few_arguments),
 2033   DefunResult=sys_dm_too_few_arguments. 2034/*
 2035:- side_effect(assert_lsp(sys_dm_too_few_arguments,
 2036			  lambda_def(defun,
 2037				     sys_dm_too_few_arguments,
 2038				     f_sys_dm_too_few_arguments,
 2039				     [],
 2040				     
 2041				     [ 
 2042				       [ error,
 2043					 '$ARRAY'([*],
 2044						  claz_base_character,
 2045						  "Too few arguments are supplied to defmacro-lambda-list.")
 2046				       ]
 2047				     ]))).
 2048*/
 2049/*
 2050:- side_effect(assert_lsp(sys_dm_too_few_arguments,
 2051			  arglist_info(sys_dm_too_few_arguments,
 2052				       f_sys_dm_too_few_arguments,
 2053				       [],
 2054				       arginfo{ all:0,
 2055						allow_other_keys:0,
 2056						aux:0,
 2057						body:0,
 2058						complex:0,
 2059						env:0,
 2060						key:0,
 2061						names:[],
 2062						opt:0,
 2063						req:0,
 2064						rest:0,
 2065						sublists:0,
 2066						whole:0
 2067					      }))).
 2068*/
 2069/*
 2070:- side_effect(assert_lsp(sys_dm_too_few_arguments,
 2071			  init_args(x, f_sys_dm_too_few_arguments))).
 2072*/
 2073/*
 2074(defun dm-too-many-arguments ()
 2075       (error "Too many arguments are supplied to defmacro-lambda-list."))
 2076
 2077*/
 2078
 2079/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:6715 **********************/
 2080:-lisp_compile_to_prolog(pkg_sys,[defun,'dm-too-many-arguments',[],[error,'$STRING'("Too many arguments are supplied to defmacro-lambda-list.")]])
 2081/*
 2082:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
 2083					       sys_dm_too_many_arguments,
 2084					       kw_function,
 2085					       f_sys_dm_too_many_arguments)).
 2086*/
 2087wl:lambda_def(defun, sys_dm_too_many_arguments, f_sys_dm_too_many_arguments, [], [[error, '$ARRAY'([*], claz_base_character, "Too many arguments are supplied to defmacro-lambda-list.")]]).
 2088wl:arglist_info(sys_dm_too_many_arguments, f_sys_dm_too_many_arguments, [], arginfo{all:0, allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[], opt:0, req:0, rest:0, sublists:0, whole:0}).
 2089wl: init_args(x, f_sys_dm_too_many_arguments).
 2090
 2091/*
 2092
 2093### Compiled Function: `SYS::DM-TOO-MANY-ARGUMENTS` 
 2094*/
 2095f_sys_dm_too_many_arguments(FnResult) :-
 2096	_3778=[],
 2097	catch(( f_error(
 2098			[ '$ARRAY'([*],
 2099				   claz_base_character,
 2100				   "Too many arguments are supplied to defmacro-lambda-list.")
 2101			],
 2102			Error_Ret),
 2103		Error_Ret=FnResult
 2104	      ),
 2105	      block_exit(sys_dm_too_many_arguments, FnResult),
 2106	      true).
 2107:- set_opv(sys_dm_too_many_arguments,
 2108	   symbol_function,
 2109	   f_sys_dm_too_many_arguments),
 2110   DefunResult=sys_dm_too_many_arguments. 2111/*
 2112:- side_effect(assert_lsp(sys_dm_too_many_arguments,
 2113			  lambda_def(defun,
 2114				     sys_dm_too_many_arguments,
 2115				     f_sys_dm_too_many_arguments,
 2116				     [],
 2117				     
 2118				     [ 
 2119				       [ error,
 2120					 '$ARRAY'([*],
 2121						  claz_base_character,
 2122						  "Too many arguments are supplied to defmacro-lambda-list.")
 2123				       ]
 2124				     ]))).
 2125*/
 2126/*
 2127:- side_effect(assert_lsp(sys_dm_too_many_arguments,
 2128			  arglist_info(sys_dm_too_many_arguments,
 2129				       f_sys_dm_too_many_arguments,
 2130				       [],
 2131				       arginfo{ all:0,
 2132						allow_other_keys:0,
 2133						aux:0,
 2134						body:0,
 2135						complex:0,
 2136						env:0,
 2137						key:0,
 2138						names:[],
 2139						opt:0,
 2140						req:0,
 2141						rest:0,
 2142						sublists:0,
 2143						whole:0
 2144					      }))).
 2145*/
 2146/*
 2147:- side_effect(assert_lsp(sys_dm_too_many_arguments,
 2148			  init_args(x, f_sys_dm_too_many_arguments))).
 2149*/
 2150/*
 2151(defun dm-key-not-allowed (key)
 2152       (error "The key fmt90_x1 is not allowed." key))
 2153
 2154*/
 2155
 2156/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:6823 **********************/
 2157:-lisp_compile_to_prolog(pkg_sys,[defun,'dm-key-not-allowed',[key],[error,'$STRING'("The key ~s is not allowed."),key]])
 2158/*
 2159:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
 2160					       sys_dm_key_not_allowed,
 2161					       kw_function,
 2162					       f_sys_dm_key_not_allowed)).
 2163*/
 2164wl:lambda_def(defun, sys_dm_key_not_allowed, f_sys_dm_key_not_allowed, [key], [[error, '$ARRAY'([*], claz_base_character, "The key ~s is not allowed."), key]]).
 2165wl:arglist_info(sys_dm_key_not_allowed, f_sys_dm_key_not_allowed, [key], arginfo{all:[key], allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[key], opt:0, req:[key], rest:0, sublists:0, whole:0}).
 2166wl: init_args(x, f_sys_dm_key_not_allowed).
 2167
 2168/*
 2169
 2170### Compiled Function: `SYS::DM-KEY-NOT-ALLOWED` 
 2171*/
 2172f_sys_dm_key_not_allowed(Key_In, FnResult) :-
 2173	GEnv=[bv(key, Key_In)],
 2174	catch(( ( get_var(GEnv, key, Key_Get),
 2175		  f_error(
 2176			  [ '$ARRAY'([*],
 2177				     claz_base_character,
 2178				     "The key ~s is not allowed."),
 2179			    Key_Get
 2180			  ],
 2181			  Error_Ret)
 2182		),
 2183		Error_Ret=FnResult
 2184	      ),
 2185	      block_exit(sys_dm_key_not_allowed, FnResult),
 2186	      true).
 2187:- set_opv(sys_dm_key_not_allowed, symbol_function, f_sys_dm_key_not_allowed),
 2188   DefunResult=sys_dm_key_not_allowed. 2189/*
 2190:- side_effect(assert_lsp(sys_dm_key_not_allowed,
 2191			  lambda_def(defun,
 2192				     sys_dm_key_not_allowed,
 2193				     f_sys_dm_key_not_allowed,
 2194				     [key],
 2195				     
 2196				     [ 
 2197				       [ error,
 2198					 '$ARRAY'([*],
 2199						  claz_base_character,
 2200						  "The key ~s is not allowed."),
 2201					 key
 2202				       ]
 2203				     ]))).
 2204*/
 2205/*
 2206:- side_effect(assert_lsp(sys_dm_key_not_allowed,
 2207			  arglist_info(sys_dm_key_not_allowed,
 2208				       f_sys_dm_key_not_allowed,
 2209				       [key],
 2210				       arginfo{ all:[key],
 2211						allow_other_keys:0,
 2212						aux:0,
 2213						body:0,
 2214						complex:0,
 2215						env:0,
 2216						key:0,
 2217						names:[key],
 2218						opt:0,
 2219						req:[key],
 2220						rest:0,
 2221						sublists:0,
 2222						whole:0
 2223					      }))).
 2224*/
 2225/*
 2226:- side_effect(assert_lsp(sys_dm_key_not_allowed,
 2227			  init_args(x, f_sys_dm_key_not_allowed))).
 2228*/
 2229/*
 2230(defun find-doc (body ignore-doc)
 2231  (if (endp body)
 2232      (values nil nil nil)
 2233      (let ((d (macroexpand (car body))))
 2234        (cond ((stringp d)
 2235               (if (or (endp (cdr body)) ignore-doc)
 2236                   (values nil nil (cons d (cdr body)))
 2237                   (multiple-value-bind (doc decls b) (find-doc (cdr body) t)
 2238                     (declare (ignore doc))
 2239                     (values d decls b))))
 2240              ((and (consp d) (eq (car d) 'DECLARE))
 2241               (multiple-value-bind (doc decls b)
 2242                                    (find-doc (cdr body) ignore-doc)
 2243                 (values doc (cons d decls) b)))
 2244              (t (values nil nil (cons d (cdr body))))))))
 2245
 2246*/
 2247
 2248/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:6905 **********************/
 2249:-lisp_compile_to_prolog(pkg_sys,[defun,'find-doc',[body,'ignore-doc'],[if,[endp,body],[values,[],[],[]],[let,[[d,[macroexpand,[car,body]]]],[cond,[[stringp,d],[if,[or,[endp,[cdr,body]],'ignore-doc'],[values,[],[],[cons,d,[cdr,body]]],['multiple-value-bind',[doc,decls,b],['find-doc',[cdr,body],t],[declare,[ignore,doc]],[values,d,decls,b]]]],[[and,[consp,d],[eq,[car,d],[quote,'DECLARE']]],['multiple-value-bind',[doc,decls,b],['find-doc',[cdr,body],'ignore-doc'],[values,doc,[cons,d,decls],b]]],[t,[values,[],[],[cons,d,[cdr,body]]]]]]]])
 2250/*
 2251:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
 2252					       sys_find_doc,
 2253					       kw_function,
 2254					       f_sys_find_doc)).
 2255*/
 2256wl:lambda_def(defun, sys_find_doc, f_sys_find_doc, [sys_body, sys_ignore_doc], [[if, [endp, sys_body], [values, [], [], []], [let, [[sys_d, [macroexpand, [car, sys_body]]]], [cond, [[stringp, sys_d], [if, [or, [endp, [cdr, sys_body]], sys_ignore_doc], [values, [], [], [cons, sys_d, [cdr, sys_body]]], [multiple_value_bind, [sys_doc, sys_decls, sys_b], [sys_find_doc, [cdr, sys_body], t], [declare, [ignore, sys_doc]], [values, sys_d, sys_decls, sys_b]]]], [[and, [consp, sys_d], [eq, [car, sys_d], [quote, declare]]], [multiple_value_bind, [sys_doc, sys_decls, sys_b], [sys_find_doc, [cdr, sys_body], sys_ignore_doc], [values, sys_doc, [cons, sys_d, sys_decls], sys_b]]], [t, [values, [], [], [cons, sys_d, [cdr, sys_body]]]]]]]]).
 2257wl:arglist_info(sys_find_doc, f_sys_find_doc, [sys_body, sys_ignore_doc], arginfo{all:[sys_body, sys_ignore_doc], allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[sys_body, sys_ignore_doc], opt:0, req:[sys_body, sys_ignore_doc], rest:0, sublists:0, whole:0}).
 2258wl: init_args(x, f_sys_find_doc).
 2259
 2260/*
 2261
 2262### Compiled Function: `SYS::FIND-DOC` 
 2263*/
 2264f_sys_find_doc(Body_In, Ignore_doc_In, FnResult) :-
 2265	GEnv=[bv(sys_body, Body_In), bv(sys_ignore_doc, Ignore_doc_In)],
 2266	catch(( ( get_var(GEnv, sys_body, Body_Get),
 2267		  (   s3q:is_endp(Body_Get)
 2268		  ->  nb_setval('$mv_return', [[], [], []]),
 2269		      _6090=[]
 2270		  ;   get_var(GEnv, sys_body, Body_Get13),
 2271		      f_car(Body_Get13, Car_Ret),
 2272		      f_macroexpand([Car_Ret], D_Init),
 2273		      LEnv=[bv(sys_d, D_Init)|GEnv],
 2274		      get_var(LEnv, sys_d, D_Get),
 2275		      (   is_stringp(D_Get)
 2276		      ->  (   get_var(LEnv, sys_body, Body_Get21),
 2277			      f_cdr(Body_Get21, Endp_Param),
 2278			      f_endp(Endp_Param, FORM1_Res),
 2279			      FORM1_Res\==[],
 2280			      IFTEST19=FORM1_Res
 2281			  ->  true
 2282			  ;   get_var(LEnv, sys_ignore_doc, Ignore_doc_Get),
 2283			      IFTEST19=Ignore_doc_Get
 2284			  ),
 2285			  (   IFTEST19\==[]
 2286			  ->  get_var(LEnv, sys_body, Body_Get25),
 2287			      get_var(LEnv, sys_d, D_Get24),
 2288			      f_cdr(Body_Get25, Cdr_Ret),
 2289			      CAR=[D_Get24|Cdr_Ret],
 2290			      nb_setval('$mv_return', [[], [], CAR]),
 2291			      TrueResult50=[]
 2292			  ;   LEnv28=[bv(sys_doc, []), bv(sys_decls, []), bv(sys_b, [])|LEnv],
 2293			      get_var(LEnv28, sys_body, Body_Get29),
 2294			      f_cdr(Body_Get29, Find_doc_Param),
 2295			      f_sys_find_doc(Find_doc_Param, t, T),
 2296			      setq_from_values(LEnv28,
 2297					       [sys_doc, sys_decls, sys_b]),
 2298			      sf_declare(LEnv28,
 2299					 [ignore, sys_doc],
 2300					 Sf_declare_Ret),
 2301			      get_var(LEnv28, sys_b, B_Get),
 2302			      get_var(LEnv28, sys_decls, Decls_Get),
 2303			      nb_setval('$mv_return', [sys_d, Decls_Get, B_Get]),
 2304			      TrueResult50=sys_d
 2305			  ),
 2306			  LetResult=TrueResult50
 2307		      ;   get_var(LEnv, sys_d, D_Get35),
 2308			  (   c0nz:is_consp(D_Get35)
 2309			  ->  get_var(LEnv, sys_d, D_Get38),
 2310			      f_car(D_Get38, Eq_Param),
 2311			      f_eq(Eq_Param, declare, TrueResult),
 2312			      IFTEST32=TrueResult
 2313			  ;   IFTEST32=[]
 2314			  ),
 2315			  (   IFTEST32\==[]
 2316			  ->  LEnv42=[bv(sys_doc, []), bv(sys_decls, []), bv(sys_b, [])|LEnv],
 2317			      get_var(LEnv42, sys_body, Body_Get43),
 2318			      f_cdr(Body_Get43, Find_doc_Param60),
 2319			      get_var(LEnv42, sys_ignore_doc, Ignore_doc_Get44),
 2320			      f_sys_find_doc(Find_doc_Param60,
 2321					     Ignore_doc_Get44,
 2322					     Find_doc_Ret),
 2323			      setq_from_values(LEnv42,
 2324					       [sys_doc, sys_decls, sys_b]),
 2325			      get_var(LEnv42, sys_d, D_Get45),
 2326			      get_var(LEnv42, sys_decls, Decls_Get46),
 2327			      CAR66=[D_Get45|Decls_Get46],
 2328			      get_var(LEnv42, sys_b, B_Get47),
 2329			      nb_setval('$mv_return', [sys_doc, CAR66, B_Get47]),
 2330			      ElseResult=sys_doc
 2331			  ;   get_var(LEnv, sys_body, Body_Get49),
 2332			      get_var(LEnv, sys_d, D_Get48),
 2333			      f_cdr(Body_Get49, Cdr_Ret67),
 2334			      CAR68=[D_Get48|Cdr_Ret67],
 2335			      nb_setval('$mv_return', [[], [], CAR68]),
 2336			      ElseResult=[]
 2337			  ),
 2338			  LetResult=ElseResult
 2339		      ),
 2340		      _6090=LetResult
 2341		  )
 2342		),
 2343		_6090=FnResult
 2344	      ),
 2345	      block_exit(sys_find_doc, FnResult),
 2346	      true).
 2347:- set_opv(sys_find_doc, symbol_function, f_sys_find_doc),
 2348   DefunResult=sys_find_doc. 2349/*
 2350:- side_effect(assert_lsp(sys_find_doc,
 2351			  lambda_def(defun,
 2352				     sys_find_doc,
 2353				     f_sys_find_doc,
 2354				     [sys_body, sys_ignore_doc],
 2355				     
 2356				     [ 
 2357				       [ if,
 2358					 [endp, sys_body],
 2359					 [values, [], [], []],
 2360					 
 2361					 [ let,
 2362					   
 2363					   [ 
 2364					     [ sys_d,
 2365					       [macroexpand, [car, sys_body]]
 2366					     ]
 2367					   ],
 2368					   
 2369					   [ cond,
 2370					     
 2371					     [ [stringp, sys_d],
 2372					       
 2373					       [ if,
 2374						 
 2375						 [ or,
 2376						   [endp, [cdr, sys_body]],
 2377						   sys_ignore_doc
 2378						 ],
 2379						 
 2380						 [ values,
 2381						   [],
 2382						   [],
 2383						   [cons, sys_d, [cdr, sys_body]]
 2384						 ],
 2385						 
 2386						 [ multiple_value_bind,
 2387						   [sys_doc, sys_decls, sys_b],
 2388						   
 2389						   [ sys_find_doc,
 2390						     [cdr, sys_body],
 2391						     t
 2392						   ],
 2393						   [declare, [ignore, sys_doc]],
 2394						   
 2395						   [ values,
 2396						     sys_d,
 2397						     sys_decls,
 2398						     sys_b
 2399						   ]
 2400						 ]
 2401					       ]
 2402					     ],
 2403					     
 2404					     [ 
 2405					       [ and,
 2406						 [consp, sys_d],
 2407						 
 2408						 [ eq,
 2409						   [car, sys_d],
 2410						   [quote, declare]
 2411						 ]
 2412					       ],
 2413					       
 2414					       [ multiple_value_bind,
 2415						 [sys_doc, sys_decls, sys_b],
 2416						 
 2417						 [ sys_find_doc,
 2418						   [cdr, sys_body],
 2419						   sys_ignore_doc
 2420						 ],
 2421						 
 2422						 [ values,
 2423						   sys_doc,
 2424						   [cons, sys_d, sys_decls],
 2425						   sys_b
 2426						 ]
 2427					       ]
 2428					     ],
 2429					     
 2430					     [ t,
 2431					       
 2432					       [ values,
 2433						 [],
 2434						 [],
 2435						 [cons, sys_d, [cdr, sys_body]]
 2436					       ]
 2437					     ]
 2438					   ]
 2439					 ]
 2440				       ]
 2441				     ]))).
 2442*/
 2443/*
 2444:- side_effect(assert_lsp(sys_find_doc,
 2445			  arglist_info(sys_find_doc,
 2446				       f_sys_find_doc,
 2447				       [sys_body, sys_ignore_doc],
 2448				       arginfo{ all:[sys_body, sys_ignore_doc],
 2449						allow_other_keys:0,
 2450						aux:0,
 2451						body:0,
 2452						complex:0,
 2453						env:0,
 2454						key:0,
 2455						names:
 2456						      [ sys_body,
 2457							sys_ignore_doc
 2458						      ],
 2459						opt:0,
 2460						req:[sys_body, sys_ignore_doc],
 2461						rest:0,
 2462						sublists:0,
 2463						whole:0
 2464					      }))).
 2465*/
 2466/*
 2467:- side_effect(assert_lsp(sys_find_doc, init_args(x, f_sys_find_doc))).
 2468*/
 2469/*
 2470(defun find-declarations (body)
 2471  (if (endp body)
 2472      (values nil nil)
 2473      (let ((d (macroexpand (car body))))
 2474        (cond ((stringp d)
 2475               (if (endp (cdr body))
 2476                   (values nil (list d))
 2477                   (multiple-value-bind (ds b)
 2478                       (find-declarations (cdr body))
 2479                     (values (cons d ds) b))))
 2480              ((and (consp d) (eq (car d) 'DECLARE))
 2481               (multiple-value-bind (ds b)
 2482                   (find-declarations (cdr body))
 2483                 (values (cons d ds) b)))
 2484              (t
 2485               (values nil (cons d (cdr body))))))))
 2486*/
 2487
 2488/*********** /home/dmiles/logicmoo_workspace/packs_usr/wam_common_lisp/prolog/wam_cl/lib/lsp/defmacro.lsp:7608 **********************/
 2489:-lisp_compile_to_prolog(pkg_sys,[defun,'find-declarations',[body],[if,[endp,body],[values,[],[]],[let,[[d,[macroexpand,[car,body]]]],[cond,[[stringp,d],[if,[endp,[cdr,body]],[values,[],[list,d]],['multiple-value-bind',[ds,b],['find-declarations',[cdr,body]],[values,[cons,d,ds],b]]]],[[and,[consp,d],[eq,[car,d],[quote,'DECLARE']]],['multiple-value-bind',[ds,b],['find-declarations',[cdr,body]],[values,[cons,d,ds],b]]],[t,[values,[],[cons,d,[cdr,body]]]]]]]])
 2490/*
 2491:- side_effect(generate_function_or_macro_name([name='GLOBAL', environ=env_1],
 2492					       sys_find_declarations,
 2493					       kw_function,
 2494					       f_sys_find_declarations)).
 2495*/
 2496wl:lambda_def(defun, sys_find_declarations, f_sys_find_declarations, [sys_body], [[if, [endp, sys_body], [values, [], []], [let, [[sys_d, [macroexpand, [car, sys_body]]]], [cond, [[stringp, sys_d], [if, [endp, [cdr, sys_body]], [values, [], [list, sys_d]], [multiple_value_bind, [sys_ds, sys_b], [sys_find_declarations, [cdr, sys_body]], [values, [cons, sys_d, sys_ds], sys_b]]]], [[and, [consp, sys_d], [eq, [car, sys_d], [quote, declare]]], [multiple_value_bind, [sys_ds, sys_b], [sys_find_declarations, [cdr, sys_body]], [values, [cons, sys_d, sys_ds], sys_b]]], [t, [values, [], [cons, sys_d, [cdr, sys_body]]]]]]]]).
 2497wl:arglist_info(sys_find_declarations, f_sys_find_declarations, [sys_body], arginfo{all:[sys_body], allow_other_keys:0, aux:0, body:0, complex:0, env:0, key:0, names:[sys_body], opt:0, req:[sys_body], rest:0, sublists:0, whole:0}).
 2498wl: init_args(x, f_sys_find_declarations).
 2499
 2500/*
 2501
 2502### Compiled Function: `SYS::FIND-DECLARATIONS` 
 2503*/
 2504f_sys_find_declarations(Body_In, FnResult) :-
 2505	GEnv=[bv(sys_body, Body_In)],
 2506	catch(( ( get_var(GEnv, sys_body, Body_Get),
 2507		  (   s3q:is_endp(Body_Get)
 2508		  ->  nb_setval('$mv_return', [[], []]),
 2509		      _5624=[]
 2510		  ;   get_var(GEnv, sys_body, Body_Get12),
 2511		      f_car(Body_Get12, Car_Ret),
 2512		      f_macroexpand([Car_Ret], D_Init),
 2513		      LEnv=[bv(sys_d, D_Init)|GEnv],
 2514		      get_var(LEnv, sys_d, D_Get),
 2515		      (   is_stringp(D_Get)
 2516		      ->  get_var(LEnv, sys_body, Body_Get19),
 2517			  f_cdr(Body_Get19, PredArgResult21),
 2518			  (   s3q:is_endp(PredArgResult21)
 2519			  ->  get_var(LEnv, sys_d, D_Get22),
 2520			      CAR=[D_Get22],
 2521			      nb_setval('$mv_return', [[], CAR]),
 2522			      TrueResult49=[]
 2523			  ;   LEnv25=[bv(sys_ds, []), bv(sys_b, [])|LEnv],
 2524			      get_var(LEnv25, sys_body, Body_Get26),
 2525			      f_cdr(Body_Get26, Find_declarations_Param),
 2526			      f_sys_find_declarations(Find_declarations_Param,
 2527						      Find_declarations_Ret),
 2528			      setq_from_values(LEnv25, [sys_ds, sys_b]),
 2529			      get_var(LEnv25, sys_d, D_Get27),
 2530			      get_var(LEnv25, sys_ds, Ds_Get),
 2531			      LetResult24=[D_Get27|Ds_Get],
 2532			      get_var(LEnv25, sys_b, B_Get),
 2533			      nb_setval('$mv_return', [LetResult24, B_Get]),
 2534			      TrueResult49=LetResult24
 2535			  ),
 2536			  LetResult=TrueResult49
 2537		      ;   get_var(LEnv, sys_d, D_Get34),
 2538			  (   c0nz:is_consp(D_Get34)
 2539			  ->  get_var(LEnv, sys_d, D_Get37),
 2540			      f_car(D_Get37, Eq_Param),
 2541			      f_eq(Eq_Param, declare, TrueResult),
 2542			      IFTEST31=TrueResult
 2543			  ;   IFTEST31=[]
 2544			  ),
 2545			  (   IFTEST31\==[]
 2546			  ->  LEnv41=[bv(sys_ds, []), bv(sys_b, [])|LEnv],
 2547			      get_var(LEnv41, sys_body, Body_Get42),
 2548			      f_cdr(Body_Get42, Find_declarations_Param57),
 2549			      f_sys_find_declarations(Find_declarations_Param57,
 2550						      Find_declarations_Ret61),
 2551			      setq_from_values(LEnv41, [sys_ds, sys_b]),
 2552			      get_var(LEnv41, sys_d, D_Get43),
 2553			      get_var(LEnv41, sys_ds, Ds_Get44),
 2554			      LetResult40=[D_Get43|Ds_Get44],
 2555			      get_var(LEnv41, sys_b, B_Get45),
 2556			      nb_setval('$mv_return', [LetResult40, B_Get45]),
 2557			      ElseResult50=LetResult40
 2558			  ;   get_var(LEnv, sys_body, Body_Get47),
 2559			      get_var(LEnv, sys_d, D_Get46),
 2560			      f_cdr(Body_Get47, Cdr_Ret),
 2561			      CAR63=[D_Get46|Cdr_Ret],
 2562			      nb_setval('$mv_return', [[], CAR63]),
 2563			      ElseResult50=[]
 2564			  ),
 2565			  LetResult=ElseResult50
 2566		      ),
 2567		      _5624=LetResult
 2568		  )
 2569		),
 2570		_5624=FnResult
 2571	      ),
 2572	      block_exit(sys_find_declarations, FnResult),
 2573	      true).
 2574:- set_opv(sys_find_declarations, symbol_function, f_sys_find_declarations),
 2575   DefunResult=sys_find_declarations. 2576/*
 2577:- side_effect(assert_lsp(sys_find_declarations,
 2578			  lambda_def(defun,
 2579				     sys_find_declarations,
 2580				     f_sys_find_declarations,
 2581				     [sys_body],
 2582				     
 2583				     [ 
 2584				       [ if,
 2585					 [endp, sys_body],
 2586					 [values, [], []],
 2587					 
 2588					 [ let,
 2589					   
 2590					   [ 
 2591					     [ sys_d,
 2592					       [macroexpand, [car, sys_body]]
 2593					     ]
 2594					   ],
 2595					   
 2596					   [ cond,
 2597					     
 2598					     [ [stringp, sys_d],
 2599					       
 2600					       [ if,
 2601						 [endp, [cdr, sys_body]],
 2602						 [values, [], [list, sys_d]],
 2603						 
 2604						 [ multiple_value_bind,
 2605						   [sys_ds, sys_b],
 2606						   
 2607						   [ sys_find_declarations,
 2608						     [cdr, sys_body]
 2609						   ],
 2610						   
 2611						   [ values,
 2612						     [cons, sys_d, sys_ds],
 2613						     sys_b
 2614						   ]
 2615						 ]
 2616					       ]
 2617					     ],
 2618					     
 2619					     [ 
 2620					       [ and,
 2621						 [consp, sys_d],
 2622						 
 2623						 [ eq,
 2624						   [car, sys_d],
 2625						   [quote, declare]
 2626						 ]
 2627					       ],
 2628					       
 2629					       [ multiple_value_bind,
 2630						 [sys_ds, sys_b],
 2631						 
 2632						 [ sys_find_declarations,
 2633						   [cdr, sys_body]
 2634						 ],
 2635						 
 2636						 [ values,
 2637						   [cons, sys_d, sys_ds],
 2638						   sys_b
 2639						 ]
 2640					       ]
 2641					     ],
 2642					     
 2643					     [ t,
 2644					       
 2645					       [ values,
 2646						 [],
 2647						 [cons, sys_d, [cdr, sys_body]]
 2648					       ]
 2649					     ]
 2650					   ]
 2651					 ]
 2652				       ]
 2653				     ]))).
 2654*/
 2655/*
 2656:- side_effect(assert_lsp(sys_find_declarations,
 2657			  arglist_info(sys_find_declarations,
 2658				       f_sys_find_declarations,
 2659				       [sys_body],
 2660				       arginfo{ all:[sys_body],
 2661						allow_other_keys:0,
 2662						aux:0,
 2663						body:0,
 2664						complex:0,
 2665						env:0,
 2666						key:0,
 2667						names:[sys_body],
 2668						opt:0,
 2669						req:[sys_body],
 2670						rest:0,
 2671						sublists:0,
 2672						whole:0
 2673					      }))).
 2674*/
 2675/*
 2676:- side_effect(assert_lsp(sys_find_declarations,
 2677			  init_args(x, f_sys_find_declarations))).
 2678*/
 2679
 2680
 2681%; Total compilation time: 14.917 seconds